1 line
2.8 MiB
1 line
2.8 MiB
{"version":3,"file":"bundle.js","sources":["../../builder/node_modules/svelte/internal/index.mjs","../../builder/src/common/Button.svelte","../../builder/node_modules/lodash/lodash.min.js","../../builder/node_modules/lodash/fp/_mapping.js","../../builder/node_modules/lodash/fp/placeholder.js","../../builder/node_modules/lodash/fp/_baseConvert.js","../../builder/node_modules/lodash/fp.js","../../builder/node_modules/shortid/lib/random/random-from-seed.js","../../builder/node_modules/shortid/lib/alphabet.js","../../builder/node_modules/shortid/lib/random/random-byte-browser.js","../../builder/node_modules/nanoid/format.js","../../builder/node_modules/shortid/lib/generate.js","../../builder/node_modules/shortid/lib/build.js","../../builder/node_modules/shortid/lib/is-valid.js","../../builder/node_modules/shortid/lib/index.js","../../builder/node_modules/shortid/index.js","../../builder/node_modules/lodash/lodash.js","../../core/src/common/events.js","../../core/src/common/errors.js","../../core/src/common/apiWrapper.js","../../core/src/common/lock.js","../../core/src/common/index.js","../../core/src/common/validationCommon.js","../../builder/node_modules/rollup-plugin-node-globals/src/global.js","../../builder/node_modules/@nx-js/compiler-util/dist/es.es5.js","../../core/src/indexing/evaluate.js","../../core/src/templateApi/indexes.js","../../core/src/templateApi/hierarchy.js","../../core/src/types/typeHelpers.js","../../core/src/types/string.js","../../core/src/types/bool.js","../../core/src/types/number.js","../../core/src/types/datetime.js","../../core/src/types/array.js","../../core/src/types/reference.js","../../core/src/types/file.js","../../core/src/types/index.js","../../core/src/authApi/authCommon.js","../../core/src/authApi/isAuthorized.js","../../core/src/authApi/permissions.js","../../builder/node_modules/lunr/lunr.js","../../core/src/indexing/indexSchemaCreator.js","../../core/src/recordApi/getNew.js","../../builder/node_modules/buffer-es6/base64.js","../../builder/node_modules/buffer-es6/ieee754.js","../../builder/node_modules/buffer-es6/isArray.js","../../builder/node_modules/buffer-es6/index.js","../../builder/node_modules/safe-buffer/index.js","../../core/src/transactions/transactionsCommon.js","../../core/src/templateApi/createNodes.js","../../core/src/templateApi/fields.js","../../core/src/templateApi/recordValidationRules.js","../../core/src/templateApi/createActions.js","../../core/src/templateApi/validateAggregate.js","../../core/src/templateApi/validate.js","../../core/src/templateApi/getApplicationDefinition.js","../../core/src/templateApi/saveApplicationHierarchy.js","../../core/src/templateApi/saveActionsAndTriggers.js","../../core/src/templateApi/index.js","../../core/src/templateApi/getBehaviourSources.js","../../core/src/authApi/getUsers.js","../../core/src/authApi/loadAccessLevels.js","../../core/src/authApi/authenticate.js","../../core/src/authApi/createTemporaryAccess.js","../../core/src/authApi/validateUser.js","../../core/src/authApi/getNewUser.js","../../core/src/authApi/setPassword.js","../../core/src/authApi/createUser.js","../../core/src/authApi/enableUser.js","../../core/src/authApi/validateAccessLevels.js","../../core/src/authApi/saveAccessLevels.js","../../core/src/authApi/setUserAccessLevels.js","../../core/src/authApi/index.js","../../core/src/authApi/getNewAccessLevel.js","../../core/src/authApi/generateFullPermissions.js","../../builder/src/common/core.js","../../builder/node_modules/svelte/store/index.mjs","../../builder/src/userInterface/pagesParsing/defaultPagesObject.js","../../client/src/state/setState.js","../../client/src/common/trimSlash.js","../../client/src/api/loadRecord.js","../../client/src/api/listRecords.js","../../client/src/api/authenticate.js","../../client/src/state/coreHandlers.js","../../client/src/state/standardState.js","../../client/src/state/eventHandlers.js","../../client/src/api/index.js","../../client/src/state/getState.js","../../builder/src/common/eventHandlers.js","../../builder/src/userInterface/pagesParsing/types.js","../../client/src/state/isState.js","../../builder/src/userInterface/pagesParsing/searchComponents.js","../../builder/src/userInterface/pagesParsing/createProps.js","../../builder/src/userInterface/pagesParsing/buildPropsHierarchy.js","../../builder/src/builderStore/api.js","../../builder/src/userInterface/pagesParsing/renameComponent.js","../../builder/src/builderStore/loadComponentLibraries.js","../../builder/src/builderStore/store.js","../../builder/src/builderStore/index.js","../../builder/src/NoPackage.svelte","../../builder/node_modules/feather-icons/dist/feather.js","../../builder/src/common/icon.js","../../builder/src/common/IconButton.svelte","../../builder/src/userInterface/ComponentsHierarchy.svelte","../../builder/src/userInterface/PagesList.svelte","../../builder/src/common/Checkbox.svelte","../../builder/src/common/Textbox.svelte","../../builder/src/common/Dropdown.svelte","../../builder/node_modules/process-es6/browser.js","../../builder/node_modules/rollup-plugin-node-builtins/src/es6/util.js","../../builder/src/common/binding.js","../../builder/src/userInterface/pagesParsing/validateProps.js","../../builder/src/userInterface/pagesParsing/splitRootComponentName.js","../../builder/src/userInterface/ComponentSelector.svelte","../../builder/src/common/ButtonGroup.svelte","../../builder/node_modules/uikit/dist/js/uikit.js","../../builder/src/userInterface/ComponentPropSelector.svelte","../../builder/src/userInterface/PropArraySelector.svelte","../../builder/src/userInterface/StateBindingControl.svelte","../../builder/src/userInterface/EventSelector.svelte","../../builder/src/userInterface/EventListSelector.svelte","../../builder/src/userInterface/PropControl.svelte","../../builder/src/userInterface/PropsView.svelte","../../builder/node_modules/svelte/easing/index.mjs","../../builder/node_modules/svelte/transition/index.mjs","../../builder/src/userInterface/ComponentInstanceEditor.svelte","../../builder/src/userInterface/EditComponent.svelte","../../builder/src/common/Modal.svelte","../../builder/src/userInterface/pagesParsing/findDependencies.js","../../builder/src/userInterface/GeneratedComponents.svelte","../../builder/src/userInterface/NewComponent.svelte","../../builder/src/userInterface/CurrentItemPreview.svelte","../../builder/src/userInterface/SettingsView.svelte","../../builder/src/userInterface/PageView.svelte","../../builder/src/userInterface/UserInterfaceRoot.svelte","../../builder/src/nav/HierarchyRow.svelte","../../builder/src/common/DropdownButton.svelte","../../builder/src/nav/NavItem.svelte","../../builder/src/nav/BackendNav.svelte","../../builder/src/common/NumberBox.svelte","../../builder/src/common/ValuesList.svelte","../../builder/src/common/ErrorsBox.svelte","../../builder/node_modules/flatpickr/dist/flatpickr.js","../../builder/src/common/DatePicker.svelte","../../builder/src/database/FieldView.svelte","../../builder/src/database/RecordView.svelte","../../builder/src/common/CodeArea.svelte","../../builder/src/database/IndexView.svelte","../../builder/src/database/ActionsHeader.svelte","../../builder/src/database/DatabaseRoot.svelte","../../builder/src/actionsAndTriggers/ActionView.svelte","../../builder/src/actionsAndTriggers/Actions.svelte","../../builder/src/actionsAndTriggers/TriggerView.svelte","../../builder/src/actionsAndTriggers/Triggers.svelte","../../builder/src/actionsAndTriggers/ActionsAndTriggersRoot.svelte","../../builder/src/accessLevels/AccessLevelView.svelte","../../builder/src/accessLevels/AccessLevelsRoot.svelte","../../builder/src/BackendRoot.svelte","../../builder/src/PackageRoot.svelte","../../builder/src/App.svelte","../../builder/node_modules/uikit/dist/js/uikit.min.js","../../builder/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}\nfunction not_equal(a, b) {\n return a != a ? b == b : a !== b;\n}\nfunction validate_store(store, name) {\n if (!store || typeof store.subscribe !== 'function') {\n throw new Error(`'${name}' is not a store with a 'subscribe' method`);\n }\n}\nfunction subscribe(store, callback) {\n const unsub = store.subscribe(callback);\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, fn) {\n if (definition) {\n const slot_ctx = get_slot_context(definition, ctx, fn);\n return definition[0](slot_ctx);\n }\n}\nfunction get_slot_context(definition, ctx, fn) {\n return definition[1]\n ? assign({}, assign(ctx.$$scope.ctx, definition[1](fn ? fn(ctx) : {})))\n : ctx.$$scope.ctx;\n}\nfunction get_slot_changes(definition, ctx, changed, fn) {\n return definition[1]\n ? assign({}, assign(ctx.$$scope.changed || {}, definition[1](fn ? fn(changed) : {})))\n : ctx.$$scope.changed || {};\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 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 = ret) {\n store.set(value);\n return ret;\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();\nlet running = false;\nfunction run_tasks() {\n tasks.forEach(task => {\n if (!task[0](now())) {\n tasks.delete(task);\n task[1]();\n }\n });\n running = tasks.size > 0;\n if (running)\n raf(run_tasks);\n}\nfunction clear_loops() {\n // for testing...\n tasks.forEach(task => tasks.delete(task));\n running = false;\n}\nfunction loop(fn) {\n let task;\n if (!running) {\n running = true;\n raf(run_tasks);\n }\n return {\n promise: new Promise(fulfil => {\n tasks.add(task = [fn, fulfil]);\n }),\n abort() {\n tasks.delete(task);\n }\n };\n}\n\nfunction append(target, node) {\n target.appendChild(node);\n}\nfunction insert(target, node, anchor) {\n target.insertBefore(node, anchor || null);\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 // eslint-disable-next-line @typescript-eslint/no-object-literal-type-assertion\n const target = {};\n for (const k in obj) {\n if (Object.prototype.hasOwnProperty.call(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 attr(node, attribute, value) {\n if (value == null)\n node.removeAttribute(attribute);\n else\n node.setAttribute(attribute, value);\n}\nfunction set_attributes(node, attributes) {\n for (const key in attributes) {\n if (key === 'style') {\n node.style.cssText = attributes[key];\n }\n else if (key in node) {\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] = 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) {\n const value = [];\n for (let i = 0; i < group.length; i += 1) {\n if (group[i].checked)\n value.push(group[i].__value);\n }\n return value;\n}\nfunction to_number(value) {\n return value === '' ? undefined : +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 claim_element(nodes, name, attributes, svg) {\n for (let i = 0; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeName === name) {\n for (let j = 0; j < node.attributes.length; j += 1) {\n const attribute = node.attributes[j];\n if (!attributes[attribute.name])\n node.removeAttribute(attribute.name);\n }\n return nodes.splice(i, 1)[0]; // TODO strip unwanted attributes\n }\n }\n return svg ? svg_element(name) : element(name);\n}\nfunction claim_text(nodes, data) {\n for (let i = 0; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeType === 3) {\n node.data = '' + data;\n return nodes.splice(i, 1)[0];\n }\n }\n return text(data);\n}\nfunction claim_space(nodes) {\n return claim_text(nodes, ' ');\n}\nfunction set_data(text, data) {\n data = '' + data;\n if (text.data !== data)\n text.data = data;\n}\nfunction set_input_value(input, value) {\n if (value != null || input.value) {\n input.value = value;\n }\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}\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}\nfunction add_resize_listener(element, fn) {\n if (getComputedStyle(element).position === 'static') {\n element.style.position = 'relative';\n }\n const object = document.createElement('object');\n object.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1;');\n object.type = 'text/html';\n object.tabIndex = -1;\n let win;\n object.onload = () => {\n win = object.contentDocument.defaultView;\n win.addEventListener('resize', fn);\n };\n if (/Trident/.test(navigator.userAgent)) {\n element.appendChild(object);\n object.data = 'about:blank';\n }\n else {\n object.data = 'about:blank';\n element.appendChild(object);\n }\n return {\n cancel: () => {\n win && win.removeEventListener && win.removeEventListener('resize', fn);\n element.removeChild(object);\n }\n };\n}\nfunction toggle_class(element, name, toggle) {\n element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail) {\n const e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, false, false, detail);\n return e;\n}\nclass HtmlTag {\n constructor(html, anchor = null) {\n this.e = element('div');\n this.a = anchor;\n this.u(html);\n }\n m(target, anchor = null) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert(target, this.n[i], anchor);\n }\n this.t = target;\n }\n u(html) {\n this.e.innerHTML = html;\n this.n = Array.from(this.e.childNodes);\n }\n p(html) {\n this.d();\n this.u(html);\n this.m(this.t, this.a);\n }\n d() {\n this.n.forEach(detach);\n }\n}\n\nlet stylesheet;\nlet active = 0;\nlet current_rules = {};\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 if (!current_rules[name]) {\n if (!stylesheet) {\n const style = element('style');\n document.head.appendChild(style);\n stylesheet = style.sheet;\n }\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 node.style.animation = (node.style.animation || '')\n .split(', ')\n .filter(name\n ? anim => anim.indexOf(name) < 0 // remove specific animation\n : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n )\n .join(', ');\n if (name && !--active)\n clear_rules();\n}\nfunction clear_rules() {\n raf(() => {\n if (active)\n return;\n let i = stylesheet.cssRules.length;\n while (i--)\n stylesheet.deleteRule(i);\n current_rules = {};\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 = 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}\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 callbacks.slice().forEach(fn => fn(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}\nfunction flush() {\n const seen_callbacks = new Set();\n do {\n // first, call beforeUpdate functions\n // and update components\n while (dirty_components.length) {\n const component = dirty_components.shift();\n set_current_component(component);\n update(component.$$);\n }\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 callback();\n // ...so guard against infinite loops\n seen_callbacks.add(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}\nfunction update($$) {\n if ($$.fragment) {\n $$.update($$.dirty);\n run_all($$.before_update);\n $$.fragment.p($$.dirty, $$.ctx);\n $$.dirty = null;\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 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) {\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 = key && { [key]: value };\n const child_ctx = assign(assign({}, info.ctx), info.resolved);\n const block = type && (info.current = type)(child_ctx);\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 info.blocks[i] = null;\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 flush();\n }\n info.block = block;\n if (info.blocks)\n info.blocks[index] = block;\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 });\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 = { [info.value]: promise };\n }\n}\n\nconst globals = (typeof window !== 'undefined' ? window : 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, changed, 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(changed, child_ctx);\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 measure(blocks) {\n const rects = {};\n let i = blocks.length;\n while (i--)\n rects[blocks[i].key] = blocks[i].node.getBoundingClientRect();\n return rects;\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\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) {\n const attributes = Object.assign({}, ...args);\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 === undefined)\n return;\n if (value === true)\n str += \" \" + name;\n const escaped = String(value)\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n str += \" \" + name + \"=\" + JSON.stringify(escaped);\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 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) {\n const parent_component = current_component;\n const $$ = {\n on_destroy,\n context: new Map(parent_component ? parent_component.$$.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 = {}, options = {}) => {\n on_destroy = [];\n const result = { head: '', css: new Set() };\n const html = $$render(result, props, {}, options);\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.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 if (component.$$.props.indexOf(name) === -1)\n return;\n component.$$.bound[name] = callback;\n callback(component.$$.ctx[name]);\n}\nfunction mount_component(component, target, anchor) {\n const { fragment, on_mount, on_destroy, after_update } = component.$$;\n fragment.m(target, anchor);\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 after_update.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n if (component.$$.fragment) {\n run_all(component.$$.on_destroy);\n component.$$.fragment.d(detaching);\n // TODO null out other refs, including component.$$ (but need to\n // preserve final state?)\n component.$$.on_destroy = component.$$.fragment = null;\n component.$$.ctx = {};\n }\n}\nfunction make_dirty(component, key) {\n if (!component.$$.dirty) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty = blank_object();\n }\n component.$$.dirty[key] = true;\n}\nfunction init(component, options, instance, create_fragment, not_equal, prop_names) {\n const parent_component = current_component;\n set_current_component(component);\n const props = options.props || {};\n const $$ = component.$$ = {\n fragment: null,\n ctx: null,\n // state\n props: prop_names,\n update: noop,\n not_equal,\n bound: blank_object(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n before_update: [],\n after_update: [],\n context: new Map(parent_component ? parent_component.$$.context : []),\n // everything else\n callbacks: blank_object(),\n dirty: null\n };\n let ready = false;\n $$.ctx = instance\n ? instance(component, props, (key, ret, value = ret) => {\n if ($$.ctx && not_equal($$.ctx[key], $$.ctx[key] = value)) {\n if ($$.bound[key])\n $$.bound[key](value);\n if (ready)\n make_dirty(component, key);\n }\n return ret;\n })\n : props;\n $$.update();\n ready = true;\n run_all($$.before_update);\n $$.fragment = create_fragment($$.ctx);\n if (options.target) {\n if (options.hydrate) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment.l(children(options.target));\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment.c();\n }\n if (options.intro)\n transition_in(component.$$.fragment);\n mount_component(component, options.target, options.anchor);\n flush();\n }\n set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement !== 'undefined') {\n SvelteElement = class extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n connectedCallback() {\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 $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() {\n // overridden by instance, if it has props\n }\n };\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() {\n // overridden by instance, if it has props\n }\n}\n\nfunction dispatch_dev(type, detail) {\n document.dispatchEvent(custom_event(type, detail));\n}\nfunction append_dev(target, node) {\n dispatch_dev(\"SvelteDOMInsert\", { target, node });\n append(target, node);\n}\nfunction insert_dev(target, node, anchor) {\n dispatch_dev(\"SvelteDOMInsert\", { target, node, anchor });\n insert(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.data === data)\n return;\n dispatch_dev(\"SvelteDOMSetData\", { node: text, data });\n text.data = data;\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}\n\nexport { HtmlTag, SvelteComponent, SvelteComponentDev, SvelteElement, add_attribute, add_classes, add_flush_callback, add_location, add_render_callback, add_resize_listener, add_transform, afterUpdate, append, append_dev, assign, attr, attr_dev, beforeUpdate, bind, binding_callbacks, blank_object, bubble, check_outros, children, claim_element, claim_space, claim_text, clear_loops, component_subscribe, createEventDispatcher, create_animation, create_bidirectional_transition, 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, escape, escaped, exclude_internal_props, fix_and_destroy_block, fix_and_outro_and_destroy_block, fix_position, flush, getContext, get_binding_group_value, get_current_component, get_slot_changes, get_slot_context, get_spread_object, get_spread_update, get_store_value, globals, group_outros, handle_promise, identity, init, insert, insert_dev, intros, invalid_attribute_name_character, is_client, is_function, is_promise, listen, listen_dev, loop, measure, 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, 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, stop_propagation, subscribe, svg_element, text, tick, time_ranges_to_array, to_number, toggle_class, transition_in, transition_out, update_keyed_each, validate_component, validate_store, xlink_attr };\n","<script>\n\nexport let color = \"primary\";\nexport let className = \"\";\nexport let style = \"\";\nexport let groupPosition = \"\";\nexport let grouped = false;\n\n$: borderClass = grouped \n ? \"\"\n : \"border-normal\";\n\n</script>\n\n<button class=\"{color} {className} {borderClass} {grouped ? \"grouped\" : \"\"}\" \n style=\"{style}\"\n on:click >\n <slot/>\n</button>\n\n<style>\n\n.border-normal { border-radius: var(--borderradiusall); }\n.border-left { border-radius: var(--borderradius) 0 0 var(--borderradius); }\n.border-right { border-radius: 0 var(--borderradius) var(--borderradius) 0; }\n.border-middle { border-radius: 0; }\n\nbutton { \n border-style: solid; \n padding: 7.5px 15px;\n cursor:pointer;\n margin:5px;\n border-radius: 5px;\n}\n\n/* ---- PRIMARY ----*/\n.primary {\n background-color: var(--primary100);\n border-color: var(--primary100);\n color: var(--white);\n}\n\n.primary:hover {\n background-color: var(--primary75);\n border-color: var(--primary75);\n}\n\n.primary:active {\n background-color: var(--primarydark);\n border-color: var(--primarydark);\n}\n\n.primary-outline {\n background-color: var(--white);\n border-color: var(--primary100);\n color: var(--primary100);\n}\n\n.primary-outline:hover {\n background-color: var(--primary10);\n}\n\n.primary-outline:pressed {\n background-color: var(--primary25);\n}\n\n/* ---- secondary ----*/\n\n.secondary {\n background-color: var(--secondary100);\n border-color: var(--secondary100);\n color: var(--white);\n}\n\n.secondary:hover {\n background-color: var(--secondary75);\n border-color: var(--secondary75);\n}\n\n.secondary:pressed {\n background-color: var(--secondarydark);\n border-color: var(--secondarydark);\n}\n\n.secondary-outline {\n background-color: var(--white);\n border-color: var(--secondary100);\n color: var(--secondary100);\n}\n\n.secondary-outline:hover {\n background-color: var(--secondary10);\n}\n\n.secondary-outline:pressed {\n background-color: var(--secondary25);\n}\n\n\n/* ---- success ----*/\n.success {\n background-color: var(--success100);\n border-color: var(--success100);\n color: var(--white);\n}\n\n.success:hover {\n background-color: var(--success75);\n border-color: var(--success75);\n}\n\n.success:pressed {\n background-color: var(--successdark);\n border-color: var(--successdark);\n}\n\n.success-outline {\n background-color: var(--white);\n border-color: var(--success100);\n color: var(--success100);\n}\n\n.success-outline:hover {\n background-color: var(--success10);\n}\n\n.success-outline:pressed {\n background-color: var(--success25);\n}\n\n/* ---- deletion ----*/\n.deletion {\n background-color: var(--deletion100);\n border-color: var(--deletion100);\n color: var(--white);\n}\n\n.deletion:hover {\n background-color: var(--deletion75);\n border-color: var(--deletion75);\n}\n\n.deletion:pressed {\n background-color: var(--deletiondark);\n border-color: var(--deletiondark);\n}\n\n.deletion-outline {\n background-color: var(--white);\n border-color: var(--deletion100);\n color: var(--deletion100);\n}\n\n.deletion-outline:hover {\n background-color: var(--deletion10);\n}\n\n.deletion-outline:pressed {\n background-color: var(--deletion25);\n}\n\n\n</style>","/**\n * @license\n * Lodash lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE\n */\n;(function(){function n(n,t,r){switch(r.length){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function t(n,t,r,e){for(var u=-1,i=null==n?0:n.length;++u<i;){var o=n[u];t(e,o,r(o),n)}return e}function r(n,t){for(var r=-1,e=null==n?0:n.length;++r<e&&false!==t(n[r],r,n););return n}function e(n,t){for(var r=null==n?0:n.length;r--&&false!==t(n[r],r,n););return n}function u(n,t){for(var r=-1,e=null==n?0:n.length;++r<e;)if(!t(n[r],r,n))return false;\nreturn true}function i(n,t){for(var r=-1,e=null==n?0:n.length,u=0,i=[];++r<e;){var o=n[r];t(o,r,n)&&(i[u++]=o)}return i}function o(n,t){return!(null==n||!n.length)&&-1<v(n,t,0)}function f(n,t,r){for(var e=-1,u=null==n?0:n.length;++e<u;)if(r(t,n[e]))return true;return false}function c(n,t){for(var r=-1,e=null==n?0:n.length,u=Array(e);++r<e;)u[r]=t(n[r],r,n);return u}function a(n,t){for(var r=-1,e=t.length,u=n.length;++r<e;)n[u+r]=t[r];return n}function l(n,t,r,e){var u=-1,i=null==n?0:n.length;for(e&&i&&(r=n[++u]);++u<i;)r=t(r,n[u],u,n);\nreturn r}function s(n,t,r,e){var u=null==n?0:n.length;for(e&&u&&(r=n[--u]);u--;)r=t(r,n[u],u,n);return r}function h(n,t){for(var r=-1,e=null==n?0:n.length;++r<e;)if(t(n[r],r,n))return true;return false}function p(n,t,r){var e;return r(n,function(n,r,u){if(t(n,r,u))return e=r,false}),e}function _(n,t,r,e){var u=n.length;for(r+=e?1:-1;e?r--:++r<u;)if(t(n[r],r,n))return r;return-1}function v(n,t,r){if(t===t)n:{--r;for(var e=n.length;++r<e;)if(n[r]===t){n=r;break n}n=-1}else n=_(n,d,r);return n}function g(n,t,r,e){\n--r;for(var u=n.length;++r<u;)if(e(n[r],t))return r;return-1}function d(n){return n!==n}function y(n,t){var r=null==n?0:n.length;return r?m(n,t)/r:F}function b(n){return function(t){return null==t?T:t[n]}}function x(n){return function(t){return null==n?T:n[t]}}function j(n,t,r,e,u){return u(n,function(n,u,i){r=e?(e=false,n):t(r,n,u,i)}),r}function w(n,t){var r=n.length;for(n.sort(t);r--;)n[r]=n[r].c;return n}function m(n,t){for(var r,e=-1,u=n.length;++e<u;){var i=t(n[e]);i!==T&&(r=r===T?i:r+i)}return r;\n}function A(n,t){for(var r=-1,e=Array(n);++r<n;)e[r]=t(r);return e}function E(n,t){return c(t,function(t){return[t,n[t]]})}function k(n){return function(t){return n(t)}}function S(n,t){return c(t,function(t){return n[t]})}function O(n,t){return n.has(t)}function I(n,t){for(var r=-1,e=n.length;++r<e&&-1<v(t,n[r],0););return r}function R(n,t){for(var r=n.length;r--&&-1<v(t,n[r],0););return r}function z(n){return\"\\\\\"+Un[n]}function W(n){var t=-1,r=Array(n.size);return n.forEach(function(n,e){r[++t]=[e,n];\n}),r}function B(n,t){return function(r){return n(t(r))}}function L(n,t){for(var r=-1,e=n.length,u=0,i=[];++r<e;){var o=n[r];o!==t&&\"__lodash_placeholder__\"!==o||(n[r]=\"__lodash_placeholder__\",i[u++]=r)}return i}function U(n){var t=-1,r=Array(n.size);return n.forEach(function(n){r[++t]=n}),r}function C(n){var t=-1,r=Array(n.size);return n.forEach(function(n){r[++t]=[n,n]}),r}function D(n){if(Rn.test(n)){for(var t=On.lastIndex=0;On.test(n);)++t;n=t}else n=Qn(n);return n}function M(n){return Rn.test(n)?n.match(On)||[]:n.split(\"\");\n}var T,$=1/0,F=NaN,N=[[\"ary\",128],[\"bind\",1],[\"bindKey\",2],[\"curry\",8],[\"curryRight\",16],[\"flip\",512],[\"partial\",32],[\"partialRight\",64],[\"rearg\",256]],P=/\\b__p\\+='';/g,Z=/\\b(__p\\+=)''\\+/g,q=/(__e\\(.*?\\)|\\b__t\\))\\+'';/g,V=/&(?:amp|lt|gt|quot|#39);/g,K=/[&<>\"']/g,G=RegExp(V.source),H=RegExp(K.source),J=/<%-([\\s\\S]+?)%>/g,Y=/<%([\\s\\S]+?)%>/g,Q=/<%=([\\s\\S]+?)%>/g,X=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,nn=/^\\w*$/,tn=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,rn=/[\\\\^$.*+?()[\\]{}|]/g,en=RegExp(rn.source),un=/^\\s+|\\s+$/g,on=/^\\s+/,fn=/\\s+$/,cn=/\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,an=/\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,ln=/,? & /,sn=/[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g,hn=/\\\\(\\\\)?/g,pn=/\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g,_n=/\\w*$/,vn=/^[-+]0x[0-9a-f]+$/i,gn=/^0b[01]+$/i,dn=/^\\[object .+?Constructor\\]$/,yn=/^0o[0-7]+$/i,bn=/^(?:0|[1-9]\\d*)$/,xn=/[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g,jn=/($^)/,wn=/['\\n\\r\\u2028\\u2029\\\\]/g,mn=\"[\\\\ufe0e\\\\ufe0f]?(?:[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]|\\\\ud83c[\\\\udffb-\\\\udfff])?(?:\\\\u200d(?:[^\\\\ud800-\\\\udfff]|(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}|[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff])[\\\\ufe0e\\\\ufe0f]?(?:[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]|\\\\ud83c[\\\\udffb-\\\\udfff])?)*\",An=\"(?:[\\\\u2700-\\\\u27bf]|(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}|[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff])\"+mn,En=\"(?:[^\\\\ud800-\\\\udfff][\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]?|[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]|(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}|[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]|[\\\\ud800-\\\\udfff])\",kn=RegExp(\"['\\u2019]\",\"g\"),Sn=RegExp(\"[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]\",\"g\"),On=RegExp(\"\\\\ud83c[\\\\udffb-\\\\udfff](?=\\\\ud83c[\\\\udffb-\\\\udfff])|\"+En+mn,\"g\"),In=RegExp([\"[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]?[a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff]+(?:['\\u2019](?:d|ll|m|re|s|t|ve))?(?=[\\\\xac\\\\xb1\\\\xd7\\\\xf7\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\\\\u2000-\\\\u206f \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000]|[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]|$)|(?:[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]|[^\\\\ud800-\\\\udfff\\\\xac\\\\xb1\\\\xd7\\\\xf7\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\\\\u2000-\\\\u206f \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000\\\\d+\\\\u2700-\\\\u27bfa-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xffA-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde])+(?:['\\u2019](?:D|LL|M|RE|S|T|VE))?(?=[\\\\xac\\\\xb1\\\\xd7\\\\xf7\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\\\\u2000-\\\\u206f \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000]|[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde](?:[a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff]|[^\\\\ud800-\\\\udfff\\\\xac\\\\xb1\\\\xd7\\\\xf7\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\\\\u2000-\\\\u206f \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000\\\\d+\\\\u2700-\\\\u27bfa-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xffA-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde])|$)|[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]?(?:[a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff]|[^\\\\ud800-\\\\udfff\\\\xac\\\\xb1\\\\xd7\\\\xf7\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\\\\u2000-\\\\u206f \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000\\\\d+\\\\u2700-\\\\u27bfa-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xffA-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde])+(?:['\\u2019](?:d|ll|m|re|s|t|ve))?|[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]+(?:['\\u2019](?:D|LL|M|RE|S|T|VE))?|\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])|\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])|\\\\d+\",An].join(\"|\"),\"g\"),Rn=RegExp(\"[\\\\u200d\\\\ud800-\\\\udfff\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff\\\\ufe0e\\\\ufe0f]\"),zn=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Wn=\"Array Buffer DataView Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Map Math Object Promise RegExp Set String Symbol TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap _ clearTimeout isFinite parseInt setTimeout\".split(\" \"),Bn={};\nBn[\"[object Float32Array]\"]=Bn[\"[object Float64Array]\"]=Bn[\"[object Int8Array]\"]=Bn[\"[object Int16Array]\"]=Bn[\"[object Int32Array]\"]=Bn[\"[object Uint8Array]\"]=Bn[\"[object Uint8ClampedArray]\"]=Bn[\"[object Uint16Array]\"]=Bn[\"[object Uint32Array]\"]=true,Bn[\"[object Arguments]\"]=Bn[\"[object Array]\"]=Bn[\"[object ArrayBuffer]\"]=Bn[\"[object Boolean]\"]=Bn[\"[object DataView]\"]=Bn[\"[object Date]\"]=Bn[\"[object Error]\"]=Bn[\"[object Function]\"]=Bn[\"[object Map]\"]=Bn[\"[object Number]\"]=Bn[\"[object Object]\"]=Bn[\"[object RegExp]\"]=Bn[\"[object Set]\"]=Bn[\"[object String]\"]=Bn[\"[object WeakMap]\"]=false;\nvar Ln={};Ln[\"[object Arguments]\"]=Ln[\"[object Array]\"]=Ln[\"[object ArrayBuffer]\"]=Ln[\"[object DataView]\"]=Ln[\"[object Boolean]\"]=Ln[\"[object Date]\"]=Ln[\"[object Float32Array]\"]=Ln[\"[object Float64Array]\"]=Ln[\"[object Int8Array]\"]=Ln[\"[object Int16Array]\"]=Ln[\"[object Int32Array]\"]=Ln[\"[object Map]\"]=Ln[\"[object Number]\"]=Ln[\"[object Object]\"]=Ln[\"[object RegExp]\"]=Ln[\"[object Set]\"]=Ln[\"[object String]\"]=Ln[\"[object Symbol]\"]=Ln[\"[object Uint8Array]\"]=Ln[\"[object Uint8ClampedArray]\"]=Ln[\"[object Uint16Array]\"]=Ln[\"[object Uint32Array]\"]=true,\nLn[\"[object Error]\"]=Ln[\"[object Function]\"]=Ln[\"[object WeakMap]\"]=false;var Un={\"\\\\\":\"\\\\\",\"'\":\"'\",\"\\n\":\"n\",\"\\r\":\"r\",\"\\u2028\":\"u2028\",\"\\u2029\":\"u2029\"},Cn=parseFloat,Dn=parseInt,Mn=typeof global==\"object\"&&global&&global.Object===Object&&global,Tn=typeof self==\"object\"&&self&&self.Object===Object&&self,$n=Mn||Tn||Function(\"return this\")(),Fn=typeof exports==\"object\"&&exports&&!exports.nodeType&&exports,Nn=Fn&&typeof module==\"object\"&&module&&!module.nodeType&&module,Pn=Nn&&Nn.exports===Fn,Zn=Pn&&Mn.process,qn=function(){\ntry{var n=Nn&&Nn.f&&Nn.f(\"util\").types;return n?n:Zn&&Zn.binding&&Zn.binding(\"util\")}catch(n){}}(),Vn=qn&&qn.isArrayBuffer,Kn=qn&&qn.isDate,Gn=qn&&qn.isMap,Hn=qn&&qn.isRegExp,Jn=qn&&qn.isSet,Yn=qn&&qn.isTypedArray,Qn=b(\"length\"),Xn=x({\"\\xc0\":\"A\",\"\\xc1\":\"A\",\"\\xc2\":\"A\",\"\\xc3\":\"A\",\"\\xc4\":\"A\",\"\\xc5\":\"A\",\"\\xe0\":\"a\",\"\\xe1\":\"a\",\"\\xe2\":\"a\",\"\\xe3\":\"a\",\"\\xe4\":\"a\",\"\\xe5\":\"a\",\"\\xc7\":\"C\",\"\\xe7\":\"c\",\"\\xd0\":\"D\",\"\\xf0\":\"d\",\"\\xc8\":\"E\",\"\\xc9\":\"E\",\"\\xca\":\"E\",\"\\xcb\":\"E\",\"\\xe8\":\"e\",\"\\xe9\":\"e\",\"\\xea\":\"e\",\"\\xeb\":\"e\",\"\\xcc\":\"I\",\n\"\\xcd\":\"I\",\"\\xce\":\"I\",\"\\xcf\":\"I\",\"\\xec\":\"i\",\"\\xed\":\"i\",\"\\xee\":\"i\",\"\\xef\":\"i\",\"\\xd1\":\"N\",\"\\xf1\":\"n\",\"\\xd2\":\"O\",\"\\xd3\":\"O\",\"\\xd4\":\"O\",\"\\xd5\":\"O\",\"\\xd6\":\"O\",\"\\xd8\":\"O\",\"\\xf2\":\"o\",\"\\xf3\":\"o\",\"\\xf4\":\"o\",\"\\xf5\":\"o\",\"\\xf6\":\"o\",\"\\xf8\":\"o\",\"\\xd9\":\"U\",\"\\xda\":\"U\",\"\\xdb\":\"U\",\"\\xdc\":\"U\",\"\\xf9\":\"u\",\"\\xfa\":\"u\",\"\\xfb\":\"u\",\"\\xfc\":\"u\",\"\\xdd\":\"Y\",\"\\xfd\":\"y\",\"\\xff\":\"y\",\"\\xc6\":\"Ae\",\"\\xe6\":\"ae\",\"\\xde\":\"Th\",\"\\xfe\":\"th\",\"\\xdf\":\"ss\",\"\\u0100\":\"A\",\"\\u0102\":\"A\",\"\\u0104\":\"A\",\"\\u0101\":\"a\",\"\\u0103\":\"a\",\"\\u0105\":\"a\",\"\\u0106\":\"C\",\n\"\\u0108\":\"C\",\"\\u010a\":\"C\",\"\\u010c\":\"C\",\"\\u0107\":\"c\",\"\\u0109\":\"c\",\"\\u010b\":\"c\",\"\\u010d\":\"c\",\"\\u010e\":\"D\",\"\\u0110\":\"D\",\"\\u010f\":\"d\",\"\\u0111\":\"d\",\"\\u0112\":\"E\",\"\\u0114\":\"E\",\"\\u0116\":\"E\",\"\\u0118\":\"E\",\"\\u011a\":\"E\",\"\\u0113\":\"e\",\"\\u0115\":\"e\",\"\\u0117\":\"e\",\"\\u0119\":\"e\",\"\\u011b\":\"e\",\"\\u011c\":\"G\",\"\\u011e\":\"G\",\"\\u0120\":\"G\",\"\\u0122\":\"G\",\"\\u011d\":\"g\",\"\\u011f\":\"g\",\"\\u0121\":\"g\",\"\\u0123\":\"g\",\"\\u0124\":\"H\",\"\\u0126\":\"H\",\"\\u0125\":\"h\",\"\\u0127\":\"h\",\"\\u0128\":\"I\",\"\\u012a\":\"I\",\"\\u012c\":\"I\",\"\\u012e\":\"I\",\"\\u0130\":\"I\",\"\\u0129\":\"i\",\n\"\\u012b\":\"i\",\"\\u012d\":\"i\",\"\\u012f\":\"i\",\"\\u0131\":\"i\",\"\\u0134\":\"J\",\"\\u0135\":\"j\",\"\\u0136\":\"K\",\"\\u0137\":\"k\",\"\\u0138\":\"k\",\"\\u0139\":\"L\",\"\\u013b\":\"L\",\"\\u013d\":\"L\",\"\\u013f\":\"L\",\"\\u0141\":\"L\",\"\\u013a\":\"l\",\"\\u013c\":\"l\",\"\\u013e\":\"l\",\"\\u0140\":\"l\",\"\\u0142\":\"l\",\"\\u0143\":\"N\",\"\\u0145\":\"N\",\"\\u0147\":\"N\",\"\\u014a\":\"N\",\"\\u0144\":\"n\",\"\\u0146\":\"n\",\"\\u0148\":\"n\",\"\\u014b\":\"n\",\"\\u014c\":\"O\",\"\\u014e\":\"O\",\"\\u0150\":\"O\",\"\\u014d\":\"o\",\"\\u014f\":\"o\",\"\\u0151\":\"o\",\"\\u0154\":\"R\",\"\\u0156\":\"R\",\"\\u0158\":\"R\",\"\\u0155\":\"r\",\"\\u0157\":\"r\",\"\\u0159\":\"r\",\n\"\\u015a\":\"S\",\"\\u015c\":\"S\",\"\\u015e\":\"S\",\"\\u0160\":\"S\",\"\\u015b\":\"s\",\"\\u015d\":\"s\",\"\\u015f\":\"s\",\"\\u0161\":\"s\",\"\\u0162\":\"T\",\"\\u0164\":\"T\",\"\\u0166\":\"T\",\"\\u0163\":\"t\",\"\\u0165\":\"t\",\"\\u0167\":\"t\",\"\\u0168\":\"U\",\"\\u016a\":\"U\",\"\\u016c\":\"U\",\"\\u016e\":\"U\",\"\\u0170\":\"U\",\"\\u0172\":\"U\",\"\\u0169\":\"u\",\"\\u016b\":\"u\",\"\\u016d\":\"u\",\"\\u016f\":\"u\",\"\\u0171\":\"u\",\"\\u0173\":\"u\",\"\\u0174\":\"W\",\"\\u0175\":\"w\",\"\\u0176\":\"Y\",\"\\u0177\":\"y\",\"\\u0178\":\"Y\",\"\\u0179\":\"Z\",\"\\u017b\":\"Z\",\"\\u017d\":\"Z\",\"\\u017a\":\"z\",\"\\u017c\":\"z\",\"\\u017e\":\"z\",\"\\u0132\":\"IJ\",\"\\u0133\":\"ij\",\n\"\\u0152\":\"Oe\",\"\\u0153\":\"oe\",\"\\u0149\":\"'n\",\"\\u017f\":\"s\"}),nt=x({\"&\":\"&\",\"<\":\"<\",\">\":\">\",'\"':\""\",\"'\":\"'\"}),tt=x({\"&\":\"&\",\"<\":\"<\",\">\":\">\",\""\":'\"',\"'\":\"'\"}),rt=function x(mn){function An(n){if(yu(n)&&!ff(n)&&!(n instanceof Un)){if(n instanceof On)return n;if(oi.call(n,\"__wrapped__\"))return Fe(n)}return new On(n)}function En(){}function On(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=T}function Un(n){this.__wrapped__=n,\nthis.__actions__=[],this.__dir__=1,this.__filtered__=false,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function Mn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function Tn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function Fn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function Nn(n){var t=-1,r=null==n?0:n.length;for(this.__data__=new Fn;++t<r;)this.add(n[t]);\n}function Zn(n){this.size=(this.__data__=new Tn(n)).size}function qn(n,t){var r,e=ff(n),u=!e&&of(n),i=!e&&!u&&af(n),o=!e&&!u&&!i&&_f(n),u=(e=e||u||i||o)?A(n.length,ni):[],f=u.length;for(r in n)!t&&!oi.call(n,r)||e&&(\"length\"==r||i&&(\"offset\"==r||\"parent\"==r)||o&&(\"buffer\"==r||\"byteLength\"==r||\"byteOffset\"==r)||Se(r,f))||u.push(r);return u}function Qn(n){var t=n.length;return t?n[ir(0,t-1)]:T}function et(n,t){return De(Ur(n),pt(t,0,n.length))}function ut(n){return De(Ur(n))}function it(n,t,r){(r===T||lu(n[t],r))&&(r!==T||t in n)||st(n,t,r);\n}function ot(n,t,r){var e=n[t];oi.call(n,t)&&lu(e,r)&&(r!==T||t in n)||st(n,t,r)}function ft(n,t){for(var r=n.length;r--;)if(lu(n[r][0],t))return r;return-1}function ct(n,t,r,e){return uo(n,function(n,u,i){t(e,n,r(n),i)}),e}function at(n,t){return n&&Cr(t,Wu(t),n)}function lt(n,t){return n&&Cr(t,Bu(t),n)}function st(n,t,r){\"__proto__\"==t&&Ai?Ai(n,t,{configurable:true,enumerable:true,value:r,writable:true}):n[t]=r}function ht(n,t){for(var r=-1,e=t.length,u=Ku(e),i=null==n;++r<e;)u[r]=i?T:Ru(n,t[r]);return u;\n}function pt(n,t,r){return n===n&&(r!==T&&(n=n<=r?n:r),t!==T&&(n=n>=t?n:t)),n}function _t(n,t,e,u,i,o){var f,c=1&t,a=2&t,l=4&t;if(e&&(f=i?e(n,u,i,o):e(n)),f!==T)return f;if(!du(n))return n;if(u=ff(n)){if(f=me(n),!c)return Ur(n,f)}else{var s=vo(n),h=\"[object Function]\"==s||\"[object GeneratorFunction]\"==s;if(af(n))return Ir(n,c);if(\"[object Object]\"==s||\"[object Arguments]\"==s||h&&!i){if(f=a||h?{}:Ae(n),!c)return a?Mr(n,lt(f,n)):Dr(n,at(f,n))}else{if(!Ln[s])return i?n:{};f=Ee(n,s,c)}}if(o||(o=new Zn),\ni=o.get(n))return i;o.set(n,f),pf(n)?n.forEach(function(r){f.add(_t(r,t,e,r,n,o))}):sf(n)&&n.forEach(function(r,u){f.set(u,_t(r,t,e,u,n,o))});var a=l?a?ve:_e:a?Bu:Wu,p=u?T:a(n);return r(p||n,function(r,u){p&&(u=r,r=n[u]),ot(f,u,_t(r,t,e,u,n,o))}),f}function vt(n){var t=Wu(n);return function(r){return gt(r,n,t)}}function gt(n,t,r){var e=r.length;if(null==n)return!e;for(n=Qu(n);e--;){var u=r[e],i=t[u],o=n[u];if(o===T&&!(u in n)||!i(o))return false}return true}function dt(n,t,r){if(typeof n!=\"function\")throw new ti(\"Expected a function\");\nreturn bo(function(){n.apply(T,r)},t)}function yt(n,t,r,e){var u=-1,i=o,a=true,l=n.length,s=[],h=t.length;if(!l)return s;r&&(t=c(t,k(r))),e?(i=f,a=false):200<=t.length&&(i=O,a=false,t=new Nn(t));n:for(;++u<l;){var p=n[u],_=null==r?p:r(p),p=e||0!==p?p:0;if(a&&_===_){for(var v=h;v--;)if(t[v]===_)continue n;s.push(p)}else i(t,_,e)||s.push(p)}return s}function bt(n,t){var r=true;return uo(n,function(n,e,u){return r=!!t(n,e,u)}),r}function xt(n,t,r){for(var e=-1,u=n.length;++e<u;){var i=n[e],o=t(i);if(null!=o&&(f===T?o===o&&!wu(o):r(o,f)))var f=o,c=i;\n}return c}function jt(n,t){var r=[];return uo(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function wt(n,t,r,e,u){var i=-1,o=n.length;for(r||(r=ke),u||(u=[]);++i<o;){var f=n[i];0<t&&r(f)?1<t?wt(f,t-1,r,e,u):a(u,f):e||(u[u.length]=f)}return u}function mt(n,t){return n&&oo(n,t,Wu)}function At(n,t){return n&&fo(n,t,Wu)}function Et(n,t){return i(t,function(t){return _u(n[t])})}function kt(n,t){t=Sr(t,n);for(var r=0,e=t.length;null!=n&&r<e;)n=n[Me(t[r++])];return r&&r==e?n:T}function St(n,t,r){return t=t(n),\nff(n)?t:a(t,r(n))}function Ot(n){if(null==n)n=n===T?\"[object Undefined]\":\"[object Null]\";else if(mi&&mi in Qu(n)){var t=oi.call(n,mi),r=n[mi];try{n[mi]=T;var e=true}catch(n){}var u=ai.call(n);e&&(t?n[mi]=r:delete n[mi]),n=u}else n=ai.call(n);return n}function It(n,t){return n>t}function Rt(n,t){return null!=n&&oi.call(n,t)}function zt(n,t){return null!=n&&t in Qu(n)}function Wt(n,t,r){for(var e=r?f:o,u=n[0].length,i=n.length,a=i,l=Ku(i),s=1/0,h=[];a--;){var p=n[a];a&&t&&(p=c(p,k(t))),s=Ci(p.length,s),\nl[a]=!r&&(t||120<=u&&120<=p.length)?new Nn(a&&p):T}var p=n[0],_=-1,v=l[0];n:for(;++_<u&&h.length<s;){var g=p[_],d=t?t(g):g,g=r||0!==g?g:0;if(v?!O(v,d):!e(h,d,r)){for(a=i;--a;){var y=l[a];if(y?!O(y,d):!e(n[a],d,r))continue n}v&&v.push(d),h.push(g)}}return h}function Bt(n,t,r){var e={};return mt(n,function(n,u,i){t(e,r(n),u,i)}),e}function Lt(t,r,e){return r=Sr(r,t),t=2>r.length?t:kt(t,hr(r,0,-1)),r=null==t?t:t[Me(Ve(r))],null==r?T:n(r,t,e)}function Ut(n){return yu(n)&&\"[object Arguments]\"==Ot(n)}function Ct(n){\nreturn yu(n)&&\"[object ArrayBuffer]\"==Ot(n)}function Dt(n){return yu(n)&&\"[object Date]\"==Ot(n)}function Mt(n,t,r,e,u){if(n===t)t=true;else if(null==n||null==t||!yu(n)&&!yu(t))t=n!==n&&t!==t;else n:{var i=ff(n),o=ff(t),f=i?\"[object Array]\":vo(n),c=o?\"[object Array]\":vo(t),f=\"[object Arguments]\"==f?\"[object Object]\":f,c=\"[object Arguments]\"==c?\"[object Object]\":c,a=\"[object Object]\"==f,o=\"[object Object]\"==c;if((c=f==c)&&af(n)){if(!af(t)){t=false;break n}i=true,a=false}if(c&&!a)u||(u=new Zn),t=i||_f(n)?se(n,t,r,e,Mt,u):he(n,t,f,r,e,Mt,u);else{\nif(!(1&r)&&(i=a&&oi.call(n,\"__wrapped__\"),f=o&&oi.call(t,\"__wrapped__\"),i||f)){n=i?n.value():n,t=f?t.value():t,u||(u=new Zn),t=Mt(n,t,r,e,u);break n}if(c)t:if(u||(u=new Zn),i=1&r,f=_e(n),o=f.length,c=_e(t).length,o==c||i){for(a=o;a--;){var l=f[a];if(!(i?l in t:oi.call(t,l))){t=false;break t}}if((c=u.get(n))&&u.get(t))t=c==t;else{c=true,u.set(n,t),u.set(t,n);for(var s=i;++a<o;){var l=f[a],h=n[l],p=t[l];if(e)var _=i?e(p,h,l,t,n,u):e(h,p,l,n,t,u);if(_===T?h!==p&&!Mt(h,p,r,e,u):!_){c=false;break}s||(s=\"constructor\"==l);\n}c&&!s&&(r=n.constructor,e=t.constructor,r!=e&&\"constructor\"in n&&\"constructor\"in t&&!(typeof r==\"function\"&&r instanceof r&&typeof e==\"function\"&&e instanceof e)&&(c=false)),u.delete(n),u.delete(t),t=c}}else t=false;else t=false}}return t}function Tt(n){return yu(n)&&\"[object Map]\"==vo(n)}function $t(n,t,r,e){var u=r.length,i=u,o=!e;if(null==n)return!i;for(n=Qu(n);u--;){var f=r[u];if(o&&f[2]?f[1]!==n[f[0]]:!(f[0]in n))return false}for(;++u<i;){var f=r[u],c=f[0],a=n[c],l=f[1];if(o&&f[2]){if(a===T&&!(c in n))return false;\n}else{if(f=new Zn,e)var s=e(a,l,c,n,t,f);if(s===T?!Mt(l,a,3,e,f):!s)return false}}return true}function Ft(n){return!(!du(n)||ci&&ci in n)&&(_u(n)?hi:dn).test(Te(n))}function Nt(n){return yu(n)&&\"[object RegExp]\"==Ot(n)}function Pt(n){return yu(n)&&\"[object Set]\"==vo(n)}function Zt(n){return yu(n)&&gu(n.length)&&!!Bn[Ot(n)]}function qt(n){return typeof n==\"function\"?n:null==n?$u:typeof n==\"object\"?ff(n)?Jt(n[0],n[1]):Ht(n):Zu(n)}function Vt(n){if(!ze(n))return Li(n);var t,r=[];for(t in Qu(n))oi.call(n,t)&&\"constructor\"!=t&&r.push(t);\nreturn r}function Kt(n,t){return n<t}function Gt(n,t){var r=-1,e=su(n)?Ku(n.length):[];return uo(n,function(n,u,i){e[++r]=t(n,u,i)}),e}function Ht(n){var t=xe(n);return 1==t.length&&t[0][2]?We(t[0][0],t[0][1]):function(r){return r===n||$t(r,n,t)}}function Jt(n,t){return Ie(n)&&t===t&&!du(t)?We(Me(n),t):function(r){var e=Ru(r,n);return e===T&&e===t?zu(r,n):Mt(t,e,3)}}function Yt(n,t,r,e,u){n!==t&&oo(t,function(i,o){if(u||(u=new Zn),du(i)){var f=u,c=Le(n,o),a=Le(t,o),l=f.get(a);if(l)it(n,o,l);else{\nvar l=e?e(c,a,o+\"\",n,t,f):T,s=l===T;if(s){var h=ff(a),p=!h&&af(a),_=!h&&!p&&_f(a),l=a;h||p||_?ff(c)?l=c:hu(c)?l=Ur(c):p?(s=false,l=Ir(a,true)):_?(s=false,l=zr(a,true)):l=[]:xu(a)||of(a)?(l=c,of(c)?l=Ou(c):du(c)&&!_u(c)||(l=Ae(a))):s=false}s&&(f.set(a,l),Yt(l,a,r,e,f),f.delete(a)),it(n,o,l)}}else f=e?e(Le(n,o),i,o+\"\",n,t,u):T,f===T&&(f=i),it(n,o,f)},Bu)}function Qt(n,t){var r=n.length;if(r)return t+=0>t?r:0,Se(t,r)?n[t]:T}function Xt(n,t,r){var e=-1;return t=c(t.length?t:[$u],k(ye())),n=Gt(n,function(n){return{\na:c(t,function(t){return t(n)}),b:++e,c:n}}),w(n,function(n,t){var e;n:{e=-1;for(var u=n.a,i=t.a,o=u.length,f=r.length;++e<o;){var c=Wr(u[e],i[e]);if(c){e=e>=f?c:c*(\"desc\"==r[e]?-1:1);break n}}e=n.b-t.b}return e})}function nr(n,t){return tr(n,t,function(t,r){return zu(n,r)})}function tr(n,t,r){for(var e=-1,u=t.length,i={};++e<u;){var o=t[e],f=kt(n,o);r(f,o)&&lr(i,Sr(o,n),f)}return i}function rr(n){return function(t){return kt(t,n)}}function er(n,t,r,e){var u=e?g:v,i=-1,o=t.length,f=n;for(n===t&&(t=Ur(t)),\nr&&(f=c(n,k(r)));++i<o;)for(var a=0,l=t[i],l=r?r(l):l;-1<(a=u(f,l,a,e));)f!==n&&xi.call(f,a,1),xi.call(n,a,1);return n}function ur(n,t){for(var r=n?t.length:0,e=r-1;r--;){var u=t[r];if(r==e||u!==i){var i=u;Se(u)?xi.call(n,u,1):xr(n,u)}}}function ir(n,t){return n+Ii(Ti()*(t-n+1))}function or(n,t){var r=\"\";if(!n||1>t||9007199254740991<t)return r;do t%2&&(r+=n),(t=Ii(t/2))&&(n+=n);while(t);return r}function fr(n,t){return xo(Be(n,t,$u),n+\"\")}function cr(n){return Qn(Uu(n))}function ar(n,t){var r=Uu(n);\nreturn De(r,pt(t,0,r.length))}function lr(n,t,r,e){if(!du(n))return n;t=Sr(t,n);for(var u=-1,i=t.length,o=i-1,f=n;null!=f&&++u<i;){var c=Me(t[u]),a=r;if(u!=o){var l=f[c],a=e?e(l,c,f):T;a===T&&(a=du(l)?l:Se(t[u+1])?[]:{})}ot(f,c,a),f=f[c]}return n}function sr(n){return De(Uu(n))}function hr(n,t,r){var e=-1,u=n.length;for(0>t&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Ku(u);++e<u;)r[e]=n[e+t];return r}function pr(n,t){var r;return uo(n,function(n,e,u){return r=t(n,e,u),!r}),!!r}\nfunction _r(n,t,r){var e=0,u=null==n?e:n.length;if(typeof t==\"number\"&&t===t&&2147483647>=u){for(;e<u;){var i=e+u>>>1,o=n[i];null!==o&&!wu(o)&&(r?o<=t:o<t)?e=i+1:u=i}return u}return vr(n,t,$u,r)}function vr(n,t,r,e){t=r(t);for(var u=0,i=null==n?0:n.length,o=t!==t,f=null===t,c=wu(t),a=t===T;u<i;){var l=Ii((u+i)/2),s=r(n[l]),h=s!==T,p=null===s,_=s===s,v=wu(s);(o?e||_:a?_&&(e||h):f?_&&h&&(e||!p):c?_&&h&&!p&&(e||!v):p||v?0:e?s<=t:s<t)?u=l+1:i=l}return Ci(i,4294967294)}function gr(n,t){for(var r=-1,e=n.length,u=0,i=[];++r<e;){\nvar o=n[r],f=t?t(o):o;if(!r||!lu(f,c)){var c=f;i[u++]=0===o?0:o}}return i}function dr(n){return typeof n==\"number\"?n:wu(n)?F:+n}function yr(n){if(typeof n==\"string\")return n;if(ff(n))return c(n,yr)+\"\";if(wu(n))return ro?ro.call(n):\"\";var t=n+\"\";return\"0\"==t&&1/n==-$?\"-0\":t}function br(n,t,r){var e=-1,u=o,i=n.length,c=true,a=[],l=a;if(r)c=false,u=f;else if(200<=i){if(u=t?null:so(n))return U(u);c=false,u=O,l=new Nn}else l=t?[]:a;n:for(;++e<i;){var s=n[e],h=t?t(s):s,s=r||0!==s?s:0;if(c&&h===h){for(var p=l.length;p--;)if(l[p]===h)continue n;\nt&&l.push(h),a.push(s)}else u(l,h,r)||(l!==a&&l.push(h),a.push(s))}return a}function xr(n,t){return t=Sr(t,n),n=2>t.length?n:kt(n,hr(t,0,-1)),null==n||delete n[Me(Ve(t))]}function jr(n,t,r,e){for(var u=n.length,i=e?u:-1;(e?i--:++i<u)&&t(n[i],i,n););return r?hr(n,e?0:i,e?i+1:u):hr(n,e?i+1:0,e?u:i)}function wr(n,t){var r=n;return r instanceof Un&&(r=r.value()),l(t,function(n,t){return t.func.apply(t.thisArg,a([n],t.args))},r)}function mr(n,t,r){var e=n.length;if(2>e)return e?br(n[0]):[];for(var u=-1,i=Ku(e);++u<e;)for(var o=n[u],f=-1;++f<e;)f!=u&&(i[u]=yt(i[u]||o,n[f],t,r));\nreturn br(wt(i,1),t,r)}function Ar(n,t,r){for(var e=-1,u=n.length,i=t.length,o={};++e<u;)r(o,n[e],e<i?t[e]:T);return o}function Er(n){return hu(n)?n:[]}function kr(n){return typeof n==\"function\"?n:$u}function Sr(n,t){return ff(n)?n:Ie(n,t)?[n]:jo(Iu(n))}function Or(n,t,r){var e=n.length;return r=r===T?e:r,!t&&r>=e?n:hr(n,t,r)}function Ir(n,t){if(t)return n.slice();var r=n.length,r=gi?gi(r):new n.constructor(r);return n.copy(r),r}function Rr(n){var t=new n.constructor(n.byteLength);return new vi(t).set(new vi(n)),\nt}function zr(n,t){return new n.constructor(t?Rr(n.buffer):n.buffer,n.byteOffset,n.length)}function Wr(n,t){if(n!==t){var r=n!==T,e=null===n,u=n===n,i=wu(n),o=t!==T,f=null===t,c=t===t,a=wu(t);if(!f&&!a&&!i&&n>t||i&&o&&c&&!f&&!a||e&&o&&c||!r&&c||!u)return 1;if(!e&&!i&&!a&&n<t||a&&r&&u&&!e&&!i||f&&r&&u||!o&&u||!c)return-1}return 0}function Br(n,t,r,e){var u=-1,i=n.length,o=r.length,f=-1,c=t.length,a=Ui(i-o,0),l=Ku(c+a);for(e=!e;++f<c;)l[f]=t[f];for(;++u<o;)(e||u<i)&&(l[r[u]]=n[u]);for(;a--;)l[f++]=n[u++];\nreturn l}function Lr(n,t,r,e){var u=-1,i=n.length,o=-1,f=r.length,c=-1,a=t.length,l=Ui(i-f,0),s=Ku(l+a);for(e=!e;++u<l;)s[u]=n[u];for(l=u;++c<a;)s[l+c]=t[c];for(;++o<f;)(e||u<i)&&(s[l+r[o]]=n[u++]);return s}function Ur(n,t){var r=-1,e=n.length;for(t||(t=Ku(e));++r<e;)t[r]=n[r];return t}function Cr(n,t,r,e){var u=!r;r||(r={});for(var i=-1,o=t.length;++i<o;){var f=t[i],c=e?e(r[f],n[f],f,r,n):T;c===T&&(c=n[f]),u?st(r,f,c):ot(r,f,c)}return r}function Dr(n,t){return Cr(n,po(n),t)}function Mr(n,t){return Cr(n,_o(n),t);\n}function Tr(n,r){return function(e,u){var i=ff(e)?t:ct,o=r?r():{};return i(e,n,ye(u,2),o)}}function $r(n){return fr(function(t,r){var e=-1,u=r.length,i=1<u?r[u-1]:T,o=2<u?r[2]:T,i=3<n.length&&typeof i==\"function\"?(u--,i):T;for(o&&Oe(r[0],r[1],o)&&(i=3>u?T:i,u=1),t=Qu(t);++e<u;)(o=r[e])&&n(t,o,e,i);return t})}function Fr(n,t){return function(r,e){if(null==r)return r;if(!su(r))return n(r,e);for(var u=r.length,i=t?u:-1,o=Qu(r);(t?i--:++i<u)&&false!==e(o[i],i,o););return r}}function Nr(n){return function(t,r,e){\nvar u=-1,i=Qu(t);e=e(t);for(var o=e.length;o--;){var f=e[n?o:++u];if(false===r(i[f],f,i))break}return t}}function Pr(n,t,r){function e(){return(this&&this!==$n&&this instanceof e?i:n).apply(u?r:this,arguments)}var u=1&t,i=Vr(n);return e}function Zr(n){return function(t){t=Iu(t);var r=Rn.test(t)?M(t):T,e=r?r[0]:t.charAt(0);return t=r?Or(r,1).join(\"\"):t.slice(1),e[n]()+t}}function qr(n){return function(t){return l(Mu(Du(t).replace(kn,\"\")),n,\"\")}}function Vr(n){return function(){var t=arguments;switch(t.length){\ncase 0:return new n;case 1:return new n(t[0]);case 2:return new n(t[0],t[1]);case 3:return new n(t[0],t[1],t[2]);case 4:return new n(t[0],t[1],t[2],t[3]);case 5:return new n(t[0],t[1],t[2],t[3],t[4]);case 6:return new n(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new n(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=eo(n.prototype),t=n.apply(r,t);return du(t)?t:r}}function Kr(t,r,e){function u(){for(var o=arguments.length,f=Ku(o),c=o,a=de(u);c--;)f[c]=arguments[c];return c=3>o&&f[0]!==a&&f[o-1]!==a?[]:L(f,a),\no-=c.length,o<e?ue(t,r,Jr,u.placeholder,T,f,c,T,T,e-o):n(this&&this!==$n&&this instanceof u?i:t,this,f)}var i=Vr(t);return u}function Gr(n){return function(t,r,e){var u=Qu(t);if(!su(t)){var i=ye(r,3);t=Wu(t),r=function(n){return i(u[n],n,u)}}return r=n(t,r,e),-1<r?u[i?t[r]:r]:T}}function Hr(n){return pe(function(t){var r=t.length,e=r,u=On.prototype.thru;for(n&&t.reverse();e--;){var i=t[e];if(typeof i!=\"function\")throw new ti(\"Expected a function\");if(u&&!o&&\"wrapper\"==ge(i))var o=new On([],true)}for(e=o?e:r;++e<r;)var i=t[e],u=ge(i),f=\"wrapper\"==u?ho(i):T,o=f&&Re(f[0])&&424==f[1]&&!f[4].length&&1==f[9]?o[ge(f[0])].apply(o,f[3]):1==i.length&&Re(i)?o[u]():o.thru(i);\nreturn function(){var n=arguments,e=n[0];if(o&&1==n.length&&ff(e))return o.plant(e).value();for(var u=0,n=r?t[u].apply(this,n):e;++u<r;)n=t[u].call(this,n);return n}})}function Jr(n,t,r,e,u,i,o,f,c,a){function l(){for(var d=arguments.length,y=Ku(d),b=d;b--;)y[b]=arguments[b];if(_){var x,j=de(l),b=y.length;for(x=0;b--;)y[b]===j&&++x}if(e&&(y=Br(y,e,u,_)),i&&(y=Lr(y,i,o,_)),d-=x,_&&d<a)return j=L(y,j),ue(n,t,Jr,l.placeholder,r,y,j,f,c,a-d);if(j=h?r:this,b=p?j[n]:n,d=y.length,f){x=y.length;for(var w=Ci(f.length,x),m=Ur(y);w--;){\nvar A=f[w];y[w]=Se(A,x)?m[A]:T}}else v&&1<d&&y.reverse();return s&&c<d&&(y.length=c),this&&this!==$n&&this instanceof l&&(b=g||Vr(b)),b.apply(j,y)}var s=128&t,h=1&t,p=2&t,_=24&t,v=512&t,g=p?T:Vr(n);return l}function Yr(n,t){return function(r,e){return Bt(r,n,t(e))}}function Qr(n,t){return function(r,e){var u;if(r===T&&e===T)return t;if(r!==T&&(u=r),e!==T){if(u===T)return e;typeof r==\"string\"||typeof e==\"string\"?(r=yr(r),e=yr(e)):(r=dr(r),e=dr(e)),u=n(r,e)}return u}}function Xr(t){return pe(function(r){\nreturn r=c(r,k(ye())),fr(function(e){var u=this;return t(r,function(t){return n(t,u,e)})})})}function ne(n,t){t=t===T?\" \":yr(t);var r=t.length;return 2>r?r?or(t,n):t:(r=or(t,Oi(n/D(t))),Rn.test(t)?Or(M(r),0,n).join(\"\"):r.slice(0,n))}function te(t,r,e,u){function i(){for(var r=-1,c=arguments.length,a=-1,l=u.length,s=Ku(l+c),h=this&&this!==$n&&this instanceof i?f:t;++a<l;)s[a]=u[a];for(;c--;)s[a++]=arguments[++r];return n(h,o?e:this,s)}var o=1&r,f=Vr(t);return i}function re(n){return function(t,r,e){\ne&&typeof e!=\"number\"&&Oe(t,r,e)&&(r=e=T),t=Au(t),r===T?(r=t,t=0):r=Au(r),e=e===T?t<r?1:-1:Au(e);var u=-1;r=Ui(Oi((r-t)/(e||1)),0);for(var i=Ku(r);r--;)i[n?r:++u]=t,t+=e;return i}}function ee(n){return function(t,r){return typeof t==\"string\"&&typeof r==\"string\"||(t=Su(t),r=Su(r)),n(t,r)}}function ue(n,t,r,e,u,i,o,f,c,a){var l=8&t,s=l?o:T;o=l?T:o;var h=l?i:T;return i=l?T:i,t=(t|(l?32:64))&~(l?64:32),4&t||(t&=-4),u=[n,t,u,h,s,i,o,f,c,a],r=r.apply(T,u),Re(n)&&yo(r,u),r.placeholder=e,Ue(r,n,t)}function ie(n){\nvar t=Yu[n];return function(n,r){if(n=Su(n),(r=null==r?0:Ci(Eu(r),292))&&Wi(n)){var e=(Iu(n)+\"e\").split(\"e\"),e=t(e[0]+\"e\"+(+e[1]+r)),e=(Iu(e)+\"e\").split(\"e\");return+(e[0]+\"e\"+(+e[1]-r))}return t(n)}}function oe(n){return function(t){var r=vo(t);return\"[object Map]\"==r?W(t):\"[object Set]\"==r?C(t):E(t,n(t))}}function fe(n,t,r,e,u,i,o,f){var c=2&t;if(!c&&typeof n!=\"function\")throw new ti(\"Expected a function\");var a=e?e.length:0;if(a||(t&=-97,e=u=T),o=o===T?o:Ui(Eu(o),0),f=f===T?f:Eu(f),a-=u?u.length:0,\n64&t){var l=e,s=u;e=u=T}var h=c?T:ho(n);return i=[n,t,r,e,u,l,s,i,o,f],h&&(r=i[1],n=h[1],t=r|n,e=128==n&&8==r||128==n&&256==r&&i[7].length<=h[8]||384==n&&h[7].length<=h[8]&&8==r,131>t||e)&&(1&n&&(i[2]=h[2],t|=1&r?0:4),(r=h[3])&&(e=i[3],i[3]=e?Br(e,r,h[4]):r,i[4]=e?L(i[3],\"__lodash_placeholder__\"):h[4]),(r=h[5])&&(e=i[5],i[5]=e?Lr(e,r,h[6]):r,i[6]=e?L(i[5],\"__lodash_placeholder__\"):h[6]),(r=h[7])&&(i[7]=r),128&n&&(i[8]=null==i[8]?h[8]:Ci(i[8],h[8])),null==i[9]&&(i[9]=h[9]),i[0]=h[0],i[1]=t),n=i[0],\nt=i[1],r=i[2],e=i[3],u=i[4],f=i[9]=i[9]===T?c?0:n.length:Ui(i[9]-a,0),!f&&24&t&&(t&=-25),Ue((h?co:yo)(t&&1!=t?8==t||16==t?Kr(n,t,f):32!=t&&33!=t||u.length?Jr.apply(T,i):te(n,t,r,e):Pr(n,t,r),i),n,t)}function ce(n,t,r,e){return n===T||lu(n,ei[r])&&!oi.call(e,r)?t:n}function ae(n,t,r,e,u,i){return du(n)&&du(t)&&(i.set(t,n),Yt(n,t,T,ae,i),i.delete(t)),n}function le(n){return xu(n)?T:n}function se(n,t,r,e,u,i){var o=1&r,f=n.length,c=t.length;if(f!=c&&!(o&&c>f))return false;if((c=i.get(n))&&i.get(t))return c==t;\nvar c=-1,a=true,l=2&r?new Nn:T;for(i.set(n,t),i.set(t,n);++c<f;){var s=n[c],p=t[c];if(e)var _=o?e(p,s,c,t,n,i):e(s,p,c,n,t,i);if(_!==T){if(_)continue;a=false;break}if(l){if(!h(t,function(n,t){if(!O(l,t)&&(s===n||u(s,n,r,e,i)))return l.push(t)})){a=false;break}}else if(s!==p&&!u(s,p,r,e,i)){a=false;break}}return i.delete(n),i.delete(t),a}function he(n,t,r,e,u,i,o){switch(r){case\"[object DataView]\":if(n.byteLength!=t.byteLength||n.byteOffset!=t.byteOffset)break;n=n.buffer,t=t.buffer;case\"[object ArrayBuffer]\":\nif(n.byteLength!=t.byteLength||!i(new vi(n),new vi(t)))break;return true;case\"[object Boolean]\":case\"[object Date]\":case\"[object Number]\":return lu(+n,+t);case\"[object Error]\":return n.name==t.name&&n.message==t.message;case\"[object RegExp]\":case\"[object String]\":return n==t+\"\";case\"[object Map]\":var f=W;case\"[object Set]\":if(f||(f=U),n.size!=t.size&&!(1&e))break;return(r=o.get(n))?r==t:(e|=2,o.set(n,t),t=se(f(n),f(t),e,u,i,o),o.delete(n),t);case\"[object Symbol]\":if(to)return to.call(n)==to.call(t)}\nreturn false}function pe(n){return xo(Be(n,T,Ze),n+\"\")}function _e(n){return St(n,Wu,po)}function ve(n){return St(n,Bu,_o)}function ge(n){for(var t=n.name+\"\",r=Gi[t],e=oi.call(Gi,t)?r.length:0;e--;){var u=r[e],i=u.func;if(null==i||i==n)return u.name}return t}function de(n){return(oi.call(An,\"placeholder\")?An:n).placeholder}function ye(){var n=An.iteratee||Fu,n=n===Fu?qt:n;return arguments.length?n(arguments[0],arguments[1]):n}function be(n,t){var r=n.__data__,e=typeof t;return(\"string\"==e||\"number\"==e||\"symbol\"==e||\"boolean\"==e?\"__proto__\"!==t:null===t)?r[typeof t==\"string\"?\"string\":\"hash\"]:r.map;\n}function xe(n){for(var t=Wu(n),r=t.length;r--;){var e=t[r],u=n[e];t[r]=[e,u,u===u&&!du(u)]}return t}function je(n,t){var r=null==n?T:n[t];return Ft(r)?r:T}function we(n,t,r){t=Sr(t,n);for(var e=-1,u=t.length,i=false;++e<u;){var o=Me(t[e]);if(!(i=null!=n&&r(n,o)))break;n=n[o]}return i||++e!=u?i:(u=null==n?0:n.length,!!u&&gu(u)&&Se(o,u)&&(ff(n)||of(n)))}function me(n){var t=n.length,r=new n.constructor(t);return t&&\"string\"==typeof n[0]&&oi.call(n,\"index\")&&(r.index=n.index,r.input=n.input),r}function Ae(n){\nreturn typeof n.constructor!=\"function\"||ze(n)?{}:eo(di(n))}function Ee(n,t,r){var e=n.constructor;switch(t){case\"[object ArrayBuffer]\":return Rr(n);case\"[object Boolean]\":case\"[object Date]\":return new e(+n);case\"[object DataView]\":return t=r?Rr(n.buffer):n.buffer,new n.constructor(t,n.byteOffset,n.byteLength);case\"[object Float32Array]\":case\"[object Float64Array]\":case\"[object Int8Array]\":case\"[object Int16Array]\":case\"[object Int32Array]\":case\"[object Uint8Array]\":case\"[object Uint8ClampedArray]\":\ncase\"[object Uint16Array]\":case\"[object Uint32Array]\":return zr(n,r);case\"[object Map]\":return new e;case\"[object Number]\":case\"[object String]\":return new e(n);case\"[object RegExp]\":return t=new n.constructor(n.source,_n.exec(n)),t.lastIndex=n.lastIndex,t;case\"[object Set]\":return new e;case\"[object Symbol]\":return to?Qu(to.call(n)):{}}}function ke(n){return ff(n)||of(n)||!!(ji&&n&&n[ji])}function Se(n,t){var r=typeof n;return t=null==t?9007199254740991:t,!!t&&(\"number\"==r||\"symbol\"!=r&&bn.test(n))&&-1<n&&0==n%1&&n<t;\n}function Oe(n,t,r){if(!du(r))return false;var e=typeof t;return!!(\"number\"==e?su(r)&&Se(t,r.length):\"string\"==e&&t in r)&&lu(r[t],n)}function Ie(n,t){if(ff(n))return false;var r=typeof n;return!(\"number\"!=r&&\"symbol\"!=r&&\"boolean\"!=r&&null!=n&&!wu(n))||(nn.test(n)||!X.test(n)||null!=t&&n in Qu(t))}function Re(n){var t=ge(n),r=An[t];return typeof r==\"function\"&&t in Un.prototype&&(n===r||(t=ho(r),!!t&&n===t[0]))}function ze(n){var t=n&&n.constructor;return n===(typeof t==\"function\"&&t.prototype||ei)}function We(n,t){\nreturn function(r){return null!=r&&(r[n]===t&&(t!==T||n in Qu(r)))}}function Be(t,r,e){return r=Ui(r===T?t.length-1:r,0),function(){for(var u=arguments,i=-1,o=Ui(u.length-r,0),f=Ku(o);++i<o;)f[i]=u[r+i];for(i=-1,o=Ku(r+1);++i<r;)o[i]=u[i];return o[r]=e(f),n(t,this,o)}}function Le(n,t){if((\"constructor\"!==t||\"function\"!=typeof n[t])&&\"__proto__\"!=t)return n[t]}function Ue(n,t,r){var e=t+\"\";t=xo;var u,i=$e;return u=(u=e.match(an))?u[1].split(ln):[],r=i(u,r),(i=r.length)&&(u=i-1,r[u]=(1<i?\"& \":\"\")+r[u],\nr=r.join(2<i?\", \":\" \"),e=e.replace(cn,\"{\\n/* [wrapped with \"+r+\"] */\\n\")),t(n,e)}function Ce(n){var t=0,r=0;return function(){var e=Di(),u=16-(e-r);if(r=e,0<u){if(800<=++t)return arguments[0]}else t=0;return n.apply(T,arguments)}}function De(n,t){var r=-1,e=n.length,u=e-1;for(t=t===T?e:t;++r<t;){var e=ir(r,u),i=n[e];n[e]=n[r],n[r]=i}return n.length=t,n}function Me(n){if(typeof n==\"string\"||wu(n))return n;var t=n+\"\";return\"0\"==t&&1/n==-$?\"-0\":t}function Te(n){if(null!=n){try{return ii.call(n)}catch(n){}\nreturn n+\"\"}return\"\"}function $e(n,t){return r(N,function(r){var e=\"_.\"+r[0];t&r[1]&&!o(n,e)&&n.push(e)}),n.sort()}function Fe(n){if(n instanceof Un)return n.clone();var t=new On(n.__wrapped__,n.__chain__);return t.__actions__=Ur(n.__actions__),t.__index__=n.__index__,t.__values__=n.__values__,t}function Ne(n,t,r){var e=null==n?0:n.length;return e?(r=null==r?0:Eu(r),0>r&&(r=Ui(e+r,0)),_(n,ye(t,3),r)):-1}function Pe(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e-1;return r!==T&&(u=Eu(r),u=0>r?Ui(e+u,0):Ci(u,e-1)),\n_(n,ye(t,3),u,true)}function Ze(n){return(null==n?0:n.length)?wt(n,1):[]}function qe(n){return n&&n.length?n[0]:T}function Ve(n){var t=null==n?0:n.length;return t?n[t-1]:T}function Ke(n,t){return n&&n.length&&t&&t.length?er(n,t):n}function Ge(n){return null==n?n:$i.call(n)}function He(n){if(!n||!n.length)return[];var t=0;return n=i(n,function(n){if(hu(n))return t=Ui(n.length,t),true}),A(t,function(t){return c(n,b(t))})}function Je(t,r){if(!t||!t.length)return[];var e=He(t);return null==r?e:c(e,function(t){\nreturn n(r,T,t)})}function Ye(n){return n=An(n),n.__chain__=true,n}function Qe(n,t){return t(n)}function Xe(){return this}function nu(n,t){return(ff(n)?r:uo)(n,ye(t,3))}function tu(n,t){return(ff(n)?e:io)(n,ye(t,3))}function ru(n,t){return(ff(n)?c:Gt)(n,ye(t,3))}function eu(n,t,r){return t=r?T:t,t=n&&null==t?n.length:t,fe(n,128,T,T,T,T,t)}function uu(n,t){var r;if(typeof t!=\"function\")throw new ti(\"Expected a function\");return n=Eu(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=T),\nr}}function iu(n,t,r){return t=r?T:t,n=fe(n,8,T,T,T,T,T,t),n.placeholder=iu.placeholder,n}function ou(n,t,r){return t=r?T:t,n=fe(n,16,T,T,T,T,T,t),n.placeholder=ou.placeholder,n}function fu(n,t,r){function e(t){var r=c,e=a;return c=a=T,_=t,s=n.apply(e,r)}function u(n){var r=n-p;return n-=_,p===T||r>=t||0>r||g&&n>=l}function i(){var n=Go();if(u(n))return o(n);var r,e=bo;r=n-_,n=t-(n-p),r=g?Ci(n,l-r):n,h=e(i,r)}function o(n){return h=T,d&&c?e(n):(c=a=T,s)}function f(){var n=Go(),r=u(n);if(c=arguments,\na=this,p=n,r){if(h===T)return _=n=p,h=bo(i,t),v?e(n):s;if(g)return lo(h),h=bo(i,t),e(p)}return h===T&&(h=bo(i,t)),s}var c,a,l,s,h,p,_=0,v=false,g=false,d=true;if(typeof n!=\"function\")throw new ti(\"Expected a function\");return t=Su(t)||0,du(r)&&(v=!!r.leading,l=(g=\"maxWait\"in r)?Ui(Su(r.maxWait)||0,t):l,d=\"trailing\"in r?!!r.trailing:d),f.cancel=function(){h!==T&&lo(h),_=0,c=p=a=h=T},f.flush=function(){return h===T?s:o(Go())},f}function cu(n,t){function r(){var e=arguments,u=t?t.apply(this,e):e[0],i=r.cache;\nreturn i.has(u)?i.get(u):(e=n.apply(this,e),r.cache=i.set(u,e)||i,e)}if(typeof n!=\"function\"||null!=t&&typeof t!=\"function\")throw new ti(\"Expected a function\");return r.cache=new(cu.Cache||Fn),r}function au(n){if(typeof n!=\"function\")throw new ti(\"Expected a function\");return function(){var t=arguments;switch(t.length){case 0:return!n.call(this);case 1:return!n.call(this,t[0]);case 2:return!n.call(this,t[0],t[1]);case 3:return!n.call(this,t[0],t[1],t[2])}return!n.apply(this,t)}}function lu(n,t){return n===t||n!==n&&t!==t;\n}function su(n){return null!=n&&gu(n.length)&&!_u(n)}function hu(n){return yu(n)&&su(n)}function pu(n){if(!yu(n))return false;var t=Ot(n);return\"[object Error]\"==t||\"[object DOMException]\"==t||typeof n.message==\"string\"&&typeof n.name==\"string\"&&!xu(n)}function _u(n){return!!du(n)&&(n=Ot(n),\"[object Function]\"==n||\"[object GeneratorFunction]\"==n||\"[object AsyncFunction]\"==n||\"[object Proxy]\"==n)}function vu(n){return typeof n==\"number\"&&n==Eu(n)}function gu(n){return typeof n==\"number\"&&-1<n&&0==n%1&&9007199254740991>=n;\n}function du(n){var t=typeof n;return null!=n&&(\"object\"==t||\"function\"==t)}function yu(n){return null!=n&&typeof n==\"object\"}function bu(n){return typeof n==\"number\"||yu(n)&&\"[object Number]\"==Ot(n)}function xu(n){return!(!yu(n)||\"[object Object]\"!=Ot(n))&&(n=di(n),null===n||(n=oi.call(n,\"constructor\")&&n.constructor,typeof n==\"function\"&&n instanceof n&&ii.call(n)==li))}function ju(n){return typeof n==\"string\"||!ff(n)&&yu(n)&&\"[object String]\"==Ot(n)}function wu(n){return typeof n==\"symbol\"||yu(n)&&\"[object Symbol]\"==Ot(n);\n}function mu(n){if(!n)return[];if(su(n))return ju(n)?M(n):Ur(n);if(wi&&n[wi]){n=n[wi]();for(var t,r=[];!(t=n.next()).done;)r.push(t.value);return r}return t=vo(n),(\"[object Map]\"==t?W:\"[object Set]\"==t?U:Uu)(n)}function Au(n){return n?(n=Su(n),n===$||n===-$?1.7976931348623157e308*(0>n?-1:1):n===n?n:0):0===n?n:0}function Eu(n){n=Au(n);var t=n%1;return n===n?t?n-t:n:0}function ku(n){return n?pt(Eu(n),0,4294967295):0}function Su(n){if(typeof n==\"number\")return n;if(wu(n))return F;if(du(n)&&(n=typeof n.valueOf==\"function\"?n.valueOf():n,\nn=du(n)?n+\"\":n),typeof n!=\"string\")return 0===n?n:+n;n=n.replace(un,\"\");var t=gn.test(n);return t||yn.test(n)?Dn(n.slice(2),t?2:8):vn.test(n)?F:+n}function Ou(n){return Cr(n,Bu(n))}function Iu(n){return null==n?\"\":yr(n)}function Ru(n,t,r){return n=null==n?T:kt(n,t),n===T?r:n}function zu(n,t){return null!=n&&we(n,t,zt)}function Wu(n){return su(n)?qn(n):Vt(n)}function Bu(n){if(su(n))n=qn(n,true);else if(du(n)){var t,r=ze(n),e=[];for(t in n)(\"constructor\"!=t||!r&&oi.call(n,t))&&e.push(t);n=e}else{if(t=[],\nnull!=n)for(r in Qu(n))t.push(r);n=t}return n}function Lu(n,t){if(null==n)return{};var r=c(ve(n),function(n){return[n]});return t=ye(t),tr(n,r,function(n,r){return t(n,r[0])})}function Uu(n){return null==n?[]:S(n,Wu(n))}function Cu(n){return $f(Iu(n).toLowerCase())}function Du(n){return(n=Iu(n))&&n.replace(xn,Xn).replace(Sn,\"\")}function Mu(n,t,r){return n=Iu(n),t=r?T:t,t===T?zn.test(n)?n.match(In)||[]:n.match(sn)||[]:n.match(t)||[]}function Tu(n){return function(){return n}}function $u(n){return n;\n}function Fu(n){return qt(typeof n==\"function\"?n:_t(n,1))}function Nu(n,t,e){var u=Wu(t),i=Et(t,u);null!=e||du(t)&&(i.length||!u.length)||(e=t,t=n,n=this,i=Et(t,Wu(t)));var o=!(du(e)&&\"chain\"in e&&!e.chain),f=_u(n);return r(i,function(r){var e=t[r];n[r]=e,f&&(n.prototype[r]=function(){var t=this.__chain__;if(o||t){var r=n(this.__wrapped__);return(r.__actions__=Ur(this.__actions__)).push({func:e,args:arguments,thisArg:n}),r.__chain__=t,r}return e.apply(n,a([this.value()],arguments))})}),n}function Pu(){}\nfunction Zu(n){return Ie(n)?b(Me(n)):rr(n)}function qu(){return[]}function Vu(){return false}mn=null==mn?$n:rt.defaults($n.Object(),mn,rt.pick($n,Wn));var Ku=mn.Array,Gu=mn.Date,Hu=mn.Error,Ju=mn.Function,Yu=mn.Math,Qu=mn.Object,Xu=mn.RegExp,ni=mn.String,ti=mn.TypeError,ri=Ku.prototype,ei=Qu.prototype,ui=mn[\"__core-js_shared__\"],ii=Ju.prototype.toString,oi=ei.hasOwnProperty,fi=0,ci=function(){var n=/[^.]+$/.exec(ui&&ui.keys&&ui.keys.IE_PROTO||\"\");return n?\"Symbol(src)_1.\"+n:\"\"}(),ai=ei.toString,li=ii.call(Qu),si=$n._,hi=Xu(\"^\"+ii.call(oi).replace(rn,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\"),pi=Pn?mn.Buffer:T,_i=mn.Symbol,vi=mn.Uint8Array,gi=pi?pi.g:T,di=B(Qu.getPrototypeOf,Qu),yi=Qu.create,bi=ei.propertyIsEnumerable,xi=ri.splice,ji=_i?_i.isConcatSpreadable:T,wi=_i?_i.iterator:T,mi=_i?_i.toStringTag:T,Ai=function(){\ntry{var n=je(Qu,\"defineProperty\");return n({},\"\",{}),n}catch(n){}}(),Ei=mn.clearTimeout!==$n.clearTimeout&&mn.clearTimeout,ki=Gu&&Gu.now!==$n.Date.now&&Gu.now,Si=mn.setTimeout!==$n.setTimeout&&mn.setTimeout,Oi=Yu.ceil,Ii=Yu.floor,Ri=Qu.getOwnPropertySymbols,zi=pi?pi.isBuffer:T,Wi=mn.isFinite,Bi=ri.join,Li=B(Qu.keys,Qu),Ui=Yu.max,Ci=Yu.min,Di=Gu.now,Mi=mn.parseInt,Ti=Yu.random,$i=ri.reverse,Fi=je(mn,\"DataView\"),Ni=je(mn,\"Map\"),Pi=je(mn,\"Promise\"),Zi=je(mn,\"Set\"),qi=je(mn,\"WeakMap\"),Vi=je(Qu,\"create\"),Ki=qi&&new qi,Gi={},Hi=Te(Fi),Ji=Te(Ni),Yi=Te(Pi),Qi=Te(Zi),Xi=Te(qi),no=_i?_i.prototype:T,to=no?no.valueOf:T,ro=no?no.toString:T,eo=function(){\nfunction n(){}return function(t){return du(t)?yi?yi(t):(n.prototype=t,t=new n,n.prototype=T,t):{}}}();An.templateSettings={escape:J,evaluate:Y,interpolate:Q,variable:\"\",imports:{_:An}},An.prototype=En.prototype,An.prototype.constructor=An,On.prototype=eo(En.prototype),On.prototype.constructor=On,Un.prototype=eo(En.prototype),Un.prototype.constructor=Un,Mn.prototype.clear=function(){this.__data__=Vi?Vi(null):{},this.size=0},Mn.prototype.delete=function(n){return n=this.has(n)&&delete this.__data__[n],\nthis.size-=n?1:0,n},Mn.prototype.get=function(n){var t=this.__data__;return Vi?(n=t[n],\"__lodash_hash_undefined__\"===n?T:n):oi.call(t,n)?t[n]:T},Mn.prototype.has=function(n){var t=this.__data__;return Vi?t[n]!==T:oi.call(t,n)},Mn.prototype.set=function(n,t){var r=this.__data__;return this.size+=this.has(n)?0:1,r[n]=Vi&&t===T?\"__lodash_hash_undefined__\":t,this},Tn.prototype.clear=function(){this.__data__=[],this.size=0},Tn.prototype.delete=function(n){var t=this.__data__;return n=ft(t,n),!(0>n)&&(n==t.length-1?t.pop():xi.call(t,n,1),\n--this.size,true)},Tn.prototype.get=function(n){var t=this.__data__;return n=ft(t,n),0>n?T:t[n][1]},Tn.prototype.has=function(n){return-1<ft(this.__data__,n)},Tn.prototype.set=function(n,t){var r=this.__data__,e=ft(r,n);return 0>e?(++this.size,r.push([n,t])):r[e][1]=t,this},Fn.prototype.clear=function(){this.size=0,this.__data__={hash:new Mn,map:new(Ni||Tn),string:new Mn}},Fn.prototype.delete=function(n){return n=be(this,n).delete(n),this.size-=n?1:0,n},Fn.prototype.get=function(n){return be(this,n).get(n);\n},Fn.prototype.has=function(n){return be(this,n).has(n)},Fn.prototype.set=function(n,t){var r=be(this,n),e=r.size;return r.set(n,t),this.size+=r.size==e?0:1,this},Nn.prototype.add=Nn.prototype.push=function(n){return this.__data__.set(n,\"__lodash_hash_undefined__\"),this},Nn.prototype.has=function(n){return this.__data__.has(n)},Zn.prototype.clear=function(){this.__data__=new Tn,this.size=0},Zn.prototype.delete=function(n){var t=this.__data__;return n=t.delete(n),this.size=t.size,n},Zn.prototype.get=function(n){\nreturn this.__data__.get(n)},Zn.prototype.has=function(n){return this.__data__.has(n)},Zn.prototype.set=function(n,t){var r=this.__data__;if(r instanceof Tn){var e=r.__data__;if(!Ni||199>e.length)return e.push([n,t]),this.size=++r.size,this;r=this.__data__=new Fn(e)}return r.set(n,t),this.size=r.size,this};var uo=Fr(mt),io=Fr(At,true),oo=Nr(),fo=Nr(true),co=Ki?function(n,t){return Ki.set(n,t),n}:$u,ao=Ai?function(n,t){return Ai(n,\"toString\",{configurable:true,enumerable:false,value:Tu(t),writable:true})}:$u,lo=Ei||function(n){\nreturn $n.clearTimeout(n)},so=Zi&&1/U(new Zi([,-0]))[1]==$?function(n){return new Zi(n)}:Pu,ho=Ki?function(n){return Ki.get(n)}:Pu,po=Ri?function(n){return null==n?[]:(n=Qu(n),i(Ri(n),function(t){return bi.call(n,t)}))}:qu,_o=Ri?function(n){for(var t=[];n;)a(t,po(n)),n=di(n);return t}:qu,vo=Ot;(Fi&&\"[object DataView]\"!=vo(new Fi(new ArrayBuffer(1)))||Ni&&\"[object Map]\"!=vo(new Ni)||Pi&&\"[object Promise]\"!=vo(Pi.resolve())||Zi&&\"[object Set]\"!=vo(new Zi)||qi&&\"[object WeakMap]\"!=vo(new qi))&&(vo=function(n){\nvar t=Ot(n);if(n=(n=\"[object Object]\"==t?n.constructor:T)?Te(n):\"\")switch(n){case Hi:return\"[object DataView]\";case Ji:return\"[object Map]\";case Yi:return\"[object Promise]\";case Qi:return\"[object Set]\";case Xi:return\"[object WeakMap]\"}return t});var go=ui?_u:Vu,yo=Ce(co),bo=Si||function(n,t){return $n.setTimeout(n,t)},xo=Ce(ao),jo=function(n){n=cu(n,function(n){return 500===t.size&&t.clear(),n});var t=n.cache;return n}(function(n){var t=[];return 46===n.charCodeAt(0)&&t.push(\"\"),n.replace(tn,function(n,r,e,u){\nt.push(e?u.replace(hn,\"$1\"):r||n)}),t}),wo=fr(function(n,t){return hu(n)?yt(n,wt(t,1,hu,true)):[]}),mo=fr(function(n,t){var r=Ve(t);return hu(r)&&(r=T),hu(n)?yt(n,wt(t,1,hu,true),ye(r,2)):[]}),Ao=fr(function(n,t){var r=Ve(t);return hu(r)&&(r=T),hu(n)?yt(n,wt(t,1,hu,true),T,r):[]}),Eo=fr(function(n){var t=c(n,Er);return t.length&&t[0]===n[0]?Wt(t):[]}),ko=fr(function(n){var t=Ve(n),r=c(n,Er);return t===Ve(r)?t=T:r.pop(),r.length&&r[0]===n[0]?Wt(r,ye(t,2)):[]}),So=fr(function(n){var t=Ve(n),r=c(n,Er);return(t=typeof t==\"function\"?t:T)&&r.pop(),\nr.length&&r[0]===n[0]?Wt(r,T,t):[]}),Oo=fr(Ke),Io=pe(function(n,t){var r=null==n?0:n.length,e=ht(n,t);return ur(n,c(t,function(n){return Se(n,r)?+n:n}).sort(Wr)),e}),Ro=fr(function(n){return br(wt(n,1,hu,true))}),zo=fr(function(n){var t=Ve(n);return hu(t)&&(t=T),br(wt(n,1,hu,true),ye(t,2))}),Wo=fr(function(n){var t=Ve(n),t=typeof t==\"function\"?t:T;return br(wt(n,1,hu,true),T,t)}),Bo=fr(function(n,t){return hu(n)?yt(n,t):[]}),Lo=fr(function(n){return mr(i(n,hu))}),Uo=fr(function(n){var t=Ve(n);return hu(t)&&(t=T),\nmr(i(n,hu),ye(t,2))}),Co=fr(function(n){var t=Ve(n),t=typeof t==\"function\"?t:T;return mr(i(n,hu),T,t)}),Do=fr(He),Mo=fr(function(n){var t=n.length,t=1<t?n[t-1]:T,t=typeof t==\"function\"?(n.pop(),t):T;return Je(n,t)}),To=pe(function(n){function t(t){return ht(t,n)}var r=n.length,e=r?n[0]:0,u=this.__wrapped__;return!(1<r||this.__actions__.length)&&u instanceof Un&&Se(e)?(u=u.slice(e,+e+(r?1:0)),u.__actions__.push({func:Qe,args:[t],thisArg:T}),new On(u,this.__chain__).thru(function(n){return r&&!n.length&&n.push(T),\nn})):this.thru(t)}),$o=Tr(function(n,t,r){oi.call(n,r)?++n[r]:st(n,r,1)}),Fo=Gr(Ne),No=Gr(Pe),Po=Tr(function(n,t,r){oi.call(n,r)?n[r].push(t):st(n,r,[t])}),Zo=fr(function(t,r,e){var u=-1,i=typeof r==\"function\",o=su(t)?Ku(t.length):[];return uo(t,function(t){o[++u]=i?n(r,t,e):Lt(t,r,e)}),o}),qo=Tr(function(n,t,r){st(n,r,t)}),Vo=Tr(function(n,t,r){n[r?0:1].push(t)},function(){return[[],[]]}),Ko=fr(function(n,t){if(null==n)return[];var r=t.length;return 1<r&&Oe(n,t[0],t[1])?t=[]:2<r&&Oe(t[0],t[1],t[2])&&(t=[t[0]]),\nXt(n,wt(t,1),[])}),Go=ki||function(){return $n.Date.now()},Ho=fr(function(n,t,r){var e=1;if(r.length)var u=L(r,de(Ho)),e=32|e;return fe(n,e,t,r,u)}),Jo=fr(function(n,t,r){var e=3;if(r.length)var u=L(r,de(Jo)),e=32|e;return fe(t,e,n,r,u)}),Yo=fr(function(n,t){return dt(n,1,t)}),Qo=fr(function(n,t,r){return dt(n,Su(t)||0,r)});cu.Cache=Fn;var Xo=fr(function(t,r){r=1==r.length&&ff(r[0])?c(r[0],k(ye())):c(wt(r,1),k(ye()));var e=r.length;return fr(function(u){for(var i=-1,o=Ci(u.length,e);++i<o;)u[i]=r[i].call(this,u[i]);\nreturn n(t,this,u)})}),nf=fr(function(n,t){return fe(n,32,T,t,L(t,de(nf)))}),tf=fr(function(n,t){return fe(n,64,T,t,L(t,de(tf)))}),rf=pe(function(n,t){return fe(n,256,T,T,T,t)}),ef=ee(It),uf=ee(function(n,t){return n>=t}),of=Ut(function(){return arguments}())?Ut:function(n){return yu(n)&&oi.call(n,\"callee\")&&!bi.call(n,\"callee\")},ff=Ku.isArray,cf=Vn?k(Vn):Ct,af=zi||Vu,lf=Kn?k(Kn):Dt,sf=Gn?k(Gn):Tt,hf=Hn?k(Hn):Nt,pf=Jn?k(Jn):Pt,_f=Yn?k(Yn):Zt,vf=ee(Kt),gf=ee(function(n,t){return n<=t}),df=$r(function(n,t){\nif(ze(t)||su(t))Cr(t,Wu(t),n);else for(var r in t)oi.call(t,r)&&ot(n,r,t[r])}),yf=$r(function(n,t){Cr(t,Bu(t),n)}),bf=$r(function(n,t,r,e){Cr(t,Bu(t),n,e)}),xf=$r(function(n,t,r,e){Cr(t,Wu(t),n,e)}),jf=pe(ht),wf=fr(function(n,t){n=Qu(n);var r=-1,e=t.length,u=2<e?t[2]:T;for(u&&Oe(t[0],t[1],u)&&(e=1);++r<e;)for(var u=t[r],i=Bu(u),o=-1,f=i.length;++o<f;){var c=i[o],a=n[c];(a===T||lu(a,ei[c])&&!oi.call(n,c))&&(n[c]=u[c])}return n}),mf=fr(function(t){return t.push(T,ae),n(Of,T,t)}),Af=Yr(function(n,t,r){\nnull!=t&&typeof t.toString!=\"function\"&&(t=ai.call(t)),n[t]=r},Tu($u)),Ef=Yr(function(n,t,r){null!=t&&typeof t.toString!=\"function\"&&(t=ai.call(t)),oi.call(n,t)?n[t].push(r):n[t]=[r]},ye),kf=fr(Lt),Sf=$r(function(n,t,r){Yt(n,t,r)}),Of=$r(function(n,t,r,e){Yt(n,t,r,e)}),If=pe(function(n,t){var r={};if(null==n)return r;var e=false;t=c(t,function(t){return t=Sr(t,n),e||(e=1<t.length),t}),Cr(n,ve(n),r),e&&(r=_t(r,7,le));for(var u=t.length;u--;)xr(r,t[u]);return r}),Rf=pe(function(n,t){return null==n?{}:nr(n,t);\n}),zf=oe(Wu),Wf=oe(Bu),Bf=qr(function(n,t,r){return t=t.toLowerCase(),n+(r?Cu(t):t)}),Lf=qr(function(n,t,r){return n+(r?\"-\":\"\")+t.toLowerCase()}),Uf=qr(function(n,t,r){return n+(r?\" \":\"\")+t.toLowerCase()}),Cf=Zr(\"toLowerCase\"),Df=qr(function(n,t,r){return n+(r?\"_\":\"\")+t.toLowerCase()}),Mf=qr(function(n,t,r){return n+(r?\" \":\"\")+$f(t)}),Tf=qr(function(n,t,r){return n+(r?\" \":\"\")+t.toUpperCase()}),$f=Zr(\"toUpperCase\"),Ff=fr(function(t,r){try{return n(t,T,r)}catch(n){return pu(n)?n:new Hu(n)}}),Nf=pe(function(n,t){\nreturn r(t,function(t){t=Me(t),st(n,t,Ho(n[t],n))}),n}),Pf=Hr(),Zf=Hr(true),qf=fr(function(n,t){return function(r){return Lt(r,n,t)}}),Vf=fr(function(n,t){return function(r){return Lt(n,r,t)}}),Kf=Xr(c),Gf=Xr(u),Hf=Xr(h),Jf=re(),Yf=re(true),Qf=Qr(function(n,t){return n+t},0),Xf=ie(\"ceil\"),nc=Qr(function(n,t){return n/t},1),tc=ie(\"floor\"),rc=Qr(function(n,t){return n*t},1),ec=ie(\"round\"),uc=Qr(function(n,t){return n-t},0);return An.after=function(n,t){if(typeof t!=\"function\")throw new ti(\"Expected a function\");\nreturn n=Eu(n),function(){if(1>--n)return t.apply(this,arguments)}},An.ary=eu,An.assign=df,An.assignIn=yf,An.assignInWith=bf,An.assignWith=xf,An.at=jf,An.before=uu,An.bind=Ho,An.bindAll=Nf,An.bindKey=Jo,An.castArray=function(){if(!arguments.length)return[];var n=arguments[0];return ff(n)?n:[n]},An.chain=Ye,An.chunk=function(n,t,r){if(t=(r?Oe(n,t,r):t===T)?1:Ui(Eu(t),0),r=null==n?0:n.length,!r||1>t)return[];for(var e=0,u=0,i=Ku(Oi(r/t));e<r;)i[u++]=hr(n,e,e+=t);return i},An.compact=function(n){for(var t=-1,r=null==n?0:n.length,e=0,u=[];++t<r;){\nvar i=n[t];i&&(u[e++]=i)}return u},An.concat=function(){var n=arguments.length;if(!n)return[];for(var t=Ku(n-1),r=arguments[0];n--;)t[n-1]=arguments[n];return a(ff(r)?Ur(r):[r],wt(t,1))},An.cond=function(t){var r=null==t?0:t.length,e=ye();return t=r?c(t,function(n){if(\"function\"!=typeof n[1])throw new ti(\"Expected a function\");return[e(n[0]),n[1]]}):[],fr(function(e){for(var u=-1;++u<r;){var i=t[u];if(n(i[0],this,e))return n(i[1],this,e)}})},An.conforms=function(n){return vt(_t(n,1))},An.constant=Tu,\nAn.countBy=$o,An.create=function(n,t){var r=eo(n);return null==t?r:at(r,t)},An.curry=iu,An.curryRight=ou,An.debounce=fu,An.defaults=wf,An.defaultsDeep=mf,An.defer=Yo,An.delay=Qo,An.difference=wo,An.differenceBy=mo,An.differenceWith=Ao,An.drop=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===T?1:Eu(t),hr(n,0>t?0:t,e)):[]},An.dropRight=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===T?1:Eu(t),t=e-t,hr(n,0,0>t?0:t)):[]},An.dropRightWhile=function(n,t){return n&&n.length?jr(n,ye(t,3),true,true):[];\n},An.dropWhile=function(n,t){return n&&n.length?jr(n,ye(t,3),true):[]},An.fill=function(n,t,r,e){var u=null==n?0:n.length;if(!u)return[];for(r&&typeof r!=\"number\"&&Oe(n,t,r)&&(r=0,e=u),u=n.length,r=Eu(r),0>r&&(r=-r>u?0:u+r),e=e===T||e>u?u:Eu(e),0>e&&(e+=u),e=r>e?0:ku(e);r<e;)n[r++]=t;return n},An.filter=function(n,t){return(ff(n)?i:jt)(n,ye(t,3))},An.flatMap=function(n,t){return wt(ru(n,t),1)},An.flatMapDeep=function(n,t){return wt(ru(n,t),$)},An.flatMapDepth=function(n,t,r){return r=r===T?1:Eu(r),\nwt(ru(n,t),r)},An.flatten=Ze,An.flattenDeep=function(n){return(null==n?0:n.length)?wt(n,$):[]},An.flattenDepth=function(n,t){return null!=n&&n.length?(t=t===T?1:Eu(t),wt(n,t)):[]},An.flip=function(n){return fe(n,512)},An.flow=Pf,An.flowRight=Zf,An.fromPairs=function(n){for(var t=-1,r=null==n?0:n.length,e={};++t<r;){var u=n[t];e[u[0]]=u[1]}return e},An.functions=function(n){return null==n?[]:Et(n,Wu(n))},An.functionsIn=function(n){return null==n?[]:Et(n,Bu(n))},An.groupBy=Po,An.initial=function(n){\nreturn(null==n?0:n.length)?hr(n,0,-1):[]},An.intersection=Eo,An.intersectionBy=ko,An.intersectionWith=So,An.invert=Af,An.invertBy=Ef,An.invokeMap=Zo,An.iteratee=Fu,An.keyBy=qo,An.keys=Wu,An.keysIn=Bu,An.map=ru,An.mapKeys=function(n,t){var r={};return t=ye(t,3),mt(n,function(n,e,u){st(r,t(n,e,u),n)}),r},An.mapValues=function(n,t){var r={};return t=ye(t,3),mt(n,function(n,e,u){st(r,e,t(n,e,u))}),r},An.matches=function(n){return Ht(_t(n,1))},An.matchesProperty=function(n,t){return Jt(n,_t(t,1))},An.memoize=cu,\nAn.merge=Sf,An.mergeWith=Of,An.method=qf,An.methodOf=Vf,An.mixin=Nu,An.negate=au,An.nthArg=function(n){return n=Eu(n),fr(function(t){return Qt(t,n)})},An.omit=If,An.omitBy=function(n,t){return Lu(n,au(ye(t)))},An.once=function(n){return uu(2,n)},An.orderBy=function(n,t,r,e){return null==n?[]:(ff(t)||(t=null==t?[]:[t]),r=e?T:r,ff(r)||(r=null==r?[]:[r]),Xt(n,t,r))},An.over=Kf,An.overArgs=Xo,An.overEvery=Gf,An.overSome=Hf,An.partial=nf,An.partialRight=tf,An.partition=Vo,An.pick=Rf,An.pickBy=Lu,An.property=Zu,\nAn.propertyOf=function(n){return function(t){return null==n?T:kt(n,t)}},An.pull=Oo,An.pullAll=Ke,An.pullAllBy=function(n,t,r){return n&&n.length&&t&&t.length?er(n,t,ye(r,2)):n},An.pullAllWith=function(n,t,r){return n&&n.length&&t&&t.length?er(n,t,T,r):n},An.pullAt=Io,An.range=Jf,An.rangeRight=Yf,An.rearg=rf,An.reject=function(n,t){return(ff(n)?i:jt)(n,au(ye(t,3)))},An.remove=function(n,t){var r=[];if(!n||!n.length)return r;var e=-1,u=[],i=n.length;for(t=ye(t,3);++e<i;){var o=n[e];t(o,e,n)&&(r.push(o),\nu.push(e))}return ur(n,u),r},An.rest=function(n,t){if(typeof n!=\"function\")throw new ti(\"Expected a function\");return t=t===T?t:Eu(t),fr(n,t)},An.reverse=Ge,An.sampleSize=function(n,t,r){return t=(r?Oe(n,t,r):t===T)?1:Eu(t),(ff(n)?et:ar)(n,t)},An.set=function(n,t,r){return null==n?n:lr(n,t,r)},An.setWith=function(n,t,r,e){return e=typeof e==\"function\"?e:T,null==n?n:lr(n,t,r,e)},An.shuffle=function(n){return(ff(n)?ut:sr)(n)},An.slice=function(n,t,r){var e=null==n?0:n.length;return e?(r&&typeof r!=\"number\"&&Oe(n,t,r)?(t=0,\nr=e):(t=null==t?0:Eu(t),r=r===T?e:Eu(r)),hr(n,t,r)):[]},An.sortBy=Ko,An.sortedUniq=function(n){return n&&n.length?gr(n):[]},An.sortedUniqBy=function(n,t){return n&&n.length?gr(n,ye(t,2)):[]},An.split=function(n,t,r){return r&&typeof r!=\"number\"&&Oe(n,t,r)&&(t=r=T),r=r===T?4294967295:r>>>0,r?(n=Iu(n))&&(typeof t==\"string\"||null!=t&&!hf(t))&&(t=yr(t),!t&&Rn.test(n))?Or(M(n),0,r):n.split(t,r):[]},An.spread=function(t,r){if(typeof t!=\"function\")throw new ti(\"Expected a function\");return r=null==r?0:Ui(Eu(r),0),\nfr(function(e){var u=e[r];return e=Or(e,0,r),u&&a(e,u),n(t,this,e)})},An.tail=function(n){var t=null==n?0:n.length;return t?hr(n,1,t):[]},An.take=function(n,t,r){return n&&n.length?(t=r||t===T?1:Eu(t),hr(n,0,0>t?0:t)):[]},An.takeRight=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===T?1:Eu(t),t=e-t,hr(n,0>t?0:t,e)):[]},An.takeRightWhile=function(n,t){return n&&n.length?jr(n,ye(t,3),false,true):[]},An.takeWhile=function(n,t){return n&&n.length?jr(n,ye(t,3)):[]},An.tap=function(n,t){return t(n),\nn},An.throttle=function(n,t,r){var e=true,u=true;if(typeof n!=\"function\")throw new ti(\"Expected a function\");return du(r)&&(e=\"leading\"in r?!!r.leading:e,u=\"trailing\"in r?!!r.trailing:u),fu(n,t,{leading:e,maxWait:t,trailing:u})},An.thru=Qe,An.toArray=mu,An.toPairs=zf,An.toPairsIn=Wf,An.toPath=function(n){return ff(n)?c(n,Me):wu(n)?[n]:Ur(jo(Iu(n)))},An.toPlainObject=Ou,An.transform=function(n,t,e){var u=ff(n),i=u||af(n)||_f(n);if(t=ye(t,4),null==e){var o=n&&n.constructor;e=i?u?new o:[]:du(n)&&_u(o)?eo(di(n)):{};\n}return(i?r:mt)(n,function(n,r,u){return t(e,n,r,u)}),e},An.unary=function(n){return eu(n,1)},An.union=Ro,An.unionBy=zo,An.unionWith=Wo,An.uniq=function(n){return n&&n.length?br(n):[]},An.uniqBy=function(n,t){return n&&n.length?br(n,ye(t,2)):[]},An.uniqWith=function(n,t){return t=typeof t==\"function\"?t:T,n&&n.length?br(n,T,t):[]},An.unset=function(n,t){return null==n||xr(n,t)},An.unzip=He,An.unzipWith=Je,An.update=function(n,t,r){return null==n?n:lr(n,t,kr(r)(kt(n,t)),void 0)},An.updateWith=function(n,t,r,e){\nreturn e=typeof e==\"function\"?e:T,null!=n&&(n=lr(n,t,kr(r)(kt(n,t)),e)),n},An.values=Uu,An.valuesIn=function(n){return null==n?[]:S(n,Bu(n))},An.without=Bo,An.words=Mu,An.wrap=function(n,t){return nf(kr(t),n)},An.xor=Lo,An.xorBy=Uo,An.xorWith=Co,An.zip=Do,An.zipObject=function(n,t){return Ar(n||[],t||[],ot)},An.zipObjectDeep=function(n,t){return Ar(n||[],t||[],lr)},An.zipWith=Mo,An.entries=zf,An.entriesIn=Wf,An.extend=yf,An.extendWith=bf,Nu(An,An),An.add=Qf,An.attempt=Ff,An.camelCase=Bf,An.capitalize=Cu,\nAn.ceil=Xf,An.clamp=function(n,t,r){return r===T&&(r=t,t=T),r!==T&&(r=Su(r),r=r===r?r:0),t!==T&&(t=Su(t),t=t===t?t:0),pt(Su(n),t,r)},An.clone=function(n){return _t(n,4)},An.cloneDeep=function(n){return _t(n,5)},An.cloneDeepWith=function(n,t){return t=typeof t==\"function\"?t:T,_t(n,5,t)},An.cloneWith=function(n,t){return t=typeof t==\"function\"?t:T,_t(n,4,t)},An.conformsTo=function(n,t){return null==t||gt(n,t,Wu(t))},An.deburr=Du,An.defaultTo=function(n,t){return null==n||n!==n?t:n},An.divide=nc,An.endsWith=function(n,t,r){\nn=Iu(n),t=yr(t);var e=n.length,e=r=r===T?e:pt(Eu(r),0,e);return r-=t.length,0<=r&&n.slice(r,e)==t},An.eq=lu,An.escape=function(n){return(n=Iu(n))&&H.test(n)?n.replace(K,nt):n},An.escapeRegExp=function(n){return(n=Iu(n))&&en.test(n)?n.replace(rn,\"\\\\$&\"):n},An.every=function(n,t,r){var e=ff(n)?u:bt;return r&&Oe(n,t,r)&&(t=T),e(n,ye(t,3))},An.find=Fo,An.findIndex=Ne,An.findKey=function(n,t){return p(n,ye(t,3),mt)},An.findLast=No,An.findLastIndex=Pe,An.findLastKey=function(n,t){return p(n,ye(t,3),At);\n},An.floor=tc,An.forEach=nu,An.forEachRight=tu,An.forIn=function(n,t){return null==n?n:oo(n,ye(t,3),Bu)},An.forInRight=function(n,t){return null==n?n:fo(n,ye(t,3),Bu)},An.forOwn=function(n,t){return n&&mt(n,ye(t,3))},An.forOwnRight=function(n,t){return n&&At(n,ye(t,3))},An.get=Ru,An.gt=ef,An.gte=uf,An.has=function(n,t){return null!=n&&we(n,t,Rt)},An.hasIn=zu,An.head=qe,An.identity=$u,An.includes=function(n,t,r,e){return n=su(n)?n:Uu(n),r=r&&!e?Eu(r):0,e=n.length,0>r&&(r=Ui(e+r,0)),ju(n)?r<=e&&-1<n.indexOf(t,r):!!e&&-1<v(n,t,r);\n},An.indexOf=function(n,t,r){var e=null==n?0:n.length;return e?(r=null==r?0:Eu(r),0>r&&(r=Ui(e+r,0)),v(n,t,r)):-1},An.inRange=function(n,t,r){return t=Au(t),r===T?(r=t,t=0):r=Au(r),n=Su(n),n>=Ci(t,r)&&n<Ui(t,r)},An.invoke=kf,An.isArguments=of,An.isArray=ff,An.isArrayBuffer=cf,An.isArrayLike=su,An.isArrayLikeObject=hu,An.isBoolean=function(n){return true===n||false===n||yu(n)&&\"[object Boolean]\"==Ot(n)},An.isBuffer=af,An.isDate=lf,An.isElement=function(n){return yu(n)&&1===n.nodeType&&!xu(n)},An.isEmpty=function(n){\nif(null==n)return true;if(su(n)&&(ff(n)||typeof n==\"string\"||typeof n.splice==\"function\"||af(n)||_f(n)||of(n)))return!n.length;var t=vo(n);if(\"[object Map]\"==t||\"[object Set]\"==t)return!n.size;if(ze(n))return!Vt(n).length;for(var r in n)if(oi.call(n,r))return false;return true},An.isEqual=function(n,t){return Mt(n,t)},An.isEqualWith=function(n,t,r){var e=(r=typeof r==\"function\"?r:T)?r(n,t):T;return e===T?Mt(n,t,T,r):!!e},An.isError=pu,An.isFinite=function(n){return typeof n==\"number\"&&Wi(n)},An.isFunction=_u,\nAn.isInteger=vu,An.isLength=gu,An.isMap=sf,An.isMatch=function(n,t){return n===t||$t(n,t,xe(t))},An.isMatchWith=function(n,t,r){return r=typeof r==\"function\"?r:T,$t(n,t,xe(t),r)},An.isNaN=function(n){return bu(n)&&n!=+n},An.isNative=function(n){if(go(n))throw new Hu(\"Unsupported core-js use. Try https://npms.io/search?q=ponyfill.\");return Ft(n)},An.isNil=function(n){return null==n},An.isNull=function(n){return null===n},An.isNumber=bu,An.isObject=du,An.isObjectLike=yu,An.isPlainObject=xu,An.isRegExp=hf,\nAn.isSafeInteger=function(n){return vu(n)&&-9007199254740991<=n&&9007199254740991>=n},An.isSet=pf,An.isString=ju,An.isSymbol=wu,An.isTypedArray=_f,An.isUndefined=function(n){return n===T},An.isWeakMap=function(n){return yu(n)&&\"[object WeakMap]\"==vo(n)},An.isWeakSet=function(n){return yu(n)&&\"[object WeakSet]\"==Ot(n)},An.join=function(n,t){return null==n?\"\":Bi.call(n,t)},An.kebabCase=Lf,An.last=Ve,An.lastIndexOf=function(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e;if(r!==T&&(u=Eu(r),u=0>u?Ui(e+u,0):Ci(u,e-1)),\nt===t){for(r=u+1;r--&&n[r]!==t;);n=r}else n=_(n,d,u,true);return n},An.lowerCase=Uf,An.lowerFirst=Cf,An.lt=vf,An.lte=gf,An.max=function(n){return n&&n.length?xt(n,$u,It):T},An.maxBy=function(n,t){return n&&n.length?xt(n,ye(t,2),It):T},An.mean=function(n){return y(n,$u)},An.meanBy=function(n,t){return y(n,ye(t,2))},An.min=function(n){return n&&n.length?xt(n,$u,Kt):T},An.minBy=function(n,t){return n&&n.length?xt(n,ye(t,2),Kt):T},An.stubArray=qu,An.stubFalse=Vu,An.stubObject=function(){return{}},An.stubString=function(){\nreturn\"\"},An.stubTrue=function(){return true},An.multiply=rc,An.nth=function(n,t){return n&&n.length?Qt(n,Eu(t)):T},An.noConflict=function(){return $n._===this&&($n._=si),this},An.noop=Pu,An.now=Go,An.pad=function(n,t,r){n=Iu(n);var e=(t=Eu(t))?D(n):0;return!t||e>=t?n:(t=(t-e)/2,ne(Ii(t),r)+n+ne(Oi(t),r))},An.padEnd=function(n,t,r){n=Iu(n);var e=(t=Eu(t))?D(n):0;return t&&e<t?n+ne(t-e,r):n},An.padStart=function(n,t,r){n=Iu(n);var e=(t=Eu(t))?D(n):0;return t&&e<t?ne(t-e,r)+n:n},An.parseInt=function(n,t,r){\nreturn r||null==t?t=0:t&&(t=+t),Mi(Iu(n).replace(on,\"\"),t||0)},An.random=function(n,t,r){if(r&&typeof r!=\"boolean\"&&Oe(n,t,r)&&(t=r=T),r===T&&(typeof t==\"boolean\"?(r=t,t=T):typeof n==\"boolean\"&&(r=n,n=T)),n===T&&t===T?(n=0,t=1):(n=Au(n),t===T?(t=n,n=0):t=Au(t)),n>t){var e=n;n=t,t=e}return r||n%1||t%1?(r=Ti(),Ci(n+r*(t-n+Cn(\"1e-\"+((r+\"\").length-1))),t)):ir(n,t)},An.reduce=function(n,t,r){var e=ff(n)?l:j,u=3>arguments.length;return e(n,ye(t,4),r,u,uo)},An.reduceRight=function(n,t,r){var e=ff(n)?s:j,u=3>arguments.length;\nreturn e(n,ye(t,4),r,u,io)},An.repeat=function(n,t,r){return t=(r?Oe(n,t,r):t===T)?1:Eu(t),or(Iu(n),t)},An.replace=function(){var n=arguments,t=Iu(n[0]);return 3>n.length?t:t.replace(n[1],n[2])},An.result=function(n,t,r){t=Sr(t,n);var e=-1,u=t.length;for(u||(u=1,n=T);++e<u;){var i=null==n?T:n[Me(t[e])];i===T&&(e=u,i=r),n=_u(i)?i.call(n):i}return n},An.round=ec,An.runInContext=x,An.sample=function(n){return(ff(n)?Qn:cr)(n)},An.size=function(n){if(null==n)return 0;if(su(n))return ju(n)?D(n):n.length;\nvar t=vo(n);return\"[object Map]\"==t||\"[object Set]\"==t?n.size:Vt(n).length},An.snakeCase=Df,An.some=function(n,t,r){var e=ff(n)?h:pr;return r&&Oe(n,t,r)&&(t=T),e(n,ye(t,3))},An.sortedIndex=function(n,t){return _r(n,t)},An.sortedIndexBy=function(n,t,r){return vr(n,t,ye(r,2))},An.sortedIndexOf=function(n,t){var r=null==n?0:n.length;if(r){var e=_r(n,t);if(e<r&&lu(n[e],t))return e}return-1},An.sortedLastIndex=function(n,t){return _r(n,t,true)},An.sortedLastIndexBy=function(n,t,r){return vr(n,t,ye(r,2),true);\n},An.sortedLastIndexOf=function(n,t){if(null==n?0:n.length){var r=_r(n,t,true)-1;if(lu(n[r],t))return r}return-1},An.startCase=Mf,An.startsWith=function(n,t,r){return n=Iu(n),r=null==r?0:pt(Eu(r),0,n.length),t=yr(t),n.slice(r,r+t.length)==t},An.subtract=uc,An.sum=function(n){return n&&n.length?m(n,$u):0},An.sumBy=function(n,t){return n&&n.length?m(n,ye(t,2)):0},An.template=function(n,t,r){var e=An.templateSettings;r&&Oe(n,t,r)&&(t=T),n=Iu(n),t=bf({},t,e,ce),r=bf({},t.imports,e.imports,ce);var u,i,o=Wu(r),f=S(r,o),c=0;\nr=t.interpolate||jn;var a=\"__p+='\";r=Xu((t.escape||jn).source+\"|\"+r.source+\"|\"+(r===Q?pn:jn).source+\"|\"+(t.evaluate||jn).source+\"|$\",\"g\");var l=oi.call(t,\"sourceURL\")?\"//# sourceURL=\"+(t.sourceURL+\"\").replace(/[\\r\\n]/g,\" \")+\"\\n\":\"\";if(n.replace(r,function(t,r,e,o,f,l){return e||(e=o),a+=n.slice(c,l).replace(wn,z),r&&(u=true,a+=\"'+__e(\"+r+\")+'\"),f&&(i=true,a+=\"';\"+f+\";\\n__p+='\"),e&&(a+=\"'+((__t=(\"+e+\"))==null?'':__t)+'\"),c=l+t.length,t}),a+=\"';\",(t=oi.call(t,\"variable\")&&t.variable)||(a=\"with(obj){\"+a+\"}\"),\na=(i?a.replace(P,\"\"):a).replace(Z,\"$1\").replace(q,\"$1;\"),a=\"function(\"+(t||\"obj\")+\"){\"+(t?\"\":\"obj||(obj={});\")+\"var __t,__p=''\"+(u?\",__e=_.escape\":\"\")+(i?\",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}\":\";\")+a+\"return __p}\",t=Ff(function(){return Ju(o,l+\"return \"+a).apply(T,f)}),t.source=a,pu(t))throw t;return t},An.times=function(n,t){if(n=Eu(n),1>n||9007199254740991<n)return[];var r=4294967295,e=Ci(n,4294967295);for(t=ye(t),n-=4294967295,e=A(e,t);++r<n;)t(r);return e},An.toFinite=Au,\nAn.toInteger=Eu,An.toLength=ku,An.toLower=function(n){return Iu(n).toLowerCase()},An.toNumber=Su,An.toSafeInteger=function(n){return n?pt(Eu(n),-9007199254740991,9007199254740991):0===n?n:0},An.toString=Iu,An.toUpper=function(n){return Iu(n).toUpperCase()},An.trim=function(n,t,r){return(n=Iu(n))&&(r||t===T)?n.replace(un,\"\"):n&&(t=yr(t))?(n=M(n),r=M(t),t=I(n,r),r=R(n,r)+1,Or(n,t,r).join(\"\")):n},An.trimEnd=function(n,t,r){return(n=Iu(n))&&(r||t===T)?n.replace(fn,\"\"):n&&(t=yr(t))?(n=M(n),t=R(n,M(t))+1,\nOr(n,0,t).join(\"\")):n},An.trimStart=function(n,t,r){return(n=Iu(n))&&(r||t===T)?n.replace(on,\"\"):n&&(t=yr(t))?(n=M(n),t=I(n,M(t)),Or(n,t).join(\"\")):n},An.truncate=function(n,t){var r=30,e=\"...\";if(du(t))var u=\"separator\"in t?t.separator:u,r=\"length\"in t?Eu(t.length):r,e=\"omission\"in t?yr(t.omission):e;n=Iu(n);var i=n.length;if(Rn.test(n))var o=M(n),i=o.length;if(r>=i)return n;if(i=r-D(e),1>i)return e;if(r=o?Or(o,0,i).join(\"\"):n.slice(0,i),u===T)return r+e;if(o&&(i+=r.length-i),hf(u)){if(n.slice(i).search(u)){\nvar f=r;for(u.global||(u=Xu(u.source,Iu(_n.exec(u))+\"g\")),u.lastIndex=0;o=u.exec(f);)var c=o.index;r=r.slice(0,c===T?i:c)}}else n.indexOf(yr(u),i)!=i&&(u=r.lastIndexOf(u),-1<u&&(r=r.slice(0,u)));return r+e},An.unescape=function(n){return(n=Iu(n))&&G.test(n)?n.replace(V,tt):n},An.uniqueId=function(n){var t=++fi;return Iu(n)+t},An.upperCase=Tf,An.upperFirst=$f,An.each=nu,An.eachRight=tu,An.first=qe,Nu(An,function(){var n={};return mt(An,function(t,r){oi.call(An.prototype,r)||(n[r]=t)}),n}(),{chain:false\n}),An.VERSION=\"4.17.15\",r(\"bind bindKey curry curryRight partial partialRight\".split(\" \"),function(n){An[n].placeholder=An}),r([\"drop\",\"take\"],function(n,t){Un.prototype[n]=function(r){r=r===T?1:Ui(Eu(r),0);var e=this.__filtered__&&!t?new Un(this):this.clone();return e.__filtered__?e.__takeCount__=Ci(r,e.__takeCount__):e.__views__.push({size:Ci(r,4294967295),type:n+(0>e.__dir__?\"Right\":\"\")}),e},Un.prototype[n+\"Right\"]=function(t){return this.reverse()[n](t).reverse()}}),r([\"filter\",\"map\",\"takeWhile\"],function(n,t){\nvar r=t+1,e=1==r||3==r;Un.prototype[n]=function(n){var t=this.clone();return t.__iteratees__.push({iteratee:ye(n,3),type:r}),t.__filtered__=t.__filtered__||e,t}}),r([\"head\",\"last\"],function(n,t){var r=\"take\"+(t?\"Right\":\"\");Un.prototype[n]=function(){return this[r](1).value()[0]}}),r([\"initial\",\"tail\"],function(n,t){var r=\"drop\"+(t?\"\":\"Right\");Un.prototype[n]=function(){return this.__filtered__?new Un(this):this[r](1)}}),Un.prototype.compact=function(){return this.filter($u)},Un.prototype.find=function(n){\nreturn this.filter(n).head()},Un.prototype.findLast=function(n){return this.reverse().find(n)},Un.prototype.invokeMap=fr(function(n,t){return typeof n==\"function\"?new Un(this):this.map(function(r){return Lt(r,n,t)})}),Un.prototype.reject=function(n){return this.filter(au(ye(n)))},Un.prototype.slice=function(n,t){n=Eu(n);var r=this;return r.__filtered__&&(0<n||0>t)?new Un(r):(0>n?r=r.takeRight(-n):n&&(r=r.drop(n)),t!==T&&(t=Eu(t),r=0>t?r.dropRight(-t):r.take(t-n)),r)},Un.prototype.takeRightWhile=function(n){\nreturn this.reverse().takeWhile(n).reverse()},Un.prototype.toArray=function(){return this.take(4294967295)},mt(Un.prototype,function(n,t){var r=/^(?:filter|find|map|reject)|While$/.test(t),e=/^(?:head|last)$/.test(t),u=An[e?\"take\"+(\"last\"==t?\"Right\":\"\"):t],i=e||/^find/.test(t);u&&(An.prototype[t]=function(){function t(n){return n=u.apply(An,a([n],f)),e&&h?n[0]:n}var o=this.__wrapped__,f=e?[1]:arguments,c=o instanceof Un,l=f[0],s=c||ff(o);s&&r&&typeof l==\"function\"&&1!=l.length&&(c=s=false);var h=this.__chain__,p=!!this.__actions__.length,l=i&&!h,c=c&&!p;\nreturn!i&&s?(o=c?o:new Un(this),o=n.apply(o,f),o.__actions__.push({func:Qe,args:[t],thisArg:T}),new On(o,h)):l&&c?n.apply(this,f):(o=this.thru(t),l?e?o.value()[0]:o.value():o)})}),r(\"pop push shift sort splice unshift\".split(\" \"),function(n){var t=ri[n],r=/^(?:push|sort|unshift)$/.test(n)?\"tap\":\"thru\",e=/^(?:pop|shift)$/.test(n);An.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){var u=this.value();return t.apply(ff(u)?u:[],n)}return this[r](function(r){return t.apply(ff(r)?r:[],n)});\n}}),mt(Un.prototype,function(n,t){var r=An[t];if(r){var e=r.name+\"\";oi.call(Gi,e)||(Gi[e]=[]),Gi[e].push({name:t,func:r})}}),Gi[Jr(T,2).name]=[{name:\"wrapper\",func:T}],Un.prototype.clone=function(){var n=new Un(this.__wrapped__);return n.__actions__=Ur(this.__actions__),n.__dir__=this.__dir__,n.__filtered__=this.__filtered__,n.__iteratees__=Ur(this.__iteratees__),n.__takeCount__=this.__takeCount__,n.__views__=Ur(this.__views__),n},Un.prototype.reverse=function(){if(this.__filtered__){var n=new Un(this);\nn.__dir__=-1,n.__filtered__=true}else n=this.clone(),n.__dir__*=-1;return n},Un.prototype.value=function(){var n,t=this.__wrapped__.value(),r=this.__dir__,e=ff(t),u=0>r,i=e?t.length:0;n=i;for(var o=this.__views__,f=0,c=-1,a=o.length;++c<a;){var l=o[c],s=l.size;switch(l.type){case\"drop\":f+=s;break;case\"dropRight\":n-=s;break;case\"take\":n=Ci(n,f+s);break;case\"takeRight\":f=Ui(f,n-s)}}if(n={start:f,end:n},o=n.start,f=n.end,n=f-o,o=u?f:o-1,f=this.__iteratees__,c=f.length,a=0,l=Ci(n,this.__takeCount__),!e||!u&&i==n&&l==n)return wr(t,this.__actions__);\ne=[];n:for(;n--&&a<l;){for(o+=r,u=-1,i=t[o];++u<c;){var h=f[u],s=h.type,h=(0,h.iteratee)(i);if(2==s)i=h;else if(!h){if(1==s)continue n;break n}}e[a++]=i}return e},An.prototype.at=To,An.prototype.chain=function(){return Ye(this)},An.prototype.commit=function(){return new On(this.value(),this.__chain__)},An.prototype.next=function(){this.__values__===T&&(this.__values__=mu(this.value()));var n=this.__index__>=this.__values__.length;return{done:n,value:n?T:this.__values__[this.__index__++]}},An.prototype.plant=function(n){\nfor(var t,r=this;r instanceof En;){var e=Fe(r);e.__index__=0,e.__values__=T,t?u.__wrapped__=e:t=e;var u=e,r=r.__wrapped__}return u.__wrapped__=n,t},An.prototype.reverse=function(){var n=this.__wrapped__;return n instanceof Un?(this.__actions__.length&&(n=new Un(this)),n=n.reverse(),n.__actions__.push({func:Qe,args:[Ge],thisArg:T}),new On(n,this.__chain__)):this.thru(Ge)},An.prototype.toJSON=An.prototype.valueOf=An.prototype.value=function(){return wr(this.__wrapped__,this.__actions__)},An.prototype.first=An.prototype.head,\nwi&&(An.prototype[wi]=Xe),An}();typeof define==\"function\"&&typeof define.amd==\"object\"&&define.amd?($n._=rt, define(function(){return rt})):Nn?((Nn.exports=rt)._=rt,Fn._=rt):$n._=rt}).call(this);","/** Used to map aliases to their real names. */\nexports.aliasToReal = {\n\n // Lodash aliases.\n 'each': 'forEach',\n 'eachRight': 'forEachRight',\n 'entries': 'toPairs',\n 'entriesIn': 'toPairsIn',\n 'extend': 'assignIn',\n 'extendAll': 'assignInAll',\n 'extendAllWith': 'assignInAllWith',\n 'extendWith': 'assignInWith',\n 'first': 'head',\n\n // Methods that are curried variants of others.\n 'conforms': 'conformsTo',\n 'matches': 'isMatch',\n 'property': 'get',\n\n // Ramda aliases.\n '__': 'placeholder',\n 'F': 'stubFalse',\n 'T': 'stubTrue',\n 'all': 'every',\n 'allPass': 'overEvery',\n 'always': 'constant',\n 'any': 'some',\n 'anyPass': 'overSome',\n 'apply': 'spread',\n 'assoc': 'set',\n 'assocPath': 'set',\n 'complement': 'negate',\n 'compose': 'flowRight',\n 'contains': 'includes',\n 'dissoc': 'unset',\n 'dissocPath': 'unset',\n 'dropLast': 'dropRight',\n 'dropLastWhile': 'dropRightWhile',\n 'equals': 'isEqual',\n 'identical': 'eq',\n 'indexBy': 'keyBy',\n 'init': 'initial',\n 'invertObj': 'invert',\n 'juxt': 'over',\n 'omitAll': 'omit',\n 'nAry': 'ary',\n 'path': 'get',\n 'pathEq': 'matchesProperty',\n 'pathOr': 'getOr',\n 'paths': 'at',\n 'pickAll': 'pick',\n 'pipe': 'flow',\n 'pluck': 'map',\n 'prop': 'get',\n 'propEq': 'matchesProperty',\n 'propOr': 'getOr',\n 'props': 'at',\n 'symmetricDifference': 'xor',\n 'symmetricDifferenceBy': 'xorBy',\n 'symmetricDifferenceWith': 'xorWith',\n 'takeLast': 'takeRight',\n 'takeLastWhile': 'takeRightWhile',\n 'unapply': 'rest',\n 'unnest': 'flatten',\n 'useWith': 'overArgs',\n 'where': 'conformsTo',\n 'whereEq': 'isMatch',\n 'zipObj': 'zipObject'\n};\n\n/** Used to map ary to method names. */\nexports.aryMethod = {\n '1': [\n 'assignAll', 'assignInAll', 'attempt', 'castArray', 'ceil', 'create',\n 'curry', 'curryRight', 'defaultsAll', 'defaultsDeepAll', 'floor', 'flow',\n 'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', 'mergeAll',\n 'methodOf', 'mixin', 'nthArg', 'over', 'overEvery', 'overSome','rest', 'reverse',\n 'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', 'trimStart',\n 'uniqueId', 'words', 'zipAll'\n ],\n '2': [\n 'add', 'after', 'ary', 'assign', 'assignAllWith', 'assignIn', 'assignInAllWith',\n 'at', 'before', 'bind', 'bindAll', 'bindKey', 'chunk', 'cloneDeepWith',\n 'cloneWith', 'concat', 'conformsTo', 'countBy', 'curryN', 'curryRightN',\n 'debounce', 'defaults', 'defaultsDeep', 'defaultTo', 'delay', 'difference',\n 'divide', 'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq',\n 'every', 'filter', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex',\n 'findLastKey', 'flatMap', 'flatMapDeep', 'flattenDepth', 'forEach',\n 'forEachRight', 'forIn', 'forInRight', 'forOwn', 'forOwnRight', 'get',\n 'groupBy', 'gt', 'gte', 'has', 'hasIn', 'includes', 'indexOf', 'intersection',\n 'invertBy', 'invoke', 'invokeMap', 'isEqual', 'isMatch', 'join', 'keyBy',\n 'lastIndexOf', 'lt', 'lte', 'map', 'mapKeys', 'mapValues', 'matchesProperty',\n 'maxBy', 'meanBy', 'merge', 'mergeAllWith', 'minBy', 'multiply', 'nth', 'omit',\n 'omitBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt', 'partial',\n 'partialRight', 'partition', 'pick', 'pickBy', 'propertyOf', 'pull', 'pullAll',\n 'pullAt', 'random', 'range', 'rangeRight', 'rearg', 'reject', 'remove',\n 'repeat', 'restFrom', 'result', 'sampleSize', 'some', 'sortBy', 'sortedIndex',\n 'sortedIndexOf', 'sortedLastIndex', 'sortedLastIndexOf', 'sortedUniqBy',\n 'split', 'spreadFrom', 'startsWith', 'subtract', 'sumBy', 'take', 'takeRight',\n 'takeRightWhile', 'takeWhile', 'tap', 'throttle', 'thru', 'times', 'trimChars',\n 'trimCharsEnd', 'trimCharsStart', 'truncate', 'union', 'uniqBy', 'uniqWith',\n 'unset', 'unzipWith', 'without', 'wrap', 'xor', 'zip', 'zipObject',\n 'zipObjectDeep'\n ],\n '3': [\n 'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith',\n 'findFrom', 'findIndexFrom', 'findLastFrom', 'findLastIndexFrom', 'getOr',\n 'includesFrom', 'indexOfFrom', 'inRange', 'intersectionBy', 'intersectionWith',\n 'invokeArgs', 'invokeArgsMap', 'isEqualWith', 'isMatchWith', 'flatMapDepth',\n 'lastIndexOfFrom', 'mergeWith', 'orderBy', 'padChars', 'padCharsEnd',\n 'padCharsStart', 'pullAllBy', 'pullAllWith', 'rangeStep', 'rangeStepRight',\n 'reduce', 'reduceRight', 'replace', 'set', 'slice', 'sortedIndexBy',\n 'sortedLastIndexBy', 'transform', 'unionBy', 'unionWith', 'update', 'xorBy',\n 'xorWith', 'zipWith'\n ],\n '4': [\n 'fill', 'setWith', 'updateWith'\n ]\n};\n\n/** Used to map ary to rearg configs. */\nexports.aryRearg = {\n '2': [1, 0],\n '3': [2, 0, 1],\n '4': [3, 2, 0, 1]\n};\n\n/** Used to map method names to their iteratee ary. */\nexports.iterateeAry = {\n 'dropRightWhile': 1,\n 'dropWhile': 1,\n 'every': 1,\n 'filter': 1,\n 'find': 1,\n 'findFrom': 1,\n 'findIndex': 1,\n 'findIndexFrom': 1,\n 'findKey': 1,\n 'findLast': 1,\n 'findLastFrom': 1,\n 'findLastIndex': 1,\n 'findLastIndexFrom': 1,\n 'findLastKey': 1,\n 'flatMap': 1,\n 'flatMapDeep': 1,\n 'flatMapDepth': 1,\n 'forEach': 1,\n 'forEachRight': 1,\n 'forIn': 1,\n 'forInRight': 1,\n 'forOwn': 1,\n 'forOwnRight': 1,\n 'map': 1,\n 'mapKeys': 1,\n 'mapValues': 1,\n 'partition': 1,\n 'reduce': 2,\n 'reduceRight': 2,\n 'reject': 1,\n 'remove': 1,\n 'some': 1,\n 'takeRightWhile': 1,\n 'takeWhile': 1,\n 'times': 1,\n 'transform': 2\n};\n\n/** Used to map method names to iteratee rearg configs. */\nexports.iterateeRearg = {\n 'mapKeys': [1],\n 'reduceRight': [1, 0]\n};\n\n/** Used to map method names to rearg configs. */\nexports.methodRearg = {\n 'assignInAllWith': [1, 0],\n 'assignInWith': [1, 2, 0],\n 'assignAllWith': [1, 0],\n 'assignWith': [1, 2, 0],\n 'differenceBy': [1, 2, 0],\n 'differenceWith': [1, 2, 0],\n 'getOr': [2, 1, 0],\n 'intersectionBy': [1, 2, 0],\n 'intersectionWith': [1, 2, 0],\n 'isEqualWith': [1, 2, 0],\n 'isMatchWith': [2, 1, 0],\n 'mergeAllWith': [1, 0],\n 'mergeWith': [1, 2, 0],\n 'padChars': [2, 1, 0],\n 'padCharsEnd': [2, 1, 0],\n 'padCharsStart': [2, 1, 0],\n 'pullAllBy': [2, 1, 0],\n 'pullAllWith': [2, 1, 0],\n 'rangeStep': [1, 2, 0],\n 'rangeStepRight': [1, 2, 0],\n 'setWith': [3, 1, 2, 0],\n 'sortedIndexBy': [2, 1, 0],\n 'sortedLastIndexBy': [2, 1, 0],\n 'unionBy': [1, 2, 0],\n 'unionWith': [1, 2, 0],\n 'updateWith': [3, 1, 2, 0],\n 'xorBy': [1, 2, 0],\n 'xorWith': [1, 2, 0],\n 'zipWith': [1, 2, 0]\n};\n\n/** Used to map method names to spread configs. */\nexports.methodSpread = {\n 'assignAll': { 'start': 0 },\n 'assignAllWith': { 'start': 0 },\n 'assignInAll': { 'start': 0 },\n 'assignInAllWith': { 'start': 0 },\n 'defaultsAll': { 'start': 0 },\n 'defaultsDeepAll': { 'start': 0 },\n 'invokeArgs': { 'start': 2 },\n 'invokeArgsMap': { 'start': 2 },\n 'mergeAll': { 'start': 0 },\n 'mergeAllWith': { 'start': 0 },\n 'partial': { 'start': 1 },\n 'partialRight': { 'start': 1 },\n 'without': { 'start': 1 },\n 'zipAll': { 'start': 0 }\n};\n\n/** Used to identify methods which mutate arrays or objects. */\nexports.mutate = {\n 'array': {\n 'fill': true,\n 'pull': true,\n 'pullAll': true,\n 'pullAllBy': true,\n 'pullAllWith': true,\n 'pullAt': true,\n 'remove': true,\n 'reverse': true\n },\n 'object': {\n 'assign': true,\n 'assignAll': true,\n 'assignAllWith': true,\n 'assignIn': true,\n 'assignInAll': true,\n 'assignInAllWith': true,\n 'assignInWith': true,\n 'assignWith': true,\n 'defaults': true,\n 'defaultsAll': true,\n 'defaultsDeep': true,\n 'defaultsDeepAll': true,\n 'merge': true,\n 'mergeAll': true,\n 'mergeAllWith': true,\n 'mergeWith': true,\n },\n 'set': {\n 'set': true,\n 'setWith': true,\n 'unset': true,\n 'update': true,\n 'updateWith': true\n }\n};\n\n/** Used to map real names to their aliases. */\nexports.realToAlias = (function() {\n var hasOwnProperty = Object.prototype.hasOwnProperty,\n object = exports.aliasToReal,\n result = {};\n\n for (var key in object) {\n var value = object[key];\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }\n return result;\n}());\n\n/** Used to map method names to other names. */\nexports.remap = {\n 'assignAll': 'assign',\n 'assignAllWith': 'assignWith',\n 'assignInAll': 'assignIn',\n 'assignInAllWith': 'assignInWith',\n 'curryN': 'curry',\n 'curryRightN': 'curryRight',\n 'defaultsAll': 'defaults',\n 'defaultsDeepAll': 'defaultsDeep',\n 'findFrom': 'find',\n 'findIndexFrom': 'findIndex',\n 'findLastFrom': 'findLast',\n 'findLastIndexFrom': 'findLastIndex',\n 'getOr': 'get',\n 'includesFrom': 'includes',\n 'indexOfFrom': 'indexOf',\n 'invokeArgs': 'invoke',\n 'invokeArgsMap': 'invokeMap',\n 'lastIndexOfFrom': 'lastIndexOf',\n 'mergeAll': 'merge',\n 'mergeAllWith': 'mergeWith',\n 'padChars': 'pad',\n 'padCharsEnd': 'padEnd',\n 'padCharsStart': 'padStart',\n 'propertyOf': 'get',\n 'rangeStep': 'range',\n 'rangeStepRight': 'rangeRight',\n 'restFrom': 'rest',\n 'spreadFrom': 'spread',\n 'trimChars': 'trim',\n 'trimCharsEnd': 'trimEnd',\n 'trimCharsStart': 'trimStart',\n 'zipAll': 'zip'\n};\n\n/** Used to track methods that skip fixing their arity. */\nexports.skipFixed = {\n 'castArray': true,\n 'flow': true,\n 'flowRight': true,\n 'iteratee': true,\n 'mixin': true,\n 'rearg': true,\n 'runInContext': true\n};\n\n/** Used to track methods that skip rearranging arguments. */\nexports.skipRearg = {\n 'add': true,\n 'assign': true,\n 'assignIn': true,\n 'bind': true,\n 'bindKey': true,\n 'concat': true,\n 'difference': true,\n 'divide': true,\n 'eq': true,\n 'gt': true,\n 'gte': true,\n 'isEqual': true,\n 'lt': true,\n 'lte': true,\n 'matchesProperty': true,\n 'merge': true,\n 'multiply': true,\n 'overArgs': true,\n 'partial': true,\n 'partialRight': true,\n 'propertyOf': true,\n 'random': true,\n 'range': true,\n 'rangeRight': true,\n 'subtract': true,\n 'zip': true,\n 'zipObject': true,\n 'zipObjectDeep': true\n};\n","/**\n * The default argument placeholder value for methods.\n *\n * @type {Object}\n */\nmodule.exports = {};\n","var mapping = require('./_mapping'),\n fallbackHolder = require('./placeholder');\n\n/** Built-in value reference. */\nvar push = Array.prototype.push;\n\n/**\n * Creates a function, with an arity of `n`, that invokes `func` with the\n * arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} n The arity of the new function.\n * @returns {Function} Returns the new function.\n */\nfunction baseArity(func, n) {\n return n == 2\n ? function(a, b) { return func.apply(undefined, arguments); }\n : function(a) { return func.apply(undefined, arguments); };\n}\n\n/**\n * Creates a function that invokes `func`, with up to `n` arguments, ignoring\n * any additional arguments.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the new function.\n */\nfunction baseAry(func, n) {\n return n == 2\n ? function(a, b) { return func(a, b); }\n : function(a) { return func(a); };\n}\n\n/**\n * Creates a clone of `array`.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the cloned array.\n */\nfunction cloneArray(array) {\n var length = array ? array.length : 0,\n result = Array(length);\n\n while (length--) {\n result[length] = array[length];\n }\n return result;\n}\n\n/**\n * Creates a function that clones a given object using the assignment `func`.\n *\n * @private\n * @param {Function} func The assignment function.\n * @returns {Function} Returns the new cloner function.\n */\nfunction createCloner(func) {\n return function(object) {\n return func({}, object);\n };\n}\n\n/**\n * A specialized version of `_.spread` which flattens the spread array into\n * the arguments of the invoked `func`.\n *\n * @private\n * @param {Function} func The function to spread arguments over.\n * @param {number} start The start position of the spread.\n * @returns {Function} Returns the new function.\n */\nfunction flatSpread(func, start) {\n return function() {\n var length = arguments.length,\n lastIndex = length - 1,\n args = Array(length);\n\n while (length--) {\n args[length] = arguments[length];\n }\n var array = args[start],\n otherArgs = args.slice(0, start);\n\n if (array) {\n push.apply(otherArgs, array);\n }\n if (start != lastIndex) {\n push.apply(otherArgs, args.slice(start + 1));\n }\n return func.apply(this, otherArgs);\n };\n}\n\n/**\n * Creates a function that wraps `func` and uses `cloner` to clone the first\n * argument it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} cloner The function to clone arguments.\n * @returns {Function} Returns the new immutable function.\n */\nfunction wrapImmutable(func, cloner) {\n return function() {\n var length = arguments.length;\n if (!length) {\n return;\n }\n var args = Array(length);\n while (length--) {\n args[length] = arguments[length];\n }\n var result = args[0] = cloner.apply(undefined, args);\n func.apply(undefined, args);\n return result;\n };\n}\n\n/**\n * The base implementation of `convert` which accepts a `util` object of methods\n * required to perform conversions.\n *\n * @param {Object} util The util object.\n * @param {string} name The name of the function to convert.\n * @param {Function} func The function to convert.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.cap=true] Specify capping iteratee arguments.\n * @param {boolean} [options.curry=true] Specify currying.\n * @param {boolean} [options.fixed=true] Specify fixed arity.\n * @param {boolean} [options.immutable=true] Specify immutable operations.\n * @param {boolean} [options.rearg=true] Specify rearranging arguments.\n * @returns {Function|Object} Returns the converted function or object.\n */\nfunction baseConvert(util, name, func, options) {\n var isLib = typeof name == 'function',\n isObj = name === Object(name);\n\n if (isObj) {\n options = func;\n func = name;\n name = undefined;\n }\n if (func == null) {\n throw new TypeError;\n }\n options || (options = {});\n\n var config = {\n 'cap': 'cap' in options ? options.cap : true,\n 'curry': 'curry' in options ? options.curry : true,\n 'fixed': 'fixed' in options ? options.fixed : true,\n 'immutable': 'immutable' in options ? options.immutable : true,\n 'rearg': 'rearg' in options ? options.rearg : true\n };\n\n var defaultHolder = isLib ? func : fallbackHolder,\n forceCurry = ('curry' in options) && options.curry,\n forceFixed = ('fixed' in options) && options.fixed,\n forceRearg = ('rearg' in options) && options.rearg,\n pristine = isLib ? func.runInContext() : undefined;\n\n var helpers = isLib ? func : {\n 'ary': util.ary,\n 'assign': util.assign,\n 'clone': util.clone,\n 'curry': util.curry,\n 'forEach': util.forEach,\n 'isArray': util.isArray,\n 'isError': util.isError,\n 'isFunction': util.isFunction,\n 'isWeakMap': util.isWeakMap,\n 'iteratee': util.iteratee,\n 'keys': util.keys,\n 'rearg': util.rearg,\n 'toInteger': util.toInteger,\n 'toPath': util.toPath\n };\n\n var ary = helpers.ary,\n assign = helpers.assign,\n clone = helpers.clone,\n curry = helpers.curry,\n each = helpers.forEach,\n isArray = helpers.isArray,\n isError = helpers.isError,\n isFunction = helpers.isFunction,\n isWeakMap = helpers.isWeakMap,\n keys = helpers.keys,\n rearg = helpers.rearg,\n toInteger = helpers.toInteger,\n toPath = helpers.toPath;\n\n var aryMethodKeys = keys(mapping.aryMethod);\n\n var wrappers = {\n 'castArray': function(castArray) {\n return function() {\n var value = arguments[0];\n return isArray(value)\n ? castArray(cloneArray(value))\n : castArray.apply(undefined, arguments);\n };\n },\n 'iteratee': function(iteratee) {\n return function() {\n var func = arguments[0],\n arity = arguments[1],\n result = iteratee(func, arity),\n length = result.length;\n\n if (config.cap && typeof arity == 'number') {\n arity = arity > 2 ? (arity - 2) : 1;\n return (length && length <= arity) ? result : baseAry(result, arity);\n }\n return result;\n };\n },\n 'mixin': function(mixin) {\n return function(source) {\n var func = this;\n if (!isFunction(func)) {\n return mixin(func, Object(source));\n }\n var pairs = [];\n each(keys(source), function(key) {\n if (isFunction(source[key])) {\n pairs.push([key, func.prototype[key]]);\n }\n });\n\n mixin(func, Object(source));\n\n each(pairs, function(pair) {\n var value = pair[1];\n if (isFunction(value)) {\n func.prototype[pair[0]] = value;\n } else {\n delete func.prototype[pair[0]];\n }\n });\n return func;\n };\n },\n 'nthArg': function(nthArg) {\n return function(n) {\n var arity = n < 0 ? 1 : (toInteger(n) + 1);\n return curry(nthArg(n), arity);\n };\n },\n 'rearg': function(rearg) {\n return function(func, indexes) {\n var arity = indexes ? indexes.length : 0;\n return curry(rearg(func, indexes), arity);\n };\n },\n 'runInContext': function(runInContext) {\n return function(context) {\n return baseConvert(util, runInContext(context), options);\n };\n }\n };\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Casts `func` to a function with an arity capped iteratee if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @returns {Function} Returns the cast function.\n */\n function castCap(name, func) {\n if (config.cap) {\n var indexes = mapping.iterateeRearg[name];\n if (indexes) {\n return iterateeRearg(func, indexes);\n }\n var n = !isLib && mapping.iterateeAry[name];\n if (n) {\n return iterateeAry(func, n);\n }\n }\n return func;\n }\n\n /**\n * Casts `func` to a curried function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity of `func`.\n * @returns {Function} Returns the cast function.\n */\n function castCurry(name, func, n) {\n return (forceCurry || (config.curry && n > 1))\n ? curry(func, n)\n : func;\n }\n\n /**\n * Casts `func` to a fixed arity function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the cast function.\n */\n function castFixed(name, func, n) {\n if (config.fixed && (forceFixed || !mapping.skipFixed[name])) {\n var data = mapping.methodSpread[name],\n start = data && data.start;\n\n return start === undefined ? ary(func, n) : flatSpread(func, start);\n }\n return func;\n }\n\n /**\n * Casts `func` to an rearged function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity of `func`.\n * @returns {Function} Returns the cast function.\n */\n function castRearg(name, func, n) {\n return (config.rearg && n > 1 && (forceRearg || !mapping.skipRearg[name]))\n ? rearg(func, mapping.methodRearg[name] || mapping.aryRearg[n])\n : func;\n }\n\n /**\n * Creates a clone of `object` by `path`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {Array|string} path The path to clone by.\n * @returns {Object} Returns the cloned object.\n */\n function cloneByPath(object, path) {\n path = toPath(path);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n result = clone(Object(object)),\n nested = result;\n\n while (nested != null && ++index < length) {\n var key = path[index],\n value = nested[key];\n\n if (value != null &&\n !(isFunction(value) || isError(value) || isWeakMap(value))) {\n nested[key] = clone(index == lastIndex ? value : Object(value));\n }\n nested = nested[key];\n }\n return result;\n }\n\n /**\n * Converts `lodash` to an immutable auto-curried iteratee-first data-last\n * version with conversion `options` applied.\n *\n * @param {Object} [options] The options object. See `baseConvert` for more details.\n * @returns {Function} Returns the converted `lodash`.\n */\n function convertLib(options) {\n return _.runInContext.convert(options)(undefined);\n }\n\n /**\n * Create a converter function for `func` of `name`.\n *\n * @param {string} name The name of the function to convert.\n * @param {Function} func The function to convert.\n * @returns {Function} Returns the new converter function.\n */\n function createConverter(name, func) {\n var realName = mapping.aliasToReal[name] || name,\n methodName = mapping.remap[realName] || realName,\n oldOptions = options;\n\n return function(options) {\n var newUtil = isLib ? pristine : helpers,\n newFunc = isLib ? pristine[methodName] : func,\n newOptions = assign(assign({}, oldOptions), options);\n\n return baseConvert(newUtil, realName, newFunc, newOptions);\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke its iteratee, with up to `n`\n * arguments, ignoring any additional arguments.\n *\n * @private\n * @param {Function} func The function to cap iteratee arguments for.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the new function.\n */\n function iterateeAry(func, n) {\n return overArg(func, function(func) {\n return typeof func == 'function' ? baseAry(func, n) : func;\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke its iteratee with arguments\n * arranged according to the specified `indexes` where the argument value at\n * the first index is provided as the first argument, the argument value at\n * the second index is provided as the second argument, and so on.\n *\n * @private\n * @param {Function} func The function to rearrange iteratee arguments for.\n * @param {number[]} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n */\n function iterateeRearg(func, indexes) {\n return overArg(func, function(func) {\n var n = indexes.length;\n return baseArity(rearg(baseAry(func, n), indexes), n);\n });\n }\n\n /**\n * Creates a function that invokes `func` with its first argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function() {\n var length = arguments.length;\n if (!length) {\n return func();\n }\n var args = Array(length);\n while (length--) {\n args[length] = arguments[length];\n }\n var index = config.rearg ? 0 : (length - 1);\n args[index] = transform(args[index]);\n return func.apply(undefined, args);\n };\n }\n\n /**\n * Creates a function that wraps `func` and applys the conversions\n * rules by `name`.\n *\n * @private\n * @param {string} name The name of the function to wrap.\n * @param {Function} func The function to wrap.\n * @returns {Function} Returns the converted function.\n */\n function wrap(name, func, placeholder) {\n var result,\n realName = mapping.aliasToReal[name] || name,\n wrapped = func,\n wrapper = wrappers[realName];\n\n if (wrapper) {\n wrapped = wrapper(func);\n }\n else if (config.immutable) {\n if (mapping.mutate.array[realName]) {\n wrapped = wrapImmutable(func, cloneArray);\n }\n else if (mapping.mutate.object[realName]) {\n wrapped = wrapImmutable(func, createCloner(func));\n }\n else if (mapping.mutate.set[realName]) {\n wrapped = wrapImmutable(func, cloneByPath);\n }\n }\n each(aryMethodKeys, function(aryKey) {\n each(mapping.aryMethod[aryKey], function(otherName) {\n if (realName == otherName) {\n var data = mapping.methodSpread[realName],\n afterRearg = data && data.afterRearg;\n\n result = afterRearg\n ? castFixed(realName, castRearg(realName, wrapped, aryKey), aryKey)\n : castRearg(realName, castFixed(realName, wrapped, aryKey), aryKey);\n\n result = castCap(realName, result);\n result = castCurry(realName, result, aryKey);\n return false;\n }\n });\n return !result;\n });\n\n result || (result = wrapped);\n if (result == func) {\n result = forceCurry ? curry(result, 1) : function() {\n return func.apply(this, arguments);\n };\n }\n result.convert = createConverter(realName, func);\n result.placeholder = func.placeholder = placeholder;\n\n return result;\n }\n\n /*--------------------------------------------------------------------------*/\n\n if (!isObj) {\n return wrap(name, func, defaultHolder);\n }\n var _ = func;\n\n // Convert methods by ary cap.\n var pairs = [];\n each(aryMethodKeys, function(aryKey) {\n each(mapping.aryMethod[aryKey], function(key) {\n var func = _[mapping.remap[key] || key];\n if (func) {\n pairs.push([key, wrap(key, func, _)]);\n }\n });\n });\n\n // Convert remaining methods.\n each(keys(_), function(key) {\n var func = _[key];\n if (typeof func == 'function') {\n var length = pairs.length;\n while (length--) {\n if (pairs[length][0] == key) {\n return;\n }\n }\n func.convert = createConverter(key, func);\n pairs.push([key, func]);\n }\n });\n\n // Assign to `_` leaving `_.prototype` unchanged to allow chaining.\n each(pairs, function(pair) {\n _[pair[0]] = pair[1];\n });\n\n _.convert = convertLib;\n _.placeholder = _;\n\n // Assign aliases.\n each(keys(_), function(key) {\n each(mapping.realToAlias[key] || [], function(alias) {\n _[alias] = _[key];\n });\n });\n\n return _;\n}\n\nmodule.exports = baseConvert;\n","var _ = require('./lodash.min').runInContext();\nmodule.exports = require('./fp/_baseConvert')(_, _);\n","'use strict';\n\n// Found this seed-based random generator somewhere\n// Based on The Central Randomizer 1.3 (C) 1997 by Paul Houle (houle@msc.cornell.edu)\n\nvar seed = 1;\n\n/**\n * return a random number based on a seed\n * @param seed\n * @returns {number}\n */\nfunction getNextValue() {\n seed = (seed * 9301 + 49297) % 233280;\n return seed/(233280.0);\n}\n\nfunction setSeed(_seed_) {\n seed = _seed_;\n}\n\nmodule.exports = {\n nextValue: getNextValue,\n seed: setSeed\n};\n","'use strict';\n\nvar randomFromSeed = require('./random/random-from-seed');\n\nvar ORIGINAL = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-';\nvar alphabet;\nvar previousSeed;\n\nvar shuffled;\n\nfunction reset() {\n shuffled = false;\n}\n\nfunction setCharacters(_alphabet_) {\n if (!_alphabet_) {\n if (alphabet !== ORIGINAL) {\n alphabet = ORIGINAL;\n reset();\n }\n return;\n }\n\n if (_alphabet_ === alphabet) {\n return;\n }\n\n if (_alphabet_.length !== ORIGINAL.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. You submitted ' + _alphabet_.length + ' characters: ' + _alphabet_);\n }\n\n var unique = _alphabet_.split('').filter(function(item, ind, arr){\n return ind !== arr.lastIndexOf(item);\n });\n\n if (unique.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. These characters were not unique: ' + unique.join(', '));\n }\n\n alphabet = _alphabet_;\n reset();\n}\n\nfunction characters(_alphabet_) {\n setCharacters(_alphabet_);\n return alphabet;\n}\n\nfunction setSeed(seed) {\n randomFromSeed.seed(seed);\n if (previousSeed !== seed) {\n reset();\n previousSeed = seed;\n }\n}\n\nfunction shuffle() {\n if (!alphabet) {\n setCharacters(ORIGINAL);\n }\n\n var sourceArray = alphabet.split('');\n var targetArray = [];\n var r = randomFromSeed.nextValue();\n var characterIndex;\n\n while (sourceArray.length > 0) {\n r = randomFromSeed.nextValue();\n characterIndex = Math.floor(r * sourceArray.length);\n targetArray.push(sourceArray.splice(characterIndex, 1)[0]);\n }\n return targetArray.join('');\n}\n\nfunction getShuffled() {\n if (shuffled) {\n return shuffled;\n }\n shuffled = shuffle();\n return shuffled;\n}\n\n/**\n * lookup shuffled letter\n * @param index\n * @returns {string}\n */\nfunction lookup(index) {\n var alphabetShuffled = getShuffled();\n return alphabetShuffled[index];\n}\n\nfunction get () {\n return alphabet || ORIGINAL;\n}\n\nmodule.exports = {\n get: get,\n characters: characters,\n seed: setSeed,\n lookup: lookup,\n shuffled: getShuffled\n};\n","'use strict';\n\nvar crypto = typeof window === 'object' && (window.crypto || window.msCrypto); // IE 11 uses window.msCrypto\n\nvar randomByte;\n\nif (!crypto || !crypto.getRandomValues) {\n randomByte = function(size) {\n var bytes = [];\n for (var i = 0; i < size; i++) {\n bytes.push(Math.floor(Math.random() * 256));\n }\n return bytes;\n };\n} else {\n randomByte = function(size) {\n return crypto.getRandomValues(new Uint8Array(size));\n };\n}\n\nmodule.exports = randomByte;\n","/**\n * Secure random string generator with custom alphabet.\n *\n * Alphabet must contain 256 symbols or less. Otherwise, the generator\n * will not be secure.\n *\n * @param {generator} random The random bytes generator.\n * @param {string} alphabet Symbols to be used in new random string.\n * @param {size} size The number of symbols in new random string.\n *\n * @return {string} Random string.\n *\n * @example\n * const format = require('nanoid/format')\n *\n * function random (size) {\n * const result = []\n * for (let i = 0; i < size; i++) {\n * result.push(randomByte())\n * }\n * return result\n * }\n *\n * format(random, \"abcdef\", 5) //=> \"fbaef\"\n *\n * @name format\n * @function\n */\nmodule.exports = function (random, alphabet, size) {\n var mask = (2 << Math.log(alphabet.length - 1) / Math.LN2) - 1\n var step = Math.ceil(1.6 * mask * size / alphabet.length)\n size = +size\n\n var id = ''\n while (true) {\n var bytes = random(step)\n for (var i = 0; i < step; i++) {\n var byte = bytes[i] & mask\n if (alphabet[byte]) {\n id += alphabet[byte]\n if (id.length === size) return id\n }\n }\n }\n}\n\n/**\n * @callback generator\n * @param {number} bytes The number of bytes to generate.\n * @return {number[]} Random bytes.\n */\n","'use strict';\n\nvar alphabet = require('./alphabet');\nvar random = require('./random/random-byte');\nvar format = require('nanoid/format');\n\nfunction generate(number) {\n var loopCounter = 0;\n var done;\n\n var str = '';\n\n while (!done) {\n str = str + format(random, alphabet.get(), 1);\n done = number < (Math.pow(16, loopCounter + 1 ) );\n loopCounter++;\n }\n return str;\n}\n\nmodule.exports = generate;\n","'use strict';\n\nvar generate = require('./generate');\nvar alphabet = require('./alphabet');\n\n// Ignore all milliseconds before a certain time to reduce the size of the date entropy without sacrificing uniqueness.\n// This number should be updated every year or so to keep the generated id short.\n// To regenerate `new Date() - 0` and bump the version. Always bump the version!\nvar REDUCE_TIME = 1567752802062;\n\n// don't change unless we change the algos or REDUCE_TIME\n// must be an integer and less than 16\nvar version = 7;\n\n// Counter is used when shortid is called multiple times in one second.\nvar counter;\n\n// Remember the last time shortid was called in case counter is needed.\nvar previousSeconds;\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction build(clusterWorkerId) {\n var str = '';\n\n var seconds = Math.floor((Date.now() - REDUCE_TIME) * 0.001);\n\n if (seconds === previousSeconds) {\n counter++;\n } else {\n counter = 0;\n previousSeconds = seconds;\n }\n\n str = str + generate(version);\n str = str + generate(clusterWorkerId);\n if (counter > 0) {\n str = str + generate(counter);\n }\n str = str + generate(seconds);\n return str;\n}\n\nmodule.exports = build;\n","'use strict';\nvar alphabet = require('./alphabet');\n\nfunction isShortId(id) {\n if (!id || typeof id !== 'string' || id.length < 6 ) {\n return false;\n }\n\n var nonAlphabetic = new RegExp('[^' +\n alphabet.get().replace(/[|\\\\{}()[\\]^$+*?.-]/g, '\\\\$&') +\n ']');\n return !nonAlphabetic.test(id);\n}\n\nmodule.exports = isShortId;\n","'use strict';\n\nvar alphabet = require('./alphabet');\nvar build = require('./build');\nvar isValid = require('./is-valid');\n\n// if you are using cluster or multiple servers use this to make each instance\n// has a unique value for worker\n// Note: I don't know if this is automatically set when using third\n// party cluster solutions such as pm2.\nvar clusterWorkerId = require('./util/cluster-worker-id') || 0;\n\n/**\n * Set the seed.\n * Highly recommended if you don't want people to try to figure out your id schema.\n * exposed as shortid.seed(int)\n * @param seed Integer value to seed the random alphabet. ALWAYS USE THE SAME SEED or you might get overlaps.\n */\nfunction seed(seedValue) {\n alphabet.seed(seedValue);\n return module.exports;\n}\n\n/**\n * Set the cluster worker or machine id\n * exposed as shortid.worker(int)\n * @param workerId worker must be positive integer. Number less than 16 is recommended.\n * returns shortid module so it can be chained.\n */\nfunction worker(workerId) {\n clusterWorkerId = workerId;\n return module.exports;\n}\n\n/**\n *\n * sets new characters to use in the alphabet\n * returns the shuffled alphabet\n */\nfunction characters(newCharacters) {\n if (newCharacters !== undefined) {\n alphabet.characters(newCharacters);\n }\n\n return alphabet.shuffled();\n}\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction generate() {\n return build(clusterWorkerId);\n}\n\n// Export all other functions as properties of the generate function\nmodule.exports = generate;\nmodule.exports.generate = generate;\nmodule.exports.seed = seed;\nmodule.exports.worker = worker;\nmodule.exports.characters = characters;\nmodule.exports.isValid = isValid;\n","'use strict';\nmodule.exports = require('./lib/index');\n","/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.15';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading and trailing whitespace. */\n var reTrim = /^\\s+|\\s+$/g,\n reTrimStart = /^\\s+/,\n reTrimEnd = /\\s+$/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n value = iteratee(value);\n\n var low = 0,\n high = array == null ? 0 : array.length,\n valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '<p>' + func(text) + '</p>';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '<p>fred, barney, & pebbles</p>'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<b><%- value %></b>');\n * compiled({ 'value': '<script>' });\n * // => '<b><script></b>'\n *\n * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the internal `print` function in \"evaluate\" delimiters.\n * var compiled = _.template('<% print(\"hello \" + user); %>!');\n * compiled({ 'user': 'barney' });\n * // => 'hello barney!'\n *\n * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n * // Disable support by replacing the \"interpolate\" delimiter.\n * var compiled = _.template('hello ${ user }!');\n * compiled({ 'user': 'pebbles' });\n * // => 'hello pebbles!'\n *\n * // Use backslashes to treat delimiters as plain text.\n * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n * compiled({ 'value': 'ignored' });\n * // => '<%- value %>'\n *\n * // Use the `imports` option to import `jQuery` as `jq`.\n * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n * compiled(data);\n * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n *\n * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n * compiled.source;\n * // => function(data) {\n * // var __t, __p = '';\n * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n * // return __p;\n * // }\n *\n * // Use custom template delimiters.\n * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n * var compiled = _.template('hello {{ user }}!');\n * compiled({ 'user': 'mustache' });\n * // => 'hello mustache!'\n *\n * // Use the `source` property to inline compiled templates for meaningful\n * // line numbers in error messages and stack traces.\n * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n * var JST = {\\\n * \"main\": ' + _.template(mainText).source + '\\\n * };\\\n * ');\n */\n function template(string, options, guard) {\n // Based on John Resig's `tmpl` implementation\n // (http://ejohn.org/blog/javascript-micro-templating/)\n // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n var settings = lodash.templateSettings;\n\n if (guard && isIterateeCall(string, options, guard)) {\n options = undefined;\n }\n string = toString(string);\n options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n importsKeys = keys(imports),\n importsValues = baseValues(imports, importsKeys);\n\n var isEscaping,\n isEvaluating,\n index = 0,\n interpolate = options.interpolate || reNoMatch,\n source = \"__p += '\";\n\n // Compile the regexp to match each delimiter.\n var reDelimiters = RegExp(\n (options.escape || reNoMatch).source + '|' +\n interpolate.source + '|' +\n (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n (options.evaluate || reNoMatch).source + '|$'\n , 'g');\n\n // Use a sourceURL for easier debugging.\n // The sourceURL gets injected into the source that's eval-ed, so be careful\n // with lookup (in case of e.g. prototype pollution), and strip newlines if any.\n // A newline wouldn't be a valid sourceURL anyway, and it'd enable code injection.\n var sourceURL = '//# sourceURL=' +\n (hasOwnProperty.call(options, 'sourceURL')\n ? (options.sourceURL + '').replace(/[\\r\\n]/g, ' ')\n : ('lodash.templateSources[' + (++templateCounter) + ']')\n ) + '\\n';\n\n string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n interpolateValue || (interpolateValue = esTemplateValue);\n\n // Escape characters that can't be included in string literals.\n source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n // Replace delimiters with snippets.\n if (escapeValue) {\n isEscaping = true;\n source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n }\n if (evaluateValue) {\n isEvaluating = true;\n source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n }\n if (interpolateValue) {\n source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n }\n index = offset + match.length;\n\n // The JS engine embedded in Adobe products needs `match` returned in\n // order to produce the correct `offset` value.\n return match;\n });\n\n source += \"';\\n\";\n\n // If `variable` is not specified wrap a with-statement around the generated\n // code to add the data object to the top of the scope chain.\n // Like with sourceURL, we take care to not check the option's prototype,\n // as this configuration is a code injection vector.\n var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n if (!variable) {\n source = 'with (obj) {\\n' + source + '\\n}\\n';\n }\n // Cleanup code by stripping empty strings.\n source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n .replace(reEmptyStringMiddle, '$1')\n .replace(reEmptyStringTrailing, '$1;');\n\n // Frame code as the function body.\n source = 'function(' + (variable || 'obj') + ') {\\n' +\n (variable\n ? ''\n : 'obj || (obj = {});\\n'\n ) +\n \"var __t, __p = ''\" +\n (isEscaping\n ? ', __e = _.escape'\n : ''\n ) +\n (isEvaluating\n ? ', __j = Array.prototype.join;\\n' +\n \"function print() { __p += __j.call(arguments, '') }\\n\"\n : ';\\n'\n ) +\n source +\n 'return __p\\n}';\n\n var result = attempt(function() {\n return Function(importsKeys, sourceURL + 'return ' + source)\n .apply(undefined, importsValues);\n });\n\n // Provide the compiled function's source by its `toString` method or\n // the `source` property as a convenience for inlining compiled templates.\n result.source = source;\n if (isError(result)) {\n throw result;\n }\n return result;\n }\n\n /**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\n function toLower(value) {\n return toString(value).toLowerCase();\n }\n\n /**\n * Converts `string`, as a whole, to upper case just like\n * [String#toUpperCase](https://mdn.io/toUpperCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.toUpper('--foo-bar--');\n * // => '--FOO-BAR--'\n *\n * _.toUpper('fooBar');\n * // => 'FOOBAR'\n *\n * _.toUpper('__foo_bar__');\n * // => '__FOO_BAR__'\n */\n function toUpper(value) {\n return toString(value).toUpperCase();\n }\n\n /**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\n function trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrim, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n }\n\n /**\n * Removes trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimEnd(' abc ');\n * // => ' abc'\n *\n * _.trimEnd('-_-abc-_-', '_-');\n * // => '-_-abc'\n */\n function trimEnd(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimEnd, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n return castSlice(strSymbols, 0, end).join('');\n }\n\n /**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart(' abc ');\n * // => 'abc '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\n function trimStart(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimStart, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n start = charsStartIndex(strSymbols, stringToArray(chars));\n\n return castSlice(strSymbols, start).join('');\n }\n\n /**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\n function truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols\n ? castSlice(strSymbols, 0, end).join('')\n : string.slice(0, end);\n\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += (result.length - end);\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while ((match = separator.exec(substring))) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n }\n\n /**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&`, `<`, `>`, `"`, and `'` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n }\n\n /**\n * Converts `string`, as space separated words, to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.upperCase('--foo-bar');\n * // => 'FOO BAR'\n *\n * _.upperCase('fooBar');\n * // => 'FOO BAR'\n *\n * _.upperCase('__foo_bar__');\n * // => 'FOO BAR'\n */\n var upperCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toUpperCase();\n });\n\n /**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\n var upperFirst = createCaseFirst('toUpperCase');\n\n /**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\n function words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Attempts to invoke `func`, returning either the result or the caught error\n * object. Any additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Function} func The function to attempt.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {*} Returns the `func` result or error object.\n * @example\n *\n * // Avoid throwing errors for invalid selectors.\n * var elements = _.attempt(function(selector) {\n * return document.querySelectorAll(selector);\n * }, '>_>');\n *\n * if (_.isError(elements)) {\n * elements = [];\n * }\n */\n var attempt = baseRest(function(func, args) {\n try {\n return apply(func, undefined, args);\n } catch (e) {\n return isError(e) ? e : new Error(e);\n }\n });\n\n /**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n * 'label': 'docs',\n * 'click': function() {\n * console.log('clicked ' + this.label);\n * }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\n var bindAll = flatRest(function(object, methodNames) {\n arrayEach(methodNames, function(key) {\n key = toKey(key);\n baseAssignValue(object, key, bind(object[key], object));\n });\n return object;\n });\n\n /**\n * Creates a function that iterates over `pairs` and invokes the corresponding\n * function of the first predicate to return truthy. The predicate-function\n * pairs are invoked with the `this` binding and arguments of the created\n * function.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Array} pairs The predicate-function pairs.\n * @returns {Function} Returns the new composite function.\n * @example\n *\n * var func = _.cond([\n * [_.matches({ 'a': 1 }), _.constant('matches A')],\n * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n * [_.stubTrue, _.constant('no match')]\n * ]);\n *\n * func({ 'a': 1, 'b': 2 });\n * // => 'matches A'\n *\n * func({ 'a': 0, 'b': 1 });\n * // => 'matches B'\n *\n * func({ 'a': '1', 'b': '2' });\n * // => 'no match'\n */\n function cond(pairs) {\n var length = pairs == null ? 0 : pairs.length,\n toIteratee = getIteratee();\n\n pairs = !length ? [] : arrayMap(pairs, function(pair) {\n if (typeof pair[1] != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return [toIteratee(pair[0]), pair[1]];\n });\n\n return baseRest(function(args) {\n var index = -1;\n while (++index < length) {\n var pair = pairs[index];\n if (apply(pair[0], this, args)) {\n return apply(pair[1], this, args);\n }\n }\n });\n }\n\n /**\n * Creates a function that invokes the predicate properties of `source` with\n * the corresponding property values of a given object, returning `true` if\n * all predicates return truthy, else `false`.\n *\n * **Note:** The created function is equivalent to `_.conformsTo` with\n * `source` partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 2, 'b': 1 },\n * { 'a': 1, 'b': 2 }\n * ];\n *\n * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n * // => [{ 'a': 1, 'b': 2 }]\n */\n function conforms(source) {\n return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\n function constant(value) {\n return function() {\n return value;\n };\n }\n\n /**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\n function defaultTo(value, defaultValue) {\n return (value == null || value !== value) ? defaultValue : value;\n }\n\n /**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\n var flow = createFlow();\n\n /**\n * This method is like `_.flow` except that it creates a function that\n * invokes the given functions from right to left.\n *\n * @static\n * @since 3.0.0\n * @memberOf _\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flow\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flowRight([square, _.add]);\n * addSquare(1, 2);\n * // => 9\n */\n var flowRight = createFlow(true);\n\n /**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\n function iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matches(source) {\n return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between the\n * value at `path` of a given object to `srcValue`, returning `true` if the\n * object value is equivalent, else `false`.\n *\n * **Note:** Partial comparisons will match empty array and empty object\n * `srcValue` values against any array or object value, respectively. See\n * `_.isEqual` for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.find(objects, _.matchesProperty('a', 4));\n * // => { 'a': 4, 'b': 5, 'c': 6 }\n */\n function matchesProperty(path, srcValue) {\n return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that invokes the method at `path` of a given object.\n * Any additional arguments are provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': _.constant(2) } },\n * { 'a': { 'b': _.constant(1) } }\n * ];\n *\n * _.map(objects, _.method('a.b'));\n * // => [2, 1]\n *\n * _.map(objects, _.method(['a', 'b']));\n * // => [2, 1]\n */\n var method = baseRest(function(path, args) {\n return function(object) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * The opposite of `_.method`; this method creates a function that invokes\n * the method at a given path of `object`. Any additional arguments are\n * provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Object} object The object to query.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var array = _.times(3, _.constant),\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n * // => [2, 0]\n */\n var methodOf = baseRest(function(object, args) {\n return function(path) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\n function mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n\n if (options == null &&\n !(isObject(source) && (methodNames.length || !props.length))) {\n options = source;\n source = object;\n object = this;\n methodNames = baseFunctions(source, keys(source));\n }\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n\n arrayEach(methodNames, function(methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function() {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n\n actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n\n return object;\n }\n\n /**\n * Reverts the `_` variable to its previous value and returns a reference to\n * the `lodash` function.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @returns {Function} Returns the `lodash` function.\n * @example\n *\n * var lodash = _.noConflict();\n */\n function noConflict() {\n if (root._ === this) {\n root._ = oldDash;\n }\n return this;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Creates a function that gets the argument at index `n`. If `n` is negative,\n * the nth argument from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [n=0] The index of the argument to return.\n * @returns {Function} Returns the new pass-thru function.\n * @example\n *\n * var func = _.nthArg(1);\n * func('a', 'b', 'c', 'd');\n * // => 'b'\n *\n * var func = _.nthArg(-2);\n * func('a', 'b', 'c', 'd');\n * // => 'c'\n */\n function nthArg(n) {\n n = toInteger(n);\n return baseRest(function(args) {\n return baseNth(args, n);\n });\n }\n\n /**\n * Creates a function that invokes `iteratees` with the arguments it receives\n * and returns their results.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.over([Math.max, Math.min]);\n *\n * func(1, 2, 3, 4);\n * // => [4, 1]\n */\n var over = createOver(arrayMap);\n\n /**\n * Creates a function that checks if **all** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overEvery([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => false\n *\n * func(NaN);\n * // => false\n */\n var overEvery = createOver(arrayEvery);\n\n /**\n * Creates a function that checks if **any** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overSome([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => true\n *\n * func(NaN);\n * // => false\n */\n var overSome = createOver(arraySome);\n\n /**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\n function property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n }\n\n /**\n * The opposite of `_.property`; this method creates a function that returns\n * the value at a given path of `object`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var array = [0, 1, 2],\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n * // => [2, 0]\n */\n function propertyOf(object) {\n return function(path) {\n return object == null ? undefined : baseGet(object, path);\n };\n }\n\n /**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\n var range = createRange();\n\n /**\n * This method is like `_.range` except that it populates values in\n * descending order.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.range\n * @example\n *\n * _.rangeRight(4);\n * // => [3, 2, 1, 0]\n *\n * _.rangeRight(-4);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 5);\n * // => [4, 3, 2, 1]\n *\n * _.rangeRight(0, 20, 5);\n * // => [15, 10, 5, 0]\n *\n * _.rangeRight(0, -4, -1);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.rangeRight(0);\n * // => []\n */\n var rangeRight = createRange(true);\n\n /**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n function stubArray() {\n return [];\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n /**\n * This method returns a new empty object.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Object} Returns the new empty object.\n * @example\n *\n * var objects = _.times(2, _.stubObject);\n *\n * console.log(objects);\n * // => [{}, {}]\n *\n * console.log(objects[0] === objects[1]);\n * // => false\n */\n function stubObject() {\n return {};\n }\n\n /**\n * This method returns an empty string.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {string} Returns the empty string.\n * @example\n *\n * _.times(2, _.stubString);\n * // => ['', '']\n */\n function stubString() {\n return '';\n }\n\n /**\n * This method returns `true`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `true`.\n * @example\n *\n * _.times(2, _.stubTrue);\n * // => [true, true]\n */\n function stubTrue() {\n return true;\n }\n\n /**\n * Invokes the iteratee `n` times, returning an array of the results of\n * each invocation. The iteratee is invoked with one argument; (index).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.times(3, String);\n * // => ['0', '1', '2']\n *\n * _.times(4, _.constant(0));\n * // => [0, 0, 0, 0]\n */\n function times(n, iteratee) {\n n = toInteger(n);\n if (n < 1 || n > MAX_SAFE_INTEGER) {\n return [];\n }\n var index = MAX_ARRAY_LENGTH,\n length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n iteratee = getIteratee(iteratee);\n n -= MAX_ARRAY_LENGTH;\n\n var result = baseTimes(length, iteratee);\n while (++index < n) {\n iteratee(index);\n }\n return result;\n }\n\n /**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\n function toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n }\n\n /**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Adds two numbers.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {number} augend The first number in an addition.\n * @param {number} addend The second number in an addition.\n * @returns {number} Returns the total.\n * @example\n *\n * _.add(6, 4);\n * // => 10\n */\n var add = createMathOperation(function(augend, addend) {\n return augend + addend;\n }, 0);\n\n /**\n * Computes `number` rounded up to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round up.\n * @param {number} [precision=0] The precision to round up to.\n * @returns {number} Returns the rounded up number.\n * @example\n *\n * _.ceil(4.006);\n * // => 5\n *\n * _.ceil(6.004, 2);\n * // => 6.01\n *\n * _.ceil(6040, -2);\n * // => 6100\n */\n var ceil = createRound('ceil');\n\n /**\n * Divide two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} dividend The first number in a division.\n * @param {number} divisor The second number in a division.\n * @returns {number} Returns the quotient.\n * @example\n *\n * _.divide(6, 4);\n * // => 1.5\n */\n var divide = createMathOperation(function(dividend, divisor) {\n return dividend / divisor;\n }, 1);\n\n /**\n * Computes `number` rounded down to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round down.\n * @param {number} [precision=0] The precision to round down to.\n * @returns {number} Returns the rounded down number.\n * @example\n *\n * _.floor(4.006);\n * // => 4\n *\n * _.floor(0.046, 2);\n * // => 0.04\n *\n * _.floor(4060, -2);\n * // => 4000\n */\n var floor = createRound('floor');\n\n /**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\n function max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n }\n\n /**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n function maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n : undefined;\n }\n\n /**\n * Computes the mean of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the mean.\n * @example\n *\n * _.mean([4, 2, 8, 6]);\n * // => 5\n */\n function mean(array) {\n return baseMean(array, identity);\n }\n\n /**\n * This method is like `_.mean` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be averaged.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the mean.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.meanBy(objects, function(o) { return o.n; });\n * // => 5\n *\n * // The `_.property` iteratee shorthand.\n * _.meanBy(objects, 'n');\n * // => 5\n */\n function meanBy(array, iteratee) {\n return baseMean(array, getIteratee(iteratee, 2));\n }\n\n /**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\n function min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n }\n\n /**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n function minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n : undefined;\n }\n\n /**\n * Multiply two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} multiplier The first number in a multiplication.\n * @param {number} multiplicand The second number in a multiplication.\n * @returns {number} Returns the product.\n * @example\n *\n * _.multiply(6, 4);\n * // => 24\n */\n var multiply = createMathOperation(function(multiplier, multiplicand) {\n return multiplier * multiplicand;\n }, 1);\n\n /**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\n var round = createRound('round');\n\n /**\n * Subtract two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {number} minuend The first number in a subtraction.\n * @param {number} subtrahend The second number in a subtraction.\n * @returns {number} Returns the difference.\n * @example\n *\n * _.subtract(6, 4);\n * // => 2\n */\n var subtract = createMathOperation(function(minuend, subtrahend) {\n return minuend - subtrahend;\n }, 0);\n\n /**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\n function sum(array) {\n return (array && array.length)\n ? baseSum(array, identity)\n : 0;\n }\n\n /**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\n function sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, getIteratee(iteratee, 2))\n : 0;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.after = after;\n lodash.ary = ary;\n lodash.assign = assign;\n lodash.assignIn = assignIn;\n lodash.assignInWith = assignInWith;\n lodash.assignWith = assignWith;\n lodash.at = at;\n lodash.before = before;\n lodash.bind = bind;\n lodash.bindAll = bindAll;\n lodash.bindKey = bindKey;\n lodash.castArray = castArray;\n lodash.chain = chain;\n lodash.chunk = chunk;\n lodash.compact = compact;\n lodash.concat = concat;\n lodash.cond = cond;\n lodash.conforms = conforms;\n lodash.constant = constant;\n lodash.countBy = countBy;\n lodash.create = create;\n lodash.curry = curry;\n lodash.curryRight = curryRight;\n lodash.debounce = debounce;\n lodash.defaults = defaults;\n lodash.defaultsDeep = defaultsDeep;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.difference = difference;\n lodash.differenceBy = differenceBy;\n lodash.differenceWith = differenceWith;\n lodash.drop = drop;\n lodash.dropRight = dropRight;\n lodash.dropRightWhile = dropRightWhile;\n lodash.dropWhile = dropWhile;\n lodash.fill = fill;\n lodash.filter = filter;\n lodash.flatMap = flatMap;\n lodash.flatMapDeep = flatMapDeep;\n lodash.flatMapDepth = flatMapDepth;\n lodash.flatten = flatten;\n lodash.flattenDeep = flattenDeep;\n lodash.flattenDepth = flattenDepth;\n lodash.flip = flip;\n lodash.flow = flow;\n lodash.flowRight = flowRight;\n lodash.fromPairs = fromPairs;\n lodash.functions = functions;\n lodash.functionsIn = functionsIn;\n lodash.groupBy = groupBy;\n lodash.initial = initial;\n lodash.intersection = intersection;\n lodash.intersectionBy = intersectionBy;\n lodash.intersectionWith = intersectionWith;\n lodash.invert = invert;\n lodash.invertBy = invertBy;\n lodash.invokeMap = invokeMap;\n lodash.iteratee = iteratee;\n lodash.keyBy = keyBy;\n lodash.keys = keys;\n lodash.keysIn = keysIn;\n lodash.map = map;\n lodash.mapKeys = mapKeys;\n lodash.mapValues = mapValues;\n lodash.matches = matches;\n lodash.matchesProperty = matchesProperty;\n lodash.memoize = memoize;\n lodash.merge = merge;\n lodash.mergeWith = mergeWith;\n lodash.method = method;\n lodash.methodOf = methodOf;\n lodash.mixin = mixin;\n lodash.negate = negate;\n lodash.nthArg = nthArg;\n lodash.omit = omit;\n lodash.omitBy = omitBy;\n lodash.once = once;\n lodash.orderBy = orderBy;\n lodash.over = over;\n lodash.overArgs = overArgs;\n lodash.overEvery = overEvery;\n lodash.overSome = overSome;\n lodash.partial = partial;\n lodash.partialRight = partialRight;\n lodash.partition = partition;\n lodash.pick = pick;\n lodash.pickBy = pickBy;\n lodash.property = property;\n lodash.propertyOf = propertyOf;\n lodash.pull = pull;\n lodash.pullAll = pullAll;\n lodash.pullAllBy = pullAllBy;\n lodash.pullAllWith = pullAllWith;\n lodash.pullAt = pullAt;\n lodash.range = range;\n lodash.rangeRight = rangeRight;\n lodash.rearg = rearg;\n lodash.reject = reject;\n lodash.remove = remove;\n lodash.rest = rest;\n lodash.reverse = reverse;\n lodash.sampleSize = sampleSize;\n lodash.set = set;\n lodash.setWith = setWith;\n lodash.shuffle = shuffle;\n lodash.slice = slice;\n lodash.sortBy = sortBy;\n lodash.sortedUniq = sortedUniq;\n lodash.sortedUniqBy = sortedUniqBy;\n lodash.split = split;\n lodash.spread = spread;\n lodash.tail = tail;\n lodash.take = take;\n lodash.takeRight = takeRight;\n lodash.takeRightWhile = takeRightWhile;\n lodash.takeWhile = takeWhile;\n lodash.tap = tap;\n lodash.throttle = throttle;\n lodash.thru = thru;\n lodash.toArray = toArray;\n lodash.toPairs = toPairs;\n lodash.toPairsIn = toPairsIn;\n lodash.toPath = toPath;\n lodash.toPlainObject = toPlainObject;\n lodash.transform = transform;\n lodash.unary = unary;\n lodash.union = union;\n lodash.unionBy = unionBy;\n lodash.unionWith = unionWith;\n lodash.uniq = uniq;\n lodash.uniqBy = uniqBy;\n lodash.uniqWith = uniqWith;\n lodash.unset = unset;\n lodash.unzip = unzip;\n lodash.unzipWith = unzipWith;\n lodash.update = update;\n lodash.updateWith = updateWith;\n lodash.values = values;\n lodash.valuesIn = valuesIn;\n lodash.without = without;\n lodash.words = words;\n lodash.wrap = wrap;\n lodash.xor = xor;\n lodash.xorBy = xorBy;\n lodash.xorWith = xorWith;\n lodash.zip = zip;\n lodash.zipObject = zipObject;\n lodash.zipObjectDeep = zipObjectDeep;\n lodash.zipWith = zipWith;\n\n // Add aliases.\n lodash.entries = toPairs;\n lodash.entriesIn = toPairsIn;\n lodash.extend = assignIn;\n lodash.extendWith = assignInWith;\n\n // Add methods to `lodash.prototype`.\n mixin(lodash, lodash);\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.add = add;\n lodash.attempt = attempt;\n lodash.camelCase = camelCase;\n lodash.capitalize = capitalize;\n lodash.ceil = ceil;\n lodash.clamp = clamp;\n lodash.clone = clone;\n lodash.cloneDeep = cloneDeep;\n lodash.cloneDeepWith = cloneDeepWith;\n lodash.cloneWith = cloneWith;\n lodash.conformsTo = conformsTo;\n lodash.deburr = deburr;\n lodash.defaultTo = defaultTo;\n lodash.divide = divide;\n lodash.endsWith = endsWith;\n lodash.eq = eq;\n lodash.escape = escape;\n lodash.escapeRegExp = escapeRegExp;\n lodash.every = every;\n lodash.find = find;\n lodash.findIndex = findIndex;\n lodash.findKey = findKey;\n lodash.findLast = findLast;\n lodash.findLastIndex = findLastIndex;\n lodash.findLastKey = findLastKey;\n lodash.floor = floor;\n lodash.forEach = forEach;\n lodash.forEachRight = forEachRight;\n lodash.forIn = forIn;\n lodash.forInRight = forInRight;\n lodash.forOwn = forOwn;\n lodash.forOwnRight = forOwnRight;\n lodash.get = get;\n lodash.gt = gt;\n lodash.gte = gte;\n lodash.has = has;\n lodash.hasIn = hasIn;\n lodash.head = head;\n lodash.identity = identity;\n lodash.includes = includes;\n lodash.indexOf = indexOf;\n lodash.inRange = inRange;\n lodash.invoke = invoke;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isArrayBuffer = isArrayBuffer;\n lodash.isArrayLike = isArrayLike;\n lodash.isArrayLikeObject = isArrayLikeObject;\n lodash.isBoolean = isBoolean;\n lodash.isBuffer = isBuffer;\n lodash.isDate = isDate;\n lodash.isElement = isElement;\n lodash.isEmpty = isEmpty;\n lodash.isEqual = isEqual;\n lodash.isEqualWith = isEqualWith;\n lodash.isError = isError;\n lodash.isFinite = isFinite;\n lodash.isFunction = isFunction;\n lodash.isInteger = isInteger;\n lodash.isLength = isLength;\n lodash.isMap = isMap;\n lodash.isMatch = isMatch;\n lodash.isMatchWith = isMatchWith;\n lodash.isNaN = isNaN;\n lodash.isNative = isNative;\n lodash.isNil = isNil;\n lodash.isNull = isNull;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isObjectLike = isObjectLike;\n lodash.isPlainObject = isPlainObject;\n lodash.isRegExp = isRegExp;\n lodash.isSafeInteger = isSafeInteger;\n lodash.isSet = isSet;\n lodash.isString = isString;\n lodash.isSymbol = isSymbol;\n lodash.isTypedArray = isTypedArray;\n lodash.isUndefined = isUndefined;\n lodash.isWeakMap = isWeakMap;\n lodash.isWeakSet = isWeakSet;\n lodash.join = join;\n lodash.kebabCase = kebabCase;\n lodash.last = last;\n lodash.lastIndexOf = lastIndexOf;\n lodash.lowerCase = lowerCase;\n lodash.lowerFirst = lowerFirst;\n lodash.lt = lt;\n lodash.lte = lte;\n lodash.max = max;\n lodash.maxBy = maxBy;\n lodash.mean = mean;\n lodash.meanBy = meanBy;\n lodash.min = min;\n lodash.minBy = minBy;\n lodash.stubArray = stubArray;\n lodash.stubFalse = stubFalse;\n lodash.stubObject = stubObject;\n lodash.stubString = stubString;\n lodash.stubTrue = stubTrue;\n lodash.multiply = multiply;\n lodash.nth = nth;\n lodash.noConflict = noConflict;\n lodash.noop = noop;\n lodash.now = now;\n lodash.pad = pad;\n lodash.padEnd = padEnd;\n lodash.padStart = padStart;\n lodash.parseInt = parseInt;\n lodash.random = random;\n lodash.reduce = reduce;\n lodash.reduceRight = reduceRight;\n lodash.repeat = repeat;\n lodash.replace = replace;\n lodash.result = result;\n lodash.round = round;\n lodash.runInContext = runInContext;\n lodash.sample = sample;\n lodash.size = size;\n lodash.snakeCase = snakeCase;\n lodash.some = some;\n lodash.sortedIndex = sortedIndex;\n lodash.sortedIndexBy = sortedIndexBy;\n lodash.sortedIndexOf = sortedIndexOf;\n lodash.sortedLastIndex = sortedLastIndex;\n lodash.sortedLastIndexBy = sortedLastIndexBy;\n lodash.sortedLastIndexOf = sortedLastIndexOf;\n lodash.startCase = startCase;\n lodash.startsWith = startsWith;\n lodash.subtract = subtract;\n lodash.sum = sum;\n lodash.sumBy = sumBy;\n lodash.template = template;\n lodash.times = times;\n lodash.toFinite = toFinite;\n lodash.toInteger = toInteger;\n lodash.toLength = toLength;\n lodash.toLower = toLower;\n lodash.toNumber = toNumber;\n lodash.toSafeInteger = toSafeInteger;\n lodash.toString = toString;\n lodash.toUpper = toUpper;\n lodash.trim = trim;\n lodash.trimEnd = trimEnd;\n lodash.trimStart = trimStart;\n lodash.truncate = truncate;\n lodash.unescape = unescape;\n lodash.uniqueId = uniqueId;\n lodash.upperCase = upperCase;\n lodash.upperFirst = upperFirst;\n\n // Add aliases.\n lodash.each = forEach;\n lodash.eachRight = forEachRight;\n lodash.first = head;\n\n mixin(lodash, (function() {\n var source = {};\n baseForOwn(lodash, function(func, methodName) {\n if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n source[methodName] = func;\n }\n });\n return source;\n }()), { 'chain': false });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Assign default placeholders.\n arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n lodash[methodName].placeholder = lodash;\n });\n\n // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n arrayEach(['drop', 'take'], function(methodName, index) {\n LazyWrapper.prototype[methodName] = function(n) {\n n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n var result = (this.__filtered__ && !index)\n ? new LazyWrapper(this)\n : this.clone();\n\n if (result.__filtered__) {\n result.__takeCount__ = nativeMin(n, result.__takeCount__);\n } else {\n result.__views__.push({\n 'size': nativeMin(n, MAX_ARRAY_LENGTH),\n 'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n });\n }\n return result;\n };\n\n LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n return this.reverse()[methodName](n).reverse();\n };\n });\n\n // Add `LazyWrapper` methods that accept an `iteratee` value.\n arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n var type = index + 1,\n isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n LazyWrapper.prototype[methodName] = function(iteratee) {\n var result = this.clone();\n result.__iteratees__.push({\n 'iteratee': getIteratee(iteratee, 3),\n 'type': type\n });\n result.__filtered__ = result.__filtered__ || isFilter;\n return result;\n };\n });\n\n // Add `LazyWrapper` methods for `_.head` and `_.last`.\n arrayEach(['head', 'last'], function(methodName, index) {\n var takeName = 'take' + (index ? 'Right' : '');\n\n LazyWrapper.prototype[methodName] = function() {\n return this[takeName](1).value()[0];\n };\n });\n\n // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n arrayEach(['initial', 'tail'], function(methodName, index) {\n var dropName = 'drop' + (index ? '' : 'Right');\n\n LazyWrapper.prototype[methodName] = function() {\n return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n };\n });\n\n LazyWrapper.prototype.compact = function() {\n return this.filter(identity);\n };\n\n LazyWrapper.prototype.find = function(predicate) {\n return this.filter(predicate).head();\n };\n\n LazyWrapper.prototype.findLast = function(predicate) {\n return this.reverse().find(predicate);\n };\n\n LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n if (typeof path == 'function') {\n return new LazyWrapper(this);\n }\n return this.map(function(value) {\n return baseInvoke(value, path, args);\n });\n });\n\n LazyWrapper.prototype.reject = function(predicate) {\n return this.filter(negate(getIteratee(predicate)));\n };\n\n LazyWrapper.prototype.slice = function(start, end) {\n start = toInteger(start);\n\n var result = this;\n if (result.__filtered__ && (start > 0 || end < 0)) {\n return new LazyWrapper(result);\n }\n if (start < 0) {\n result = result.takeRight(-start);\n } else if (start) {\n result = result.drop(start);\n }\n if (end !== undefined) {\n end = toInteger(end);\n result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n }\n return result;\n };\n\n LazyWrapper.prototype.takeRightWhile = function(predicate) {\n return this.reverse().takeWhile(predicate).reverse();\n };\n\n LazyWrapper.prototype.toArray = function() {\n return this.take(MAX_ARRAY_LENGTH);\n };\n\n // Add `LazyWrapper` methods to `lodash.prototype`.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n isTaker = /^(?:head|last)$/.test(methodName),\n lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n retUnwrapped = isTaker || /^find/.test(methodName);\n\n if (!lodashFunc) {\n return;\n }\n lodash.prototype[methodName] = function() {\n var value = this.__wrapped__,\n args = isTaker ? [1] : arguments,\n isLazy = value instanceof LazyWrapper,\n iteratee = args[0],\n useLazy = isLazy || isArray(value);\n\n var interceptor = function(value) {\n var result = lodashFunc.apply(lodash, arrayPush([value], args));\n return (isTaker && chainAll) ? result[0] : result;\n };\n\n if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n isLazy = useLazy = false;\n }\n var chainAll = this.__chain__,\n isHybrid = !!this.__actions__.length,\n isUnwrapped = retUnwrapped && !chainAll,\n onlyLazy = isLazy && !isHybrid;\n\n if (!retUnwrapped && useLazy) {\n value = onlyLazy ? value : new LazyWrapper(this);\n var result = func.apply(value, args);\n result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n return new LodashWrapper(result, chainAll);\n }\n if (isUnwrapped && onlyLazy) {\n return func.apply(this, args);\n }\n result = this.thru(interceptor);\n return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n };\n });\n\n // Add `Array` methods to `lodash.prototype`.\n arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n var func = arrayProto[methodName],\n chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n lodash.prototype[methodName] = function() {\n var args = arguments;\n if (retUnwrapped && !this.__chain__) {\n var value = this.value();\n return func.apply(isArray(value) ? value : [], args);\n }\n return this[chainName](function(value) {\n return func.apply(isArray(value) ? value : [], args);\n });\n };\n });\n\n // Map minified method names to their real names.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var lodashFunc = lodash[methodName];\n if (lodashFunc) {\n var key = lodashFunc.name + '';\n if (!hasOwnProperty.call(realNames, key)) {\n realNames[key] = [];\n }\n realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n }\n });\n\n realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n 'name': 'wrapper',\n 'func': undefined\n }];\n\n // Add methods to `LazyWrapper`.\n LazyWrapper.prototype.clone = lazyClone;\n LazyWrapper.prototype.reverse = lazyReverse;\n LazyWrapper.prototype.value = lazyValue;\n\n // Add chain sequence methods to the `lodash` wrapper.\n lodash.prototype.at = wrapperAt;\n lodash.prototype.chain = wrapperChain;\n lodash.prototype.commit = wrapperCommit;\n lodash.prototype.next = wrapperNext;\n lodash.prototype.plant = wrapperPlant;\n lodash.prototype.reverse = wrapperReverse;\n lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n // Add lazy aliases.\n lodash.prototype.first = lodash.prototype.head;\n\n if (symIterator) {\n lodash.prototype[symIterator] = wrapperToIterator;\n }\n return lodash;\n });\n\n /*--------------------------------------------------------------------------*/\n\n // Export lodash.\n var _ = runInContext();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose Lodash on the global object to prevent errors when Lodash is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n // Use `_.noConflict` to remove Lodash from the global object.\n root._ = _;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n define(function() {\n return _;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = _)._ = _;\n // Export for CommonJS support.\n freeExports._ = _;\n }\n else {\n // Export to the global object.\n root._ = _;\n }\n}.call(this));\n","import { union, reduce } from 'lodash/fp';\n\nconst commonPlus = extra => union(['onBegin', 'onComplete', 'onError'])(extra);\n\nconst common = () => commonPlus([]);\n\nconst _events = {\n recordApi: {\n save: commonPlus([\n 'onInvalid',\n 'onRecordUpdated',\n 'onRecordCreated']),\n delete: common(),\n getContext: common(),\n getNew: common(),\n load: common(),\n validate: common(),\n uploadFile: common(),\n downloadFile: common(),\n },\n indexApi: {\n buildIndex: common(),\n listItems: common(),\n delete: common(),\n aggregates: common(),\n },\n collectionApi: {\n getAllowedRecordTypes: common(),\n initialise: common(),\n delete: common(),\n },\n authApi: {\n authenticate: common(),\n authenticateTemporaryAccess: common(),\n createTemporaryAccess: common(),\n createUser: common(),\n enableUser: common(),\n disableUser: common(),\n loadAccessLevels: common(),\n getNewAccessLevel: common(),\n getNewUser: common(),\n getNewUserAuth: common(),\n getUsers: common(),\n saveAccessLevels: common(),\n isAuthorized: common(),\n changeMyPassword: common(),\n setPasswordFromTemporaryCode: common(),\n scorePassword: common(),\n isValidPassword: common(),\n validateUser: common(),\n validateAccessLevels: common(),\n setUserAccessLevels: common(),\n },\n templateApi: {\n saveApplicationHierarchy: common(),\n saveActionsAndTriggers: common(),\n },\n actionsApi: {\n execute: common(),\n },\n};\n\nconst _eventsList = [];\n\nconst makeEvent = (area, method, name) => `${area}:${method}:${name}`;\n\nfor (const areaKey in _events) {\n for (const methodKey in _events[areaKey]) {\n _events[areaKey][methodKey] = reduce((obj, s) => {\n obj[s] = makeEvent(areaKey, methodKey, s);\n return obj;\n },\n {})(_events[areaKey][methodKey]);\n }\n}\n\n\nfor (const areaKey in _events) {\n for (const methodKey in _events[areaKey]) {\n for (const name in _events[areaKey][methodKey]) {\n _eventsList.push(\n _events[areaKey][methodKey][name],\n );\n }\n }\n}\n\n\nexport const events = _events;\n\nexport const eventsList = _eventsList;\n\nexport default { events: _events, eventsList: _eventsList };\n","export class BadRequestError extends Error {\n constructor(message) {\n super(message);\n this.httpStatusCode = 400;\n }\n}\n\nexport class UnauthorisedError extends Error {\n constructor(message) {\n super(message);\n this.httpStatusCode = 401;\n }\n}\n\nexport class ForbiddenError extends Error {\n constructor(message) {\n super(message);\n this.httpStatusCode = 403;\n }\n}\n\nexport class NotFoundError extends Error {\n constructor(message) {\n super(message);\n this.httpStatusCode = 404;\n }\n}\n\nexport class ConflictError extends Error {\n constructor(message) {\n super(message);\n this.httpStatusCode = 409;\n }\n}","import { cloneDeep, isUndefined } from 'lodash/fp';\nimport { generate } from 'shortid';\nimport { UnauthorisedError } from './errors';\n\nexport const apiWrapper = async (app, eventNamespace, isAuthorized, eventContext, func, ...params) => {\n pushCallStack(app, eventNamespace);\n\n if (!isAuthorized(app)) {\n handleNotAuthorized(app, eventContext, eventNamespace);\n return;\n }\n\n const startDate = Date.now();\n const elapsed = () => (Date.now() - startDate);\n\n try {\n await app.publish(\n eventNamespace.onBegin,\n eventContext,\n );\n\n const result = await func(...params);\n\n await publishComplete(app, eventContext, eventNamespace, elapsed, result);\n return result;\n } catch (error) {\n await publishError(app, eventContext, eventNamespace, elapsed, error);\n throw error;\n }\n};\n\nexport const apiWrapperSync = (app, eventNamespace, isAuthorized, eventContext, func, ...params) => {\n pushCallStack(app, eventNamespace);\n\n if (!isAuthorized(app)) {\n handleNotAuthorized(app, eventContext, eventNamespace);\n return;\n }\n\n const startDate = Date.now();\n const elapsed = () => (Date.now() - startDate);\n\n try {\n app.publish(\n eventNamespace.onBegin,\n eventContext,\n );\n\n const result = func(...params);\n\n publishComplete(app, eventContext, eventNamespace, elapsed, result);\n return result;\n } catch (error) {\n publishError(app, eventContext, eventNamespace, elapsed, error);\n throw error;\n }\n};\n\nconst handleNotAuthorized = (app, eventContext, eventNamespace) => {\n const err = new UnauthorisedError(`Unauthorized: ${eventNamespace}`);\n publishError(app, eventContext, eventNamespace, () => 0, err);\n throw err;\n};\n\nconst pushCallStack = (app, eventNamespace, seedCallId) => {\n const callId = generate();\n\n const createCallStack = () => ({\n seedCallId: !isUndefined(seedCallId)\n ? seedCallId\n : callId,\n threadCallId: callId,\n stack: [],\n });\n\n if (isUndefined(app.calls)) {\n app.calls = createCallStack();\n }\n\n app.calls.stack.push({\n namespace: eventNamespace,\n callId,\n });\n};\n\nconst popCallStack = (app) => {\n app.calls.stack.pop();\n if (app.calls.stack.length === 0) {\n delete app.calls;\n }\n};\n\nconst publishError = async (app, eventContext, eventNamespace, elapsed, err) => {\n const ctx = cloneDeep(eventContext);\n ctx.error = err;\n ctx.elapsed = elapsed();\n await app.publish(\n eventNamespace.onError,\n ctx,\n );\n popCallStack(app);\n};\n\nconst publishComplete = async (app, eventContext, eventNamespace, elapsed, result) => {\n const endcontext = cloneDeep(eventContext);\n endcontext.result = result;\n endcontext.elapsed = elapsed();\n await app.publish(\n eventNamespace.onComplete,\n endcontext,\n );\n popCallStack(app);\n return result;\n};\n\nexport default apiWrapper;\n","import { split } from 'lodash/fp';\nimport { $ } from './index';\n\nconst lockOverlapMilliseconds = 10;\n\nexport const getLock = async (app, lockFile, timeoutMilliseconds, maxLockRetries, retryCount = 0) => {\n try {\n const timeout = (await app.getEpochTime())\n + timeoutMilliseconds;\n\n const lock = {\n timeout,\n key: lockFile,\n totalTimeout: timeoutMilliseconds,\n };\n\n await app.datastore.createFile(\n lockFile,\n getLockFileContent(\n lock.totalTimeout,\n lock.timeout,\n ),\n );\n\n return lock;\n } catch (e) {\n if (retryCount == maxLockRetries) { return NO_LOCK; }\n\n const lock = parseLockFileContent(\n lockFile,\n await app.datastore.loadFile(lockFile),\n );\n\n const currentEpochTime = await app.getEpochTime();\n\n if (currentEpochTime < lock.timeout) {\n return NO_LOCK;\n }\n\n try {\n await app.datastore.deleteFile(lockFile);\n } catch (_) {\n //empty\n }\n\n await sleepForRetry();\n\n return await getLock(\n app, lockFile, timeoutMilliseconds,\n maxLockRetries, retryCount + 1,\n );\n }\n};\n\nexport const getLockFileContent = (totalTimeout, epochTime) => `${totalTimeout}:${epochTime.toString()}`;\n\nconst parseLockFileContent = (key, content) => $(content, [\n split(':'),\n parts => ({\n totalTimeout: new Number(parts[0]),\n timeout: new Number(parts[1]),\n key,\n }),\n]);\n\nexport const releaseLock = async (app, lock) => {\n const currentEpochTime = await app.getEpochTime();\n // only release if not timedout\n if (currentEpochTime < (lock.timeout - lockOverlapMilliseconds)) {\n try {\n await app.datastore.deleteFile(lock.key);\n } catch (_) {\n //empty\n }\n }\n};\n\nexport const extendLock = async (app, lock) => {\n const currentEpochTime = await app.getEpochTime();\n // only release if not timedout\n if (currentEpochTime < (lock.timeout - lockOverlapMilliseconds)) {\n try {\n lock.timeout = currentEpochTime + lock.timeoutMilliseconds;\n await app.datastore.updateFile(\n lock.key,\n getLockFileContent(lock.totalTimeout, lock.timeout),\n );\n return lock;\n } catch (_) {\n //empty\n }\n }\n return NO_LOCK;\n};\n\nexport const NO_LOCK = 'no lock';\nexport const isNolock = id => id === NO_LOCK;\n\nconst sleepForRetry = () => new Promise(resolve => setTimeout(resolve, lockOverlapMilliseconds));\n","import {\n \n head, \n tail, findIndex, startsWith, \n dropRight, flow, takeRight, trim,\n replace\n \n} from 'lodash';\nimport { \n some, reduce, isEmpty, isArray, join,\n isString, isInteger, isDate, toNumber,\n isUndefined, isNaN, isNull, constant,\n split, includes\n} from 'lodash/fp';\nimport { events, eventsList } from './events';\nimport { apiWrapper } from './apiWrapper';\nimport {\n getLock, NO_LOCK,\n isNolock\n} from './lock';\n\n// this is the combinator function\nexport const $$ = (...funcs) => arg => flow(funcs)(arg);\n\n// this is the pipe function\nexport const $ = (arg, funcs) => $$(...funcs)(arg);\n\nexport const keySep = '/';\nconst trimKeySep = str => trim(str, keySep);\nconst splitByKeySep = str => split(keySep)(str);\nexport const safeKey = key => replace(`${keySep}${trimKeySep(key)}`, `${keySep}${keySep}`, keySep);\nexport const joinKey = (...strs) => {\n const paramsOrArray = strs.length === 1 & isArray(strs[0])\n ? strs[0] : strs;\n return safeKey(join(keySep)(paramsOrArray));\n};\nexport const splitKey = $$(trimKeySep, splitByKeySep);\nexport const getDirFomKey = $$(splitKey, dropRight, p => joinKey(...p));\nexport const getFileFromKey = $$(splitKey, takeRight, head);\n\nexport const configFolder = `${keySep}.config`;\nexport const fieldDefinitions = joinKey(configFolder, 'fields.json');\nexport const templateDefinitions = joinKey(configFolder, 'templates.json');\nexport const appDefinitionFile = joinKey(configFolder, 'appDefinition.json');\nexport const dirIndex = folderPath => joinKey(configFolder, 'dir', ...splitKey(folderPath), 'dir.idx');\nexport const getIndexKeyFromFileKey = $$(getDirFomKey, dirIndex);\n\nexport const ifExists = (val, exists, notExists) => (isUndefined(val)\n ? isUndefined(notExists) ? (() => { })() : notExists()\n : exists());\n\nexport const getOrDefault = (val, defaultVal) => ifExists(val, () => val, () => defaultVal);\n\nexport const not = func => val => !func(val);\nexport const isDefined = not(isUndefined);\nexport const isNonNull = not(isNull);\nexport const isNotNaN = not(isNaN);\n\nexport const allTrue = (...funcArgs) => val => reduce(\n (result, conditionFunc) => (isNull(result) || result == true) && conditionFunc(val),\n null)(funcArgs);\n\nexport const anyTrue = (...funcArgs) => val => reduce(\n (result, conditionFunc) => result == true || conditionFunc(val),\n null)(funcArgs);\n\nexport const insensitiveEquals = (str1, str2) => str1.trim().toLowerCase() === str2.trim().toLowerCase();\n\nexport const isSomething = allTrue(isDefined, isNonNull, isNotNaN);\nexport const isNothing = not(isSomething);\nexport const isNothingOrEmpty = v => isNothing(v) || isEmpty(v);\nexport const somethingOrGetDefault = getDefaultFunc => val => (isSomething(val) ? val : getDefaultFunc());\nexport const somethingOrDefault = (val, defaultVal) => somethingOrGetDefault(constant(defaultVal))(val);\n\nexport const mapIfSomethingOrDefault = (mapFunc, defaultVal) => val => (isSomething(val) ? mapFunc(val) : defaultVal);\n\nexport const mapIfSomethingOrBlank = mapFunc => mapIfSomethingOrDefault(mapFunc, '');\n\nexport const none = predicate => collection => !some(predicate)(collection);\n\nexport const all = predicate => collection => none(v => !predicate(v))(collection);\n\nexport const isNotEmpty = ob => !isEmpty(ob);\nexport const isAsync = fn => fn.constructor.name === 'AsyncFunction';\nexport const isNonEmptyArray = allTrue(isArray, isNotEmpty);\nexport const isNonEmptyString = allTrue(isString, isNotEmpty);\nexport const tryOr = failFunc => (func, ...args) => {\n try {\n return func.apply(null, ...args);\n } catch (_) {\n return failFunc();\n }\n};\n\nexport const tryAwaitOr = failFunc => async (func, ...args) => {\n try {\n return await func.apply(null, ...args);\n } catch (_) {\n return await failFunc();\n }\n};\n\nexport const defineError = (func, errorPrefix) => {\n try {\n return func();\n } catch (err) {\n err.message = `${errorPrefix} : ${err.message}`;\n throw err;\n }\n};\n\nexport const tryOrIgnore = tryOr(() => { });\nexport const tryAwaitOrIgnore = tryAwaitOr(async () => { });\nexport const causesException = (func) => {\n try {\n func();\n return false;\n } catch (e) {\n return true;\n }\n};\n\nexport const executesWithoutException = func => !causesException(func);\n\nexport const handleErrorWith = returnValInError => tryOr(constant(returnValInError));\n\nexport const handleErrorWithUndefined = handleErrorWith(undefined);\n\nexport const switchCase = (...cases) => (value) => {\n const nextCase = () => head(cases)[0](value);\n const nextResult = () => head(cases)[1](value);\n\n if (isEmpty(cases)) return; // undefined\n if (nextCase() === true) return nextResult();\n return switchCase(...tail(cases))(value);\n};\n\nexport const isValue = val1 => val2 => (val1 === val2);\nexport const isOneOf = (...vals) => val => includes(val)(vals);\nexport const defaultCase = constant(true);\nexport const memberMatches = (member, match) => obj => match(obj[member]);\n\n\nexport const StartsWith = searchFor => searchIn => startsWith(searchIn, searchFor);\n\nexport const contains = val => array => (findIndex(array, v => v === val) > -1);\n\nexport const getHashCode = (s) => {\n let hash = 0; let i; let char; let\n l;\n if (s.length == 0) return hash;\n for (i = 0, l = s.length; i < l; i++) {\n char = s.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash |= 0; // Convert to 32bit integer\n }\n\n // converting to string, but dont want a \"-\" prefixed\n if (hash < 0) { return `n${(hash * -1).toString()}`; }\n return hash.toString();\n};\n\n// thanks to https://blog.grossman.io/how-to-write-async-await-without-try-catch-blocks-in-javascript/\nexport const awEx = async (promise) => {\n try {\n const result = await promise;\n return [undefined, result];\n } catch (error) {\n return [error, undefined];\n }\n};\n\nexport const isSafeInteger = n => isInteger(n)\n && n <= Number.MAX_SAFE_INTEGER\n && n >= 0 - Number.MAX_SAFE_INTEGER;\n\nexport const toDateOrNull = s => (isNull(s) ? null\n : isDate(s) ? s : new Date(s));\nexport const toBoolOrNull = s => (isNull(s) ? null\n : s === 'true' || s === true);\nexport const toNumberOrNull = s => (isNull(s) ? null\n : toNumber(s));\n\nexport const isArrayOfString = opts => isArray(opts) && all(isString)(opts);\n\nexport const pause = async duration => new Promise(res => setTimeout(res, duration));\n\nexport const retry = async (fn, retries, delay, ...args) => {\n try {\n return await fn(...args);\n } catch (err) {\n if (retries > 1) {\n return await pause(delay).then(async () => await retry(fn, (retries - 1), delay, ...args));\n }\n throw err;\n }\n};\n\nexport { events } from './events';\nexport { apiWrapper, apiWrapperSync } from './apiWrapper';\nexport {\n getLock, NO_LOCK, releaseLock,\n extendLock, isNolock,\n} from './lock';\n\nexport default {\n ifExists,\n getOrDefault,\n isDefined,\n isNonNull,\n isNotNaN,\n allTrue,\n isSomething,\n mapIfSomethingOrDefault,\n mapIfSomethingOrBlank,\n configFolder,\n fieldDefinitions,\n isNothing,\n not,\n switchCase,\n defaultCase,\n StartsWith,\n contains,\n templateDefinitions,\n handleErrorWith,\n handleErrorWithUndefined,\n tryOr,\n tryOrIgnore,\n tryAwaitOr,\n tryAwaitOrIgnore,\n dirIndex,\n keySep,\n $,\n $$,\n getDirFomKey,\n getFileFromKey,\n splitKey,\n somethingOrDefault,\n getIndexKeyFromFileKey,\n joinKey,\n somethingOrGetDefault,\n appDefinitionFile,\n isValue,\n all,\n isOneOf,\n memberMatches,\n defineError,\n anyTrue,\n isNonEmptyArray,\n causesException,\n executesWithoutException,\n none,\n getHashCode,\n awEx,\n apiWrapper,\n events,\n eventsList,\n isNothingOrEmpty,\n isSafeInteger,\n toNumber,\n toDate: toDateOrNull,\n toBool: toBoolOrNull,\n isArrayOfString,\n getLock,\n NO_LOCK,\n isNolock,\n insensitiveEquals,\n pause,\n retry,\n};\n","import { filter, map } from 'lodash/fp';\nimport { $, isSomething } from './index';\n\nexport const stringNotEmpty = s => isSomething(s) && s.trim().length > 0;\n\nexport const makerule = (field, error, isValid) => ({ field, error, isValid });\n\nexport const validationError = (rule, item) => ({ ...rule, item });\n\nexport const applyRuleSet = ruleSet => itemToValidate => $(ruleSet, [\n map(applyRule(itemToValidate)),\n filter(isSomething),\n]);\n\nexport const applyRule = itemTovalidate => rule => (rule.isValid(itemTovalidate)\n ? null\n : validationError(rule, itemTovalidate));\n","export default (typeof global !== \"undefined\" ? global :\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window : {});\n","var filters = new Map();\nvar limiters = new Map();\n\nfunction filter(name, handler) {\n if (typeof name !== 'string') {\n throw new TypeError('First argument must be a string.');\n }\n if (typeof handler !== 'function') {\n throw new TypeError('Second argument must be a function.');\n }\n if (filters.has(name)) {\n throw new Error((\"A filter named \" + name + \" is already registered.\"));\n }\n filters.set(name, handler);\n}\n\nfunction limiter(name, handler) {\n if (typeof name !== 'string') {\n throw new TypeError('First argument must be a string.');\n }\n if (typeof handler !== 'function') {\n throw new TypeError('Second argument must be a function.');\n }\n if (limiters.has(name)) {\n throw new Error((\"A limiter named \" + name + \" is already registered.\"));\n }\n limiters.set(name, handler);\n}\n\nfunction compileRawExpression(src) {\n return new Function('context', 'tempVars', // eslint-disable-line\n (\"const sandbox = $nxCompileToSandbox(context, tempVars)\\n try { with (sandbox) { return \" + src + \" } } catch (err) {\\n if (!(err instanceof TypeError)) throw err\\n }\\n $nxClearSandbox()\"));\n}\n\nfunction compileRawCode(src) {\n return new Function('context', 'tempVars', // eslint-disable-line\n (\"const sandbox = $nxCompileToSandbox(context, tempVars)\\n with (sandbox) { \" + src + \" }\\n $nxClearSandbox()\"));\n}\n\nvar filterRegex = /(?:[^\\|]|\\|\\|)+/g;\nvar limiterRegex = /(?:[^&]|&&)+/g;\nvar argsRegex = /\\S+/g;\n\nfunction parseExpression(src) {\n var tokens = src.match(filterRegex);\n if (tokens.length === 1) {\n return compileRawExpression(tokens[0]);\n }\n\n var expression = {\n exec: compileRawExpression(tokens[0]),\n filters: []\n };\n for (var i = 1; i < tokens.length; i++) {\n var filterTokens = tokens[i].match(argsRegex);\n var filterName = filterTokens.shift();\n var effect = filters.get(filterName);\n if (!effect) {\n throw new Error((\"There is no filter named: \" + filterName + \".\"));\n }\n expression.filters.push({ effect: effect, argExpressions: filterTokens.map(compileRawExpression) });\n }\n return expression;\n}\n\nfunction parseCode(src) {\n var tokens = src.match(limiterRegex);\n if (tokens.length === 1) {\n return compileRawCode(tokens[0]);\n }\n\n var code = {\n exec: compileRawCode(tokens[0]),\n limiters: []\n };\n for (var i = 1; i < tokens.length; i++) {\n var limiterTokens = tokens[i].match(argsRegex);\n var limiterName = limiterTokens.shift();\n var effect = limiters.get(limiterName);\n if (!effect) {\n throw new Error((\"There is no limiter named: \" + limiterName + \".\"));\n }\n code.limiters.push({ effect: effect, argExpressions: limiterTokens.map(compileRawExpression) });\n }\n return code;\n}\n\nvar expressionCache = new Map();\nvar codeCache = new Map();\n\nfunction compileExpression(src) {\n if (typeof src !== 'string') {\n throw new TypeError('First argument must be a string.');\n }\n var expression = expressionCache.get(src);\n if (!expression) {\n expression = parseExpression(src);\n expressionCache.set(src, expression);\n }\n\n if (typeof expression === 'function') {\n return expression;\n }\n\n return function evaluateExpression(context, tempVars) {\n var value = expression.exec(context, tempVars);\n for (var i = 0, list = expression.filters; i < list.length; i += 1) {\n var filter = list[i];\n\n var args = filter.argExpressions.map(evaluateArgExpression, context);\n value = filter.effect.apply(filter, [ value ].concat( args ));\n }\n return value;\n };\n}\n\nfunction compileCode(src) {\n if (typeof src !== 'string') {\n throw new TypeError('First argument must be a string.');\n }\n var code = codeCache.get(src);\n if (!code) {\n code = parseCode(src);\n codeCache.set(src, code);\n }\n\n if (typeof code === 'function') {\n return code;\n }\n\n var context = {};\n return function evaluateCode(state, tempVars) {\n var i = 0;\n function next() {\n Object.assign(context, tempVars);\n if (i < code.limiters.length) {\n var limiter = code.limiters[i++];\n var args = limiter.argExpressions.map(evaluateArgExpression, state);\n limiter.effect.apply(limiter, [ next, context ].concat( args ));\n } else {\n code.exec(state, tempVars);\n }\n }\n next();\n };\n}\n\nfunction evaluateArgExpression(argExpression) {\n return argExpression(this);\n}\n\nvar hasHandler = { has: has };\nvar allHandlers = { has: has, get: get };\nvar globals = new Set();\nvar temp;\n\nvar globalObj;\nif (typeof window !== 'undefined') { globalObj = window; } // eslint-disable-line\nelse if (typeof global !== 'undefined') { globalObj = global; } // eslint-disable-line\n else if (typeof self !== 'undefined') { globalObj = self; } // eslint-disable-line\nglobalObj.$nxCompileToSandbox = toSandbox;\nglobalObj.$nxClearSandbox = clearSandbox;\n\nfunction expose() {\n var globalNames = [], len = arguments.length;\n while ( len-- ) globalNames[ len ] = arguments[ len ];\n\n for (var i = 0, list = globalNames; i < list.length; i += 1) {\n var globalName = list[i];\n\n globals.add(globalName);\n }\n}\n\nfunction hide() {\n var globalNames = [], len = arguments.length;\n while ( len-- ) globalNames[ len ] = arguments[ len ];\n\n for (var i = 0, list = globalNames; i < list.length; i += 1) {\n var globalName = list[i];\n\n globals.delete(globalName);\n }\n}\n\nfunction hideAll() {\n globals.clear();\n}\n\nfunction has(target, key) {\n return globals.has(key) ? key in target : true;\n}\n\nfunction get(target, key) {\n return key in temp ? temp[key] : target[key];\n}\n\nfunction toSandbox(obj, tempVars) {\n if (tempVars) {\n temp = tempVars;\n return new Proxy(obj, allHandlers);\n }\n return new Proxy(obj, hasHandler);\n}\n\nfunction clearSandbox() {\n temp = undefined;\n}\n\nexport { compileExpression, compileCode, compileRawExpression, compileRawCode, expose, hide, hideAll, filters, limiters, filter, limiter };\n","import { compileExpression, compileCode } from '@nx-js/compiler-util';\nimport {\n isUndefined, keys, \n cloneDeep, isFunction,\n} from 'lodash/fp';\nimport { defineError } from '../common';\n\nexport const filterEval = 'FILTER_EVALUATE';\nexport const filterCompile = 'FILTER_COMPILE';\nexport const mapEval = 'MAP_EVALUATE';\nexport const mapCompile = 'MAP_COMPILE';\nexport const removeUndeclaredFields = 'REMOVE_UNDECLARED_FIELDS';\nexport const addUnMappedFields = 'ADD_UNMAPPED_FIELDS';\nexport const addTheKey = 'ADD_KEY';\n\n\nconst getEvaluateResult = () => ({\n isError: false,\n passedFilter: true,\n result: null,\n});\n\nexport const compileFilter = index => compileExpression(index.filter);\n\nexport const compileMap = index => compileCode(index.map);\n\nexport const passesFilter = (record, index) => {\n const context = { record };\n if (!index.filter) return true;\n\n const compiledFilter = defineError(\n () => compileFilter(index),\n filterCompile,\n );\n\n return defineError(\n () => compiledFilter(context),\n filterEval,\n );\n};\n\nexport const mapRecord = (record, index) => {\n const recordClone = cloneDeep(record);\n const context = { record: recordClone };\n\n const map = index.map ? index.map : 'return {...record};';\n\n const compiledMap = defineError(\n () => compileCode(map),\n mapCompile,\n );\n\n const mapped = defineError(\n () => compiledMap(context),\n mapEval,\n );\n\n const mappedKeys = keys(mapped);\n for (let i = 0; i < mappedKeys.length; i++) {\n const key = mappedKeys[i];\n mapped[key] = isUndefined(mapped[key]) ? null : mapped[key];\n if (isFunction(mapped[key])) {\n delete mapped[key];\n }\n }\n\n mapped.key = record.key;\n mapped.sortKey = index.getSortKey\n ? compileCode(index.getSortKey)(context)\n : record.id;\n\n return mapped;\n};\n\nexport const evaluate = record => (index) => {\n const result = getEvaluateResult();\n\n try {\n result.passedFilter = passesFilter(record, index);\n } catch (err) {\n result.isError = true;\n result.passedFilter = false;\n result.result = err.message;\n }\n\n if (!result.passedFilter) return result;\n\n try {\n result.result = mapRecord(record, index);\n } catch (err) {\n result.isError = true;\n result.result = err.message;\n }\n\n return result;\n};\n\nexport default evaluate;\n","import {\n map, isEmpty, countBy, \n flatten, includes, join, keys\n} from 'lodash/fp';\nimport { } from 'lodash';\nimport { applyRuleSet, makerule } from '../common/validationCommon';\nimport { compileFilter, compileMap } from '../indexing/evaluate';\nimport { isNonEmptyString, executesWithoutException, $ } from '../common';\nimport { isRecord } from './hierarchy';\n\nexport const indexTypes = { reference: 'reference', ancestor: 'ancestor' };\n\nexport const indexRuleSet = [\n makerule('map', 'index has no map function',\n index => isNonEmptyString(index.map)),\n makerule('map', \"index's map function does not compile\",\n index => !isNonEmptyString(index.map)\n || executesWithoutException(() => compileMap(index))),\n makerule('filter', \"index's filter function does not compile\",\n index => !isNonEmptyString(index.filter)\n || executesWithoutException(() => compileFilter(index))),\n makerule('name', 'must declare a name for index',\n index => isNonEmptyString(index.name)),\n makerule('name', 'there is a duplicate named index on this node',\n index => isEmpty(index.name)\n || countBy('name')(index.parent().indexes)[index.name] === 1),\n makerule('indexType', 'reference index may only exist on a record node',\n index => isRecord(index.parent())\n || index.indexType !== indexTypes.reference),\n makerule('indexType', `index type must be one of: ${join(', ')(keys(indexTypes))}`,\n index => includes(index.indexType)(keys(indexTypes))),\n];\n\nexport const validateIndex = (index, allReferenceIndexesOnNode) => applyRuleSet(indexRuleSet(allReferenceIndexesOnNode))(index);\n\nexport const validateAllIndexes = node => $(node.indexes, [\n map(i => validateIndex(i, node.indexes)),\n flatten,\n]);\n","import {\n find, constant, map, last,\n first, split, intersection, take,\n union, includes, filter, some,\n} from 'lodash/fp';\nimport {\n $, switchCase, isNothing, isSomething,\n defaultCase, splitKey, isNonEmptyString,\n joinKey, getHashCode,\n} from '../common';\nimport { indexTypes } from './indexes';\n\nexport const getFlattenedHierarchy = (appHierarchy, useCached = true) => {\n if (isSomething(appHierarchy.getFlattenedHierarchy) && useCached) { return appHierarchy.getFlattenedHierarchy(); }\n\n const flattenHierarchy = (currentNode, flattened) => {\n flattened.push(currentNode);\n if ((!currentNode.children\n || currentNode.children.length === 0)\n && (!currentNode.indexes\n || currentNode.indexes.length === 0)\n && (!currentNode.aggregateGroups\n || currentNode.aggregateGroups.length === 0)) {\n return flattened;\n }\n\n const unionIfAny = l2 => l1 => union(l1)(!l2 ? [] : l2);\n\n const children = $([], [\n unionIfAny(currentNode.children),\n unionIfAny(currentNode.indexes),\n unionIfAny(currentNode.aggregateGroups),\n ]);\n\n for (const child of children) {\n flattenHierarchy(child, flattened);\n }\n return flattened;\n };\n\n appHierarchy.getFlattenedHierarchy = () => flattenHierarchy(appHierarchy, []);\n return appHierarchy.getFlattenedHierarchy();\n};\n\nexport const getLastPartInKey = key => last(splitKey(key));\n\nexport const getNodesInPath = appHierarchy => key => $(appHierarchy, [\n getFlattenedHierarchy,\n filter(n => new RegExp(`${n.pathRegx()}`).test(key)),\n]);\n\nexport const getExactNodeForPath = appHierarchy => key => $(appHierarchy, [\n getFlattenedHierarchy,\n find(n => new RegExp(`${n.pathRegx()}$`).test(key)),\n]);\n\nexport const getNodeForCollectionPath = appHierarchy => collectionKey => $(appHierarchy, [\n getFlattenedHierarchy,\n find(n => (isCollectionRecord(n)\n && new RegExp(`${n.collectionPathRegx()}$`).test(collectionKey))),\n]);\n\nexport const hasMatchingAncestor = ancestorPredicate => decendantNode => switchCase(\n\n [node => isNothing(node.parent()),\n constant(false)],\n\n [node => ancestorPredicate(node.parent()),\n constant(true)],\n\n [defaultCase,\n node => hasMatchingAncestor(ancestorPredicate)(node.parent())],\n\n)(decendantNode);\n\nexport const getNode = (appHierarchy, nodeKey) => $(appHierarchy, [\n getFlattenedHierarchy,\n find(n => n.nodeKey() === nodeKey\n || (isCollectionRecord(n)\n && n.collectionNodeKey() === nodeKey)),\n]);\n\nexport const getCollectionNode = (appHierarchy, nodeKey) => $(appHierarchy, [\n getFlattenedHierarchy,\n find(n => (isCollectionRecord(n)\n && n.collectionNodeKey() === nodeKey)),\n]);\n\nexport const getNodeByKeyOrNodeKey = (appHierarchy, keyOrNodeKey) => {\n const nodeByKey = getExactNodeForPath(appHierarchy)(keyOrNodeKey);\n return isNothing(nodeByKey)\n ? getNode(appHierarchy, keyOrNodeKey)\n : nodeByKey;\n};\n\nexport const getCollectionNodeByKeyOrNodeKey = (appHierarchy, keyOrNodeKey) => {\n const nodeByKey = getNodeForCollectionPath(appHierarchy)(keyOrNodeKey);\n return isNothing(nodeByKey)\n ? getCollectionNode(appHierarchy, keyOrNodeKey)\n : nodeByKey;\n};\n\nexport const isNode = (appHierarchy, key) => isSomething(getExactNodeForPath(appHierarchy)(key));\n\nexport const getActualKeyOfParent = (parentNodeKey, actualChildKey) => $(actualChildKey, [\n splitKey,\n take(splitKey(parentNodeKey).length),\n ks => joinKey(...ks),\n]);\n\nexport const getParentKey = (key) => {\n return $(key, [\n splitKey,\n take(splitKey(key).length - 1),\n joinKey,\n ]);\n};\n\nexport const isKeyAncestorOf = ancestorKey => decendantNode => hasMatchingAncestor(p => p.nodeKey() === ancestorKey)(decendantNode);\n\nexport const hasNoMatchingAncestors = parentPredicate => node => !hasMatchingAncestor(parentPredicate)(node);\n\nexport const findField = (recordNode, fieldName) => find(f => f.name == fieldName)(recordNode.fields);\n\nexport const isAncestor = decendant => ancestor => isKeyAncestorOf(ancestor.nodeKey())(decendant);\n\nexport const isDecendant = ancestor => decendant => isAncestor(decendant)(ancestor);\n\nexport const getRecordNodeId = recordKey => $(recordKey, [\n splitKey,\n last,\n getRecordNodeIdFromId,\n]);\n\nexport const getRecordNodeIdFromId = recordId => $(recordId, [split('-'), first, parseInt]);\n\nexport const getRecordNodeById = (hierarchy, recordId) => $(hierarchy, [\n getFlattenedHierarchy,\n find(n => isRecord(n)\n && n.nodeId === getRecordNodeIdFromId(recordId)),\n]);\n\nexport const recordNodeIdIsAllowed = indexNode => nodeId => indexNode.allowedRecordNodeIds.length === 0\n || includes(nodeId)(indexNode.allowedRecordNodeIds);\n\nexport const recordNodeIsAllowed = indexNode => recordNode => recordNodeIdIsAllowed(indexNode)(recordNode.nodeId);\n\nexport const getAllowedRecordNodesForIndex = (appHierarchy, indexNode) => {\n const recordNodes = $(appHierarchy, [\n getFlattenedHierarchy,\n filter(isRecord),\n ]);\n\n if (isGlobalIndex(indexNode)) {\n return $(recordNodes, [\n filter(recordNodeIsAllowed(indexNode)),\n ]);\n }\n\n if (isAncestorIndex(indexNode)) {\n return $(recordNodes, [\n filter(isDecendant(indexNode.parent())),\n filter(recordNodeIsAllowed(indexNode)),\n ]);\n }\n\n if (isReferenceIndex(indexNode)) {\n return $(recordNodes, [\n filter(n => some(fieldReversesReferenceToIndex(indexNode))(n.fields)),\n ]);\n }\n};\n\nexport const getNodeFromNodeKeyHash = hierarchy => hash => $(hierarchy, [\n getFlattenedHierarchy,\n find(n => getHashCode(n.nodeKey()) === hash),\n]);\n\nexport const isRecord = node => isSomething(node) && node.type === 'record';\nexport const isSingleRecord = node => isRecord(node) && node.isSingle;\nexport const isCollectionRecord = node => isRecord(node) && !node.isSingle;\nexport const isIndex = node => isSomething(node) && node.type === 'index';\nexport const isaggregateGroup = node => isSomething(node) && node.type === 'aggregateGroup';\nexport const isShardedIndex = node => isIndex(node) && isNonEmptyString(node.getShardName);\nexport const isRoot = node => isSomething(node) && node.isRoot();\nexport const isDecendantOfARecord = hasMatchingAncestor(isRecord);\nexport const isGlobalIndex = node => isIndex(node) && isRoot(node.parent());\nexport const isReferenceIndex = node => isIndex(node) && node.indexType === indexTypes.reference;\nexport const isAncestorIndex = node => isIndex(node) && node.indexType === indexTypes.ancestor;\n\nexport const fieldReversesReferenceToNode = node => field => field.type === 'reference'\n && intersection(field.typeOptions.reverseIndexNodeKeys)(map(i => i.nodeKey())(node.indexes))\n .length > 0;\n\nexport const fieldReversesReferenceToIndex = indexNode => field => field.type === 'reference'\n && intersection(field.typeOptions.reverseIndexNodeKeys)([indexNode.nodeKey()])\n .length > 0;\n\nexport default {\n getLastPartInKey,\n getNodesInPath,\n getExactNodeForPath,\n hasMatchingAncestor,\n getNode,\n getNodeByKeyOrNodeKey,\n isNode,\n getActualKeyOfParent,\n getParentKey,\n isKeyAncestorOf,\n hasNoMatchingAncestors,\n findField,\n isAncestor,\n isDecendant,\n getRecordNodeId,\n getRecordNodeIdFromId,\n getRecordNodeById,\n recordNodeIdIsAllowed,\n recordNodeIsAllowed,\n getAllowedRecordNodesForIndex,\n getNodeFromNodeKeyHash,\n isRecord,\n isCollectionRecord,\n isIndex,\n isaggregateGroup,\n isShardedIndex,\n isRoot,\n isDecendantOfARecord,\n isGlobalIndex,\n isReferenceIndex,\n isAncestorIndex,\n fieldReversesReferenceToNode,\n fieldReversesReferenceToIndex,\n getFlattenedHierarchy,\n};\n","import { merge } from 'lodash';\nimport {\n constant, isUndefined, has,\n mapValues, cloneDeep,\n} from 'lodash/fp';\nimport { isNotEmpty } from '../common';\n\nexport const getSafeFieldParser = (tryParse, defaultValueFunctions) => (field, record) => {\n if (has(field.name)(record)) {\n return getSafeValueParser(tryParse, defaultValueFunctions)(record[field.name]);\n }\n return defaultValueFunctions[field.getUndefinedValue]();\n};\n\nexport const getSafeValueParser = (tryParse, defaultValueFunctions) => (value) => {\n const parsed = tryParse(value);\n if (parsed.success) {\n return parsed.value;\n }\n return defaultValueFunctions.default();\n};\n\nexport const getNewValue = (tryParse, defaultValueFunctions) => (field) => {\n const getInitialValue = isUndefined(field) || isUndefined(field.getInitialValue)\n ? 'default'\n : field.getInitialValue;\n\n return has(getInitialValue)(defaultValueFunctions)\n ? defaultValueFunctions[getInitialValue]()\n : getSafeValueParser(tryParse, defaultValueFunctions)(getInitialValue);\n};\n\nexport const typeFunctions = specificFunctions => merge({\n value: constant,\n null: constant(null),\n}, specificFunctions);\n\nexport const validateTypeConstraints = validationRules => async (field, record, context) => {\n const fieldValue = record[field.name];\n const validateRule = async r => (!await r.isValid(fieldValue, field.typeOptions, context)\n ? r.getMessage(fieldValue, field.typeOptions)\n : '');\n\n const errors = [];\n for (const r of validationRules) {\n const err = await validateRule(r);\n if (isNotEmpty(err)) errors.push(err);\n }\n\n return errors;\n};\n\nconst getDefaultOptions = mapValues(v => v.defaultValue);\n\nexport const makerule = (isValid, getMessage) => ({ isValid, getMessage });\nexport const parsedFailed = val => ({ success: false, value: val });\nexport const parsedSuccess = val => ({ success: true, value: val });\nexport const getDefaultExport = (name, tryParse, functions, options, validationRules, sampleValue, stringify) => ({\n getNew: getNewValue(tryParse, functions),\n safeParseField: getSafeFieldParser(tryParse, functions),\n safeParseValue: getSafeValueParser(tryParse, functions),\n tryParse,\n name,\n getDefaultOptions: () => getDefaultOptions(cloneDeep(options)),\n optionDefinitions: options,\n validateTypeConstraints: validateTypeConstraints(validationRules),\n sampleValue,\n stringify: val => (val === null || val === undefined\n ? '' : stringify(val)),\n getDefaultValue: functions.default,\n});\n","import {\n constant, isString,\n isNull, includes, isBoolean,\n} from 'lodash/fp';\nimport {\n typeFunctions,\n makerule, parsedSuccess, getDefaultExport,\n} from './typeHelpers';\nimport {\n switchCase, defaultCase, toBoolOrNull, toNumberOrNull,\n isSafeInteger, isArrayOfString,\n} from '../common';\n\nconst stringFunctions = typeFunctions({\n default: constant(null),\n});\n\nconst stringTryParse = switchCase(\n [isString, parsedSuccess],\n [isNull, parsedSuccess],\n [defaultCase, v => parsedSuccess(v.toString())],\n);\n\nconst options = {\n maxLength: {\n defaultValue: null,\n isValid: n => n === null || isSafeInteger(n) && n > 0,\n requirementDescription: 'max length must be null (no limit) or a greater than zero integer',\n parse: toNumberOrNull,\n },\n values: {\n defaultValue: null,\n isValid: v => v === null || (isArrayOfString(v) && v.length > 0 && v.length < 10000),\n requirementDescription: \"'values' must be null (no values) or an arry of at least one string\",\n parse: s => s,\n },\n allowDeclaredValuesOnly: {\n defaultValue: false,\n isValid: isBoolean,\n requirementDescription: 'allowDeclaredValuesOnly must be true or false',\n parse: toBoolOrNull,\n },\n};\n\nconst typeConstraints = [\n makerule(async (val, opts) => val === null || opts.maxLength === null || val.length <= opts.maxLength,\n (val, opts) => `value exceeds maximum length of ${opts.maxLength}`),\n makerule(async (val, opts) => val === null\n || opts.allowDeclaredValuesOnly === false\n || includes(val)(opts.values),\n (val) => `\"${val}\" does not exist in the list of allowed values`),\n];\n\nexport default getDefaultExport(\n 'string',\n stringTryParse,\n stringFunctions,\n options,\n typeConstraints,\n 'abcde',\n str => str,\n);\n","import { constant, isBoolean, isNull } from 'lodash/fp';\nimport {\n typeFunctions,\n makerule, parsedFailed, parsedSuccess,\n getDefaultExport,\n} from './typeHelpers';\nimport {\n switchCase, defaultCase, isOneOf, toBoolOrNull,\n} from '../common';\n\nconst boolFunctions = typeFunctions({\n default: constant(null),\n});\n\nconst boolTryParse = switchCase(\n [isBoolean, parsedSuccess],\n [isNull, parsedSuccess],\n [isOneOf('true', '1', 'yes', 'on'), () => parsedSuccess(true)],\n [isOneOf('false', '0', 'no', 'off'), () => parsedSuccess(false)],\n [defaultCase, parsedFailed],\n);\n\nconst options = {\n allowNulls: {\n defaultValue: true,\n isValid: isBoolean,\n requirementDescription: 'must be a true or false',\n parse: toBoolOrNull,\n },\n};\n\nconst typeConstraints = [\n makerule(async (val, opts) => opts.allowNulls === true || val !== null,\n () => 'field cannot be null'),\n];\n\nexport default getDefaultExport(\n 'bool', boolTryParse, boolFunctions,\n options, typeConstraints, true, JSON.stringify,\n);\n","import {\n constant, isNumber, isString, isNull,\n} from 'lodash/fp';\nimport {\n makerule, typeFunctions,\n parsedFailed, parsedSuccess, getDefaultExport,\n} from './typeHelpers';\nimport {\n switchCase, defaultCase, toNumberOrNull,\n isSafeInteger,\n} from '../common';\n\nconst numberFunctions = typeFunctions({\n default: constant(null),\n});\n\nconst parseStringtoNumberOrNull = (s) => {\n const num = Number(s);\n return isNaN(num) ? parsedFailed(s) : parsedSuccess(num);\n};\n\nconst numberTryParse = switchCase(\n [isNumber, parsedSuccess],\n [isString, parseStringtoNumberOrNull],\n [isNull, parsedSuccess],\n [defaultCase, parsedFailed],\n);\n\nconst options = {\n maxValue: {\n defaultValue: Number.MAX_SAFE_INTEGER,\n isValid: isSafeInteger,\n requirementDescription: 'must be a valid integer',\n parse: toNumberOrNull,\n },\n minValue: {\n defaultValue: 0 - Number.MAX_SAFE_INTEGER,\n isValid: isSafeInteger,\n requirementDescription: 'must be a valid integer',\n parse: toNumberOrNull,\n },\n decimalPlaces: {\n defaultValue: 0,\n isValid: n => isSafeInteger(n) && n >= 0,\n requirementDescription: 'must be a positive integer',\n parse: toNumberOrNull,\n },\n};\n\nconst getDecimalPlaces = (val) => {\n const splitDecimal = val.toString().split('.');\n if (splitDecimal.length === 1) return 0;\n return splitDecimal[1].length;\n};\n\nconst typeConstraints = [\n makerule(async (val, opts) => val === null || opts.minValue === null || val >= opts.minValue,\n (val, opts) => `value (${val.toString()}) must be greater than or equal to ${opts.minValue}`),\n makerule(async (val, opts) => val === null || opts.maxValue === null || val <= opts.maxValue,\n (val, opts) => `value (${val.toString()}) must be less than or equal to ${opts.minValue} options`),\n makerule(async (val, opts) => val === null || opts.decimalPlaces >= getDecimalPlaces(val),\n (val, opts) => `value (${val.toString()}) must have ${opts.decimalPlaces} decimal places or less`),\n];\n\nexport default getDefaultExport(\n 'number',\n numberTryParse,\n numberFunctions,\n options,\n typeConstraints,\n 1,\n num => num.toString(),\n);\n","import {\n constant, isDate, isString, isNull\n} from 'lodash/fp';\nimport {\n makerule, typeFunctions,\n parsedFailed, parsedSuccess, getDefaultExport,\n} from './typeHelpers';\nimport {\n switchCase, defaultCase, toDateOrNull,\n} from '../common';\n\nconst dateFunctions = typeFunctions({\n default: constant(null),\n now: () => new Date(),\n});\n\nconst isValidDate = d => d instanceof Date && !isNaN(d);\n\nconst parseStringToDate = s => switchCase(\n [isValidDate, parsedSuccess],\n [defaultCase, parsedFailed],\n)(new Date(s));\n\n\nconst dateTryParse = switchCase(\n [isDate, parsedSuccess],\n [isString, parseStringToDate],\n [isNull, parsedSuccess],\n [defaultCase, parsedFailed],\n);\n\nconst options = {\n maxValue: {\n defaultValue: new Date(32503680000000),\n isValid: isDate,\n requirementDescription: 'must be a valid date',\n parse: toDateOrNull,\n },\n minValue: {\n defaultValue: new Date(-8520336000000),\n isValid: isDate,\n requirementDescription: 'must be a valid date',\n parse: toDateOrNull,\n },\n};\n\nconst typeConstraints = [\n makerule(async (val, opts) => val === null || opts.minValue === null || val >= opts.minValue,\n (val, opts) => `value (${val.toString()}) must be greater than or equal to ${opts.minValue}`),\n makerule(async (val, opts) => val === null || opts.maxValue === null || val <= opts.maxValue,\n (val, opts) => `value (${val.toString()}) must be less than or equal to ${opts.minValue} options`),\n];\n\nexport default getDefaultExport(\n 'datetime',\n dateTryParse,\n dateFunctions,\n options,\n typeConstraints,\n new Date(1984, 4, 1),\n date => JSON.stringify(date).replace(new RegExp('\"', 'g'), ''),\n);\n","import { \n map, constant, isArray \n} from 'lodash/fp';\nimport {\n typeFunctions, makerule,\n parsedFailed, getDefaultExport, parsedSuccess,\n} from './typeHelpers';\nimport {\n switchCase, defaultCase, toNumberOrNull,\n $$, isSafeInteger,\n} from '../common';\n\nconst arrayFunctions = () => typeFunctions({\n default: constant([]),\n});\n\nconst mapToParsedArrary = type => $$(\n map(i => type.safeParseValue(i)),\n parsedSuccess,\n);\n\nconst arrayTryParse = type => switchCase(\n [isArray, mapToParsedArrary(type)],\n [defaultCase, parsedFailed],\n);\n\nconst typeName = type => `array<${type}>`;\n\n\nconst options = {\n maxLength: {\n defaultValue: 10000,\n isValid: isSafeInteger,\n requirementDescription: 'must be a positive integer',\n parse: toNumberOrNull,\n },\n minLength: {\n defaultValue: 0,\n isValid: n => isSafeInteger(n) && n >= 0,\n requirementDescription: 'must be a positive integer',\n parse: toNumberOrNull,\n },\n};\n\nconst typeConstraints = [\n makerule(async (val, opts) => val === null || val.length >= opts.minLength,\n (val, opts) => `must choose ${opts.minLength} or more options`),\n makerule(async (val, opts) => val === null || val.length <= opts.maxLength,\n (val, opts) => `cannot choose more than ${opts.maxLength} options`),\n];\n\nexport default type => getDefaultExport(\n typeName(type.name),\n arrayTryParse(type),\n arrayFunctions(type),\n options,\n typeConstraints,\n [type.sampleValue],\n JSON.stringify,\n);\n","import {\n isString, isObjectLike,\n isNull, has, isEmpty,\n} from 'lodash/fp';\nimport {\n typeFunctions, makerule,\n parsedSuccess, getDefaultExport,\n parsedFailed,\n} from './typeHelpers';\nimport {\n switchCase, defaultCase,\n isNonEmptyString, isArrayOfString,\n} from '../common';\n\nconst referenceNothing = () => ({ key: '' });\n\nconst referenceFunctions = typeFunctions({\n default: referenceNothing,\n});\n\nconst hasStringValue = (ob, path) => has(path)(ob)\n && isString(ob[path]);\n\nconst isObjectWithKey = v => isObjectLike(v)\n && hasStringValue(v, 'key');\n\nconst tryParseFromString = s => {\n\n try {\n const asObj = JSON.parse(s);\n if(isObjectWithKey) {\n return parsedSuccess(asObj);\n }\n }\n catch(_) {\n // EMPTY\n }\n\n return parsedFailed(s);\n}\n\nconst referenceTryParse = v => switchCase(\n [isObjectWithKey, parsedSuccess],\n [isString, tryParseFromString],\n [isNull, () => parsedSuccess(referenceNothing())],\n [defaultCase, parsedFailed],\n)(v);\n\nconst options = {\n indexNodeKey: {\n defaultValue: null,\n isValid: isNonEmptyString,\n requirementDescription: 'must be a non-empty string',\n parse: s => s,\n },\n displayValue: {\n defaultValue: '',\n isValid: isNonEmptyString,\n requirementDescription: 'must be a non-empty string',\n parse: s => s,\n },\n reverseIndexNodeKeys: {\n defaultValue: null,\n isValid: v => isArrayOfString(v) && v.length > 0,\n requirementDescription: 'must be a non-empty array of strings',\n parse: s => s,\n },\n};\n\nconst isEmptyString = s => isString(s) && isEmpty(s);\n\nconst ensureReferenceExists = async (val, opts, context) => isEmptyString(val.key)\n || await context.referenceExists(opts, val.key);\n\nconst typeConstraints = [\n makerule(\n ensureReferenceExists,\n (val, opts) => `\"${val[opts.displayValue]}\" does not exist in options list (key: ${val.key})`,\n ),\n];\n\nexport default getDefaultExport(\n 'reference',\n referenceTryParse,\n referenceFunctions,\n options,\n typeConstraints,\n { key: 'key', value: 'value' },\n JSON.stringify,\n);\n","import {\n last, has, isString, intersection,\n isNull, isNumber,\n} from 'lodash/fp';\nimport {\n typeFunctions, parsedFailed,\n parsedSuccess, getDefaultExport,\n} from './typeHelpers';\nimport {\n switchCase, defaultCase, none,\n $, splitKey,\n} from '../common';\n\nconst illegalCharacters = '*?\\\\/:<>|\\0\\b\\f\\v';\n\nexport const isLegalFilename = (filePath) => {\n const fn = fileName(filePath);\n return fn.length <= 255\n && intersection(fn.split(''))(illegalCharacters.split('')).length === 0\n && none(f => f === '..')(splitKey(filePath));\n};\n\nconst fileNothing = () => ({ relativePath: '', size: 0 });\n\nconst fileFunctions = typeFunctions({\n default: fileNothing,\n});\n\nconst fileTryParse = v => switchCase(\n [isValidFile, parsedSuccess],\n [isNull, () => parsedSuccess(fileNothing())],\n [defaultCase, parsedFailed],\n)(v);\n\nconst fileName = filePath => $(filePath, [\n splitKey,\n last,\n]);\n\nconst isValidFile = f => !isNull(f)\n && has('relativePath')(f) && has('size')(f)\n && isNumber(f.size)\n && isString(f.relativePath)\n && isLegalFilename(f.relativePath);\n\nconst options = {};\n\nconst typeConstraints = [];\n\nexport default getDefaultExport(\n 'file',\n fileTryParse,\n fileFunctions,\n options,\n typeConstraints,\n { relativePath: 'some_file.jpg', size: 1000 },\n JSON.stringify,\n);\n","import {\n assign, merge, \n} from 'lodash';\nimport {\n map, isString, isNumber,\n isBoolean, isDate, keys,\n isObject, isArray, has\n} from 'lodash/fp';\nimport { $ } from '../common';\nimport { parsedSuccess } from './typeHelpers';\nimport string from './string';\nimport bool from './bool';\nimport number from './number';\nimport datetime from './datetime';\nimport array from './array';\nimport reference from './reference';\nimport file from './file';\nimport { BadRequestError } from '../common/errors';\n\nconst allTypes = () => {\n const basicTypes = {\n string, number, datetime, bool, reference, file,\n };\n\n const arrays = $(basicTypes, [\n keys,\n map((k) => {\n const kvType = {};\n const concreteArray = array(basicTypes[k]);\n kvType[concreteArray.name] = concreteArray;\n return kvType;\n }),\n types => assign({}, ...types),\n ]);\n\n return merge({}, basicTypes, arrays);\n};\n\n\nexport const all = allTypes();\n\nexport const getType = (typeName) => {\n if (!has(typeName)(all)) throw new BadRequestError(`Do not recognise type ${typeName}`);\n return all[typeName];\n};\n\nexport const getSampleFieldValue = field => getType(field.type).sampleValue;\n\nexport const getNewFieldValue = field => getType(field.type).getNew(field);\n\nexport const safeParseField = (field, record) => getType(field.type).safeParseField(field, record);\n\nexport const validateFieldParse = (field, record) => (has(field.name)(record)\n ? getType(field.type).tryParse(record[field.name])\n : parsedSuccess(undefined)); // fields may be undefined by default\n\nexport const getDefaultOptions = type => getType(type).getDefaultOptions();\n\nexport const validateTypeConstraints = async (field, record, context) => await getType(field.type).validateTypeConstraints(field, record, context);\n\nexport const detectType = (value) => {\n if (isString(value)) return string;\n if (isBoolean(value)) return bool;\n if (isNumber(value)) return number;\n if (isDate(value)) return datetime;\n if (isArray(value)) return array(detectType(value[0]));\n if (isObject(value)\n && has('key')(value)\n && has('value')(value)) return reference;\n if (isObject(value)\n && has('relativePath')(value)\n && has('size')(value)) return file;\n\n throw new BadRequestError(`cannot determine type: ${JSON.stringify(value)}`);\n};\n","import { clone, find, split } from 'lodash/fp';\nimport { joinKey, $ } from '../common';\n// 5 minutes\nexport const tempCodeExpiryLength = 5 * 60 * 1000;\n\nexport const AUTH_FOLDER = '/.auth';\nexport const USERS_LIST_FILE = joinKey(AUTH_FOLDER, 'users.json');\nexport const userAuthFile = username => joinKey(AUTH_FOLDER, `auth_${username}.json`);\nexport const USERS_LOCK_FILE = joinKey(AUTH_FOLDER, 'users_lock');\nexport const ACCESS_LEVELS_FILE = joinKey(AUTH_FOLDER, 'access_levels.json');\nexport const ACCESS_LEVELS_LOCK_FILE = joinKey(AUTH_FOLDER, 'access_levels_lock');\n\nexport const permissionTypes = {\n CREATE_RECORD: 'create record',\n UPDATE_RECORD: 'update record',\n READ_RECORD: 'read record',\n DELETE_RECORD: 'delete record',\n READ_INDEX: 'read index',\n MANAGE_INDEX: 'manage index',\n MANAGE_COLLECTION: 'manage collection',\n WRITE_TEMPLATES: 'write templates',\n CREATE_USER: 'create user',\n SET_PASSWORD: 'set password',\n CREATE_TEMPORARY_ACCESS: 'create temporary access',\n ENABLE_DISABLE_USER: 'enable or disable user',\n WRITE_ACCESS_LEVELS: 'write access levels',\n LIST_USERS: 'list users',\n LIST_ACCESS_LEVELS: 'list access levels',\n EXECUTE_ACTION: 'execute action',\n SET_USER_ACCESS_LEVELS: 'set user access levels',\n};\n\nexport const getUserByName = (users, name) => $(users, [\n find(u => u.name.toLowerCase() === name.toLowerCase()),\n]);\n\nexport const stripUserOfSensitiveStuff = (user) => {\n const stripped = clone(user);\n delete stripped.tempCode;\n return stripped;\n};\n\nexport const parseTemporaryCode = fullCode => $(fullCode, [\n split(':'),\n parts => ({\n id: parts[1],\n code: parts[2],\n }),\n]);\n","import { values, includes, some } from 'lodash/fp';\nimport { permissionTypes } from './authCommon';\nimport {\n $, isNothing, apiWrapperSync, events,\n} from '../common';\nimport { getNodeByKeyOrNodeKey, isNode } from '../templateApi/hierarchy';\nimport { alwaysAuthorized } from './permissions';\n\nexport const isAuthorized = app => (permissionType, resourceKey) => apiWrapperSync(\n app,\n events.authApi.isAuthorized,\n alwaysAuthorized,\n { resourceKey, permissionType },\n _isAuthorized, app, permissionType, resourceKey,\n);\n\nexport const _isAuthorized = (app, permissionType, resourceKey) => {\n if (!app.user) {\n return false;\n }\n\n const validType = $(permissionTypes, [\n values,\n includes(permissionType),\n ]);\n\n if (!validType) {\n return false;\n }\n\n const permMatchesResource = (userperm) => {\n const nodeKey = isNothing(resourceKey)\n ? null\n : isNode(app.hierarchy, resourceKey)\n ? getNodeByKeyOrNodeKey(\n app.hierarchy, resourceKey,\n ).nodeKey()\n : resourceKey;\n\n return (userperm.type === permissionType)\n && (\n isNothing(resourceKey)\n || nodeKey === userperm.nodeKey\n );\n };\n\n return $(app.user.permissions, [\n some(permMatchesResource),\n ]);\n};\n","import { permissionTypes } from './authCommon';\nimport { isAuthorized } from './isAuthorized';\n\nexport const temporaryAccessPermissions = () => ([{ type: permissionTypes.SET_PASSWORD }]);\n\nconst nodePermission = type => ({\n add: (nodeKey, accessLevel) => accessLevel.permissions.push({ type, nodeKey }),\n isAuthorized: resourceKey => app => isAuthorized(app)(type, resourceKey),\n isNode: true,\n get: nodeKey => ({ type, nodeKey }),\n});\n\nconst staticPermission = type => ({\n add: accessLevel => accessLevel.permissions.push({ type }),\n isAuthorized: app => isAuthorized(app)(type),\n isNode: false,\n get: () => ({ type }),\n});\n\nconst createRecord = nodePermission(permissionTypes.CREATE_RECORD);\n\nconst updateRecord = nodePermission(permissionTypes.UPDATE_RECORD);\n\nconst deleteRecord = nodePermission(permissionTypes.DELETE_RECORD);\n\nconst readRecord = nodePermission(permissionTypes.READ_RECORD);\n\nconst writeTemplates = staticPermission(permissionTypes.WRITE_TEMPLATES);\n\nconst createUser = staticPermission(permissionTypes.CREATE_USER);\n\nconst setPassword = staticPermission(permissionTypes.SET_PASSWORD);\n\nconst readIndex = nodePermission(permissionTypes.READ_INDEX);\n\nconst manageIndex = staticPermission(permissionTypes.MANAGE_INDEX);\n\nconst manageCollection = staticPermission(permissionTypes.MANAGE_COLLECTION);\n\nconst createTemporaryAccess = staticPermission(permissionTypes.CREATE_TEMPORARY_ACCESS);\n\nconst enableDisableUser = staticPermission(permissionTypes.ENABLE_DISABLE_USER);\n\nconst writeAccessLevels = staticPermission(permissionTypes.WRITE_ACCESS_LEVELS);\n\nconst listUsers = staticPermission(permissionTypes.LIST_USERS);\n\nconst listAccessLevels = staticPermission(permissionTypes.LIST_ACCESS_LEVELS);\n\nconst setUserAccessLevels = staticPermission(permissionTypes.SET_USER_ACCESS_LEVELS);\n\nconst executeAction = nodePermission(permissionTypes.EXECUTE_ACTION);\n\nexport const alwaysAuthorized = () => true;\n\nexport const permission = {\n createRecord,\n updateRecord,\n deleteRecord,\n readRecord,\n writeTemplates,\n createUser,\n setPassword,\n readIndex,\n createTemporaryAccess,\n enableDisableUser,\n writeAccessLevels,\n listUsers,\n listAccessLevels,\n manageIndex,\n manageCollection,\n executeAction,\n setUserAccessLevels,\n};\n","/**\n * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.6\n * Copyright (C) 2019 Oliver Nightingale\n * @license MIT\n */\n\n;(function(){\n\n/**\n * A convenience function for configuring and constructing\n * a new lunr Index.\n *\n * A lunr.Builder instance is created and the pipeline setup\n * with a trimmer, stop word filter and stemmer.\n *\n * This builder object is yielded to the configuration function\n * that is passed as a parameter, allowing the list of fields\n * and other builder parameters to be customised.\n *\n * All documents _must_ be added within the passed config function.\n *\n * @example\n * var idx = lunr(function () {\n * this.field('title')\n * this.field('body')\n * this.ref('id')\n *\n * documents.forEach(function (doc) {\n * this.add(doc)\n * }, this)\n * })\n *\n * @see {@link lunr.Builder}\n * @see {@link lunr.Pipeline}\n * @see {@link lunr.trimmer}\n * @see {@link lunr.stopWordFilter}\n * @see {@link lunr.stemmer}\n * @namespace {function} lunr\n */\nvar lunr = function (config) {\n var builder = new lunr.Builder\n\n builder.pipeline.add(\n lunr.trimmer,\n lunr.stopWordFilter,\n lunr.stemmer\n )\n\n builder.searchPipeline.add(\n lunr.stemmer\n )\n\n config.call(builder, builder)\n return builder.build()\n}\n\nlunr.version = \"2.3.6\"\n/*!\n * lunr.utils\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * A namespace containing utils for the rest of the lunr library\n * @namespace lunr.utils\n */\nlunr.utils = {}\n\n/**\n * Print a warning message to the console.\n *\n * @param {String} message The message to be printed.\n * @memberOf lunr.utils\n * @function\n */\nlunr.utils.warn = (function (global) {\n /* eslint-disable no-console */\n return function (message) {\n if (global.console && console.warn) {\n console.warn(message)\n }\n }\n /* eslint-enable no-console */\n})(this)\n\n/**\n * Convert an object to a string.\n *\n * In the case of `null` and `undefined` the function returns\n * the empty string, in all other cases the result of calling\n * `toString` on the passed object is returned.\n *\n * @param {Any} obj The object to convert to a string.\n * @return {String} string representation of the passed object.\n * @memberOf lunr.utils\n */\nlunr.utils.asString = function (obj) {\n if (obj === void 0 || obj === null) {\n return \"\"\n } else {\n return obj.toString()\n }\n}\n\n/**\n * Clones an object.\n *\n * Will create a copy of an existing object such that any mutations\n * on the copy cannot affect the original.\n *\n * Only shallow objects are supported, passing a nested object to this\n * function will cause a TypeError.\n *\n * Objects with primitives, and arrays of primitives are supported.\n *\n * @param {Object} obj The object to clone.\n * @return {Object} a clone of the passed object.\n * @throws {TypeError} when a nested object is passed.\n * @memberOf Utils\n */\nlunr.utils.clone = function (obj) {\n if (obj === null || obj === undefined) {\n return obj\n }\n\n var clone = Object.create(null),\n keys = Object.keys(obj)\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i],\n val = obj[key]\n\n if (Array.isArray(val)) {\n clone[key] = val.slice()\n continue\n }\n\n if (typeof val === 'string' ||\n typeof val === 'number' ||\n typeof val === 'boolean') {\n clone[key] = val\n continue\n }\n\n throw new TypeError(\"clone is not deep and does not support nested objects\")\n }\n\n return clone\n}\nlunr.FieldRef = function (docRef, fieldName, stringValue) {\n this.docRef = docRef\n this.fieldName = fieldName\n this._stringValue = stringValue\n}\n\nlunr.FieldRef.joiner = \"/\"\n\nlunr.FieldRef.fromString = function (s) {\n var n = s.indexOf(lunr.FieldRef.joiner)\n\n if (n === -1) {\n throw \"malformed field ref string\"\n }\n\n var fieldRef = s.slice(0, n),\n docRef = s.slice(n + 1)\n\n return new lunr.FieldRef (docRef, fieldRef, s)\n}\n\nlunr.FieldRef.prototype.toString = function () {\n if (this._stringValue == undefined) {\n this._stringValue = this.fieldName + lunr.FieldRef.joiner + this.docRef\n }\n\n return this._stringValue\n}\n/*!\n * lunr.Set\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * A lunr set.\n *\n * @constructor\n */\nlunr.Set = function (elements) {\n this.elements = Object.create(null)\n\n if (elements) {\n this.length = elements.length\n\n for (var i = 0; i < this.length; i++) {\n this.elements[elements[i]] = true\n }\n } else {\n this.length = 0\n }\n}\n\n/**\n * A complete set that contains all elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\nlunr.Set.complete = {\n intersect: function (other) {\n return other\n },\n\n union: function (other) {\n return other\n },\n\n contains: function () {\n return true\n }\n}\n\n/**\n * An empty set that contains no elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\nlunr.Set.empty = {\n intersect: function () {\n return this\n },\n\n union: function (other) {\n return other\n },\n\n contains: function () {\n return false\n }\n}\n\n/**\n * Returns true if this set contains the specified object.\n *\n * @param {object} object - Object whose presence in this set is to be tested.\n * @returns {boolean} - True if this set contains the specified object.\n */\nlunr.Set.prototype.contains = function (object) {\n return !!this.elements[object]\n}\n\n/**\n * Returns a new set containing only the elements that are present in both\n * this set and the specified set.\n *\n * @param {lunr.Set} other - set to intersect with this set.\n * @returns {lunr.Set} a new set that is the intersection of this and the specified set.\n */\n\nlunr.Set.prototype.intersect = function (other) {\n var a, b, elements, intersection = []\n\n if (other === lunr.Set.complete) {\n return this\n }\n\n if (other === lunr.Set.empty) {\n return other\n }\n\n if (this.length < other.length) {\n a = this\n b = other\n } else {\n a = other\n b = this\n }\n\n elements = Object.keys(a.elements)\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i]\n if (element in b.elements) {\n intersection.push(element)\n }\n }\n\n return new lunr.Set (intersection)\n}\n\n/**\n * Returns a new set combining the elements of this and the specified set.\n *\n * @param {lunr.Set} other - set to union with this set.\n * @return {lunr.Set} a new set that is the union of this and the specified set.\n */\n\nlunr.Set.prototype.union = function (other) {\n if (other === lunr.Set.complete) {\n return lunr.Set.complete\n }\n\n if (other === lunr.Set.empty) {\n return this\n }\n\n return new lunr.Set(Object.keys(this.elements).concat(Object.keys(other.elements)))\n}\n/**\n * A function to calculate the inverse document frequency for\n * a posting. This is shared between the builder and the index\n *\n * @private\n * @param {object} posting - The posting for a given term\n * @param {number} documentCount - The total number of documents.\n */\nlunr.idf = function (posting, documentCount) {\n var documentsWithTerm = 0\n\n for (var fieldName in posting) {\n if (fieldName == '_index') continue // Ignore the term index, its not a field\n documentsWithTerm += Object.keys(posting[fieldName]).length\n }\n\n var x = (documentCount - documentsWithTerm + 0.5) / (documentsWithTerm + 0.5)\n\n return Math.log(1 + Math.abs(x))\n}\n\n/**\n * A token wraps a string representation of a token\n * as it is passed through the text processing pipeline.\n *\n * @constructor\n * @param {string} [str=''] - The string token being wrapped.\n * @param {object} [metadata={}] - Metadata associated with this token.\n */\nlunr.Token = function (str, metadata) {\n this.str = str || \"\"\n this.metadata = metadata || {}\n}\n\n/**\n * Returns the token string that is being wrapped by this object.\n *\n * @returns {string}\n */\nlunr.Token.prototype.toString = function () {\n return this.str\n}\n\n/**\n * A token update function is used when updating or optionally\n * when cloning a token.\n *\n * @callback lunr.Token~updateFunction\n * @param {string} str - The string representation of the token.\n * @param {Object} metadata - All metadata associated with this token.\n */\n\n/**\n * Applies the given function to the wrapped string token.\n *\n * @example\n * token.update(function (str, metadata) {\n * return str.toUpperCase()\n * })\n *\n * @param {lunr.Token~updateFunction} fn - A function to apply to the token string.\n * @returns {lunr.Token}\n */\nlunr.Token.prototype.update = function (fn) {\n this.str = fn(this.str, this.metadata)\n return this\n}\n\n/**\n * Creates a clone of this token. Optionally a function can be\n * applied to the cloned token.\n *\n * @param {lunr.Token~updateFunction} [fn] - An optional function to apply to the cloned token.\n * @returns {lunr.Token}\n */\nlunr.Token.prototype.clone = function (fn) {\n fn = fn || function (s) { return s }\n return new lunr.Token (fn(this.str, this.metadata), this.metadata)\n}\n/*!\n * lunr.tokenizer\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * A function for splitting a string into tokens ready to be inserted into\n * the search index. Uses `lunr.tokenizer.separator` to split strings, change\n * the value of this property to change how strings are split into tokens.\n *\n * This tokenizer will convert its parameter to a string by calling `toString` and\n * then will split this string on the character in `lunr.tokenizer.separator`.\n * Arrays will have their elements converted to strings and wrapped in a lunr.Token.\n *\n * Optional metadata can be passed to the tokenizer, this metadata will be cloned and\n * added as metadata to every token that is created from the object to be tokenized.\n *\n * @static\n * @param {?(string|object|object[])} obj - The object to convert into tokens\n * @param {?object} metadata - Optional metadata to associate with every token\n * @returns {lunr.Token[]}\n * @see {@link lunr.Pipeline}\n */\nlunr.tokenizer = function (obj, metadata) {\n if (obj == null || obj == undefined) {\n return []\n }\n\n if (Array.isArray(obj)) {\n return obj.map(function (t) {\n return new lunr.Token(\n lunr.utils.asString(t).toLowerCase(),\n lunr.utils.clone(metadata)\n )\n })\n }\n\n var str = obj.toString().trim().toLowerCase(),\n len = str.length,\n tokens = []\n\n for (var sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) {\n var char = str.charAt(sliceEnd),\n sliceLength = sliceEnd - sliceStart\n\n if ((char.match(lunr.tokenizer.separator) || sliceEnd == len)) {\n\n if (sliceLength > 0) {\n var tokenMetadata = lunr.utils.clone(metadata) || {}\n tokenMetadata[\"position\"] = [sliceStart, sliceLength]\n tokenMetadata[\"index\"] = tokens.length\n\n tokens.push(\n new lunr.Token (\n str.slice(sliceStart, sliceEnd),\n tokenMetadata\n )\n )\n }\n\n sliceStart = sliceEnd + 1\n }\n\n }\n\n return tokens\n}\n\n/**\n * The separator used to split a string into tokens. Override this property to change the behaviour of\n * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens.\n *\n * @static\n * @see lunr.tokenizer\n */\nlunr.tokenizer.separator = /[\\s\\-]+/\n/*!\n * lunr.Pipeline\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * lunr.Pipelines maintain an ordered list of functions to be applied to all\n * tokens in documents entering the search index and queries being ran against\n * the index.\n *\n * An instance of lunr.Index created with the lunr shortcut will contain a\n * pipeline with a stop word filter and an English language stemmer. Extra\n * functions can be added before or after either of these functions or these\n * default functions can be removed.\n *\n * When run the pipeline will call each function in turn, passing a token, the\n * index of that token in the original list of all tokens and finally a list of\n * all the original tokens.\n *\n * The output of functions in the pipeline will be passed to the next function\n * in the pipeline. To exclude a token from entering the index the function\n * should return undefined, the rest of the pipeline will not be called with\n * this token.\n *\n * For serialisation of pipelines to work, all functions used in an instance of\n * a pipeline should be registered with lunr.Pipeline. Registered functions can\n * then be loaded. If trying to load a serialised pipeline that uses functions\n * that are not registered an error will be thrown.\n *\n * If not planning on serialising the pipeline then registering pipeline functions\n * is not necessary.\n *\n * @constructor\n */\nlunr.Pipeline = function () {\n this._stack = []\n}\n\nlunr.Pipeline.registeredFunctions = Object.create(null)\n\n/**\n * A pipeline function maps lunr.Token to lunr.Token. A lunr.Token contains the token\n * string as well as all known metadata. A pipeline function can mutate the token string\n * or mutate (or add) metadata for a given token.\n *\n * A pipeline function can indicate that the passed token should be discarded by returning\n * null. This token will not be passed to any downstream pipeline functions and will not be\n * added to the index.\n *\n * Multiple tokens can be returned by returning an array of tokens. Each token will be passed\n * to any downstream pipeline functions and all will returned tokens will be added to the index.\n *\n * Any number of pipeline functions may be chained together using a lunr.Pipeline.\n *\n * @interface lunr.PipelineFunction\n * @param {lunr.Token} token - A token from the document being processed.\n * @param {number} i - The index of this token in the complete list of tokens for this document/field.\n * @param {lunr.Token[]} tokens - All tokens for this document/field.\n * @returns {(?lunr.Token|lunr.Token[])}\n */\n\n/**\n * Register a function with the pipeline.\n *\n * Functions that are used in the pipeline should be registered if the pipeline\n * needs to be serialised, or a serialised pipeline needs to be loaded.\n *\n * Registering a function does not add it to a pipeline, functions must still be\n * added to instances of the pipeline for them to be used when running a pipeline.\n *\n * @param {lunr.PipelineFunction} fn - The function to check for.\n * @param {String} label - The label to register this function with\n */\nlunr.Pipeline.registerFunction = function (fn, label) {\n if (label in this.registeredFunctions) {\n lunr.utils.warn('Overwriting existing registered function: ' + label)\n }\n\n fn.label = label\n lunr.Pipeline.registeredFunctions[fn.label] = fn\n}\n\n/**\n * Warns if the function is not registered as a Pipeline function.\n *\n * @param {lunr.PipelineFunction} fn - The function to check for.\n * @private\n */\nlunr.Pipeline.warnIfFunctionNotRegistered = function (fn) {\n var isRegistered = fn.label && (fn.label in this.registeredFunctions)\n\n if (!isRegistered) {\n lunr.utils.warn('Function is not registered with pipeline. This may cause problems when serialising the index.\\n', fn)\n }\n}\n\n/**\n * Loads a previously serialised pipeline.\n *\n * All functions to be loaded must already be registered with lunr.Pipeline.\n * If any function from the serialised data has not been registered then an\n * error will be thrown.\n *\n * @param {Object} serialised - The serialised pipeline to load.\n * @returns {lunr.Pipeline}\n */\nlunr.Pipeline.load = function (serialised) {\n var pipeline = new lunr.Pipeline\n\n serialised.forEach(function (fnName) {\n var fn = lunr.Pipeline.registeredFunctions[fnName]\n\n if (fn) {\n pipeline.add(fn)\n } else {\n throw new Error('Cannot load unregistered function: ' + fnName)\n }\n })\n\n return pipeline\n}\n\n/**\n * Adds new functions to the end of the pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction[]} functions - Any number of functions to add to the pipeline.\n */\nlunr.Pipeline.prototype.add = function () {\n var fns = Array.prototype.slice.call(arguments)\n\n fns.forEach(function (fn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(fn)\n this._stack.push(fn)\n }, this)\n}\n\n/**\n * Adds a single function after a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.\n * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.\n */\nlunr.Pipeline.prototype.after = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn)\n\n var pos = this._stack.indexOf(existingFn)\n if (pos == -1) {\n throw new Error('Cannot find existingFn')\n }\n\n pos = pos + 1\n this._stack.splice(pos, 0, newFn)\n}\n\n/**\n * Adds a single function before a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.\n * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.\n */\nlunr.Pipeline.prototype.before = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn)\n\n var pos = this._stack.indexOf(existingFn)\n if (pos == -1) {\n throw new Error('Cannot find existingFn')\n }\n\n this._stack.splice(pos, 0, newFn)\n}\n\n/**\n * Removes a function from the pipeline.\n *\n * @param {lunr.PipelineFunction} fn The function to remove from the pipeline.\n */\nlunr.Pipeline.prototype.remove = function (fn) {\n var pos = this._stack.indexOf(fn)\n if (pos == -1) {\n return\n }\n\n this._stack.splice(pos, 1)\n}\n\n/**\n * Runs the current list of functions that make up the pipeline against the\n * passed tokens.\n *\n * @param {Array} tokens The tokens to run through the pipeline.\n * @returns {Array}\n */\nlunr.Pipeline.prototype.run = function (tokens) {\n var stackLength = this._stack.length\n\n for (var i = 0; i < stackLength; i++) {\n var fn = this._stack[i]\n var memo = []\n\n for (var j = 0; j < tokens.length; j++) {\n var result = fn(tokens[j], j, tokens)\n\n if (result === void 0 || result === '') continue\n\n if (Array.isArray(result)) {\n for (var k = 0; k < result.length; k++) {\n memo.push(result[k])\n }\n } else {\n memo.push(result)\n }\n }\n\n tokens = memo\n }\n\n return tokens\n}\n\n/**\n * Convenience method for passing a string through a pipeline and getting\n * strings out. This method takes care of wrapping the passed string in a\n * token and mapping the resulting tokens back to strings.\n *\n * @param {string} str - The string to pass through the pipeline.\n * @param {?object} metadata - Optional metadata to associate with the token\n * passed to the pipeline.\n * @returns {string[]}\n */\nlunr.Pipeline.prototype.runString = function (str, metadata) {\n var token = new lunr.Token (str, metadata)\n\n return this.run([token]).map(function (t) {\n return t.toString()\n })\n}\n\n/**\n * Resets the pipeline by removing any existing processors.\n *\n */\nlunr.Pipeline.prototype.reset = function () {\n this._stack = []\n}\n\n/**\n * Returns a representation of the pipeline ready for serialisation.\n *\n * Logs a warning if the function has not been registered.\n *\n * @returns {Array}\n */\nlunr.Pipeline.prototype.toJSON = function () {\n return this._stack.map(function (fn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(fn)\n\n return fn.label\n })\n}\n/*!\n * lunr.Vector\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * A vector is used to construct the vector space of documents and queries. These\n * vectors support operations to determine the similarity between two documents or\n * a document and a query.\n *\n * Normally no parameters are required for initializing a vector, but in the case of\n * loading a previously dumped vector the raw elements can be provided to the constructor.\n *\n * For performance reasons vectors are implemented with a flat array, where an elements\n * index is immediately followed by its value. E.g. [index, value, index, value]. This\n * allows the underlying array to be as sparse as possible and still offer decent\n * performance when being used for vector calculations.\n *\n * @constructor\n * @param {Number[]} [elements] - The flat list of element index and element value pairs.\n */\nlunr.Vector = function (elements) {\n this._magnitude = 0\n this.elements = elements || []\n}\n\n\n/**\n * Calculates the position within the vector to insert a given index.\n *\n * This is used internally by insert and upsert. If there are duplicate indexes then\n * the position is returned as if the value for that index were to be updated, but it\n * is the callers responsibility to check whether there is a duplicate at that index\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @returns {Number}\n */\nlunr.Vector.prototype.positionForIndex = function (index) {\n // For an empty vector the tuple can be inserted at the beginning\n if (this.elements.length == 0) {\n return 0\n }\n\n var start = 0,\n end = this.elements.length / 2,\n sliceLength = end - start,\n pivotPoint = Math.floor(sliceLength / 2),\n pivotIndex = this.elements[pivotPoint * 2]\n\n while (sliceLength > 1) {\n if (pivotIndex < index) {\n start = pivotPoint\n }\n\n if (pivotIndex > index) {\n end = pivotPoint\n }\n\n if (pivotIndex == index) {\n break\n }\n\n sliceLength = end - start\n pivotPoint = start + Math.floor(sliceLength / 2)\n pivotIndex = this.elements[pivotPoint * 2]\n }\n\n if (pivotIndex == index) {\n return pivotPoint * 2\n }\n\n if (pivotIndex > index) {\n return pivotPoint * 2\n }\n\n if (pivotIndex < index) {\n return (pivotPoint + 1) * 2\n }\n}\n\n/**\n * Inserts an element at an index within the vector.\n *\n * Does not allow duplicates, will throw an error if there is already an entry\n * for this index.\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @param {Number} val - The value to be inserted into the vector.\n */\nlunr.Vector.prototype.insert = function (insertIdx, val) {\n this.upsert(insertIdx, val, function () {\n throw \"duplicate index\"\n })\n}\n\n/**\n * Inserts or updates an existing index within the vector.\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @param {Number} val - The value to be inserted into the vector.\n * @param {function} fn - A function that is called for updates, the existing value and the\n * requested value are passed as arguments\n */\nlunr.Vector.prototype.upsert = function (insertIdx, val, fn) {\n this._magnitude = 0\n var position = this.positionForIndex(insertIdx)\n\n if (this.elements[position] == insertIdx) {\n this.elements[position + 1] = fn(this.elements[position + 1], val)\n } else {\n this.elements.splice(position, 0, insertIdx, val)\n }\n}\n\n/**\n * Calculates the magnitude of this vector.\n *\n * @returns {Number}\n */\nlunr.Vector.prototype.magnitude = function () {\n if (this._magnitude) return this._magnitude\n\n var sumOfSquares = 0,\n elementsLength = this.elements.length\n\n for (var i = 1; i < elementsLength; i += 2) {\n var val = this.elements[i]\n sumOfSquares += val * val\n }\n\n return this._magnitude = Math.sqrt(sumOfSquares)\n}\n\n/**\n * Calculates the dot product of this vector and another vector.\n *\n * @param {lunr.Vector} otherVector - The vector to compute the dot product with.\n * @returns {Number}\n */\nlunr.Vector.prototype.dot = function (otherVector) {\n var dotProduct = 0,\n a = this.elements, b = otherVector.elements,\n aLen = a.length, bLen = b.length,\n aVal = 0, bVal = 0,\n i = 0, j = 0\n\n while (i < aLen && j < bLen) {\n aVal = a[i], bVal = b[j]\n if (aVal < bVal) {\n i += 2\n } else if (aVal > bVal) {\n j += 2\n } else if (aVal == bVal) {\n dotProduct += a[i + 1] * b[j + 1]\n i += 2\n j += 2\n }\n }\n\n return dotProduct\n}\n\n/**\n * Calculates the similarity between this vector and another vector.\n *\n * @param {lunr.Vector} otherVector - The other vector to calculate the\n * similarity with.\n * @returns {Number}\n */\nlunr.Vector.prototype.similarity = function (otherVector) {\n return this.dot(otherVector) / this.magnitude() || 0\n}\n\n/**\n * Converts the vector to an array of the elements within the vector.\n *\n * @returns {Number[]}\n */\nlunr.Vector.prototype.toArray = function () {\n var output = new Array (this.elements.length / 2)\n\n for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) {\n output[j] = this.elements[i]\n }\n\n return output\n}\n\n/**\n * A JSON serializable representation of the vector.\n *\n * @returns {Number[]}\n */\nlunr.Vector.prototype.toJSON = function () {\n return this.elements\n}\n/* eslint-disable */\n/*!\n * lunr.stemmer\n * Copyright (C) 2019 Oliver Nightingale\n * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt\n */\n\n/**\n * lunr.stemmer is an english language stemmer, this is a JavaScript\n * implementation of the PorterStemmer taken from http://tartarus.org/~martin\n *\n * @static\n * @implements {lunr.PipelineFunction}\n * @param {lunr.Token} token - The string to stem\n * @returns {lunr.Token}\n * @see {@link lunr.Pipeline}\n * @function\n */\nlunr.stemmer = (function(){\n var step2list = {\n \"ational\" : \"ate\",\n \"tional\" : \"tion\",\n \"enci\" : \"ence\",\n \"anci\" : \"ance\",\n \"izer\" : \"ize\",\n \"bli\" : \"ble\",\n \"alli\" : \"al\",\n \"entli\" : \"ent\",\n \"eli\" : \"e\",\n \"ousli\" : \"ous\",\n \"ization\" : \"ize\",\n \"ation\" : \"ate\",\n \"ator\" : \"ate\",\n \"alism\" : \"al\",\n \"iveness\" : \"ive\",\n \"fulness\" : \"ful\",\n \"ousness\" : \"ous\",\n \"aliti\" : \"al\",\n \"iviti\" : \"ive\",\n \"biliti\" : \"ble\",\n \"logi\" : \"log\"\n },\n\n step3list = {\n \"icate\" : \"ic\",\n \"ative\" : \"\",\n \"alize\" : \"al\",\n \"iciti\" : \"ic\",\n \"ical\" : \"ic\",\n \"ful\" : \"\",\n \"ness\" : \"\"\n },\n\n c = \"[^aeiou]\", // consonant\n v = \"[aeiouy]\", // vowel\n C = c + \"[^aeiouy]*\", // consonant sequence\n V = v + \"[aeiou]*\", // vowel sequence\n\n mgr0 = \"^(\" + C + \")?\" + V + C, // [C]VC... is m>0\n meq1 = \"^(\" + C + \")?\" + V + C + \"(\" + V + \")?$\", // [C]VC[V] is m=1\n mgr1 = \"^(\" + C + \")?\" + V + C + V + C, // [C]VCVC... is m>1\n s_v = \"^(\" + C + \")?\" + v; // vowel in stem\n\n var re_mgr0 = new RegExp(mgr0);\n var re_mgr1 = new RegExp(mgr1);\n var re_meq1 = new RegExp(meq1);\n var re_s_v = new RegExp(s_v);\n\n var re_1a = /^(.+?)(ss|i)es$/;\n var re2_1a = /^(.+?)([^s])s$/;\n var re_1b = /^(.+?)eed$/;\n var re2_1b = /^(.+?)(ed|ing)$/;\n var re_1b_2 = /.$/;\n var re2_1b_2 = /(at|bl|iz)$/;\n var re3_1b_2 = new RegExp(\"([^aeiouylsz])\\\\1$\");\n var re4_1b_2 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n\n var re_1c = /^(.+?[^aeiou])y$/;\n var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;\n\n var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;\n\n var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;\n var re2_4 = /^(.+?)(s|t)(ion)$/;\n\n var re_5 = /^(.+?)e$/;\n var re_5_1 = /ll$/;\n var re3_5 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n\n var porterStemmer = function porterStemmer(w) {\n var stem,\n suffix,\n firstch,\n re,\n re2,\n re3,\n re4;\n\n if (w.length < 3) { return w; }\n\n firstch = w.substr(0,1);\n if (firstch == \"y\") {\n w = firstch.toUpperCase() + w.substr(1);\n }\n\n // Step 1a\n re = re_1a\n re2 = re2_1a;\n\n if (re.test(w)) { w = w.replace(re,\"$1$2\"); }\n else if (re2.test(w)) { w = w.replace(re2,\"$1$2\"); }\n\n // Step 1b\n re = re_1b;\n re2 = re2_1b;\n if (re.test(w)) {\n var fp = re.exec(w);\n re = re_mgr0;\n if (re.test(fp[1])) {\n re = re_1b_2;\n w = w.replace(re,\"\");\n }\n } else if (re2.test(w)) {\n var fp = re2.exec(w);\n stem = fp[1];\n re2 = re_s_v;\n if (re2.test(stem)) {\n w = stem;\n re2 = re2_1b_2;\n re3 = re3_1b_2;\n re4 = re4_1b_2;\n if (re2.test(w)) { w = w + \"e\"; }\n else if (re3.test(w)) { re = re_1b_2; w = w.replace(re,\"\"); }\n else if (re4.test(w)) { w = w + \"e\"; }\n }\n }\n\n // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say)\n re = re_1c;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n w = stem + \"i\";\n }\n\n // Step 2\n re = re_2;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n if (re.test(stem)) {\n w = stem + step2list[suffix];\n }\n }\n\n // Step 3\n re = re_3;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n if (re.test(stem)) {\n w = stem + step3list[suffix];\n }\n }\n\n // Step 4\n re = re_4;\n re2 = re2_4;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n re = re_mgr1;\n if (re.test(stem)) {\n w = stem;\n }\n } else if (re2.test(w)) {\n var fp = re2.exec(w);\n stem = fp[1] + fp[2];\n re2 = re_mgr1;\n if (re2.test(stem)) {\n w = stem;\n }\n }\n\n // Step 5\n re = re_5;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n re = re_mgr1;\n re2 = re_meq1;\n re3 = re3_5;\n if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) {\n w = stem;\n }\n }\n\n re = re_5_1;\n re2 = re_mgr1;\n if (re.test(w) && re2.test(w)) {\n re = re_1b_2;\n w = w.replace(re,\"\");\n }\n\n // and turn initial Y back to y\n\n if (firstch == \"y\") {\n w = firstch.toLowerCase() + w.substr(1);\n }\n\n return w;\n };\n\n return function (token) {\n return token.update(porterStemmer);\n }\n})();\n\nlunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer')\n/*!\n * lunr.stopWordFilter\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * lunr.generateStopWordFilter builds a stopWordFilter function from the provided\n * list of stop words.\n *\n * The built in lunr.stopWordFilter is built using this generator and can be used\n * to generate custom stopWordFilters for applications or non English languages.\n *\n * @function\n * @param {Array} token The token to pass through the filter\n * @returns {lunr.PipelineFunction}\n * @see lunr.Pipeline\n * @see lunr.stopWordFilter\n */\nlunr.generateStopWordFilter = function (stopWords) {\n var words = stopWords.reduce(function (memo, stopWord) {\n memo[stopWord] = stopWord\n return memo\n }, {})\n\n return function (token) {\n if (token && words[token.toString()] !== token.toString()) return token\n }\n}\n\n/**\n * lunr.stopWordFilter is an English language stop word list filter, any words\n * contained in the list will not be passed through the filter.\n *\n * This is intended to be used in the Pipeline. If the token does not pass the\n * filter then undefined will be returned.\n *\n * @function\n * @implements {lunr.PipelineFunction}\n * @params {lunr.Token} token - A token to check for being a stop word.\n * @returns {lunr.Token}\n * @see {@link lunr.Pipeline}\n */\nlunr.stopWordFilter = lunr.generateStopWordFilter([\n 'a',\n 'able',\n 'about',\n 'across',\n 'after',\n 'all',\n 'almost',\n 'also',\n 'am',\n 'among',\n 'an',\n 'and',\n 'any',\n 'are',\n 'as',\n 'at',\n 'be',\n 'because',\n 'been',\n 'but',\n 'by',\n 'can',\n 'cannot',\n 'could',\n 'dear',\n 'did',\n 'do',\n 'does',\n 'either',\n 'else',\n 'ever',\n 'every',\n 'for',\n 'from',\n 'get',\n 'got',\n 'had',\n 'has',\n 'have',\n 'he',\n 'her',\n 'hers',\n 'him',\n 'his',\n 'how',\n 'however',\n 'i',\n 'if',\n 'in',\n 'into',\n 'is',\n 'it',\n 'its',\n 'just',\n 'least',\n 'let',\n 'like',\n 'likely',\n 'may',\n 'me',\n 'might',\n 'most',\n 'must',\n 'my',\n 'neither',\n 'no',\n 'nor',\n 'not',\n 'of',\n 'off',\n 'often',\n 'on',\n 'only',\n 'or',\n 'other',\n 'our',\n 'own',\n 'rather',\n 'said',\n 'say',\n 'says',\n 'she',\n 'should',\n 'since',\n 'so',\n 'some',\n 'than',\n 'that',\n 'the',\n 'their',\n 'them',\n 'then',\n 'there',\n 'these',\n 'they',\n 'this',\n 'tis',\n 'to',\n 'too',\n 'twas',\n 'us',\n 'wants',\n 'was',\n 'we',\n 'were',\n 'what',\n 'when',\n 'where',\n 'which',\n 'while',\n 'who',\n 'whom',\n 'why',\n 'will',\n 'with',\n 'would',\n 'yet',\n 'you',\n 'your'\n])\n\nlunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter')\n/*!\n * lunr.trimmer\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * lunr.trimmer is a pipeline function for trimming non word\n * characters from the beginning and end of tokens before they\n * enter the index.\n *\n * This implementation may not work correctly for non latin\n * characters and should either be removed or adapted for use\n * with languages with non-latin characters.\n *\n * @static\n * @implements {lunr.PipelineFunction}\n * @param {lunr.Token} token The token to pass through the filter\n * @returns {lunr.Token}\n * @see lunr.Pipeline\n */\nlunr.trimmer = function (token) {\n return token.update(function (s) {\n return s.replace(/^\\W+/, '').replace(/\\W+$/, '')\n })\n}\n\nlunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer')\n/*!\n * lunr.TokenSet\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * A token set is used to store the unique list of all tokens\n * within an index. Token sets are also used to represent an\n * incoming query to the index, this query token set and index\n * token set are then intersected to find which tokens to look\n * up in the inverted index.\n *\n * A token set can hold multiple tokens, as in the case of the\n * index token set, or it can hold a single token as in the\n * case of a simple query token set.\n *\n * Additionally token sets are used to perform wildcard matching.\n * Leading, contained and trailing wildcards are supported, and\n * from this edit distance matching can also be provided.\n *\n * Token sets are implemented as a minimal finite state automata,\n * where both common prefixes and suffixes are shared between tokens.\n * This helps to reduce the space used for storing the token set.\n *\n * @constructor\n */\nlunr.TokenSet = function () {\n this.final = false\n this.edges = {}\n this.id = lunr.TokenSet._nextId\n lunr.TokenSet._nextId += 1\n}\n\n/**\n * Keeps track of the next, auto increment, identifier to assign\n * to a new tokenSet.\n *\n * TokenSets require a unique identifier to be correctly minimised.\n *\n * @private\n */\nlunr.TokenSet._nextId = 1\n\n/**\n * Creates a TokenSet instance from the given sorted array of words.\n *\n * @param {String[]} arr - A sorted array of strings to create the set from.\n * @returns {lunr.TokenSet}\n * @throws Will throw an error if the input array is not sorted.\n */\nlunr.TokenSet.fromArray = function (arr) {\n var builder = new lunr.TokenSet.Builder\n\n for (var i = 0, len = arr.length; i < len; i++) {\n builder.insert(arr[i])\n }\n\n builder.finish()\n return builder.root\n}\n\n/**\n * Creates a token set from a query clause.\n *\n * @private\n * @param {Object} clause - A single clause from lunr.Query.\n * @param {string} clause.term - The query clause term.\n * @param {number} [clause.editDistance] - The optional edit distance for the term.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.fromClause = function (clause) {\n if ('editDistance' in clause) {\n return lunr.TokenSet.fromFuzzyString(clause.term, clause.editDistance)\n } else {\n return lunr.TokenSet.fromString(clause.term)\n }\n}\n\n/**\n * Creates a token set representing a single string with a specified\n * edit distance.\n *\n * Insertions, deletions, substitutions and transpositions are each\n * treated as an edit distance of 1.\n *\n * Increasing the allowed edit distance will have a dramatic impact\n * on the performance of both creating and intersecting these TokenSets.\n * It is advised to keep the edit distance less than 3.\n *\n * @param {string} str - The string to create the token set from.\n * @param {number} editDistance - The allowed edit distance to match.\n * @returns {lunr.Vector}\n */\nlunr.TokenSet.fromFuzzyString = function (str, editDistance) {\n var root = new lunr.TokenSet\n\n var stack = [{\n node: root,\n editsRemaining: editDistance,\n str: str\n }]\n\n while (stack.length) {\n var frame = stack.pop()\n\n // no edit\n if (frame.str.length > 0) {\n var char = frame.str.charAt(0),\n noEditNode\n\n if (char in frame.node.edges) {\n noEditNode = frame.node.edges[char]\n } else {\n noEditNode = new lunr.TokenSet\n frame.node.edges[char] = noEditNode\n }\n\n if (frame.str.length == 1) {\n noEditNode.final = true\n }\n\n stack.push({\n node: noEditNode,\n editsRemaining: frame.editsRemaining,\n str: frame.str.slice(1)\n })\n }\n\n if (frame.editsRemaining == 0) {\n continue\n }\n\n // insertion\n if (\"*\" in frame.node.edges) {\n var insertionNode = frame.node.edges[\"*\"]\n } else {\n var insertionNode = new lunr.TokenSet\n frame.node.edges[\"*\"] = insertionNode\n }\n\n if (frame.str.length == 0) {\n insertionNode.final = true\n }\n\n stack.push({\n node: insertionNode,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str\n })\n\n // deletion\n // can only do a deletion if we have enough edits remaining\n // and if there are characters left to delete in the string\n if (frame.str.length > 1) {\n stack.push({\n node: frame.node,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str.slice(1)\n })\n }\n\n // deletion\n // just removing the last character from the str\n if (frame.str.length == 1) {\n frame.node.final = true\n }\n\n // substitution\n // can only do a substitution if we have enough edits remaining\n // and if there are characters left to substitute\n if (frame.str.length >= 1) {\n if (\"*\" in frame.node.edges) {\n var substitutionNode = frame.node.edges[\"*\"]\n } else {\n var substitutionNode = new lunr.TokenSet\n frame.node.edges[\"*\"] = substitutionNode\n }\n\n if (frame.str.length == 1) {\n substitutionNode.final = true\n }\n\n stack.push({\n node: substitutionNode,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str.slice(1)\n })\n }\n\n // transposition\n // can only do a transposition if there are edits remaining\n // and there are enough characters to transpose\n if (frame.str.length > 1) {\n var charA = frame.str.charAt(0),\n charB = frame.str.charAt(1),\n transposeNode\n\n if (charB in frame.node.edges) {\n transposeNode = frame.node.edges[charB]\n } else {\n transposeNode = new lunr.TokenSet\n frame.node.edges[charB] = transposeNode\n }\n\n if (frame.str.length == 1) {\n transposeNode.final = true\n }\n\n stack.push({\n node: transposeNode,\n editsRemaining: frame.editsRemaining - 1,\n str: charA + frame.str.slice(2)\n })\n }\n }\n\n return root\n}\n\n/**\n * Creates a TokenSet from a string.\n *\n * The string may contain one or more wildcard characters (*)\n * that will allow wildcard matching when intersecting with\n * another TokenSet.\n *\n * @param {string} str - The string to create a TokenSet from.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.fromString = function (str) {\n var node = new lunr.TokenSet,\n root = node\n\n /*\n * Iterates through all characters within the passed string\n * appending a node for each character.\n *\n * When a wildcard character is found then a self\n * referencing edge is introduced to continually match\n * any number of any characters.\n */\n for (var i = 0, len = str.length; i < len; i++) {\n var char = str[i],\n final = (i == len - 1)\n\n if (char == \"*\") {\n node.edges[char] = node\n node.final = final\n\n } else {\n var next = new lunr.TokenSet\n next.final = final\n\n node.edges[char] = next\n node = next\n }\n }\n\n return root\n}\n\n/**\n * Converts this TokenSet into an array of strings\n * contained within the TokenSet.\n *\n * @returns {string[]}\n */\nlunr.TokenSet.prototype.toArray = function () {\n var words = []\n\n var stack = [{\n prefix: \"\",\n node: this\n }]\n\n while (stack.length) {\n var frame = stack.pop(),\n edges = Object.keys(frame.node.edges),\n len = edges.length\n\n if (frame.node.final) {\n /* In Safari, at this point the prefix is sometimes corrupted, see:\n * https://github.com/olivernn/lunr.js/issues/279 Calling any\n * String.prototype method forces Safari to \"cast\" this string to what\n * it's supposed to be, fixing the bug. */\n frame.prefix.charAt(0)\n words.push(frame.prefix)\n }\n\n for (var i = 0; i < len; i++) {\n var edge = edges[i]\n\n stack.push({\n prefix: frame.prefix.concat(edge),\n node: frame.node.edges[edge]\n })\n }\n }\n\n return words\n}\n\n/**\n * Generates a string representation of a TokenSet.\n *\n * This is intended to allow TokenSets to be used as keys\n * in objects, largely to aid the construction and minimisation\n * of a TokenSet. As such it is not designed to be a human\n * friendly representation of the TokenSet.\n *\n * @returns {string}\n */\nlunr.TokenSet.prototype.toString = function () {\n // NOTE: Using Object.keys here as this.edges is very likely\n // to enter 'hash-mode' with many keys being added\n //\n // avoiding a for-in loop here as it leads to the function\n // being de-optimised (at least in V8). From some simple\n // benchmarks the performance is comparable, but allowing\n // V8 to optimize may mean easy performance wins in the future.\n\n if (this._str) {\n return this._str\n }\n\n var str = this.final ? '1' : '0',\n labels = Object.keys(this.edges).sort(),\n len = labels.length\n\n for (var i = 0; i < len; i++) {\n var label = labels[i],\n node = this.edges[label]\n\n str = str + label + node.id\n }\n\n return str\n}\n\n/**\n * Returns a new TokenSet that is the intersection of\n * this TokenSet and the passed TokenSet.\n *\n * This intersection will take into account any wildcards\n * contained within the TokenSet.\n *\n * @param {lunr.TokenSet} b - An other TokenSet to intersect with.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.prototype.intersect = function (b) {\n var output = new lunr.TokenSet,\n frame = undefined\n\n var stack = [{\n qNode: b,\n output: output,\n node: this\n }]\n\n while (stack.length) {\n frame = stack.pop()\n\n // NOTE: As with the #toString method, we are using\n // Object.keys and a for loop instead of a for-in loop\n // as both of these objects enter 'hash' mode, causing\n // the function to be de-optimised in V8\n var qEdges = Object.keys(frame.qNode.edges),\n qLen = qEdges.length,\n nEdges = Object.keys(frame.node.edges),\n nLen = nEdges.length\n\n for (var q = 0; q < qLen; q++) {\n var qEdge = qEdges[q]\n\n for (var n = 0; n < nLen; n++) {\n var nEdge = nEdges[n]\n\n if (nEdge == qEdge || qEdge == '*') {\n var node = frame.node.edges[nEdge],\n qNode = frame.qNode.edges[qEdge],\n final = node.final && qNode.final,\n next = undefined\n\n if (nEdge in frame.output.edges) {\n // an edge already exists for this character\n // no need to create a new node, just set the finality\n // bit unless this node is already final\n next = frame.output.edges[nEdge]\n next.final = next.final || final\n\n } else {\n // no edge exists yet, must create one\n // set the finality bit and insert it\n // into the output\n next = new lunr.TokenSet\n next.final = final\n frame.output.edges[nEdge] = next\n }\n\n stack.push({\n qNode: qNode,\n output: next,\n node: node\n })\n }\n }\n }\n }\n\n return output\n}\nlunr.TokenSet.Builder = function () {\n this.previousWord = \"\"\n this.root = new lunr.TokenSet\n this.uncheckedNodes = []\n this.minimizedNodes = {}\n}\n\nlunr.TokenSet.Builder.prototype.insert = function (word) {\n var node,\n commonPrefix = 0\n\n if (word < this.previousWord) {\n throw new Error (\"Out of order word insertion\")\n }\n\n for (var i = 0; i < word.length && i < this.previousWord.length; i++) {\n if (word[i] != this.previousWord[i]) break\n commonPrefix++\n }\n\n this.minimize(commonPrefix)\n\n if (this.uncheckedNodes.length == 0) {\n node = this.root\n } else {\n node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child\n }\n\n for (var i = commonPrefix; i < word.length; i++) {\n var nextNode = new lunr.TokenSet,\n char = word[i]\n\n node.edges[char] = nextNode\n\n this.uncheckedNodes.push({\n parent: node,\n char: char,\n child: nextNode\n })\n\n node = nextNode\n }\n\n node.final = true\n this.previousWord = word\n}\n\nlunr.TokenSet.Builder.prototype.finish = function () {\n this.minimize(0)\n}\n\nlunr.TokenSet.Builder.prototype.minimize = function (downTo) {\n for (var i = this.uncheckedNodes.length - 1; i >= downTo; i--) {\n var node = this.uncheckedNodes[i],\n childKey = node.child.toString()\n\n if (childKey in this.minimizedNodes) {\n node.parent.edges[node.char] = this.minimizedNodes[childKey]\n } else {\n // Cache the key for this node since\n // we know it can't change anymore\n node.child._str = childKey\n\n this.minimizedNodes[childKey] = node.child\n }\n\n this.uncheckedNodes.pop()\n }\n}\n/*!\n * lunr.Index\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * An index contains the built index of all documents and provides a query interface\n * to the index.\n *\n * Usually instances of lunr.Index will not be created using this constructor, instead\n * lunr.Builder should be used to construct new indexes, or lunr.Index.load should be\n * used to load previously built and serialized indexes.\n *\n * @constructor\n * @param {Object} attrs - The attributes of the built search index.\n * @param {Object} attrs.invertedIndex - An index of term/field to document reference.\n * @param {Object<string, lunr.Vector>} attrs.fieldVectors - Field vectors\n * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens.\n * @param {string[]} attrs.fields - The names of indexed document fields.\n * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms.\n */\nlunr.Index = function (attrs) {\n this.invertedIndex = attrs.invertedIndex\n this.fieldVectors = attrs.fieldVectors\n this.tokenSet = attrs.tokenSet\n this.fields = attrs.fields\n this.pipeline = attrs.pipeline\n}\n\n/**\n * A result contains details of a document matching a search query.\n * @typedef {Object} lunr.Index~Result\n * @property {string} ref - The reference of the document this result represents.\n * @property {number} score - A number between 0 and 1 representing how similar this document is to the query.\n * @property {lunr.MatchData} matchData - Contains metadata about this match including which term(s) caused the match.\n */\n\n/**\n * Although lunr provides the ability to create queries using lunr.Query, it also provides a simple\n * query language which itself is parsed into an instance of lunr.Query.\n *\n * For programmatically building queries it is advised to directly use lunr.Query, the query language\n * is best used for human entered text rather than program generated text.\n *\n * At its simplest queries can just be a single term, e.g. `hello`, multiple terms are also supported\n * and will be combined with OR, e.g `hello world` will match documents that contain either 'hello'\n * or 'world', though those that contain both will rank higher in the results.\n *\n * Wildcards can be included in terms to match one or more unspecified characters, these wildcards can\n * be inserted anywhere within the term, and more than one wildcard can exist in a single term. Adding\n * wildcards will increase the number of documents that will be found but can also have a negative\n * impact on query performance, especially with wildcards at the beginning of a term.\n *\n * Terms can be restricted to specific fields, e.g. `title:hello`, only documents with the term\n * hello in the title field will match this query. Using a field not present in the index will lead\n * to an error being thrown.\n *\n * Modifiers can also be added to terms, lunr supports edit distance and boost modifiers on terms. A term\n * boost will make documents matching that term score higher, e.g. `foo^5`. Edit distance is also supported\n * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2.\n * Avoid large values for edit distance to improve query performance.\n *\n * Each term also supports a presence modifier. By default a term's presence in document is optional, however\n * this can be changed to either required or prohibited. For a term's presence to be required in a document the\n * term should be prefixed with a '+', e.g. `+foo bar` is a search for documents that must contain 'foo' and\n * optionally contain 'bar'. Conversely a leading '-' sets the terms presence to prohibited, i.e. it must not\n * appear in a document, e.g. `-foo bar` is a search for documents that do not contain 'foo' but may contain 'bar'.\n *\n * To escape special characters the backslash character '\\' can be used, this allows searches to include\n * characters that would normally be considered modifiers, e.g. `foo\\~2` will search for a term \"foo~2\" instead\n * of attempting to apply a boost of 2 to the search term \"foo\".\n *\n * @typedef {string} lunr.Index~QueryString\n * @example <caption>Simple single term query</caption>\n * hello\n * @example <caption>Multiple term query</caption>\n * hello world\n * @example <caption>term scoped to a field</caption>\n * title:hello\n * @example <caption>term with a boost of 10</caption>\n * hello^10\n * @example <caption>term with an edit distance of 2</caption>\n * hello~2\n * @example <caption>terms with presence modifiers</caption>\n * -foo +bar baz\n */\n\n/**\n * Performs a search against the index using lunr query syntax.\n *\n * Results will be returned sorted by their score, the most relevant results\n * will be returned first. For details on how the score is calculated, please see\n * the {@link https://lunrjs.com/guides/searching.html#scoring|guide}.\n *\n * For more programmatic querying use lunr.Index#query.\n *\n * @param {lunr.Index~QueryString} queryString - A string containing a lunr query.\n * @throws {lunr.QueryParseError} If the passed query string cannot be parsed.\n * @returns {lunr.Index~Result[]}\n */\nlunr.Index.prototype.search = function (queryString) {\n return this.query(function (query) {\n var parser = new lunr.QueryParser(queryString, query)\n parser.parse()\n })\n}\n\n/**\n * A query builder callback provides a query object to be used to express\n * the query to perform on the index.\n *\n * @callback lunr.Index~queryBuilder\n * @param {lunr.Query} query - The query object to build up.\n * @this lunr.Query\n */\n\n/**\n * Performs a query against the index using the yielded lunr.Query object.\n *\n * If performing programmatic queries against the index, this method is preferred\n * over lunr.Index#search so as to avoid the additional query parsing overhead.\n *\n * A query object is yielded to the supplied function which should be used to\n * express the query to be run against the index.\n *\n * Note that although this function takes a callback parameter it is _not_ an\n * asynchronous operation, the callback is just yielded a query object to be\n * customized.\n *\n * @param {lunr.Index~queryBuilder} fn - A function that is used to build the query.\n * @returns {lunr.Index~Result[]}\n */\nlunr.Index.prototype.query = function (fn) {\n // for each query clause\n // * process terms\n // * expand terms from token set\n // * find matching documents and metadata\n // * get document vectors\n // * score documents\n\n var query = new lunr.Query(this.fields),\n matchingFields = Object.create(null),\n queryVectors = Object.create(null),\n termFieldCache = Object.create(null),\n requiredMatches = Object.create(null),\n prohibitedMatches = Object.create(null)\n\n /*\n * To support field level boosts a query vector is created per\n * field. An empty vector is eagerly created to support negated\n * queries.\n */\n for (var i = 0; i < this.fields.length; i++) {\n queryVectors[this.fields[i]] = new lunr.Vector\n }\n\n fn.call(query, query)\n\n for (var i = 0; i < query.clauses.length; i++) {\n /*\n * Unless the pipeline has been disabled for this term, which is\n * the case for terms with wildcards, we need to pass the clause\n * term through the search pipeline. A pipeline returns an array\n * of processed terms. Pipeline functions may expand the passed\n * term, which means we may end up performing multiple index lookups\n * for a single query term.\n */\n var clause = query.clauses[i],\n terms = null,\n clauseMatches = lunr.Set.complete\n\n if (clause.usePipeline) {\n terms = this.pipeline.runString(clause.term, {\n fields: clause.fields\n })\n } else {\n terms = [clause.term]\n }\n\n for (var m = 0; m < terms.length; m++) {\n var term = terms[m]\n\n /*\n * Each term returned from the pipeline needs to use the same query\n * clause object, e.g. the same boost and or edit distance. The\n * simplest way to do this is to re-use the clause object but mutate\n * its term property.\n */\n clause.term = term\n\n /*\n * From the term in the clause we create a token set which will then\n * be used to intersect the indexes token set to get a list of terms\n * to lookup in the inverted index\n */\n var termTokenSet = lunr.TokenSet.fromClause(clause),\n expandedTerms = this.tokenSet.intersect(termTokenSet).toArray()\n\n /*\n * If a term marked as required does not exist in the tokenSet it is\n * impossible for the search to return any matches. We set all the field\n * scoped required matches set to empty and stop examining any further\n * clauses.\n */\n if (expandedTerms.length === 0 && clause.presence === lunr.Query.presence.REQUIRED) {\n for (var k = 0; k < clause.fields.length; k++) {\n var field = clause.fields[k]\n requiredMatches[field] = lunr.Set.empty\n }\n\n break\n }\n\n for (var j = 0; j < expandedTerms.length; j++) {\n /*\n * For each term get the posting and termIndex, this is required for\n * building the query vector.\n */\n var expandedTerm = expandedTerms[j],\n posting = this.invertedIndex[expandedTerm],\n termIndex = posting._index\n\n for (var k = 0; k < clause.fields.length; k++) {\n /*\n * For each field that this query term is scoped by (by default\n * all fields are in scope) we need to get all the document refs\n * that have this term in that field.\n *\n * The posting is the entry in the invertedIndex for the matching\n * term from above.\n */\n var field = clause.fields[k],\n fieldPosting = posting[field],\n matchingDocumentRefs = Object.keys(fieldPosting),\n termField = expandedTerm + \"/\" + field,\n matchingDocumentsSet = new lunr.Set(matchingDocumentRefs)\n\n /*\n * if the presence of this term is required ensure that the matching\n * documents are added to the set of required matches for this clause.\n *\n */\n if (clause.presence == lunr.Query.presence.REQUIRED) {\n clauseMatches = clauseMatches.union(matchingDocumentsSet)\n\n if (requiredMatches[field] === undefined) {\n requiredMatches[field] = lunr.Set.complete\n }\n }\n\n /*\n * if the presence of this term is prohibited ensure that the matching\n * documents are added to the set of prohibited matches for this field,\n * creating that set if it does not yet exist.\n */\n if (clause.presence == lunr.Query.presence.PROHIBITED) {\n if (prohibitedMatches[field] === undefined) {\n prohibitedMatches[field] = lunr.Set.empty\n }\n\n prohibitedMatches[field] = prohibitedMatches[field].union(matchingDocumentsSet)\n\n /*\n * Prohibited matches should not be part of the query vector used for\n * similarity scoring and no metadata should be extracted so we continue\n * to the next field\n */\n continue\n }\n\n /*\n * The query field vector is populated using the termIndex found for\n * the term and a unit value with the appropriate boost applied.\n * Using upsert because there could already be an entry in the vector\n * for the term we are working with. In that case we just add the scores\n * together.\n */\n queryVectors[field].upsert(termIndex, clause.boost, function (a, b) { return a + b })\n\n /**\n * If we've already seen this term, field combo then we've already collected\n * the matching documents and metadata, no need to go through all that again\n */\n if (termFieldCache[termField]) {\n continue\n }\n\n for (var l = 0; l < matchingDocumentRefs.length; l++) {\n /*\n * All metadata for this term/field/document triple\n * are then extracted and collected into an instance\n * of lunr.MatchData ready to be returned in the query\n * results\n */\n var matchingDocumentRef = matchingDocumentRefs[l],\n matchingFieldRef = new lunr.FieldRef (matchingDocumentRef, field),\n metadata = fieldPosting[matchingDocumentRef],\n fieldMatch\n\n if ((fieldMatch = matchingFields[matchingFieldRef]) === undefined) {\n matchingFields[matchingFieldRef] = new lunr.MatchData (expandedTerm, field, metadata)\n } else {\n fieldMatch.add(expandedTerm, field, metadata)\n }\n\n }\n\n termFieldCache[termField] = true\n }\n }\n }\n\n /**\n * If the presence was required we need to update the requiredMatches field sets.\n * We do this after all fields for the term have collected their matches because\n * the clause terms presence is required in _any_ of the fields not _all_ of the\n * fields.\n */\n if (clause.presence === lunr.Query.presence.REQUIRED) {\n for (var k = 0; k < clause.fields.length; k++) {\n var field = clause.fields[k]\n requiredMatches[field] = requiredMatches[field].intersect(clauseMatches)\n }\n }\n }\n\n /**\n * Need to combine the field scoped required and prohibited\n * matching documents into a global set of required and prohibited\n * matches\n */\n var allRequiredMatches = lunr.Set.complete,\n allProhibitedMatches = lunr.Set.empty\n\n for (var i = 0; i < this.fields.length; i++) {\n var field = this.fields[i]\n\n if (requiredMatches[field]) {\n allRequiredMatches = allRequiredMatches.intersect(requiredMatches[field])\n }\n\n if (prohibitedMatches[field]) {\n allProhibitedMatches = allProhibitedMatches.union(prohibitedMatches[field])\n }\n }\n\n var matchingFieldRefs = Object.keys(matchingFields),\n results = [],\n matches = Object.create(null)\n\n /*\n * If the query is negated (contains only prohibited terms)\n * we need to get _all_ fieldRefs currently existing in the\n * index. This is only done when we know that the query is\n * entirely prohibited terms to avoid any cost of getting all\n * fieldRefs unnecessarily.\n *\n * Additionally, blank MatchData must be created to correctly\n * populate the results.\n */\n if (query.isNegated()) {\n matchingFieldRefs = Object.keys(this.fieldVectors)\n\n for (var i = 0; i < matchingFieldRefs.length; i++) {\n var matchingFieldRef = matchingFieldRefs[i]\n var fieldRef = lunr.FieldRef.fromString(matchingFieldRef)\n matchingFields[matchingFieldRef] = new lunr.MatchData\n }\n }\n\n for (var i = 0; i < matchingFieldRefs.length; i++) {\n /*\n * Currently we have document fields that match the query, but we\n * need to return documents. The matchData and scores are combined\n * from multiple fields belonging to the same document.\n *\n * Scores are calculated by field, using the query vectors created\n * above, and combined into a final document score using addition.\n */\n var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]),\n docRef = fieldRef.docRef\n\n if (!allRequiredMatches.contains(docRef)) {\n continue\n }\n\n if (allProhibitedMatches.contains(docRef)) {\n continue\n }\n\n var fieldVector = this.fieldVectors[fieldRef],\n score = queryVectors[fieldRef.fieldName].similarity(fieldVector),\n docMatch\n\n if ((docMatch = matches[docRef]) !== undefined) {\n docMatch.score += score\n docMatch.matchData.combine(matchingFields[fieldRef])\n } else {\n var match = {\n ref: docRef,\n score: score,\n matchData: matchingFields[fieldRef]\n }\n matches[docRef] = match\n results.push(match)\n }\n }\n\n /*\n * Sort the results objects by score, highest first.\n */\n return results.sort(function (a, b) {\n return b.score - a.score\n })\n}\n\n/**\n * Prepares the index for JSON serialization.\n *\n * The schema for this JSON blob will be described in a\n * separate JSON schema file.\n *\n * @returns {Object}\n */\nlunr.Index.prototype.toJSON = function () {\n var invertedIndex = Object.keys(this.invertedIndex)\n .sort()\n .map(function (term) {\n return [term, this.invertedIndex[term]]\n }, this)\n\n var fieldVectors = Object.keys(this.fieldVectors)\n .map(function (ref) {\n return [ref, this.fieldVectors[ref].toJSON()]\n }, this)\n\n return {\n version: lunr.version,\n fields: this.fields,\n fieldVectors: fieldVectors,\n invertedIndex: invertedIndex,\n pipeline: this.pipeline.toJSON()\n }\n}\n\n/**\n * Loads a previously serialized lunr.Index\n *\n * @param {Object} serializedIndex - A previously serialized lunr.Index\n * @returns {lunr.Index}\n */\nlunr.Index.load = function (serializedIndex) {\n var attrs = {},\n fieldVectors = {},\n serializedVectors = serializedIndex.fieldVectors,\n invertedIndex = Object.create(null),\n serializedInvertedIndex = serializedIndex.invertedIndex,\n tokenSetBuilder = new lunr.TokenSet.Builder,\n pipeline = lunr.Pipeline.load(serializedIndex.pipeline)\n\n if (serializedIndex.version != lunr.version) {\n lunr.utils.warn(\"Version mismatch when loading serialised index. Current version of lunr '\" + lunr.version + \"' does not match serialized index '\" + serializedIndex.version + \"'\")\n }\n\n for (var i = 0; i < serializedVectors.length; i++) {\n var tuple = serializedVectors[i],\n ref = tuple[0],\n elements = tuple[1]\n\n fieldVectors[ref] = new lunr.Vector(elements)\n }\n\n for (var i = 0; i < serializedInvertedIndex.length; i++) {\n var tuple = serializedInvertedIndex[i],\n term = tuple[0],\n posting = tuple[1]\n\n tokenSetBuilder.insert(term)\n invertedIndex[term] = posting\n }\n\n tokenSetBuilder.finish()\n\n attrs.fields = serializedIndex.fields\n\n attrs.fieldVectors = fieldVectors\n attrs.invertedIndex = invertedIndex\n attrs.tokenSet = tokenSetBuilder.root\n attrs.pipeline = pipeline\n\n return new lunr.Index(attrs)\n}\n/*!\n * lunr.Builder\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * lunr.Builder performs indexing on a set of documents and\n * returns instances of lunr.Index ready for querying.\n *\n * All configuration of the index is done via the builder, the\n * fields to index, the document reference, the text processing\n * pipeline and document scoring parameters are all set on the\n * builder before indexing.\n *\n * @constructor\n * @property {string} _ref - Internal reference to the document reference field.\n * @property {string[]} _fields - Internal reference to the document fields to index.\n * @property {object} invertedIndex - The inverted index maps terms to document fields.\n * @property {object} documentTermFrequencies - Keeps track of document term frequencies.\n * @property {object} documentLengths - Keeps track of the length of documents added to the index.\n * @property {lunr.tokenizer} tokenizer - Function for splitting strings into tokens for indexing.\n * @property {lunr.Pipeline} pipeline - The pipeline performs text processing on tokens before indexing.\n * @property {lunr.Pipeline} searchPipeline - A pipeline for processing search terms before querying the index.\n * @property {number} documentCount - Keeps track of the total number of documents indexed.\n * @property {number} _b - A parameter to control field length normalization, setting this to 0 disabled normalization, 1 fully normalizes field lengths, the default value is 0.75.\n * @property {number} _k1 - A parameter to control how quickly an increase in term frequency results in term frequency saturation, the default value is 1.2.\n * @property {number} termIndex - A counter incremented for each unique term, used to identify a terms position in the vector space.\n * @property {array} metadataWhitelist - A list of metadata keys that have been whitelisted for entry in the index.\n */\nlunr.Builder = function () {\n this._ref = \"id\"\n this._fields = Object.create(null)\n this._documents = Object.create(null)\n this.invertedIndex = Object.create(null)\n this.fieldTermFrequencies = {}\n this.fieldLengths = {}\n this.tokenizer = lunr.tokenizer\n this.pipeline = new lunr.Pipeline\n this.searchPipeline = new lunr.Pipeline\n this.documentCount = 0\n this._b = 0.75\n this._k1 = 1.2\n this.termIndex = 0\n this.metadataWhitelist = []\n}\n\n/**\n * Sets the document field used as the document reference. Every document must have this field.\n * The type of this field in the document should be a string, if it is not a string it will be\n * coerced into a string by calling toString.\n *\n * The default ref is 'id'.\n *\n * The ref should _not_ be changed during indexing, it should be set before any documents are\n * added to the index. Changing it during indexing can lead to inconsistent results.\n *\n * @param {string} ref - The name of the reference field in the document.\n */\nlunr.Builder.prototype.ref = function (ref) {\n this._ref = ref\n}\n\n/**\n * A function that is used to extract a field from a document.\n *\n * Lunr expects a field to be at the top level of a document, if however the field\n * is deeply nested within a document an extractor function can be used to extract\n * the right field for indexing.\n *\n * @callback fieldExtractor\n * @param {object} doc - The document being added to the index.\n * @returns {?(string|object|object[])} obj - The object that will be indexed for this field.\n * @example <caption>Extracting a nested field</caption>\n * function (doc) { return doc.nested.field }\n */\n\n/**\n * Adds a field to the list of document fields that will be indexed. Every document being\n * indexed should have this field. Null values for this field in indexed documents will\n * not cause errors but will limit the chance of that document being retrieved by searches.\n *\n * All fields should be added before adding documents to the index. Adding fields after\n * a document has been indexed will have no effect on already indexed documents.\n *\n * Fields can be boosted at build time. This allows terms within that field to have more\n * importance when ranking search results. Use a field boost to specify that matches within\n * one field are more important than other fields.\n *\n * @param {string} fieldName - The name of a field to index in all documents.\n * @param {object} attributes - Optional attributes associated with this field.\n * @param {number} [attributes.boost=1] - Boost applied to all terms within this field.\n * @param {fieldExtractor} [attributes.extractor] - Function to extract a field from a document.\n * @throws {RangeError} fieldName cannot contain unsupported characters '/'\n */\nlunr.Builder.prototype.field = function (fieldName, attributes) {\n if (/\\//.test(fieldName)) {\n throw new RangeError (\"Field '\" + fieldName + \"' contains illegal character '/'\")\n }\n\n this._fields[fieldName] = attributes || {}\n}\n\n/**\n * A parameter to tune the amount of field length normalisation that is applied when\n * calculating relevance scores. A value of 0 will completely disable any normalisation\n * and a value of 1 will fully normalise field lengths. The default is 0.75. Values of b\n * will be clamped to the range 0 - 1.\n *\n * @param {number} number - The value to set for this tuning parameter.\n */\nlunr.Builder.prototype.b = function (number) {\n if (number < 0) {\n this._b = 0\n } else if (number > 1) {\n this._b = 1\n } else {\n this._b = number\n }\n}\n\n/**\n * A parameter that controls the speed at which a rise in term frequency results in term\n * frequency saturation. The default value is 1.2. Setting this to a higher value will give\n * slower saturation levels, a lower value will result in quicker saturation.\n *\n * @param {number} number - The value to set for this tuning parameter.\n */\nlunr.Builder.prototype.k1 = function (number) {\n this._k1 = number\n}\n\n/**\n * Adds a document to the index.\n *\n * Before adding fields to the index the index should have been fully setup, with the document\n * ref and all fields to index already having been specified.\n *\n * The document must have a field name as specified by the ref (by default this is 'id') and\n * it should have all fields defined for indexing, though null or undefined values will not\n * cause errors.\n *\n * Entire documents can be boosted at build time. Applying a boost to a document indicates that\n * this document should rank higher in search results than other documents.\n *\n * @param {object} doc - The document to add to the index.\n * @param {object} attributes - Optional attributes associated with this document.\n * @param {number} [attributes.boost=1] - Boost applied to all terms within this document.\n */\nlunr.Builder.prototype.add = function (doc, attributes) {\n var docRef = doc[this._ref],\n fields = Object.keys(this._fields)\n\n this._documents[docRef] = attributes || {}\n this.documentCount += 1\n\n for (var i = 0; i < fields.length; i++) {\n var fieldName = fields[i],\n extractor = this._fields[fieldName].extractor,\n field = extractor ? extractor(doc) : doc[fieldName],\n tokens = this.tokenizer(field, {\n fields: [fieldName]\n }),\n terms = this.pipeline.run(tokens),\n fieldRef = new lunr.FieldRef (docRef, fieldName),\n fieldTerms = Object.create(null)\n\n this.fieldTermFrequencies[fieldRef] = fieldTerms\n this.fieldLengths[fieldRef] = 0\n\n // store the length of this field for this document\n this.fieldLengths[fieldRef] += terms.length\n\n // calculate term frequencies for this field\n for (var j = 0; j < terms.length; j++) {\n var term = terms[j]\n\n if (fieldTerms[term] == undefined) {\n fieldTerms[term] = 0\n }\n\n fieldTerms[term] += 1\n\n // add to inverted index\n // create an initial posting if one doesn't exist\n if (this.invertedIndex[term] == undefined) {\n var posting = Object.create(null)\n posting[\"_index\"] = this.termIndex\n this.termIndex += 1\n\n for (var k = 0; k < fields.length; k++) {\n posting[fields[k]] = Object.create(null)\n }\n\n this.invertedIndex[term] = posting\n }\n\n // add an entry for this term/fieldName/docRef to the invertedIndex\n if (this.invertedIndex[term][fieldName][docRef] == undefined) {\n this.invertedIndex[term][fieldName][docRef] = Object.create(null)\n }\n\n // store all whitelisted metadata about this token in the\n // inverted index\n for (var l = 0; l < this.metadataWhitelist.length; l++) {\n var metadataKey = this.metadataWhitelist[l],\n metadata = term.metadata[metadataKey]\n\n if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) {\n this.invertedIndex[term][fieldName][docRef][metadataKey] = []\n }\n\n this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata)\n }\n }\n\n }\n}\n\n/**\n * Calculates the average document length for this index\n *\n * @private\n */\nlunr.Builder.prototype.calculateAverageFieldLengths = function () {\n\n var fieldRefs = Object.keys(this.fieldLengths),\n numberOfFields = fieldRefs.length,\n accumulator = {},\n documentsWithField = {}\n\n for (var i = 0; i < numberOfFields; i++) {\n var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),\n field = fieldRef.fieldName\n\n documentsWithField[field] || (documentsWithField[field] = 0)\n documentsWithField[field] += 1\n\n accumulator[field] || (accumulator[field] = 0)\n accumulator[field] += this.fieldLengths[fieldRef]\n }\n\n var fields = Object.keys(this._fields)\n\n for (var i = 0; i < fields.length; i++) {\n var fieldName = fields[i]\n accumulator[fieldName] = accumulator[fieldName] / documentsWithField[fieldName]\n }\n\n this.averageFieldLength = accumulator\n}\n\n/**\n * Builds a vector space model of every document using lunr.Vector\n *\n * @private\n */\nlunr.Builder.prototype.createFieldVectors = function () {\n var fieldVectors = {},\n fieldRefs = Object.keys(this.fieldTermFrequencies),\n fieldRefsLength = fieldRefs.length,\n termIdfCache = Object.create(null)\n\n for (var i = 0; i < fieldRefsLength; i++) {\n var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),\n fieldName = fieldRef.fieldName,\n fieldLength = this.fieldLengths[fieldRef],\n fieldVector = new lunr.Vector,\n termFrequencies = this.fieldTermFrequencies[fieldRef],\n terms = Object.keys(termFrequencies),\n termsLength = terms.length\n\n\n var fieldBoost = this._fields[fieldName].boost || 1,\n docBoost = this._documents[fieldRef.docRef].boost || 1\n\n for (var j = 0; j < termsLength; j++) {\n var term = terms[j],\n tf = termFrequencies[term],\n termIndex = this.invertedIndex[term]._index,\n idf, score, scoreWithPrecision\n\n if (termIdfCache[term] === undefined) {\n idf = lunr.idf(this.invertedIndex[term], this.documentCount)\n termIdfCache[term] = idf\n } else {\n idf = termIdfCache[term]\n }\n\n score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[fieldName])) + tf)\n score *= fieldBoost\n score *= docBoost\n scoreWithPrecision = Math.round(score * 1000) / 1000\n // Converts 1.23456789 to 1.234.\n // Reducing the precision so that the vectors take up less\n // space when serialised. Doing it now so that they behave\n // the same before and after serialisation. Also, this is\n // the fastest approach to reducing a number's precision in\n // JavaScript.\n\n fieldVector.insert(termIndex, scoreWithPrecision)\n }\n\n fieldVectors[fieldRef] = fieldVector\n }\n\n this.fieldVectors = fieldVectors\n}\n\n/**\n * Creates a token set of all tokens in the index using lunr.TokenSet\n *\n * @private\n */\nlunr.Builder.prototype.createTokenSet = function () {\n this.tokenSet = lunr.TokenSet.fromArray(\n Object.keys(this.invertedIndex).sort()\n )\n}\n\n/**\n * Builds the index, creating an instance of lunr.Index.\n *\n * This completes the indexing process and should only be called\n * once all documents have been added to the index.\n *\n * @returns {lunr.Index}\n */\nlunr.Builder.prototype.build = function () {\n this.calculateAverageFieldLengths()\n this.createFieldVectors()\n this.createTokenSet()\n\n return new lunr.Index({\n invertedIndex: this.invertedIndex,\n fieldVectors: this.fieldVectors,\n tokenSet: this.tokenSet,\n fields: Object.keys(this._fields),\n pipeline: this.searchPipeline\n })\n}\n\n/**\n * Applies a plugin to the index builder.\n *\n * A plugin is a function that is called with the index builder as its context.\n * Plugins can be used to customise or extend the behaviour of the index\n * in some way. A plugin is just a function, that encapsulated the custom\n * behaviour that should be applied when building the index.\n *\n * The plugin function will be called with the index builder as its argument, additional\n * arguments can also be passed when calling use. The function will be called\n * with the index builder as its context.\n *\n * @param {Function} plugin The plugin to apply.\n */\nlunr.Builder.prototype.use = function (fn) {\n var args = Array.prototype.slice.call(arguments, 1)\n args.unshift(this)\n fn.apply(this, args)\n}\n/**\n * Contains and collects metadata about a matching document.\n * A single instance of lunr.MatchData is returned as part of every\n * lunr.Index~Result.\n *\n * @constructor\n * @param {string} term - The term this match data is associated with\n * @param {string} field - The field in which the term was found\n * @param {object} metadata - The metadata recorded about this term in this field\n * @property {object} metadata - A cloned collection of metadata associated with this document.\n * @see {@link lunr.Index~Result}\n */\nlunr.MatchData = function (term, field, metadata) {\n var clonedMetadata = Object.create(null),\n metadataKeys = Object.keys(metadata || {})\n\n // Cloning the metadata to prevent the original\n // being mutated during match data combination.\n // Metadata is kept in an array within the inverted\n // index so cloning the data can be done with\n // Array#slice\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i]\n clonedMetadata[key] = metadata[key].slice()\n }\n\n this.metadata = Object.create(null)\n\n if (term !== undefined) {\n this.metadata[term] = Object.create(null)\n this.metadata[term][field] = clonedMetadata\n }\n}\n\n/**\n * An instance of lunr.MatchData will be created for every term that matches a\n * document. However only one instance is required in a lunr.Index~Result. This\n * method combines metadata from another instance of lunr.MatchData with this\n * objects metadata.\n *\n * @param {lunr.MatchData} otherMatchData - Another instance of match data to merge with this one.\n * @see {@link lunr.Index~Result}\n */\nlunr.MatchData.prototype.combine = function (otherMatchData) {\n var terms = Object.keys(otherMatchData.metadata)\n\n for (var i = 0; i < terms.length; i++) {\n var term = terms[i],\n fields = Object.keys(otherMatchData.metadata[term])\n\n if (this.metadata[term] == undefined) {\n this.metadata[term] = Object.create(null)\n }\n\n for (var j = 0; j < fields.length; j++) {\n var field = fields[j],\n keys = Object.keys(otherMatchData.metadata[term][field])\n\n if (this.metadata[term][field] == undefined) {\n this.metadata[term][field] = Object.create(null)\n }\n\n for (var k = 0; k < keys.length; k++) {\n var key = keys[k]\n\n if (this.metadata[term][field][key] == undefined) {\n this.metadata[term][field][key] = otherMatchData.metadata[term][field][key]\n } else {\n this.metadata[term][field][key] = this.metadata[term][field][key].concat(otherMatchData.metadata[term][field][key])\n }\n\n }\n }\n }\n}\n\n/**\n * Add metadata for a term/field pair to this instance of match data.\n *\n * @param {string} term - The term this match data is associated with\n * @param {string} field - The field in which the term was found\n * @param {object} metadata - The metadata recorded about this term in this field\n */\nlunr.MatchData.prototype.add = function (term, field, metadata) {\n if (!(term in this.metadata)) {\n this.metadata[term] = Object.create(null)\n this.metadata[term][field] = metadata\n return\n }\n\n if (!(field in this.metadata[term])) {\n this.metadata[term][field] = metadata\n return\n }\n\n var metadataKeys = Object.keys(metadata)\n\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i]\n\n if (key in this.metadata[term][field]) {\n this.metadata[term][field][key] = this.metadata[term][field][key].concat(metadata[key])\n } else {\n this.metadata[term][field][key] = metadata[key]\n }\n }\n}\n/**\n * A lunr.Query provides a programmatic way of defining queries to be performed\n * against a {@link lunr.Index}.\n *\n * Prefer constructing a lunr.Query using the {@link lunr.Index#query} method\n * so the query object is pre-initialized with the right index fields.\n *\n * @constructor\n * @property {lunr.Query~Clause[]} clauses - An array of query clauses.\n * @property {string[]} allFields - An array of all available fields in a lunr.Index.\n */\nlunr.Query = function (allFields) {\n this.clauses = []\n this.allFields = allFields\n}\n\n/**\n * Constants for indicating what kind of automatic wildcard insertion will be used when constructing a query clause.\n *\n * This allows wildcards to be added to the beginning and end of a term without having to manually do any string\n * concatenation.\n *\n * The wildcard constants can be bitwise combined to select both leading and trailing wildcards.\n *\n * @constant\n * @default\n * @property {number} wildcard.NONE - The term will have no wildcards inserted, this is the default behaviour\n * @property {number} wildcard.LEADING - Prepend the term with a wildcard, unless a leading wildcard already exists\n * @property {number} wildcard.TRAILING - Append a wildcard to the term, unless a trailing wildcard already exists\n * @see lunr.Query~Clause\n * @see lunr.Query#clause\n * @see lunr.Query#term\n * @example <caption>query term with trailing wildcard</caption>\n * query.term('foo', { wildcard: lunr.Query.wildcard.TRAILING })\n * @example <caption>query term with leading and trailing wildcard</caption>\n * query.term('foo', {\n * wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING\n * })\n */\n\nlunr.Query.wildcard = new String (\"*\")\nlunr.Query.wildcard.NONE = 0\nlunr.Query.wildcard.LEADING = 1\nlunr.Query.wildcard.TRAILING = 2\n\n/**\n * Constants for indicating what kind of presence a term must have in matching documents.\n *\n * @constant\n * @enum {number}\n * @see lunr.Query~Clause\n * @see lunr.Query#clause\n * @see lunr.Query#term\n * @example <caption>query term with required presence</caption>\n * query.term('foo', { presence: lunr.Query.presence.REQUIRED })\n */\nlunr.Query.presence = {\n /**\n * Term's presence in a document is optional, this is the default value.\n */\n OPTIONAL: 1,\n\n /**\n * Term's presence in a document is required, documents that do not contain\n * this term will not be returned.\n */\n REQUIRED: 2,\n\n /**\n * Term's presence in a document is prohibited, documents that do contain\n * this term will not be returned.\n */\n PROHIBITED: 3\n}\n\n/**\n * A single clause in a {@link lunr.Query} contains a term and details on how to\n * match that term against a {@link lunr.Index}.\n *\n * @typedef {Object} lunr.Query~Clause\n * @property {string[]} fields - The fields in an index this clause should be matched against.\n * @property {number} [boost=1] - Any boost that should be applied when matching this clause.\n * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be.\n * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline.\n * @property {number} [wildcard=lunr.Query.wildcard.NONE] - Whether the term should have wildcards appended or prepended.\n * @property {number} [presence=lunr.Query.presence.OPTIONAL] - The terms presence in any matching documents.\n */\n\n/**\n * Adds a {@link lunr.Query~Clause} to this query.\n *\n * Unless the clause contains the fields to be matched all fields will be matched. In addition\n * a default boost of 1 is applied to the clause.\n *\n * @param {lunr.Query~Clause} clause - The clause to add to this query.\n * @see lunr.Query~Clause\n * @returns {lunr.Query}\n */\nlunr.Query.prototype.clause = function (clause) {\n if (!('fields' in clause)) {\n clause.fields = this.allFields\n }\n\n if (!('boost' in clause)) {\n clause.boost = 1\n }\n\n if (!('usePipeline' in clause)) {\n clause.usePipeline = true\n }\n\n if (!('wildcard' in clause)) {\n clause.wildcard = lunr.Query.wildcard.NONE\n }\n\n if ((clause.wildcard & lunr.Query.wildcard.LEADING) && (clause.term.charAt(0) != lunr.Query.wildcard)) {\n clause.term = \"*\" + clause.term\n }\n\n if ((clause.wildcard & lunr.Query.wildcard.TRAILING) && (clause.term.slice(-1) != lunr.Query.wildcard)) {\n clause.term = \"\" + clause.term + \"*\"\n }\n\n if (!('presence' in clause)) {\n clause.presence = lunr.Query.presence.OPTIONAL\n }\n\n this.clauses.push(clause)\n\n return this\n}\n\n/**\n * A negated query is one in which every clause has a presence of\n * prohibited. These queries require some special processing to return\n * the expected results.\n *\n * @returns boolean\n */\nlunr.Query.prototype.isNegated = function () {\n for (var i = 0; i < this.clauses.length; i++) {\n if (this.clauses[i].presence != lunr.Query.presence.PROHIBITED) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause}\n * to the list of clauses that make up this query.\n *\n * The term is used as is, i.e. no tokenization will be performed by this method. Instead conversion\n * to a token or token-like string should be done before calling this method.\n *\n * The term will be converted to a string by calling `toString`. Multiple terms can be passed as an\n * array, each term in the array will share the same options.\n *\n * @param {object|object[]} term - The term(s) to add to the query.\n * @param {object} [options] - Any additional properties to add to the query clause.\n * @returns {lunr.Query}\n * @see lunr.Query#clause\n * @see lunr.Query~Clause\n * @example <caption>adding a single term to a query</caption>\n * query.term(\"foo\")\n * @example <caption>adding a single term to a query and specifying search fields, term boost and automatic trailing wildcard</caption>\n * query.term(\"foo\", {\n * fields: [\"title\"],\n * boost: 10,\n * wildcard: lunr.Query.wildcard.TRAILING\n * })\n * @example <caption>using lunr.tokenizer to convert a string to tokens before using them as terms</caption>\n * query.term(lunr.tokenizer(\"foo bar\"))\n */\nlunr.Query.prototype.term = function (term, options) {\n if (Array.isArray(term)) {\n term.forEach(function (t) { this.term(t, lunr.utils.clone(options)) }, this)\n return this\n }\n\n var clause = options || {}\n clause.term = term.toString()\n\n this.clause(clause)\n\n return this\n}\nlunr.QueryParseError = function (message, start, end) {\n this.name = \"QueryParseError\"\n this.message = message\n this.start = start\n this.end = end\n}\n\nlunr.QueryParseError.prototype = new Error\nlunr.QueryLexer = function (str) {\n this.lexemes = []\n this.str = str\n this.length = str.length\n this.pos = 0\n this.start = 0\n this.escapeCharPositions = []\n}\n\nlunr.QueryLexer.prototype.run = function () {\n var state = lunr.QueryLexer.lexText\n\n while (state) {\n state = state(this)\n }\n}\n\nlunr.QueryLexer.prototype.sliceString = function () {\n var subSlices = [],\n sliceStart = this.start,\n sliceEnd = this.pos\n\n for (var i = 0; i < this.escapeCharPositions.length; i++) {\n sliceEnd = this.escapeCharPositions[i]\n subSlices.push(this.str.slice(sliceStart, sliceEnd))\n sliceStart = sliceEnd + 1\n }\n\n subSlices.push(this.str.slice(sliceStart, this.pos))\n this.escapeCharPositions.length = 0\n\n return subSlices.join('')\n}\n\nlunr.QueryLexer.prototype.emit = function (type) {\n this.lexemes.push({\n type: type,\n str: this.sliceString(),\n start: this.start,\n end: this.pos\n })\n\n this.start = this.pos\n}\n\nlunr.QueryLexer.prototype.escapeCharacter = function () {\n this.escapeCharPositions.push(this.pos - 1)\n this.pos += 1\n}\n\nlunr.QueryLexer.prototype.next = function () {\n if (this.pos >= this.length) {\n return lunr.QueryLexer.EOS\n }\n\n var char = this.str.charAt(this.pos)\n this.pos += 1\n return char\n}\n\nlunr.QueryLexer.prototype.width = function () {\n return this.pos - this.start\n}\n\nlunr.QueryLexer.prototype.ignore = function () {\n if (this.start == this.pos) {\n this.pos += 1\n }\n\n this.start = this.pos\n}\n\nlunr.QueryLexer.prototype.backup = function () {\n this.pos -= 1\n}\n\nlunr.QueryLexer.prototype.acceptDigitRun = function () {\n var char, charCode\n\n do {\n char = this.next()\n charCode = char.charCodeAt(0)\n } while (charCode > 47 && charCode < 58)\n\n if (char != lunr.QueryLexer.EOS) {\n this.backup()\n }\n}\n\nlunr.QueryLexer.prototype.more = function () {\n return this.pos < this.length\n}\n\nlunr.QueryLexer.EOS = 'EOS'\nlunr.QueryLexer.FIELD = 'FIELD'\nlunr.QueryLexer.TERM = 'TERM'\nlunr.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE'\nlunr.QueryLexer.BOOST = 'BOOST'\nlunr.QueryLexer.PRESENCE = 'PRESENCE'\n\nlunr.QueryLexer.lexField = function (lexer) {\n lexer.backup()\n lexer.emit(lunr.QueryLexer.FIELD)\n lexer.ignore()\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexTerm = function (lexer) {\n if (lexer.width() > 1) {\n lexer.backup()\n lexer.emit(lunr.QueryLexer.TERM)\n }\n\n lexer.ignore()\n\n if (lexer.more()) {\n return lunr.QueryLexer.lexText\n }\n}\n\nlunr.QueryLexer.lexEditDistance = function (lexer) {\n lexer.ignore()\n lexer.acceptDigitRun()\n lexer.emit(lunr.QueryLexer.EDIT_DISTANCE)\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexBoost = function (lexer) {\n lexer.ignore()\n lexer.acceptDigitRun()\n lexer.emit(lunr.QueryLexer.BOOST)\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexEOS = function (lexer) {\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n}\n\n// This matches the separator used when tokenising fields\n// within a document. These should match otherwise it is\n// not possible to search for some tokens within a document.\n//\n// It is possible for the user to change the separator on the\n// tokenizer so it _might_ clash with any other of the special\n// characters already used within the search string, e.g. :.\n//\n// This means that it is possible to change the separator in\n// such a way that makes some words unsearchable using a search\n// string.\nlunr.QueryLexer.termSeparator = lunr.tokenizer.separator\n\nlunr.QueryLexer.lexText = function (lexer) {\n while (true) {\n var char = lexer.next()\n\n if (char == lunr.QueryLexer.EOS) {\n return lunr.QueryLexer.lexEOS\n }\n\n // Escape character is '\\'\n if (char.charCodeAt(0) == 92) {\n lexer.escapeCharacter()\n continue\n }\n\n if (char == \":\") {\n return lunr.QueryLexer.lexField\n }\n\n if (char == \"~\") {\n lexer.backup()\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n return lunr.QueryLexer.lexEditDistance\n }\n\n if (char == \"^\") {\n lexer.backup()\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n return lunr.QueryLexer.lexBoost\n }\n\n // \"+\" indicates term presence is required\n // checking for length to ensure that only\n // leading \"+\" are considered\n if (char == \"+\" && lexer.width() === 1) {\n lexer.emit(lunr.QueryLexer.PRESENCE)\n return lunr.QueryLexer.lexText\n }\n\n // \"-\" indicates term presence is prohibited\n // checking for length to ensure that only\n // leading \"-\" are considered\n if (char == \"-\" && lexer.width() === 1) {\n lexer.emit(lunr.QueryLexer.PRESENCE)\n return lunr.QueryLexer.lexText\n }\n\n if (char.match(lunr.QueryLexer.termSeparator)) {\n return lunr.QueryLexer.lexTerm\n }\n }\n}\n\nlunr.QueryParser = function (str, query) {\n this.lexer = new lunr.QueryLexer (str)\n this.query = query\n this.currentClause = {}\n this.lexemeIdx = 0\n}\n\nlunr.QueryParser.prototype.parse = function () {\n this.lexer.run()\n this.lexemes = this.lexer.lexemes\n\n var state = lunr.QueryParser.parseClause\n\n while (state) {\n state = state(this)\n }\n\n return this.query\n}\n\nlunr.QueryParser.prototype.peekLexeme = function () {\n return this.lexemes[this.lexemeIdx]\n}\n\nlunr.QueryParser.prototype.consumeLexeme = function () {\n var lexeme = this.peekLexeme()\n this.lexemeIdx += 1\n return lexeme\n}\n\nlunr.QueryParser.prototype.nextClause = function () {\n var completedClause = this.currentClause\n this.query.clause(completedClause)\n this.currentClause = {}\n}\n\nlunr.QueryParser.parseClause = function (parser) {\n var lexeme = parser.peekLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n switch (lexeme.type) {\n case lunr.QueryLexer.PRESENCE:\n return lunr.QueryParser.parsePresence\n case lunr.QueryLexer.FIELD:\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expected either a field or a term, found \" + lexeme.type\n\n if (lexeme.str.length >= 1) {\n errorMessage += \" with value '\" + lexeme.str + \"'\"\n }\n\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n}\n\nlunr.QueryParser.parsePresence = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n switch (lexeme.str) {\n case \"-\":\n parser.currentClause.presence = lunr.Query.presence.PROHIBITED\n break\n case \"+\":\n parser.currentClause.presence = lunr.Query.presence.REQUIRED\n break\n default:\n var errorMessage = \"unrecognised presence operator'\" + lexeme.str + \"'\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n var errorMessage = \"expecting term or field, found nothing\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.FIELD:\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expecting term or field, found '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseField = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n if (parser.query.allFields.indexOf(lexeme.str) == -1) {\n var possibleFields = parser.query.allFields.map(function (f) { return \"'\" + f + \"'\" }).join(', '),\n errorMessage = \"unrecognised field '\" + lexeme.str + \"', possible fields: \" + possibleFields\n\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.fields = [lexeme.str]\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n var errorMessage = \"expecting term, found nothing\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expecting term, found '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseTerm = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n parser.currentClause.term = lexeme.str.toLowerCase()\n\n if (lexeme.str.indexOf(\"*\") != -1) {\n parser.currentClause.usePipeline = false\n }\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseEditDistance = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n var editDistance = parseInt(lexeme.str, 10)\n\n if (isNaN(editDistance)) {\n var errorMessage = \"edit distance must be numeric\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.editDistance = editDistance\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseBoost = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n var boost = parseInt(lexeme.str, 10)\n\n if (isNaN(boost)) {\n var errorMessage = \"boost must be numeric\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.boost = boost\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\n /**\n * export the module via AMD, CommonJS or as a browser global\n * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js\n */\n ;(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(factory)\n } else if (typeof exports === 'object') {\n /**\n * Node. Does not work with strict CommonJS, but\n * only CommonJS-like enviroments that support module.exports,\n * like Node.\n */\n module.exports = factory()\n } else {\n // Browser globals (root is window)\n root.lunr = factory()\n }\n }(this, function () {\n /**\n * Just return a value to define the module export.\n * This example returns an object, but the module\n * can return a function as the exported value.\n */\n return lunr\n }))\n})();\n","import {\n has, keys, map, orderBy,\n filter, concat, reverse,\n} from 'lodash/fp';\nimport { getAllowedRecordNodesForIndex } from '../templateApi/hierarchy';\nimport { mapRecord } from './evaluate';\nimport { constructRecord } from '../recordApi/getNew';\nimport { getSampleFieldValue, detectType, all } from '../types';\nimport { $ } from '../common';\n\nexport const generateSchema = (hierarchy, indexNode) => {\n const recordNodes = getAllowedRecordNodesForIndex(hierarchy, indexNode);\n const mappedRecords = $(recordNodes, [\n map(n => mapRecord(createSampleRecord(n), indexNode)),\n ]);\n\n // always has record key and sort key\n const schema = {\n sortKey: all.string,\n key: all.string,\n };\n\n const fieldsHas = has(schema);\n const setField = (fieldName, value) => {\n if (value === null || value === undefined) { return; }\n\n const thisType = detectType(value);\n if (fieldsHas(fieldName)) {\n if (schema[fieldName] !== thisType) {\n schema[fieldName] = all.string;\n }\n } else {\n schema[fieldName] = thisType;\n }\n };\n\n for (const mappedRec of mappedRecords) {\n for (const f in mappedRec) {\n setField(f, mappedRec[f]);\n }\n }\n\n // returing an array of {name, type}\n return $(schema, [\n keys,\n map(k => ({ name: k, type: schema[k].name })),\n filter(s => s.name !== 'sortKey'),\n orderBy('name', ['desc']), // reverse aplha\n concat([{ name: 'sortKey', type: all.string.name }]), // sortKey on end\n reverse, // sortKey first, then rest are alphabetical\n ]);\n};\n\nconst createSampleRecord = recordNode => constructRecord(\n recordNode,\n getSampleFieldValue,\n recordNode.parent().nodeKey(),\n);\n","import {\n keyBy, mapValues,\n} from 'lodash/fp';\nimport { generate } from 'shortid';\nimport { getNodeForCollectionPath } from '../templateApi/hierarchy';\nimport { getNewFieldValue } from '../types';\nimport {\n $, joinKey, safeKey, apiWrapperSync, events,\n} from '../common';\nimport { permission } from '../authApi/permissions';\n\nexport const getNew = app => (collectionKey, recordTypeName) => {\n const recordNode = getRecordNode(app, collectionKey, recordTypeName);\n collectionKey=safeKey(collectionKey);\n return apiWrapperSync(\n app,\n events.recordApi.getNew,\n permission.createRecord.isAuthorized(recordNode.nodeKey()),\n { collectionKey, recordTypeName },\n _getNew, recordNode, collectionKey,\n );\n};\n\nconst _getNew = (recordNode, collectionKey) => constructRecord(recordNode, getNewFieldValue, collectionKey);\n\nconst getRecordNode = (app, collectionKey) => {\n collectionKey = safeKey(collectionKey);\n return getNodeForCollectionPath(app.hierarchy)(collectionKey);\n};\n\nexport const getNewChild = app => (recordKey, collectionName, recordTypeName) => \n getNew(app)(joinKey(recordKey, collectionName), recordTypeName);\n\nexport const constructRecord = (recordNode, getFieldValue, collectionKey) => {\n const record = $(recordNode.fields, [\n keyBy('name'),\n mapValues(getFieldValue),\n ]);\n\n record.id = `${recordNode.nodeId}-${generate()}`;\n record.key = joinKey(collectionKey, record.id);\n record.isNew = true;\n record.type = recordNode.name;\n return record;\n};\n","\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\nvar inited = false;\nfunction init () {\n inited = true;\n var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\n for (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n }\n\n revLookup['-'.charCodeAt(0)] = 62\n revLookup['_'.charCodeAt(0)] = 63\n}\n\nexport function toByteArray (b64) {\n if (!inited) {\n init();\n }\n var i, j, l, tmp, placeHolders, arr\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\n\n // base64 is 4/3 + up to two characters of the original data\n arr = new Arr(len * 3 / 4 - placeHolders)\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len\n\n var L = 0\n\n for (i = 0, j = 0; i < l; i += 4, j += 3) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]\n arr[L++] = (tmp >> 16) & 0xFF\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[L++] = tmp & 0xFF\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nexport function fromByteArray (uint8) {\n if (!inited) {\n init();\n }\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var output = ''\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n output += lookup[tmp >> 2]\n output += lookup[(tmp << 4) & 0x3F]\n output += '=='\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1])\n output += lookup[tmp >> 10]\n output += lookup[(tmp >> 4) & 0x3F]\n output += lookup[(tmp << 2) & 0x3F]\n output += '='\n }\n\n parts.push(output)\n\n return parts.join('')\n}\n","\nexport function read (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexport function write (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nexport default Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n\nimport * as base64 from './base64'\nimport * as ieee754 from './ieee754'\nimport isArray from './isArray'\n\nexport var INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : true\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nvar _kMaxLength = kMaxLength()\nexport {_kMaxLength as kMaxLength};\nfunction typedArraySupport () {\n return true;\n // rollup issues\n // try {\n // var arr = new Uint8Array(1)\n // arr.__proto__ = {\n // __proto__: Uint8Array.prototype,\n // foo: function () { return 42 }\n // }\n // return arr.foo() === 42 && // typed array instances can be augmented\n // typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n // arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n // } catch (e) {\n // return false\n // }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nexport function Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n // Object.defineProperty(Buffer, Symbol.species, {\n // value: null,\n // configurable: true\n // })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (internalIsBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nexport function SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\nBuffer.isBuffer = isBuffer;\nfunction internalIsBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!internalIsBuffer(a) || !internalIsBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!internalIsBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (internalIsBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!internalIsBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!internalIsBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (internalIsBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!internalIsBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = internalIsBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\n\n// the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nexport function isBuffer(obj) {\n return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj))\n}\n\nfunction isFastBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0))\n}\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","import {\n joinKey, keySep, getHashCode,\n} from '../common';\nimport { getLastPartInKey } from '../templateApi/hierarchy';\n\nexport const TRANSACTIONS_FOLDER = `${keySep}.transactions`;\nexport const LOCK_FILENAME = 'lock';\nexport const LOCK_FILE_KEY = joinKey(\n TRANSACTIONS_FOLDER, LOCK_FILENAME,\n);\nexport const idSep = '$';\n\nconst isOfType = typ => trans => trans.transactionType === typ;\n\nexport const CREATE_RECORD_TRANSACTION = 'create';\nexport const UPDATE_RECORD_TRANSACTION = 'update';\nexport const DELETE_RECORD_TRANSACTION = 'delete';\nexport const BUILD_INDEX_TRANSACTION = 'build';\n\nexport const isUpdate = isOfType(UPDATE_RECORD_TRANSACTION);\nexport const isDelete = isOfType(DELETE_RECORD_TRANSACTION);\nexport const isCreate = isOfType(CREATE_RECORD_TRANSACTION);\nexport const isBuildIndex = isOfType(BUILD_INDEX_TRANSACTION);\n\nexport const keyToFolderName = nodeKey => getHashCode(nodeKey);\n\nexport const getTransactionId = (recordId, transactionType, uniqueId) => \n `${recordId}${idSep}${transactionType}${idSep}${uniqueId}`;\n\nexport const buildIndexFolder = '.BUILD-';\nexport const nodeKeyHashFromBuildFolder = folder => folder.replace(buildIndexFolder, '');\n\nexport const isBuildIndexFolder = key => getLastPartInKey(key).startsWith(buildIndexFolder);\n\nexport const IndexNodeKeyFolder = indexNodeKey => joinKey(\n TRANSACTIONS_FOLDER,\n buildIndexFolder + keyToFolderName(indexNodeKey),\n);\n\nexport const IndexNodeKeyBatchFolder = (indexNodeKey, count) => \n joinKey(IndexNodeKeyFolder(indexNodeKey), Math.floor(count / BUILDINDEX_BATCH_COUNT).toString());\n\nexport const IndexShardKeyFolder = (indexNodeKey, indexShardKey) => \n joinKey(IndexNodeKeyFolder(indexNodeKey), indexShardKey);\n\nexport const BUILDINDEX_BATCH_COUNT = 1000;\nexport const timeoutMilliseconds = 30 * 1000; // 30 secs\nexport const maxLockRetries = 1;\n","import { each, find } from 'lodash';\nimport { map, max, constant } from 'lodash/fp';\nimport {\n switchCase, defaultCase, joinKey,\n $, isNothing, isSomething,\n} from '../common';\nimport {\n isIndex, isRoot, isSingleRecord, isCollectionRecord,\n isRecord, isaggregateGroup,\n getFlattenedHierarchy,\n} from './hierarchy';\nimport { all } from '../types';\nimport { BadRequestError } from '../common/errors';\n\nexport const createNodeErrors = {\n indexCannotBeParent: 'Index template cannot be a parent',\n allNonRootNodesMustHaveParent: 'Only the root node may have no parent',\n indexParentMustBeRecordOrRoot: 'An index may only have a record or root as a parent',\n aggregateParentMustBeAnIndex: 'aggregateGroup parent must be an index',\n};\n\nconst pathRegxMaker = node => () => node.nodeKey().replace(/{id}/g, '[a-zA-Z0-9_-]+');\n\nconst nodeKeyMaker = node => () => switchCase(\n\n [n => isRecord(n) && !isSingleRecord(n),\n n => joinKey(\n node.parent().nodeKey(),\n node.collectionName,\n `${n.nodeId}-{id}`,\n )],\n\n [isRoot,\n constant('/')],\n\n [defaultCase,\n n => joinKey(node.parent().nodeKey(), n.name)],\n\n)(node);\n\n\nconst validate = parent => (node) => {\n if (isIndex(node)\n && isSomething(parent)\n && !isRoot(parent)\n && !isRecord(parent)) {\n throw new BadRequestError(createNodeErrors.indexParentMustBeRecordOrRoot);\n }\n\n if (isaggregateGroup(node)\n && isSomething(parent)\n && !isIndex(parent)) {\n throw new BadRequestError(createNodeErrors.aggregateParentMustBeAnIndex);\n }\n\n if (isNothing(parent) && !isRoot(node)) { throw new BadRequestError(createNodeErrors.allNonRootNodesMustHaveParent); }\n\n return node;\n};\n\nconst construct = parent => (node) => {\n node.nodeKey = nodeKeyMaker(node);\n node.pathRegx = pathRegxMaker(node);\n node.parent = constant(parent);\n node.isRoot = () => isNothing(parent)\n && node.name === 'root'\n && node.type === 'root';\n if (isCollectionRecord(node)) {\n node.collectionNodeKey = () => joinKey(\n parent.nodeKey(), node.collectionName,\n );\n node.collectionPathRegx = () => joinKey(\n parent.pathRegx(), node.collectionName,\n );\n }\n return node;\n};\n\nconst addToParent = (obj) => {\n const parent = obj.parent();\n if (isSomething(parent)) {\n if (isIndex(obj))\n // Q: why are indexes not children ?\n // A: because they cannot have children of their own.\n { parent.indexes.push(obj); } else if (isaggregateGroup(obj)) { parent.aggregateGroups.push(obj); } else { parent.children.push(obj); }\n\n if (isRecord(obj)) {\n const defaultIndex = find(\n parent.indexes,\n i => i.name === `${parent.name}_index`,\n );\n if (defaultIndex) {\n defaultIndex.allowedRecordNodeIds.push(obj.nodeId);\n }\n }\n }\n return obj;\n};\n\nexport const constructNode = (parent, obj) => $(obj, [\n construct(parent),\n validate(parent),\n addToParent,\n]);\n\nconst getNodeId = (parentNode) => {\n // this case is handled better elsewhere\n if (!parentNode) return null;\n const findRoot = n => (isRoot(n) ? n : findRoot(n.parent()));\n const root = findRoot(parentNode);\n\n return ($(root, [\n getFlattenedHierarchy,\n map(n => n.nodeId),\n max]) + 1);\n};\n\nexport const constructHierarchy = (node, parent) => {\n construct(parent)(node);\n if (node.indexes) {\n each(node.indexes,\n child => constructHierarchy(child, node));\n }\n if (node.aggregateGroups) {\n each(node.aggregateGroups,\n child => constructHierarchy(child, node));\n }\n if (node.children && node.children.length > 0) {\n each(node.children,\n child => constructHierarchy(child, node));\n }\n if (node.fields) {\n each(node.fields,\n f => each(f.typeOptions, (val, key) => {\n const def = all[f.type].optionDefinitions[key];\n if (!def) {\n // unknown typeOption\n delete f.typeOptions[key];\n } else {\n f.typeOptions[key] = def.parse(val);\n }\n }));\n }\n return node;\n};\n\n\nexport const getNewRootLevel = () => construct()({\n name: 'root',\n type: 'root',\n children: [],\n pathMaps: [],\n indexes: [],\n nodeId: 0,\n});\n\nconst _getNewRecordTemplate = (parent, name, createDefaultIndex, isSingle) => {\n const node = constructNode(parent, {\n name,\n type: 'record',\n fields: [],\n children: [],\n validationRules: [],\n nodeId: getNodeId(parent),\n indexes: [],\n allidsShardFactor: isRecord(parent) ? 1 : 64,\n collectionName: '',\n isSingle,\n });\n\n if (createDefaultIndex) {\n const defaultIndex = getNewIndexTemplate(parent);\n defaultIndex.name = `${name}_index`;\n defaultIndex.allowedRecordNodeIds.push(node.nodeId);\n }\n\n return node;\n};\n\nexport const getNewRecordTemplate = (parent, name = '', createDefaultIndex = true) => _getNewRecordTemplate(parent, name, createDefaultIndex, false);\n\nexport const getNewSingleRecordTemplate = parent => _getNewRecordTemplate(parent, '', false, true);\n\nexport const getNewIndexTemplate = (parent, type = 'ancestor') => constructNode(parent, {\n name: '',\n type: 'index',\n map: 'return {...record};',\n filter: '',\n indexType: type,\n getShardName: '',\n getSortKey: 'record.id',\n aggregateGroups: [],\n allowedRecordNodeIds: [],\n nodeId: getNodeId(parent),\n});\n\nexport const getNewAggregateGroupTemplate = index => constructNode(index, {\n name: '',\n type: 'aggregateGroup',\n groupBy: '',\n aggregates: [],\n condition: '',\n nodeId: getNodeId(index),\n});\n\nexport const getNewAggregateTemplate = (set) => {\n const aggregatedValue = {\n name: '',\n aggregatedValue: '',\n };\n set.aggregates.push(aggregatedValue);\n return aggregatedValue;\n};\n\nexport default {\n getNewRootLevel,\n getNewRecordTemplate,\n getNewIndexTemplate,\n createNodeErrors,\n constructHierarchy,\n getNewAggregateGroupTemplate,\n getNewAggregateTemplate,\n};\n","import {\n some, map, filter, keys, includes,\n countBy, flatten,\n} from 'lodash/fp';\nimport {\n isSomething, $,\n isNonEmptyString,\n isNothingOrEmpty,\n isNothing,\n} from '../common';\nimport { all, getDefaultOptions } from '../types';\nimport { applyRuleSet, makerule } from '../common/validationCommon';\nimport { BadRequestError } from '../common/errors';\n\nexport const fieldErrors = {\n AddFieldValidationFailed: 'Add field validation: ',\n};\n\nexport const allowedTypes = () => keys(all);\n\nexport const getNewField = type => ({\n name: '', // how field is referenced internally\n type,\n typeOptions: getDefaultOptions(type),\n label: '', // how field is displayed\n getInitialValue: 'default', // function that gets value when initially created\n getUndefinedValue: 'default', // function that gets value when field undefined on record\n});\n\nconst fieldRules = allFields => [\n makerule('name', 'field name is not set',\n f => isNonEmptyString(f.name)),\n makerule('type', 'field type is not set',\n f => isNonEmptyString(f.type)),\n makerule('label', 'field label is not set',\n f => isNonEmptyString(f.label)),\n makerule('getInitialValue', 'getInitialValue function is not set',\n f => isNonEmptyString(f.getInitialValue)),\n makerule('getUndefinedValue', 'getUndefinedValue function is not set',\n f => isNonEmptyString(f.getUndefinedValue)),\n makerule('name', 'field name is duplicated',\n f => isNothingOrEmpty(f.name)\n || countBy('name')(allFields)[f.name] === 1),\n makerule('type', 'type is unknown',\n f => isNothingOrEmpty(f.type)\n || some(t => f.type === t)(allowedTypes())),\n];\n\nconst typeOptionsRules = (field) => {\n const type = all[field.type];\n if (isNothing(type)) return [];\n\n const def = optName => type.optionDefinitions[optName];\n\n return $(field.typeOptions, [\n keys,\n filter(o => isSomething(def(o))\n && isSomething(def(o).isValid)),\n map(o => makerule(\n `typeOptions.${o}`,\n `${def(o).requirementDescription}`,\n field => def(o).isValid(field.typeOptions[o]),\n )),\n ]);\n};\n\nexport const validateField = allFields => (field) => {\n const everySingleField = includes(field)(allFields) ? allFields : [...allFields, field];\n return applyRuleSet([...fieldRules(everySingleField), ...typeOptionsRules(field)])(field);\n};\n\nexport const validateAllFields = recordNode => $(recordNode.fields, [\n map(validateField(recordNode.fields)),\n flatten,\n]);\n\nexport const addField = (recordTemplate, field) => {\n if (isNothingOrEmpty(field.label)) {\n field.label = field.name;\n }\n const validationMessages = validateField([...recordTemplate.fields, field])(field);\n if (validationMessages.length > 0) {\n const errors = map(m => m.error)(validationMessages);\n throw new BadRequestError(`${fieldErrors.AddFieldValidationFailed} ${errors.join(', ')}`);\n }\n recordTemplate.fields.push(field);\n};\n","import { isNumber, isBoolean, defaultCase } from 'lodash/fp';\nimport { switchCase } from '../common';\n\nexport const getNewRecordValidationRule = (invalidFields,\n messageWhenInvalid,\n expressionWhenValid) => ({\n invalidFields, messageWhenInvalid, expressionWhenValid,\n});\n\nconst getStaticValue = switchCase(\n [isNumber, v => v.toString()],\n [isBoolean, v => v.toString()],\n [defaultCase, v => `'${v}'`],\n);\n\nexport const commonRecordValidationRules = ({\n\n fieldNotEmpty: fieldName => getNewRecordValidationRule(\n [fieldName],\n `${fieldName} is empty`,\n `!_.isEmpty(record['${fieldName}'])`,\n ),\n\n fieldBetween: (fieldName, min, max) => getNewRecordValidationRule(\n [fieldName],\n `${fieldName} must be between ${min.toString()} and ${max.toString()}`,\n `record['${fieldName}'] >= ${getStaticValue(min)} && record['${fieldName}'] <= ${getStaticValue(max)} `,\n ),\n\n fieldGreaterThan: (fieldName, min, max) => getNewRecordValidationRule(\n [fieldName],\n `${fieldName} must be greater than ${min.toString()} and ${max.toString()}`,\n `record['${fieldName}'] >= ${getStaticValue(min)} `,\n ),\n});\n\nexport const addRecordValidationRule = recordNode => rule => recordNode.validationRules.push(rule);\n","\nexport const createTrigger = () => ({\n actionName: '',\n eventName: '',\n // function, has access to event context,\n // returns object that is used as parameter to action\n // only used if triggered by event\n optionsCreator: '',\n // action runs if true,\n // has access to event context\n condition: '',\n});\n\nexport const createAction = () => ({\n name: '',\n behaviourSource: '',\n // name of function in actionSource\n behaviourName: '',\n // parameter passed into behaviour.\n // any other parms passed at runtime e.g.\n // by trigger, or manually, will be merged into this\n initialOptions: {},\n});\n","import { flatten, map, isEmpty } from 'lodash/fp';\nimport { compileCode } from '@nx-js/compiler-util';\nimport {\n isNonEmptyString, \n executesWithoutException, $, \n} from '../common';\nimport { applyRuleSet, makerule } from '../common/validationCommon';\n\nconst aggregateRules = [\n makerule('name', 'choose a name for the aggregate',\n a => isNonEmptyString(a.name)),\n makerule('aggregatedValue', 'aggregatedValue does not compile',\n a => isEmpty(a.aggregatedValue)\n || executesWithoutException(\n () => compileCode(a.aggregatedValue),\n )),\n];\n\nexport const validateAggregate = aggregate => applyRuleSet(aggregateRules)(aggregate);\n\nexport const validateAllAggregates = all => $(all, [\n map(validateAggregate),\n flatten,\n]);\n","import {\n filter, union, constant,\n map, flatten, every, uniqBy,\n some, includes, isEmpty, has\n} from 'lodash/fp';\nimport { compileExpression, compileCode } from '@nx-js/compiler-util';\nimport {\n $, isSomething, switchCase,\n anyTrue, isNonEmptyArray, executesWithoutException,\n isNonEmptyString, defaultCase,\n} from '../common';\nimport {\n isRecord, isRoot, isaggregateGroup,\n isIndex, getFlattenedHierarchy,\n} from './hierarchy';\nimport { eventsList } from '../common/events';\nimport { validateAllFields } from './fields';\nimport {\n applyRuleSet, makerule, stringNotEmpty,\n validationError,\n} from '../common/validationCommon';\nimport { indexRuleSet } from './indexes';\nimport { validateAllAggregates } from './validateAggregate';\n\nexport const ruleSet = (...sets) => constant(flatten([...sets]));\n\nconst commonRules = [\n makerule('name', 'node name is not set',\n node => stringNotEmpty(node.name)),\n makerule('type', 'node type not recognised',\n anyTrue(isRecord, isRoot, isIndex, isaggregateGroup)),\n];\n\nconst recordRules = [\n makerule('fields', 'no fields have been added to the record',\n node => isNonEmptyArray(node.fields)),\n makerule('validationRules', \"validation rule is missing a 'messageWhenValid' member\",\n node => every(r => has('messageWhenInvalid')(r))(node.validationRules)),\n makerule('validationRules', \"validation rule is missing a 'expressionWhenValid' member\",\n node => every(r => has('expressionWhenValid')(r))(node.validationRules)),\n];\n\n\nconst aggregateGroupRules = [\n makerule('condition', 'condition does not compile',\n a => isEmpty(a.condition)\n || executesWithoutException(\n () => compileExpression(a.condition),\n )),\n];\n\nconst getRuleSet = node => switchCase(\n\n [isRecord, ruleSet(\n commonRules,\n recordRules,\n )],\n\n [isIndex, ruleSet(\n commonRules,\n indexRuleSet,\n )],\n\n [isaggregateGroup, ruleSet(\n commonRules,\n aggregateGroupRules,\n )],\n\n [defaultCase, ruleSet(commonRules, [])],\n)(node);\n\nexport const validateNode = node => applyRuleSet(getRuleSet(node))(node);\n\nexport const validateAll = (appHierarchy) => {\n const flattened = getFlattenedHierarchy(\n appHierarchy,\n );\n\n const duplicateNameRule = makerule(\n 'name', 'node names must be unique under shared parent',\n n => filter(f => f.parent() === n.parent()\n && f.name === n.name)(flattened).length === 1,\n );\n\n const duplicateNodeKeyErrors = $(flattened, [\n map(n => applyRuleSet([duplicateNameRule])(n)),\n filter(isSomething),\n flatten,\n ]);\n\n const fieldErrors = $(flattened, [\n filter(isRecord),\n map(validateAllFields),\n flatten,\n ]);\n\n const aggregateErrors = $(flattened, [\n filter(isaggregateGroup),\n map(s => validateAllAggregates(\n s.aggregates,\n )),\n flatten,\n ]);\n\n return $(flattened, [\n map(validateNode),\n flatten,\n union(duplicateNodeKeyErrors),\n union(fieldErrors),\n union(aggregateErrors),\n ]);\n};\n\nconst actionRules = [\n makerule('name', 'action must have a name',\n a => isNonEmptyString(a.name)),\n makerule('behaviourName', 'must supply a behaviour name to the action',\n a => isNonEmptyString(a.behaviourName)),\n makerule('behaviourSource', 'must supply a behaviour source for the action',\n a => isNonEmptyString(a.behaviourSource)),\n];\n\nconst duplicateActionRule = makerule('', 'action name must be unique', () => {});\n\nconst validateAction = action => applyRuleSet(actionRules)(action);\n\n\nexport const validateActions = (allActions) => {\n const duplicateActions = $(allActions, [\n filter(a => filter(a2 => a2.name === a.name)(allActions).length > 1),\n map(a => validationError(duplicateActionRule, a)),\n ]);\n\n const errors = $(allActions, [\n map(validateAction),\n flatten,\n union(duplicateActions),\n uniqBy('name'),\n ]);\n\n return errors;\n};\n\nconst triggerRules = actions => ([\n makerule('actionName', 'must specify an action',\n t => isNonEmptyString(t.actionName)),\n makerule('eventName', 'must specify and event',\n t => isNonEmptyString(t.eventName)),\n makerule('actionName', 'specified action not supplied',\n t => !t.actionName\n || some(a => a.name === t.actionName)(actions)),\n makerule('eventName', 'invalid Event Name',\n t => !t.eventName\n || includes(t.eventName)(eventsList)),\n makerule('optionsCreator', 'Options Creator does not compile - check your expression',\n (t) => {\n if (!t.optionsCreator) return true;\n try {\n compileCode(t.optionsCreator);\n return true;\n } catch (_) { return false; }\n }),\n makerule('condition', 'Trigger condition does not compile - check your expression',\n (t) => {\n if (!t.condition) return true;\n try {\n compileExpression(t.condition);\n return true;\n } catch (_) { return false; }\n }),\n]);\n\nexport const validateTrigger = (trigger, allActions) => {\n const errors = applyRuleSet(triggerRules(allActions))(trigger);\n\n return errors;\n};\n\nexport const validateTriggers = (triggers, allActions) => $(triggers, [\n map(t => validateTrigger(t, allActions)),\n flatten,\n]);\n","import { appDefinitionFile } from '../common';\nimport { constructHierarchy } from './createNodes';\n\nexport const getApplicationDefinition = datastore => async () => {\n const exists = await datastore.exists(appDefinitionFile);\n\n if (!exists) throw new Error('Application definition does not exist');\n\n const appDefinition = await datastore.loadJson(appDefinitionFile);\n appDefinition.hierarchy = constructHierarchy(\n appDefinition.hierarchy,\n );\n return appDefinition;\n};\n","import { join } from 'lodash';\nimport { permission } from '../authApi/permissions';\nimport { appDefinitionFile } from '../common';\nimport { validateAll } from './validate';\nimport { apiWrapper } from '../common/apiWrapper';\nimport { events } from '../common/events';\n\nexport const saveApplicationHierarchy = app => async hierarchy => apiWrapper(\n app,\n events.templateApi.saveApplicationHierarchy,\n permission.writeTemplates.isAuthorized,\n { hierarchy },\n _saveApplicationHierarchy, app.datastore, hierarchy,\n);\n\n\nexport const _saveApplicationHierarchy = async (datastore, hierarchy) => {\n const validationErrors = await validateAll(hierarchy);\n if (validationErrors.length > 0) {\n throw new Error(`Hierarchy is invalid: ${join(\n validationErrors.map(e => `${e.item.nodeKey ? e.item.nodeKey() : ''} : ${e.error}`),\n ',',\n )}`);\n }\n\n if (await datastore.exists(appDefinitionFile)) {\n const appDefinition = await datastore.loadJson(appDefinitionFile);\n appDefinition.hierarchy = hierarchy;\n await datastore.updateJson(appDefinitionFile, appDefinition);\n } else {\n await datastore.createFolder('/.config');\n const appDefinition = { actions: [], triggers: [], hierarchy };\n await datastore.createJson(appDefinitionFile, appDefinition);\n }\n};\n","import { join } from 'lodash';\nimport { map } from 'lodash/fp';\nimport { appDefinitionFile } from '../common';\nimport { validateTriggers, validateActions } from './validate';\nimport { apiWrapper } from '../common/apiWrapper';\nimport { events } from '../common/events';\nimport { permission } from '../authApi/permissions';\nimport { BadRequestError } from '../common/errors';\n\nexport const saveActionsAndTriggers = app => async (actions, triggers) => apiWrapper(\n app,\n events.templateApi.saveActionsAndTriggers,\n permission.writeTemplates.isAuthorized,\n { actions, triggers },\n _saveActionsAndTriggers, app.datastore, actions, triggers,\n);\n\nexport const _saveActionsAndTriggers = async (datastore, actions, triggers) => {\n if (await datastore.exists(appDefinitionFile)) {\n const appDefinition = await datastore.loadJson(appDefinitionFile);\n appDefinition.actions = actions;\n appDefinition.triggers = triggers;\n\n const actionValidErrs = map(e => e.error)(validateActions(actions));\n\n if (actionValidErrs.length > 0) {\n throw new BadRequestError(`Actions are invalid: ${join(actionValidErrs, ', ')}`);\n }\n\n const triggerValidErrs = map(e => e.error)(validateTriggers(triggers, actions));\n\n if (triggerValidErrs.length > 0) {\n throw new BadRequestError(`Triggers are invalid: ${join(triggerValidErrs, ', ')}`);\n }\n\n await datastore.updateJson(appDefinitionFile, appDefinition);\n } else {\n throw new BadRequestError('Cannot save actions: Application definition does not exist');\n }\n};\n","import {\n getNewRootLevel,\n getNewRecordTemplate, getNewIndexTemplate,\n createNodeErrors, constructHierarchy,\n getNewAggregateGroupTemplate, getNewSingleRecordTemplate,\n getNewAggregateTemplate, constructNode,\n}\n from './createNodes';\nimport {\n getNewField, validateField,\n addField, fieldErrors,\n} from './fields';\nimport {\n getNewRecordValidationRule, commonRecordValidationRules,\n addRecordValidationRule,\n} from './recordValidationRules';\nimport { createAction, createTrigger } from './createActions';\nimport {\n validateTriggers, validateTrigger, validateNode,\n validateActions, validateAll,\n} from './validate';\nimport { getApplicationDefinition } from './getApplicationDefinition';\nimport { saveApplicationHierarchy } from './saveApplicationHierarchy';\nimport { saveActionsAndTriggers } from './saveActionsAndTriggers';\nimport { all } from '../types';\nimport { getBehaviourSources } from \"./getBehaviourSources\";\n\nconst api = app => ({\n\n getApplicationDefinition: getApplicationDefinition(app.datastore),\n saveApplicationHierarchy: saveApplicationHierarchy(app),\n saveActionsAndTriggers: saveActionsAndTriggers(app),\n getBehaviourSources: () => getBehaviourSources(app.datastore),\n getNewRootLevel,\n constructNode,\n getNewIndexTemplate,\n getNewRecordTemplate,\n getNewField,\n validateField,\n addField,\n fieldErrors,\n getNewRecordValidationRule,\n commonRecordValidationRules,\n addRecordValidationRule,\n createAction,\n createTrigger,\n validateActions,\n validateTrigger,\n getNewAggregateGroupTemplate,\n getNewAggregateTemplate,\n constructHierarchy,\n getNewSingleRecordTemplate,\n allTypes: all,\n validateNode,\n validateAll,\n validateTriggers,\n});\n\n\nexport const getTemplateApi = app => api(app);\n\nexport const errors = createNodeErrors;\n\nexport default getTemplateApi;\n","\nexport const getBehaviourSources = async (datastore) => {\n await datastore.loadFile('/.config/behaviourSources.js');\n};\n","import { map } from 'lodash/fp';\nimport {\n USERS_LIST_FILE,\n stripUserOfSensitiveStuff,\n} from './authCommon';\nimport { $, apiWrapper, events } from '../common';\nimport { permission } from './permissions';\n\nexport const getUsers = app => async () => apiWrapper(\n app,\n events.authApi.getUsers,\n permission.listUsers.isAuthorized,\n {},\n _getUsers, app,\n);\n\nexport const _getUsers = async app => $(await app.datastore.loadJson(USERS_LIST_FILE), [\n map(stripUserOfSensitiveStuff),\n]);\n","import { ACCESS_LEVELS_FILE } from './authCommon';\nimport { apiWrapper, events } from '../common';\nimport { permission } from './permissions';\n\nexport const loadAccessLevels = app => async () => apiWrapper(\n app,\n events.authApi.loadAccessLevels,\n permission.listAccessLevels.isAuthorized,\n {},\n _loadAccessLevels, app,\n);\n\nexport const _loadAccessLevels = async app => await app.datastore.loadJson(ACCESS_LEVELS_FILE);\n","import {\n find, filter, some,\n map, flatten,\n} from 'lodash/fp';\nimport { generate } from 'shortid';\nimport { _getUsers } from './getUsers';\nimport {\n getUserByName, userAuthFile,\n parseTemporaryCode,\n} from './authCommon';\nimport { _loadAccessLevels } from './loadAccessLevels';\nimport {\n isNothingOrEmpty, $, apiWrapper, events,\n} from '../common';\nimport { alwaysAuthorized } from './permissions';\n\nconst dummyHash = '$argon2i$v=19$m=4096,t=3,p=1$UZRo409UYBGjHJS3CV6Uxw$rU84qUqPeORFzKYmYY0ceBLDaPO+JWSH4PfNiKXfIKk';\n\nexport const authenticate = app => async (username, password) => apiWrapper(\n app,\n events.authApi.authenticate,\n alwaysAuthorized,\n { username, password },\n _authenticate, app, username, password,\n);\n\nexport const _authenticate = async (app, username, password) => {\n if (isNothingOrEmpty(username) || isNothingOrEmpty(password)) { return null; }\n\n const allUsers = await _getUsers(app);\n let user = getUserByName(\n allUsers,\n username,\n );\n\n const notAUser = 'not-a-user';\n // continue with non-user - so time to verify remains consistent\n // with verification of a valid user\n if (!user || !user.enabled) { user = notAUser; }\n\n let userAuth;\n try {\n userAuth = await app.datastore.loadJson(\n userAuthFile(username),\n );\n } catch (_) {\n userAuth = { accessLevels: [], passwordHash: dummyHash };\n }\n\n const permissions = await buildUserPermissions(app, user.accessLevels);\n\n const verified = await app.crypto.verify(\n userAuth.passwordHash,\n password,\n );\n\n if (user === notAUser) { return null; }\n\n return verified\n ? {\n ...user, permissions, temp: false, isUser: true,\n }\n : null;\n};\n\nexport const authenticateTemporaryAccess = app => async (tempAccessCode) => {\n if (isNothingOrEmpty(tempAccessCode)) { return null; }\n\n const temp = parseTemporaryCode(tempAccessCode);\n let user = $(await _getUsers(app), [\n find(u => u.temporaryAccessId === temp.id),\n ]);\n\n const notAUser = 'not-a-user';\n if (!user || !user.enabled) { user = notAUser; }\n\n let userAuth;\n try {\n userAuth = await app.datastore.loadJson(\n userAuthFile(user.name),\n );\n } catch (e) {\n userAuth = {\n temporaryAccessHash: dummyHash,\n temporaryAccessExpiryEpoch: (await app.getEpochTime() + 10000),\n };\n }\n\n if (userAuth.temporaryAccessExpiryEpoch < await app.getEpochTime()) { user = notAUser; }\n\n const tempCode = !temp.code ? generate() : temp.code;\n const verified = await app.crypto.verify(\n userAuth.temporaryAccessHash,\n tempCode,\n );\n\n if (user === notAUser) { return null; }\n\n return verified\n ? {\n ...user,\n permissions: [],\n temp: true,\n isUser: true,\n }\n : null;\n};\n\nexport const buildUserPermissions = async (app, userAccessLevels) => {\n const allAccessLevels = await _loadAccessLevels(app);\n\n return $(allAccessLevels.levels, [\n filter(l => some(ua => l.name === ua)(userAccessLevels)),\n map(l => l.permissions),\n flatten,\n ]);\n};\n","import { generate } from 'shortid';\nimport {\n tempCodeExpiryLength, USERS_LOCK_FILE,\n USERS_LIST_FILE, userAuthFile,\n getUserByName,\n} from './authCommon';\nimport {\n getLock, isNolock,\n releaseLock,\n} from '../common/lock';\nimport { apiWrapper, events } from '../common';\nimport { alwaysAuthorized } from './permissions';\n\nexport const createTemporaryAccess = app => async userName => apiWrapper(\n app,\n events.authApi.createTemporaryAccess,\n alwaysAuthorized,\n { userName },\n _createTemporaryAccess, app, userName,\n);\n\nexport const _createTemporaryAccess = async (app, userName) => {\n const tempCode = await getTemporaryCode(app);\n\n const lock = await getLock(\n app, USERS_LOCK_FILE, 1000, 2,\n );\n\n if (isNolock(lock)) { throw new Error('Unable to create temporary access, could not get lock - try again'); }\n\n try {\n const users = await app.datastore.loadJson(USERS_LIST_FILE);\n\n const user = getUserByName(users, userName);\n user.temporaryAccessId = tempCode.temporaryAccessId;\n\n await app.datastore.updateJson(\n USERS_LIST_FILE,\n users,\n );\n } finally {\n await releaseLock(app, lock);\n }\n\n const userAuth = await app.datastore.loadJson(\n userAuthFile(userName),\n );\n userAuth.temporaryAccessHash = tempCode.temporaryAccessHash;\n\n userAuth.temporaryAccessExpiryEpoch = tempCode.temporaryAccessExpiryEpoch;\n\n await app.datastore.updateJson(\n userAuthFile(userName),\n userAuth,\n );\n\n return tempCode.tempCode;\n};\n\nexport const getTemporaryCode = async (app) => {\n const tempCode = generate()\n + generate()\n + generate()\n + generate();\n\n const tempId = generate();\n\n return {\n temporaryAccessHash: await app.crypto.hash(\n tempCode,\n ),\n temporaryAccessExpiryEpoch:\n (await app.getEpochTime()) + tempCodeExpiryLength,\n tempCode: `tmp:${tempId}:${tempCode}`,\n temporaryAccessId: tempId,\n };\n};\n\nexport const looksLikeTemporaryCode = code => code.startsWith('tmp:');\n","import {\n map, uniqWith,\n flatten, filter,\n} from 'lodash/fp';\nimport { applyRuleSet, makerule } from '../common/validationCommon';\nimport {\n $, insensitiveEquals, apiWrapper, events,\n isNonEmptyString, all,\n} from '../common';\nimport { alwaysAuthorized } from './permissions';\n\nconst userRules = allUsers => [\n makerule('name', 'username must be set',\n u => isNonEmptyString(u.name)),\n makerule('accessLevels', 'user must have at least one access level',\n u => u.accessLevels.length > 0),\n makerule('name', 'username must be unique',\n u => filter(u2 => insensitiveEquals(u2.name, u.name))(allUsers).length === 1),\n makerule('accessLevels', 'access levels must only contain stings',\n u => all(isNonEmptyString)(u.accessLevels)),\n];\n\nexport const validateUser = () => (allusers, user) => applyRuleSet(userRules(allusers))(user);\n\nexport const validateUsers = app => allUsers => apiWrapper(\n app,\n events.authApi.validateUsers,\n alwaysAuthorized,\n { allUsers },\n _validateUsers, app, allUsers,\n);\n\nexport const _validateUsers = (app, allUsers) => $(allUsers, [\n map(l => validateUser(app)(allUsers, l)),\n flatten,\n uniqWith((x, y) => x.field === y.field\n && x.item === y.item\n && x.error === y.error),\n]);\n","import { apiWrapperSync, events } from '../common';\nimport { permission } from './permissions';\n\nexport const getNewUser = app => () => apiWrapperSync(\n app,\n events.authApi.getNewUser,\n permission.createUser.isAuthorized,\n {},\n _getNewUser, app,\n);\n\nexport const _getNewUser = () => ({\n name: '',\n accessLevels: [],\n enabled: true,\n temporaryAccessId: '',\n});\n\nexport const getNewUserAuth = app => () => apiWrapperSync(\n app,\n events.authApi.getNewUserAuth,\n permission.createUser.isAuthorized,\n {},\n _getNewUserAuth, app,\n);\n\nexport const _getNewUserAuth = () => ({\n passwordHash: '',\n temporaryAccessHash: '',\n temporaryAccessExpiryEpoch: 0,\n});\n","import { find } from 'lodash/fp';\nimport { userAuthFile, parseTemporaryCode } from './authCommon';\nimport {\n isSomething, $, apiWrapper, apiWrapperSync, events,\n} from '../common';\nimport { _getUsers } from './getUsers';\nimport { alwaysAuthorized } from './permissions';\n\nexport const isValidPassword = app => password => apiWrapperSync(\n app,\n events.authApi.isValidPassword,\n alwaysAuthorized,\n { password },\n _isValidPassword, app, password,\n);\n\nexport const _isValidPassword = (app, password) => scorePassword(password).score > 30;\n\nexport const changeMyPassword = app => async (currentPw, newpassword) => apiWrapper(\n app,\n events.authApi.changeMyPassword,\n alwaysAuthorized,\n { currentPw, newpassword },\n _changeMyPassword, app, currentPw, newpassword,\n);\n\nexport const _changeMyPassword = async (app, currentPw, newpassword) => {\n const existingAuth = await app.datastore.loadJson(\n userAuthFile(app.user.name),\n );\n\n if (isSomething(existingAuth.passwordHash)) {\n const verified = await app.crypto.verify(\n existingAuth.passwordHash,\n currentPw,\n );\n\n if (verified) {\n await await doSet(\n app, existingAuth,\n app.user.name, newpassword,\n );\n return true;\n }\n }\n\n return false;\n};\n\nexport const setPasswordFromTemporaryCode = app => async (tempCode, newpassword) => apiWrapper(\n app,\n events.authApi.setPasswordFromTemporaryCode,\n alwaysAuthorized,\n { tempCode, newpassword },\n _setPasswordFromTemporaryCode, app, tempCode, newpassword,\n);\n\n\nexport const _setPasswordFromTemporaryCode = async (app, tempCode, newpassword) => {\n const currentTime = await app.getEpochTime();\n\n const temp = parseTemporaryCode(tempCode);\n\n const user = $(await _getUsers(app), [\n find(u => u.temporaryAccessId === temp.id),\n ]);\n\n if (!user) { return false; }\n\n const existingAuth = await app.datastore.loadJson(\n userAuthFile(user.name),\n );\n\n if (isSomething(existingAuth.temporaryAccessHash)\n && existingAuth.temporaryAccessExpiryEpoch > currentTime) {\n const verified = await app.crypto.verify(\n existingAuth.temporaryAccessHash,\n temp.code,\n );\n\n if (verified) {\n await doSet(\n app, existingAuth,\n user.name, newpassword,\n );\n return true;\n }\n }\n\n return false;\n};\n\nconst doSet = async (app, auth, username, newpassword) => {\n auth.temporaryAccessHash = '';\n auth.temporaryAccessExpiryEpoch = 0;\n auth.passwordHash = await app.crypto.hash(\n newpassword,\n );\n await app.datastore.updateJson(\n userAuthFile(username),\n auth,\n );\n};\n\nexport const scorePassword = app => password => apiWrapperSync(\n app,\n events.authApi.scorePassword,\n alwaysAuthorized,\n { password },\n _scorePassword, password,\n);\n\nexport const _scorePassword = (password) => {\n // from https://stackoverflow.com/questions/948172/password-strength-meter\n // thank you https://stackoverflow.com/users/46617/tm-lv\n\n let score = 0;\n if (!password) { return score; }\n\n // award every unique letter until 5 repetitions\n const letters = new Object();\n for (let i = 0; i < password.length; i++) {\n letters[password[i]] = (letters[password[i]] || 0) + 1;\n score += 5.0 / letters[password[i]];\n }\n\n // bonus points for mixing it up\n const variations = {\n digits: /\\d/.test(password),\n lower: /[a-z]/.test(password),\n upper: /[A-Z]/.test(password),\n nonWords: /\\W/.test(password),\n };\n\n let variationCount = 0;\n for (const check in variations) {\n variationCount += (variations[check] == true) ? 1 : 0;\n }\n score += (variationCount - 1) * 10;\n\n const strengthText = score > 80\n ? 'strong'\n : score > 60\n ? 'good'\n : score >= 30\n ? 'weak'\n : 'very weak';\n\n return {\n score: parseInt(score),\n strengthText,\n };\n};\n","import { join, some } from 'lodash/fp';\nimport { validateUser } from './validateUser';\nimport { getNewUserAuth } from './getNewUser';\nimport {\n getLock, isNolock, releaseLock, apiWrapper, events,\n insensitiveEquals, isNonEmptyString,\n} from '../common';\nimport {\n USERS_LOCK_FILE, stripUserOfSensitiveStuff,\n USERS_LIST_FILE, userAuthFile,\n} from './authCommon';\nimport { getTemporaryCode } from './createTemporaryAccess';\nimport { isValidPassword } from './setPassword';\nimport { permission } from './permissions';\nimport { BadRequestError } from '../common/errors';\n\nexport const createUser = app => async (user, password = null) => apiWrapper(\n app,\n events.authApi.createUser,\n permission.createUser.isAuthorized,\n { user, password },\n _createUser, app, user, password,\n);\n\nexport const _createUser = async (app, user, password = null) => {\n const lock = await getLock(\n app, USERS_LOCK_FILE, 1000, 2,\n );\n\n if (isNolock(lock)) { throw new Error('Unable to create user, could not get lock - try again'); }\n\n const users = await app.datastore.loadJson(USERS_LIST_FILE);\n\n const userErrors = validateUser(app)([...users, user], user);\n if (userErrors.length > 0) { throw new BadRequestError(`User is invalid. ${join('; ')(userErrors)}`); }\n\n const { auth, tempCode, temporaryAccessId } = await getAccess(\n app, password,\n );\n user.tempCode = tempCode;\n user.temporaryAccessId = temporaryAccessId;\n\n if (some(u => insensitiveEquals(u.name, user.name))(users)) { \n throw new BadRequestError('User already exists'); \n }\n\n users.push(\n stripUserOfSensitiveStuff(user),\n );\n\n await app.datastore.updateJson(\n USERS_LIST_FILE,\n users,\n );\n\n try {\n await app.datastore.createJson(\n userAuthFile(user.name),\n auth,\n );\n } catch (_) {\n await app.datastore.updateJson(\n userAuthFile(user.name),\n auth,\n );\n }\n\n await releaseLock(app, lock);\n\n return user;\n};\n\nconst getAccess = async (app, password) => {\n const auth = getNewUserAuth(app)();\n\n if (isNonEmptyString(password)) {\n if (isValidPassword(password)) {\n auth.passwordHash = await app.crypto.hash(password);\n auth.temporaryAccessHash = '';\n auth.temporaryAccessId = '';\n auth.temporaryAccessExpiryEpoch = 0;\n return { auth };\n }\n throw new BadRequestError('Password does not meet requirements');\n } else {\n const tempAccess = await getTemporaryCode(app);\n auth.temporaryAccessHash = tempAccess.temporaryAccessHash;\n auth.temporaryAccessExpiryEpoch = tempAccess.temporaryAccessExpiryEpoch;\n auth.passwordHash = '';\n return ({\n auth,\n tempCode: tempAccess.tempCode,\n temporaryAccessId: tempAccess.temporaryAccessId,\n });\n }\n};\n","import {\n getLock,\n isNolock, releaseLock,\n} from '../common/lock';\nimport { USERS_LOCK_FILE, USERS_LIST_FILE, getUserByName } from './authCommon';\nimport { apiWrapper, events } from '../common';\nimport { permission } from './permissions';\nimport { NotFoundError } from '../common/errors';\n\nexport const enableUser = app => async username => apiWrapper(\n app,\n events.authApi.enableUser,\n permission.enableDisableUser.isAuthorized,\n { username },\n _enableUser, app, username,\n);\n\nexport const disableUser = app => async username => apiWrapper(\n app,\n events.authApi.disableUser,\n permission.enableDisableUser.isAuthorized,\n { username },\n _disableUser, app, username,\n);\n\nexport const _enableUser = async (app, username) => await toggleUser(app, username, true);\n\nexport const _disableUser = async (app, username) => await toggleUser(app, username, false);\n\nconst toggleUser = async (app, username, enabled) => {\n const lock = await getLock(app, USERS_LOCK_FILE, 1000, 1, 0);\n\n const actionName = enabled ? 'enable' : 'disable';\n\n if (isNolock(lock)) { throw new Error(`Could not ${actionName} user - cannot get lock`); }\n\n try {\n const users = await app.datastore.loadJson(USERS_LIST_FILE);\n const user = getUserByName(users, username);\n if (!user) { throw new NotFoundError(`Could not find user to ${actionName}`); }\n\n if (user.enabled === !enabled) {\n user.enabled = enabled;\n await app.datastore.updateJson(USERS_LIST_FILE, users);\n }\n } finally {\n releaseLock(app, lock);\n }\n};\n","import {\n values, includes, map, concat, isEmpty, uniqWith, some,\n flatten, filter,\n} from 'lodash/fp';\nimport { applyRuleSet, makerule } from '../common/validationCommon';\nimport { permissionTypes } from './authCommon';\nimport {\n $, isSomething, insensitiveEquals,\n isNonEmptyString, apiWrapperSync, events,\n} from '../common';\nimport { getNode } from '../templateApi/hierarchy';\nimport { alwaysAuthorized } from './permissions';\n\nconst isAllowedType = t => $(permissionTypes, [\n values,\n includes(t),\n]);\n\nconst isRecordOrIndexType = t => some(p => p === t)([\n permissionTypes.CREATE_RECORD,\n permissionTypes.UPDATE_RECORD,\n permissionTypes.DELETE_RECORD,\n permissionTypes.READ_RECORD,\n permissionTypes.READ_INDEX,\n permissionTypes.EXECUTE_ACTION,\n]);\n\n\nconst permissionRules = app => ([\n makerule('type', 'type must be one of allowed types',\n p => isAllowedType(p.type)),\n makerule('nodeKey', 'record and index permissions must include a valid nodeKey',\n p => (!isRecordOrIndexType(p.type))\n || isSomething(getNode(app.hierarchy, p.nodeKey))),\n]);\n\nconst applyPermissionRules = app => applyRuleSet(permissionRules(app));\n\nconst accessLevelRules = allLevels => ([\n makerule('name', 'name must be set',\n l => isNonEmptyString(l.name)),\n makerule('name', 'access level names must be unique',\n l => isEmpty(l.name)\n || filter(a => insensitiveEquals(l.name, a.name))(allLevels).length === 1),\n]);\n\nconst applyLevelRules = allLevels => applyRuleSet(accessLevelRules(allLevels));\n\nexport const validateAccessLevel = app => (allLevels, level) => {\n const errs = $(level.permissions, [\n map(applyPermissionRules(app)),\n flatten,\n concat(\n applyLevelRules(allLevels)(level),\n ),\n ]);\n\n return errs;\n};\n\nexport const validateAccessLevels = app => allLevels => apiWrapperSync(\n app,\n events.authApi.validateAccessLevels,\n alwaysAuthorized,\n { allLevels },\n _validateAccessLevels, app, allLevels,\n);\n\nexport const _validateAccessLevels = (app, allLevels) => $(allLevels, [\n map(l => validateAccessLevel(app)(allLevels, l)),\n flatten,\n uniqWith((x, y) => x.field === y.field\n && x.item === y.item\n && x.error === y.error),\n]);\n","import { join, map } from 'lodash/fp';\nimport {\n getLock, releaseLock, $,\n isNolock, apiWrapper, events,\n} from '../common';\nimport {\n ACCESS_LEVELS_LOCK_FILE,\n ACCESS_LEVELS_FILE,\n} from './authCommon';\nimport { validateAccessLevels } from './validateAccessLevels';\nimport { permission } from './permissions';\n\nexport const saveAccessLevels = app => async accessLevels => apiWrapper(\n app,\n events.authApi.saveAccessLevels,\n permission.writeAccessLevels.isAuthorized,\n { accessLevels },\n _saveAccessLevels, app, accessLevels,\n);\n\nexport const _saveAccessLevels = async (app, accessLevels) => {\n const validationErrors = validateAccessLevels(app)(accessLevels.levels);\n if (validationErrors.length > 0) {\n const errs = $(validationErrors, [\n map(e => e.error),\n join(', '),\n ]);\n throw new Error(\n `Access Levels Invalid: ${errs}`,\n );\n }\n\n const lock = await getLock(\n app, ACCESS_LEVELS_LOCK_FILE, 2000, 2,\n );\n\n if (isNolock(lock)) { throw new Error('Could not get lock to save access levels'); }\n\n try {\n const existing = await app.datastore.loadJson(ACCESS_LEVELS_FILE);\n if (existing.version !== accessLevels.version) { throw new Error('Access levels have already been updated, since you loaded'); }\n\n accessLevels.version++;\n\n app.datastore.updateJson(ACCESS_LEVELS_FILE, accessLevels);\n } finally {\n await releaseLock(app, lock);\n }\n};\n","import { difference, map, join } from 'lodash/fp';\nimport {\n getLock, isNolock, releaseLock, $,\n apiWrapper, events,\n} from '../common';\nimport {\n USERS_LOCK_FILE, ACCESS_LEVELS_FILE,\n getUserByName, USERS_LIST_FILE,\n} from './authCommon';\nimport { permission } from './permissions';\nimport { NotFoundError } from '../common/errors';\n\nexport const setUserAccessLevels = app => async (userName, accessLevels) => apiWrapper(\n app,\n events.authApi.setUserAccessLevels,\n permission.setUserAccessLevels.isAuthorized,\n { userName, accessLevels },\n _setUserAccessLevels, app, userName, accessLevels,\n);\n\nexport const _setUserAccessLevels = async (app, username, accessLevels) => {\n const lock = await getLock(app, USERS_LOCK_FILE, 1000, 1, 0);\n\n const actualAccessLevels = $(\n await app.datastore.loadJson(ACCESS_LEVELS_FILE),\n [\n l => l.levels,\n map(l => l.name),\n ],\n );\n\n const missing = difference(accessLevels)(actualAccessLevels);\n if (missing.length > 0) {\n throw new Error(`Invalid access levels supplied: ${join(', ', missing)}`);\n }\n\n if (isNolock(lock)) { throw new Error('Could set user access levels cannot get lock'); }\n\n try {\n const users = await app.datastore.loadJson(USERS_LIST_FILE);\n const user = getUserByName(users, username);\n if (!user) { throw new NotFoundError(`Could not find user with ${username}`); }\n\n user.accessLevels = accessLevels;\n await app.datastore.updateJson(USERS_LIST_FILE, users);\n } finally {\n releaseLock(app, lock);\n }\n};\n","import {\n authenticate,\n authenticateTemporaryAccess,\n} from './authenticate';\nimport { createTemporaryAccess } from './createTemporaryAccess';\nimport { createUser } from './createUser';\nimport { enableUser, disableUser } from './enableUser';\nimport { loadAccessLevels } from './loadAccessLevels';\nimport { getNewAccessLevel } from './getNewAccessLevel';\nimport { getNewUser, getNewUserAuth } from './getNewUser';\nimport { getUsers } from './getUsers';\nimport { isAuthorized } from './isAuthorized';\nimport { saveAccessLevels } from './saveAccessLevels';\nimport {\n changeMyPassword,\n scorePassword, setPasswordFromTemporaryCode,\n isValidPassword,\n} from './setPassword';\nimport { validateUser } from './validateUser';\nimport { validateAccessLevels } from './validateAccessLevels';\nimport { generateFullPermissions } from './generateFullPermissions';\nimport { setUserAccessLevels } from './setUserAccessLevels';\n\nexport const getAuthApi = app => ({\n authenticate: authenticate(app),\n authenticateTemporaryAccess: authenticateTemporaryAccess(app),\n createTemporaryAccess: createTemporaryAccess(app),\n createUser: createUser(app),\n loadAccessLevels: loadAccessLevels(app),\n enableUser: enableUser(app),\n disableUser: disableUser(app),\n getNewAccessLevel: getNewAccessLevel(app),\n getNewUser: getNewUser(app),\n getNewUserAuth: getNewUserAuth(app),\n getUsers: getUsers(app),\n saveAccessLevels: saveAccessLevels(app),\n isAuthorized: isAuthorized(app),\n changeMyPassword: changeMyPassword(app),\n setPasswordFromTemporaryCode: setPasswordFromTemporaryCode(app),\n scorePassword,\n isValidPassword: isValidPassword(app),\n validateUser: validateUser(app),\n validateAccessLevels: validateAccessLevels(app),\n generateFullPermissions: () => generateFullPermissions(app),\n setUserAccessLevels: setUserAccessLevels(app),\n});\n\nexport default getAuthApi;\n","export const getNewAccessLevel = () => () => ({\n name: '',\n permissions: [],\n default:false\n});\n","import {\n filter, values, each, keys,\n} from 'lodash/fp';\nimport { permission } from './permissions';\nimport {\n getFlattenedHierarchy,\n isIndex, isRecord,\n} from '../templateApi/hierarchy';\nimport { $ } from '../common';\n\nexport const generateFullPermissions = (app) => {\n const allNodes = getFlattenedHierarchy(app.hierarchy);\n const accessLevel = { permissions: [] };\n\n const recordNodes = $(allNodes, [\n filter(isRecord),\n ]);\n\n for (const n of recordNodes) {\n permission.createRecord.add(n.nodeKey(), accessLevel);\n permission.updateRecord.add(n.nodeKey(), accessLevel);\n permission.deleteRecord.add(n.nodeKey(), accessLevel);\n permission.readRecord.add(n.nodeKey(), accessLevel);\n }\n\n const indexNodes = $(allNodes, [\n filter(isIndex),\n ]);\n\n for (const n of indexNodes) {\n permission.readIndex.add(n.nodeKey(), accessLevel);\n }\n\n for (const a of keys(app.actions)) {\n permission.executeAction.add(a, accessLevel);\n }\n\n $(permission, [\n values,\n filter(p => !p.isNode),\n each(p => p.add(accessLevel)),\n ]);\n\n return accessLevel.permissions;\n};\n","import {hierarchy as hierarchyFunctions, \n common, getTemplateApi, getAuthApi } from \"../../../core/src\"; \nimport {find, filter, includes, keyBy, some,\n flatten, map} from \"lodash/fp\";\n\nimport {\n generateSchema\n} from \"../../../core/src/indexing/indexSchemaCreator\";\n\nexport const pipe = common.$;\n\nexport const events = common.eventsList;\n\nexport const getNode = (hierarchy, nodeId) => \n pipe(hierarchy, [\n hierarchyFunctions.getFlattenedHierarchy,\n find(n => n.nodeId === nodeId || n.nodeKey() === nodeId)\n ]);\n\nexport const constructHierarchy = node => {\n if(!node) return node;\n return templateApi(node).constructHierarchy(node);\n}\n\nexport const createNewHierarchy = () => {\n return templateApi().getNewRootLevel();\n}\n\nexport const templateApi = hierarchy => getTemplateApi({hierarchy})\nexport const authApi = (hierarchy, actions) => getAuthApi({\n hierarchy, actions: keyBy(\"name\")(actions), publish:()=>{}})\n\nexport const allTypes = templateApi({}).allTypes;\n\nexport const validate = {\n all: templateApi({}).validateAll,\n node: templateApi({}).validateNode,\n field: templateApi({}).validateField\n};\n\nexport const getPotentialReverseReferenceIndexes = (hierarchy, refIndex) => {\n const res = pipe(hierarchy, [\n hierarchyFunctions.getFlattenedHierarchy,\n filter(n => hierarchyFunctions.isAncestor(refIndex)(n)\n || hierarchyFunctions.isAncestor(refIndex)(n.parent())),\n map(n => n.indexes),\n flatten,\n filter(hierarchyFunctions.isReferenceIndex)\n ]);\n\n return res;\n}\n\nexport const getPotentialReferenceIndexes = (hierarchy, record) =>\n pipe(hierarchy, [\n hierarchyFunctions.getFlattenedHierarchy,\n filter(hierarchyFunctions.isAncestorIndex),\n filter(i => hierarchyFunctions.isAncestor(record)(i.parent())\n || i.parent().nodeId === record.parent().nodeId\n || hierarchyFunctions.isRoot(i.parent()))\n ]);\n\nexport const getDefaultTypeOptions = type => \n !type ? {} : allTypes[type].getDefaultOptions();\n\nexport const getNewAction = () => templateApi({}).createAction();\nexport const getNewTrigger = () => templateApi({}).createTrigger();\n\nexport const validateActions = actions => templateApi({}).validateActions(actions);\nexport const validateTriggers = (triggers, actions) => templateApi({}).validateTriggers(triggers, actions);\n\nexport const generateFullPermissions = (hierarchy, actions) => \n authApi(hierarchy,actions).generateFullPermissions();\n\nexport const getNewAccessLevel = () => \n authApi().getNewAccessLevel();\n\nexport const validateAccessLevels = (hierarchy, actions, accessLevels) => \n authApi(hierarchy, actions).validateAccessLevels(accessLevels);\n\nexport const getIndexNodes = (hierarchy) => \n pipe(hierarchy, [\n hierarchyFunctions.getFlattenedHierarchy,\n filter(hierarchyFunctions.isIndex)\n ]);\n\nexport const getRecordNodes = (hierarchy) => \n pipe(hierarchy, [\n hierarchyFunctions.getFlattenedHierarchy,\n filter(hierarchyFunctions.isRecord)\n ]);\n\nexport const getIndexSchema = hierarchy => index => \n generateSchema(hierarchy, index);","import { safe_not_equal, noop, run_all, is_function } from '../internal';\nexport { get_store_value as get } from '../internal';\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 = [];\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 (let i = 0; i < subscribers.length; i += 1) {\n const s = subscribers[i];\n s[1]();\n subscriber_queue.push(s, 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.push(subscriber);\n if (subscribers.length === 1) {\n stop = start(set) || noop;\n }\n run(value);\n return () => {\n const index = subscribers.indexOf(subscriber);\n if (index !== -1) {\n subscribers.splice(index, 1);\n }\n if (subscribers.length === 0) {\n stop();\n stop = null;\n }\n };\n }\n return { set, update, subscribe };\n}\n/**\n * Derived value store by synchronizing one or more readable stores and\n * applying an aggregation function over its input values.\n * @param {Stores} stores input stores\n * @param {function(Stores=, function(*)=):*}fn function callback that aggregates the values\n * @param {*=}initial_value when used asynchronously\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) => store.subscribe((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","export const defaultPagesObject = () => ({\n main: {\n index: {\n _component : \"./components/indexHtml\"\n },\n appBody: \"bbapp.main.json\"\n },\n unauthenticated: {\n index: {\n _component : \"./components/indexHtml\"\n },\n appBody: \"bbapp.unauthenticated.json\"\n },\n componentLibraries: [],\n stylesheets: []\n\n});","import {\r\n isObject\r\n} from \"lodash/fp\";\r\nimport { BB_STATE_BINDINGPATH } from \"./isState\";\r\n\r\nexport const setState = (store, path, value) => {\r\n\r\n if(!path || path.length === 0) return;\r\n\r\n const pathParts = path.split(\".\");\r\n const safeSetPath = (obj, currentPartIndex=0) => {\r\n\r\n const currentKey = pathParts[currentPartIndex];\r\n\r\n if(pathParts.length - 1 == currentPartIndex) {\r\n obj[currentKey] = value;\r\n return;\r\n }\r\n\r\n if(obj[currentKey] === null \r\n || obj[currentKey] === undefined\r\n || !isObject(obj.currentKey)) {\r\n\r\n obj[currentKey] = {};\r\n }\r\n\r\n safeSetPath(obj[currentKey], currentPartIndex + 1);\r\n\r\n }\r\n\r\n store.update(s => {\r\n safeSetPath(s);\r\n return s;\r\n });\r\n};\r\n\r\nexport const setStateFromBinding = (store, binding, value) => \r\n setState(store, binding[BB_STATE_BINDINGPATH], value);","export const trimSlash = (str) => str.replace(/^\\/+|\\/+$/g, '');","import {trimSlash} from \"../common/trimSlash\";\r\n\r\n export const loadRecord = (api) => async ({recordKey, statePath}) => {\r\n\r\n if(!recordKey) {\r\n api.error(\"Load Record: record key not set\");\r\n return;\r\n } \r\n \r\n if(!statePath) {\r\n api.error(\"Load Record: state path not set\");\r\n return;\r\n } \r\n\r\n const record = await api.get({\r\n url:`/api/record/${trimSlash(key)}`\r\n });\r\n\r\n if(api.isSuccess(record))\r\n api.setState(statePath, record);\r\n}","import {trimSlash} from \"../common/trimSlash\";\r\n\r\nexport const listRecords = api => async ({indexKey, statePath}) => {\r\n if(!indexKey) {\r\n api.error(\"Load Record: record key not set\");\r\n return;\r\n } \r\n \r\n if(!statePath) {\r\n api.error(\"Load Record: state path not set\");\r\n return;\r\n } \r\n\r\n const records = api.get({\r\n url:`/api/listRecords/${trimSlash(indexKey)}`\r\n });\r\n\r\n if(api.isSuccess(records))\r\n api.setState(statePath, records);\r\n}","\r\nexport const USER_STATE_PATH = \"_bbuser\";\r\n\r\nexport const authenticate = (api) => async ({username, password}) => {\r\n\r\n if(!username) {\r\n api.error(\"Authenticate: username not set\");\r\n return;\r\n } \r\n \r\n if(!password) {\r\n api.error(\"Authenticate: password not set\");\r\n return;\r\n } \r\n\r\n const user = await api.post({\r\n url:\"/api/authenticate\",\r\n body : {username, password}\r\n });\r\n\r\n // set user even if error - so it is defined at least\r\n api.setState(USER_STATE_PATH, user);\r\n localStorage.setItem(\"budibase:user\", user);\r\n}","import { ERROR } from \"./standardState\";\r\n\r\nexport const getNewChildRecordToState = (store, coreApi, setState) =>\r\n ({recordKey, collectionName,childRecordType,statePath}) => {\r\n const error = errorHandler(setState);\r\n try {\r\n if(!recordKey) {\r\n error(\"getNewChild > recordKey not set\");\r\n return;\r\n }\r\n\r\n if(!collectionName) {\r\n error(\"getNewChild > collectionName not set\");\r\n return;\r\n }\r\n\r\n if(!childRecordType) {\r\n error(\"getNewChild > childRecordType not set\");\r\n return;\r\n }\r\n\r\n if(!statePath) {\r\n error(\"getNewChild > statePath not set\");\r\n return;\r\n }\r\n\r\n const rec = coreApi.recordApi.getNewChild(recordKey, collectionName, childRecordType);\r\n setState(store, statePath, rec);\r\n }\r\n catch(e) {\r\n error(e.message);\r\n }\r\n}\r\n\r\n\r\nexport const getNewRecordToState = (store, coreApi, setState) =>\r\n ({collectionKey,childRecordType,statePath}) => {\r\n const error = errorHandler(setState);\r\n try {\r\n if(!collectionKey) {\r\n error(\"getNewChild > collectionKey not set\");\r\n return;\r\n }\r\n\r\n if(!childRecordType) {\r\n error(\"getNewChild > childRecordType not set\");\r\n return;\r\n }\r\n\r\n if(!statePath) {\r\n error(\"getNewChild > statePath not set\");\r\n return;\r\n }\r\n\r\n const rec = coreApi.recordApi.getNew(collectionKey, childRecordType);\r\n setState(store, statePath, rec);\r\n }\r\n catch(e) {\r\n error(e.message);\r\n }\r\n}\r\n\r\nconst errorHandler = setState => message => setState(ERROR, message);","\r\nexport const ERROR = \"##error_message\";","import { setState } from \"./setState\";\r\nimport { getState } from \"./getState\";\r\nimport {\r\n isArray, isUndefined\r\n} from \"lodash/fp\";\r\n\r\nimport { createApi } from \"../api\";\r\nimport {\r\n getNewChildRecordToState, getNewRecordToState\r\n} from \"./coreHandlers\";\r\n\r\nexport const EVENT_TYPE_MEMBER_NAME = \"##eventHandlerType\";\r\n\r\nexport const eventHandlers = (store,coreApi,rootPath) => {\r\n \r\n const handler = (parameters, execute) => ({\r\n execute, parameters\r\n });\r\n\r\n const setStateWithStore = (path, value) => setState(store, path, value);\r\n\r\n const api = createApi({\r\n rootPath:rootPath,\r\n setState: (path, value) => setStateWithStore,\r\n getState: (path, fallback) => getState(store, path, fallback)\r\n });\r\n\r\n const setStateHandler = ({path, value}) => setState(store, path, value);\r\n \r\n return {\r\n \"Set State\": handler([\"path\", \"value\"], setStateHandler),\r\n \"Load Record\": handler([\"recordKey\", \"statePath\"], api.loadRecord),\r\n \"List Records\": handler([\"indexKey\", \"statePath\"], api.listRecords),\r\n \"Save Record\": handler([\"statePath\"], api.saveRecord),\r\n \r\n \"Get New Child Record\": handler(\r\n [\"recordKey\", \"collectionName\", \"childRecordType\", \"statePath\"], \r\n getNewChildRecordToState(store, coreApi, setStateWithStore)),\r\n\r\n \"Get New Record\": handler(\r\n [\"collectionKey\", \"childRecordType\", \"statePath\"], \r\n getNewRecordToState(store, coreApi, setStateWithStore)),\r\n\r\n \"Authenticate\": handler([\"username\", \"password\"], api.authenticate)\r\n };\r\n};\r\n\r\nexport const isEventType = prop => \r\n isArray(prop) \r\n && prop.length > 0\r\n && !isUndefined(prop[0][EVENT_TYPE_MEMBER_NAME]);\r\n","import { ERROR } from \"../state/standardState\";\r\nimport {loadRecord} from \"./loadRecord\";\r\nimport {listRecords} from \"./listRecords\";\r\nimport {authenticate} from \"./authenticate\";\r\n\r\nexport const createApi = ({rootPath, setState, getState}) => {\r\n\r\n const apiCall = (method) => ({url, body, notFound, badRequest, forbidden}) => {\r\n fetch(`${rootPath}${url}`, {\r\n method: method,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: body && JSON.stringify(body), \r\n credentials: \"same-origin\"\r\n }).then(r => {\r\n switch (r.status) {\r\n case 200:\r\n return r.json();\r\n case 404:\r\n return error(notFound || `${url} Not found`);\r\n case 400:\r\n return error(badRequest || `${url} Bad Request`);\r\n case 403:\r\n return error(forbidden || `${url} Forbidden`);\r\n default:\r\n if(r.status.toString().startsWith(\"2\")\r\n || r.status.toString().startsWith(\"3\"))\r\n return r.json()\r\n else\r\n return error(`${url} - ${r.statusText}`);\r\n }\r\n });\r\n }\r\n\r\n const post = apiCall(\"POST\");\r\n const get = apiCall(\"GET\");\r\n const patch = apiCall(\"PATCH\");\r\n const del = apiCall(\"DELETE\");\r\n\r\n const ERROR_MEMBER = \"##error\";\r\n const error = message => {\r\n const e = {};\r\n e[ERROR_MEMBER] = message;\r\n setState(ERROR, message);\r\n return e;\r\n }\r\n\r\n const isSuccess = obj => !!obj[ERROR_MEMBER];\r\n\r\n const apiOpts = {\r\n rootPath, setState, getState, isSuccess, error,\r\n post, get, patch, delete:del\r\n };\r\n\r\n return {\r\n loadRecord:loadRecord(apiOpts), \r\n listRecords: listRecords(apiOpts),\r\n authenticate: authenticate(apiOpts)\r\n }\r\n}\r\n\r\n\r\n","import {\r\n isUndefined,\r\n isObject\r\n} from \"lodash/fp\";\r\nimport { \r\n isBound,BB_STATE_BINDINGPATH, BB_STATE_FALLBACK, takeStateFromStore\r\n} from \"./isState\";\r\n\r\nexport const getState = (s, path, fallback) => {\r\n\r\n if(!path || path.length === 0) return fallback;\r\n\r\n const pathParts = path.split(\".\");\r\n const safeGetPath = (obj, currentPartIndex=0) => {\r\n\r\n const currentKey = pathParts[currentPartIndex];\r\n\r\n if(pathParts.length - 1 == currentPartIndex) {\r\n const value = obj[currentKey];\r\n if(isUndefined(value))\r\n return fallback;\r\n else \r\n return value;\r\n }\r\n\r\n if(obj[currentKey] === null \r\n || obj[currentKey] === undefined\r\n || !isObject(obj[currentKey])) {\r\n\r\n return fallback;\r\n }\r\n\r\n return safeGetPath(obj[currentKey], currentPartIndex + 1);\r\n\r\n }\r\n\r\n\r\n return safeGetPath(s);\r\n}\r\n\r\nexport const getStateOrValue = (globalState, prop, currentContext) => {\r\n if(!isBound(prop)) return prop;\r\n\r\n const stateToUse = takeStateFromStore(prop) \r\n ? globalState\r\n : currentContext;\r\n\r\n return getState(stateToUse, prop[BB_STATE_BINDINGPATH], prop[BB_STATE_FALLBACK]);\r\n}","import {\r\n eventHandlers\r\n} from \"../../../client/src/state/eventHandlers\";\r\n\r\nexport {\r\n EVENT_TYPE_MEMBER_NAME\r\n } from \"../../../client/src/state/eventHandlers\";\r\n\r\nexport const allHandlers = () => {\r\n const handlersObj = eventHandlers({}, {});\r\n const handlersArray = [];\r\n for(let key in handlersObj) {\r\n handlersArray.push({name:key, ...handlersObj[key]});\r\n }\r\n return handlersArray;\r\n}","import {\n isString, \n isBoolean, \n isNumber,\n isArray,\n isObjectLike,\n isPlainObject,\n every\n} from \"lodash/fp\";\n\nimport {\n EVENT_TYPE_MEMBER_NAME\n} from \"../../common/eventHandlers\";\n\nimport {\n isBound, BB_STATE_BINDINGPATH\n} from \"@budibase/client/src/state/isState\";\n\nconst defaultDef = typeName => () => ({\n type: typeName,\n required:false,\n default:types[typeName].default(),\n options: typeName === \"options\" ? [] : undefined,\n elementDefinition: typeName === \"array\" ? {} : undefined\n});\n\nconst propType = (defaultValue, isOfType, defaultDefinition) => ({\n isOfType, default:defaultValue, defaultDefinition\n});\n\nconst expandSingleProp = propDef => {\n const p = isString(propDef)\n ? types[propDef].defaultDefinition()\n : propDef;\n \n if(!isString(propDef)) {\n const def = types[propDef.type].defaultDefinition();\n for(let p in def) {\n if(propDef[p] === undefined) {\n propDef[p] = def[p];\n }\n }\n }\n\n if(p.type === \"array\") {\n p.elementDefinition = expandPropsDefinition(p.elementDefinition);\n }\n return p;\n}\n\nexport const expandPropsDefinition = propsDefinition => {\n const expandedProps = {};\n for(let p in propsDefinition) {\n expandedProps[p] = expandSingleProp(propsDefinition[p]);\n }\n return expandedProps;\n}\n\nconst isComponent = isObjectLike;\nconst isEvent = e => \n isPlainObject(e) \n && isString(e[EVENT_TYPE_MEMBER_NAME])\n && isPlainObject(e.parameters);\n\nconst isEventList = e => \n isArray(e) && every(isEvent)(e);\n\nconst emptyState = () => {\n const s = {};\n s[BB_STATE_BINDINGPATH] = \"\";\n return s;\n}\n\nexport const types = {\n string: propType(() => \"\", isString, defaultDef(\"string\")),\n bool: propType(() => false, isBoolean, defaultDef(\"bool\")),\n number: propType(() => 0, isNumber, defaultDef(\"number\")),\n array: propType(() => [], isArray, defaultDef(\"array\")),\n options: propType(() => \"\", isString, defaultDef(\"options\")),\n component: propType(() => ({_component:\"\"}), isComponent, defaultDef(\"component\")),\n asset: propType(() => \"\", isString, defaultDef(\"asset\")),\n event: propType(() => [], isEventList, defaultDef(\"event\")),\n state: propType(() => emptyState(), isBound, defaultDef(\"state\"))\n};","export const BB_STATE_BINDINGPATH = \"##bbstate\";\r\nexport const BB_STATE_BINDINGSOURCE = \"##bbsource\";\r\nexport const BB_STATE_FALLBACK = \"##bbstatefallback\";\r\n\r\nexport const isBound = (prop) =>\r\n prop !== undefined \r\n && prop[BB_STATE_BINDINGPATH] !== undefined;\r\n \r\nexport const takeStateFromStore = (prop) => \r\n prop[BB_STATE_BINDINGSOURCE] === undefined \r\n || prop[BB_STATE_BINDINGSOURCE] === \"store\";\r\n\r\nexport const takeStateFromContext = (prop) => \r\n prop[BB_STATE_BINDINGSOURCE] === \"context\";\r\n\r\nexport const takeStateFromEventParameters = (prop) => \r\n prop[BB_STATE_BINDINGSOURCE] === \"event\";","import {pipe} from \"../../common/core\";\n\nimport {\n find,\n isUndefined,\n filter,\n some,\n includes,\n has\n} from \"lodash/fp\";\n\nconst normalString = s => (s||\"\").trim().toLowerCase();\n\nexport const isRootComponent = c => isComponent(c) && isUndefined(c.inherits);\n\nexport const isComponent = c => {\n const hasProp = (n) => !isUndefined(c[n]);\n return hasProp(\"name\") && hasProp(\"props\");\n}\n\nexport const searchAllComponents = (allComponents, phrase) => {\n\n const hasPhrase = (...vals) => \n pipe(vals, [\n some(v => includes(normalString(phrase))(normalString(v)))\n ]);\n\n const componentMatches = c => {\n if(hasPhrase(c.name, ...(c.tags || []))) return true;\n\n if(isRootComponent(c)) return false;\n \n const parent = getExactComponent(\n allComponents,\n c.inherits);\n\n return componentMatches(parent);\n }\n\n return filter(componentMatches)(allComponents);\n} \n\nexport const getExactComponent = (allComponents, name) => {\n \n const stringEquals = (s1, s2) => \n normalString(s1) === normalString(s2);\n \n return pipe(allComponents,[\n find(c => stringEquals(c.name, name))\n ]);\n}\n\nexport const getAncestorProps = (allComponents, name, found=[]) => {\n const thisComponent = getExactComponent(\n allComponents, name);\n\n if(isRootComponent(thisComponent)) \n return [thisComponent.props, ...found];\n\n return getAncestorProps(\n allComponents, \n thisComponent.inherits,\n [{...thisComponent.props}, \n ...found]);\n\n}\n","import {\n isString, \n isUndefined,\n find,\n keys,\n uniq,\n some,\n filter,\n reduce,\n cloneDeep,\n includes,\n last\n} from \"lodash/fp\";\nimport { types, expandPropsDefinition } from \"./types\";\nimport { assign } from \"lodash\";\nimport { pipe } from \"../../common/core\";\nimport { isRootComponent } from \"./searchComponents\";\n\nexport const createPropDefinitionForDerived = (allComponents, componentName) => {\n \n\n const {propDef, derivedProps} = getComponentInfo(allComponents, componentName);\n\n const hasDerivedProp = k => pipe(derivedProps, [\n keys,\n uniq,\n some(key => key === k)\n ]);\n\n return pipe(propDef, [\n keys,\n filter(k => !hasDerivedProp(k)),\n reduce((obj, k) => {\n obj[k] = propDef[k];\n return obj;\n }, {}),\n expandPropsDefinition\n ])\n}\n\nexport const traverseForProps = getComponentInfo;\n\nexport const getInstanceProps = (componentInfo, props) => {\n const finalProps = cloneDeep(componentInfo.fullProps);\n\n for(let p in props) {\n finalProps[p] = props[p];\n }\n\n return finalProps;\n}\n\nexport const getNewComponentInfo = (allComponents, inherits) => {\n const parentcomponent = find(c => c.name === inherits)(allComponents);\n const component = {\n name:\"\", \n description:\"\", \n inherits, \n props:{}, \n tags:parentcomponent.tags\n };\n return getComponentInfo(\n allComponents,\n inherits,\n [component],\n {});\n}\n\n\nexport const getComponentInfo = (allComponents, comp, stack=[], subComponentProps=null) => {\n const component = isString(comp) \n ? find(c => c.name === comp)(allComponents)\n : comp;\n const cname = isString(comp) ? comp : comp.name;\n if(isRootComponent(component)) {\n subComponentProps = subComponentProps||{};\n const p = createProps(cname, component.props, subComponentProps);\n const rootProps = createProps(cname, component.props);\n const inheritedProps = [];\n const targetComponent = stack.length > 0\n ? last(stack)\n : component;\n if(stack.length > 0) {\n \n for(let prop in subComponentProps) {\n const hasProp = pipe(targetComponent.props, [\n keys,\n includes(prop)]);\n\n if(!hasProp)\n inheritedProps.push(prop);\n }\n }\n const unsetProps = pipe(p.props, [\n keys,\n filter(k => !includes(k)(keys(subComponentProps)) && k !== \"_component\")\n ]);\n\n const fullProps = cloneDeep(p.props);\n fullProps._component = targetComponent.name;\n\n return ({\n propsDefinition:expandPropsDefinition(component.props), \n inheritedProps,\n rootDefaultProps: rootProps.props,\n unsetProps,\n fullProps: fullProps,\n errors: p.errors,\n component: targetComponent,\n rootComponent: component\n });\n }\n return getComponentInfo(\n allComponents, \n component.inherits, \n [component, ...stack],\n {...component.props, ...subComponentProps});\n}\n\nexport const createProps = (componentName, propsDefinition, derivedFromProps) => {\n\n const error = (propName, error) =>\n errors.push({propName, error});\n\n const props = {\n _component: componentName\n };\n\n const errors = [];\n\n if(!componentName)\n error(\"_component\", \"Component name not supplied\");\n\n for(let propDef in propsDefinition) {\n const parsedPropDef = parsePropDef(propsDefinition[propDef]);\n if(parsedPropDef.error)\n error(propDef, parsedPropDef.error); \n else \n props[propDef] = parsedPropDef;\n }\n\n if(derivedFromProps) {\n assign(props, derivedFromProps);\n }\n\n return ({\n props, errors\n });\n}\n\nexport const createArrayElementProps = (arrayPropName, elementDefinition) => \n createProps(\n `#${arrayPropName}#array_element`,\n elementDefinition);\n\nconst parsePropDef = propDef => {\n const error = message => ({error:message, propDef});\n\n if(isString(propDef)) {\n if(!types[propDef])\n return error(`Do not recognise type ${propDef}`);\n \n return types[propDef].default();\n }\n\n if(!propDef.type)\n return error(\"Property Definition must declare a type\");\n \n const type = types[propDef.type];\n if(!type)\n return error(`Do not recognise type ${propDef.type}`);\n\n if(isUndefined(propDef.default))\n return type.default(propDef);\n\n if(!type.isOfType(propDef.default))\n return error(`${propDef.default} is not of type ${type}`);\n\n return propDef.default;\n}\n\nexport const arrayElementComponentName = (parentComponentName, arrayPropName) => \n `${parentComponentName}:${arrayPropName}`;\n\n/*\nAllowed propDefOptions\n- type: string, bool, number, array\n- default: default value, when undefined\n- required: field is required \n*/","import { \n getComponentInfo, createProps, getInstanceProps \n} from \"./createProps\";\n\nexport const buildPropsHierarchy = (allComponents, baseComponent) => {\n\n const buildProps = (componentName, propsDefinition, derivedFromProps) => {\n\n const {props} = createProps(componentName, propsDefinition, derivedFromProps);\n props._component = componentName;\n for(let propName in props) {\n if(propName === \"_component\") continue;\n\n const propDef = propsDefinition[propName];\n if(!propDef) continue;\n if(propDef.type === \"component\") {\n\n const subComponentProps = props[propName];\n \n if(!subComponentProps._component) continue;\n\n const propComponentInfo = getComponentInfo(\n allComponents, subComponentProps._component);\n\n const subComponentInstanceProps = getInstanceProps(\n propComponentInfo,\n subComponentProps\n );\n\n props[propName] = buildProps(\n propComponentInfo.rootComponent.name,\n propComponentInfo.propsDefinition,\n subComponentInstanceProps);\n\n } else if(propDef.type === \"array\") {\n const propsArray = props[propName];\n const newPropsArray = [];\n let index = 0;\n for(let element of propsArray) {\n newPropsArray.push(\n buildProps(\n `${propName}#array_element#`,\n propDef.elementDefinition,\n element));\n index++;\n }\n\n props[propName] = newPropsArray;\n }\n }\n\n return props;\n\n }\n\n if(!baseComponent) return {};\n\n const baseComponentInfo = getComponentInfo(allComponents, baseComponent);\n\n return buildProps(\n baseComponentInfo.rootComponent.name,\n baseComponentInfo.propsDefinition,\n baseComponentInfo.fullProps);\n\n}","const apiCall = (method) => (url, body) => \n fetch(url, {\n method: method,\n headers: {\n 'Content-Type': 'application/json',\n },\n body: body && JSON.stringify(body), \n });\n\nconst post = apiCall(\"POST\");\nconst get = apiCall(\"GET\");\nconst patch = apiCall(\"PATCH\");\nconst del = apiCall(\"DELETE\");\n\nexport default {\n post, get, patch, delete:del\n};","import { \r\n isPlainObject, isArray, cloneDeep\r\n} from \"lodash/fp\";\r\nimport {\r\n isRootComponent, getExactComponent\r\n} from \"./searchComponents\";\r\n\r\nexport const rename = (pages, allComponents, oldname, newname) => {\r\n\r\n pages = cloneDeep(pages);\r\n allComponents = cloneDeep(allComponents);\r\n const changedComponents = [];\r\n\r\n const existingWithNewName = getExactComponent(allComponents, newname);\r\n if(existingWithNewName) return {\r\n allComponents, pages, error: \"Component by that name already exists\"\r\n };\r\n\r\n const traverseProps = (props) => {\r\n let hasEdited = false;\r\n if(props._component && props._component === oldname) {\r\n props._component = newname;\r\n hasEdited = true;\r\n } \r\n\r\n for(let propName in props) {\r\n const prop = props[propName];\r\n if(isPlainObject(prop) && prop._component) {\r\n hasEdited = traverseProps(prop) || hasEdited;\r\n }\r\n if(isArray(prop)) {\r\n for(let element of prop) {\r\n hasEdited = traverseProps(element) || hasEdited;\r\n }\r\n }\r\n }\r\n return hasEdited;\r\n }\r\n\r\n\r\n for(let component of allComponents) {\r\n \r\n if(isRootComponent(component)) {\r\n continue;\r\n }\r\n\r\n let hasEdited = false;\r\n\r\n if(component.name === oldname) {\r\n component.name = newname;\r\n hasEdited = true;\r\n }\r\n\r\n if(component.inherits === oldname) {\r\n component.inherits = newname;\r\n hasEdited = true;\r\n }\r\n \r\n hasEdited = traverseProps(component.props) || hasEdited;\r\n\r\n if(hasEdited && component.name !== newname)\r\n changedComponents.push(component.name);\r\n }\r\n\r\n for(let pageName in pages) {\r\n const page = pages[pageName];\r\n if(page.appBody === oldname) {\r\n page.appBody = newname;\r\n }\r\n }\r\n\r\n return {allComponents, pages, changedComponents};\r\n\r\n\r\n}","import { map } from \"lodash/fp\";\n\nexport const loadLibs = async (appName, appPackage) => {\n\n const allLibraries = {};\n for(let lib of appPackage.pages.componentLibraries) {\n const libModule = await import(makeLibraryUrl(appName, lib));\n allLibraries[lib] = libModule;\n }\n\n return allLibraries;\n}\n\nexport const loadGeneratorLibs = async (appName, appPackage) => {\n\n const allGeneratorLibs = {};\n for(let lib of appPackage.pages.componentLibraries) {\n const generatorModule = await import(makeGeneratorLibraryUrl(appName, lib));\n allGeneratorLibs[lib] = generatorModule;\n }\n\n return allGeneratorLibs;\n}\n\nexport const loadLibUrls = (appName, appPackage) => {\n\n const allLibraries = [];\n for(let lib of appPackage.pages.componentLibraries) {\n const libUrl = makeLibraryUrl(appName, lib);\n allLibraries.push({libName:lib, importPath:libUrl});\n }\n\n return allLibraries;\n}\n\nexport const loadLib = async (appName, lib, allLibs) => {\n allLibs[lib] = await import(makeLibraryUrl(appName, lib));\n return allLibs;\n}\n\nexport const loadGeneratorLib = async (appName, lib, allGeneratorLibs) => {\n allGeneratorLibs[lib] = await import(makeGeneratorLibraryUrl(appName, lib));\n return allGeneratorLibs;\n}\n\nexport const makeLibraryUrl = (appName, lib) => \n `/_builder/${appName}/componentlibrary?lib=${encodeURI(lib)}`\n\nexport const makeGeneratorLibraryUrl = (appName, lib) => \n `/_builder/${appName}/componentlibraryGenerators?lib=${encodeURI(lib)}`","import {\n hierarchy as hierarchyFunctions, \n} from \"../../../core/src\";\nimport {\n filter, cloneDeep, sortBy, \n map, last, keys, concat,\n find, isEmpty, reduce, values\n} from \"lodash/fp\";\nimport {\n pipe, getNode, validate,\n constructHierarchy, templateApi\n} from \"../common/core\";\nimport {writable} from \"svelte/store\";\nimport { defaultPagesObject } from \"../userInterface/pagesParsing/defaultPagesObject\"\nimport { buildPropsHierarchy } from \"../userInterface/pagesParsing/buildPropsHierarchy\"\nimport api from \"./api\";\nimport { isRootComponent, getExactComponent } from \"../userInterface/pagesParsing/searchComponents\";\nimport { rename } from \"../userInterface/pagesParsing/renameComponent\";\nimport { \n getComponentInfo, getNewComponentInfo \n} from \"../userInterface/pagesParsing/createProps\";\nimport { \n loadLibs, loadLibUrls, loadGeneratorLibs\n} from \"./loadComponentLibraries\";\n\nlet appname = \"\";\n\nexport const getStore = () => {\n\n const initial = {\n apps:[],\n appname:\"\",\n hierarchy: {},\n actions: [],\n triggers: [],\n pages:defaultPagesObject(),\n mainUi:{},\n unauthenticatedUi:{},\n allComponents:[],\n currentFrontEndItem:null,\n currentComponentInfo:null,\n currentComponentIsNew:false,\n currentFrontEndType:\"none\",\n currentPageName: \"\",\n currentNodeIsNew: false,\n errors: [],\n activeNav: \"database\",\n isBackend:true,\n hasAppPackage: false,\n accessLevels: {version:0, levels:[]},\n currentNode: null,\n libraries:null,\n showSettings:false,\n useAnalytics:true,\n };\n\n const store = writable(initial);\n\n store.initialise = initialise(store, initial);\n store.newChildRecord = newRecord(store, false);\n store.newRootRecord = newRecord(store, true);\n store.selectExistingNode = selectExistingNode(store);\n store.newChildIndex = newIndex(store, false);\n store.newRootIndex = newIndex(store, true);\n store.saveCurrentNode = saveCurrentNode(store);\n store.importAppDefinition = importAppDefinition(store);\n store.deleteCurrentNode = deleteCurrentNode(store);\n store.saveField = saveField(store);\n store.deleteField = deleteField(store);\n store.saveAction = saveAction(store);\n store.deleteAction = deleteAction(store);\n store.saveTrigger = saveTrigger(store);\n store.deleteTrigger = deleteTrigger(store);\n store.saveLevel = saveLevel(store);\n store.deleteLevel = deleteLevel(store);\n store.setActiveNav = setActiveNav(store);\n store.saveDerivedComponent = saveDerivedComponent(store);\n store.refreshComponents = refreshComponents(store);\n store.addComponentLibrary = addComponentLibrary(store);\n store.renameDerivedComponent = renameDerivedComponent(store);\n store.deleteDerivedComponent = deleteDerivedComponent(store);\n store.setCurrentComponent = setCurrentComponent(store);\n store.setCurrentPage = setCurrentPage(store);\n store.createDerivedComponent = createDerivedComponent(store);\n store.removeComponentLibrary =removeComponentLibrary(store);\n store.addStylesheet = addStylesheet(store);\n store.removeStylesheet = removeStylesheet(store);\n store.savePage = savePage(store);\n store.showFrontend = showFrontend(store);\n store.showBackend = showBackend(store);\n store.showSettings = showSettings(store);\n store.useAnalytics = useAnalytics(store);\n store.createGeneratedComponents = createGeneratedComponents(store);\n return store;\n} \n\nexport default getStore;\n\nconst initialise = (store, initial) => async () => {\n\n appname = window.location.hash \n ? last(window.location.hash.substr(1).split(\"/\"))\n : \"\";\n\n if(!appname) {\n initial.apps = await api.get(`/_builder/api/apps`).then(r => r.json());\n initial.hasAppPackage = false;\n store.set(initial);\n return initial;\n }\n\n const pkg = await api.get(`/_builder/api/${appname}/appPackage`)\n .then(r => r.json());\n\n initial.libraries = await loadLibs(appname, pkg);\n initial.generatorLibraries = await loadGeneratorLibs(appname, pkg);\n initial.loadLibraryUrls = () => loadLibUrls(appname, pkg);\n initial.appname = appname;\n initial.pages = pkg.pages;\n initial.hasAppPackage = true;\n initial.hierarchy = pkg.appDefinition.hierarchy;\n initial.accessLevels = pkg.accessLevels;\n initial.derivedComponents = values(pkg.derivedComponents);\n initial.generators = generatorsArray(pkg.rootComponents.generators);\n initial.allComponents = combineComponents(\n pkg.derivedComponents, pkg.rootComponents.components);\n initial.actions = reduce((arr, action) => {\n arr.push(action);\n return arr;\n })(pkg.appDefinition.actions, []);\n initial.triggers = pkg.appDefinition.triggers;\n\n if(!!initial.hierarchy && !isEmpty(initial.hierarchy)) {\n initial.hierarchy = constructHierarchy(initial.hierarchy);\n const shadowHierarchy = createShadowHierarchy(initial.hierarchy);\n if(initial.currentNode !== null)\n initial.currentNode = getNode(\n shadowHierarchy, initial.currentNode.nodeId\n );\n }\n store.set(initial);\n return initial;\n}\n\nconst generatorsArray = generators => \n pipe(generators, [\n keys,\n filter(k => k !== \"_lib\"),\n map(k => generators[k])\n ]);\n\n\nconst showSettings = store => show => {\n store.update(s => {\n s.showSettings = !s.showSettings;\n return s;\n });\n}\n\nconst useAnalytics = store => useAnalytics => {\n store.update(s => {\n s.useAnalytics = !s.useAnalytics;\n return s;\n });\n}\n\nconst showBackend = store => () => {\n store.update(s => {\n s.isBackend = true;\n return s;\n })\n}\n\nconst showFrontend = store => () => {\n store.update(s => {\n s.isBackend = false;\n return s;\n })\n}\n\nconst combineComponents = (root, derived) => {\n const all = []\n for(let r in root) {\n all.push(root[r]);\n }\n for(let d in derived) {\n all.push(derived[d]);\n }\n return all;\n}\n\nconst newRecord = (store, useRoot) => () => {\n store.update(s => {\n s.currentNodeIsNew = true;\n const shadowHierarchy = createShadowHierarchy(s.hierarchy);\n parent = useRoot ? shadowHierarchy\n : getNode(\n shadowHierarchy, \n s.currentNode.nodeId);\n s.errors = [];\n s.currentNode = templateApi(shadowHierarchy)\n .getNewRecordTemplate(parent, \"\", true);\n return s;\n });\n}\n\n\nconst selectExistingNode = (store) => (nodeId) => {\n store.update(s => {\n const shadowHierarchy = createShadowHierarchy(s.hierarchy);\n s.currentNode = getNode(\n shadowHierarchy, nodeId\n );\n s.currentNodeIsNew = false;\n s.errors = [];\n s.activeNav = \"database\";\n return s;\n })\n}\n\nconst newIndex = (store, useRoot) => () => {\n store.update(s => {\n s.currentNodeIsNew = true;\n s.errors = [];\n const shadowHierarchy = createShadowHierarchy(s.hierarchy);\n parent = useRoot ? shadowHierarchy\n : getNode(\n shadowHierarchy, \n s.currentNode.nodeId);\n\n s.currentNode = templateApi(shadowHierarchy)\n .getNewIndexTemplate(parent);\n return s;\n });\n}\n\nconst saveCurrentNode = (store) => () => {\n store.update(s => {\n\n const errors = validate.node(s.currentNode);\n s.errors = errors;\n if(errors.length > 0) {\n return s;\n }\n\n const parentNode = getNode(\n s.hierarchy, s.currentNode.parent().nodeId);\n\n const existingNode = getNode(\n s.hierarchy, s.currentNode.nodeId);\n\n let index = parentNode.children.length;\n if(!!existingNode) {\n // remove existing\n index = existingNode.parent().children.indexOf(existingNode);\n existingNode.parent().children = pipe(existingNode.parent().children, [\n filter(c => c.nodeId !== existingNode.nodeId)\n ]);\n }\n\n // should add node into existing hierarchy\n const cloned = cloneDeep(s.currentNode);\n templateApi(s.hierarchy).constructNode(\n parentNode, \n cloned\n );\n\n const newIndexOfchild = child => {\n if(child === cloned) return index;\n const currentIndex = parentNode.children.indexOf(child);\n return currentIndex >= index ? currentIndex + 1 : currentIndex;\n }\n\n parentNode.children = pipe(parentNode.children, [\n sortBy(newIndexOfchild)\n ]);\n\n s.currentNodeIsNew = false;\n \n savePackage(store, s);\n\n return s;\n });\n}\n\nconst importAppDefinition = store => appDefinition => {\n store.update(s => {\n s.hierarchy = appDefinition.hierarchy;\n s.currentNode = appDefinition.hierarchy.children.length > 0\n ? appDefinition.hierarchy.children[0] \n : null;\n s.actions = appDefinition.actions;\n s.triggers = appDefinition.triggers;\n s.currentNodeIsNew = false; \n return s;\n });\n} \n\nconst deleteCurrentNode = store => () => {\n store.update(s => {\n const nodeToDelete = getNode(s.hierarchy, s.currentNode.nodeId);\n s.currentNode = hierarchyFunctions.isRoot(nodeToDelete.parent())\n ? find(n => n != s.currentNode)\n (s.hierarchy.children)\n : nodeToDelete.parent();\n if(hierarchyFunctions.isRecord(nodeToDelete)) {\n nodeToDelete.parent().children = filter(c => c.nodeId !== nodeToDelete.nodeId)\n (nodeToDelete.parent().children);\n } else {\n nodeToDelete.parent().indexes = filter(c => c.nodeId !== nodeToDelete.nodeId)\n (nodeToDelete.parent().indexes);\n }\n s.errors = [];\n savePackage(store, s);\n return s;\n });\n}\n\nconst saveField = databaseStore => (field) => {\n databaseStore.update(db => {\n db.currentNode.fields = filter(f => f.name !== field.name)\n (db.currentNode.fields);\n \n templateApi(db.hierarchy).addField(db.currentNode, field);\n return db;\n });\n}\n\n\nconst deleteField = databaseStore => field => {\n databaseStore.update(db => {\n db.currentNode.fields = filter(f => f.name !== field.name)\n (db.currentNode.fields);\n\n return db;\n });\n}\n\n\nconst saveAction = store => (newAction, isNew, oldAction=null) => {\n store.update(s => {\n\n const existingAction = isNew \n ? null\n : find(a => a.name === oldAction.name)(s.actions);\n \n if(existingAction) {\n s.actions = pipe(s.actions, [\n map(a => a === existingAction ? newAction : a)\n ]);\n } else {\n s.actions.push(newAction);\n }\n savePackage(store, s);\n return s;\n });\n}\n\nconst deleteAction = store => action => {\n store.update(s => {\n s.actions = filter(a => a.name !== action.name)(s.actions);\n savePackage(store, s);\n return s;\n });\n}\n\nconst saveTrigger = store => (newTrigger, isNew, oldTrigger=null) => {\n store.update(s => {\n\n const existingTrigger = isNew \n ? null\n : find(a => a.name === oldTrigger.name)(s.triggers);\n \n if(existingTrigger) {\n s.triggers = pipe(s.triggers, [\n map(a => a === existingTrigger ? newTrigger : a)\n ]);\n } else {\n s.triggers.push(newTrigger);\n }\n savePackage(store, s);\n return s;\n });\n}\n\nconst deleteTrigger = store => trigger => {\n store.update(s => {\n s.triggers = filter(t => t.name !== trigger.name)(s.triggers);\n return s;\n });\n}\n\nconst incrementAccessLevelsVersion = (s) =>\n s.accessLevels.version = (s.accessLevels.version || 0) + 1; \n\nconst saveLevel = store => (newLevel, isNew, oldLevel=null) => {\n store.update(s => {\n\n const levels = s.accessLevels.levels;\n\n const existingLevel = isNew \n ? null\n : find(a => a.name === oldLevel.name)(levels);\n \n if(existingLevel) {\n s.accessLevels.levels = pipe(levels, [\n map(a => a === existingLevel ? newLevel : a)\n ]);\n } else {\n s.accessLevels.levels.push(newLevel);\n }\n\n incrementAccessLevelsVersion(s);\n\n savePackage(store, s);\n return s;\n });\n}\n\nconst deleteLevel = store => level => {\n store.update(s => {\n s.accessLevels.levels = filter(t => t.name !== level.name)(s.accessLevels.levels);\n incrementAccessLevelsVersion(s);\n savePackage(store, s);\n return s;\n });\n}\n\nconst setActiveNav = store => navName => {\n store.update(s => {\n s.activeNav = navName;\n return s;\n });\n}\n\nconst createShadowHierarchy = hierarchy => \n constructHierarchy(JSON.parse(JSON.stringify(hierarchy)));\n\nconst saveDerivedComponent = store => (derivedComponent) => {\n\n store.update(s => {\n\n const components = pipe(s.allComponents, [\n filter(c => c.name !== derivedComponent.name),\n concat([derivedComponent])\n ]);\n\n const derivedComponents = pipe(s.derivedComponents, [\n filter(c => c.name !== derivedComponent.name),\n concat([derivedComponent])\n ]);\n\n s.allComponents = components;\n s.derivedComponents = derivedComponents;\n s.currentFrontEndItem = derivedComponent;\n s.currentComponentInfo = getComponentInfo(\n s.allComponents, derivedComponent.name);\n s.currentComponentIsNew = false;\n \n api.post(`/_builder/api/${s.appname}/derivedcomponent`, derivedComponent)\n .then(() => savePackage(store, s));\n\n return s;\n })\n};\n\nconst createDerivedComponent = store => componentName => {\n store.update(s => {\n const newComponentInfo = getNewComponentInfo(\n s.allComponents, componentName);\n\n s.currentFrontEndItem = newComponentInfo.component;\n s.currentComponentInfo = newComponentInfo;\n s.currentFrontEndType = \"component\";\n s.currentComponentIsNew = true;\n return s;\n });\n};\n\nconst createGeneratedComponents = store => components => {\n store.update(s => {\n s.allComponents = [...s.allComponents, ...components];\n s.derivedComponents = [...s.derivedComponents, ...components];\n\n const doCreate = async () => {\n for(let c of components) {\n await api.post(`/_builder/api/${s.appname}/derivedcomponent`, c);\n }\n\n await savePackage(store, s);\n }\n \n doCreate();\n\n return s;\n });\n};\n\nconst deleteDerivedComponent = store => name => {\n store.update(s => {\n\n const allComponents = pipe(s.allComponents, [\n filter(c => c.name !== name)\n ]);\n\n const derivedComponents = pipe(s.derivedComponents, [\n filter(c => c.name !== name)\n ]);\n\n s.allComponents = allComponents;\n s.derivedComponents = derivedComponents;\n if(s.currentFrontEndItem.name === name) {\n s.currentFrontEndItem = null;\n s.currentFrontEndType = \"\";\n }\n\n api.delete(`/_builder/api/${s.appname}/derivedcomponent/${name}`);\n\n return s;\n })\n}\n\nconst renameDerivedComponent = store => (oldname, newname) => {\n store.update(s => {\n\n const {\n allComponents, pages, error, changedComponents\n } = rename(s.pages, s.allComponents, oldname, newname);\n\n if(error) {\n // should really do something with this\n return s;\n }\n\n s.allComponents = allComponents;\n s.pages = pages;\n if(s.currentFrontEndItem.name === oldname)\n s.currentFrontEndItem.name = newname;\n\n const saveAllChanged = async () => {\n for(let cname of changedComponents) {\n const changedComponent = getExactComponent(allComponents, cname);\n await api.post(`/_builder/api/${s.appname}/derivedcomponent`, changedComponent);\n }\n }\n\n api.patch(`/_builder/api/${s.appname}/derivedcomponent`, {\n oldname, newname\n })\n .then(() => saveAllChanged())\n .then(() => {\n savePackage(store, s);\n }); \n\n return s;\n })\n}\n\nconst savePage = store => async page => {\n store.update(s => {\n if(s.currentFrontEndType !== \"page\" || !s.currentPageName) {\n return s;\n }\n\n s.pages[s.currentPageName] = page;\n savePackage(store, s);\n return s;\n });\n}\n\nconst addComponentLibrary = store => async lib => {\n\n const response = \n await api.get(`/_builder/api/${appname}/componentlibrary?lib=${encodeURI(lib)}`,undefined, false);\n\n const success = response.status === 200;\n\n const error = response.status === 404 \n ? `Could not find library ${lib}`\n : success\n ? \"\"\n : response.statusText;\n \n const components = success\n ? await response.json()\n : [];\n\n store.update(s => {\n if(success) {\n \n const componentsArray = [];\n for(let c in components) {\n componentsArray.push(components[c]);\n }\n\n s.allComponents = pipe(s.allComponents, [\n filter(c => !c.name.startsWith(`${lib}/`)),\n concat(componentsArray)\n ]);\n\n s.pages.componentLibraries.push(lib);\n savePackage(store, s);\n }\n\n return s;\n })\n \n\n}\n\nconst removeComponentLibrary = store => lib => {\n store.update(s => {\n \n \n s.pages.componentLibraries = filter(l => l !== lib)(\n s.pages.componentLibraries);\n savePackage(store, s);\n \n\n return s;\n })\n}\n\nconst addStylesheet = store => stylesheet => {\n store.update(s => {\n s.pages.stylesheets.push(stylesheet);\n savePackage(store, s);\n return s;\n })\n}\n\nconst removeStylesheet = store => stylesheet => {\n store.update(s => {\n s.pages.stylesheets = filter(s => s !== stylesheet)(s.pages.stylesheets);\n savePackage(store, s);\n return s;\n });\n}\n\nconst refreshComponents = store => async () => {\n\n const components = \n await api.get(`/_builder/api/${db.appname}/rootcomponents`).then(r => r.json());\n\n const rootComponents = pipe(components.components, [\n keys,\n map(k => ({...components[k], name:k}))\n ]);\n\n store.update(s => {\n s.allComponents = pipe(s.allComponents, [\n filter(c => !isRootComponent(c)),\n concat(rootComponents)\n ]);\n s.generators = components.generators;\n return s;\n });\n};\n\nconst savePackage = (store, s) => {\n\n const appDefinition = {\n hierarchy:s.hierarchy,\n triggers:s.triggers,\n actions: s.actions,\n props: {\n main: buildPropsHierarchy(s.allComponents, s.pages.main.appBody),\n unauthenticated: buildPropsHierarchy(s.allComponents, s.pages.unauthenticated.appBody)\n }\n };\n\n const data = {\n appDefinition,\n accessLevels:s.accessLevels,\n pages:s.pages,\n }\n\n return api.post(`/_builder/api/${s.appname}/appPackage`, data);\n}\n\nconst setCurrentComponent = store => componentName => {\n store.update(s => {\n const component = getExactComponent(s.allComponents, componentName);\n s.currentFrontEndItem = component;\n s.currentFrontEndType = \"component\";\n s.currentComponentIsNew = false;\n s.currentComponentInfo = getComponentInfo(s.allComponents, component.name);\n return s;\n })\n}\n\nconst setCurrentPage = store => pageName => {\n store.update(s => {\n s.currentFrontEndType = \"page\";\n s.currentPageName = pageName;\n return s;\n })\n}\n","import {createPackage} from \"./createPackage\";\nimport getStore from \"./store\";\n\nexport const store = getStore();\n\nexport const createNewPackage = () =>\n createPackage(packageInfo, store);\n\nexport const initialise = async () => {\n try {\n setupRouter(store);\n await store.initialise();\n } catch(err) {\n console.log(err);\n }\n\n} \n\nconst setupRouter = (writable) => {\n const pushState = history.pushState;\n history.pushState = () => {\n pushState.apply(history, arguments);\n //fireEvents('pushState', arguments); \n writable.initialise();\n }\n window.addEventListener('hashchange',()=>{\n writable.initialise();\n })\n}\n","<script>\n\nimport Button from \"./common/Button.svelte\"\nimport { store } from \"./builderStore\";\n\nlet errors = [];\n\n</script>\n\n<div class=\"root\">\n <div class=\"inner\">\n <img src=\"/_builder/assets/budibase-logo.png\" class=\"logo\" alt=\"budibase logo\"/>\n <div>\n \n <div>\n <h4 style=\"margin-bottom: 20px\">Choose an Application</h4>\n {#each $store.apps as app}\n <a href={`#/${app}`} class=\"app-link\">{app}</a>\n {/each}\n </div>\n </div>\n </div>\n</div>\n\n<style>\n\n.root {\n position: fixed;\n margin: 0 auto;\n text-align: center;\n top: 20%;\n /*color: #333333;\n background-color: #fdfdfd;*/\n width:100%;\n}\n\n.inner {\n display:inline-block;\n margin: auto;\n}\n\n.logo {\n width: 300px;\n margin-bottom: 40px;\n}\n\n.root :global(.option) {\n width:250px;\n}\n\n.app-link {\n margin-top: 10px;\n display: block;\n}\n\n</style>","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"feather\"] = factory();\n\telse\n\t\troot[\"feather\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"./dist/icons.json\":\n/*!*************************!*\\\n !*** ./dist/icons.json ***!\n \\*************************/\n/*! exports provided: activity, airplay, alert-circle, alert-octagon, alert-triangle, align-center, align-justify, align-left, align-right, anchor, aperture, archive, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, award, bar-chart-2, bar-chart, battery-charging, battery, bell-off, bell, bluetooth, bold, book-open, book, bookmark, box, briefcase, calendar, camera-off, camera, cast, check-circle, check-square, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, chrome, circle, clipboard, clock, cloud-drizzle, cloud-lightning, cloud-off, cloud-rain, cloud-snow, cloud, code, codepen, codesandbox, coffee, columns, command, compass, copy, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, cpu, credit-card, crop, crosshair, database, delete, disc, dollar-sign, download-cloud, download, droplet, edit-2, edit-3, edit, external-link, eye-off, eye, facebook, fast-forward, feather, figma, file-minus, file-plus, file-text, file, film, filter, flag, folder-minus, folder-plus, folder, framer, frown, gift, git-branch, git-commit, git-merge, git-pull-request, github, gitlab, globe, grid, hard-drive, hash, headphones, heart, help-circle, hexagon, home, image, inbox, info, instagram, italic, key, layers, layout, life-buoy, link-2, link, linkedin, list, loader, lock, log-in, log-out, mail, map-pin, map, maximize-2, maximize, meh, menu, message-circle, message-square, mic-off, mic, minimize-2, minimize, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, mouse-pointer, move, music, navigation-2, navigation, octagon, package, paperclip, pause-circle, pause, pen-tool, percent, phone-call, phone-forwarded, phone-incoming, phone-missed, phone-off, phone-outgoing, phone, pie-chart, play-circle, play, plus-circle, plus-square, plus, pocket, power, printer, radio, refresh-ccw, refresh-cw, repeat, rewind, rotate-ccw, rotate-cw, rss, save, scissors, search, send, server, settings, share-2, share, shield-off, shield, shopping-bag, shopping-cart, shuffle, sidebar, skip-back, skip-forward, slack, slash, sliders, smartphone, smile, speaker, square, star, stop-circle, sun, sunrise, sunset, tablet, tag, target, terminal, thermometer, thumbs-down, thumbs-up, toggle-left, toggle-right, tool, trash-2, trash, trello, trending-down, trending-up, triangle, truck, tv, twitch, twitter, type, umbrella, underline, unlock, upload-cloud, upload, user-check, user-minus, user-plus, user-x, user, users, video-off, video, voicemail, volume-1, volume-2, volume-x, volume, watch, wifi-off, wifi, wind, x-circle, x-octagon, x-square, x, youtube, zap-off, zap, zoom-in, zoom-out, default */\n/***/ (function(module) {\n\nmodule.exports = {\"activity\":\"<polyline points=\\\"22 12 18 12 15 21 9 3 6 12 2 12\\\"></polyline>\",\"airplay\":\"<path d=\\\"M5 17H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-1\\\"></path><polygon points=\\\"12 15 17 21 7 21 12 15\\\"></polygon>\",\"alert-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"16\\\" x2=\\\"12.01\\\" y2=\\\"16\\\"></line>\",\"alert-octagon\":\"<polygon points=\\\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\\\"></polygon><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"16\\\" x2=\\\"12.01\\\" y2=\\\"16\\\"></line>\",\"alert-triangle\":\"<path d=\\\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\\\"></path><line x1=\\\"12\\\" y1=\\\"9\\\" x2=\\\"12\\\" y2=\\\"13\\\"></line><line x1=\\\"12\\\" y1=\\\"17\\\" x2=\\\"12.01\\\" y2=\\\"17\\\"></line>\",\"align-center\":\"<line x1=\\\"18\\\" y1=\\\"10\\\" x2=\\\"6\\\" y2=\\\"10\\\"></line><line x1=\\\"21\\\" y1=\\\"6\\\" x2=\\\"3\\\" y2=\\\"6\\\"></line><line x1=\\\"21\\\" y1=\\\"14\\\" x2=\\\"3\\\" y2=\\\"14\\\"></line><line x1=\\\"18\\\" y1=\\\"18\\\" x2=\\\"6\\\" y2=\\\"18\\\"></line>\",\"align-justify\":\"<line x1=\\\"21\\\" y1=\\\"10\\\" x2=\\\"3\\\" y2=\\\"10\\\"></line><line x1=\\\"21\\\" y1=\\\"6\\\" x2=\\\"3\\\" y2=\\\"6\\\"></line><line x1=\\\"21\\\" y1=\\\"14\\\" x2=\\\"3\\\" y2=\\\"14\\\"></line><line x1=\\\"21\\\" y1=\\\"18\\\" x2=\\\"3\\\" y2=\\\"18\\\"></line>\",\"align-left\":\"<line x1=\\\"17\\\" y1=\\\"10\\\" x2=\\\"3\\\" y2=\\\"10\\\"></line><line x1=\\\"21\\\" y1=\\\"6\\\" x2=\\\"3\\\" y2=\\\"6\\\"></line><line x1=\\\"21\\\" y1=\\\"14\\\" x2=\\\"3\\\" y2=\\\"14\\\"></line><line x1=\\\"17\\\" y1=\\\"18\\\" x2=\\\"3\\\" y2=\\\"18\\\"></line>\",\"align-right\":\"<line x1=\\\"21\\\" y1=\\\"10\\\" x2=\\\"7\\\" y2=\\\"10\\\"></line><line x1=\\\"21\\\" y1=\\\"6\\\" x2=\\\"3\\\" y2=\\\"6\\\"></line><line x1=\\\"21\\\" y1=\\\"14\\\" x2=\\\"3\\\" y2=\\\"14\\\"></line><line x1=\\\"21\\\" y1=\\\"18\\\" x2=\\\"7\\\" y2=\\\"18\\\"></line>\",\"anchor\":\"<circle cx=\\\"12\\\" cy=\\\"5\\\" r=\\\"3\\\"></circle><line x1=\\\"12\\\" y1=\\\"22\\\" x2=\\\"12\\\" y2=\\\"8\\\"></line><path d=\\\"M5 12H2a10 10 0 0 0 20 0h-3\\\"></path>\",\"aperture\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"14.31\\\" y1=\\\"8\\\" x2=\\\"20.05\\\" y2=\\\"17.94\\\"></line><line x1=\\\"9.69\\\" y1=\\\"8\\\" x2=\\\"21.17\\\" y2=\\\"8\\\"></line><line x1=\\\"7.38\\\" y1=\\\"12\\\" x2=\\\"13.12\\\" y2=\\\"2.06\\\"></line><line x1=\\\"9.69\\\" y1=\\\"16\\\" x2=\\\"3.95\\\" y2=\\\"6.06\\\"></line><line x1=\\\"14.31\\\" y1=\\\"16\\\" x2=\\\"2.83\\\" y2=\\\"16\\\"></line><line x1=\\\"16.62\\\" y1=\\\"12\\\" x2=\\\"10.88\\\" y2=\\\"21.94\\\"></line>\",\"archive\":\"<polyline points=\\\"21 8 21 21 3 21 3 8\\\"></polyline><rect x=\\\"1\\\" y=\\\"3\\\" width=\\\"22\\\" height=\\\"5\\\"></rect><line x1=\\\"10\\\" y1=\\\"12\\\" x2=\\\"14\\\" y2=\\\"12\\\"></line>\",\"arrow-down-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polyline points=\\\"8 12 12 16 16 12\\\"></polyline><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"16\\\"></line>\",\"arrow-down-left\":\"<line x1=\\\"17\\\" y1=\\\"7\\\" x2=\\\"7\\\" y2=\\\"17\\\"></line><polyline points=\\\"17 17 7 17 7 7\\\"></polyline>\",\"arrow-down-right\":\"<line x1=\\\"7\\\" y1=\\\"7\\\" x2=\\\"17\\\" y2=\\\"17\\\"></line><polyline points=\\\"17 7 17 17 7 17\\\"></polyline>\",\"arrow-down\":\"<line x1=\\\"12\\\" y1=\\\"5\\\" x2=\\\"12\\\" y2=\\\"19\\\"></line><polyline points=\\\"19 12 12 19 5 12\\\"></polyline>\",\"arrow-left-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polyline points=\\\"12 8 8 12 12 16\\\"></polyline><line x1=\\\"16\\\" y1=\\\"12\\\" x2=\\\"8\\\" y2=\\\"12\\\"></line>\",\"arrow-left\":\"<line x1=\\\"19\\\" y1=\\\"12\\\" x2=\\\"5\\\" y2=\\\"12\\\"></line><polyline points=\\\"12 19 5 12 12 5\\\"></polyline>\",\"arrow-right-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polyline points=\\\"12 16 16 12 12 8\\\"></polyline><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line>\",\"arrow-right\":\"<line x1=\\\"5\\\" y1=\\\"12\\\" x2=\\\"19\\\" y2=\\\"12\\\"></line><polyline points=\\\"12 5 19 12 12 19\\\"></polyline>\",\"arrow-up-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polyline points=\\\"16 12 12 8 8 12\\\"></polyline><line x1=\\\"12\\\" y1=\\\"16\\\" x2=\\\"12\\\" y2=\\\"8\\\"></line>\",\"arrow-up-left\":\"<line x1=\\\"17\\\" y1=\\\"17\\\" x2=\\\"7\\\" y2=\\\"7\\\"></line><polyline points=\\\"7 17 7 7 17 7\\\"></polyline>\",\"arrow-up-right\":\"<line x1=\\\"7\\\" y1=\\\"17\\\" x2=\\\"17\\\" y2=\\\"7\\\"></line><polyline points=\\\"7 7 17 7 17 17\\\"></polyline>\",\"arrow-up\":\"<line x1=\\\"12\\\" y1=\\\"19\\\" x2=\\\"12\\\" y2=\\\"5\\\"></line><polyline points=\\\"5 12 12 5 19 12\\\"></polyline>\",\"at-sign\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4\\\"></circle><path d=\\\"M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-3.92 7.94\\\"></path>\",\"award\":\"<circle cx=\\\"12\\\" cy=\\\"8\\\" r=\\\"7\\\"></circle><polyline points=\\\"8.21 13.89 7 23 12 20 17 23 15.79 13.88\\\"></polyline>\",\"bar-chart-2\":\"<line x1=\\\"18\\\" y1=\\\"20\\\" x2=\\\"18\\\" y2=\\\"10\\\"></line><line x1=\\\"12\\\" y1=\\\"20\\\" x2=\\\"12\\\" y2=\\\"4\\\"></line><line x1=\\\"6\\\" y1=\\\"20\\\" x2=\\\"6\\\" y2=\\\"14\\\"></line>\",\"bar-chart\":\"<line x1=\\\"12\\\" y1=\\\"20\\\" x2=\\\"12\\\" y2=\\\"10\\\"></line><line x1=\\\"18\\\" y1=\\\"20\\\" x2=\\\"18\\\" y2=\\\"4\\\"></line><line x1=\\\"6\\\" y1=\\\"20\\\" x2=\\\"6\\\" y2=\\\"16\\\"></line>\",\"battery-charging\":\"<path d=\\\"M5 18H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3.19M15 6h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-3.19\\\"></path><line x1=\\\"23\\\" y1=\\\"13\\\" x2=\\\"23\\\" y2=\\\"11\\\"></line><polyline points=\\\"11 6 7 12 13 12 9 18\\\"></polyline>\",\"battery\":\"<rect x=\\\"1\\\" y=\\\"6\\\" width=\\\"18\\\" height=\\\"12\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"23\\\" y1=\\\"13\\\" x2=\\\"23\\\" y2=\\\"11\\\"></line>\",\"bell-off\":\"<path d=\\\"M13.73 21a2 2 0 0 1-3.46 0\\\"></path><path d=\\\"M18.63 13A17.89 17.89 0 0 1 18 8\\\"></path><path d=\\\"M6.26 6.26A5.86 5.86 0 0 0 6 8c0 7-3 9-3 9h14\\\"></path><path d=\\\"M18 8a6 6 0 0 0-9.33-5\\\"></path><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line>\",\"bell\":\"<path d=\\\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\\\"></path><path d=\\\"M13.73 21a2 2 0 0 1-3.46 0\\\"></path>\",\"bluetooth\":\"<polyline points=\\\"6.5 6.5 17.5 17.5 12 23 12 1 17.5 6.5 6.5 17.5\\\"></polyline>\",\"bold\":\"<path d=\\\"M6 4h8a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z\\\"></path><path d=\\\"M6 12h9a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z\\\"></path>\",\"book-open\":\"<path d=\\\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\\\"></path><path d=\\\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\\\"></path>\",\"book\":\"<path d=\\\"M4 19.5A2.5 2.5 0 0 1 6.5 17H20\\\"></path><path d=\\\"M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z\\\"></path>\",\"bookmark\":\"<path d=\\\"M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z\\\"></path>\",\"box\":\"<path d=\\\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\\\"></path><polyline points=\\\"3.27 6.96 12 12.01 20.73 6.96\\\"></polyline><line x1=\\\"12\\\" y1=\\\"22.08\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line>\",\"briefcase\":\"<rect x=\\\"2\\\" y=\\\"7\\\" width=\\\"20\\\" height=\\\"14\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><path d=\\\"M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16\\\"></path>\",\"calendar\":\"<rect x=\\\"3\\\" y=\\\"4\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"16\\\" y1=\\\"2\\\" x2=\\\"16\\\" y2=\\\"6\\\"></line><line x1=\\\"8\\\" y1=\\\"2\\\" x2=\\\"8\\\" y2=\\\"6\\\"></line><line x1=\\\"3\\\" y1=\\\"10\\\" x2=\\\"21\\\" y2=\\\"10\\\"></line>\",\"camera-off\":\"<line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line><path d=\\\"M21 21H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3m3-3h6l2 3h4a2 2 0 0 1 2 2v9.34m-7.72-2.06a4 4 0 1 1-5.56-5.56\\\"></path>\",\"camera\":\"<path d=\\\"M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z\\\"></path><circle cx=\\\"12\\\" cy=\\\"13\\\" r=\\\"4\\\"></circle>\",\"cast\":\"<path d=\\\"M2 16.1A5 5 0 0 1 5.9 20M2 12.05A9 9 0 0 1 9.95 20M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6\\\"></path><line x1=\\\"2\\\" y1=\\\"20\\\" x2=\\\"2.01\\\" y2=\\\"20\\\"></line>\",\"check-circle\":\"<path d=\\\"M22 11.08V12a10 10 0 1 1-5.93-9.14\\\"></path><polyline points=\\\"22 4 12 14.01 9 11.01\\\"></polyline>\",\"check-square\":\"<polyline points=\\\"9 11 12 14 22 4\\\"></polyline><path d=\\\"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11\\\"></path>\",\"check\":\"<polyline points=\\\"20 6 9 17 4 12\\\"></polyline>\",\"chevron-down\":\"<polyline points=\\\"6 9 12 15 18 9\\\"></polyline>\",\"chevron-left\":\"<polyline points=\\\"15 18 9 12 15 6\\\"></polyline>\",\"chevron-right\":\"<polyline points=\\\"9 18 15 12 9 6\\\"></polyline>\",\"chevron-up\":\"<polyline points=\\\"18 15 12 9 6 15\\\"></polyline>\",\"chevrons-down\":\"<polyline points=\\\"7 13 12 18 17 13\\\"></polyline><polyline points=\\\"7 6 12 11 17 6\\\"></polyline>\",\"chevrons-left\":\"<polyline points=\\\"11 17 6 12 11 7\\\"></polyline><polyline points=\\\"18 17 13 12 18 7\\\"></polyline>\",\"chevrons-right\":\"<polyline points=\\\"13 17 18 12 13 7\\\"></polyline><polyline points=\\\"6 17 11 12 6 7\\\"></polyline>\",\"chevrons-up\":\"<polyline points=\\\"17 11 12 6 7 11\\\"></polyline><polyline points=\\\"17 18 12 13 7 18\\\"></polyline>\",\"chrome\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4\\\"></circle><line x1=\\\"21.17\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"8\\\"></line><line x1=\\\"3.95\\\" y1=\\\"6.06\\\" x2=\\\"8.54\\\" y2=\\\"14\\\"></line><line x1=\\\"10.88\\\" y1=\\\"21.94\\\" x2=\\\"15.46\\\" y2=\\\"14\\\"></line>\",\"circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle>\",\"clipboard\":\"<path d=\\\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\\\"></path><rect x=\\\"8\\\" y=\\\"2\\\" width=\\\"8\\\" height=\\\"4\\\" rx=\\\"1\\\" ry=\\\"1\\\"></rect>\",\"clock\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polyline points=\\\"12 6 12 12 16 14\\\"></polyline>\",\"cloud-drizzle\":\"<line x1=\\\"8\\\" y1=\\\"19\\\" x2=\\\"8\\\" y2=\\\"21\\\"></line><line x1=\\\"8\\\" y1=\\\"13\\\" x2=\\\"8\\\" y2=\\\"15\\\"></line><line x1=\\\"16\\\" y1=\\\"19\\\" x2=\\\"16\\\" y2=\\\"21\\\"></line><line x1=\\\"16\\\" y1=\\\"13\\\" x2=\\\"16\\\" y2=\\\"15\\\"></line><line x1=\\\"12\\\" y1=\\\"21\\\" x2=\\\"12\\\" y2=\\\"23\\\"></line><line x1=\\\"12\\\" y1=\\\"15\\\" x2=\\\"12\\\" y2=\\\"17\\\"></line><path d=\\\"M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25\\\"></path>\",\"cloud-lightning\":\"<path d=\\\"M19 16.9A5 5 0 0 0 18 7h-1.26a8 8 0 1 0-11.62 9\\\"></path><polyline points=\\\"13 11 9 17 15 17 11 23\\\"></polyline>\",\"cloud-off\":\"<path d=\\\"M22.61 16.95A5 5 0 0 0 18 10h-1.26a8 8 0 0 0-7.05-6M5 5a8 8 0 0 0 4 15h9a5 5 0 0 0 1.7-.3\\\"></path><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line>\",\"cloud-rain\":\"<line x1=\\\"16\\\" y1=\\\"13\\\" x2=\\\"16\\\" y2=\\\"21\\\"></line><line x1=\\\"8\\\" y1=\\\"13\\\" x2=\\\"8\\\" y2=\\\"21\\\"></line><line x1=\\\"12\\\" y1=\\\"15\\\" x2=\\\"12\\\" y2=\\\"23\\\"></line><path d=\\\"M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25\\\"></path>\",\"cloud-snow\":\"<path d=\\\"M20 17.58A5 5 0 0 0 18 8h-1.26A8 8 0 1 0 4 16.25\\\"></path><line x1=\\\"8\\\" y1=\\\"16\\\" x2=\\\"8.01\\\" y2=\\\"16\\\"></line><line x1=\\\"8\\\" y1=\\\"20\\\" x2=\\\"8.01\\\" y2=\\\"20\\\"></line><line x1=\\\"12\\\" y1=\\\"18\\\" x2=\\\"12.01\\\" y2=\\\"18\\\"></line><line x1=\\\"12\\\" y1=\\\"22\\\" x2=\\\"12.01\\\" y2=\\\"22\\\"></line><line x1=\\\"16\\\" y1=\\\"16\\\" x2=\\\"16.01\\\" y2=\\\"16\\\"></line><line x1=\\\"16\\\" y1=\\\"20\\\" x2=\\\"16.01\\\" y2=\\\"20\\\"></line>\",\"cloud\":\"<path d=\\\"M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z\\\"></path>\",\"code\":\"<polyline points=\\\"16 18 22 12 16 6\\\"></polyline><polyline points=\\\"8 6 2 12 8 18\\\"></polyline>\",\"codepen\":\"<polygon points=\\\"12 2 22 8.5 22 15.5 12 22 2 15.5 2 8.5 12 2\\\"></polygon><line x1=\\\"12\\\" y1=\\\"22\\\" x2=\\\"12\\\" y2=\\\"15.5\\\"></line><polyline points=\\\"22 8.5 12 15.5 2 8.5\\\"></polyline><polyline points=\\\"2 15.5 12 8.5 22 15.5\\\"></polyline><line x1=\\\"12\\\" y1=\\\"2\\\" x2=\\\"12\\\" y2=\\\"8.5\\\"></line>\",\"codesandbox\":\"<path d=\\\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\\\"></path><polyline points=\\\"7.5 4.21 12 6.81 16.5 4.21\\\"></polyline><polyline points=\\\"7.5 19.79 7.5 14.6 3 12\\\"></polyline><polyline points=\\\"21 12 16.5 14.6 16.5 19.79\\\"></polyline><polyline points=\\\"3.27 6.96 12 12.01 20.73 6.96\\\"></polyline><line x1=\\\"12\\\" y1=\\\"22.08\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line>\",\"coffee\":\"<path d=\\\"M18 8h1a4 4 0 0 1 0 8h-1\\\"></path><path d=\\\"M2 8h16v9a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4V8z\\\"></path><line x1=\\\"6\\\" y1=\\\"1\\\" x2=\\\"6\\\" y2=\\\"4\\\"></line><line x1=\\\"10\\\" y1=\\\"1\\\" x2=\\\"10\\\" y2=\\\"4\\\"></line><line x1=\\\"14\\\" y1=\\\"1\\\" x2=\\\"14\\\" y2=\\\"4\\\"></line>\",\"columns\":\"<path d=\\\"M12 3h7a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-7m0-18H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h7m0-18v18\\\"></path>\",\"command\":\"<path d=\\\"M18 3a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3H6a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3V6a3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3h12a3 3 0 0 0 3-3 3 3 0 0 0-3-3z\\\"></path>\",\"compass\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polygon points=\\\"16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76\\\"></polygon>\",\"copy\":\"<rect x=\\\"9\\\" y=\\\"9\\\" width=\\\"13\\\" height=\\\"13\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><path d=\\\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\\\"></path>\",\"corner-down-left\":\"<polyline points=\\\"9 10 4 15 9 20\\\"></polyline><path d=\\\"M20 4v7a4 4 0 0 1-4 4H4\\\"></path>\",\"corner-down-right\":\"<polyline points=\\\"15 10 20 15 15 20\\\"></polyline><path d=\\\"M4 4v7a4 4 0 0 0 4 4h12\\\"></path>\",\"corner-left-down\":\"<polyline points=\\\"14 15 9 20 4 15\\\"></polyline><path d=\\\"M20 4h-7a4 4 0 0 0-4 4v12\\\"></path>\",\"corner-left-up\":\"<polyline points=\\\"14 9 9 4 4 9\\\"></polyline><path d=\\\"M20 20h-7a4 4 0 0 1-4-4V4\\\"></path>\",\"corner-right-down\":\"<polyline points=\\\"10 15 15 20 20 15\\\"></polyline><path d=\\\"M4 4h7a4 4 0 0 1 4 4v12\\\"></path>\",\"corner-right-up\":\"<polyline points=\\\"10 9 15 4 20 9\\\"></polyline><path d=\\\"M4 20h7a4 4 0 0 0 4-4V4\\\"></path>\",\"corner-up-left\":\"<polyline points=\\\"9 14 4 9 9 4\\\"></polyline><path d=\\\"M20 20v-7a4 4 0 0 0-4-4H4\\\"></path>\",\"corner-up-right\":\"<polyline points=\\\"15 14 20 9 15 4\\\"></polyline><path d=\\\"M4 20v-7a4 4 0 0 1 4-4h12\\\"></path>\",\"cpu\":\"<rect x=\\\"4\\\" y=\\\"4\\\" width=\\\"16\\\" height=\\\"16\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><rect x=\\\"9\\\" y=\\\"9\\\" width=\\\"6\\\" height=\\\"6\\\"></rect><line x1=\\\"9\\\" y1=\\\"1\\\" x2=\\\"9\\\" y2=\\\"4\\\"></line><line x1=\\\"15\\\" y1=\\\"1\\\" x2=\\\"15\\\" y2=\\\"4\\\"></line><line x1=\\\"9\\\" y1=\\\"20\\\" x2=\\\"9\\\" y2=\\\"23\\\"></line><line x1=\\\"15\\\" y1=\\\"20\\\" x2=\\\"15\\\" y2=\\\"23\\\"></line><line x1=\\\"20\\\" y1=\\\"9\\\" x2=\\\"23\\\" y2=\\\"9\\\"></line><line x1=\\\"20\\\" y1=\\\"14\\\" x2=\\\"23\\\" y2=\\\"14\\\"></line><line x1=\\\"1\\\" y1=\\\"9\\\" x2=\\\"4\\\" y2=\\\"9\\\"></line><line x1=\\\"1\\\" y1=\\\"14\\\" x2=\\\"4\\\" y2=\\\"14\\\"></line>\",\"credit-card\":\"<rect x=\\\"1\\\" y=\\\"4\\\" width=\\\"22\\\" height=\\\"16\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"1\\\" y1=\\\"10\\\" x2=\\\"23\\\" y2=\\\"10\\\"></line>\",\"crop\":\"<path d=\\\"M6.13 1L6 16a2 2 0 0 0 2 2h15\\\"></path><path d=\\\"M1 6.13L16 6a2 2 0 0 1 2 2v15\\\"></path>\",\"crosshair\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"22\\\" y1=\\\"12\\\" x2=\\\"18\\\" y2=\\\"12\\\"></line><line x1=\\\"6\\\" y1=\\\"12\\\" x2=\\\"2\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"6\\\" x2=\\\"12\\\" y2=\\\"2\\\"></line><line x1=\\\"12\\\" y1=\\\"22\\\" x2=\\\"12\\\" y2=\\\"18\\\"></line>\",\"database\":\"<ellipse cx=\\\"12\\\" cy=\\\"5\\\" rx=\\\"9\\\" ry=\\\"3\\\"></ellipse><path d=\\\"M21 12c0 1.66-4 3-9 3s-9-1.34-9-3\\\"></path><path d=\\\"M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5\\\"></path>\",\"delete\":\"<path d=\\\"M21 4H8l-7 8 7 8h13a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2z\\\"></path><line x1=\\\"18\\\" y1=\\\"9\\\" x2=\\\"12\\\" y2=\\\"15\\\"></line><line x1=\\\"12\\\" y1=\\\"9\\\" x2=\\\"18\\\" y2=\\\"15\\\"></line>\",\"disc\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"3\\\"></circle>\",\"dollar-sign\":\"<line x1=\\\"12\\\" y1=\\\"1\\\" x2=\\\"12\\\" y2=\\\"23\\\"></line><path d=\\\"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6\\\"></path>\",\"download-cloud\":\"<polyline points=\\\"8 17 12 21 16 17\\\"></polyline><line x1=\\\"12\\\" y1=\\\"12\\\" x2=\\\"12\\\" y2=\\\"21\\\"></line><path d=\\\"M20.88 18.09A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.29\\\"></path>\",\"download\":\"<path d=\\\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\\\"></path><polyline points=\\\"7 10 12 15 17 10\\\"></polyline><line x1=\\\"12\\\" y1=\\\"15\\\" x2=\\\"12\\\" y2=\\\"3\\\"></line>\",\"droplet\":\"<path d=\\\"M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z\\\"></path>\",\"edit-2\":\"<path d=\\\"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z\\\"></path>\",\"edit-3\":\"<path d=\\\"M12 20h9\\\"></path><path d=\\\"M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z\\\"></path>\",\"edit\":\"<path d=\\\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\\\"></path><path d=\\\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\\\"></path>\",\"external-link\":\"<path d=\\\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\\\"></path><polyline points=\\\"15 3 21 3 21 9\\\"></polyline><line x1=\\\"10\\\" y1=\\\"14\\\" x2=\\\"21\\\" y2=\\\"3\\\"></line>\",\"eye-off\":\"<path d=\\\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\\\"></path><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line>\",\"eye\":\"<path d=\\\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\\\"></path><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"3\\\"></circle>\",\"facebook\":\"<path d=\\\"M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z\\\"></path>\",\"fast-forward\":\"<polygon points=\\\"13 19 22 12 13 5 13 19\\\"></polygon><polygon points=\\\"2 19 11 12 2 5 2 19\\\"></polygon>\",\"feather\":\"<path d=\\\"M20.24 12.24a6 6 0 0 0-8.49-8.49L5 10.5V19h8.5z\\\"></path><line x1=\\\"16\\\" y1=\\\"8\\\" x2=\\\"2\\\" y2=\\\"22\\\"></line><line x1=\\\"17.5\\\" y1=\\\"15\\\" x2=\\\"9\\\" y2=\\\"15\\\"></line>\",\"figma\":\"<path d=\\\"M5 5.5A3.5 3.5 0 0 1 8.5 2H12v7H8.5A3.5 3.5 0 0 1 5 5.5z\\\"></path><path d=\\\"M12 2h3.5a3.5 3.5 0 1 1 0 7H12V2z\\\"></path><path d=\\\"M12 12.5a3.5 3.5 0 1 1 7 0 3.5 3.5 0 1 1-7 0z\\\"></path><path d=\\\"M5 19.5A3.5 3.5 0 0 1 8.5 16H12v3.5a3.5 3.5 0 1 1-7 0z\\\"></path><path d=\\\"M5 12.5A3.5 3.5 0 0 1 8.5 9H12v7H8.5A3.5 3.5 0 0 1 5 12.5z\\\"></path>\",\"file-minus\":\"<path d=\\\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\\\"></path><polyline points=\\\"14 2 14 8 20 8\\\"></polyline><line x1=\\\"9\\\" y1=\\\"15\\\" x2=\\\"15\\\" y2=\\\"15\\\"></line>\",\"file-plus\":\"<path d=\\\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\\\"></path><polyline points=\\\"14 2 14 8 20 8\\\"></polyline><line x1=\\\"12\\\" y1=\\\"18\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line><line x1=\\\"9\\\" y1=\\\"15\\\" x2=\\\"15\\\" y2=\\\"15\\\"></line>\",\"file-text\":\"<path d=\\\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\\\"></path><polyline points=\\\"14 2 14 8 20 8\\\"></polyline><line x1=\\\"16\\\" y1=\\\"13\\\" x2=\\\"8\\\" y2=\\\"13\\\"></line><line x1=\\\"16\\\" y1=\\\"17\\\" x2=\\\"8\\\" y2=\\\"17\\\"></line><polyline points=\\\"10 9 9 9 8 9\\\"></polyline>\",\"file\":\"<path d=\\\"M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z\\\"></path><polyline points=\\\"13 2 13 9 20 9\\\"></polyline>\",\"film\":\"<rect x=\\\"2\\\" y=\\\"2\\\" width=\\\"20\\\" height=\\\"20\\\" rx=\\\"2.18\\\" ry=\\\"2.18\\\"></rect><line x1=\\\"7\\\" y1=\\\"2\\\" x2=\\\"7\\\" y2=\\\"22\\\"></line><line x1=\\\"17\\\" y1=\\\"2\\\" x2=\\\"17\\\" y2=\\\"22\\\"></line><line x1=\\\"2\\\" y1=\\\"12\\\" x2=\\\"22\\\" y2=\\\"12\\\"></line><line x1=\\\"2\\\" y1=\\\"7\\\" x2=\\\"7\\\" y2=\\\"7\\\"></line><line x1=\\\"2\\\" y1=\\\"17\\\" x2=\\\"7\\\" y2=\\\"17\\\"></line><line x1=\\\"17\\\" y1=\\\"17\\\" x2=\\\"22\\\" y2=\\\"17\\\"></line><line x1=\\\"17\\\" y1=\\\"7\\\" x2=\\\"22\\\" y2=\\\"7\\\"></line>\",\"filter\":\"<polygon points=\\\"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3\\\"></polygon>\",\"flag\":\"<path d=\\\"M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z\\\"></path><line x1=\\\"4\\\" y1=\\\"22\\\" x2=\\\"4\\\" y2=\\\"15\\\"></line>\",\"folder-minus\":\"<path d=\\\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\\\"></path><line x1=\\\"9\\\" y1=\\\"14\\\" x2=\\\"15\\\" y2=\\\"14\\\"></line>\",\"folder-plus\":\"<path d=\\\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\\\"></path><line x1=\\\"12\\\" y1=\\\"11\\\" x2=\\\"12\\\" y2=\\\"17\\\"></line><line x1=\\\"9\\\" y1=\\\"14\\\" x2=\\\"15\\\" y2=\\\"14\\\"></line>\",\"folder\":\"<path d=\\\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\\\"></path>\",\"framer\":\"<path d=\\\"M5 16V9h14V2H5l14 14h-7m-7 0l7 7v-7m-7 0h7\\\"></path>\",\"frown\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><path d=\\\"M16 16s-1.5-2-4-2-4 2-4 2\\\"></path><line x1=\\\"9\\\" y1=\\\"9\\\" x2=\\\"9.01\\\" y2=\\\"9\\\"></line><line x1=\\\"15\\\" y1=\\\"9\\\" x2=\\\"15.01\\\" y2=\\\"9\\\"></line>\",\"gift\":\"<polyline points=\\\"20 12 20 22 4 22 4 12\\\"></polyline><rect x=\\\"2\\\" y=\\\"7\\\" width=\\\"20\\\" height=\\\"5\\\"></rect><line x1=\\\"12\\\" y1=\\\"22\\\" x2=\\\"12\\\" y2=\\\"7\\\"></line><path d=\\\"M12 7H7.5a2.5 2.5 0 0 1 0-5C11 2 12 7 12 7z\\\"></path><path d=\\\"M12 7h4.5a2.5 2.5 0 0 0 0-5C13 2 12 7 12 7z\\\"></path>\",\"git-branch\":\"<line x1=\\\"6\\\" y1=\\\"3\\\" x2=\\\"6\\\" y2=\\\"15\\\"></line><circle cx=\\\"18\\\" cy=\\\"6\\\" r=\\\"3\\\"></circle><circle cx=\\\"6\\\" cy=\\\"18\\\" r=\\\"3\\\"></circle><path d=\\\"M18 9a9 9 0 0 1-9 9\\\"></path>\",\"git-commit\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4\\\"></circle><line x1=\\\"1.05\\\" y1=\\\"12\\\" x2=\\\"7\\\" y2=\\\"12\\\"></line><line x1=\\\"17.01\\\" y1=\\\"12\\\" x2=\\\"22.96\\\" y2=\\\"12\\\"></line>\",\"git-merge\":\"<circle cx=\\\"18\\\" cy=\\\"18\\\" r=\\\"3\\\"></circle><circle cx=\\\"6\\\" cy=\\\"6\\\" r=\\\"3\\\"></circle><path d=\\\"M6 21V9a9 9 0 0 0 9 9\\\"></path>\",\"git-pull-request\":\"<circle cx=\\\"18\\\" cy=\\\"18\\\" r=\\\"3\\\"></circle><circle cx=\\\"6\\\" cy=\\\"6\\\" r=\\\"3\\\"></circle><path d=\\\"M13 6h3a2 2 0 0 1 2 2v7\\\"></path><line x1=\\\"6\\\" y1=\\\"9\\\" x2=\\\"6\\\" y2=\\\"21\\\"></line>\",\"github\":\"<path d=\\\"M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22\\\"></path>\",\"gitlab\":\"<path d=\\\"M22.65 14.39L12 22.13 1.35 14.39a.84.84 0 0 1-.3-.94l1.22-3.78 2.44-7.51A.42.42 0 0 1 4.82 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.49h8.1l2.44-7.51A.42.42 0 0 1 18.6 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.51L23 13.45a.84.84 0 0 1-.35.94z\\\"></path>\",\"globe\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"2\\\" y1=\\\"12\\\" x2=\\\"22\\\" y2=\\\"12\\\"></line><path d=\\\"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z\\\"></path>\",\"grid\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"7\\\" height=\\\"7\\\"></rect><rect x=\\\"14\\\" y=\\\"3\\\" width=\\\"7\\\" height=\\\"7\\\"></rect><rect x=\\\"14\\\" y=\\\"14\\\" width=\\\"7\\\" height=\\\"7\\\"></rect><rect x=\\\"3\\\" y=\\\"14\\\" width=\\\"7\\\" height=\\\"7\\\"></rect>\",\"hard-drive\":\"<line x1=\\\"22\\\" y1=\\\"12\\\" x2=\\\"2\\\" y2=\\\"12\\\"></line><path d=\\\"M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\\\"></path><line x1=\\\"6\\\" y1=\\\"16\\\" x2=\\\"6.01\\\" y2=\\\"16\\\"></line><line x1=\\\"10\\\" y1=\\\"16\\\" x2=\\\"10.01\\\" y2=\\\"16\\\"></line>\",\"hash\":\"<line x1=\\\"4\\\" y1=\\\"9\\\" x2=\\\"20\\\" y2=\\\"9\\\"></line><line x1=\\\"4\\\" y1=\\\"15\\\" x2=\\\"20\\\" y2=\\\"15\\\"></line><line x1=\\\"10\\\" y1=\\\"3\\\" x2=\\\"8\\\" y2=\\\"21\\\"></line><line x1=\\\"16\\\" y1=\\\"3\\\" x2=\\\"14\\\" y2=\\\"21\\\"></line>\",\"headphones\":\"<path d=\\\"M3 18v-6a9 9 0 0 1 18 0v6\\\"></path><path d=\\\"M21 19a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3zM3 19a2 2 0 0 0 2 2h1a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2H3z\\\"></path>\",\"heart\":\"<path d=\\\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\\\"></path>\",\"help-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><path d=\\\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\\\"></path><line x1=\\\"12\\\" y1=\\\"17\\\" x2=\\\"12.01\\\" y2=\\\"17\\\"></line>\",\"hexagon\":\"<path d=\\\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\\\"></path>\",\"home\":\"<path d=\\\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\\\"></path><polyline points=\\\"9 22 9 12 15 12 15 22\\\"></polyline>\",\"image\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" r=\\\"1.5\\\"></circle><polyline points=\\\"21 15 16 10 5 21\\\"></polyline>\",\"inbox\":\"<polyline points=\\\"22 12 16 12 14 15 10 15 8 12 2 12\\\"></polyline><path d=\\\"M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\\\"></path>\",\"info\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"12\\\" y1=\\\"16\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12.01\\\" y2=\\\"8\\\"></line>\",\"instagram\":\"<rect x=\\\"2\\\" y=\\\"2\\\" width=\\\"20\\\" height=\\\"20\\\" rx=\\\"5\\\" ry=\\\"5\\\"></rect><path d=\\\"M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z\\\"></path><line x1=\\\"17.5\\\" y1=\\\"6.5\\\" x2=\\\"17.51\\\" y2=\\\"6.5\\\"></line>\",\"italic\":\"<line x1=\\\"19\\\" y1=\\\"4\\\" x2=\\\"10\\\" y2=\\\"4\\\"></line><line x1=\\\"14\\\" y1=\\\"20\\\" x2=\\\"5\\\" y2=\\\"20\\\"></line><line x1=\\\"15\\\" y1=\\\"4\\\" x2=\\\"9\\\" y2=\\\"20\\\"></line>\",\"key\":\"<path d=\\\"M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4\\\"></path>\",\"layers\":\"<polygon points=\\\"12 2 2 7 12 12 22 7 12 2\\\"></polygon><polyline points=\\\"2 17 12 22 22 17\\\"></polyline><polyline points=\\\"2 12 12 17 22 12\\\"></polyline>\",\"layout\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"3\\\" y1=\\\"9\\\" x2=\\\"21\\\" y2=\\\"9\\\"></line><line x1=\\\"9\\\" y1=\\\"21\\\" x2=\\\"9\\\" y2=\\\"9\\\"></line>\",\"life-buoy\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4\\\"></circle><line x1=\\\"4.93\\\" y1=\\\"4.93\\\" x2=\\\"9.17\\\" y2=\\\"9.17\\\"></line><line x1=\\\"14.83\\\" y1=\\\"14.83\\\" x2=\\\"19.07\\\" y2=\\\"19.07\\\"></line><line x1=\\\"14.83\\\" y1=\\\"9.17\\\" x2=\\\"19.07\\\" y2=\\\"4.93\\\"></line><line x1=\\\"14.83\\\" y1=\\\"9.17\\\" x2=\\\"18.36\\\" y2=\\\"5.64\\\"></line><line x1=\\\"4.93\\\" y1=\\\"19.07\\\" x2=\\\"9.17\\\" y2=\\\"14.83\\\"></line>\",\"link-2\":\"<path d=\\\"M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3\\\"></path><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line>\",\"link\":\"<path d=\\\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\\\"></path><path d=\\\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\\\"></path>\",\"linkedin\":\"<path d=\\\"M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z\\\"></path><rect x=\\\"2\\\" y=\\\"9\\\" width=\\\"4\\\" height=\\\"12\\\"></rect><circle cx=\\\"4\\\" cy=\\\"4\\\" r=\\\"2\\\"></circle>\",\"list\":\"<line x1=\\\"8\\\" y1=\\\"6\\\" x2=\\\"21\\\" y2=\\\"6\\\"></line><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"21\\\" y2=\\\"12\\\"></line><line x1=\\\"8\\\" y1=\\\"18\\\" x2=\\\"21\\\" y2=\\\"18\\\"></line><line x1=\\\"3\\\" y1=\\\"6\\\" x2=\\\"3.01\\\" y2=\\\"6\\\"></line><line x1=\\\"3\\\" y1=\\\"12\\\" x2=\\\"3.01\\\" y2=\\\"12\\\"></line><line x1=\\\"3\\\" y1=\\\"18\\\" x2=\\\"3.01\\\" y2=\\\"18\\\"></line>\",\"loader\":\"<line x1=\\\"12\\\" y1=\\\"2\\\" x2=\\\"12\\\" y2=\\\"6\\\"></line><line x1=\\\"12\\\" y1=\\\"18\\\" x2=\\\"12\\\" y2=\\\"22\\\"></line><line x1=\\\"4.93\\\" y1=\\\"4.93\\\" x2=\\\"7.76\\\" y2=\\\"7.76\\\"></line><line x1=\\\"16.24\\\" y1=\\\"16.24\\\" x2=\\\"19.07\\\" y2=\\\"19.07\\\"></line><line x1=\\\"2\\\" y1=\\\"12\\\" x2=\\\"6\\\" y2=\\\"12\\\"></line><line x1=\\\"18\\\" y1=\\\"12\\\" x2=\\\"22\\\" y2=\\\"12\\\"></line><line x1=\\\"4.93\\\" y1=\\\"19.07\\\" x2=\\\"7.76\\\" y2=\\\"16.24\\\"></line><line x1=\\\"16.24\\\" y1=\\\"7.76\\\" x2=\\\"19.07\\\" y2=\\\"4.93\\\"></line>\",\"lock\":\"<rect x=\\\"3\\\" y=\\\"11\\\" width=\\\"18\\\" height=\\\"11\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><path d=\\\"M7 11V7a5 5 0 0 1 10 0v4\\\"></path>\",\"log-in\":\"<path d=\\\"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4\\\"></path><polyline points=\\\"10 17 15 12 10 7\\\"></polyline><line x1=\\\"15\\\" y1=\\\"12\\\" x2=\\\"3\\\" y2=\\\"12\\\"></line>\",\"log-out\":\"<path d=\\\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\\\"></path><polyline points=\\\"16 17 21 12 16 7\\\"></polyline><line x1=\\\"21\\\" y1=\\\"12\\\" x2=\\\"9\\\" y2=\\\"12\\\"></line>\",\"mail\":\"<path d=\\\"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z\\\"></path><polyline points=\\\"22,6 12,13 2,6\\\"></polyline>\",\"map-pin\":\"<path d=\\\"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z\\\"></path><circle cx=\\\"12\\\" cy=\\\"10\\\" r=\\\"3\\\"></circle>\",\"map\":\"<polygon points=\\\"1 6 1 22 8 18 16 22 23 18 23 2 16 6 8 2 1 6\\\"></polygon><line x1=\\\"8\\\" y1=\\\"2\\\" x2=\\\"8\\\" y2=\\\"18\\\"></line><line x1=\\\"16\\\" y1=\\\"6\\\" x2=\\\"16\\\" y2=\\\"22\\\"></line>\",\"maximize-2\":\"<polyline points=\\\"15 3 21 3 21 9\\\"></polyline><polyline points=\\\"9 21 3 21 3 15\\\"></polyline><line x1=\\\"21\\\" y1=\\\"3\\\" x2=\\\"14\\\" y2=\\\"10\\\"></line><line x1=\\\"3\\\" y1=\\\"21\\\" x2=\\\"10\\\" y2=\\\"14\\\"></line>\",\"maximize\":\"<path d=\\\"M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3\\\"></path>\",\"meh\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"8\\\" y1=\\\"15\\\" x2=\\\"16\\\" y2=\\\"15\\\"></line><line x1=\\\"9\\\" y1=\\\"9\\\" x2=\\\"9.01\\\" y2=\\\"9\\\"></line><line x1=\\\"15\\\" y1=\\\"9\\\" x2=\\\"15.01\\\" y2=\\\"9\\\"></line>\",\"menu\":\"<line x1=\\\"3\\\" y1=\\\"12\\\" x2=\\\"21\\\" y2=\\\"12\\\"></line><line x1=\\\"3\\\" y1=\\\"6\\\" x2=\\\"21\\\" y2=\\\"6\\\"></line><line x1=\\\"3\\\" y1=\\\"18\\\" x2=\\\"21\\\" y2=\\\"18\\\"></line>\",\"message-circle\":\"<path d=\\\"M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z\\\"></path>\",\"message-square\":\"<path d=\\\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\\\"></path>\",\"mic-off\":\"<line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line><path d=\\\"M9 9v3a3 3 0 0 0 5.12 2.12M15 9.34V4a3 3 0 0 0-5.94-.6\\\"></path><path d=\\\"M17 16.95A7 7 0 0 1 5 12v-2m14 0v2a7 7 0 0 1-.11 1.23\\\"></path><line x1=\\\"12\\\" y1=\\\"19\\\" x2=\\\"12\\\" y2=\\\"23\\\"></line><line x1=\\\"8\\\" y1=\\\"23\\\" x2=\\\"16\\\" y2=\\\"23\\\"></line>\",\"mic\":\"<path d=\\\"M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z\\\"></path><path d=\\\"M19 10v2a7 7 0 0 1-14 0v-2\\\"></path><line x1=\\\"12\\\" y1=\\\"19\\\" x2=\\\"12\\\" y2=\\\"23\\\"></line><line x1=\\\"8\\\" y1=\\\"23\\\" x2=\\\"16\\\" y2=\\\"23\\\"></line>\",\"minimize-2\":\"<polyline points=\\\"4 14 10 14 10 20\\\"></polyline><polyline points=\\\"20 10 14 10 14 4\\\"></polyline><line x1=\\\"14\\\" y1=\\\"10\\\" x2=\\\"21\\\" y2=\\\"3\\\"></line><line x1=\\\"3\\\" y1=\\\"21\\\" x2=\\\"10\\\" y2=\\\"14\\\"></line>\",\"minimize\":\"<path d=\\\"M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 1 2-2h3M3 16h3a2 2 0 0 1 2 2v3\\\"></path>\",\"minus-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line>\",\"minus-square\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line>\",\"minus\":\"<line x1=\\\"5\\\" y1=\\\"12\\\" x2=\\\"19\\\" y2=\\\"12\\\"></line>\",\"monitor\":\"<rect x=\\\"2\\\" y=\\\"3\\\" width=\\\"20\\\" height=\\\"14\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"8\\\" y1=\\\"21\\\" x2=\\\"16\\\" y2=\\\"21\\\"></line><line x1=\\\"12\\\" y1=\\\"17\\\" x2=\\\"12\\\" y2=\\\"21\\\"></line>\",\"moon\":\"<path d=\\\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\\\"></path>\",\"more-horizontal\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"1\\\"></circle><circle cx=\\\"19\\\" cy=\\\"12\\\" r=\\\"1\\\"></circle><circle cx=\\\"5\\\" cy=\\\"12\\\" r=\\\"1\\\"></circle>\",\"more-vertical\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"1\\\"></circle><circle cx=\\\"12\\\" cy=\\\"5\\\" r=\\\"1\\\"></circle><circle cx=\\\"12\\\" cy=\\\"19\\\" r=\\\"1\\\"></circle>\",\"mouse-pointer\":\"<path d=\\\"M3 3l7.07 16.97 2.51-7.39 7.39-2.51L3 3z\\\"></path><path d=\\\"M13 13l6 6\\\"></path>\",\"move\":\"<polyline points=\\\"5 9 2 12 5 15\\\"></polyline><polyline points=\\\"9 5 12 2 15 5\\\"></polyline><polyline points=\\\"15 19 12 22 9 19\\\"></polyline><polyline points=\\\"19 9 22 12 19 15\\\"></polyline><line x1=\\\"2\\\" y1=\\\"12\\\" x2=\\\"22\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"2\\\" x2=\\\"12\\\" y2=\\\"22\\\"></line>\",\"music\":\"<path d=\\\"M9 18V5l12-2v13\\\"></path><circle cx=\\\"6\\\" cy=\\\"18\\\" r=\\\"3\\\"></circle><circle cx=\\\"18\\\" cy=\\\"16\\\" r=\\\"3\\\"></circle>\",\"navigation-2\":\"<polygon points=\\\"12 2 19 21 12 17 5 21 12 2\\\"></polygon>\",\"navigation\":\"<polygon points=\\\"3 11 22 2 13 21 11 13 3 11\\\"></polygon>\",\"octagon\":\"<polygon points=\\\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\\\"></polygon>\",\"package\":\"<line x1=\\\"16.5\\\" y1=\\\"9.4\\\" x2=\\\"7.5\\\" y2=\\\"4.21\\\"></line><path d=\\\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\\\"></path><polyline points=\\\"3.27 6.96 12 12.01 20.73 6.96\\\"></polyline><line x1=\\\"12\\\" y1=\\\"22.08\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line>\",\"paperclip\":\"<path d=\\\"M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48\\\"></path>\",\"pause-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"10\\\" y1=\\\"15\\\" x2=\\\"10\\\" y2=\\\"9\\\"></line><line x1=\\\"14\\\" y1=\\\"15\\\" x2=\\\"14\\\" y2=\\\"9\\\"></line>\",\"pause\":\"<rect x=\\\"6\\\" y=\\\"4\\\" width=\\\"4\\\" height=\\\"16\\\"></rect><rect x=\\\"14\\\" y=\\\"4\\\" width=\\\"4\\\" height=\\\"16\\\"></rect>\",\"pen-tool\":\"<path d=\\\"M12 19l7-7 3 3-7 7-3-3z\\\"></path><path d=\\\"M18 13l-1.5-7.5L2 2l3.5 14.5L13 18l5-5z\\\"></path><path d=\\\"M2 2l7.586 7.586\\\"></path><circle cx=\\\"11\\\" cy=\\\"11\\\" r=\\\"2\\\"></circle>\",\"percent\":\"<line x1=\\\"19\\\" y1=\\\"5\\\" x2=\\\"5\\\" y2=\\\"19\\\"></line><circle cx=\\\"6.5\\\" cy=\\\"6.5\\\" r=\\\"2.5\\\"></circle><circle cx=\\\"17.5\\\" cy=\\\"17.5\\\" r=\\\"2.5\\\"></circle>\",\"phone-call\":\"<path d=\\\"M15.05 5A5 5 0 0 1 19 8.95M15.05 1A9 9 0 0 1 23 8.94m-1 7.98v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\\\"></path>\",\"phone-forwarded\":\"<polyline points=\\\"19 1 23 5 19 9\\\"></polyline><line x1=\\\"15\\\" y1=\\\"5\\\" x2=\\\"23\\\" y2=\\\"5\\\"></line><path d=\\\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\\\"></path>\",\"phone-incoming\":\"<polyline points=\\\"16 2 16 8 22 8\\\"></polyline><line x1=\\\"23\\\" y1=\\\"1\\\" x2=\\\"16\\\" y2=\\\"8\\\"></line><path d=\\\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\\\"></path>\",\"phone-missed\":\"<line x1=\\\"23\\\" y1=\\\"1\\\" x2=\\\"17\\\" y2=\\\"7\\\"></line><line x1=\\\"17\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"7\\\"></line><path d=\\\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\\\"></path>\",\"phone-off\":\"<path d=\\\"M10.68 13.31a16 16 0 0 0 3.41 2.6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7 2 2 0 0 1 1.72 2v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.42 19.42 0 0 1-3.33-2.67m-2.67-3.34a19.79 19.79 0 0 1-3.07-8.63A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91\\\"></path><line x1=\\\"23\\\" y1=\\\"1\\\" x2=\\\"1\\\" y2=\\\"23\\\"></line>\",\"phone-outgoing\":\"<polyline points=\\\"23 7 23 1 17 1\\\"></polyline><line x1=\\\"16\\\" y1=\\\"8\\\" x2=\\\"23\\\" y2=\\\"1\\\"></line><path d=\\\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\\\"></path>\",\"phone\":\"<path d=\\\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\\\"></path>\",\"pie-chart\":\"<path d=\\\"M21.21 15.89A10 10 0 1 1 8 2.83\\\"></path><path d=\\\"M22 12A10 10 0 0 0 12 2v10z\\\"></path>\",\"play-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polygon points=\\\"10 8 16 12 10 16 10 8\\\"></polygon>\",\"play\":\"<polygon points=\\\"5 3 19 12 5 21 5 3\\\"></polygon>\",\"plus-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"16\\\"></line><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line>\",\"plus-square\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"16\\\"></line><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line>\",\"plus\":\"<line x1=\\\"12\\\" y1=\\\"5\\\" x2=\\\"12\\\" y2=\\\"19\\\"></line><line x1=\\\"5\\\" y1=\\\"12\\\" x2=\\\"19\\\" y2=\\\"12\\\"></line>\",\"pocket\":\"<path d=\\\"M4 3h16a2 2 0 0 1 2 2v6a10 10 0 0 1-10 10A10 10 0 0 1 2 11V5a2 2 0 0 1 2-2z\\\"></path><polyline points=\\\"8 10 12 14 16 10\\\"></polyline>\",\"power\":\"<path d=\\\"M18.36 6.64a9 9 0 1 1-12.73 0\\\"></path><line x1=\\\"12\\\" y1=\\\"2\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line>\",\"printer\":\"<polyline points=\\\"6 9 6 2 18 2 18 9\\\"></polyline><path d=\\\"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2\\\"></path><rect x=\\\"6\\\" y=\\\"14\\\" width=\\\"12\\\" height=\\\"8\\\"></rect>\",\"radio\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"2\\\"></circle><path d=\\\"M16.24 7.76a6 6 0 0 1 0 8.49m-8.48-.01a6 6 0 0 1 0-8.49m11.31-2.82a10 10 0 0 1 0 14.14m-14.14 0a10 10 0 0 1 0-14.14\\\"></path>\",\"refresh-ccw\":\"<polyline points=\\\"1 4 1 10 7 10\\\"></polyline><polyline points=\\\"23 20 23 14 17 14\\\"></polyline><path d=\\\"M20.49 9A9 9 0 0 0 5.64 5.64L1 10m22 4l-4.64 4.36A9 9 0 0 1 3.51 15\\\"></path>\",\"refresh-cw\":\"<polyline points=\\\"23 4 23 10 17 10\\\"></polyline><polyline points=\\\"1 20 1 14 7 14\\\"></polyline><path d=\\\"M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15\\\"></path>\",\"repeat\":\"<polyline points=\\\"17 1 21 5 17 9\\\"></polyline><path d=\\\"M3 11V9a4 4 0 0 1 4-4h14\\\"></path><polyline points=\\\"7 23 3 19 7 15\\\"></polyline><path d=\\\"M21 13v2a4 4 0 0 1-4 4H3\\\"></path>\",\"rewind\":\"<polygon points=\\\"11 19 2 12 11 5 11 19\\\"></polygon><polygon points=\\\"22 19 13 12 22 5 22 19\\\"></polygon>\",\"rotate-ccw\":\"<polyline points=\\\"1 4 1 10 7 10\\\"></polyline><path d=\\\"M3.51 15a9 9 0 1 0 2.13-9.36L1 10\\\"></path>\",\"rotate-cw\":\"<polyline points=\\\"23 4 23 10 17 10\\\"></polyline><path d=\\\"M20.49 15a9 9 0 1 1-2.12-9.36L23 10\\\"></path>\",\"rss\":\"<path d=\\\"M4 11a9 9 0 0 1 9 9\\\"></path><path d=\\\"M4 4a16 16 0 0 1 16 16\\\"></path><circle cx=\\\"5\\\" cy=\\\"19\\\" r=\\\"1\\\"></circle>\",\"save\":\"<path d=\\\"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z\\\"></path><polyline points=\\\"17 21 17 13 7 13 7 21\\\"></polyline><polyline points=\\\"7 3 7 8 15 8\\\"></polyline>\",\"scissors\":\"<circle cx=\\\"6\\\" cy=\\\"6\\\" r=\\\"3\\\"></circle><circle cx=\\\"6\\\" cy=\\\"18\\\" r=\\\"3\\\"></circle><line x1=\\\"20\\\" y1=\\\"4\\\" x2=\\\"8.12\\\" y2=\\\"15.88\\\"></line><line x1=\\\"14.47\\\" y1=\\\"14.48\\\" x2=\\\"20\\\" y2=\\\"20\\\"></line><line x1=\\\"8.12\\\" y1=\\\"8.12\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line>\",\"search\":\"<circle cx=\\\"11\\\" cy=\\\"11\\\" r=\\\"8\\\"></circle><line x1=\\\"21\\\" y1=\\\"21\\\" x2=\\\"16.65\\\" y2=\\\"16.65\\\"></line>\",\"send\":\"<line x1=\\\"22\\\" y1=\\\"2\\\" x2=\\\"11\\\" y2=\\\"13\\\"></line><polygon points=\\\"22 2 15 22 11 13 2 9 22 2\\\"></polygon>\",\"server\":\"<rect x=\\\"2\\\" y=\\\"2\\\" width=\\\"20\\\" height=\\\"8\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><rect x=\\\"2\\\" y=\\\"14\\\" width=\\\"20\\\" height=\\\"8\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"6\\\" y1=\\\"6\\\" x2=\\\"6.01\\\" y2=\\\"6\\\"></line><line x1=\\\"6\\\" y1=\\\"18\\\" x2=\\\"6.01\\\" y2=\\\"18\\\"></line>\",\"settings\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"3\\\"></circle><path d=\\\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z\\\"></path>\",\"share-2\":\"<circle cx=\\\"18\\\" cy=\\\"5\\\" r=\\\"3\\\"></circle><circle cx=\\\"6\\\" cy=\\\"12\\\" r=\\\"3\\\"></circle><circle cx=\\\"18\\\" cy=\\\"19\\\" r=\\\"3\\\"></circle><line x1=\\\"8.59\\\" y1=\\\"13.51\\\" x2=\\\"15.42\\\" y2=\\\"17.49\\\"></line><line x1=\\\"15.41\\\" y1=\\\"6.51\\\" x2=\\\"8.59\\\" y2=\\\"10.49\\\"></line>\",\"share\":\"<path d=\\\"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8\\\"></path><polyline points=\\\"16 6 12 2 8 6\\\"></polyline><line x1=\\\"12\\\" y1=\\\"2\\\" x2=\\\"12\\\" y2=\\\"15\\\"></line>\",\"shield-off\":\"<path d=\\\"M19.69 14a6.9 6.9 0 0 0 .31-2V5l-8-3-3.16 1.18\\\"></path><path d=\\\"M4.73 4.73L4 5v7c0 6 8 10 8 10a20.29 20.29 0 0 0 5.62-4.38\\\"></path><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line>\",\"shield\":\"<path d=\\\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\\\"></path>\",\"shopping-bag\":\"<path d=\\\"M6 2L3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z\\\"></path><line x1=\\\"3\\\" y1=\\\"6\\\" x2=\\\"21\\\" y2=\\\"6\\\"></line><path d=\\\"M16 10a4 4 0 0 1-8 0\\\"></path>\",\"shopping-cart\":\"<circle cx=\\\"9\\\" cy=\\\"21\\\" r=\\\"1\\\"></circle><circle cx=\\\"20\\\" cy=\\\"21\\\" r=\\\"1\\\"></circle><path d=\\\"M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6\\\"></path>\",\"shuffle\":\"<polyline points=\\\"16 3 21 3 21 8\\\"></polyline><line x1=\\\"4\\\" y1=\\\"20\\\" x2=\\\"21\\\" y2=\\\"3\\\"></line><polyline points=\\\"21 16 21 21 16 21\\\"></polyline><line x1=\\\"15\\\" y1=\\\"15\\\" x2=\\\"21\\\" y2=\\\"21\\\"></line><line x1=\\\"4\\\" y1=\\\"4\\\" x2=\\\"9\\\" y2=\\\"9\\\"></line>\",\"sidebar\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"9\\\" y1=\\\"3\\\" x2=\\\"9\\\" y2=\\\"21\\\"></line>\",\"skip-back\":\"<polygon points=\\\"19 20 9 12 19 4 19 20\\\"></polygon><line x1=\\\"5\\\" y1=\\\"19\\\" x2=\\\"5\\\" y2=\\\"5\\\"></line>\",\"skip-forward\":\"<polygon points=\\\"5 4 15 12 5 20 5 4\\\"></polygon><line x1=\\\"19\\\" y1=\\\"5\\\" x2=\\\"19\\\" y2=\\\"19\\\"></line>\",\"slack\":\"<path d=\\\"M14.5 10c-.83 0-1.5-.67-1.5-1.5v-5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5z\\\"></path><path d=\\\"M20.5 10H19V8.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5-.67 1.5-1.5 1.5z\\\"></path><path d=\\\"M9.5 14c.83 0 1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5S8 21.33 8 20.5v-5c0-.83.67-1.5 1.5-1.5z\\\"></path><path d=\\\"M3.5 14H5v1.5c0 .83-.67 1.5-1.5 1.5S2 16.33 2 15.5 2.67 14 3.5 14z\\\"></path><path d=\\\"M14 14.5c0-.83.67-1.5 1.5-1.5h5c.83 0 1.5.67 1.5 1.5s-.67 1.5-1.5 1.5h-5c-.83 0-1.5-.67-1.5-1.5z\\\"></path><path d=\\\"M15.5 19H14v1.5c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5-.67-1.5-1.5-1.5z\\\"></path><path d=\\\"M10 9.5C10 8.67 9.33 8 8.5 8h-5C2.67 8 2 8.67 2 9.5S2.67 11 3.5 11h5c.83 0 1.5-.67 1.5-1.5z\\\"></path><path d=\\\"M8.5 5H10V3.5C10 2.67 9.33 2 8.5 2S7 2.67 7 3.5 7.67 5 8.5 5z\\\"></path>\",\"slash\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"4.93\\\" y1=\\\"4.93\\\" x2=\\\"19.07\\\" y2=\\\"19.07\\\"></line>\",\"sliders\":\"<line x1=\\\"4\\\" y1=\\\"21\\\" x2=\\\"4\\\" y2=\\\"14\\\"></line><line x1=\\\"4\\\" y1=\\\"10\\\" x2=\\\"4\\\" y2=\\\"3\\\"></line><line x1=\\\"12\\\" y1=\\\"21\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"3\\\"></line><line x1=\\\"20\\\" y1=\\\"21\\\" x2=\\\"20\\\" y2=\\\"16\\\"></line><line x1=\\\"20\\\" y1=\\\"12\\\" x2=\\\"20\\\" y2=\\\"3\\\"></line><line x1=\\\"1\\\" y1=\\\"14\\\" x2=\\\"7\\\" y2=\\\"14\\\"></line><line x1=\\\"9\\\" y1=\\\"8\\\" x2=\\\"15\\\" y2=\\\"8\\\"></line><line x1=\\\"17\\\" y1=\\\"16\\\" x2=\\\"23\\\" y2=\\\"16\\\"></line>\",\"smartphone\":\"<rect x=\\\"5\\\" y=\\\"2\\\" width=\\\"14\\\" height=\\\"20\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"12\\\" y1=\\\"18\\\" x2=\\\"12.01\\\" y2=\\\"18\\\"></line>\",\"smile\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><path d=\\\"M8 14s1.5 2 4 2 4-2 4-2\\\"></path><line x1=\\\"9\\\" y1=\\\"9\\\" x2=\\\"9.01\\\" y2=\\\"9\\\"></line><line x1=\\\"15\\\" y1=\\\"9\\\" x2=\\\"15.01\\\" y2=\\\"9\\\"></line>\",\"speaker\":\"<rect x=\\\"4\\\" y=\\\"2\\\" width=\\\"16\\\" height=\\\"20\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><circle cx=\\\"12\\\" cy=\\\"14\\\" r=\\\"4\\\"></circle><line x1=\\\"12\\\" y1=\\\"6\\\" x2=\\\"12.01\\\" y2=\\\"6\\\"></line>\",\"square\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect>\",\"star\":\"<polygon points=\\\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\\\"></polygon>\",\"stop-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><rect x=\\\"9\\\" y=\\\"9\\\" width=\\\"6\\\" height=\\\"6\\\"></rect>\",\"sun\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"5\\\"></circle><line x1=\\\"12\\\" y1=\\\"1\\\" x2=\\\"12\\\" y2=\\\"3\\\"></line><line x1=\\\"12\\\" y1=\\\"21\\\" x2=\\\"12\\\" y2=\\\"23\\\"></line><line x1=\\\"4.22\\\" y1=\\\"4.22\\\" x2=\\\"5.64\\\" y2=\\\"5.64\\\"></line><line x1=\\\"18.36\\\" y1=\\\"18.36\\\" x2=\\\"19.78\\\" y2=\\\"19.78\\\"></line><line x1=\\\"1\\\" y1=\\\"12\\\" x2=\\\"3\\\" y2=\\\"12\\\"></line><line x1=\\\"21\\\" y1=\\\"12\\\" x2=\\\"23\\\" y2=\\\"12\\\"></line><line x1=\\\"4.22\\\" y1=\\\"19.78\\\" x2=\\\"5.64\\\" y2=\\\"18.36\\\"></line><line x1=\\\"18.36\\\" y1=\\\"5.64\\\" x2=\\\"19.78\\\" y2=\\\"4.22\\\"></line>\",\"sunrise\":\"<path d=\\\"M17 18a5 5 0 0 0-10 0\\\"></path><line x1=\\\"12\\\" y1=\\\"2\\\" x2=\\\"12\\\" y2=\\\"9\\\"></line><line x1=\\\"4.22\\\" y1=\\\"10.22\\\" x2=\\\"5.64\\\" y2=\\\"11.64\\\"></line><line x1=\\\"1\\\" y1=\\\"18\\\" x2=\\\"3\\\" y2=\\\"18\\\"></line><line x1=\\\"21\\\" y1=\\\"18\\\" x2=\\\"23\\\" y2=\\\"18\\\"></line><line x1=\\\"18.36\\\" y1=\\\"11.64\\\" x2=\\\"19.78\\\" y2=\\\"10.22\\\"></line><line x1=\\\"23\\\" y1=\\\"22\\\" x2=\\\"1\\\" y2=\\\"22\\\"></line><polyline points=\\\"8 6 12 2 16 6\\\"></polyline>\",\"sunset\":\"<path d=\\\"M17 18a5 5 0 0 0-10 0\\\"></path><line x1=\\\"12\\\" y1=\\\"9\\\" x2=\\\"12\\\" y2=\\\"2\\\"></line><line x1=\\\"4.22\\\" y1=\\\"10.22\\\" x2=\\\"5.64\\\" y2=\\\"11.64\\\"></line><line x1=\\\"1\\\" y1=\\\"18\\\" x2=\\\"3\\\" y2=\\\"18\\\"></line><line x1=\\\"21\\\" y1=\\\"18\\\" x2=\\\"23\\\" y2=\\\"18\\\"></line><line x1=\\\"18.36\\\" y1=\\\"11.64\\\" x2=\\\"19.78\\\" y2=\\\"10.22\\\"></line><line x1=\\\"23\\\" y1=\\\"22\\\" x2=\\\"1\\\" y2=\\\"22\\\"></line><polyline points=\\\"16 5 12 9 8 5\\\"></polyline>\",\"tablet\":\"<rect x=\\\"4\\\" y=\\\"2\\\" width=\\\"16\\\" height=\\\"20\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"12\\\" y1=\\\"18\\\" x2=\\\"12.01\\\" y2=\\\"18\\\"></line>\",\"tag\":\"<path d=\\\"M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z\\\"></path><line x1=\\\"7\\\" y1=\\\"7\\\" x2=\\\"7.01\\\" y2=\\\"7\\\"></line>\",\"target\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"6\\\"></circle><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"2\\\"></circle>\",\"terminal\":\"<polyline points=\\\"4 17 10 11 4 5\\\"></polyline><line x1=\\\"12\\\" y1=\\\"19\\\" x2=\\\"20\\\" y2=\\\"19\\\"></line>\",\"thermometer\":\"<path d=\\\"M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z\\\"></path>\",\"thumbs-down\":\"<path d=\\\"M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17\\\"></path>\",\"thumbs-up\":\"<path d=\\\"M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3\\\"></path>\",\"toggle-left\":\"<rect x=\\\"1\\\" y=\\\"5\\\" width=\\\"22\\\" height=\\\"14\\\" rx=\\\"7\\\" ry=\\\"7\\\"></rect><circle cx=\\\"8\\\" cy=\\\"12\\\" r=\\\"3\\\"></circle>\",\"toggle-right\":\"<rect x=\\\"1\\\" y=\\\"5\\\" width=\\\"22\\\" height=\\\"14\\\" rx=\\\"7\\\" ry=\\\"7\\\"></rect><circle cx=\\\"16\\\" cy=\\\"12\\\" r=\\\"3\\\"></circle>\",\"tool\":\"<path d=\\\"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z\\\"></path>\",\"trash-2\":\"<polyline points=\\\"3 6 5 6 21 6\\\"></polyline><path d=\\\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\\\"></path><line x1=\\\"10\\\" y1=\\\"11\\\" x2=\\\"10\\\" y2=\\\"17\\\"></line><line x1=\\\"14\\\" y1=\\\"11\\\" x2=\\\"14\\\" y2=\\\"17\\\"></line>\",\"trash\":\"<polyline points=\\\"3 6 5 6 21 6\\\"></polyline><path d=\\\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\\\"></path>\",\"trello\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><rect x=\\\"7\\\" y=\\\"7\\\" width=\\\"3\\\" height=\\\"9\\\"></rect><rect x=\\\"14\\\" y=\\\"7\\\" width=\\\"3\\\" height=\\\"5\\\"></rect>\",\"trending-down\":\"<polyline points=\\\"23 18 13.5 8.5 8.5 13.5 1 6\\\"></polyline><polyline points=\\\"17 18 23 18 23 12\\\"></polyline>\",\"trending-up\":\"<polyline points=\\\"23 6 13.5 15.5 8.5 10.5 1 18\\\"></polyline><polyline points=\\\"17 6 23 6 23 12\\\"></polyline>\",\"triangle\":\"<path d=\\\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\\\"></path>\",\"truck\":\"<rect x=\\\"1\\\" y=\\\"3\\\" width=\\\"15\\\" height=\\\"13\\\"></rect><polygon points=\\\"16 8 20 8 23 11 23 16 16 16 16 8\\\"></polygon><circle cx=\\\"5.5\\\" cy=\\\"18.5\\\" r=\\\"2.5\\\"></circle><circle cx=\\\"18.5\\\" cy=\\\"18.5\\\" r=\\\"2.5\\\"></circle>\",\"tv\":\"<rect x=\\\"2\\\" y=\\\"7\\\" width=\\\"20\\\" height=\\\"15\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><polyline points=\\\"17 2 12 7 7 2\\\"></polyline>\",\"twitch\":\"<path d=\\\"M21 2H3v16h5v4l4-4h5l4-4V2zm-10 9V7m5 4V7\\\"></path>\",\"twitter\":\"<path d=\\\"M23 3a10.9 10.9 0 0 1-3.14 1.53 4.48 4.48 0 0 0-7.86 3v1A10.66 10.66 0 0 1 3 4s-4 9 5 13a11.64 11.64 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0-.08-.83A7.72 7.72 0 0 0 23 3z\\\"></path>\",\"type\":\"<polyline points=\\\"4 7 4 4 20 4 20 7\\\"></polyline><line x1=\\\"9\\\" y1=\\\"20\\\" x2=\\\"15\\\" y2=\\\"20\\\"></line><line x1=\\\"12\\\" y1=\\\"4\\\" x2=\\\"12\\\" y2=\\\"20\\\"></line>\",\"umbrella\":\"<path d=\\\"M23 12a11.05 11.05 0 0 0-22 0zm-5 7a3 3 0 0 1-6 0v-7\\\"></path>\",\"underline\":\"<path d=\\\"M6 3v7a6 6 0 0 0 6 6 6 6 0 0 0 6-6V3\\\"></path><line x1=\\\"4\\\" y1=\\\"21\\\" x2=\\\"20\\\" y2=\\\"21\\\"></line>\",\"unlock\":\"<rect x=\\\"3\\\" y=\\\"11\\\" width=\\\"18\\\" height=\\\"11\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><path d=\\\"M7 11V7a5 5 0 0 1 9.9-1\\\"></path>\",\"upload-cloud\":\"<polyline points=\\\"16 16 12 12 8 16\\\"></polyline><line x1=\\\"12\\\" y1=\\\"12\\\" x2=\\\"12\\\" y2=\\\"21\\\"></line><path d=\\\"M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3\\\"></path><polyline points=\\\"16 16 12 12 8 16\\\"></polyline>\",\"upload\":\"<path d=\\\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\\\"></path><polyline points=\\\"17 8 12 3 7 8\\\"></polyline><line x1=\\\"12\\\" y1=\\\"3\\\" x2=\\\"12\\\" y2=\\\"15\\\"></line>\",\"user-check\":\"<path d=\\\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\\\"></path><circle cx=\\\"8.5\\\" cy=\\\"7\\\" r=\\\"4\\\"></circle><polyline points=\\\"17 11 19 13 23 9\\\"></polyline>\",\"user-minus\":\"<path d=\\\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\\\"></path><circle cx=\\\"8.5\\\" cy=\\\"7\\\" r=\\\"4\\\"></circle><line x1=\\\"23\\\" y1=\\\"11\\\" x2=\\\"17\\\" y2=\\\"11\\\"></line>\",\"user-plus\":\"<path d=\\\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\\\"></path><circle cx=\\\"8.5\\\" cy=\\\"7\\\" r=\\\"4\\\"></circle><line x1=\\\"20\\\" y1=\\\"8\\\" x2=\\\"20\\\" y2=\\\"14\\\"></line><line x1=\\\"23\\\" y1=\\\"11\\\" x2=\\\"17\\\" y2=\\\"11\\\"></line>\",\"user-x\":\"<path d=\\\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\\\"></path><circle cx=\\\"8.5\\\" cy=\\\"7\\\" r=\\\"4\\\"></circle><line x1=\\\"18\\\" y1=\\\"8\\\" x2=\\\"23\\\" y2=\\\"13\\\"></line><line x1=\\\"23\\\" y1=\\\"8\\\" x2=\\\"18\\\" y2=\\\"13\\\"></line>\",\"user\":\"<path d=\\\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\\\"></path><circle cx=\\\"12\\\" cy=\\\"7\\\" r=\\\"4\\\"></circle>\",\"users\":\"<path d=\\\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\\\"></path><circle cx=\\\"9\\\" cy=\\\"7\\\" r=\\\"4\\\"></circle><path d=\\\"M23 21v-2a4 4 0 0 0-3-3.87\\\"></path><path d=\\\"M16 3.13a4 4 0 0 1 0 7.75\\\"></path>\",\"video-off\":\"<path d=\\\"M16 16v1a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h2m5.66 0H14a2 2 0 0 1 2 2v3.34l1 1L23 7v10\\\"></path><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line>\",\"video\":\"<polygon points=\\\"23 7 16 12 23 17 23 7\\\"></polygon><rect x=\\\"1\\\" y=\\\"5\\\" width=\\\"15\\\" height=\\\"14\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect>\",\"voicemail\":\"<circle cx=\\\"5.5\\\" cy=\\\"11.5\\\" r=\\\"4.5\\\"></circle><circle cx=\\\"18.5\\\" cy=\\\"11.5\\\" r=\\\"4.5\\\"></circle><line x1=\\\"5.5\\\" y1=\\\"16\\\" x2=\\\"18.5\\\" y2=\\\"16\\\"></line>\",\"volume-1\":\"<polygon points=\\\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\\\"></polygon><path d=\\\"M15.54 8.46a5 5 0 0 1 0 7.07\\\"></path>\",\"volume-2\":\"<polygon points=\\\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\\\"></polygon><path d=\\\"M19.07 4.93a10 10 0 0 1 0 14.14M15.54 8.46a5 5 0 0 1 0 7.07\\\"></path>\",\"volume-x\":\"<polygon points=\\\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\\\"></polygon><line x1=\\\"23\\\" y1=\\\"9\\\" x2=\\\"17\\\" y2=\\\"15\\\"></line><line x1=\\\"17\\\" y1=\\\"9\\\" x2=\\\"23\\\" y2=\\\"15\\\"></line>\",\"volume\":\"<polygon points=\\\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\\\"></polygon>\",\"watch\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"7\\\"></circle><polyline points=\\\"12 9 12 12 13.5 13.5\\\"></polyline><path d=\\\"M16.51 17.35l-.35 3.83a2 2 0 0 1-2 1.82H9.83a2 2 0 0 1-2-1.82l-.35-3.83m.01-10.7l.35-3.83A2 2 0 0 1 9.83 1h4.35a2 2 0 0 1 2 1.82l.35 3.83\\\"></path>\",\"wifi-off\":\"<line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line><path d=\\\"M16.72 11.06A10.94 10.94 0 0 1 19 12.55\\\"></path><path d=\\\"M5 12.55a10.94 10.94 0 0 1 5.17-2.39\\\"></path><path d=\\\"M10.71 5.05A16 16 0 0 1 22.58 9\\\"></path><path d=\\\"M1.42 9a15.91 15.91 0 0 1 4.7-2.88\\\"></path><path d=\\\"M8.53 16.11a6 6 0 0 1 6.95 0\\\"></path><line x1=\\\"12\\\" y1=\\\"20\\\" x2=\\\"12.01\\\" y2=\\\"20\\\"></line>\",\"wifi\":\"<path d=\\\"M5 12.55a11 11 0 0 1 14.08 0\\\"></path><path d=\\\"M1.42 9a16 16 0 0 1 21.16 0\\\"></path><path d=\\\"M8.53 16.11a6 6 0 0 1 6.95 0\\\"></path><line x1=\\\"12\\\" y1=\\\"20\\\" x2=\\\"12.01\\\" y2=\\\"20\\\"></line>\",\"wind\":\"<path d=\\\"M9.59 4.59A2 2 0 1 1 11 8H2m10.59 11.41A2 2 0 1 0 14 16H2m15.73-8.27A2.5 2.5 0 1 1 19.5 12H2\\\"></path>\",\"x-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"15\\\" y1=\\\"9\\\" x2=\\\"9\\\" y2=\\\"15\\\"></line><line x1=\\\"9\\\" y1=\\\"9\\\" x2=\\\"15\\\" y2=\\\"15\\\"></line>\",\"x-octagon\":\"<polygon points=\\\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\\\"></polygon><line x1=\\\"15\\\" y1=\\\"9\\\" x2=\\\"9\\\" y2=\\\"15\\\"></line><line x1=\\\"9\\\" y1=\\\"9\\\" x2=\\\"15\\\" y2=\\\"15\\\"></line>\",\"x-square\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"9\\\" y1=\\\"9\\\" x2=\\\"15\\\" y2=\\\"15\\\"></line><line x1=\\\"15\\\" y1=\\\"9\\\" x2=\\\"9\\\" y2=\\\"15\\\"></line>\",\"x\":\"<line x1=\\\"18\\\" y1=\\\"6\\\" x2=\\\"6\\\" y2=\\\"18\\\"></line><line x1=\\\"6\\\" y1=\\\"6\\\" x2=\\\"18\\\" y2=\\\"18\\\"></line>\",\"youtube\":\"<path d=\\\"M22.54 6.42a2.78 2.78 0 0 0-1.94-2C18.88 4 12 4 12 4s-6.88 0-8.6.46a2.78 2.78 0 0 0-1.94 2A29 29 0 0 0 1 11.75a29 29 0 0 0 .46 5.33A2.78 2.78 0 0 0 3.4 19c1.72.46 8.6.46 8.6.46s6.88 0 8.6-.46a2.78 2.78 0 0 0 1.94-2 29 29 0 0 0 .46-5.25 29 29 0 0 0-.46-5.33z\\\"></path><polygon points=\\\"9.75 15.02 15.5 11.75 9.75 8.48 9.75 15.02\\\"></polygon>\",\"zap-off\":\"<polyline points=\\\"12.41 6.75 13 2 10.57 4.92\\\"></polyline><polyline points=\\\"18.57 12.91 21 10 15.66 10\\\"></polyline><polyline points=\\\"8 8 3 14 12 14 11 22 16 16\\\"></polyline><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line>\",\"zap\":\"<polygon points=\\\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\\\"></polygon>\",\"zoom-in\":\"<circle cx=\\\"11\\\" cy=\\\"11\\\" r=\\\"8\\\"></circle><line x1=\\\"21\\\" y1=\\\"21\\\" x2=\\\"16.65\\\" y2=\\\"16.65\\\"></line><line x1=\\\"11\\\" y1=\\\"8\\\" x2=\\\"11\\\" y2=\\\"14\\\"></line><line x1=\\\"8\\\" y1=\\\"11\\\" x2=\\\"14\\\" y2=\\\"11\\\"></line>\",\"zoom-out\":\"<circle cx=\\\"11\\\" cy=\\\"11\\\" r=\\\"8\\\"></circle><line x1=\\\"21\\\" y1=\\\"21\\\" x2=\\\"16.65\\\" y2=\\\"16.65\\\"></line><line x1=\\\"8\\\" y1=\\\"11\\\" x2=\\\"14\\\" y2=\\\"11\\\"></line>\"};\n\n/***/ }),\n\n/***/ \"./node_modules/classnames/dedupe.js\":\n/*!*******************************************!*\\\n !*** ./node_modules/classnames/dedupe.js ***!\n \\*******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n Copyright (c) 2016 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar classNames = (function () {\n\t\t// don't inherit from Object so we can skip hasOwnProperty check later\n\t\t// http://stackoverflow.com/questions/15518328/creating-js-object-with-object-createnull#answer-21079232\n\t\tfunction StorageObject() {}\n\t\tStorageObject.prototype = Object.create(null);\n\n\t\tfunction _parseArray (resultSet, array) {\n\t\t\tvar length = array.length;\n\n\t\t\tfor (var i = 0; i < length; ++i) {\n\t\t\t\t_parse(resultSet, array[i]);\n\t\t\t}\n\t\t}\n\n\t\tvar hasOwn = {}.hasOwnProperty;\n\n\t\tfunction _parseNumber (resultSet, num) {\n\t\t\tresultSet[num] = true;\n\t\t}\n\n\t\tfunction _parseObject (resultSet, object) {\n\t\t\tfor (var k in object) {\n\t\t\t\tif (hasOwn.call(object, k)) {\n\t\t\t\t\t// set value to false instead of deleting it to avoid changing object structure\n\t\t\t\t\t// https://www.smashingmagazine.com/2012/11/writing-fast-memory-efficient-javascript/#de-referencing-misconceptions\n\t\t\t\t\tresultSet[k] = !!object[k];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar SPACE = /\\s+/;\n\t\tfunction _parseString (resultSet, str) {\n\t\t\tvar array = str.split(SPACE);\n\t\t\tvar length = array.length;\n\n\t\t\tfor (var i = 0; i < length; ++i) {\n\t\t\t\tresultSet[array[i]] = true;\n\t\t\t}\n\t\t}\n\n\t\tfunction _parse (resultSet, arg) {\n\t\t\tif (!arg) return;\n\t\t\tvar argType = typeof arg;\n\n\t\t\t// 'foo bar'\n\t\t\tif (argType === 'string') {\n\t\t\t\t_parseString(resultSet, arg);\n\n\t\t\t// ['foo', 'bar', ...]\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\t_parseArray(resultSet, arg);\n\n\t\t\t// { 'foo': true, ... }\n\t\t\t} else if (argType === 'object') {\n\t\t\t\t_parseObject(resultSet, arg);\n\n\t\t\t// '130'\n\t\t\t} else if (argType === 'number') {\n\t\t\t\t_parseNumber(resultSet, arg);\n\t\t\t}\n\t\t}\n\n\t\tfunction _classNames () {\n\t\t\t// don't leak arguments\n\t\t\t// https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n\t\t\tvar len = arguments.length;\n\t\t\tvar args = Array(len);\n\t\t\tfor (var i = 0; i < len; i++) {\n\t\t\t\targs[i] = arguments[i];\n\t\t\t}\n\n\t\t\tvar classSet = new StorageObject();\n\t\t\t_parseArray(classSet, args);\n\n\t\t\tvar list = [];\n\n\t\t\tfor (var k in classSet) {\n\t\t\t\tif (classSet[k]) {\n\t\t\t\t\tlist.push(k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn list.join(' ');\n\t\t}\n\n\t\treturn _classNames;\n\t})();\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = classNames;\n\t} else if (true) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n\t\t\treturn classNames;\n\t\t}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {}\n}());\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/es/array/from.js\":\n/*!***********************************************!*\\\n !*** ./node_modules/core-js/es/array/from.js ***!\n \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(/*! ../../modules/es.string.iterator */ \"./node_modules/core-js/modules/es.string.iterator.js\");\n__webpack_require__(/*! ../../modules/es.array.from */ \"./node_modules/core-js/modules/es.array.from.js\");\nvar path = __webpack_require__(/*! ../../internals/path */ \"./node_modules/core-js/internals/path.js\");\n\nmodule.exports = path.Array.from;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/a-function.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/core-js/internals/a-function.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/an-object.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/an-object.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/array-from.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/core-js/internals/array-from.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar bind = __webpack_require__(/*! ../internals/bind-context */ \"./node_modules/core-js/internals/bind-context.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar callWithSafeIterationClosing = __webpack_require__(/*! ../internals/call-with-safe-iteration-closing */ \"./node_modules/core-js/internals/call-with-safe-iteration-closing.js\");\nvar isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ \"./node_modules/core-js/internals/is-array-iterator-method.js\");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\nvar createProperty = __webpack_require__(/*! ../internals/create-property */ \"./node_modules/core-js/internals/create-property.js\");\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \"./node_modules/core-js/internals/get-iterator-method.js\");\n\n// `Array.from` method\n// https://tc39.github.io/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iteratorMethod = getIteratorMethod(O);\n var length, result, step, iterator;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n result = new C();\n for (;!(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping\n ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true)\n : step.value\n );\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/array-includes.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/core-js/internals/array-includes.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js/internals/to-indexed-object.js\");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\nvar toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ \"./node_modules/core-js/internals/to-absolute-index.js\");\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\n// false -> Array#indexOf\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n// true -> Array#includes\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/bind-context.js\":\n/*!********************************************************!*\\\n !*** ./node_modules/core-js/internals/bind-context.js ***!\n \\********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar aFunction = __webpack_require__(/*! ../internals/a-function */ \"./node_modules/core-js/internals/a-function.js\");\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/call-with-safe-iteration-closing.js\":\n/*!****************************************************************************!*\\\n !*** ./node_modules/core-js/internals/call-with-safe-iteration-closing.js ***!\n \\****************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) anObject(returnMethod.call(iterator));\n throw error;\n }\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/check-correctness-of-iteration.js\":\n/*!**************************************************************************!*\\\n !*** ./node_modules/core-js/internals/check-correctness-of-iteration.js ***!\n \\**************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/classof-raw.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/core-js/internals/classof-raw.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/classof.js\":\n/*!***************************************************!*\\\n !*** ./node_modules/core-js/internals/classof.js ***!\n \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classofRaw = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/copy-constructor-properties.js\":\n/*!***********************************************************************!*\\\n !*** ./node_modules/core-js/internals/copy-constructor-properties.js ***!\n \\***********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar ownKeys = __webpack_require__(/*! ../internals/own-keys */ \"./node_modules/core-js/internals/own-keys.js\");\nvar getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \"./node_modules/core-js/internals/object-get-own-property-descriptor.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/correct-prototype-getter.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/core-js/internals/correct-prototype-getter.js ***!\n \\********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/create-iterator-constructor.js\":\n/*!***********************************************************************!*\\\n !*** ./node_modules/core-js/internals/create-iterator-constructor.js ***!\n \\***********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar IteratorPrototype = __webpack_require__(/*! ../internals/iterators-core */ \"./node_modules/core-js/internals/iterators-core.js\").IteratorPrototype;\nvar create = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js/internals/object-create.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js/internals/iterators.js\");\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/create-property-descriptor.js\":\n/*!**********************************************************************!*\\\n !*** ./node_modules/core-js/internals/create-property-descriptor.js ***!\n \\**********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/create-property.js\":\n/*!***********************************************************!*\\\n !*** ./node_modules/core-js/internals/create-property.js ***!\n \\***********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ \"./node_modules/core-js/internals/to-primitive.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/define-iterator.js\":\n/*!***********************************************************!*\\\n !*** ./node_modules/core-js/internals/define-iterator.js ***!\n \\***********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar createIteratorConstructor = __webpack_require__(/*! ../internals/create-iterator-constructor */ \"./node_modules/core-js/internals/create-iterator-constructor.js\");\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \"./node_modules/core-js/internals/object-get-prototype-of.js\");\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \"./node_modules/core-js/internals/object-set-prototype-of.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\nvar redefine = __webpack_require__(/*! ../internals/redefine */ \"./node_modules/core-js/internals/redefine.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js/internals/iterators.js\");\nvar IteratorsCore = __webpack_require__(/*! ../internals/iterators-core */ \"./node_modules/core-js/internals/iterators-core.js\");\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n hide(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n hide(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/descriptors.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/core-js/internals/descriptors.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/document-create-element.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/core-js/internals/document-create-element.js ***!\n \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar exist = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return exist ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/enum-bug-keys.js\":\n/*!*********************************************************!*\\\n !*** ./node_modules/core-js/internals/enum-bug-keys.js ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/export.js\":\n/*!**************************************************!*\\\n !*** ./node_modules/core-js/internals/export.js ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar getOwnPropertyDescriptor = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \"./node_modules/core-js/internals/object-get-own-property-descriptor.js\").f;\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\nvar redefine = __webpack_require__(/*! ../internals/redefine */ \"./node_modules/core-js/internals/redefine.js\");\nvar setGlobal = __webpack_require__(/*! ../internals/set-global */ \"./node_modules/core-js/internals/set-global.js\");\nvar copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ \"./node_modules/core-js/internals/copy-constructor-properties.js\");\nvar isForced = __webpack_require__(/*! ../internals/is-forced */ \"./node_modules/core-js/internals/is-forced.js\");\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n hide(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/fails.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/core-js/internals/fails.js ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/function-to-string.js\":\n/*!**************************************************************!*\\\n !*** ./node_modules/core-js/internals/function-to-string.js ***!\n \\**************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js/internals/shared.js\");\n\nmodule.exports = shared('native-function-to-string', Function.toString);\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/get-iterator-method.js\":\n/*!***************************************************************!*\\\n !*** ./node_modules/core-js/internals/get-iterator-method.js ***!\n \\***************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js/internals/classof.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js/internals/iterators.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/global.js\":\n/*!**************************************************!*\\\n !*** ./node_modules/core-js/internals/global.js ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {var O = 'object';\nvar check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == O && globalThis) ||\n check(typeof window == O && window) ||\n check(typeof self == O && self) ||\n check(typeof global == O && global) ||\n // eslint-disable-next-line no-new-func\n Function('return this')();\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/has.js\":\n/*!***********************************************!*\\\n !*** ./node_modules/core-js/internals/has.js ***!\n \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/hidden-keys.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/core-js/internals/hidden-keys.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/hide.js\":\n/*!************************************************!*\\\n !*** ./node_modules/core-js/internals/hide.js ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/html.js\":\n/*!************************************************!*\\\n !*** ./node_modules/core-js/internals/html.js ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\n\nvar document = global.document;\n\nmodule.exports = document && document.documentElement;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/ie8-dom-define.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/core-js/internals/ie8-dom-define.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar createElement = __webpack_require__(/*! ../internals/document-create-element */ \"./node_modules/core-js/internals/document-create-element.js\");\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/indexed-object.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/core-js/internals/indexed-object.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\n\nvar split = ''.split;\n\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/internal-state.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/core-js/internals/internal-state.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/native-weak-map */ \"./node_modules/core-js/internals/native-weak-map.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\nvar objectHas = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js/internals/shared-key.js\");\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js/internals/hidden-keys.js\");\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n hide(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/is-array-iterator-method.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/core-js/internals/is-array-iterator-method.js ***!\n \\********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js/internals/iterators.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/is-forced.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/is-forced.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/is-object.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/is-object.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/is-pure.js\":\n/*!***************************************************!*\\\n !*** ./node_modules/core-js/internals/is-pure.js ***!\n \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/iterators-core.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/core-js/internals/iterators-core.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \"./node_modules/core-js/internals/object-get-prototype-of.js\");\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/iterators.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/iterators.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/native-symbol.js\":\n/*!*********************************************************!*\\\n !*** ./node_modules/core-js/internals/native-symbol.js ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/native-weak-map.js\":\n/*!***********************************************************!*\\\n !*** ./node_modules/core-js/internals/native-weak-map.js ***!\n \\***********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar nativeFunctionToString = __webpack_require__(/*! ../internals/function-to-string */ \"./node_modules/core-js/internals/function-to-string.js\");\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap));\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-create.js\":\n/*!*********************************************************!*\\\n !*** ./node_modules/core-js/internals/object-create.js ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar defineProperties = __webpack_require__(/*! ../internals/object-define-properties */ \"./node_modules/core-js/internals/object-define-properties.js\");\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \"./node_modules/core-js/internals/enum-bug-keys.js\");\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js/internals/hidden-keys.js\");\nvar html = __webpack_require__(/*! ../internals/html */ \"./node_modules/core-js/internals/html.js\");\nvar documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ \"./node_modules/core-js/internals/document-create-element.js\");\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js/internals/shared-key.js\");\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar PROTOTYPE = 'prototype';\nvar Empty = function () { /* empty */ };\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var length = enumBugKeys.length;\n var lt = '<';\n var script = 'script';\n var gt = '>';\n var js = 'java' + script + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n iframe.src = String(js);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]];\n return createDict();\n};\n\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-define-properties.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-define-properties.js ***!\n \\********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar objectKeys = __webpack_require__(/*! ../internals/object-keys */ \"./node_modules/core-js/internals/object-keys.js\");\n\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var i = 0;\n var key;\n while (length > i) definePropertyModule.f(O, key = keys[i++], Properties[key]);\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-define-property.js\":\n/*!******************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-define-property.js ***!\n \\******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ \"./node_modules/core-js/internals/ie8-dom-define.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ \"./node_modules/core-js/internals/to-primitive.js\");\n\nvar nativeDefineProperty = Object.defineProperty;\n\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-get-own-property-descriptor.js\":\n/*!******************************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-get-own-property-descriptor.js ***!\n \\******************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ \"./node_modules/core-js/internals/object-property-is-enumerable.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js/internals/to-indexed-object.js\");\nvar toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ \"./node_modules/core-js/internals/to-primitive.js\");\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ \"./node_modules/core-js/internals/ie8-dom-define.js\");\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-get-own-property-names.js\":\n/*!*************************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-get-own-property-names.js ***!\n \\*************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ \"./node_modules/core-js/internals/object-keys-internal.js\");\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \"./node_modules/core-js/internals/enum-bug-keys.js\");\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-get-own-property-symbols.js\":\n/*!***************************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-get-own-property-symbols.js ***!\n \\***************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-get-prototype-of.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-get-prototype-of.js ***!\n \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js/internals/shared-key.js\");\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(/*! ../internals/correct-prototype-getter */ \"./node_modules/core-js/internals/correct-prototype-getter.js\");\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-keys-internal.js\":\n/*!****************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-keys-internal.js ***!\n \\****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js/internals/to-indexed-object.js\");\nvar arrayIncludes = __webpack_require__(/*! ../internals/array-includes */ \"./node_modules/core-js/internals/array-includes.js\");\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js/internals/hidden-keys.js\");\n\nvar arrayIndexOf = arrayIncludes(false);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-keys.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/core-js/internals/object-keys.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ \"./node_modules/core-js/internals/object-keys-internal.js\");\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \"./node_modules/core-js/internals/enum-bug-keys.js\");\n\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-property-is-enumerable.js\":\n/*!*************************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-property-is-enumerable.js ***!\n \\*************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-set-prototype-of.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-set-prototype-of.js ***!\n \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar validateSetPrototypeOfArguments = __webpack_require__(/*! ../internals/validate-set-prototype-of-arguments */ \"./node_modules/core-js/internals/validate-set-prototype-of-arguments.js\");\n\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var correctSetter = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n correctSetter = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n validateSetPrototypeOfArguments(O, proto);\n if (correctSetter) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/own-keys.js\":\n/*!****************************************************!*\\\n !*** ./node_modules/core-js/internals/own-keys.js ***!\n \\****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ \"./node_modules/core-js/internals/object-get-own-property-names.js\");\nvar getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ \"./node_modules/core-js/internals/object-get-own-property-symbols.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\n\nvar Reflect = global.Reflect;\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/path.js\":\n/*!************************************************!*\\\n !*** ./node_modules/core-js/internals/path.js ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/redefine.js\":\n/*!****************************************************!*\\\n !*** ./node_modules/core-js/internals/redefine.js ***!\n \\****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js/internals/shared.js\");\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar setGlobal = __webpack_require__(/*! ../internals/set-global */ \"./node_modules/core-js/internals/set-global.js\");\nvar nativeFunctionToString = __webpack_require__(/*! ../internals/function-to-string */ \"./node_modules/core-js/internals/function-to-string.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(nativeFunctionToString).split('toString');\n\nshared('inspectSource', function (it) {\n return nativeFunctionToString.call(it);\n});\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) hide(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else hide(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this);\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/require-object-coercible.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/core-js/internals/require-object-coercible.js ***!\n \\********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/set-global.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/core-js/internals/set-global.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\n\nmodule.exports = function (key, value) {\n try {\n hide(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/set-to-string-tag.js\":\n/*!*************************************************************!*\\\n !*** ./node_modules/core-js/internals/set-to-string-tag.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineProperty = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\").f;\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/shared-key.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/core-js/internals/shared-key.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js/internals/shared.js\");\nvar uid = __webpack_require__(/*! ../internals/uid */ \"./node_modules/core-js/internals/uid.js\");\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/shared.js\":\n/*!**************************************************!*\\\n !*** ./node_modules/core-js/internals/shared.js ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar setGlobal = __webpack_require__(/*! ../internals/set-global */ \"./node_modules/core-js/internals/set-global.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.1.3',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/string-at.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/string-at.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(/*! ../internals/to-integer */ \"./node_modules/core-js/internals/to-integer.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\n\n// CONVERT_TO_STRING: true -> String#at\n// CONVERT_TO_STRING: false -> String#codePointAt\nmodule.exports = function (that, pos, CONVERT_TO_STRING) {\n var S = String(requireObjectCoercible(that));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/to-absolute-index.js\":\n/*!*************************************************************!*\\\n !*** ./node_modules/core-js/internals/to-absolute-index.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(/*! ../internals/to-integer */ \"./node_modules/core-js/internals/to-integer.js\");\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(length, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/to-indexed-object.js\":\n/*!*************************************************************!*\\\n !*** ./node_modules/core-js/internals/to-indexed-object.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ \"./node_modules/core-js/internals/indexed-object.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/to-integer.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/core-js/internals/to-integer.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/to-length.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/to-length.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(/*! ../internals/to-integer */ \"./node_modules/core-js/internals/to-integer.js\");\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/to-object.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/to-object.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/to-primitive.js\":\n/*!********************************************************!*\\\n !*** ./node_modules/core-js/internals/to-primitive.js ***!\n \\********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/uid.js\":\n/*!***********************************************!*\\\n !*** ./node_modules/core-js/internals/uid.js ***!\n \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + postfix).toString(36));\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/validate-set-prototype-of-arguments.js\":\n/*!*******************************************************************************!*\\\n !*** ./node_modules/core-js/internals/validate-set-prototype-of-arguments.js ***!\n \\*******************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\n\nmodule.exports = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) {\n throw TypeError(\"Can't set \" + String(proto) + ' as a prototype');\n }\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/well-known-symbol.js\":\n/*!*************************************************************!*\\\n !*** ./node_modules/core-js/internals/well-known-symbol.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js/internals/shared.js\");\nvar uid = __webpack_require__(/*! ../internals/uid */ \"./node_modules/core-js/internals/uid.js\");\nvar NATIVE_SYMBOL = __webpack_require__(/*! ../internals/native-symbol */ \"./node_modules/core-js/internals/native-symbol.js\");\n\nvar Symbol = global.Symbol;\nvar store = shared('wks');\n\nmodule.exports = function (name) {\n return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name]\n || (NATIVE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/modules/es.array.from.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/core-js/modules/es.array.from.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar from = __webpack_require__(/*! ../internals/array-from */ \"./node_modules/core-js/internals/array-from.js\");\nvar checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ \"./node_modules/core-js/internals/check-correctness-of-iteration.js\");\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.github.io/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/modules/es.string.iterator.js\":\n/*!************************************************************!*\\\n !*** ./node_modules/core-js/modules/es.string.iterator.js ***!\n \\************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar codePointAt = __webpack_require__(/*! ../internals/string-at */ \"./node_modules/core-js/internals/string-at.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\nvar defineIterator = __webpack_require__(/*! ../internals/define-iterator */ \"./node_modules/core-js/internals/define-iterator.js\");\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = codePointAt(string, index, true);\n state.index += point.length;\n return { value: point, done: false };\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/webpack/buildin/global.js\":\n/*!***********************************!*\\\n !*** (webpack)/buildin/global.js ***!\n \\***********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif (typeof window === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n\n/***/ \"./src/default-attrs.json\":\n/*!********************************!*\\\n !*** ./src/default-attrs.json ***!\n \\********************************/\n/*! exports provided: xmlns, width, height, viewBox, fill, stroke, stroke-width, stroke-linecap, stroke-linejoin, default */\n/***/ (function(module) {\n\nmodule.exports = {\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":24,\"height\":24,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"stroke-width\":2,\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"};\n\n/***/ }),\n\n/***/ \"./src/icon.js\":\n/*!*********************!*\\\n !*** ./src/icon.js ***!\n \\*********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _dedupe = __webpack_require__(/*! classnames/dedupe */ \"./node_modules/classnames/dedupe.js\");\n\nvar _dedupe2 = _interopRequireDefault(_dedupe);\n\nvar _defaultAttrs = __webpack_require__(/*! ./default-attrs.json */ \"./src/default-attrs.json\");\n\nvar _defaultAttrs2 = _interopRequireDefault(_defaultAttrs);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Icon = function () {\n function Icon(name, contents) {\n var tags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n _classCallCheck(this, Icon);\n\n this.name = name;\n this.contents = contents;\n this.tags = tags;\n this.attrs = _extends({}, _defaultAttrs2.default, { class: 'feather feather-' + name });\n }\n\n /**\n * Create an SVG string.\n * @param {Object} attrs\n * @returns {string}\n */\n\n\n _createClass(Icon, [{\n key: 'toSvg',\n value: function toSvg() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var combinedAttrs = _extends({}, this.attrs, attrs, { class: (0, _dedupe2.default)(this.attrs.class, attrs.class) });\n\n return '<svg ' + attrsToString(combinedAttrs) + '>' + this.contents + '</svg>';\n }\n\n /**\n * Return string representation of an `Icon`.\n *\n * Added for backward compatibility. If old code expects `feather.icons.<name>`\n * to be a string, `toString()` will get implicitly called.\n *\n * @returns {string}\n */\n\n }, {\n key: 'toString',\n value: function toString() {\n return this.contents;\n }\n }]);\n\n return Icon;\n}();\n\n/**\n * Convert attributes object to string of HTML attributes.\n * @param {Object} attrs\n * @returns {string}\n */\n\n\nfunction attrsToString(attrs) {\n return Object.keys(attrs).map(function (key) {\n return key + '=\"' + attrs[key] + '\"';\n }).join(' ');\n}\n\nexports.default = Icon;\n\n/***/ }),\n\n/***/ \"./src/icons.js\":\n/*!**********************!*\\\n !*** ./src/icons.js ***!\n \\**********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _icon = __webpack_require__(/*! ./icon */ \"./src/icon.js\");\n\nvar _icon2 = _interopRequireDefault(_icon);\n\nvar _icons = __webpack_require__(/*! ../dist/icons.json */ \"./dist/icons.json\");\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nvar _tags = __webpack_require__(/*! ./tags.json */ \"./src/tags.json\");\n\nvar _tags2 = _interopRequireDefault(_tags);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = Object.keys(_icons2.default).map(function (key) {\n return new _icon2.default(key, _icons2.default[key], _tags2.default[key]);\n}).reduce(function (object, icon) {\n object[icon.name] = icon;\n return object;\n}, {});\n\n/***/ }),\n\n/***/ \"./src/index.js\":\n/*!**********************!*\\\n !*** ./src/index.js ***!\n \\**********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _icons = __webpack_require__(/*! ./icons */ \"./src/icons.js\");\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nvar _toSvg = __webpack_require__(/*! ./to-svg */ \"./src/to-svg.js\");\n\nvar _toSvg2 = _interopRequireDefault(_toSvg);\n\nvar _replace = __webpack_require__(/*! ./replace */ \"./src/replace.js\");\n\nvar _replace2 = _interopRequireDefault(_replace);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = { icons: _icons2.default, toSvg: _toSvg2.default, replace: _replace2.default };\n\n/***/ }),\n\n/***/ \"./src/replace.js\":\n/*!************************!*\\\n !*** ./src/replace.js ***!\n \\************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /* eslint-env browser */\n\n\nvar _dedupe = __webpack_require__(/*! classnames/dedupe */ \"./node_modules/classnames/dedupe.js\");\n\nvar _dedupe2 = _interopRequireDefault(_dedupe);\n\nvar _icons = __webpack_require__(/*! ./icons */ \"./src/icons.js\");\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Replace all HTML elements that have a `data-feather` attribute with SVG markup\n * corresponding to the element's `data-feather` attribute value.\n * @param {Object} attrs\n */\nfunction replace() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (typeof document === 'undefined') {\n throw new Error('`feather.replace()` only works in a browser environment.');\n }\n\n var elementsToReplace = document.querySelectorAll('[data-feather]');\n\n Array.from(elementsToReplace).forEach(function (element) {\n return replaceElement(element, attrs);\n });\n}\n\n/**\n * Replace a single HTML element with SVG markup\n * corresponding to the element's `data-feather` attribute value.\n * @param {HTMLElement} element\n * @param {Object} attrs\n */\nfunction replaceElement(element) {\n var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var elementAttrs = getAttrs(element);\n var name = elementAttrs['data-feather'];\n delete elementAttrs['data-feather'];\n\n var svgString = _icons2.default[name].toSvg(_extends({}, attrs, elementAttrs, { class: (0, _dedupe2.default)(attrs.class, elementAttrs.class) }));\n var svgDocument = new DOMParser().parseFromString(svgString, 'image/svg+xml');\n var svgElement = svgDocument.querySelector('svg');\n\n element.parentNode.replaceChild(svgElement, element);\n}\n\n/**\n * Get the attributes of an HTML element.\n * @param {HTMLElement} element\n * @returns {Object}\n */\nfunction getAttrs(element) {\n return Array.from(element.attributes).reduce(function (attrs, attr) {\n attrs[attr.name] = attr.value;\n return attrs;\n }, {});\n}\n\nexports.default = replace;\n\n/***/ }),\n\n/***/ \"./src/tags.json\":\n/*!***********************!*\\\n !*** ./src/tags.json ***!\n \\***********************/\n/*! exports provided: activity, airplay, alert-circle, alert-octagon, alert-triangle, at-sign, award, aperture, bell, bell-off, bluetooth, book-open, book, bookmark, briefcase, clipboard, clock, cloud-drizzle, cloud-lightning, cloud-rain, cloud-snow, cloud, codepen, codesandbox, coffee, command, compass, copy, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, credit-card, crop, crosshair, database, delete, disc, dollar-sign, droplet, edit, edit-2, edit-3, eye, eye-off, external-link, facebook, fast-forward, figma, film, folder-minus, folder-plus, folder, framer, frown, gift, git-branch, git-commit, git-merge, git-pull-request, github, gitlab, global, hard-drive, hash, headphones, heart, help-circle, hexagon, home, image, inbox, instagram, key, life-bouy, linkedin, lock, log-in, log-out, mail, map-pin, map, maximize, maximize-2, meh, menu, message-circle, message-square, mic-off, mic, minimize, minimize-2, monitor, moon, more-horizontal, more-vertical, mouse-pointer, move, navigation, navigation-2, octagon, package, paperclip, pause, pause-circle, pen-tool, play, play-circle, plus, plus-circle, plus-square, pocket, power, radio, rewind, rss, save, search, send, settings, shield, shield-off, shopping-bag, shopping-cart, shuffle, skip-back, skip-forward, slash, sliders, smile, speaker, star, sun, sunrise, sunset, tag, target, terminal, thumbs-down, thumbs-up, toggle-left, toggle-right, trash, trash-2, triangle, truck, twitter, umbrella, video-off, video, voicemail, volume, volume-1, volume-2, volume-x, watch, wind, x-circle, x-octagon, x-square, x, youtube, zap-off, zap, default */\n/***/ (function(module) {\n\nmodule.exports = {\"activity\":[\"pulse\",\"health\",\"action\",\"motion\"],\"airplay\":[\"stream\",\"cast\",\"mirroring\"],\"alert-circle\":[\"warning\"],\"alert-octagon\":[\"warning\"],\"alert-triangle\":[\"warning\"],\"at-sign\":[\"mention\"],\"award\":[\"achievement\",\"badge\"],\"aperture\":[\"camera\",\"photo\"],\"bell\":[\"alarm\",\"notification\"],\"bell-off\":[\"alarm\",\"notification\",\"silent\"],\"bluetooth\":[\"wireless\"],\"book-open\":[\"read\"],\"book\":[\"read\",\"dictionary\",\"booklet\",\"magazine\"],\"bookmark\":[\"read\",\"clip\",\"marker\",\"tag\"],\"briefcase\":[\"work\",\"bag\",\"baggage\",\"folder\"],\"clipboard\":[\"copy\"],\"clock\":[\"time\",\"watch\",\"alarm\"],\"cloud-drizzle\":[\"weather\",\"shower\"],\"cloud-lightning\":[\"weather\",\"bolt\"],\"cloud-rain\":[\"weather\"],\"cloud-snow\":[\"weather\",\"blizzard\"],\"cloud\":[\"weather\"],\"codepen\":[\"logo\"],\"codesandbox\":[\"logo\"],\"coffee\":[\"drink\",\"cup\",\"mug\",\"tea\",\"cafe\",\"hot\",\"beverage\"],\"command\":[\"keyboard\",\"cmd\"],\"compass\":[\"navigation\",\"safari\",\"travel\"],\"copy\":[\"clone\",\"duplicate\"],\"corner-down-left\":[\"arrow\"],\"corner-down-right\":[\"arrow\"],\"corner-left-down\":[\"arrow\"],\"corner-left-up\":[\"arrow\"],\"corner-right-down\":[\"arrow\"],\"corner-right-up\":[\"arrow\"],\"corner-up-left\":[\"arrow\"],\"corner-up-right\":[\"arrow\"],\"credit-card\":[\"purchase\",\"payment\",\"cc\"],\"crop\":[\"photo\",\"image\"],\"crosshair\":[\"aim\",\"target\"],\"database\":[\"storage\"],\"delete\":[\"remove\"],\"disc\":[\"album\",\"cd\",\"dvd\",\"music\"],\"dollar-sign\":[\"currency\",\"money\",\"payment\"],\"droplet\":[\"water\"],\"edit\":[\"pencil\",\"change\"],\"edit-2\":[\"pencil\",\"change\"],\"edit-3\":[\"pencil\",\"change\"],\"eye\":[\"view\",\"watch\"],\"eye-off\":[\"view\",\"watch\"],\"external-link\":[\"outbound\"],\"facebook\":[\"logo\"],\"fast-forward\":[\"music\"],\"figma\":[\"logo\",\"design\",\"tool\"],\"film\":[\"movie\",\"video\"],\"folder-minus\":[\"directory\"],\"folder-plus\":[\"directory\"],\"folder\":[\"directory\"],\"framer\":[\"logo\",\"design\",\"tool\"],\"frown\":[\"emoji\",\"face\",\"bad\",\"sad\",\"emotion\"],\"gift\":[\"present\",\"box\",\"birthday\",\"party\"],\"git-branch\":[\"code\",\"version control\"],\"git-commit\":[\"code\",\"version control\"],\"git-merge\":[\"code\",\"version control\"],\"git-pull-request\":[\"code\",\"version control\"],\"github\":[\"logo\",\"version control\"],\"gitlab\":[\"logo\",\"version control\"],\"global\":[\"world\",\"browser\",\"language\",\"translate\"],\"hard-drive\":[\"computer\",\"server\"],\"hash\":[\"hashtag\",\"number\",\"pound\"],\"headphones\":[\"music\",\"audio\"],\"heart\":[\"like\",\"love\"],\"help-circle\":[\"question mark\"],\"hexagon\":[\"shape\",\"node.js\",\"logo\"],\"home\":[\"house\"],\"image\":[\"picture\"],\"inbox\":[\"email\"],\"instagram\":[\"logo\",\"camera\"],\"key\":[\"password\",\"login\",\"authentication\"],\"life-bouy\":[\"help\",\"life ring\",\"support\"],\"linkedin\":[\"logo\"],\"lock\":[\"security\",\"password\"],\"log-in\":[\"sign in\",\"arrow\"],\"log-out\":[\"sign out\",\"arrow\"],\"mail\":[\"email\"],\"map-pin\":[\"location\",\"navigation\",\"travel\",\"marker\"],\"map\":[\"location\",\"navigation\",\"travel\"],\"maximize\":[\"fullscreen\"],\"maximize-2\":[\"fullscreen\",\"arrows\"],\"meh\":[\"emoji\",\"face\",\"neutral\",\"emotion\"],\"menu\":[\"bars\",\"navigation\",\"hamburger\"],\"message-circle\":[\"comment\",\"chat\"],\"message-square\":[\"comment\",\"chat\"],\"mic-off\":[\"record\"],\"mic\":[\"record\"],\"minimize\":[\"exit fullscreen\"],\"minimize-2\":[\"exit fullscreen\",\"arrows\"],\"monitor\":[\"tv\"],\"moon\":[\"dark\",\"night\"],\"more-horizontal\":[\"ellipsis\"],\"more-vertical\":[\"ellipsis\"],\"mouse-pointer\":[\"arrow\",\"cursor\"],\"move\":[\"arrows\"],\"navigation\":[\"location\",\"travel\"],\"navigation-2\":[\"location\",\"travel\"],\"octagon\":[\"stop\"],\"package\":[\"box\"],\"paperclip\":[\"attachment\"],\"pause\":[\"music\",\"stop\"],\"pause-circle\":[\"music\",\"stop\"],\"pen-tool\":[\"vector\",\"drawing\"],\"play\":[\"music\",\"start\"],\"play-circle\":[\"music\",\"start\"],\"plus\":[\"add\",\"new\"],\"plus-circle\":[\"add\",\"new\"],\"plus-square\":[\"add\",\"new\"],\"pocket\":[\"logo\",\"save\"],\"power\":[\"on\",\"off\"],\"radio\":[\"signal\"],\"rewind\":[\"music\"],\"rss\":[\"feed\",\"subscribe\"],\"save\":[\"floppy disk\"],\"search\":[\"find\",\"magnifier\",\"magnifying glass\"],\"send\":[\"message\",\"mail\",\"paper airplane\"],\"settings\":[\"cog\",\"edit\",\"gear\",\"preferences\"],\"shield\":[\"security\"],\"shield-off\":[\"security\"],\"shopping-bag\":[\"ecommerce\",\"cart\",\"purchase\",\"store\"],\"shopping-cart\":[\"ecommerce\",\"cart\",\"purchase\",\"store\"],\"shuffle\":[\"music\"],\"skip-back\":[\"music\"],\"skip-forward\":[\"music\"],\"slash\":[\"ban\",\"no\"],\"sliders\":[\"settings\",\"controls\"],\"smile\":[\"emoji\",\"face\",\"happy\",\"good\",\"emotion\"],\"speaker\":[\"music\"],\"star\":[\"bookmark\",\"favorite\",\"like\"],\"sun\":[\"brightness\",\"weather\",\"light\"],\"sunrise\":[\"weather\"],\"sunset\":[\"weather\"],\"tag\":[\"label\"],\"target\":[\"bullseye\"],\"terminal\":[\"code\",\"command line\"],\"thumbs-down\":[\"dislike\",\"bad\"],\"thumbs-up\":[\"like\",\"good\"],\"toggle-left\":[\"on\",\"off\",\"switch\"],\"toggle-right\":[\"on\",\"off\",\"switch\"],\"trash\":[\"garbage\",\"delete\",\"remove\"],\"trash-2\":[\"garbage\",\"delete\",\"remove\"],\"triangle\":[\"delta\"],\"truck\":[\"delivery\",\"van\",\"shipping\"],\"twitter\":[\"logo\"],\"umbrella\":[\"rain\",\"weather\"],\"video-off\":[\"camera\",\"movie\",\"film\"],\"video\":[\"camera\",\"movie\",\"film\"],\"voicemail\":[\"phone\"],\"volume\":[\"music\",\"sound\",\"mute\"],\"volume-1\":[\"music\",\"sound\"],\"volume-2\":[\"music\",\"sound\"],\"volume-x\":[\"music\",\"sound\",\"mute\"],\"watch\":[\"clock\",\"time\"],\"wind\":[\"weather\",\"air\"],\"x-circle\":[\"cancel\",\"close\",\"delete\",\"remove\",\"times\"],\"x-octagon\":[\"delete\",\"stop\",\"alert\",\"warning\",\"times\"],\"x-square\":[\"cancel\",\"close\",\"delete\",\"remove\",\"times\"],\"x\":[\"cancel\",\"close\",\"delete\",\"remove\",\"times\"],\"youtube\":[\"logo\",\"video\",\"play\"],\"zap-off\":[\"flash\",\"camera\",\"lightning\"],\"zap\":[\"flash\",\"camera\",\"lightning\"]};\n\n/***/ }),\n\n/***/ \"./src/to-svg.js\":\n/*!***********************!*\\\n !*** ./src/to-svg.js ***!\n \\***********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _icons = __webpack_require__(/*! ./icons */ \"./src/icons.js\");\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Create an SVG string.\n * @deprecated\n * @param {string} name\n * @param {Object} attrs\n * @returns {string}\n */\nfunction toSvg(name) {\n var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n console.warn('feather.toSvg() is deprecated. Please use feather.icons[name].toSvg() instead.');\n\n if (!name) {\n throw new Error('The required `key` (icon name) parameter is missing.');\n }\n\n if (!_icons2.default[name]) {\n throw new Error('No icon matching \\'' + name + '\\'. See the complete list of icons at https://feathericons.com');\n }\n\n return _icons2.default[name].toSvg(attrs);\n}\n\nexports.default = toSvg;\n\n/***/ }),\n\n/***/ 0:\n/*!**************************************************!*\\\n !*** multi core-js/es/array/from ./src/index.js ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(/*! core-js/es/array/from */\"./node_modules/core-js/es/array/from.js\");\nmodule.exports = __webpack_require__(/*! /home/travis/build/feathericons/feather/src/index.js */\"./src/index.js\");\n\n\n/***/ })\n\n/******/ });\n});\n//# sourceMappingURL=feather.js.map","import feather from \"feather-icons\";\nconst getIcon = (icon, size) => feather.icons[icon].toSvg({height:size||\"16\", width:size||\"16\"});\nexport default getIcon;","<script>\nimport getIcon from \"./icon\";\n\nexport let size = 18;\nexport let icon = \"\";\nexport let style = \"\";\nexport let color = \"var(--secondary100)\";\nexport let hoverColor = \"var(--secondary75)\";\nexport let attributes = {};\n\nlet currentAttributes = [];\nconst addAttributes = (node, attributes) => {\n\n const add = (_attributes) => {\n const attrs = [];\n for(let attr in _attributes) {\n node.setAttribute(attr, _attributes[attr]);\n attrs.push(\"uk-toggle\")\n }\n currentAttributes = attrs;\n }\n\n add(attributes);\n\n return {\n // should implement update method\n update(attributes) {\n for(let attr of currentAttributes) {\n node.removeAttribute(attr)\n }\n add(attributes);\n },\n destroy() {}\n }\n}\n\n</script>\n\n<button style=\"{style}{style ? \";\" : \"\"} color:{color}; --hovercolor:{hoverColor}\"\n on:click\n use:addAttributes={attributes}>\n {@html getIcon(icon, size)}\n</button>\n\n\n<style>\n\nbutton {\n border-style: none;\n background-color: rgba(0,0,0,0);\n cursor: pointer;\n outline:none;\n}\n\nbutton:hover {\n color: var(--hovercolor);\n}\n\nbutton:active {\n outline:none;\n}\n\n</style>","<script>\n\nimport { \n last, \n sortBy, \n filter, \n map,\n uniqWith,\n isEqual,\n trimCharsStart,\n trimChars,\n join,\n includes\n} from \"lodash/fp\";\n\nimport { pipe } from \"../common/core\";\nimport getIcon from \"../common/icon\";\nimport { store } from \"../builderStore\";\n\nexport let components = []\nexport let thisLevel = \"\";\n\nlet pathPartsThisLevel;\nlet componentsThisLevel;\nlet subfolders;\n\nlet expandedFolders = [];\n\nconst joinPath = join(\"/\");\n\nconst normalizedName = name => pipe(name, [\n trimCharsStart(\"./\"),\n trimCharsStart(\"~/\"),\n trimCharsStart(\"../\"),\n trimChars(\" \")\n ]);\n\n\nconst isOnThisLevel = (c) => \n normalizedName(c.name).split(\"/\").length === pathPartsThisLevel\n &&\n (!thisLevel || normalizedName(c.name).startsWith(normalizedName(thisLevel)));\n\nconst notOnThisLevel = (c) => !isOnThisLevel(c);\n\nconst isInSubfolder = (subfolder, c) => \n normalizedName(c.name).startsWith(\n trimCharsStart(\"/\")(\n joinPath([thisLevel, subfolder])));\n\nconst isOnNextLevel = (c) => \n normalizedName(c.name).split(\"/\").length === pathPartsThisLevel + 1\n\nconst lastPartOfName = (c) => \n last(c.name.split(\"/\"))\n\nconst subFolder = (c) => {\n const cname = normalizedName(c.name);\n const folderName = cname.substring(thisLevel.length, cname.length).split(\"/\")[0];\n\n return ({\n name: folderName,\n isExpanded: includes(folderName)(expandedFolders),\n path: thisLevel + \"/\" + folderName\n });\n}\n\nconst subComponents = (subfolder) => pipe(components, [\n filter(c => isInSubfolder(subfolder, c))\n ]);\n\nconst expandFolder = folder => {\n const expandedFolder = {...folder};\n if(expandedFolder.isExpanded) {\n expandedFolder.isExpanded = false;\n expandedFolders = filter(f => f.name !== folder.name)(expandedFolders);\n } else {\n expandedFolder.isExpanded = true;\n expandedFolders.push(folder.name);\n }\n const newFolders = [...subfolders];\n newFolders.splice(\n newFolders.indexOf(folder),\n 1,\n expandedFolder);\n subfolders = newFolders;\n \n}\n\nconst isComponentSelected = (type, current,c) =>\n type===\"component\"\n && current \n && current.name === c.name\n\nconst isFolderSelected = (current, folder) => \n isInSubfolder(current, folder)\n\n\n\n$: {\n pathPartsThisLevel = !thisLevel \n ? 1\n : normalizedName(thisLevel).split(\"/\").length + 1;\n\n componentsThisLevel = \n pipe(components, [\n filter(isOnThisLevel),\n map(c => ({component:c, title:lastPartOfName(c)})),\n sortBy(\"title\")\n ]);\n\n subfolders = \n pipe(components, [\n filter(notOnThisLevel),\n sortBy(\"name\"),\n map(subFolder),\n uniqWith((f1,f2) => f1.path === f2.path)\n ]);\n}\n\n</script>\n\n<div class=\"root\" style={`padding-left: calc(10px * ${pathPartsThisLevel})`}>\n \n {#each subfolders as folder}\n <div class=\"hierarchy-item folder\"\n on:click|stopPropagation={() => expandFolder(folder)}>\n <span>{@html getIcon(folder.isExpanded ? \"chevron-down\" : \"chevron-right\", \"16\")}</span>\n <span class=\"title\" class:currentfolder={$store.currentFrontEndItem && isInSubfolder(folder.name, $store.currentFrontEndItem)}>{folder.name}</span>\n {#if folder.isExpanded}\n <svelte:self components={subComponents(folder.name)} \n thisLevel={folder.path} />\n {/if}\n </div>\n {/each}\n\n {#each componentsThisLevel as component}\n <div class=\"hierarchy-item component\" class:selected={isComponentSelected($store.currentFrontEndType, $store.currentFrontEndItem, component.component)}\n on:click|stopPropagation={() => store.setCurrentComponent(component.component.name)}>\n <span>{@html getIcon(\"circle\", \"7\")}</span>\n <span class=\"title\">{component.title}</span>\n </div>\n {/each}\n\n</div>\n\n<style>\n\n.root {\n color: var(--secondary50);\n font-size: .9rem;\n font-weight: bold;\n}\n\n.hierarchy-item {\n cursor: pointer;\n padding: 5px 0px;\n}\n\n.hierarchy-item:hover {\n color: var(--secondary);\n}\n\n.component {\n margin-left: 5px;\n}\n\n.currentfolder {\n color: var(--secondary100);\n}\n\n.selected {\n color: var(--primary100);\n font-weight: bold;\n}\n\n.title {\n margin-left: 10px;\n}\n\n\n</style>","<script>\nimport { store } from \"../builderStore\";\nimport getIcon from \"../common/icon\";\n\nconst getPage = (s, name) => {\n const props = s.pages[name];\n return ({name, props});\n}\n\n</script>\n\n<div class=\"root\">\n <div class=\"hierarchy-item component\" class:selected={$store.currentFrontEndType === \"page\" && $store.currentPageName === \"main\"}\n on:click|stopPropagation={() => store.setCurrentPage(\"main\")}>\n <span>{@html getIcon(\"circle\", \"7\")}</span>\n <span class=\"title\">Main</span>\n </div>\n\n <div class=\"hierarchy-item component\" class:selected={$store.currentFrontEndType === \"page\" && $store.currentPageName === \"unauthenticated\"}\n on:click|stopPropagation={() => store.setCurrentPage(\"unauthenticated\")}>\n <span>{@html getIcon(\"circle\", \"7\")}</span>\n <span class=\"title\">Login</span>\n </div>\n\n</div>\n\n<style>\n\n.root {\n padding-bottom: 10px;\n padding-left: 10px;\n font-size: .9rem;\n color: var(--secondary50);\n font-weight: bold;\n}\n\n.hierarchy-item {\n cursor: pointer;\n padding: 5px 0px;\n}\n\n.hierarchy-item:hover {\n color: var(--secondary100);\n}\n\n.component {\n margin-left: 5px;\n}\n\n.selected {\n color: var(--primary100);\n font-weight: bold;\n}\n\n\n.title {\n margin-left: 10px;\n}\n\n</style>","<script>\n\nexport let checked=false;\nexport let label=\"\";\n\n</script>\n\n<input class=\"uk-checkbox\" type=\"checkbox\" bind:checked on:change />{label}\n\n<style>\n\ninput {\n margin-right:7px;\n}\n\n</style>","<script>\nexport let text = \"\";\nexport let label = \"\";\nexport let width = \"medium\";\nexport let size = \"small\";\nexport let margin = true;\nexport let infoText = \"\";\nexport let hasError = false;\nexport let disabled = false;\n</script>\n\n<div class:uk-margin={margin}>\n <label class=\"uk-form-label\">{label}</label>\n <div class=\"uk-form-controls\">\n <input class=\"uk-input uk-form-width-{width} uk-form-{size}\"\n class:uk-form-danger={hasError}\n on:change\n bind:value={text} \n {disabled}>\n </div>\n {#if infoText}\n <div class=\"info-text\">{infoText}</div>\n {/if}\n</div>\n\n<style>\n.info-text {\n font-size: 0.7rem;\n color: var(--secondary50);\n}\n</style>\n\n","<script>\nimport {createEventDispatcher} from \"svelte\";\n\nexport let selected;\nexport let label;\nexport let options;\nexport let valueMember;\nexport let textMember;\nexport let multiple=false;\nexport let width = \"medium\";\nexport let size = \"small\";\n\nconst dispatch =createEventDispatcher();\n\n\n</script>\n\n\n<div class=\"uk-margin\">\n <label class=\"uk-form-label\">{label}</label>\n <div class=\"uk-form-controls\">\n {#if multiple}\n \n <select class=\"uk-select uk-form-width-{width} uk-form-{size}\" multiple bind:value={selected} on:change>\n {#each options as option}\n <option value={!valueMember ? option : valueMember(option)}>{!textMember ? option : textMember(option)}</option>\n {/each}\n </select>\n\n {:else}\n\n <select class=\"uk-select uk-form-width-{width} uk-form-{size}\" bind:value={selected} on:change>\n {#each options as option}\n <option value={!valueMember ? option : valueMember(option)}>{!textMember ? option : textMember(option)}</option>\n {/each}\n </select>\n {/if}\n </div>\n</div>\n","// shim for using process in browser\n// based off https://github.com/defunctzombie/node-process/blob/master/browser.js\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\nvar cachedSetTimeout = defaultSetTimout;\nvar cachedClearTimeout = defaultClearTimeout;\nif (typeof global.setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n}\nif (typeof global.clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n}\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\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 drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\nexport function nextTick(fun) {\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(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\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 this.fun.apply(null, this.array);\n};\nexport var title = 'browser';\nexport var platform = 'browser';\nexport var browser = true;\nexport var env = {};\nexport var argv = [];\nexport var version = ''; // empty string to avoid regexp issues\nexport var versions = {};\nexport var release = {};\nexport var config = {};\n\nfunction noop() {}\n\nexport var on = noop;\nexport var addListener = noop;\nexport var once = noop;\nexport var off = noop;\nexport var removeListener = noop;\nexport var removeAllListeners = noop;\nexport var emit = noop;\n\nexport function binding(name) {\n throw new Error('process.binding is not supported');\n}\n\nexport function cwd () { return '/' }\nexport function chdir (dir) {\n throw new Error('process.chdir is not supported');\n};\nexport function umask() { return 0; }\n\n// from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js\nvar performance = global.performance || {}\nvar performanceNow =\n performance.now ||\n performance.mozNow ||\n performance.msNow ||\n performance.oNow ||\n performance.webkitNow ||\n function(){ return (new Date()).getTime() }\n\n// generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\nexport function hrtime(previousTimestamp){\n var clocktime = performanceNow.call(performance)*1e-3\n var seconds = Math.floor(clocktime)\n var nanoseconds = Math.floor((clocktime%1)*1e9)\n if (previousTimestamp) {\n seconds = seconds - previousTimestamp[0]\n nanoseconds = nanoseconds - previousTimestamp[1]\n if (nanoseconds<0) {\n seconds--\n nanoseconds += 1e9\n }\n }\n return [seconds,nanoseconds]\n}\n\nvar startTime = new Date();\nexport function uptime() {\n var currentTime = new Date();\n var dif = currentTime - startTime;\n return dif / 1000;\n}\n\nexport default {\n nextTick: nextTick,\n title: title,\n browser: browser,\n env: env,\n argv: argv,\n version: version,\n versions: versions,\n on: on,\n addListener: addListener,\n once: once,\n off: off,\n removeListener: removeListener,\n removeAllListeners: removeAllListeners,\n emit: emit,\n binding: binding,\n cwd: cwd,\n chdir: chdir,\n umask: umask,\n hrtime: hrtime,\n platform: platform,\n release: release,\n config: config,\n uptime: uptime\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\nimport process from 'process';\nvar formatRegExp = /%[sdj%]/g;\nexport function format(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexport function deprecate(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function() {\n return deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexport function debuglog(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = 0;\n debugs[set] = function() {\n var msg = format.apply(null, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nexport function inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n _extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexport function isArray(ar) {\n return Array.isArray(ar);\n}\n\nexport function isBoolean(arg) {\n return typeof arg === 'boolean';\n}\n\nexport function isNull(arg) {\n return arg === null;\n}\n\nexport function isNullOrUndefined(arg) {\n return arg == null;\n}\n\nexport function isNumber(arg) {\n return typeof arg === 'number';\n}\n\nexport function isString(arg) {\n return typeof arg === 'string';\n}\n\nexport function isSymbol(arg) {\n return typeof arg === 'symbol';\n}\n\nexport function isUndefined(arg) {\n return arg === void 0;\n}\n\nexport function isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\n\nexport function isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nexport function isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\n\nexport function isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\n\nexport function isFunction(arg) {\n return typeof arg === 'function';\n}\n\nexport function isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\n\nexport function isBuffer(maybeBuf) {\n return Buffer.isBuffer(maybeBuf);\n}\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexport function log() {\n console.log('%s - %s', timestamp(), format.apply(null, arguments));\n}\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nimport inherits from './inherits';\nexport {inherits}\n\nexport function _extend(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nexport default {\n inherits: inherits,\n _extend: _extend,\n log: log,\n isBuffer: isBuffer,\n isPrimitive: isPrimitive,\n isFunction: isFunction,\n isError: isError,\n isDate: isDate,\n isObject: isObject,\n isRegExp: isRegExp,\n isUndefined: isUndefined,\n isSymbol: isSymbol,\n isString: isString,\n isNumber: isNumber,\n isNullOrUndefined: isNullOrUndefined,\n isNull: isNull,\n isBoolean: isBoolean,\n isArray: isArray,\n inspect: inspect,\n deprecate: deprecate,\n format: format,\n debuglog: debuglog\n}\n","import {\r\n isString\r\n} from \"lodash/fp\";\r\n\r\nimport {\r\n BB_STATE_BINDINGPATH, BB_STATE_FALLBACK, \r\n BB_STATE_BINDINGSOURCE\r\n} from \"@budibase/client/src/state/isState\";\r\n\r\nexport const isBinding = value => \r\n !isString(value) \r\n && value\r\n && isString(value[BB_STATE_BINDINGPATH])\r\n && value[BB_STATE_BINDINGPATH].length > 0;\r\n\r\nexport const setBinding = ({path, fallback, source}, binding={} ) => {\r\n if(isNonEmptyString(path)) binding[BB_STATE_BINDINGPATH] = path;\r\n if(isNonEmptyString(fallback)) binding[BB_STATE_FALLBACK] = fallback;\r\n binding[BB_STATE_BINDINGSOURCE] = source || \"store\";\r\n return binding\r\n}\r\n\r\nexport const getBinding = binding => ({\r\n path: binding[BB_STATE_BINDINGPATH] || \"\",\r\n fallback: binding[BB_STATE_FALLBACK] || \"\",\r\n source: binding[BB_STATE_BINDINGSOURCE] || \"store\"\r\n});\r\n\r\nconst isNonEmptyString = s => isString(s) && s.length > 0;","import { types } from \"./types\";\nimport { \n createProps, arrayElementComponentName \n} from \"./createProps\";\nimport { isString } from \"util\";\nimport { \n includes, filter, map, keys, \n flatten, flattenDeep, each,\n indexOf, isUndefined\n} from \"lodash/fp\";\nimport { common } from \"../../../../core/src\";\nimport {\n isBinding\n} from \"../../common/binding\";\n\nconst pipe = common.$;\n\nconst makeError = (errors, propName, stack) => (message) =>\n errors.push({\n stack,\n propName, \n error:message});\n\nexport const recursivelyValidate = (rootProps, getComponent, stack=[]) => {\n\n const getComponentPropsDefinition = componentName => {\n if(componentName.includes(\":\")) {\n const [parentComponent, arrayProp] = componentName.split(\":\");\n return getComponent(parentComponent)[arrayProp].elementDefinition;\n }\n return getComponent(componentName);\n }\n\n if(!rootProps._component) {\n const errs = [];\n makeError(errs, \"_component\", stack)(\"Component is not set\");\n return errs;\n // this would break everything else anyway\n }\n\n const propsDef = getComponentPropsDefinition(\n rootProps._component);\n\n const getPropsDefArray = (def) => pipe(def, [\n keys,\n map(k => def[k].name \n ? expandPropDef(def[k])\n : ({\n ...expandPropDef(def[k]), \n name:k }))\n ]);\n\n const propsDefArray = getPropsDefArray(propsDef);\n\n const errors = validateProps(\n propsDef,\n rootProps,\n stack,\n true);\n\n const validateChildren = (_defArray, _props, _stack) => pipe(_defArray, [\n filter(d => d.type === \"component\"),\n map(d => recursivelyValidate(\n _props[d.name], \n getComponentPropsDefinition, \n [..._stack, d.name])),\n flatten\n ]);\n\n const childErrors = validateChildren(\n propsDefArray, rootProps, stack);\n\n const childArrayErrors = pipe(propsDefArray, [\n filter(d => d.type === \"array\"),\n map(d => pipe(rootProps[d.name], [ \n map(elementProps => pipe(d.elementDefinition, [\n getPropsDefArray,\n arr => validateChildren(\n arr, \n elementProps,\n [...stack, \n `${d.name}[${indexOf(elementProps)(rootProps[d.name])}]`]) \n ])) \n ]))\n ]);\n\n return flattenDeep([errors, ...childErrors, ...childArrayErrors]);\n}\n\nconst expandPropDef = propDef => {\n const p = isString(propDef)\n ? types[propDef].defaultDefinition()\n : propDef;\n if(p.type === \"array\" && isString(p.elementDefinition)) {\n p.elementDefinition = types[p.elementDefinition].defaultDefinition()\n }\n return p;\n}\n\n\nexport const validateProps = (propsDefinition, props, stack=[], isFinal=true, isArrayElement=false) => {\n\n const errors = [];\n\n if(isFinal && !props._component && !isArrayElement) {\n makeError(errors, \"_component\", stack)(\"Component is not set\");\n return errors;\n // this would break everything else anyway\n }\n\n for(let propDefName in propsDefinition) {\n \n if(propDefName === \"_component\") continue;\n\n const propDef = expandPropDef(propsDefinition[propDefName]);\n\n const type = types[propDef.type];\n\n const error = makeError(errors, propDefName, stack); \n\n const propValue = props[propDefName];\n\n // component declarations dont need to define al props.\n if(!isFinal && isUndefined(propValue)) continue;\n\n if(isFinal && propDef.required && propValue) {\n error(`Property ${propDefName} is required`);\n continue;\n } \n\n if(isBinding(propValue)) {\n if(propDef.type === \"array\" \n || propDef.type === \"component\"\n || propDef.type === \"event\") {\n error(`Cannot apply binding to type ${propDef.type}`);\n continue;\n }\n }\n else if(!type.isOfType(propValue)) {\n error(`Property ${propDefName} is not of type ${propDef.type}. Actual value ${propValue}`)\n continue;\n }\n\n if(propDef.type === \"array\") {\n let index = 0;\n for(let arrayItem of propValue) {\n const arrayErrs = validateProps(\n propDef.elementDefinition,\n arrayItem,\n [...stack, `${propDefName}[${index}]`],\n isFinal,\n true\n )\n for(let arrErr of arrayErrs) {\n errors.push(arrErr);\n }\n index++;\n } \n }\n\n if(propDef.type === \"options\" \n && propValue\n && !isBinding(propValue)\n && !includes(propValue)(propDef.options)) {\n error(`Property ${propDefName} is not one of allowed options. Acutal value is ${propValue}`);\n }\n\n }\n\n return errors;\n}\n\nexport const validatePropsDefinition = (propsDefinition) => {\n const { errors } = createProps(\"dummy_component_name\", propsDefinition);\n \n\n // arrar props without elementDefinition\n pipe(propsDefinition, [\n keys,\n map(k => ({\n propDef:propsDefinition[k],\n propName:k\n })),\n filter(d => d.propDef.type === \"array\" && !d.propDef.elementDefinition),\n each(d => makeError(errors, d.propName)(`${d.propName} does not have a definition for it's item props`))\n ]);\n\n const arrayPropValidationErrors = pipe(propsDefinition, [\n keys,\n map(k => propsDefinition[k]),\n filter(d => d.type === \"array\" && d.elementDefinition),\n map(d => validatePropsDefinition(d.elementDefinition)),\n flatten\n ]);\n\n pipe(propsDefinition, [\n keys,\n map(k => ({\n propDef:propsDefinition[k],\n propName:k\n })),\n filter(d => d.propDef.type === \"options\"\n && (!d.propDef.options || d.propDef.options.length === 0)),\n each(d => makeError(errors, d.propName)(`${d.propName} does not have any options`))\n ]);\n\n return [...errors, ...arrayPropValidationErrors] \n\n}\n\n","import {\n split,\n last\n} from \"lodash/fp\";\n\nimport { pipe } from \"../../common/core\";\n\nexport const splitName = fullname => {\n const componentName = pipe(fullname, [\n split(\"/\"),\n last\n ]);\n\n const libName =fullname.substring(\n 0, fullname.length - componentName.length - 1);\n\n return {libName, componentName}; \n}","<script>\r\nimport {\r\n isRootComponent\r\n} from \"./pagesParsing/searchComponents\"\r\nimport { splitName } from \"./pagesParsing/splitRootComponentName.js\"\r\nimport { store } from \"../builderStore\";\r\nimport {\r\n groupBy, keys, find, sortBy\r\n} from \"lodash/fp\";\r\nimport { pipe } from \"../common/core\";\r\n\r\nexport let onComponentChosen;\r\nexport let onGeneratorChosen;\r\nexport let allowGenerators;\r\n\r\nlet derivedComponents=[];\r\nlet componentLibraries=[];\r\n\r\nconst addRootComponent = (c, all, isGenerator) => {\r\n const { libName } = splitName(c.name);\r\n let group = find(r => r.libName === libName)(all);\r\n\r\n if(!group) {\r\n group = {\r\n libName,\r\n components: [],\r\n generators: []\r\n };\r\n\r\n all.push(group);\r\n } \r\n \r\n if(isGenerator) {\r\n group.generators.push(c)\r\n } else {\r\n group.components.push(c)\r\n }\r\n \r\n};\r\n\r\nstore.subscribe(s => {\r\n\r\n const newComponentLibraries = [];\r\n const newDerivedComponents = [];\r\n\r\n for(let comp of sortBy([\"name\"])(s.allComponents)) {\r\n if(isRootComponent(comp)) {\r\n addRootComponent(\r\n comp, \r\n newComponentLibraries, \r\n false);\r\n } else {\r\n newDerivedComponents.push(comp);\r\n }\r\n }\r\n\r\n for(let generator of s.generators) {\r\n addRootComponent(\r\n generator, \r\n newComponentLibraries, \r\n true);\r\n }\r\n\r\n derivedComponents = sortBy([\"name\"])(newDerivedComponents);\r\n componentLibraries = newComponentLibraries;\r\n});\r\n\r\n\r\n\r\n\r\n\r\n</script>\r\n\r\n{#each componentLibraries as lib}\r\n<div class=\"library-header\">\r\n {lib.libName}\r\n</div>\r\n\r\n<div class=\"library-container\">\r\n\r\n {#if allowGenerators}\r\n <div class=\"inner-header\">\r\n Generators\r\n </div>\r\n\r\n {#each lib.generators as generator}\r\n\r\n <div class=\"component\"\r\n on:click={() => onGeneratorChosen(generator)}>\r\n <div class=\"name\">\r\n {splitName(generator.name).componentName}\r\n </div>\r\n <div class=\"description\">\r\n {generator.description}\r\n </div>\r\n </div>\r\n\r\n {/each}\r\n {/if}\r\n\r\n <div class=\"inner-header\">\r\n Components\r\n </div>\r\n\r\n {#each lib.components as component}\r\n\r\n <div class=\"component\"\r\n on:click={() => onComponentChosen(component)}>\r\n <div class=\"name\">\r\n {splitName(component.name).componentName}\r\n </div>\r\n <div class=\"description\">\r\n {component.description}\r\n </div>\r\n </div>\r\n\r\n {/each}\r\n\r\n</div>\r\n\r\n{/each}\r\n\r\n\r\n<div class=\"library-header\">\r\n My Components\r\n</div>\r\n\r\n<div class=\"library-container\">\r\n\r\n {#each derivedComponents as component}\r\n\r\n <div class=\"component\"\r\n on:click={() => onComponentChosen(component)}>\r\n <div class=\"name\">\r\n {component.name}\r\n </div>\r\n <div class=\"description\">\r\n {component.description}\r\n </div>\r\n </div>\r\n\r\n {/each}\r\n\r\n</div>\r\n\r\n\r\n<style>\r\n\r\n.library-header {\r\n font-size: 1.1em;\r\n border-color: var(--primary25);\r\n border-width: 1px 0px;\r\n border-style: solid;\r\n background-color: var(--primary10);\r\n padding: 5px 0;\r\n}\r\n\r\n.library-container {\r\n padding: 0 0 10px 10px;\r\n}\r\n\r\n.inner-header {\r\n font-size: 0.9em;\r\n font-weight: bold;\r\n margin-top: 7px;\r\n margin-bottom: 3px;\r\n}\r\n\r\n.component {\r\n padding: 2px 0px;\r\n cursor: pointer;\r\n}\r\n\r\n.component:hover {\r\n background-color: var(--lightslate);\r\n}\r\n\r\n.component > .name {\r\n color: var(--secondary100);\r\n display: inline-block;\r\n}\r\n\r\n.component > .description {\r\n font-size: 0.8em;\r\n color: var(--secondary75);\r\n display: inline-block;\r\n margin-left: 10px;\r\n}\r\n\r\n\r\n\r\n</style>\r\n","<script>\nexport let style=\"\";\n</script>\n\n<div class=\"root\" style={style}>\n <slot />\n</div>\n\n<style>\n\n.root {\n display: flex;\n}\n\n.root:last-child {\n border-radius: 0 var(--borderradius) var(--borderradius) 0;\n}\n\n.root:first-child {\n border-radius: var(--borderradius) 0 0 var(--borderradius); \n}\n\n.root:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n\n</style>","/*! UIkit 3.2.0 | http://www.getuikit.com | (c) 2014 - 2019 YOOtheme | MIT License */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define('uikit', factory) :\n (global = global || self, global.UIkit = factory());\n}(this, function () { 'use strict';\n\n var objPrototype = Object.prototype;\n var hasOwnProperty = objPrototype.hasOwnProperty;\n\n function hasOwn(obj, key) {\n return hasOwnProperty.call(obj, key);\n }\n\n var hyphenateCache = {};\n var hyphenateRe = /([a-z\\d])([A-Z])/g;\n\n function hyphenate(str) {\n\n if (!(str in hyphenateCache)) {\n hyphenateCache[str] = str\n .replace(hyphenateRe, '$1-$2')\n .toLowerCase();\n }\n\n return hyphenateCache[str];\n }\n\n var camelizeRe = /-(\\w)/g;\n\n function camelize(str) {\n return str.replace(camelizeRe, toUpper);\n }\n\n function toUpper(_, c) {\n return c ? c.toUpperCase() : '';\n }\n\n function ucfirst(str) {\n return str.length ? toUpper(null, str.charAt(0)) + str.slice(1) : '';\n }\n\n var strPrototype = String.prototype;\n var startsWithFn = strPrototype.startsWith || function (search) { return this.lastIndexOf(search, 0) === 0; };\n\n function startsWith(str, search) {\n return startsWithFn.call(str, search);\n }\n\n var endsWithFn = strPrototype.endsWith || function (search) { return this.substr(-search.length) === search; };\n\n function endsWith(str, search) {\n return endsWithFn.call(str, search);\n }\n\n var arrPrototype = Array.prototype;\n\n var includesFn = function (search, i) { return ~this.indexOf(search, i); };\n var includesStr = strPrototype.includes || includesFn;\n var includesArray = arrPrototype.includes || includesFn;\n\n function includes(obj, search) {\n return obj && (isString(obj) ? includesStr : includesArray).call(obj, search);\n }\n\n var findIndexFn = arrPrototype.findIndex || function (predicate) {\n var arguments$1 = arguments;\n\n for (var i = 0; i < this.length; i++) {\n if (predicate.call(arguments$1[1], this[i], i, this)) {\n return i;\n }\n }\n return -1;\n };\n\n function findIndex(array, predicate) {\n return findIndexFn.call(array, predicate);\n }\n\n var isArray = Array.isArray;\n\n function isFunction(obj) {\n return typeof obj === 'function';\n }\n\n function isObject(obj) {\n return obj !== null && typeof obj === 'object';\n }\n\n function isPlainObject(obj) {\n return isObject(obj) && Object.getPrototypeOf(obj) === objPrototype;\n }\n\n function isWindow(obj) {\n return isObject(obj) && obj === obj.window;\n }\n\n function isDocument(obj) {\n return isObject(obj) && obj.nodeType === 9;\n }\n\n function isJQuery(obj) {\n return isObject(obj) && !!obj.jquery;\n }\n\n function isNode(obj) {\n return obj instanceof Node || isObject(obj) && obj.nodeType >= 1;\n }\n\n var toString = objPrototype.toString;\n function isNodeCollection(obj) {\n return toString.call(obj).match(/^\\[object (NodeList|HTMLCollection)\\]$/);\n }\n\n function isBoolean(value) {\n return typeof value === 'boolean';\n }\n\n function isString(value) {\n return typeof value === 'string';\n }\n\n function isNumber(value) {\n return typeof value === 'number';\n }\n\n function isNumeric(value) {\n return isNumber(value) || isString(value) && !isNaN(value - parseFloat(value));\n }\n\n function isEmpty(obj) {\n return !(isArray(obj)\n ? obj.length\n : isObject(obj)\n ? Object.keys(obj).length\n : false\n );\n }\n\n function isUndefined(value) {\n return value === void 0;\n }\n\n function toBoolean(value) {\n return isBoolean(value)\n ? value\n : value === 'true' || value === '1' || value === ''\n ? true\n : value === 'false' || value === '0'\n ? false\n : value;\n }\n\n function toNumber(value) {\n var number = Number(value);\n return !isNaN(number) ? number : false;\n }\n\n function toFloat(value) {\n return parseFloat(value) || 0;\n }\n\n function toNode(element) {\n return isNode(element) || isWindow(element) || isDocument(element)\n ? element\n : isNodeCollection(element) || isJQuery(element)\n ? element[0]\n : isArray(element)\n ? toNode(element[0])\n : null;\n }\n\n function toNodes(element) {\n return isNode(element)\n ? [element]\n : isNodeCollection(element)\n ? arrPrototype.slice.call(element)\n : isArray(element)\n ? element.map(toNode).filter(Boolean)\n : isJQuery(element)\n ? element.toArray()\n : [];\n }\n\n function toList(value) {\n return isArray(value)\n ? value\n : isString(value)\n ? value.split(/,(?![^(]*\\))/).map(function (value) { return isNumeric(value)\n ? toNumber(value)\n : toBoolean(value.trim()); })\n : [value];\n }\n\n function toMs(time) {\n return !time\n ? 0\n : endsWith(time, 'ms')\n ? toFloat(time)\n : toFloat(time) * 1000;\n }\n\n function isEqual(value, other) {\n return value === other\n || isObject(value)\n && isObject(other)\n && Object.keys(value).length === Object.keys(other).length\n && each(value, function (val, key) { return val === other[key]; });\n }\n\n function swap(value, a, b) {\n return value.replace(new RegExp((a + \"|\" + b), 'mg'), function (match) {\n return match === a ? b : a;\n });\n }\n\n var assign = Object.assign || function (target) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n target = Object(target);\n for (var i = 0; i < args.length; i++) {\n var source = args[i];\n if (source !== null) {\n for (var key in source) {\n if (hasOwn(source, key)) {\n target[key] = source[key];\n }\n }\n }\n }\n return target;\n };\n\n function last(array) {\n return array[array.length - 1];\n }\n\n function each(obj, cb) {\n for (var key in obj) {\n if (false === cb(obj[key], key)) {\n return false;\n }\n }\n return true;\n }\n\n function sortBy(array, prop) {\n return array.sort(function (ref, ref$1) {\n var propA = ref[prop]; if ( propA === void 0 ) propA = 0;\n var propB = ref$1[prop]; if ( propB === void 0 ) propB = 0;\n\n return propA > propB\n ? 1\n : propB > propA\n ? -1\n : 0;\n }\n );\n }\n\n function uniqueBy(array, prop) {\n var seen = new Set();\n return array.filter(function (ref) {\n var check = ref[prop];\n\n return seen.has(check)\n ? false\n : seen.add(check) || true;\n } // IE 11 does not return the Set object\n );\n }\n\n function clamp(number, min, max) {\n if ( min === void 0 ) min = 0;\n if ( max === void 0 ) max = 1;\n\n return Math.min(Math.max(toNumber(number) || 0, min), max);\n }\n\n function noop() {}\n\n function intersectRect(r1, r2) {\n return r1.left < r2.right &&\n r1.right > r2.left &&\n r1.top < r2.bottom &&\n r1.bottom > r2.top;\n }\n\n function pointInRect(point, rect) {\n return point.x <= rect.right &&\n point.x >= rect.left &&\n point.y <= rect.bottom &&\n point.y >= rect.top;\n }\n\n var Dimensions = {\n\n ratio: function(dimensions, prop, value) {\n var obj;\n\n\n var aProp = prop === 'width' ? 'height' : 'width';\n\n return ( obj = {}, obj[aProp] = dimensions[prop] ? Math.round(value * dimensions[aProp] / dimensions[prop]) : dimensions[aProp], obj[prop] = value, obj );\n },\n\n contain: function(dimensions, maxDimensions) {\n var this$1 = this;\n\n dimensions = assign({}, dimensions);\n\n each(dimensions, function (_, prop) { return dimensions = dimensions[prop] > maxDimensions[prop]\n ? this$1.ratio(dimensions, prop, maxDimensions[prop])\n : dimensions; }\n );\n\n return dimensions;\n },\n\n cover: function(dimensions, maxDimensions) {\n var this$1 = this;\n\n dimensions = this.contain(dimensions, maxDimensions);\n\n each(dimensions, function (_, prop) { return dimensions = dimensions[prop] < maxDimensions[prop]\n ? this$1.ratio(dimensions, prop, maxDimensions[prop])\n : dimensions; }\n );\n\n return dimensions;\n }\n\n };\n\n function attr(element, name, value) {\n\n if (isObject(name)) {\n for (var key in name) {\n attr(element, key, name[key]);\n }\n return;\n }\n\n if (isUndefined(value)) {\n element = toNode(element);\n return element && element.getAttribute(name);\n } else {\n toNodes(element).forEach(function (element) {\n\n if (isFunction(value)) {\n value = value.call(element, attr(element, name));\n }\n\n if (value === null) {\n removeAttr(element, name);\n } else {\n element.setAttribute(name, value);\n }\n });\n }\n\n }\n\n function hasAttr(element, name) {\n return toNodes(element).some(function (element) { return element.hasAttribute(name); });\n }\n\n function removeAttr(element, name) {\n element = toNodes(element);\n name.split(' ').forEach(function (name) { return element.forEach(function (element) { return element.hasAttribute(name) && element.removeAttribute(name); }\n ); }\n );\n }\n\n function data(element, attribute) {\n for (var i = 0, attrs = [attribute, (\"data-\" + attribute)]; i < attrs.length; i++) {\n if (hasAttr(element, attrs[i])) {\n return attr(element, attrs[i]);\n }\n }\n }\n\n /* global DocumentTouch */\n\n var isIE = /msie|trident/i.test(window.navigator.userAgent);\n var isRtl = attr(document.documentElement, 'dir') === 'rtl';\n\n var hasTouchEvents = 'ontouchstart' in window;\n var hasPointerEvents = window.PointerEvent;\n var hasTouch = hasTouchEvents\n || window.DocumentTouch && document instanceof DocumentTouch\n || navigator.maxTouchPoints; // IE >=11\n\n var pointerDown = hasPointerEvents ? 'pointerdown' : hasTouchEvents ? 'touchstart' : 'mousedown';\n var pointerMove = hasPointerEvents ? 'pointermove' : hasTouchEvents ? 'touchmove' : 'mousemove';\n var pointerUp = hasPointerEvents ? 'pointerup' : hasTouchEvents ? 'touchend' : 'mouseup';\n var pointerEnter = hasPointerEvents ? 'pointerenter' : hasTouchEvents ? '' : 'mouseenter';\n var pointerLeave = hasPointerEvents ? 'pointerleave' : hasTouchEvents ? '' : 'mouseleave';\n var pointerCancel = hasPointerEvents ? 'pointercancel' : 'touchcancel';\n\n function query(selector, context) {\n return toNode(selector) || find(selector, getContext(selector, context));\n }\n\n function queryAll(selector, context) {\n var nodes = toNodes(selector);\n return nodes.length && nodes || findAll(selector, getContext(selector, context));\n }\n\n function getContext(selector, context) {\n if ( context === void 0 ) context = document;\n\n return isContextSelector(selector) || isDocument(context)\n ? context\n : context.ownerDocument;\n }\n\n function find(selector, context) {\n return toNode(_query(selector, context, 'querySelector'));\n }\n\n function findAll(selector, context) {\n return toNodes(_query(selector, context, 'querySelectorAll'));\n }\n\n function _query(selector, context, queryFn) {\n if ( context === void 0 ) context = document;\n\n\n if (!selector || !isString(selector)) {\n return null;\n }\n\n selector = selector.replace(contextSanitizeRe, '$1 *');\n\n var removes;\n\n if (isContextSelector(selector)) {\n\n removes = [];\n\n selector = splitSelector(selector).map(function (selector, i) {\n\n var ctx = context;\n\n if (selector[0] === '!') {\n\n var selectors = selector.substr(1).trim().split(' ');\n ctx = closest(context.parentNode, selectors[0]);\n selector = selectors.slice(1).join(' ').trim();\n\n }\n\n if (selector[0] === '-') {\n\n var selectors$1 = selector.substr(1).trim().split(' ');\n var prev = (ctx || context).previousElementSibling;\n ctx = matches(prev, selector.substr(1)) ? prev : null;\n selector = selectors$1.slice(1).join(' ');\n\n }\n\n if (!ctx) {\n return null;\n }\n\n if (!ctx.id) {\n ctx.id = \"uk-\" + (Date.now()) + i;\n removes.push(function () { return removeAttr(ctx, 'id'); });\n }\n\n return (\"#\" + (escape(ctx.id)) + \" \" + selector);\n\n }).filter(Boolean).join(',');\n\n context = document;\n\n }\n\n try {\n\n return context[queryFn](selector);\n\n } catch (e) {\n\n return null;\n\n } finally {\n\n removes && removes.forEach(function (remove) { return remove(); });\n\n }\n\n }\n\n var contextSelectorRe = /(^|[^\\\\],)\\s*[!>+~-]/;\n var contextSanitizeRe = /([!>+~-])(?=\\s+[!>+~-]|\\s*$)/g;\n\n function isContextSelector(selector) {\n return isString(selector) && selector.match(contextSelectorRe);\n }\n\n var selectorRe = /.*?[^\\\\](?:,|$)/g;\n\n function splitSelector(selector) {\n return selector.match(selectorRe).map(function (selector) { return selector.replace(/,$/, '').trim(); });\n }\n\n var elProto = Element.prototype;\n var matchesFn = elProto.matches || elProto.webkitMatchesSelector || elProto.msMatchesSelector;\n\n function matches(element, selector) {\n return toNodes(element).some(function (element) { return matchesFn.call(element, selector); });\n }\n\n var closestFn = elProto.closest || function (selector) {\n var ancestor = this;\n\n do {\n\n if (matches(ancestor, selector)) {\n return ancestor;\n }\n\n ancestor = ancestor.parentNode;\n\n } while (ancestor && ancestor.nodeType === 1);\n };\n\n function closest(element, selector) {\n\n if (startsWith(selector, '>')) {\n selector = selector.slice(1);\n }\n\n return isNode(element)\n ? closestFn.call(element, selector)\n : toNodes(element).map(function (element) { return closest(element, selector); }).filter(Boolean);\n }\n\n function parents(element, selector) {\n var elements = [];\n element = toNode(element);\n\n while ((element = element.parentNode) && element.nodeType === 1) {\n if (matches(element, selector)) {\n elements.push(element);\n }\n }\n\n return elements;\n }\n\n var escapeFn = window.CSS && CSS.escape || function (css) { return css.replace(/([^\\x7f-\\uFFFF\\w-])/g, function (match) { return (\"\\\\\" + match); }); };\n function escape(css) {\n return isString(css) ? escapeFn.call(null, css) : '';\n }\n\n var voidElements = {\n area: true,\n base: true,\n br: true,\n col: true,\n embed: true,\n hr: true,\n img: true,\n input: true,\n keygen: true,\n link: true,\n menuitem: true,\n meta: true,\n param: true,\n source: true,\n track: true,\n wbr: true\n };\n function isVoidElement(element) {\n return toNodes(element).some(function (element) { return voidElements[element.tagName.toLowerCase()]; });\n }\n\n function isVisible(element) {\n return toNodes(element).some(function (element) { return element.offsetWidth || element.offsetHeight || element.getClientRects().length; });\n }\n\n var selInput = 'input,select,textarea,button';\n function isInput(element) {\n return toNodes(element).some(function (element) { return matches(element, selInput); });\n }\n\n function filter(element, selector) {\n return toNodes(element).filter(function (element) { return matches(element, selector); });\n }\n\n function within(element, selector) {\n return !isString(selector)\n ? element === selector || (isDocument(selector)\n ? selector.documentElement\n : toNode(selector)).contains(toNode(element)) // IE 11 document does not implement contains\n : matches(element, selector) || closest(element, selector);\n }\n\n function on() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n\n var ref = getArgs(args);\n var targets = ref[0];\n var type = ref[1];\n var selector = ref[2];\n var listener = ref[3];\n var useCapture = ref[4];\n\n targets = toEventTargets(targets);\n\n if (listener.length > 1) {\n listener = detail(listener);\n }\n\n if (selector) {\n listener = delegate(targets, selector, listener);\n }\n\n if (useCapture && useCapture.self) {\n listener = selfFilter(listener);\n }\n\n useCapture = useCaptureFilter(useCapture);\n\n type.split(' ').forEach(function (type) { return targets.forEach(function (target) { return target.addEventListener(type, listener, useCapture); }\n ); }\n );\n return function () { return off(targets, type, listener, useCapture); };\n }\n\n function off(targets, type, listener, useCapture) {\n if ( useCapture === void 0 ) useCapture = false;\n\n useCapture = useCaptureFilter(useCapture);\n targets = toEventTargets(targets);\n type.split(' ').forEach(function (type) { return targets.forEach(function (target) { return target.removeEventListener(type, listener, useCapture); }\n ); }\n );\n }\n\n function once() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n\n var ref = getArgs(args);\n var element = ref[0];\n var type = ref[1];\n var selector = ref[2];\n var listener = ref[3];\n var useCapture = ref[4];\n var condition = ref[5];\n var off = on(element, type, selector, function (e) {\n var result = !condition || condition(e);\n if (result) {\n off();\n listener(e, result);\n }\n }, useCapture);\n\n return off;\n }\n\n function trigger(targets, event, detail) {\n return toEventTargets(targets).reduce(function (notCanceled, target) { return notCanceled && target.dispatchEvent(createEvent(event, true, true, detail)); }\n , true);\n }\n\n function createEvent(e, bubbles, cancelable, detail) {\n if ( bubbles === void 0 ) bubbles = true;\n if ( cancelable === void 0 ) cancelable = false;\n\n if (isString(e)) {\n var event = document.createEvent('CustomEvent'); // IE 11\n event.initCustomEvent(e, bubbles, cancelable, detail);\n e = event;\n }\n\n return e;\n }\n\n function getArgs(args) {\n if (isFunction(args[2])) {\n args.splice(2, 0, false);\n }\n return args;\n }\n\n function delegate(delegates, selector, listener) {\n var this$1 = this;\n\n return function (e) {\n\n delegates.forEach(function (delegate) {\n\n var current = selector[0] === '>'\n ? findAll(selector, delegate).reverse().filter(function (element) { return within(e.target, element); })[0]\n : closest(e.target, selector);\n\n if (current) {\n e.delegate = delegate;\n e.current = current;\n\n listener.call(this$1, e);\n }\n\n });\n\n };\n }\n\n function detail(listener) {\n return function (e) { return isArray(e.detail) ? listener.apply(void 0, [e].concat(e.detail)) : listener(e); };\n }\n\n function selfFilter(listener) {\n return function (e) {\n if (e.target === e.currentTarget || e.target === e.current) {\n return listener.call(null, e);\n }\n };\n }\n\n function useCaptureFilter(options) {\n return options && isIE && !isBoolean(options)\n ? !!options.capture\n : options;\n }\n\n function isEventTarget(target) {\n return target && 'addEventListener' in target;\n }\n\n function toEventTarget(target) {\n return isEventTarget(target) ? target : toNode(target);\n }\n\n function toEventTargets(target) {\n return isArray(target)\n ? target.map(toEventTarget).filter(Boolean)\n : isString(target)\n ? findAll(target)\n : isEventTarget(target)\n ? [target]\n : toNodes(target);\n }\n\n function isTouch(e) {\n return e.pointerType === 'touch' || !!e.touches;\n }\n\n function getEventPos(e, prop) {\n if ( prop === void 0 ) prop = 'client';\n\n var touches = e.touches;\n var changedTouches = e.changedTouches;\n var ref = touches && touches[0] || changedTouches && changedTouches[0] || e;\n var x = ref[(prop + \"X\")];\n var y = ref[(prop + \"Y\")];\n\n return {x: x, y: y};\n }\n\n /* global setImmediate */\n\n var Promise = 'Promise' in window ? window.Promise : PromiseFn;\n\n var Deferred = function() {\n var this$1 = this;\n\n this.promise = new Promise(function (resolve, reject) {\n this$1.reject = reject;\n this$1.resolve = resolve;\n });\n };\n\n /**\n * Promises/A+ polyfill v1.1.4 (https://github.com/bramstein/promis)\n */\n\n var RESOLVED = 0;\n var REJECTED = 1;\n var PENDING = 2;\n\n var async = 'setImmediate' in window ? setImmediate : setTimeout;\n\n function PromiseFn(executor) {\n\n this.state = PENDING;\n this.value = undefined;\n this.deferred = [];\n\n var promise = this;\n\n try {\n executor(\n function (x) {\n promise.resolve(x);\n },\n function (r) {\n promise.reject(r);\n }\n );\n } catch (e) {\n promise.reject(e);\n }\n }\n\n PromiseFn.reject = function (r) {\n return new PromiseFn(function (resolve, reject) {\n reject(r);\n });\n };\n\n PromiseFn.resolve = function (x) {\n return new PromiseFn(function (resolve, reject) {\n resolve(x);\n });\n };\n\n PromiseFn.all = function all(iterable) {\n return new PromiseFn(function (resolve, reject) {\n var result = [];\n var count = 0;\n\n if (iterable.length === 0) {\n resolve(result);\n }\n\n function resolver(i) {\n return function (x) {\n result[i] = x;\n count += 1;\n\n if (count === iterable.length) {\n resolve(result);\n }\n };\n }\n\n for (var i = 0; i < iterable.length; i += 1) {\n PromiseFn.resolve(iterable[i]).then(resolver(i), reject);\n }\n });\n };\n\n PromiseFn.race = function race(iterable) {\n return new PromiseFn(function (resolve, reject) {\n for (var i = 0; i < iterable.length; i += 1) {\n PromiseFn.resolve(iterable[i]).then(resolve, reject);\n }\n });\n };\n\n var p = PromiseFn.prototype;\n\n p.resolve = function resolve(x) {\n var promise = this;\n\n if (promise.state === PENDING) {\n if (x === promise) {\n throw new TypeError('Promise settled with itself.');\n }\n\n var called = false;\n\n try {\n var then = x && x.then;\n\n if (x !== null && isObject(x) && isFunction(then)) {\n then.call(\n x,\n function (x) {\n if (!called) {\n promise.resolve(x);\n }\n called = true;\n },\n function (r) {\n if (!called) {\n promise.reject(r);\n }\n called = true;\n }\n );\n return;\n }\n } catch (e) {\n if (!called) {\n promise.reject(e);\n }\n return;\n }\n\n promise.state = RESOLVED;\n promise.value = x;\n promise.notify();\n }\n };\n\n p.reject = function reject(reason) {\n var promise = this;\n\n if (promise.state === PENDING) {\n if (reason === promise) {\n throw new TypeError('Promise settled with itself.');\n }\n\n promise.state = REJECTED;\n promise.value = reason;\n promise.notify();\n }\n };\n\n p.notify = function notify() {\n var this$1 = this;\n\n async(function () {\n if (this$1.state !== PENDING) {\n while (this$1.deferred.length) {\n var ref = this$1.deferred.shift();\n var onResolved = ref[0];\n var onRejected = ref[1];\n var resolve = ref[2];\n var reject = ref[3];\n\n try {\n if (this$1.state === RESOLVED) {\n if (isFunction(onResolved)) {\n resolve(onResolved.call(undefined, this$1.value));\n } else {\n resolve(this$1.value);\n }\n } else if (this$1.state === REJECTED) {\n if (isFunction(onRejected)) {\n resolve(onRejected.call(undefined, this$1.value));\n } else {\n reject(this$1.value);\n }\n }\n } catch (e) {\n reject(e);\n }\n }\n }\n });\n };\n\n p.then = function then(onResolved, onRejected) {\n var this$1 = this;\n\n return new PromiseFn(function (resolve, reject) {\n this$1.deferred.push([onResolved, onRejected, resolve, reject]);\n this$1.notify();\n });\n };\n\n p.catch = function (onRejected) {\n return this.then(undefined, onRejected);\n };\n\n function ajax(url, options) {\n return new Promise(function (resolve, reject) {\n\n var env = assign({\n data: null,\n method: 'GET',\n headers: {},\n xhr: new XMLHttpRequest(),\n beforeSend: noop,\n responseType: ''\n }, options);\n\n env.beforeSend(env);\n\n var xhr = env.xhr;\n\n for (var prop in env) {\n if (prop in xhr) {\n try {\n\n xhr[prop] = env[prop];\n\n } catch (e) {}\n }\n }\n\n xhr.open(env.method.toUpperCase(), url);\n\n for (var header in env.headers) {\n xhr.setRequestHeader(header, env.headers[header]);\n }\n\n on(xhr, 'load', function () {\n\n if (xhr.status === 0 || xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {\n resolve(xhr);\n } else {\n reject(assign(Error(xhr.statusText), {\n xhr: xhr,\n status: xhr.status\n }));\n }\n\n });\n\n on(xhr, 'error', function () { return reject(assign(Error('Network Error'), {xhr: xhr})); });\n on(xhr, 'timeout', function () { return reject(assign(Error('Network Timeout'), {xhr: xhr})); });\n\n xhr.send(env.data);\n });\n }\n\n function getImage(src, srcset, sizes) {\n\n return new Promise(function (resolve, reject) {\n var img = new Image();\n\n img.onerror = reject;\n img.onload = function () { return resolve(img); };\n\n sizes && (img.sizes = sizes);\n srcset && (img.srcset = srcset);\n img.src = src;\n });\n\n }\n\n function ready(fn) {\n\n if (document.readyState !== 'loading') {\n fn();\n return;\n }\n\n var unbind = on(document, 'DOMContentLoaded', function () {\n unbind();\n fn();\n });\n }\n\n function index(element, ref) {\n return ref\n ? toNodes(element).indexOf(toNode(ref))\n : toNodes((element = toNode(element)) && element.parentNode.children).indexOf(element);\n }\n\n function getIndex(i, elements, current, finite) {\n if ( current === void 0 ) current = 0;\n if ( finite === void 0 ) finite = false;\n\n\n elements = toNodes(elements);\n\n var length = elements.length;\n\n i = isNumeric(i)\n ? toNumber(i)\n : i === 'next'\n ? current + 1\n : i === 'previous'\n ? current - 1\n : index(elements, i);\n\n if (finite) {\n return clamp(i, 0, length - 1);\n }\n\n i %= length;\n\n return i < 0 ? i + length : i;\n }\n\n function empty(element) {\n element = $(element);\n element.innerHTML = '';\n return element;\n }\n\n function html(parent, html) {\n parent = $(parent);\n return isUndefined(html)\n ? parent.innerHTML\n : append(parent.hasChildNodes() ? empty(parent) : parent, html);\n }\n\n function prepend(parent, element) {\n\n parent = $(parent);\n\n if (!parent.hasChildNodes()) {\n return append(parent, element);\n } else {\n return insertNodes(element, function (element) { return parent.insertBefore(element, parent.firstChild); });\n }\n }\n\n function append(parent, element) {\n parent = $(parent);\n return insertNodes(element, function (element) { return parent.appendChild(element); });\n }\n\n function before(ref, element) {\n ref = $(ref);\n return insertNodes(element, function (element) { return ref.parentNode.insertBefore(element, ref); });\n }\n\n function after(ref, element) {\n ref = $(ref);\n return insertNodes(element, function (element) { return ref.nextSibling\n ? before(ref.nextSibling, element)\n : append(ref.parentNode, element); }\n );\n }\n\n function insertNodes(element, fn) {\n element = isString(element) ? fragment(element) : element;\n return element\n ? 'length' in element\n ? toNodes(element).map(fn)\n : fn(element)\n : null;\n }\n\n function remove(element) {\n toNodes(element).map(function (element) { return element.parentNode && element.parentNode.removeChild(element); });\n }\n\n function wrapAll(element, structure) {\n\n structure = toNode(before(element, structure));\n\n while (structure.firstChild) {\n structure = structure.firstChild;\n }\n\n append(structure, element);\n\n return structure;\n }\n\n function wrapInner(element, structure) {\n return toNodes(toNodes(element).map(function (element) { return element.hasChildNodes ? wrapAll(toNodes(element.childNodes), structure) : append(element, structure); }\n ));\n }\n\n function unwrap(element) {\n toNodes(element)\n .map(function (element) { return element.parentNode; })\n .filter(function (value, index, self) { return self.indexOf(value) === index; })\n .forEach(function (parent) {\n before(parent, parent.childNodes);\n remove(parent);\n });\n }\n\n var fragmentRe = /^\\s*<(\\w+|!)[^>]*>/;\n var singleTagRe = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/;\n\n function fragment(html) {\n\n var matches = singleTagRe.exec(html);\n if (matches) {\n return document.createElement(matches[1]);\n }\n\n var container = document.createElement('div');\n if (fragmentRe.test(html)) {\n container.insertAdjacentHTML('beforeend', html.trim());\n } else {\n container.textContent = html;\n }\n\n return container.childNodes.length > 1 ? toNodes(container.childNodes) : container.firstChild;\n\n }\n\n function apply(node, fn) {\n\n if (!node || node.nodeType !== 1) {\n return;\n }\n\n fn(node);\n node = node.firstElementChild;\n while (node) {\n apply(node, fn);\n node = node.nextElementSibling;\n }\n }\n\n function $(selector, context) {\n return !isString(selector)\n ? toNode(selector)\n : isHtml(selector)\n ? toNode(fragment(selector))\n : find(selector, context);\n }\n\n function $$(selector, context) {\n return !isString(selector)\n ? toNodes(selector)\n : isHtml(selector)\n ? toNodes(fragment(selector))\n : findAll(selector, context);\n }\n\n function isHtml(str) {\n return str[0] === '<' || str.match(/^\\s*</);\n }\n\n function addClass(element) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n apply$1(element, args, 'add');\n }\n\n function removeClass(element) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n apply$1(element, args, 'remove');\n }\n\n function removeClasses(element, cls) {\n attr(element, 'class', function (value) { return (value || '').replace(new RegExp((\"\\\\b\" + cls + \"\\\\b\"), 'g'), ''); });\n }\n\n function replaceClass(element) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n args[0] && removeClass(element, args[0]);\n args[1] && addClass(element, args[1]);\n }\n\n function hasClass(element, cls) {\n return cls && toNodes(element).some(function (element) { return element.classList.contains(cls.split(' ')[0]); });\n }\n\n function toggleClass(element) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n\n if (!args.length) {\n return;\n }\n\n args = getArgs$1(args);\n\n var force = !isString(last(args)) ? args.pop() : []; // in iOS 9.3 force === undefined evaluates to false\n\n args = args.filter(Boolean);\n\n toNodes(element).forEach(function (ref) {\n var classList = ref.classList;\n\n for (var i = 0; i < args.length; i++) {\n supports.Force\n ? classList.toggle.apply(classList, [args[i]].concat(force))\n : (classList[(!isUndefined(force) ? force : !classList.contains(args[i])) ? 'add' : 'remove'](args[i]));\n }\n });\n\n }\n\n function apply$1(element, args, fn) {\n args = getArgs$1(args).filter(Boolean);\n\n args.length && toNodes(element).forEach(function (ref) {\n var classList = ref.classList;\n\n supports.Multiple\n ? classList[fn].apply(classList, args)\n : args.forEach(function (cls) { return classList[fn](cls); });\n });\n }\n\n function getArgs$1(args) {\n return args.reduce(function (args, arg) { return args.concat.call(args, isString(arg) && includes(arg, ' ') ? arg.trim().split(' ') : arg); }\n , []);\n }\n\n // IE 11\n var supports = {\n\n get Multiple() {\n return this.get('_multiple');\n },\n\n get Force() {\n return this.get('_force');\n },\n\n get: function(key) {\n\n if (!hasOwn(this, key)) {\n var ref = document.createElement('_');\n var classList = ref.classList;\n classList.add('a', 'b');\n classList.toggle('c', false);\n this._multiple = classList.contains('b');\n this._force = !classList.contains('c');\n }\n\n return this[key];\n }\n\n };\n\n var cssNumber = {\n 'animation-iteration-count': true,\n 'column-count': true,\n 'fill-opacity': true,\n 'flex-grow': true,\n 'flex-shrink': true,\n 'font-weight': true,\n 'line-height': true,\n 'opacity': true,\n 'order': true,\n 'orphans': true,\n 'stroke-dasharray': true,\n 'stroke-dashoffset': true,\n 'widows': true,\n 'z-index': true,\n 'zoom': true\n };\n\n function css(element, property, value) {\n\n return toNodes(element).map(function (element) {\n\n if (isString(property)) {\n\n property = propName(property);\n\n if (isUndefined(value)) {\n return getStyle(element, property);\n } else if (!value && !isNumber(value)) {\n element.style.removeProperty(property);\n } else {\n element.style[property] = isNumeric(value) && !cssNumber[property] ? (value + \"px\") : value;\n }\n\n } else if (isArray(property)) {\n\n var styles = getStyles(element);\n\n return property.reduce(function (props, property) {\n props[property] = styles[propName(property)];\n return props;\n }, {});\n\n } else if (isObject(property)) {\n each(property, function (value, property) { return css(element, property, value); });\n }\n\n return element;\n\n })[0];\n\n }\n\n function getStyles(element, pseudoElt) {\n element = toNode(element);\n return element.ownerDocument.defaultView.getComputedStyle(element, pseudoElt);\n }\n\n function getStyle(element, property, pseudoElt) {\n return getStyles(element, pseudoElt)[property];\n }\n\n var vars = {};\n\n function getCssVar(name) {\n\n var docEl = document.documentElement;\n\n if (!isIE) {\n return getStyles(docEl).getPropertyValue((\"--uk-\" + name));\n }\n\n if (!(name in vars)) {\n\n /* usage in css: .uk-name:before { content:\"xyz\" } */\n\n var element = append(docEl, document.createElement('div'));\n\n addClass(element, (\"uk-\" + name));\n\n vars[name] = getStyle(element, 'content', ':before').replace(/^[\"'](.*)[\"']$/, '$1');\n\n remove(element);\n\n }\n\n return vars[name];\n\n }\n\n var cssProps = {};\n\n function propName(name) {\n\n var ret = cssProps[name];\n if (!ret) {\n ret = cssProps[name] = vendorPropName(name) || name;\n }\n return ret;\n }\n\n var cssPrefixes = ['webkit', 'moz', 'ms'];\n\n function vendorPropName(name) {\n\n name = hyphenate(name);\n\n var ref = document.documentElement;\n var style = ref.style;\n\n if (name in style) {\n return name;\n }\n\n var i = cssPrefixes.length, prefixedName;\n\n while (i--) {\n prefixedName = \"-\" + (cssPrefixes[i]) + \"-\" + name;\n if (prefixedName in style) {\n return prefixedName;\n }\n }\n }\n\n function transition(element, props, duration, timing) {\n if ( duration === void 0 ) duration = 400;\n if ( timing === void 0 ) timing = 'linear';\n\n\n return Promise.all(toNodes(element).map(function (element) { return new Promise(function (resolve, reject) {\n\n for (var name in props) {\n var value = css(element, name);\n if (value === '') {\n css(element, name, value);\n }\n }\n\n var timer = setTimeout(function () { return trigger(element, 'transitionend'); }, duration);\n\n once(element, 'transitionend transitioncanceled', function (ref) {\n var type = ref.type;\n\n clearTimeout(timer);\n removeClass(element, 'uk-transition');\n css(element, {\n 'transition-property': '',\n 'transition-duration': '',\n 'transition-timing-function': ''\n });\n type === 'transitioncanceled' ? reject() : resolve();\n }, {self: true});\n\n addClass(element, 'uk-transition');\n css(element, assign({\n 'transition-property': Object.keys(props).map(propName).join(','),\n 'transition-duration': (duration + \"ms\"),\n 'transition-timing-function': timing\n }, props));\n\n }); }\n ));\n\n }\n\n var Transition = {\n\n start: transition,\n\n stop: function(element) {\n trigger(element, 'transitionend');\n return Promise.resolve();\n },\n\n cancel: function(element) {\n trigger(element, 'transitioncanceled');\n },\n\n inProgress: function(element) {\n return hasClass(element, 'uk-transition');\n }\n\n };\n\n var animationPrefix = 'uk-animation-';\n var clsCancelAnimation = 'uk-cancel-animation';\n\n function animate(element, animation, duration, origin, out) {\n var arguments$1 = arguments;\n if ( duration === void 0 ) duration = 200;\n\n\n return Promise.all(toNodes(element).map(function (element) { return new Promise(function (resolve, reject) {\n\n if (hasClass(element, clsCancelAnimation)) {\n requestAnimationFrame(function () { return Promise.resolve().then(function () { return animate.apply(void 0, arguments$1).then(resolve, reject); }\n ); }\n );\n return;\n }\n\n var cls = animation + \" \" + animationPrefix + (out ? 'leave' : 'enter');\n\n if (startsWith(animation, animationPrefix)) {\n\n if (origin) {\n cls += \" uk-transform-origin-\" + origin;\n }\n\n if (out) {\n cls += \" \" + animationPrefix + \"reverse\";\n }\n\n }\n\n reset();\n\n once(element, 'animationend animationcancel', function (ref) {\n var type = ref.type;\n\n\n var hasReset = false;\n\n if (type === 'animationcancel') {\n reject();\n reset();\n } else {\n resolve();\n Promise.resolve().then(function () {\n hasReset = true;\n reset();\n });\n }\n\n requestAnimationFrame(function () {\n if (!hasReset) {\n addClass(element, clsCancelAnimation);\n\n requestAnimationFrame(function () { return removeClass(element, clsCancelAnimation); });\n }\n });\n\n }, {self: true});\n\n css(element, 'animationDuration', (duration + \"ms\"));\n addClass(element, cls);\n\n function reset() {\n css(element, 'animationDuration', '');\n removeClasses(element, (animationPrefix + \"\\\\S*\"));\n }\n\n }); }\n ));\n\n }\n\n var inProgress = new RegExp((animationPrefix + \"(enter|leave)\"));\n var Animation = {\n\n in: function(element, animation, duration, origin) {\n return animate(element, animation, duration, origin, false);\n },\n\n out: function(element, animation, duration, origin) {\n return animate(element, animation, duration, origin, true);\n },\n\n inProgress: function(element) {\n return inProgress.test(attr(element, 'class'));\n },\n\n cancel: function(element) {\n trigger(element, 'animationcancel');\n }\n\n };\n\n var dirs = {\n width: ['x', 'left', 'right'],\n height: ['y', 'top', 'bottom']\n };\n\n function positionAt(element, target, elAttach, targetAttach, elOffset, targetOffset, flip, boundary) {\n\n elAttach = getPos(elAttach);\n targetAttach = getPos(targetAttach);\n\n var flipped = {element: elAttach, target: targetAttach};\n\n if (!element || !target) {\n return flipped;\n }\n\n var dim = getDimensions(element);\n var targetDim = getDimensions(target);\n var position = targetDim;\n\n moveTo(position, elAttach, dim, -1);\n moveTo(position, targetAttach, targetDim, 1);\n\n elOffset = getOffsets(elOffset, dim.width, dim.height);\n targetOffset = getOffsets(targetOffset, targetDim.width, targetDim.height);\n\n elOffset['x'] += targetOffset['x'];\n elOffset['y'] += targetOffset['y'];\n\n position.left += elOffset['x'];\n position.top += elOffset['y'];\n\n if (flip) {\n\n var boundaries = [getDimensions(getWindow(element))];\n\n if (boundary) {\n boundaries.unshift(getDimensions(boundary));\n }\n\n each(dirs, function (ref, prop) {\n var dir = ref[0];\n var align = ref[1];\n var alignFlip = ref[2];\n\n\n if (!(flip === true || includes(flip, dir))) {\n return;\n }\n\n boundaries.some(function (boundary) {\n\n var elemOffset = elAttach[dir] === align\n ? -dim[prop]\n : elAttach[dir] === alignFlip\n ? dim[prop]\n : 0;\n\n var targetOffset = targetAttach[dir] === align\n ? targetDim[prop]\n : targetAttach[dir] === alignFlip\n ? -targetDim[prop]\n : 0;\n\n if (position[align] < boundary[align] || position[align] + dim[prop] > boundary[alignFlip]) {\n\n var centerOffset = dim[prop] / 2;\n var centerTargetOffset = targetAttach[dir] === 'center' ? -targetDim[prop] / 2 : 0;\n\n return elAttach[dir] === 'center' && (\n apply(centerOffset, centerTargetOffset)\n || apply(-centerOffset, -centerTargetOffset)\n ) || apply(elemOffset, targetOffset);\n\n }\n\n function apply(elemOffset, targetOffset) {\n\n var newVal = position[align] + elemOffset + targetOffset - elOffset[dir] * 2;\n\n if (newVal >= boundary[align] && newVal + dim[prop] <= boundary[alignFlip]) {\n position[align] = newVal;\n\n ['element', 'target'].forEach(function (el) {\n flipped[el][dir] = !elemOffset\n ? flipped[el][dir]\n : flipped[el][dir] === dirs[prop][1]\n ? dirs[prop][2]\n : dirs[prop][1];\n });\n\n return true;\n }\n\n }\n\n });\n\n });\n }\n\n offset(element, position);\n\n return flipped;\n }\n\n function offset(element, coordinates) {\n\n element = toNode(element);\n\n if (coordinates) {\n\n var currentOffset = offset(element);\n var pos = css(element, 'position');\n\n ['left', 'top'].forEach(function (prop) {\n if (prop in coordinates) {\n var value = css(element, prop);\n css(element, prop, coordinates[prop] - currentOffset[prop]\n + toFloat(pos === 'absolute' && value === 'auto'\n ? position(element)[prop]\n : value)\n );\n }\n });\n\n return;\n }\n\n return getDimensions(element);\n }\n\n function getDimensions(element) {\n\n element = toNode(element);\n\n if (!element) {\n return {};\n }\n\n var ref = getWindow(element);\n var top = ref.pageYOffset;\n var left = ref.pageXOffset;\n\n if (isWindow(element)) {\n\n var height = element.innerHeight;\n var width = element.innerWidth;\n\n return {\n top: top,\n left: left,\n height: height,\n width: width,\n bottom: top + height,\n right: left + width\n };\n }\n\n var style, hidden;\n\n if (!isVisible(element) && css(element, 'display') === 'none') {\n\n style = attr(element, 'style');\n hidden = attr(element, 'hidden');\n\n attr(element, {\n style: ((style || '') + \";display:block !important;\"),\n hidden: null\n });\n }\n\n var rect = element.getBoundingClientRect();\n\n if (!isUndefined(style)) {\n attr(element, {style: style, hidden: hidden});\n }\n\n return {\n height: rect.height,\n width: rect.width,\n top: rect.top + top,\n left: rect.left + left,\n bottom: rect.bottom + top,\n right: rect.right + left\n };\n }\n\n function position(element) {\n element = toNode(element);\n\n var parent = element.offsetParent || getDocEl(element);\n var parentOffset = offset(parent);\n var ref = ['top', 'left'].reduce(function (props, prop) {\n var propName = ucfirst(prop);\n props[prop] -= parentOffset[prop]\n + toFloat(css(element, (\"margin\" + propName)))\n + toFloat(css(parent, (\"border\" + propName + \"Width\")));\n return props;\n }, offset(element));\n var top = ref.top;\n var left = ref.left;\n\n return {top: top, left: left};\n }\n\n var height = dimension('height');\n var width = dimension('width');\n\n function dimension(prop) {\n var propName = ucfirst(prop);\n return function (element, value) {\n\n element = toNode(element);\n\n if (isUndefined(value)) {\n\n if (isWindow(element)) {\n return element[(\"inner\" + propName)];\n }\n\n if (isDocument(element)) {\n var doc = element.documentElement;\n return Math.max(doc[(\"offset\" + propName)], doc[(\"scroll\" + propName)]);\n }\n\n value = css(element, prop);\n value = value === 'auto' ? element[(\"offset\" + propName)] : toFloat(value) || 0;\n\n return value - boxModelAdjust(prop, element);\n\n } else {\n\n css(element, prop, !value && value !== 0\n ? ''\n : +value + boxModelAdjust(prop, element) + 'px'\n );\n\n }\n\n };\n }\n\n function boxModelAdjust(prop, element, sizing) {\n if ( sizing === void 0 ) sizing = 'border-box';\n\n return css(element, 'boxSizing') === sizing\n ? dirs[prop].slice(1).map(ucfirst).reduce(function (value, prop) { return value\n + toFloat(css(element, (\"padding\" + prop)))\n + toFloat(css(element, (\"border\" + prop + \"Width\"))); }\n , 0)\n : 0;\n }\n\n function moveTo(position, attach, dim, factor) {\n each(dirs, function (ref, prop) {\n var dir = ref[0];\n var align = ref[1];\n var alignFlip = ref[2];\n\n if (attach[dir] === alignFlip) {\n position[align] += dim[prop] * factor;\n } else if (attach[dir] === 'center') {\n position[align] += dim[prop] * factor / 2;\n }\n });\n }\n\n function getPos(pos) {\n\n var x = /left|center|right/;\n var y = /top|center|bottom/;\n\n pos = (pos || '').split(' ');\n\n if (pos.length === 1) {\n pos = x.test(pos[0])\n ? pos.concat(['center'])\n : y.test(pos[0])\n ? ['center'].concat(pos)\n : ['center', 'center'];\n }\n\n return {\n x: x.test(pos[0]) ? pos[0] : 'center',\n y: y.test(pos[1]) ? pos[1] : 'center'\n };\n }\n\n function getOffsets(offsets, width, height) {\n\n var ref = (offsets || '').split(' ');\n var x = ref[0];\n var y = ref[1];\n\n return {\n x: x ? toFloat(x) * (endsWith(x, '%') ? width / 100 : 1) : 0,\n y: y ? toFloat(y) * (endsWith(y, '%') ? height / 100 : 1) : 0\n };\n }\n\n function flipPosition(pos) {\n switch (pos) {\n case 'left':\n return 'right';\n case 'right':\n return 'left';\n case 'top':\n return 'bottom';\n case 'bottom':\n return 'top';\n default:\n return pos;\n }\n }\n\n function isInView(element, topOffset, leftOffset) {\n if ( topOffset === void 0 ) topOffset = 0;\n if ( leftOffset === void 0 ) leftOffset = 0;\n\n\n if (!isVisible(element)) {\n return false;\n }\n\n element = toNode(element);\n\n var win = getWindow(element);\n var client = element.getBoundingClientRect();\n var bounding = {\n top: -topOffset,\n left: -leftOffset,\n bottom: topOffset + height(win),\n right: leftOffset + width(win)\n };\n\n return intersectRect(client, bounding) || pointInRect({x: client.left, y: client.top}, bounding);\n\n }\n\n function scrolledOver(element, heightOffset) {\n if ( heightOffset === void 0 ) heightOffset = 0;\n\n\n if (!isVisible(element)) {\n return 0;\n }\n\n element = toNode(element);\n\n var win = getWindow(element);\n var doc = getDocument(element);\n var elHeight = element.offsetHeight + heightOffset;\n var ref = offsetPosition(element);\n var top = ref[0];\n var vp = height(win);\n var vh = vp + Math.min(0, top - vp);\n var diff = Math.max(0, vp - (height(doc) + heightOffset - (top + elHeight)));\n\n return clamp(((vh + win.pageYOffset - top) / ((vh + (elHeight - (diff < vp ? diff : 0))) / 100)) / 100);\n }\n\n function scrollTop(element, top) {\n element = toNode(element);\n\n if (isWindow(element) || isDocument(element)) {\n var ref = getWindow(element);\n var scrollTo = ref.scrollTo;\n var pageXOffset = ref.pageXOffset;\n scrollTo(pageXOffset, top);\n } else {\n element.scrollTop = top;\n }\n }\n\n function offsetPosition(element) {\n var offset = [0, 0];\n\n do {\n\n offset[0] += element.offsetTop;\n offset[1] += element.offsetLeft;\n\n if (css(element, 'position') === 'fixed') {\n var win = getWindow(element);\n offset[0] += win.pageYOffset;\n offset[1] += win.pageXOffset;\n return offset;\n }\n\n } while ((element = element.offsetParent));\n\n return offset;\n }\n\n function toPx(value, property, element) {\n if ( property === void 0 ) property = 'width';\n if ( element === void 0 ) element = window;\n\n return isNumeric(value)\n ? +value\n : endsWith(value, 'vh')\n ? percent(height(getWindow(element)), value)\n : endsWith(value, 'vw')\n ? percent(width(getWindow(element)), value)\n : endsWith(value, '%')\n ? percent(getDimensions(element)[property], value)\n : toFloat(value);\n }\n\n function percent(base, value) {\n return base * toFloat(value) / 100;\n }\n\n function getWindow(element) {\n return isWindow(element) ? element : getDocument(element).defaultView;\n }\n\n function getDocument(element) {\n return toNode(element).ownerDocument;\n }\n\n function getDocEl(element) {\n return getDocument(element).documentElement;\n }\n\n /*\n Based on:\n Copyright (c) 2016 Wilson Page wilsonpage@me.com\n https://github.com/wilsonpage/fastdom\n */\n\n var fastdom = {\n\n reads: [],\n writes: [],\n\n read: function(task) {\n this.reads.push(task);\n scheduleFlush();\n return task;\n },\n\n write: function(task) {\n this.writes.push(task);\n scheduleFlush();\n return task;\n },\n\n clear: function(task) {\n return remove$1(this.reads, task) || remove$1(this.writes, task);\n },\n\n flush: flush\n\n };\n\n function flush() {\n runTasks(fastdom.reads);\n runTasks(fastdom.writes.splice(0, fastdom.writes.length));\n\n fastdom.scheduled = false;\n\n if (fastdom.reads.length || fastdom.writes.length) {\n scheduleFlush(true);\n }\n }\n\n function scheduleFlush(microtask) {\n if ( microtask === void 0 ) microtask = false;\n\n if (!fastdom.scheduled) {\n fastdom.scheduled = true;\n if (microtask) {\n Promise.resolve().then(flush);\n } else {\n requestAnimationFrame(flush);\n }\n }\n }\n\n function runTasks(tasks) {\n var task;\n while ((task = tasks.shift())) {\n task();\n }\n }\n\n function remove$1(array, item) {\n var index = array.indexOf(item);\n return !!~index && !!array.splice(index, 1);\n }\n\n function MouseTracker() {}\n\n MouseTracker.prototype = {\n\n positions: [],\n position: null,\n\n init: function() {\n var this$1 = this;\n\n\n this.positions = [];\n this.position = null;\n\n var ticking = false;\n this.unbind = on(document, 'mousemove', function (e) {\n\n if (ticking) {\n return;\n }\n\n setTimeout(function () {\n\n var time = Date.now();\n var ref = this$1.positions;\n var length = ref.length;\n\n if (length && (time - this$1.positions[length - 1].time > 100)) {\n this$1.positions.splice(0, length);\n }\n\n this$1.positions.push({time: time, x: e.pageX, y: e.pageY});\n\n if (this$1.positions.length > 5) {\n this$1.positions.shift();\n }\n\n ticking = false;\n }, 5);\n\n ticking = true;\n });\n\n },\n\n cancel: function() {\n if (this.unbind) {\n this.unbind();\n }\n },\n\n movesTo: function(target) {\n\n if (this.positions.length < 2) {\n return false;\n }\n\n var p = offset(target);\n var position = last(this.positions);\n var ref = this.positions;\n var prevPos = ref[0];\n\n if (p.left <= position.x && position.x <= p.right && p.top <= position.y && position.y <= p.bottom) {\n return false;\n }\n\n var points = [\n [{x: p.left, y: p.top}, {x: p.right, y: p.bottom}],\n [{x: p.right, y: p.top}, {x: p.left, y: p.bottom}]\n ];\n\n if (p.right <= position.x) ; else if (p.left >= position.x) {\n points[0].reverse();\n points[1].reverse();\n } else if (p.bottom <= position.y) {\n points[0].reverse();\n } else if (p.top >= position.y) {\n points[1].reverse();\n }\n\n return !!points.reduce(function (result, point) {\n return result + (slope(prevPos, point[0]) < slope(position, point[0]) && slope(prevPos, point[1]) > slope(position, point[1]));\n }, 0);\n }\n\n };\n\n function slope(a, b) {\n return (b.y - a.y) / (b.x - a.x);\n }\n\n var strats = {};\n\n strats.events =\n strats.created =\n strats.beforeConnect =\n strats.connected =\n strats.beforeDisconnect =\n strats.disconnected =\n strats.destroy = concatStrat;\n\n // args strategy\n strats.args = function (parentVal, childVal) {\n return childVal !== false && concatStrat(childVal || parentVal);\n };\n\n // update strategy\n strats.update = function (parentVal, childVal) {\n return sortBy(concatStrat(parentVal, isFunction(childVal) ? {read: childVal} : childVal), 'order');\n };\n\n // property strategy\n strats.props = function (parentVal, childVal) {\n\n if (isArray(childVal)) {\n childVal = childVal.reduce(function (value, key) {\n value[key] = String;\n return value;\n }, {});\n }\n\n return strats.methods(parentVal, childVal);\n };\n\n // extend strategy\n strats.computed =\n strats.methods = function (parentVal, childVal) {\n return childVal\n ? parentVal\n ? assign({}, parentVal, childVal)\n : childVal\n : parentVal;\n };\n\n // data strategy\n strats.data = function (parentVal, childVal, vm) {\n\n if (!vm) {\n\n if (!childVal) {\n return parentVal;\n }\n\n if (!parentVal) {\n return childVal;\n }\n\n return function (vm) {\n return mergeFnData(parentVal, childVal, vm);\n };\n\n }\n\n return mergeFnData(parentVal, childVal, vm);\n };\n\n function mergeFnData(parentVal, childVal, vm) {\n return strats.computed(\n isFunction(parentVal)\n ? parentVal.call(vm, vm)\n : parentVal,\n isFunction(childVal)\n ? childVal.call(vm, vm)\n : childVal\n );\n }\n\n // concat strategy\n function concatStrat(parentVal, childVal) {\n\n parentVal = parentVal && !isArray(parentVal) ? [parentVal] : parentVal;\n\n return childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n }\n\n // default strategy\n function defaultStrat(parentVal, childVal) {\n return isUndefined(childVal) ? parentVal : childVal;\n }\n\n function mergeOptions(parent, child, vm) {\n\n var options = {};\n\n if (isFunction(child)) {\n child = child.options;\n }\n\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n\n for (var key in parent) {\n mergeKey(key);\n }\n\n for (var key$1 in child) {\n if (!hasOwn(parent, key$1)) {\n mergeKey(key$1);\n }\n }\n\n function mergeKey(key) {\n options[key] = (strats[key] || defaultStrat)(parent[key], child[key], vm);\n }\n\n return options;\n }\n\n function parseOptions(options, args) {\n var obj;\n\n if ( args === void 0 ) args = [];\n\n try {\n\n return !options\n ? {}\n : startsWith(options, '{')\n ? JSON.parse(options)\n : args.length && !includes(options, ':')\n ? (( obj = {}, obj[args[0]] = options, obj ))\n : options.split(';').reduce(function (options, option) {\n var ref = option.split(/:(.*)/);\n var key = ref[0];\n var value = ref[1];\n if (key && !isUndefined(value)) {\n options[key.trim()] = value.trim();\n }\n return options;\n }, {});\n\n } catch (e) {\n return {};\n }\n\n }\n\n var id = 0;\n\n var Player = function(el) {\n this.id = ++id;\n this.el = toNode(el);\n };\n\n Player.prototype.isVideo = function () {\n return this.isYoutube() || this.isVimeo() || this.isHTML5();\n };\n\n Player.prototype.isHTML5 = function () {\n return this.el.tagName === 'VIDEO';\n };\n\n Player.prototype.isIFrame = function () {\n return this.el.tagName === 'IFRAME';\n };\n\n Player.prototype.isYoutube = function () {\n return this.isIFrame() && !!this.el.src.match(/\\/\\/.*?youtube(-nocookie)?\\.[a-z]+\\/(watch\\?v=[^&\\s]+|embed)|youtu\\.be\\/.*/);\n };\n\n Player.prototype.isVimeo = function () {\n return this.isIFrame() && !!this.el.src.match(/vimeo\\.com\\/video\\/.*/);\n };\n\n Player.prototype.enableApi = function () {\n var this$1 = this;\n\n\n if (this.ready) {\n return this.ready;\n }\n\n var youtube = this.isYoutube();\n var vimeo = this.isVimeo();\n\n var poller;\n\n if (youtube || vimeo) {\n\n return this.ready = new Promise(function (resolve) {\n\n once(this$1.el, 'load', function () {\n if (youtube) {\n var listener = function () { return post(this$1.el, {event: 'listening', id: this$1.id}); };\n poller = setInterval(listener, 100);\n listener();\n }\n });\n\n listen(function (data) { return youtube && data.id === this$1.id && data.event === 'onReady' || vimeo && Number(data.player_id) === this$1.id; })\n .then(function () {\n resolve();\n poller && clearInterval(poller);\n });\n\n attr(this$1.el, 'src', (\"\" + (this$1.el.src) + (includes(this$1.el.src, '?') ? '&' : '?') + (youtube ? 'enablejsapi=1' : (\"api=1&player_id=\" + (this$1.id)))));\n\n });\n\n }\n\n return Promise.resolve();\n\n };\n\n Player.prototype.play = function () {\n var this$1 = this;\n\n\n if (!this.isVideo()) {\n return;\n }\n\n if (this.isIFrame()) {\n this.enableApi().then(function () { return post(this$1.el, {func: 'playVideo', method: 'play'}); });\n } else if (this.isHTML5()) {\n try {\n var promise = this.el.play();\n\n if (promise) {\n promise.catch(noop);\n }\n } catch (e) {}\n }\n };\n\n Player.prototype.pause = function () {\n var this$1 = this;\n\n\n if (!this.isVideo()) {\n return;\n }\n\n if (this.isIFrame()) {\n this.enableApi().then(function () { return post(this$1.el, {func: 'pauseVideo', method: 'pause'}); });\n } else if (this.isHTML5()) {\n this.el.pause();\n }\n };\n\n Player.prototype.mute = function () {\n var this$1 = this;\n\n\n if (!this.isVideo()) {\n return;\n }\n\n if (this.isIFrame()) {\n this.enableApi().then(function () { return post(this$1.el, {func: 'mute', method: 'setVolume', value: 0}); });\n } else if (this.isHTML5()) {\n this.el.muted = true;\n attr(this.el, 'muted', '');\n }\n\n };\n\n function post(el, cmd) {\n try {\n el.contentWindow.postMessage(JSON.stringify(assign({event: 'command'}, cmd)), '*');\n } catch (e) {}\n }\n\n function listen(cb) {\n\n return new Promise(function (resolve) {\n\n once(window, 'message', function (_, data) { return resolve(data); }, false, function (ref) {\n var data = ref.data;\n\n\n if (!data || !isString(data)) {\n return;\n }\n\n try {\n data = JSON.parse(data);\n } catch (e) {\n return;\n }\n\n return data && cb(data);\n\n });\n\n });\n\n }\n\n var IntersectionObserver = 'IntersectionObserver' in window\n ? window.IntersectionObserver\n : /*@__PURE__*/(function () {\n function IntersectionObserverClass(callback, ref) {\n var this$1 = this;\n if ( ref === void 0 ) ref = {};\n var rootMargin = ref.rootMargin; if ( rootMargin === void 0 ) rootMargin = '0 0';\n\n\n this.targets = [];\n\n var ref$1 = (rootMargin || '0 0').split(' ').map(toFloat);\n var offsetTop = ref$1[0];\n var offsetLeft = ref$1[1];\n\n this.offsetTop = offsetTop;\n this.offsetLeft = offsetLeft;\n\n var pending;\n this.apply = function () {\n\n if (pending) {\n return;\n }\n\n pending = requestAnimationFrame(function () { return setTimeout(function () {\n var records = this$1.takeRecords();\n\n if (records.length) {\n callback(records, this$1);\n }\n\n pending = false;\n }); });\n\n };\n\n this.off = on(window, 'scroll resize load', this.apply, {passive: true, capture: true});\n\n }\n\n IntersectionObserverClass.prototype.takeRecords = function () {\n var this$1 = this;\n\n return this.targets.filter(function (entry) {\n\n var inView = isInView(entry.target, this$1.offsetTop, this$1.offsetLeft);\n\n if (entry.isIntersecting === null || inView ^ entry.isIntersecting) {\n entry.isIntersecting = inView;\n return true;\n }\n\n });\n };\n\n IntersectionObserverClass.prototype.observe = function (target) {\n this.targets.push({\n target: target,\n isIntersecting: null\n });\n this.apply();\n };\n\n IntersectionObserverClass.prototype.disconnect = function () {\n this.targets = [];\n this.off();\n };\n\n return IntersectionObserverClass;\n }());\n\n\n\n var util = /*#__PURE__*/Object.freeze({\n ajax: ajax,\n getImage: getImage,\n transition: transition,\n Transition: Transition,\n animate: animate,\n Animation: Animation,\n attr: attr,\n hasAttr: hasAttr,\n removeAttr: removeAttr,\n data: data,\n addClass: addClass,\n removeClass: removeClass,\n removeClasses: removeClasses,\n replaceClass: replaceClass,\n hasClass: hasClass,\n toggleClass: toggleClass,\n positionAt: positionAt,\n offset: offset,\n position: position,\n height: height,\n width: width,\n boxModelAdjust: boxModelAdjust,\n flipPosition: flipPosition,\n isInView: isInView,\n scrolledOver: scrolledOver,\n scrollTop: scrollTop,\n offsetPosition: offsetPosition,\n toPx: toPx,\n ready: ready,\n index: index,\n getIndex: getIndex,\n empty: empty,\n html: html,\n prepend: prepend,\n append: append,\n before: before,\n after: after,\n remove: remove,\n wrapAll: wrapAll,\n wrapInner: wrapInner,\n unwrap: unwrap,\n fragment: fragment,\n apply: apply,\n $: $,\n $$: $$,\n isIE: isIE,\n isRtl: isRtl,\n hasTouch: hasTouch,\n pointerDown: pointerDown,\n pointerMove: pointerMove,\n pointerUp: pointerUp,\n pointerEnter: pointerEnter,\n pointerLeave: pointerLeave,\n pointerCancel: pointerCancel,\n on: on,\n off: off,\n once: once,\n trigger: trigger,\n createEvent: createEvent,\n toEventTargets: toEventTargets,\n isTouch: isTouch,\n getEventPos: getEventPos,\n fastdom: fastdom,\n isVoidElement: isVoidElement,\n isVisible: isVisible,\n selInput: selInput,\n isInput: isInput,\n filter: filter,\n within: within,\n hasOwn: hasOwn,\n hyphenate: hyphenate,\n camelize: camelize,\n ucfirst: ucfirst,\n startsWith: startsWith,\n endsWith: endsWith,\n includes: includes,\n findIndex: findIndex,\n isArray: isArray,\n isFunction: isFunction,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isWindow: isWindow,\n isDocument: isDocument,\n isJQuery: isJQuery,\n isNode: isNode,\n isNodeCollection: isNodeCollection,\n isBoolean: isBoolean,\n isString: isString,\n isNumber: isNumber,\n isNumeric: isNumeric,\n isEmpty: isEmpty,\n isUndefined: isUndefined,\n toBoolean: toBoolean,\n toNumber: toNumber,\n toFloat: toFloat,\n toNode: toNode,\n toNodes: toNodes,\n toList: toList,\n toMs: toMs,\n isEqual: isEqual,\n swap: swap,\n assign: assign,\n last: last,\n each: each,\n sortBy: sortBy,\n uniqueBy: uniqueBy,\n clamp: clamp,\n noop: noop,\n intersectRect: intersectRect,\n pointInRect: pointInRect,\n Dimensions: Dimensions,\n MouseTracker: MouseTracker,\n mergeOptions: mergeOptions,\n parseOptions: parseOptions,\n Player: Player,\n Promise: Promise,\n Deferred: Deferred,\n IntersectionObserver: IntersectionObserver,\n query: query,\n queryAll: queryAll,\n find: find,\n findAll: findAll,\n matches: matches,\n closest: closest,\n parents: parents,\n escape: escape,\n css: css,\n getStyles: getStyles,\n getStyle: getStyle,\n getCssVar: getCssVar,\n propName: propName\n });\n\n function componentAPI (UIkit) {\n\n var DATA = UIkit.data;\n\n var components = {};\n\n UIkit.component = function (name, options) {\n\n if (!options) {\n\n if (isPlainObject(components[name])) {\n components[name] = UIkit.extend(components[name]);\n }\n\n return components[name];\n\n }\n\n UIkit[name] = function (element, data) {\n var i = arguments.length, argsArray = Array(i);\n while ( i-- ) argsArray[i] = arguments[i];\n\n\n var component = UIkit.component(name);\n\n if (isPlainObject(element)) {\n return new component({data: element});\n }\n\n if (component.options.functional) {\n return new component({data: [].concat( argsArray )});\n }\n\n return element && element.nodeType ? init(element) : $$(element).map(init)[0];\n\n function init(element) {\n\n var instance = UIkit.getComponent(element, name);\n\n if (instance) {\n if (!data) {\n return instance;\n } else {\n instance.$destroy();\n }\n }\n\n return new component({el: element, data: data});\n\n }\n\n };\n\n var opt = isPlainObject(options) ? assign({}, options) : options.options;\n\n opt.name = name;\n\n if (opt.install) {\n opt.install(UIkit, opt, name);\n }\n\n if (UIkit._initialized && !opt.functional) {\n var id = hyphenate(name);\n fastdom.read(function () { return UIkit[name]((\"[uk-\" + id + \"],[data-uk-\" + id + \"]\")); });\n }\n\n return components[name] = isPlainObject(options) ? opt : options;\n };\n\n UIkit.getComponents = function (element) { return element && element[DATA] || {}; };\n UIkit.getComponent = function (element, name) { return UIkit.getComponents(element)[name]; };\n\n UIkit.connect = function (node) {\n\n if (node[DATA]) {\n for (var name in node[DATA]) {\n node[DATA][name]._callConnected();\n }\n }\n\n for (var i = 0; i < node.attributes.length; i++) {\n\n var name$1 = getComponentName(node.attributes[i].name);\n\n if (name$1 && name$1 in components) {\n UIkit[name$1](node);\n }\n\n }\n\n };\n\n UIkit.disconnect = function (node) {\n for (var name in node[DATA]) {\n node[DATA][name]._callDisconnected();\n }\n };\n\n }\n\n function getComponentName(attribute) {\n return startsWith(attribute, 'uk-') || startsWith(attribute, 'data-uk-')\n ? camelize(attribute.replace('data-uk-', '').replace('uk-', ''))\n : false;\n }\n\n function boot (UIkit) {\n\n var connect = UIkit.connect;\n var disconnect = UIkit.disconnect;\n\n if (!('MutationObserver' in window)) {\n return;\n }\n\n if (document.body) {\n\n fastdom.read(init);\n\n } else {\n\n (new MutationObserver(function () {\n\n if (document.body) {\n this.disconnect();\n init();\n }\n\n })).observe(document, {childList: true, subtree: true});\n\n }\n\n function init() {\n\n apply(document.body, connect);\n\n // Safari renders prior to first animation frame\n fastdom.flush();\n\n (new MutationObserver(function (mutations) { return mutations.forEach(applyMutation); })).observe(document, {\n childList: true,\n subtree: true,\n characterData: true,\n attributes: true\n });\n\n UIkit._initialized = true;\n }\n\n function applyMutation(mutation) {\n\n var target = mutation.target;\n var type = mutation.type;\n\n var update = type !== 'attributes'\n ? applyChildList(mutation)\n : applyAttribute(mutation);\n\n update && UIkit.update(target);\n\n }\n\n function applyAttribute(ref) {\n var target = ref.target;\n var attributeName = ref.attributeName;\n\n\n if (attributeName === 'href') {\n return true;\n }\n\n var name = getComponentName(attributeName);\n\n if (!name || !(name in UIkit)) {\n return;\n }\n\n if (hasAttr(target, attributeName)) {\n UIkit[name](target);\n return true;\n }\n\n var component = UIkit.getComponent(target, name);\n\n if (component) {\n component.$destroy();\n return true;\n }\n\n }\n\n function applyChildList(ref) {\n var addedNodes = ref.addedNodes;\n var removedNodes = ref.removedNodes;\n\n\n for (var i = 0; i < addedNodes.length; i++) {\n apply(addedNodes[i], connect);\n }\n\n for (var i$1 = 0; i$1 < removedNodes.length; i$1++) {\n apply(removedNodes[i$1], disconnect);\n }\n\n return true;\n }\n\n function apply(node, fn) {\n\n if (node.nodeType !== 1 || hasAttr(node, 'uk-no-boot')) {\n return;\n }\n\n fn(node);\n node = node.firstElementChild;\n while (node) {\n var next = node.nextElementSibling;\n apply(node, fn);\n node = next;\n }\n }\n\n }\n\n function globalAPI (UIkit) {\n\n var DATA = UIkit.data;\n\n UIkit.use = function (plugin) {\n\n if (plugin.installed) {\n return;\n }\n\n plugin.call(null, this);\n plugin.installed = true;\n\n return this;\n };\n\n UIkit.mixin = function (mixin, component) {\n component = (isString(component) ? UIkit.component(component) : component) || this;\n component.options = mergeOptions(component.options, mixin);\n };\n\n UIkit.extend = function (options) {\n\n options = options || {};\n\n var Super = this;\n var Sub = function UIkitComponent(options) {\n this._init(options);\n };\n\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.options = mergeOptions(Super.options, options);\n\n Sub.super = Super;\n Sub.extend = Super.extend;\n\n return Sub;\n };\n\n UIkit.update = function (element, e) {\n\n element = element ? toNode(element) : document.body;\n\n path(element, function (element) { return update(element[DATA], e); });\n apply(element, function (element) { return update(element[DATA], e); });\n\n };\n\n var container;\n Object.defineProperty(UIkit, 'container', {\n\n get: function() {\n return container || document.body;\n },\n\n set: function(element) {\n container = $(element);\n }\n\n });\n\n function update(data, e) {\n\n if (!data) {\n return;\n }\n\n for (var name in data) {\n if (data[name]._connected) {\n data[name]._callUpdate(e);\n }\n }\n\n }\n\n function path(node, fn) {\n if (node && node !== document.body && node.parentNode) {\n path(node.parentNode, fn);\n fn(node.parentNode);\n }\n }\n\n }\n\n function hooksAPI (UIkit) {\n\n UIkit.prototype._callHook = function (hook) {\n var this$1 = this;\n\n\n var handlers = this.$options[hook];\n\n if (handlers) {\n handlers.forEach(function (handler) { return handler.call(this$1); });\n }\n };\n\n UIkit.prototype._callConnected = function () {\n\n if (this._connected) {\n return;\n }\n\n this._data = {};\n this._computeds = {};\n this._initProps();\n\n this._callHook('beforeConnect');\n this._connected = true;\n\n this._initEvents();\n this._initObserver();\n\n this._callHook('connected');\n this._callUpdate();\n };\n\n UIkit.prototype._callDisconnected = function () {\n\n if (!this._connected) {\n return;\n }\n\n this._callHook('beforeDisconnect');\n\n if (this._observer) {\n this._observer.disconnect();\n this._observer = null;\n }\n\n this._unbindEvents();\n this._callHook('disconnected');\n\n this._connected = false;\n\n };\n\n UIkit.prototype._callUpdate = function (e) {\n var this$1 = this;\n if ( e === void 0 ) e = 'update';\n\n\n var type = e.type || e;\n\n if (includes(['update', 'resize'], type)) {\n this._callWatches();\n }\n\n var updates = this.$options.update;\n var ref = this._frames;\n var reads = ref.reads;\n var writes = ref.writes;\n\n if (!updates) {\n return;\n }\n\n updates.forEach(function (ref, i) {\n var read = ref.read;\n var write = ref.write;\n var events = ref.events;\n\n\n if (type !== 'update' && !includes(events, type)) {\n return;\n }\n\n if (read && !includes(fastdom.reads, reads[i])) {\n reads[i] = fastdom.read(function () {\n\n var result = this$1._connected && read.call(this$1, this$1._data, type);\n\n if (result === false && write) {\n fastdom.clear(writes[i]);\n } else if (isPlainObject(result)) {\n assign(this$1._data, result);\n }\n });\n }\n\n if (write && !includes(fastdom.writes, writes[i])) {\n writes[i] = fastdom.write(function () { return this$1._connected && write.call(this$1, this$1._data, type); });\n }\n\n });\n\n };\n\n }\n\n function stateAPI (UIkit) {\n\n var uid = 0;\n\n UIkit.prototype._init = function (options) {\n\n options = options || {};\n options.data = normalizeData(options, this.constructor.options);\n\n this.$options = mergeOptions(this.constructor.options, options, this);\n this.$el = null;\n this.$props = {};\n\n this._frames = {reads: {}, writes: {}};\n this._events = [];\n\n this._uid = uid++;\n this._initData();\n this._initMethods();\n this._initComputeds();\n this._callHook('created');\n\n if (options.el) {\n this.$mount(options.el);\n }\n };\n\n UIkit.prototype._initData = function () {\n\n var ref = this.$options;\n var data = ref.data; if ( data === void 0 ) data = {};\n\n for (var key in data) {\n this.$props[key] = this[key] = data[key];\n }\n };\n\n UIkit.prototype._initMethods = function () {\n\n var ref = this.$options;\n var methods = ref.methods;\n\n if (methods) {\n for (var key in methods) {\n this[key] = methods[key].bind(this);\n }\n }\n };\n\n UIkit.prototype._initComputeds = function () {\n\n var ref = this.$options;\n var computed = ref.computed;\n\n this._computeds = {};\n\n if (computed) {\n for (var key in computed) {\n registerComputed(this, key, computed[key]);\n }\n }\n };\n\n UIkit.prototype._callWatches = function () {\n\n var ref = this;\n var computed = ref.$options.computed;\n var _computeds = ref._computeds;\n\n for (var key in _computeds) {\n\n var value = _computeds[key];\n delete _computeds[key];\n\n if (computed[key].watch && !isEqual(value, this[key])) {\n computed[key].watch.call(this, this[key], value);\n }\n\n }\n\n };\n\n UIkit.prototype._initProps = function (props) {\n\n var key;\n\n props = props || getProps(this.$options, this.$name);\n\n for (key in props) {\n if (!isUndefined(props[key])) {\n this.$props[key] = props[key];\n }\n }\n\n var exclude = [this.$options.computed, this.$options.methods];\n for (key in this.$props) {\n if (key in props && notIn(exclude, key)) {\n this[key] = this.$props[key];\n }\n }\n };\n\n UIkit.prototype._initEvents = function () {\n var this$1 = this;\n\n\n var ref = this.$options;\n var events = ref.events;\n\n if (events) {\n\n events.forEach(function (event) {\n\n if (!hasOwn(event, 'handler')) {\n for (var key in event) {\n registerEvent(this$1, event[key], key);\n }\n } else {\n registerEvent(this$1, event);\n }\n\n });\n }\n };\n\n UIkit.prototype._unbindEvents = function () {\n this._events.forEach(function (unbind) { return unbind(); });\n this._events = [];\n };\n\n UIkit.prototype._initObserver = function () {\n var this$1 = this;\n\n\n var ref = this.$options;\n var attrs = ref.attrs;\n var props = ref.props;\n var el = ref.el;\n if (this._observer || !props || attrs === false) {\n return;\n }\n\n attrs = isArray(attrs) ? attrs : Object.keys(props);\n\n this._observer = new MutationObserver(function () {\n\n var data = getProps(this$1.$options, this$1.$name);\n if (attrs.some(function (key) { return !isUndefined(data[key]) && data[key] !== this$1.$props[key]; })) {\n this$1.$reset();\n }\n\n });\n\n var filter = attrs.map(function (key) { return hyphenate(key); }).concat(this.$name);\n\n this._observer.observe(el, {\n attributes: true,\n attributeFilter: filter.concat(filter.map(function (key) { return (\"data-\" + key); }))\n });\n };\n\n function getProps(opts, name) {\n\n var data$1 = {};\n var args = opts.args; if ( args === void 0 ) args = [];\n var props = opts.props; if ( props === void 0 ) props = {};\n var el = opts.el;\n\n if (!props) {\n return data$1;\n }\n\n for (var key in props) {\n var prop = hyphenate(key);\n var value = data(el, prop);\n\n if (!isUndefined(value)) {\n\n value = props[key] === Boolean && value === ''\n ? true\n : coerce(props[key], value);\n\n if (prop === 'target' && (!value || startsWith(value, '_'))) {\n continue;\n }\n\n data$1[key] = value;\n }\n }\n\n var options = parseOptions(data(el, name), args);\n\n for (var key$1 in options) {\n var prop$1 = camelize(key$1);\n if (props[prop$1] !== undefined) {\n data$1[prop$1] = coerce(props[prop$1], options[key$1]);\n }\n }\n\n return data$1;\n }\n\n function registerComputed(component, key, cb) {\n Object.defineProperty(component, key, {\n\n enumerable: true,\n\n get: function() {\n\n var _computeds = component._computeds;\n var $props = component.$props;\n var $el = component.$el;\n\n if (!hasOwn(_computeds, key)) {\n _computeds[key] = (cb.get || cb).call(component, $props, $el);\n }\n\n return _computeds[key];\n },\n\n set: function(value) {\n\n var _computeds = component._computeds;\n\n _computeds[key] = cb.set ? cb.set.call(component, value) : value;\n\n if (isUndefined(_computeds[key])) {\n delete _computeds[key];\n }\n }\n\n });\n }\n\n function registerEvent(component, event, key) {\n\n if (!isPlainObject(event)) {\n event = ({name: key, handler: event});\n }\n\n var name = event.name;\n var el = event.el;\n var handler = event.handler;\n var capture = event.capture;\n var passive = event.passive;\n var delegate = event.delegate;\n var filter = event.filter;\n var self = event.self;\n el = isFunction(el)\n ? el.call(component)\n : el || component.$el;\n\n if (isArray(el)) {\n el.forEach(function (el) { return registerEvent(component, assign({}, event, {el: el}), key); });\n return;\n }\n\n if (!el || filter && !filter.call(component)) {\n return;\n }\n\n component._events.push(\n on(\n el,\n name,\n !delegate\n ? null\n : isString(delegate)\n ? delegate\n : delegate.call(component),\n isString(handler) ? component[handler] : handler.bind(component),\n {passive: passive, capture: capture, self: self}\n )\n );\n\n }\n\n function notIn(options, key) {\n return options.every(function (arr) { return !arr || !hasOwn(arr, key); });\n }\n\n function coerce(type, value) {\n\n if (type === Boolean) {\n return toBoolean(value);\n } else if (type === Number) {\n return toNumber(value);\n } else if (type === 'list') {\n return toList(value);\n }\n\n return type ? type(value) : value;\n }\n\n function normalizeData(ref, ref$1) {\n var data = ref.data;\n var el = ref.el;\n var args = ref$1.args;\n var props = ref$1.props; if ( props === void 0 ) props = {};\n\n data = isArray(data)\n ? !isEmpty(args)\n ? data.slice(0, args.length).reduce(function (data, value, index) {\n if (isPlainObject(value)) {\n assign(data, value);\n } else {\n data[args[index]] = value;\n }\n return data;\n }, {})\n : undefined\n : data;\n\n if (data) {\n for (var key in data) {\n if (isUndefined(data[key])) {\n delete data[key];\n } else {\n data[key] = props[key] ? coerce(props[key], data[key]) : data[key];\n }\n }\n }\n\n return data;\n }\n }\n\n function instanceAPI (UIkit) {\n\n var DATA = UIkit.data;\n\n UIkit.prototype.$mount = function (el) {\n\n var ref = this.$options;\n var name = ref.name;\n\n if (!el[DATA]) {\n el[DATA] = {};\n }\n\n if (el[DATA][name]) {\n return;\n }\n\n el[DATA][name] = this;\n\n this.$el = this.$options.el = this.$options.el || el;\n\n if (within(el, document)) {\n this._callConnected();\n }\n };\n\n UIkit.prototype.$emit = function (e) {\n this._callUpdate(e);\n };\n\n UIkit.prototype.$reset = function () {\n this._callDisconnected();\n this._callConnected();\n };\n\n UIkit.prototype.$destroy = function (removeEl) {\n if ( removeEl === void 0 ) removeEl = false;\n\n\n var ref = this.$options;\n var el = ref.el;\n var name = ref.name;\n\n if (el) {\n this._callDisconnected();\n }\n\n this._callHook('destroy');\n\n if (!el || !el[DATA]) {\n return;\n }\n\n delete el[DATA][name];\n\n if (!isEmpty(el[DATA])) {\n delete el[DATA];\n }\n\n if (removeEl) {\n remove(this.$el);\n }\n };\n\n UIkit.prototype.$create = function (component, element, data) {\n return UIkit[component](element, data);\n };\n\n UIkit.prototype.$update = UIkit.update;\n UIkit.prototype.$getComponent = UIkit.getComponent;\n\n var names = {};\n Object.defineProperties(UIkit.prototype, {\n\n $container: Object.getOwnPropertyDescriptor(UIkit, 'container'),\n\n $name: {\n\n get: function() {\n var ref = this.$options;\n var name = ref.name;\n\n if (!names[name]) {\n names[name] = UIkit.prefix + hyphenate(name);\n }\n\n return names[name];\n }\n\n }\n\n });\n\n }\n\n var UIkit = function (options) {\n this._init(options);\n };\n\n UIkit.util = util;\n UIkit.data = '__uikit__';\n UIkit.prefix = 'uk-';\n UIkit.options = {};\n\n globalAPI(UIkit);\n hooksAPI(UIkit);\n stateAPI(UIkit);\n componentAPI(UIkit);\n instanceAPI(UIkit);\n\n var Class = {\n\n connected: function() {\n !hasClass(this.$el, this.$name) && addClass(this.$el, this.$name);\n }\n\n };\n\n var Togglable = {\n\n props: {\n cls: Boolean,\n animation: 'list',\n duration: Number,\n origin: String,\n transition: String,\n queued: Boolean\n },\n\n data: {\n cls: false,\n animation: [false],\n duration: 200,\n origin: false,\n transition: 'linear',\n queued: false,\n\n initProps: {\n overflow: '',\n height: '',\n paddingTop: '',\n paddingBottom: '',\n marginTop: '',\n marginBottom: ''\n },\n\n hideProps: {\n overflow: 'hidden',\n height: 0,\n paddingTop: 0,\n paddingBottom: 0,\n marginTop: 0,\n marginBottom: 0\n }\n\n },\n\n computed: {\n\n hasAnimation: function(ref) {\n var animation = ref.animation;\n\n return !!animation[0];\n },\n\n hasTransition: function(ref) {\n var animation = ref.animation;\n\n return this.hasAnimation && animation[0] === true;\n }\n\n },\n\n methods: {\n\n toggleElement: function(targets, show, animate) {\n var this$1 = this;\n\n return new Promise(function (resolve) {\n\n targets = toNodes(targets);\n\n var all = function (targets) { return Promise.all(targets.map(function (el) { return this$1._toggleElement(el, show, animate); })); };\n var toggled = targets.filter(function (el) { return this$1.isToggled(el); });\n var untoggled = targets.filter(function (el) { return !includes(toggled, el); });\n\n var p;\n\n if (!this$1.queued || !isUndefined(animate) || !isUndefined(show) || !this$1.hasAnimation || targets.length < 2) {\n\n p = all(untoggled.concat(toggled));\n\n } else {\n\n var body = document.body;\n var scroll = body.scrollTop;\n var el = toggled[0];\n var inProgress = Animation.inProgress(el) && hasClass(el, 'uk-animation-leave')\n || Transition.inProgress(el) && el.style.height === '0px';\n\n p = all(toggled);\n\n if (!inProgress) {\n p = p.then(function () {\n var p = all(untoggled);\n body.scrollTop = scroll;\n return p;\n });\n }\n\n }\n\n p.then(resolve, noop);\n\n });\n },\n\n toggleNow: function(targets, show) {\n var this$1 = this;\n\n return new Promise(function (resolve) { return Promise.all(toNodes(targets).map(function (el) { return this$1._toggleElement(el, show, false); })).then(resolve, noop); });\n },\n\n isToggled: function(el) {\n var nodes = toNodes(el || this.$el);\n return this.cls\n ? hasClass(nodes, this.cls.split(' ')[0])\n : !hasAttr(nodes, 'hidden');\n },\n\n updateAria: function(el) {\n if (this.cls === false) {\n attr(el, 'aria-hidden', !this.isToggled(el));\n }\n },\n\n _toggleElement: function(el, show, animate) {\n var this$1 = this;\n\n\n show = isBoolean(show)\n ? show\n : Animation.inProgress(el)\n ? hasClass(el, 'uk-animation-leave')\n : Transition.inProgress(el)\n ? el.style.height === '0px'\n : !this.isToggled(el);\n\n if (!trigger(el, (\"before\" + (show ? 'show' : 'hide')), [this])) {\n return Promise.reject();\n }\n\n var promise = (\n isFunction(animate)\n ? animate\n : animate === false || !this.hasAnimation\n ? this._toggle\n : this.hasTransition\n ? toggleHeight(this)\n : toggleAnimation(this)\n )(el, show);\n\n trigger(el, show ? 'show' : 'hide', [this]);\n\n var final = function () {\n trigger(el, show ? 'shown' : 'hidden', [this$1]);\n this$1.$update(el);\n };\n\n return promise ? promise.then(final) : Promise.resolve(final());\n },\n\n _toggle: function(el, toggled) {\n\n if (!el) {\n return;\n }\n\n toggled = Boolean(toggled);\n\n var changed;\n if (this.cls) {\n changed = includes(this.cls, ' ') || toggled !== hasClass(el, this.cls);\n changed && toggleClass(el, this.cls, includes(this.cls, ' ') ? undefined : toggled);\n } else {\n changed = toggled === hasAttr(el, 'hidden');\n changed && attr(el, 'hidden', !toggled ? '' : null);\n }\n\n $$('[autofocus]', el).some(function (el) { return isVisible(el) ? el.focus() || true : el.blur(); });\n\n this.updateAria(el);\n changed && this.$update(el);\n }\n\n }\n\n };\n\n function toggleHeight(ref) {\n var isToggled = ref.isToggled;\n var duration = ref.duration;\n var initProps = ref.initProps;\n var hideProps = ref.hideProps;\n var transition = ref.transition;\n var _toggle = ref._toggle;\n\n return function (el, show) {\n\n var inProgress = Transition.inProgress(el);\n var inner = el.hasChildNodes ? toFloat(css(el.firstElementChild, 'marginTop')) + toFloat(css(el.lastElementChild, 'marginBottom')) : 0;\n var currentHeight = isVisible(el) ? height(el) + (inProgress ? 0 : inner) : 0;\n\n Transition.cancel(el);\n\n if (!isToggled(el)) {\n _toggle(el, true);\n }\n\n height(el, '');\n\n // Update child components first\n fastdom.flush();\n\n var endHeight = height(el) + (inProgress ? 0 : inner);\n height(el, currentHeight);\n\n return (show\n ? Transition.start(el, assign({}, initProps, {overflow: 'hidden', height: endHeight}), Math.round(duration * (1 - currentHeight / endHeight)), transition)\n : Transition.start(el, hideProps, Math.round(duration * (currentHeight / endHeight)), transition).then(function () { return _toggle(el, false); })\n ).then(function () { return css(el, initProps); });\n\n };\n }\n\n function toggleAnimation(ref) {\n var animation = ref.animation;\n var duration = ref.duration;\n var origin = ref.origin;\n var _toggle = ref._toggle;\n\n return function (el, show) {\n\n Animation.cancel(el);\n\n if (show) {\n _toggle(el, true);\n return Animation.in(el, animation[0], duration, origin);\n }\n\n return Animation.out(el, animation[1] || animation[0], duration, origin).then(function () { return _toggle(el, false); });\n };\n }\n\n var Accordion = {\n\n mixins: [Class, Togglable],\n\n props: {\n targets: String,\n active: null,\n collapsible: Boolean,\n multiple: Boolean,\n toggle: String,\n content: String,\n transition: String\n },\n\n data: {\n targets: '> *',\n active: false,\n animation: [true],\n collapsible: true,\n multiple: false,\n clsOpen: 'uk-open',\n toggle: '> .uk-accordion-title',\n content: '> .uk-accordion-content',\n transition: 'ease'\n },\n\n computed: {\n\n items: function(ref, $el) {\n var targets = ref.targets;\n\n return $$(targets, $el);\n }\n\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return ((this.targets) + \" \" + (this.$props.toggle));\n },\n\n handler: function(e) {\n e.preventDefault();\n this.toggle(index($$(((this.targets) + \" \" + (this.$props.toggle)), this.$el), e.current));\n }\n\n }\n\n ],\n\n connected: function() {\n\n if (this.active === false) {\n return;\n }\n\n var active = this.items[Number(this.active)];\n if (active && !hasClass(active, this.clsOpen)) {\n this.toggle(active, false);\n }\n },\n\n update: function() {\n var this$1 = this;\n\n\n this.items.forEach(function (el) { return this$1._toggle($(this$1.content, el), hasClass(el, this$1.clsOpen)); });\n\n var active = !this.collapsible && !hasClass(this.items, this.clsOpen) && this.items[0];\n if (active) {\n this.toggle(active, false);\n }\n },\n\n methods: {\n\n toggle: function(item, animate) {\n var this$1 = this;\n\n\n var index = getIndex(item, this.items);\n var active = filter(this.items, (\".\" + (this.clsOpen)));\n\n item = this.items[index];\n\n item && [item]\n .concat(!this.multiple && !includes(active, item) && active || [])\n .forEach(function (el) {\n\n var isItem = el === item;\n var state = isItem && !hasClass(el, this$1.clsOpen);\n\n if (!state && isItem && !this$1.collapsible && active.length < 2) {\n return;\n }\n\n toggleClass(el, this$1.clsOpen, state);\n\n var content = el._wrapper ? el._wrapper.firstElementChild : $(this$1.content, el);\n\n if (!el._wrapper) {\n el._wrapper = wrapAll(content, '<div>');\n attr(el._wrapper, 'hidden', state ? '' : null);\n }\n\n this$1._toggle(content, true);\n this$1.toggleElement(el._wrapper, state, animate).then(function () {\n\n if (hasClass(el, this$1.clsOpen) !== state) {\n return;\n }\n\n if (!state) {\n this$1._toggle(content, false);\n }\n\n el._wrapper = null;\n unwrap(content);\n\n });\n\n });\n }\n\n }\n\n };\n\n var Alert = {\n\n mixins: [Class, Togglable],\n\n args: 'animation',\n\n props: {\n close: String\n },\n\n data: {\n animation: [true],\n selClose: '.uk-alert-close',\n duration: 150,\n hideProps: assign({opacity: 0}, Togglable.data.hideProps)\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return this.selClose;\n },\n\n handler: function(e) {\n e.preventDefault();\n this.close();\n }\n\n }\n\n ],\n\n methods: {\n\n close: function() {\n var this$1 = this;\n\n this.toggleElement(this.$el).then(function () { return this$1.$destroy(true); });\n }\n\n }\n\n };\n\n function Core (UIkit) {\n\n ready(function () {\n\n UIkit.update();\n on(window, 'load resize', function () { return UIkit.update(null, 'resize'); });\n on(document, 'loadedmetadata load', function (ref) {\n var target = ref.target;\n\n return UIkit.update(target, 'resize');\n }, true);\n\n // throttle `scroll` event (Safari triggers multiple `scroll` events per frame)\n var pending;\n on(window, 'scroll', function (e) {\n\n if (pending) {\n return;\n }\n pending = true;\n fastdom.write(function () { return pending = false; });\n\n var target = e.target;\n UIkit.update(target.nodeType !== 1 ? document.body : target, e.type);\n\n }, {passive: true, capture: true});\n\n var started = 0;\n on(document, 'animationstart', function (ref) {\n var target = ref.target;\n\n if ((css(target, 'animationName') || '').match(/^uk-.*(left|right)/)) {\n\n started++;\n css(document.body, 'overflowX', 'hidden');\n setTimeout(function () {\n if (!--started) {\n css(document.body, 'overflowX', '');\n }\n }, toMs(css(target, 'animationDuration')) + 100);\n }\n }, true);\n\n var off;\n on(document, pointerDown, function (e) {\n\n off && off();\n\n if (!isTouch(e)) {\n return;\n }\n\n // Handle Swipe Gesture\n var pos = getEventPos(e);\n var target = 'tagName' in e.target ? e.target : e.target.parentNode;\n off = once(document, (pointerUp + \" \" + pointerCancel), function (e) {\n\n var ref = getEventPos(e);\n var x = ref.x;\n var y = ref.y;\n\n // swipe\n if (target && x && Math.abs(pos.x - x) > 100 || y && Math.abs(pos.y - y) > 100) {\n\n setTimeout(function () {\n trigger(target, 'swipe');\n trigger(target, (\"swipe\" + (swipeDirection(pos.x, pos.y, x, y))));\n });\n\n }\n\n });\n\n // Force click event anywhere on iOS < 13\n if (pointerDown === 'touchstart') {\n css(document.body, 'cursor', 'pointer');\n once(document, (pointerUp + \" \" + pointerCancel), function () { return setTimeout(function () { return css(document.body, 'cursor', ''); }\n , 50); }\n );\n }\n\n }, {passive: true});\n\n });\n\n }\n\n function swipeDirection(x1, y1, x2, y2) {\n return Math.abs(x1 - x2) >= Math.abs(y1 - y2)\n ? x1 - x2 > 0\n ? 'Left'\n : 'Right'\n : y1 - y2 > 0\n ? 'Up'\n : 'Down';\n }\n\n var Video = {\n\n args: 'autoplay',\n\n props: {\n automute: Boolean,\n autoplay: Boolean\n },\n\n data: {\n automute: false,\n autoplay: true\n },\n\n computed: {\n\n inView: function(ref) {\n var autoplay = ref.autoplay;\n\n return autoplay === 'inview';\n }\n\n },\n\n connected: function() {\n\n if (this.inView && !hasAttr(this.$el, 'preload')) {\n this.$el.preload = 'none';\n }\n\n this.player = new Player(this.$el);\n\n if (this.automute) {\n this.player.mute();\n }\n\n },\n\n update: {\n\n read: function() {\n\n return !this.player\n ? false\n : {\n visible: isVisible(this.$el) && css(this.$el, 'visibility') !== 'hidden',\n inView: this.inView && isInView(this.$el)\n };\n },\n\n write: function(ref) {\n var visible = ref.visible;\n var inView = ref.inView;\n\n\n if (!visible || this.inView && !inView) {\n this.player.pause();\n } else if (this.autoplay === true || this.inView && inView) {\n this.player.play();\n }\n\n },\n\n events: ['resize', 'scroll']\n\n }\n\n };\n\n var Cover = {\n\n mixins: [Class, Video],\n\n props: {\n width: Number,\n height: Number\n },\n\n data: {\n automute: true\n },\n\n update: {\n\n read: function() {\n\n var el = this.$el;\n var ref = el.parentNode;\n var height = ref.offsetHeight;\n var width = ref.offsetWidth;\n var dim = Dimensions.cover(\n {\n width: this.width || el.naturalWidth || el.videoWidth || el.clientWidth,\n height: this.height || el.naturalHeight || el.videoHeight || el.clientHeight\n },\n {\n width: width + (width % 2 ? 1 : 0),\n height: height + (height % 2 ? 1 : 0)\n }\n );\n\n if (!dim.width || !dim.height) {\n return false;\n }\n\n return dim;\n },\n\n write: function(ref) {\n var height = ref.height;\n var width = ref.width;\n\n css(this.$el, {height: height, width: width});\n },\n\n events: ['resize']\n\n }\n\n };\n\n var Position = {\n\n props: {\n pos: String,\n offset: null,\n flip: Boolean,\n clsPos: String\n },\n\n data: {\n pos: (\"bottom-\" + (!isRtl ? 'left' : 'right')),\n flip: true,\n offset: false,\n clsPos: ''\n },\n\n computed: {\n\n pos: function(ref) {\n var pos = ref.pos;\n\n return (pos + (!includes(pos, '-') ? '-center' : '')).split('-');\n },\n\n dir: function() {\n return this.pos[0];\n },\n\n align: function() {\n return this.pos[1];\n }\n\n },\n\n methods: {\n\n positionAt: function(element, target, boundary) {\n\n removeClasses(element, ((this.clsPos) + \"-(top|bottom|left|right)(-[a-z]+)?\"));\n css(element, {top: '', left: ''});\n\n var node;\n var ref = this;\n var offset$1 = ref.offset;\n var axis = this.getAxis();\n\n if (!isNumeric(offset$1)) {\n node = $(offset$1);\n offset$1 = node\n ? offset(node)[axis === 'x' ? 'left' : 'top'] - offset(target)[axis === 'x' ? 'right' : 'bottom']\n : 0;\n }\n\n var ref$1 = positionAt(\n element,\n target,\n axis === 'x' ? ((flipPosition(this.dir)) + \" \" + (this.align)) : ((this.align) + \" \" + (flipPosition(this.dir))),\n axis === 'x' ? ((this.dir) + \" \" + (this.align)) : ((this.align) + \" \" + (this.dir)),\n axis === 'x' ? (\"\" + (this.dir === 'left' ? -offset$1 : offset$1)) : (\" \" + (this.dir === 'top' ? -offset$1 : offset$1)),\n null,\n this.flip,\n boundary\n ).target;\n var x = ref$1.x;\n var y = ref$1.y;\n\n this.dir = axis === 'x' ? x : y;\n this.align = axis === 'x' ? y : x;\n\n toggleClass(element, ((this.clsPos) + \"-\" + (this.dir) + \"-\" + (this.align)), this.offset === false);\n\n },\n\n getAxis: function() {\n return this.dir === 'top' || this.dir === 'bottom' ? 'y' : 'x';\n }\n\n }\n\n };\n\n var active;\n\n var Drop = {\n\n mixins: [Position, Togglable],\n\n args: 'pos',\n\n props: {\n mode: 'list',\n toggle: Boolean,\n boundary: Boolean,\n boundaryAlign: Boolean,\n delayShow: Number,\n delayHide: Number,\n clsDrop: String\n },\n\n data: {\n mode: ['click', 'hover'],\n toggle: '- *',\n boundary: window,\n boundaryAlign: false,\n delayShow: 0,\n delayHide: 800,\n clsDrop: false,\n hoverIdle: 200,\n animation: ['uk-animation-fade'],\n cls: 'uk-open'\n },\n\n computed: {\n\n boundary: function(ref, $el) {\n var boundary = ref.boundary;\n\n return query(boundary, $el);\n },\n\n clsDrop: function(ref) {\n var clsDrop = ref.clsDrop;\n\n return clsDrop || (\"uk-\" + (this.$options.name));\n },\n\n clsPos: function() {\n return this.clsDrop;\n }\n\n },\n\n created: function() {\n this.tracker = new MouseTracker();\n },\n\n connected: function() {\n\n addClass(this.$el, this.clsDrop);\n\n var ref = this.$props;\n var toggle = ref.toggle;\n this.toggle = toggle && this.$create('toggle', query(toggle, this.$el), {\n target: this.$el,\n mode: this.mode\n });\n\n !this.toggle && trigger(this.$el, 'updatearia');\n\n },\n\n events: [\n\n\n {\n\n name: 'click',\n\n delegate: function() {\n return (\".\" + (this.clsDrop) + \"-close\");\n },\n\n handler: function(e) {\n e.preventDefault();\n this.hide(false);\n }\n\n },\n\n {\n\n name: 'click',\n\n delegate: function() {\n return 'a[href^=\"#\"]';\n },\n\n handler: function(ref) {\n var defaultPrevented = ref.defaultPrevented;\n var hash = ref.current.hash;\n\n if (!defaultPrevented && hash && !within(hash, this.$el)) {\n this.hide(false);\n }\n }\n\n },\n\n {\n\n name: 'beforescroll',\n\n handler: function() {\n this.hide(false);\n }\n\n },\n\n {\n\n name: 'toggle',\n\n self: true,\n\n handler: function(e, toggle) {\n\n e.preventDefault();\n\n if (this.isToggled()) {\n this.hide(false);\n } else {\n this.show(toggle, false);\n }\n }\n\n },\n\n {\n\n name: pointerEnter,\n\n filter: function() {\n return includes(this.mode, 'hover');\n },\n\n handler: function(e) {\n\n if (isTouch(e)) {\n return;\n }\n\n if (active\n && active !== this\n && active.toggle\n && includes(active.toggle.mode, 'hover')\n && !within(e.target, active.toggle.$el)\n && !pointInRect({x: e.pageX, y: e.pageY}, offset(active.$el))\n ) {\n active.hide(false);\n }\n\n e.preventDefault();\n this.show(this.toggle);\n }\n\n },\n\n {\n\n name: 'toggleshow',\n\n handler: function(e, toggle) {\n\n if (toggle && !includes(toggle.target, this.$el)) {\n return;\n }\n\n e.preventDefault();\n this.show(toggle || this.toggle);\n }\n\n },\n\n {\n\n name: (\"togglehide \" + pointerLeave),\n\n handler: function(e, toggle) {\n\n if (isTouch(e) || toggle && !includes(toggle.target, this.$el)) {\n return;\n }\n\n e.preventDefault();\n\n if (this.toggle && includes(this.toggle.mode, 'hover')) {\n this.hide();\n }\n }\n\n },\n\n {\n\n name: 'beforeshow',\n\n self: true,\n\n handler: function() {\n this.clearTimers();\n Animation.cancel(this.$el);\n this.position();\n }\n\n },\n\n {\n\n name: 'show',\n\n self: true,\n\n handler: function() {\n var this$1 = this;\n\n this.tracker.init();\n trigger(this.$el, 'updatearia');\n\n // If triggered from an click event handler, delay adding the click handler\n var off = delayOn(document, 'click', function (ref) {\n var defaultPrevented = ref.defaultPrevented;\n var target = ref.target;\n\n if (!defaultPrevented && !within(target, this$1.$el) && !(this$1.toggle && within(target, this$1.toggle.$el))) {\n this$1.hide(false);\n }\n });\n\n once(this.$el, 'hide', off, {self: true});\n }\n\n },\n\n {\n\n name: 'beforehide',\n\n self: true,\n\n handler: function() {\n this.clearTimers();\n }\n\n },\n\n {\n\n name: 'hide',\n\n handler: function(ref) {\n var target = ref.target;\n\n\n if (this.$el !== target) {\n active = active === null && within(target, this.$el) && this.isToggled() ? this : active;\n return;\n }\n\n active = this.isActive() ? null : active;\n trigger(this.$el, 'updatearia');\n this.tracker.cancel();\n }\n\n },\n\n {\n\n name: 'updatearia',\n\n self: true,\n\n handler: function(e, toggle) {\n\n e.preventDefault();\n\n this.updateAria(this.$el);\n\n if (toggle || this.toggle) {\n attr((toggle || this.toggle).$el, 'aria-expanded', this.isToggled());\n toggleClass(this.toggle.$el, this.cls, this.isToggled());\n }\n }\n }\n\n ],\n\n update: {\n\n write: function() {\n\n if (this.isToggled() && !Animation.inProgress(this.$el)) {\n this.position();\n }\n\n },\n\n events: ['resize']\n\n },\n\n methods: {\n\n show: function(toggle, delay) {\n var this$1 = this;\n if ( delay === void 0 ) delay = true;\n\n\n var show = function () { return !this$1.isToggled() && this$1.toggleElement(this$1.$el, true); };\n var tryShow = function () {\n\n this$1.toggle = toggle || this$1.toggle;\n\n this$1.clearTimers();\n\n if (this$1.isActive()) {\n return;\n } else if (delay && active && active !== this$1 && active.isDelaying) {\n this$1.showTimer = setTimeout(this$1.show, 10);\n return;\n } else if (this$1.isParentOf(active)) {\n\n if (active.hideTimer) {\n active.hide(false);\n } else {\n return;\n }\n\n } else if (this$1.isChildOf(active)) {\n\n active.clearTimers();\n\n } else if (active && !this$1.isChildOf(active) && !this$1.isParentOf(active)) {\n\n var prev;\n while (active && active !== prev && !this$1.isChildOf(active)) {\n prev = active;\n active.hide(false);\n }\n\n }\n\n if (delay && this$1.delayShow) {\n this$1.showTimer = setTimeout(show, this$1.delayShow);\n } else {\n show();\n }\n\n active = this$1;\n };\n\n if (toggle && this.toggle && toggle.$el !== this.toggle.$el) {\n\n once(this.$el, 'hide', tryShow);\n this.hide(false);\n\n } else {\n tryShow();\n }\n },\n\n hide: function(delay) {\n var this$1 = this;\n if ( delay === void 0 ) delay = true;\n\n\n var hide = function () { return this$1.toggleNow(this$1.$el, false); };\n\n this.clearTimers();\n\n this.isDelaying = this.tracker.movesTo(this.$el);\n\n if (delay && this.isDelaying) {\n this.hideTimer = setTimeout(this.hide, this.hoverIdle);\n } else if (delay && this.delayHide) {\n this.hideTimer = setTimeout(hide, this.delayHide);\n } else {\n hide();\n }\n },\n\n clearTimers: function() {\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n this.showTimer = null;\n this.hideTimer = null;\n this.isDelaying = false;\n },\n\n isActive: function() {\n return active === this;\n },\n\n isChildOf: function(drop) {\n return drop && drop !== this && within(this.$el, drop.$el);\n },\n\n isParentOf: function(drop) {\n return drop && drop !== this && within(drop.$el, this.$el);\n },\n\n position: function() {\n\n removeClasses(this.$el, ((this.clsDrop) + \"-(stack|boundary)\"));\n css(this.$el, {top: '', left: '', display: 'block'});\n toggleClass(this.$el, ((this.clsDrop) + \"-boundary\"), this.boundaryAlign);\n\n var boundary = offset(this.boundary);\n var alignTo = this.boundaryAlign ? boundary : offset(this.toggle.$el);\n\n if (this.align === 'justify') {\n var prop = this.getAxis() === 'y' ? 'width' : 'height';\n css(this.$el, prop, alignTo[prop]);\n } else if (this.$el.offsetWidth > Math.max(boundary.right - alignTo.left, alignTo.right - boundary.left)) {\n addClass(this.$el, ((this.clsDrop) + \"-stack\"));\n }\n\n this.positionAt(this.$el, this.boundaryAlign ? this.boundary : this.toggle.$el, this.boundary);\n\n css(this.$el, 'display', '');\n\n }\n\n }\n\n };\n\n function delayOn(el, type, fn) {\n var off = once(el, type, function () { return off = on(el, type, fn); }\n , true);\n return function () { return off(); };\n }\n\n var Dropdown = {\n\n extends: Drop\n\n };\n\n var FormCustom = {\n\n mixins: [Class],\n\n args: 'target',\n\n props: {\n target: Boolean\n },\n\n data: {\n target: false\n },\n\n computed: {\n\n input: function(_, $el) {\n return $(selInput, $el);\n },\n\n state: function() {\n return this.input.nextElementSibling;\n },\n\n target: function(ref, $el) {\n var target = ref.target;\n\n return target && (target === true\n && this.input.parentNode === $el\n && this.input.nextElementSibling\n || query(target, $el));\n }\n\n },\n\n update: function() {\n\n var ref = this;\n var target = ref.target;\n var input = ref.input;\n\n if (!target) {\n return;\n }\n\n var option;\n var prop = isInput(target) ? 'value' : 'textContent';\n var prev = target[prop];\n var value = input.files && input.files[0]\n ? input.files[0].name\n : matches(input, 'select') && (option = $$('option', input).filter(function (el) { return el.selected; })[0]) // eslint-disable-line prefer-destructuring\n ? option.textContent\n : input.value;\n\n if (prev !== value) {\n target[prop] = value;\n }\n\n },\n\n events: [\n\n {\n name: 'change',\n\n handler: function() {\n this.$emit();\n }\n },\n\n {\n name: 'reset',\n\n el: function() {\n return closest(this.$el, 'form');\n },\n\n handler: function() {\n this.$emit();\n }\n }\n\n ]\n\n };\n\n // Deprecated\n var Gif = {\n\n update: {\n\n read: function(data) {\n\n var inview = isInView(this.$el);\n\n if (!inview || data.isInView === inview) {\n return false;\n }\n\n data.isInView = inview;\n },\n\n write: function() {\n this.$el.src = this.$el.src;\n },\n\n events: ['scroll', 'resize']\n }\n\n };\n\n var Margin = {\n\n props: {\n margin: String,\n firstColumn: Boolean\n },\n\n data: {\n margin: 'uk-margin-small-top',\n firstColumn: 'uk-first-column'\n },\n\n update: {\n\n read: function(data) {\n\n var items = this.$el.children;\n var rows = [[]];\n\n if (!items.length || !isVisible(this.$el)) {\n return data.rows = rows;\n }\n\n data.rows = getRows(items);\n data.stacks = !data.rows.some(function (row) { return row.length > 1; });\n\n },\n\n write: function(ref) {\n var this$1 = this;\n var rows = ref.rows;\n\n\n rows.forEach(function (row, i) { return row.forEach(function (el, j) {\n toggleClass(el, this$1.margin, i !== 0);\n toggleClass(el, this$1.firstColumn, j === 0);\n }); }\n );\n\n },\n\n events: ['resize']\n\n }\n\n };\n\n function getRows(items) {\n var rows = [[]];\n\n for (var i = 0; i < items.length; i++) {\n\n var el = items[i];\n var dim = getOffset(el);\n\n if (!dim.height) {\n continue;\n }\n\n for (var j = rows.length - 1; j >= 0; j--) {\n\n var row = rows[j];\n\n if (!row[0]) {\n row.push(el);\n break;\n }\n\n var leftDim = (void 0);\n if (row[0].offsetParent === el.offsetParent) {\n leftDim = getOffset(row[0]);\n } else {\n dim = getOffset(el, true);\n leftDim = getOffset(row[0], true);\n }\n\n if (dim.top >= leftDim.bottom - 1 && dim.top !== leftDim.top) {\n rows.push([el]);\n break;\n }\n\n if (dim.bottom > leftDim.top) {\n\n if (dim.left < leftDim.left && !isRtl) {\n row.unshift(el);\n break;\n }\n\n row.push(el);\n break;\n }\n\n if (j === 0) {\n rows.unshift([el]);\n break;\n }\n\n }\n\n }\n\n return rows;\n\n }\n\n function getOffset(element, offset) {\n var assign;\n\n if ( offset === void 0 ) offset = false;\n\n var offsetTop = element.offsetTop;\n var offsetLeft = element.offsetLeft;\n var offsetHeight = element.offsetHeight;\n\n if (offset) {\n (assign = offsetPosition(element), offsetTop = assign[0], offsetLeft = assign[1]);\n }\n\n return {\n top: offsetTop,\n left: offsetLeft,\n height: offsetHeight,\n bottom: offsetTop + offsetHeight\n };\n }\n\n var Grid = {\n\n extends: Margin,\n\n mixins: [Class],\n\n name: 'grid',\n\n props: {\n masonry: Boolean,\n parallax: Number\n },\n\n data: {\n margin: 'uk-grid-margin',\n clsStack: 'uk-grid-stack',\n masonry: false,\n parallax: 0\n },\n\n computed: {\n\n length: function(_, $el) {\n return $el.children.length;\n },\n\n parallax: function(ref) {\n var parallax = ref.parallax;\n\n return parallax && this.length ? Math.abs(parallax) : '';\n }\n\n },\n\n connected: function() {\n this.masonry && addClass(this.$el, 'uk-flex-top uk-flex-wrap-top');\n },\n\n update: [\n\n {\n\n read: function(ref) {\n var rows = ref.rows;\n\n\n if (this.masonry || this.parallax) {\n rows = rows.map(function (elements) { return sortBy(elements, 'offsetLeft'); });\n\n if (isRtl) {\n rows.map(function (row) { return row.reverse(); });\n }\n\n }\n\n var transitionInProgress = rows.some(function (elements) { return elements.some(Transition.inProgress); });\n var translates = false;\n var elHeight = '';\n\n if (this.masonry && this.length) {\n\n var height = 0;\n\n translates = rows.reduce(function (translates, row, i) {\n\n translates[i] = row.map(function (_, j) { return i === 0 ? 0 : toFloat(translates[i - 1][j]) + (height - toFloat(rows[i - 1][j] && rows[i - 1][j].offsetHeight)); });\n height = row.reduce(function (height, el) { return Math.max(height, el.offsetHeight); }, 0);\n\n return translates;\n\n }, []);\n\n elHeight = maxColumnHeight(rows) + getMarginTop(this.$el, this.margin) * (rows.length - 1);\n\n }\n\n var padding = this.parallax && getPaddingBottom(this.parallax, rows, translates);\n\n return {padding: padding, rows: rows, translates: translates, height: !transitionInProgress ? elHeight : false};\n\n },\n\n write: function(ref) {\n var stacks = ref.stacks;\n var height = ref.height;\n var padding = ref.padding;\n\n\n toggleClass(this.$el, this.clsStack, stacks);\n\n css(this.$el, 'paddingBottom', padding);\n height !== false && css(this.$el, 'height', height);\n\n },\n\n events: ['resize']\n\n },\n\n {\n\n read: function(ref) {\n var height$1 = ref.height;\n\n return {\n scrolled: this.parallax\n ? scrolledOver(this.$el, height$1 ? height$1 - height(this.$el) : 0) * this.parallax\n : false\n };\n },\n\n write: function(ref) {\n var rows = ref.rows;\n var scrolled = ref.scrolled;\n var translates = ref.translates;\n\n\n if (scrolled === false && !translates) {\n return;\n }\n\n rows.forEach(function (row, i) { return row.forEach(function (el, j) { return css(el, 'transform', !scrolled && !translates ? '' : (\"translateY(\" + ((translates && -translates[i][j]) + (scrolled ? j % 2 ? scrolled : scrolled / 8 : 0)) + \"px)\")); }\n ); }\n );\n\n },\n\n events: ['scroll', 'resize']\n\n }\n\n ]\n\n };\n\n function getPaddingBottom(distance, rows, translates) {\n var column = 0;\n var max = 0;\n var maxScrolled = 0;\n for (var i = rows.length - 1; i >= 0; i--) {\n for (var j = column; j < rows[i].length; j++) {\n var el = rows[i][j];\n var bottom = el.offsetTop + height(el) + (translates && -translates[i][j]);\n max = Math.max(max, bottom);\n maxScrolled = Math.max(maxScrolled, bottom + (j % 2 ? distance : distance / 8));\n column++;\n }\n }\n return maxScrolled - max;\n }\n\n function getMarginTop(root, cls) {\n\n var nodes = toNodes(root.children);\n var ref = nodes.filter(function (el) { return hasClass(el, cls); });\n var node = ref[0];\n\n return toFloat(node\n ? css(node, 'marginTop')\n : css(nodes[0], 'paddingLeft'));\n }\n\n function maxColumnHeight(rows) {\n return Math.max.apply(Math, rows.reduce(function (sum, row) {\n row.forEach(function (el, i) { return sum[i] = (sum[i] || 0) + el.offsetHeight; });\n return sum;\n }, []));\n }\n\n // IE 11 fix (min-height on a flex container won't apply to its flex items)\n var FlexBug = isIE ? {\n\n props: {\n selMinHeight: String\n },\n\n data: {\n selMinHeight: false,\n forceHeight: false\n },\n\n computed: {\n\n elements: function(ref, $el) {\n var selMinHeight = ref.selMinHeight;\n\n return selMinHeight ? $$(selMinHeight, $el) : [$el];\n }\n\n },\n\n update: [\n\n {\n\n read: function() {\n css(this.elements, 'height', '');\n },\n\n order: -5,\n\n events: ['resize']\n\n },\n\n {\n\n write: function() {\n var this$1 = this;\n\n this.elements.forEach(function (el) {\n var height = toFloat(css(el, 'minHeight'));\n if (height && (this$1.forceHeight || Math.round(height + boxModelAdjust('height', el, 'content-box')) >= el.offsetHeight)) {\n css(el, 'height', height);\n }\n });\n },\n\n order: 5,\n\n events: ['resize']\n\n }\n\n ]\n\n } : {};\n\n var HeightMatch = {\n\n mixins: [FlexBug],\n\n args: 'target',\n\n props: {\n target: String,\n row: Boolean\n },\n\n data: {\n target: '> *',\n row: true,\n forceHeight: true\n },\n\n computed: {\n\n elements: function(ref, $el) {\n var target = ref.target;\n\n return $$(target, $el);\n }\n\n },\n\n update: {\n\n read: function() {\n return {\n rows: (this.row ? getRows(this.elements) : [this.elements]).map(match)\n };\n },\n\n write: function(ref) {\n var rows = ref.rows;\n\n rows.forEach(function (ref) {\n var heights = ref.heights;\n var elements = ref.elements;\n\n return elements.forEach(function (el, i) { return css(el, 'minHeight', heights[i]); }\n );\n }\n );\n },\n\n events: ['resize']\n\n }\n\n };\n\n function match(elements) {\n var assign;\n\n\n if (elements.length < 2) {\n return {heights: [''], elements: elements};\n }\n\n var ref = getHeights(elements);\n var heights = ref.heights;\n var max = ref.max;\n var hasMinHeight = elements.some(function (el) { return el.style.minHeight; });\n var hasShrunk = elements.some(function (el, i) { return !el.style.minHeight && heights[i] < max; });\n\n if (hasMinHeight && hasShrunk) {\n css(elements, 'minHeight', '');\n ((assign = getHeights(elements), heights = assign.heights, max = assign.max));\n }\n\n heights = elements.map(function (el, i) { return heights[i] === max && toFloat(el.style.minHeight).toFixed(2) !== max.toFixed(2) ? '' : max; }\n );\n\n return {heights: heights, elements: elements};\n }\n\n function getHeights(elements) {\n var heights = elements.map(function (el) { return offset(el).height - boxModelAdjust('height', el, 'content-box'); });\n var max = Math.max.apply(null, heights);\n\n return {heights: heights, max: max};\n }\n\n var HeightViewport = {\n\n mixins: [FlexBug],\n\n props: {\n expand: Boolean,\n offsetTop: Boolean,\n offsetBottom: Boolean,\n minHeight: Number\n },\n\n data: {\n expand: false,\n offsetTop: false,\n offsetBottom: false,\n minHeight: 0\n },\n\n update: {\n\n read: function(ref) {\n var prev = ref.minHeight;\n\n\n if (!isVisible(this.$el)) {\n return false;\n }\n\n var minHeight = '';\n var box = boxModelAdjust('height', this.$el, 'content-box');\n\n if (this.expand) {\n\n this.$el.dataset.heightExpand = '';\n\n if ($('[data-height-expand]') !== this.$el) {\n return false;\n }\n\n minHeight = height(window) - (offsetHeight(document.documentElement) - offsetHeight(this.$el)) - box || '';\n\n } else {\n\n // on mobile devices (iOS and Android) window.innerHeight !== 100vh\n minHeight = 'calc(100vh';\n\n if (this.offsetTop) {\n\n var ref$1 = offset(this.$el);\n var top = ref$1.top;\n minHeight += top > 0 && top < height(window) / 2 ? (\" - \" + top + \"px\") : '';\n\n }\n\n if (this.offsetBottom === true) {\n\n minHeight += \" - \" + (offsetHeight(this.$el.nextElementSibling)) + \"px\";\n\n } else if (isNumeric(this.offsetBottom)) {\n\n minHeight += \" - \" + (this.offsetBottom) + \"vh\";\n\n } else if (this.offsetBottom && endsWith(this.offsetBottom, 'px')) {\n\n minHeight += \" - \" + (toFloat(this.offsetBottom)) + \"px\";\n\n } else if (isString(this.offsetBottom)) {\n\n minHeight += \" - \" + (offsetHeight(query(this.offsetBottom, this.$el))) + \"px\";\n\n }\n\n minHeight += (box ? (\" - \" + box + \"px\") : '') + \")\";\n\n }\n\n return {minHeight: minHeight, prev: prev};\n },\n\n write: function(ref) {\n var minHeight = ref.minHeight;\n var prev = ref.prev;\n\n\n css(this.$el, {minHeight: minHeight});\n\n if (minHeight !== prev) {\n this.$update(this.$el, 'resize');\n }\n\n if (this.minHeight && toFloat(css(this.$el, 'minHeight')) < this.minHeight) {\n css(this.$el, 'minHeight', this.minHeight);\n }\n\n },\n\n events: ['resize']\n\n }\n\n };\n\n function offsetHeight(el) {\n return el && offset(el).height || 0;\n }\n\n var Svg = {\n\n args: 'src',\n\n props: {\n id: Boolean,\n icon: String,\n src: String,\n style: String,\n width: Number,\n height: Number,\n ratio: Number,\n class: String,\n strokeAnimation: Boolean,\n focusable: Boolean, // IE 11\n attributes: 'list'\n },\n\n data: {\n ratio: 1,\n include: ['style', 'class', 'focusable'],\n class: '',\n strokeAnimation: false\n },\n\n beforeConnect: function() {\n var this$1 = this;\n var assign;\n\n\n this.class += ' uk-svg';\n\n if (!this.icon && includes(this.src, '#')) {\n\n var parts = this.src.split('#');\n\n if (parts.length > 1) {\n (assign = parts, this.src = assign[0], this.icon = assign[1]);\n }\n }\n\n this.svg = this.getSvg().then(function (el) {\n this$1.applyAttributes(el);\n return this$1.svgEl = insertSVG(el, this$1.$el);\n }, noop);\n\n },\n\n disconnected: function() {\n var this$1 = this;\n\n\n if (isVoidElement(this.$el)) {\n attr(this.$el, 'hidden', null);\n }\n\n if (this.svg) {\n this.svg.then(function (svg) { return (!this$1._connected || svg !== this$1.svgEl) && remove(svg); }, noop);\n }\n\n this.svg = this.svgEl = null;\n\n },\n\n update: {\n\n read: function() {\n return !!(this.strokeAnimation && this.svgEl && isVisible(this.svgEl));\n },\n\n write: function() {\n applyAnimation(this.svgEl);\n },\n\n type: ['resize']\n\n },\n\n methods: {\n\n getSvg: function() {\n var this$1 = this;\n\n return loadSVG(this.src).then(function (svg) { return parseSVG(svg, this$1.icon) || Promise.reject('SVG not found.'); }\n );\n },\n\n applyAttributes: function(el) {\n var this$1 = this;\n\n\n for (var prop in this.$options.props) {\n if (this[prop] && includes(this.include, prop)) {\n attr(el, prop, this[prop]);\n }\n }\n\n for (var attribute in this.attributes) {\n var ref = this.attributes[attribute].split(':', 2);\n var prop$1 = ref[0];\n var value = ref[1];\n attr(el, prop$1, value);\n }\n\n if (!this.id) {\n removeAttr(el, 'id');\n }\n\n var props = ['width', 'height'];\n var dimensions = [this.width, this.height];\n\n if (!dimensions.some(function (val) { return val; })) {\n dimensions = props.map(function (prop) { return attr(el, prop); });\n }\n\n var viewBox = attr(el, 'viewBox');\n if (viewBox && !dimensions.some(function (val) { return val; })) {\n dimensions = viewBox.split(' ').slice(2);\n }\n\n dimensions.forEach(function (val, i) {\n val = (val | 0) * this$1.ratio;\n val && attr(el, props[i], val);\n\n if (val && !dimensions[i ^ 1]) {\n removeAttr(el, props[i ^ 1]);\n }\n });\n\n attr(el, 'data-svg', this.icon || this.src);\n\n }\n\n }\n\n };\n\n var svgs = {};\n\n function loadSVG(src) {\n\n if (svgs[src]) {\n return svgs[src];\n }\n\n return svgs[src] = new Promise(function (resolve, reject) {\n\n if (!src) {\n reject();\n return;\n }\n\n if (startsWith(src, 'data:')) {\n resolve(decodeURIComponent(src.split(',')[1]));\n } else {\n\n ajax(src).then(\n function (xhr) { return resolve(xhr.response); },\n function () { return reject('SVG not found.'); }\n );\n\n }\n\n });\n }\n\n function parseSVG(svg, icon) {\n\n if (icon && includes(svg, '<symbol')) {\n svg = parseSymbols(svg, icon) || svg;\n }\n\n svg = $(svg.substr(svg.indexOf('<svg')));\n return svg && svg.hasChildNodes() && svg;\n }\n\n var symbolRe = /<symbol(.*?id=(['\"])(.*?)\\2[^]*?<\\/)symbol>/g;\n var symbols = {};\n\n function parseSymbols(svg, icon) {\n\n if (!symbols[svg]) {\n\n symbols[svg] = {};\n\n var match;\n while ((match = symbolRe.exec(svg))) {\n symbols[svg][match[3]] = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\"\" + (match[1]) + \"svg>\";\n }\n\n symbolRe.lastIndex = 0;\n\n }\n\n return symbols[svg][icon];\n }\n\n function applyAnimation(el) {\n\n var length = getMaxPathLength(el);\n\n if (length) {\n el.style.setProperty('--uk-animation-stroke', length);\n }\n\n }\n\n function getMaxPathLength(el) {\n return Math.ceil(Math.max.apply(Math, $$('[stroke]', el).map(function (stroke) { return stroke.getTotalLength && stroke.getTotalLength() || 0; }\n ).concat([0])));\n }\n\n function insertSVG(el, root) {\n if (isVoidElement(root) || root.tagName === 'CANVAS') {\n\n attr(root, 'hidden', true);\n\n var next = root.nextElementSibling;\n return equals(el, next)\n ? next\n : after(root, el);\n\n } else {\n\n var last = root.lastElementChild;\n return equals(el, last)\n ? last\n : append(root, el);\n\n }\n }\n\n function equals(el, other) {\n return attr(el, 'data-svg') === attr(other, 'data-svg');\n }\n\n var closeIcon = \"<svg width=\\\"14\\\" height=\\\"14\\\" viewBox=\\\"0 0 14 14\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><line fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.1\\\" x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"13\\\" y2=\\\"13\\\"/><line fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.1\\\" x1=\\\"13\\\" y1=\\\"1\\\" x2=\\\"1\\\" y2=\\\"13\\\"/></svg>\";\n\n var closeLarge = \"<svg width=\\\"20\\\" height=\\\"20\\\" viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><line fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.4\\\" x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"19\\\" y2=\\\"19\\\"/><line fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.4\\\" x1=\\\"19\\\" y1=\\\"1\\\" x2=\\\"1\\\" y2=\\\"19\\\"/></svg>\";\n\n var marker = \"<svg width=\\\"20\\\" height=\\\"20\\\" viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><rect x=\\\"9\\\" y=\\\"4\\\" width=\\\"1\\\" height=\\\"11\\\"/><rect x=\\\"4\\\" y=\\\"9\\\" width=\\\"11\\\" height=\\\"1\\\"/></svg>\";\n\n var navbarToggleIcon = \"<svg width=\\\"20\\\" height=\\\"20\\\" viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><rect y=\\\"9\\\" width=\\\"20\\\" height=\\\"2\\\"/><rect y=\\\"3\\\" width=\\\"20\\\" height=\\\"2\\\"/><rect y=\\\"15\\\" width=\\\"20\\\" height=\\\"2\\\"/></svg>\";\n\n var overlayIcon = \"<svg width=\\\"40\\\" height=\\\"40\\\" viewBox=\\\"0 0 40 40\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><rect x=\\\"19\\\" y=\\\"0\\\" width=\\\"1\\\" height=\\\"40\\\"/><rect x=\\\"0\\\" y=\\\"19\\\" width=\\\"40\\\" height=\\\"1\\\"/></svg>\";\n\n var paginationNext = \"<svg width=\\\"7\\\" height=\\\"12\\\" viewBox=\\\"0 0 7 12\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.2\\\" points=\\\"1 1 6 6 1 11\\\"/></svg>\";\n\n var paginationPrevious = \"<svg width=\\\"7\\\" height=\\\"12\\\" viewBox=\\\"0 0 7 12\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.2\\\" points=\\\"6 1 1 6 6 11\\\"/></svg>\";\n\n var searchIcon = \"<svg width=\\\"20\\\" height=\\\"20\\\" viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><circle fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.1\\\" cx=\\\"9\\\" cy=\\\"9\\\" r=\\\"7\\\"/><path fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.1\\\" d=\\\"M14,14 L18,18 L14,14 Z\\\"/></svg>\";\n\n var searchLarge = \"<svg width=\\\"40\\\" height=\\\"40\\\" viewBox=\\\"0 0 40 40\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><circle fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.8\\\" cx=\\\"17.5\\\" cy=\\\"17.5\\\" r=\\\"16.5\\\"/><line fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.8\\\" x1=\\\"38\\\" y1=\\\"39\\\" x2=\\\"29\\\" y2=\\\"30\\\"/></svg>\";\n\n var searchNavbar = \"<svg width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><circle fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.1\\\" cx=\\\"10.5\\\" cy=\\\"10.5\\\" r=\\\"9.5\\\"/><line fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.1\\\" x1=\\\"23\\\" y1=\\\"23\\\" x2=\\\"17\\\" y2=\\\"17\\\"/></svg>\";\n\n var slidenavNext = \"<svg width=\\\"14px\\\" height=\\\"24px\\\" viewBox=\\\"0 0 14 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.4\\\" points=\\\"1.225,23 12.775,12 1.225,1 \\\"/></svg>\";\n\n var slidenavNextLarge = \"<svg width=\\\"25px\\\" height=\\\"40px\\\" viewBox=\\\"0 0 25 40\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"2\\\" points=\\\"4.002,38.547 22.527,20.024 4,1.5 \\\"/></svg>\";\n\n var slidenavPrevious = \"<svg width=\\\"14px\\\" height=\\\"24px\\\" viewBox=\\\"0 0 14 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.4\\\" points=\\\"12.775,1 1.225,12 12.775,23 \\\"/></svg>\";\n\n var slidenavPreviousLarge = \"<svg width=\\\"25px\\\" height=\\\"40px\\\" viewBox=\\\"0 0 25 40\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"2\\\" points=\\\"20.527,1.5 2,20.024 20.525,38.547 \\\"/></svg>\";\n\n var spinner = \"<svg width=\\\"30\\\" height=\\\"30\\\" viewBox=\\\"0 0 30 30\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><circle fill=\\\"none\\\" stroke=\\\"#000\\\" cx=\\\"15\\\" cy=\\\"15\\\" r=\\\"14\\\"/></svg>\";\n\n var totop = \"<svg width=\\\"18\\\" height=\\\"10\\\" viewBox=\\\"0 0 18 10\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.2\\\" points=\\\"1 9 9 1 17 9 \\\"/></svg>\";\n\n var parsed = {};\n var icons = {\n spinner: spinner,\n totop: totop,\n marker: marker,\n 'close-icon': closeIcon,\n 'close-large': closeLarge,\n 'navbar-toggle-icon': navbarToggleIcon,\n 'overlay-icon': overlayIcon,\n 'pagination-next': paginationNext,\n 'pagination-previous': paginationPrevious,\n 'search-icon': searchIcon,\n 'search-large': searchLarge,\n 'search-navbar': searchNavbar,\n 'slidenav-next': slidenavNext,\n 'slidenav-next-large': slidenavNextLarge,\n 'slidenav-previous': slidenavPrevious,\n 'slidenav-previous-large': slidenavPreviousLarge\n };\n\n var Icon = {\n\n install: install,\n\n extends: Svg,\n\n args: 'icon',\n\n props: ['icon'],\n\n data: {\n include: ['focusable']\n },\n\n isIcon: true,\n\n beforeConnect: function() {\n addClass(this.$el, 'uk-icon');\n },\n\n methods: {\n\n getSvg: function() {\n\n var icon = getIcon(applyRtl(this.icon));\n\n if (!icon) {\n return Promise.reject('Icon not found.');\n }\n\n return Promise.resolve(icon);\n }\n\n }\n\n };\n\n var IconComponent = {\n\n args: false,\n\n extends: Icon,\n\n data: function (vm) { return ({\n icon: hyphenate(vm.constructor.options.name)\n }); },\n\n beforeConnect: function() {\n addClass(this.$el, this.$name);\n }\n\n };\n\n var Slidenav = {\n\n extends: IconComponent,\n\n beforeConnect: function() {\n addClass(this.$el, 'uk-slidenav');\n },\n\n computed: {\n\n icon: function(ref, $el) {\n var icon = ref.icon;\n\n return hasClass($el, 'uk-slidenav-large')\n ? (icon + \"-large\")\n : icon;\n }\n\n }\n\n };\n\n var Search = {\n\n extends: IconComponent,\n\n computed: {\n\n icon: function(ref, $el) {\n var icon = ref.icon;\n\n return hasClass($el, 'uk-search-icon') && parents($el, '.uk-search-large').length\n ? 'search-large'\n : parents($el, '.uk-search-navbar').length\n ? 'search-navbar'\n : icon;\n }\n\n }\n\n };\n\n var Close = {\n\n extends: IconComponent,\n\n computed: {\n\n icon: function() {\n return (\"close-\" + (hasClass(this.$el, 'uk-close-large') ? 'large' : 'icon'));\n }\n\n }\n\n };\n\n var Spinner = {\n\n extends: IconComponent,\n\n connected: function() {\n var this$1 = this;\n\n this.svg.then(function (svg) { return this$1.ratio !== 1 && css($('circle', svg), 'strokeWidth', 1 / this$1.ratio); }, noop);\n }\n\n };\n\n function install(UIkit) {\n UIkit.icon.add = function (name, svg) {\n var obj;\n\n\n var added = isString(name) ? (( obj = {}, obj[name] = svg, obj )) : name;\n each(added, function (svg, name) {\n icons[name] = svg;\n delete parsed[name];\n });\n\n if (UIkit._initialized) {\n apply(document.body, function (el) { return each(UIkit.getComponents(el), function (cmp) {\n cmp.$options.isIcon && cmp.icon in added && cmp.$reset();\n }); }\n );\n }\n };\n }\n\n function getIcon(icon) {\n\n if (!icons[icon]) {\n return null;\n }\n\n if (!parsed[icon]) {\n parsed[icon] = $(icons[icon].trim());\n }\n\n return parsed[icon].cloneNode(true);\n }\n\n function applyRtl(icon) {\n return isRtl ? swap(swap(icon, 'left', 'right'), 'previous', 'next') : icon;\n }\n\n var Img = {\n\n args: 'dataSrc',\n\n props: {\n dataSrc: String,\n dataSrcset: Boolean,\n sizes: String,\n width: Number,\n height: Number,\n offsetTop: String,\n offsetLeft: String,\n target: String\n },\n\n data: {\n dataSrc: '',\n dataSrcset: false,\n sizes: false,\n width: false,\n height: false,\n offsetTop: '50vh',\n offsetLeft: 0,\n target: false\n },\n\n computed: {\n\n cacheKey: function(ref) {\n var dataSrc = ref.dataSrc;\n\n return ((this.$name) + \".\" + dataSrc);\n },\n\n width: function(ref) {\n var width = ref.width;\n var dataWidth = ref.dataWidth;\n\n return width || dataWidth;\n },\n\n height: function(ref) {\n var height = ref.height;\n var dataHeight = ref.dataHeight;\n\n return height || dataHeight;\n },\n\n sizes: function(ref) {\n var sizes = ref.sizes;\n var dataSizes = ref.dataSizes;\n\n return sizes || dataSizes;\n },\n\n isImg: function(_, $el) {\n return isImg($el);\n },\n\n target: {\n\n get: function(ref) {\n var target = ref.target;\n\n return [this.$el].concat(queryAll(target, this.$el));\n },\n\n watch: function() {\n this.observe();\n }\n\n },\n\n offsetTop: function(ref) {\n var offsetTop = ref.offsetTop;\n\n return toPx(offsetTop, 'height');\n },\n\n offsetLeft: function(ref) {\n var offsetLeft = ref.offsetLeft;\n\n return toPx(offsetLeft, 'width');\n }\n\n },\n\n connected: function() {\n\n if (storage[this.cacheKey]) {\n setSrcAttrs(this.$el, storage[this.cacheKey] || this.dataSrc, this.dataSrcset, this.sizes);\n } else if (this.isImg && this.width && this.height) {\n setSrcAttrs(this.$el, getPlaceholderImage(this.width, this.height, this.sizes));\n }\n\n this.observer = new IntersectionObserver(this.load, {\n rootMargin: ((this.offsetTop) + \"px \" + (this.offsetLeft) + \"px\")\n });\n\n requestAnimationFrame(this.observe);\n\n },\n\n disconnected: function() {\n this.observer.disconnect();\n },\n\n update: {\n\n read: function(ref) {\n var this$1 = this;\n var image = ref.image;\n\n\n if (!image && document.readyState === 'complete') {\n this.load(this.observer.takeRecords());\n }\n\n if (this.isImg) {\n return false;\n }\n\n image && image.then(function (img) { return img && img.currentSrc !== '' && setSrcAttrs(this$1.$el, currentSrc(img)); });\n\n },\n\n write: function(data) {\n\n if (this.dataSrcset && window.devicePixelRatio !== 1) {\n\n var bgSize = css(this.$el, 'backgroundSize');\n if (bgSize.match(/^(auto\\s?)+$/) || toFloat(bgSize) === data.bgSize) {\n data.bgSize = getSourceSize(this.dataSrcset, this.sizes);\n css(this.$el, 'backgroundSize', ((data.bgSize) + \"px\"));\n }\n\n }\n\n },\n\n events: ['resize']\n\n },\n\n methods: {\n\n load: function(entries) {\n var this$1 = this;\n\n\n // Old chromium based browsers (UC Browser) did not implement `isIntersecting`\n if (!entries.some(function (entry) { return isUndefined(entry.isIntersecting) || entry.isIntersecting; })) {\n return;\n }\n\n this._data.image = getImage(this.dataSrc, this.dataSrcset, this.sizes).then(function (img) {\n\n setSrcAttrs(this$1.$el, currentSrc(img), img.srcset, img.sizes);\n storage[this$1.cacheKey] = currentSrc(img);\n return img;\n\n }, noop);\n\n this.observer.disconnect();\n },\n\n observe: function() {\n var this$1 = this;\n\n if (!this._data.image && this._connected) {\n this.target.forEach(function (el) { return this$1.observer.observe(el); });\n }\n }\n\n }\n\n };\n\n function setSrcAttrs(el, src, srcset, sizes) {\n\n if (isImg(el)) {\n sizes && (el.sizes = sizes);\n srcset && (el.srcset = srcset);\n src && (el.src = src);\n } else if (src) {\n\n var change = !includes(el.style.backgroundImage, src);\n if (change) {\n css(el, 'backgroundImage', (\"url(\" + (escape(src)) + \")\"));\n trigger(el, createEvent('load', false));\n }\n\n }\n\n }\n\n function getPlaceholderImage(width, height, sizes) {\n var assign;\n\n\n if (sizes) {\n ((assign = Dimensions.ratio({width: width, height: height}, 'width', toPx(sizesToPixel(sizes))), width = assign.width, height = assign.height));\n }\n\n return (\"data:image/svg+xml;utf8,<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"\" + width + \"\\\" height=\\\"\" + height + \"\\\"></svg>\");\n }\n\n var sizesRe = /\\s*(.*?)\\s*(\\w+|calc\\(.*?\\))\\s*(?:,|$)/g;\n function sizesToPixel(sizes) {\n var matches;\n\n sizesRe.lastIndex = 0;\n\n while ((matches = sizesRe.exec(sizes))) {\n if (!matches[1] || window.matchMedia(matches[1]).matches) {\n matches = evaluateSize(matches[2]);\n break;\n }\n }\n\n return matches || '100vw';\n }\n\n var sizeRe = /\\d+(?:\\w+|%)/g;\n var additionRe = /[+-]?(\\d+)/g;\n function evaluateSize(size) {\n return startsWith(size, 'calc')\n ? size\n .substring(5, size.length - 1)\n .replace(sizeRe, function (size) { return toPx(size); })\n .replace(/ /g, '')\n .match(additionRe)\n .reduce(function (a, b) { return a + +b; }, 0)\n : size;\n }\n\n var srcSetRe = /\\s+\\d+w\\s*(?:,|$)/g;\n function getSourceSize(srcset, sizes) {\n var srcSize = toPx(sizesToPixel(sizes));\n var descriptors = (srcset.match(srcSetRe) || []).map(toFloat).sort(function (a, b) { return a - b; });\n\n return descriptors.filter(function (size) { return size >= srcSize; })[0] || descriptors.pop() || '';\n }\n\n function isImg(el) {\n return el.tagName === 'IMG';\n }\n\n function currentSrc(el) {\n return el.currentSrc || el.src;\n }\n\n var key = '__test__';\n var storage;\n\n // workaround for Safari's private browsing mode and accessing sessionStorage in Blink\n try {\n storage = window.sessionStorage || {};\n storage[key] = 1;\n delete storage[key];\n } catch (e) {\n storage = {};\n }\n\n var Media = {\n\n props: {\n media: Boolean\n },\n\n data: {\n media: false\n },\n\n computed: {\n\n matchMedia: function() {\n var media = toMedia(this.media);\n return !media || window.matchMedia(media).matches;\n }\n\n }\n\n };\n\n function toMedia(value) {\n\n if (isString(value)) {\n if (value[0] === '@') {\n var name = \"breakpoint-\" + (value.substr(1));\n value = toFloat(getCssVar(name));\n } else if (isNaN(value)) {\n return value;\n }\n }\n\n return value && !isNaN(value) ? (\"(min-width: \" + value + \"px)\") : false;\n }\n\n var Leader = {\n\n mixins: [Class, Media],\n\n props: {\n fill: String\n },\n\n data: {\n fill: '',\n clsWrapper: 'uk-leader-fill',\n clsHide: 'uk-leader-hide',\n attrFill: 'data-fill'\n },\n\n computed: {\n\n fill: function(ref) {\n var fill = ref.fill;\n\n return fill || getCssVar('leader-fill-content');\n }\n\n },\n\n connected: function() {\n var assign;\n\n (assign = wrapInner(this.$el, (\"<span class=\\\"\" + (this.clsWrapper) + \"\\\">\")), this.wrapper = assign[0]);\n },\n\n disconnected: function() {\n unwrap(this.wrapper.childNodes);\n },\n\n update: {\n\n read: function(ref) {\n var changed = ref.changed;\n var width = ref.width;\n\n\n var prev = width;\n\n width = Math.floor(this.$el.offsetWidth / 2);\n\n return {\n width: width,\n fill: this.fill,\n changed: changed || prev !== width,\n hide: !this.matchMedia\n };\n },\n\n write: function(data) {\n\n toggleClass(this.wrapper, this.clsHide, data.hide);\n\n if (data.changed) {\n data.changed = false;\n attr(this.wrapper, this.attrFill, new Array(data.width).join(data.fill));\n }\n\n },\n\n events: ['resize']\n\n }\n\n };\n\n var Container = {\n\n props: {\n container: Boolean\n },\n\n data: {\n container: true\n },\n\n computed: {\n\n container: function(ref) {\n var container = ref.container;\n\n return container === true && this.$container || container && $(container);\n }\n\n }\n\n };\n\n var active$1 = [];\n\n var Modal = {\n\n mixins: [Class, Container, Togglable],\n\n props: {\n selPanel: String,\n selClose: String,\n escClose: Boolean,\n bgClose: Boolean,\n stack: Boolean\n },\n\n data: {\n cls: 'uk-open',\n escClose: true,\n bgClose: true,\n overlay: true,\n stack: false\n },\n\n computed: {\n\n panel: function(ref, $el) {\n var selPanel = ref.selPanel;\n\n return $(selPanel, $el);\n },\n\n transitionElement: function() {\n return this.panel;\n },\n\n bgClose: function(ref) {\n var bgClose = ref.bgClose;\n\n return bgClose && this.panel;\n }\n\n },\n\n beforeDisconnect: function() {\n if (this.isToggled()) {\n this.toggleNow(this.$el, false);\n }\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return this.selClose;\n },\n\n handler: function(e) {\n e.preventDefault();\n this.hide();\n }\n\n },\n\n {\n\n name: 'toggle',\n\n self: true,\n\n handler: function(e) {\n\n if (e.defaultPrevented) {\n return;\n }\n\n e.preventDefault();\n this.toggle();\n }\n\n },\n\n {\n name: 'beforeshow',\n\n self: true,\n\n handler: function(e) {\n\n if (includes(active$1, this)) {\n return false;\n }\n\n if (!this.stack && active$1.length) {\n Promise.all(active$1.map(function (modal) { return modal.hide(); })).then(this.show);\n e.preventDefault();\n } else {\n active$1.push(this);\n }\n }\n\n },\n\n {\n\n name: 'show',\n\n self: true,\n\n handler: function() {\n var this$1 = this;\n\n\n if (width(window) - width(document) && this.overlay) {\n css(document.body, 'overflowY', 'scroll');\n }\n\n addClass(document.documentElement, this.clsPage);\n\n if (this.bgClose) {\n once(this.$el, 'hide', delayOn(document, 'click', function (ref) {\n var defaultPrevented = ref.defaultPrevented;\n var target = ref.target;\n\n var current = last(active$1);\n if (!defaultPrevented\n && current === this$1\n && (!current.overlay || within(target, current.$el))\n && !within(target, current.panel)\n ) {\n current.hide();\n }\n }), {self: true});\n }\n\n if (this.escClose) {\n once(this.$el, 'hide', on(document, 'keydown', function (e) {\n var current = last(active$1);\n if (e.keyCode === 27 && current === this$1) {\n e.preventDefault();\n current.hide();\n }\n }), {self: true});\n }\n }\n\n },\n\n {\n\n name: 'hidden',\n\n self: true,\n\n handler: function() {\n var this$1 = this;\n\n\n active$1.splice(active$1.indexOf(this), 1);\n\n if (!active$1.length) {\n css(document.body, 'overflowY', '');\n }\n\n if (!active$1.some(function (modal) { return modal.clsPage === this$1.clsPage; })) {\n removeClass(document.documentElement, this.clsPage);\n }\n\n }\n\n }\n\n ],\n\n methods: {\n\n toggle: function() {\n return this.isToggled() ? this.hide() : this.show();\n },\n\n show: function() {\n var this$1 = this;\n\n\n if (this.container && this.$el.parentNode !== this.container) {\n append(this.container, this.$el);\n return new Promise(function (resolve) { return requestAnimationFrame(function () { return this$1.show().then(resolve); }\n ); }\n );\n }\n\n return this.toggleElement(this.$el, true, animate$1(this));\n },\n\n hide: function() {\n return this.toggleElement(this.$el, false, animate$1(this));\n }\n\n }\n\n };\n\n function animate$1(ref) {\n var transitionElement = ref.transitionElement;\n var _toggle = ref._toggle;\n\n return function (el, show) { return new Promise(function (resolve, reject) { return once(el, 'show hide', function () {\n el._reject && el._reject();\n el._reject = reject;\n\n _toggle(el, show);\n\n var off = once(transitionElement, 'transitionstart', function () {\n once(transitionElement, 'transitionend transitioncancel', resolve, {self: true});\n clearTimeout(timer);\n }, {self: true});\n\n var timer = setTimeout(function () {\n off();\n resolve();\n }, toMs(css(transitionElement, 'transitionDuration')));\n\n }); }\n ); };\n }\n\n var Modal$1 = {\n\n install: install$1,\n\n mixins: [Modal],\n\n data: {\n clsPage: 'uk-modal-page',\n selPanel: '.uk-modal-dialog',\n selClose: '.uk-modal-close, .uk-modal-close-default, .uk-modal-close-outside, .uk-modal-close-full'\n },\n\n events: [\n\n {\n name: 'show',\n\n self: true,\n\n handler: function() {\n\n if (hasClass(this.panel, 'uk-margin-auto-vertical')) {\n addClass(this.$el, 'uk-flex');\n } else {\n css(this.$el, 'display', 'block');\n }\n\n height(this.$el); // force reflow\n }\n },\n\n {\n name: 'hidden',\n\n self: true,\n\n handler: function() {\n\n css(this.$el, 'display', '');\n removeClass(this.$el, 'uk-flex');\n\n }\n }\n\n ]\n\n };\n\n function install$1(UIkit) {\n\n UIkit.modal.dialog = function (content, options) {\n\n var dialog = UIkit.modal((\" <div class=\\\"uk-modal\\\"> <div class=\\\"uk-modal-dialog\\\">\" + content + \"</div> </div> \"), options);\n\n dialog.show();\n\n on(dialog.$el, 'hidden', function () { return Promise.resolve(function () { return dialog.$destroy(true); }); }, {self: true});\n\n return dialog;\n };\n\n UIkit.modal.alert = function (message, options) {\n\n options = assign({bgClose: false, escClose: false, labels: UIkit.modal.labels}, options);\n\n return new Promise(\n function (resolve) { return on(UIkit.modal.dialog((\" <div class=\\\"uk-modal-body\\\">\" + (isString(message) ? message : html(message)) + \"</div> <div class=\\\"uk-modal-footer uk-text-right\\\"> <button class=\\\"uk-button uk-button-primary uk-modal-close\\\" autofocus>\" + (options.labels.ok) + \"</button> </div> \"), options).$el, 'hide', resolve); }\n );\n };\n\n UIkit.modal.confirm = function (message, options) {\n\n options = assign({bgClose: false, escClose: true, labels: UIkit.modal.labels}, options);\n\n return new Promise(function (resolve, reject) {\n\n var confirm = UIkit.modal.dialog((\" <form> <div class=\\\"uk-modal-body\\\">\" + (isString(message) ? message : html(message)) + \"</div> <div class=\\\"uk-modal-footer uk-text-right\\\"> <button class=\\\"uk-button uk-button-default uk-modal-close\\\" type=\\\"button\\\">\" + (options.labels.cancel) + \"</button> <button class=\\\"uk-button uk-button-primary\\\" autofocus>\" + (options.labels.ok) + \"</button> </div> </form> \"), options);\n\n var resolved = false;\n\n on(confirm.$el, 'submit', 'form', function (e) {\n e.preventDefault();\n resolve();\n resolved = true;\n confirm.hide();\n });\n on(confirm.$el, 'hide', function () {\n if (!resolved) {\n reject();\n }\n });\n\n });\n };\n\n UIkit.modal.prompt = function (message, value, options) {\n\n options = assign({bgClose: false, escClose: true, labels: UIkit.modal.labels}, options);\n\n return new Promise(function (resolve) {\n\n var prompt = UIkit.modal.dialog((\" <form class=\\\"uk-form-stacked\\\"> <div class=\\\"uk-modal-body\\\"> <label>\" + (isString(message) ? message : html(message)) + \"</label> <input class=\\\"uk-input\\\" autofocus> </div> <div class=\\\"uk-modal-footer uk-text-right\\\"> <button class=\\\"uk-button uk-button-default uk-modal-close\\\" type=\\\"button\\\">\" + (options.labels.cancel) + \"</button> <button class=\\\"uk-button uk-button-primary\\\">\" + (options.labels.ok) + \"</button> </div> </form> \"), options),\n input = $('input', prompt.$el);\n\n input.value = value;\n\n var resolved = false;\n\n on(prompt.$el, 'submit', 'form', function (e) {\n e.preventDefault();\n resolve(input.value);\n resolved = true;\n prompt.hide();\n });\n on(prompt.$el, 'hide', function () {\n if (!resolved) {\n resolve(null);\n }\n });\n\n });\n };\n\n UIkit.modal.labels = {\n ok: 'Ok',\n cancel: 'Cancel'\n };\n\n }\n\n var Nav = {\n\n extends: Accordion,\n\n data: {\n targets: '> .uk-parent',\n toggle: '> a',\n content: '> ul'\n }\n\n };\n\n var Navbar = {\n\n mixins: [Class, FlexBug],\n\n props: {\n dropdown: String,\n mode: 'list',\n align: String,\n offset: Number,\n boundary: Boolean,\n boundaryAlign: Boolean,\n clsDrop: String,\n delayShow: Number,\n delayHide: Number,\n dropbar: Boolean,\n dropbarMode: String,\n dropbarAnchor: Boolean,\n duration: Number\n },\n\n data: {\n dropdown: '.uk-navbar-nav > li',\n align: !isRtl ? 'left' : 'right',\n clsDrop: 'uk-navbar-dropdown',\n mode: undefined,\n offset: undefined,\n delayShow: undefined,\n delayHide: undefined,\n boundaryAlign: undefined,\n flip: 'x',\n boundary: true,\n dropbar: false,\n dropbarMode: 'slide',\n dropbarAnchor: false,\n duration: 200,\n forceHeight: true,\n selMinHeight: '.uk-navbar-nav > li > a, .uk-navbar-item, .uk-navbar-toggle'\n },\n\n computed: {\n\n boundary: function(ref, $el) {\n var boundary = ref.boundary;\n var boundaryAlign = ref.boundaryAlign;\n\n return (boundary === true || boundaryAlign) ? $el : boundary;\n },\n\n dropbarAnchor: function(ref, $el) {\n var dropbarAnchor = ref.dropbarAnchor;\n\n return query(dropbarAnchor, $el);\n },\n\n pos: function(ref) {\n var align = ref.align;\n\n return (\"bottom-\" + align);\n },\n\n dropdowns: function(ref, $el) {\n var dropdown = ref.dropdown;\n var clsDrop = ref.clsDrop;\n\n return $$((dropdown + \" .\" + clsDrop), $el);\n }\n\n },\n\n beforeConnect: function() {\n\n var ref = this.$props;\n var dropbar = ref.dropbar;\n\n this.dropbar = dropbar && (query(dropbar, this.$el) || $('+ .uk-navbar-dropbar', this.$el) || $('<div></div>'));\n\n if (this.dropbar) {\n\n addClass(this.dropbar, 'uk-navbar-dropbar');\n\n if (this.dropbarMode === 'slide') {\n addClass(this.dropbar, 'uk-navbar-dropbar-slide');\n }\n }\n\n },\n\n disconnected: function() {\n this.dropbar && remove(this.dropbar);\n },\n\n update: function() {\n var this$1 = this;\n\n\n this.$create(\n 'drop',\n this.dropdowns.filter(function (el) { return !this$1.getDropdown(el); }),\n assign({}, this.$props, {boundary: this.boundary, pos: this.pos, offset: this.dropbar || this.offset})\n );\n\n },\n\n events: [\n\n {\n name: 'mouseover',\n\n delegate: function() {\n return this.dropdown;\n },\n\n handler: function(ref) {\n var current = ref.current;\n\n var active = this.getActive();\n if (active && active.toggle && !within(active.toggle.$el, current) && !active.tracker.movesTo(active.$el)) {\n active.hide(false);\n }\n }\n\n },\n\n {\n name: 'mouseleave',\n\n el: function() {\n return this.dropbar;\n },\n\n handler: function() {\n var active = this.getActive();\n\n if (active && !this.dropdowns.some(function (el) { return matches(el, ':hover'); })) {\n active.hide();\n }\n }\n },\n\n {\n name: 'beforeshow',\n\n capture: true,\n\n filter: function() {\n return this.dropbar;\n },\n\n handler: function() {\n\n if (!this.dropbar.parentNode) {\n after(this.dropbarAnchor || this.$el, this.dropbar);\n }\n\n }\n },\n\n {\n name: 'show',\n\n capture: true,\n\n filter: function() {\n return this.dropbar;\n },\n\n handler: function(_, drop) {\n\n var $el = drop.$el;\n var dir = drop.dir;\n\n this.clsDrop && addClass($el, ((this.clsDrop) + \"-dropbar\"));\n\n if (dir === 'bottom') {\n this.transitionTo($el.offsetHeight + toFloat(css($el, 'marginTop')) + toFloat(css($el, 'marginBottom')), $el);\n }\n }\n },\n\n {\n name: 'beforehide',\n\n filter: function() {\n return this.dropbar;\n },\n\n handler: function(e, ref) {\n var $el = ref.$el;\n\n\n var active = this.getActive();\n\n if (matches(this.dropbar, ':hover') && active && active.$el === $el) {\n e.preventDefault();\n }\n }\n },\n\n {\n name: 'hide',\n\n filter: function() {\n return this.dropbar;\n },\n\n handler: function(_, ref) {\n var $el = ref.$el;\n\n\n var active = this.getActive();\n\n if (!active || active && active.$el === $el) {\n this.transitionTo(0);\n }\n }\n }\n\n ],\n\n methods: {\n\n getActive: function() {\n var ref = this.dropdowns.map(this.getDropdown).filter(function (drop) { return drop && drop.isActive(); });\n var active = ref[0];\n return active && includes(active.mode, 'hover') && within(active.toggle.$el, this.$el) && active;\n },\n\n transitionTo: function(newHeight, el) {\n var this$1 = this;\n\n\n var ref = this;\n var dropbar = ref.dropbar;\n var oldHeight = isVisible(dropbar) ? height(dropbar) : 0;\n\n el = oldHeight < newHeight && el;\n\n css(el, 'clip', (\"rect(0,\" + (el.offsetWidth) + \"px,\" + oldHeight + \"px,0)\"));\n\n height(dropbar, oldHeight);\n\n Transition.cancel([el, dropbar]);\n return Promise.all([\n Transition.start(dropbar, {height: newHeight}, this.duration),\n Transition.start(el, {clip: (\"rect(0,\" + (el.offsetWidth) + \"px,\" + newHeight + \"px,0)\")}, this.duration)\n ])\n .catch(noop)\n .then(function () {\n css(el, {clip: ''});\n this$1.$update(dropbar);\n });\n },\n\n getDropdown: function(el) {\n return this.$getComponent(el, 'drop') || this.$getComponent(el, 'dropdown');\n }\n\n }\n\n };\n\n var Offcanvas = {\n\n mixins: [Modal],\n\n args: 'mode',\n\n props: {\n mode: String,\n flip: Boolean,\n overlay: Boolean\n },\n\n data: {\n mode: 'slide',\n flip: false,\n overlay: false,\n clsPage: 'uk-offcanvas-page',\n clsContainer: 'uk-offcanvas-container',\n selPanel: '.uk-offcanvas-bar',\n clsFlip: 'uk-offcanvas-flip',\n clsContainerAnimation: 'uk-offcanvas-container-animation',\n clsSidebarAnimation: 'uk-offcanvas-bar-animation',\n clsMode: 'uk-offcanvas',\n clsOverlay: 'uk-offcanvas-overlay',\n selClose: '.uk-offcanvas-close',\n container: false\n },\n\n computed: {\n\n clsFlip: function(ref) {\n var flip = ref.flip;\n var clsFlip = ref.clsFlip;\n\n return flip ? clsFlip : '';\n },\n\n clsOverlay: function(ref) {\n var overlay = ref.overlay;\n var clsOverlay = ref.clsOverlay;\n\n return overlay ? clsOverlay : '';\n },\n\n clsMode: function(ref) {\n var mode = ref.mode;\n var clsMode = ref.clsMode;\n\n return (clsMode + \"-\" + mode);\n },\n\n clsSidebarAnimation: function(ref) {\n var mode = ref.mode;\n var clsSidebarAnimation = ref.clsSidebarAnimation;\n\n return mode === 'none' || mode === 'reveal' ? '' : clsSidebarAnimation;\n },\n\n clsContainerAnimation: function(ref) {\n var mode = ref.mode;\n var clsContainerAnimation = ref.clsContainerAnimation;\n\n return mode !== 'push' && mode !== 'reveal' ? '' : clsContainerAnimation;\n },\n\n transitionElement: function(ref) {\n var mode = ref.mode;\n\n return mode === 'reveal' ? this.panel.parentNode : this.panel;\n }\n\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return 'a[href^=\"#\"]';\n },\n\n handler: function(ref) {\n var hash = ref.current.hash;\n var defaultPrevented = ref.defaultPrevented;\n\n if (!defaultPrevented && hash && $(hash, document.body)) {\n this.hide();\n }\n }\n\n },\n\n {\n name: 'touchstart',\n\n passive: true,\n\n el: function() {\n return this.panel;\n },\n\n handler: function(ref) {\n var targetTouches = ref.targetTouches;\n\n\n if (targetTouches.length === 1) {\n this.clientY = targetTouches[0].clientY;\n }\n\n }\n\n },\n\n {\n name: 'touchmove',\n\n self: true,\n passive: false,\n\n filter: function() {\n return this.overlay;\n },\n\n handler: function(e) {\n e.cancelable && e.preventDefault();\n }\n\n },\n\n {\n name: 'touchmove',\n\n passive: false,\n\n el: function() {\n return this.panel;\n },\n\n handler: function(e) {\n\n if (e.targetTouches.length !== 1) {\n return;\n }\n\n var clientY = event.targetTouches[0].clientY - this.clientY;\n var ref = this.panel;\n var scrollTop = ref.scrollTop;\n var scrollHeight = ref.scrollHeight;\n var clientHeight = ref.clientHeight;\n\n if (clientHeight >= scrollHeight\n || scrollTop === 0 && clientY > 0\n || scrollHeight - scrollTop <= clientHeight && clientY < 0\n ) {\n e.cancelable && e.preventDefault();\n }\n\n }\n\n },\n\n {\n name: 'show',\n\n self: true,\n\n handler: function() {\n\n if (this.mode === 'reveal' && !hasClass(this.panel.parentNode, this.clsMode)) {\n wrapAll(this.panel, '<div>');\n addClass(this.panel.parentNode, this.clsMode);\n }\n\n css(document.documentElement, 'overflowY', this.overlay ? 'hidden' : '');\n addClass(document.body, this.clsContainer, this.clsFlip);\n css(document.body, 'touch-action', 'pan-y pinch-zoom');\n css(this.$el, 'display', 'block');\n addClass(this.$el, this.clsOverlay);\n addClass(this.panel, this.clsSidebarAnimation, this.mode !== 'reveal' ? this.clsMode : '');\n\n height(document.body); // force reflow\n addClass(document.body, this.clsContainerAnimation);\n\n this.clsContainerAnimation && suppressUserScale();\n\n\n }\n },\n\n {\n name: 'hide',\n\n self: true,\n\n handler: function() {\n removeClass(document.body, this.clsContainerAnimation);\n css(document.body, 'touch-action', '');\n }\n },\n\n {\n name: 'hidden',\n\n self: true,\n\n handler: function() {\n\n this.clsContainerAnimation && resumeUserScale();\n\n if (this.mode === 'reveal') {\n unwrap(this.panel);\n }\n\n removeClass(this.panel, this.clsSidebarAnimation, this.clsMode);\n removeClass(this.$el, this.clsOverlay);\n css(this.$el, 'display', '');\n removeClass(document.body, this.clsContainer, this.clsFlip);\n\n css(document.documentElement, 'overflowY', '');\n\n }\n },\n\n {\n name: 'swipeLeft swipeRight',\n\n handler: function(e) {\n\n if (this.isToggled() && endsWith(e.type, 'Left') ^ this.flip) {\n this.hide();\n }\n\n }\n }\n\n ]\n\n };\n\n // Chrome in responsive mode zooms page upon opening offcanvas\n function suppressUserScale() {\n getViewport().content += ',user-scalable=0';\n }\n\n function resumeUserScale() {\n var viewport = getViewport();\n viewport.content = viewport.content.replace(/,user-scalable=0$/, '');\n }\n\n function getViewport() {\n return $('meta[name=\"viewport\"]', document.head) || append(document.head, '<meta name=\"viewport\">');\n }\n\n var OverflowAuto = {\n\n mixins: [Class],\n\n props: {\n selContainer: String,\n selContent: String\n },\n\n data: {\n selContainer: '.uk-modal',\n selContent: '.uk-modal-dialog'\n },\n\n computed: {\n\n container: function(ref, $el) {\n var selContainer = ref.selContainer;\n\n return closest($el, selContainer);\n },\n\n content: function(ref, $el) {\n var selContent = ref.selContent;\n\n return closest($el, selContent);\n }\n\n },\n\n connected: function() {\n css(this.$el, 'minHeight', 150);\n },\n\n update: {\n\n read: function() {\n\n if (!this.content || !this.container) {\n return false;\n }\n\n return {\n current: toFloat(css(this.$el, 'maxHeight')),\n max: Math.max(150, height(this.container) - (offset(this.content).height - height(this.$el)))\n };\n },\n\n write: function(ref) {\n var current = ref.current;\n var max = ref.max;\n\n css(this.$el, 'maxHeight', max);\n if (Math.round(current) !== Math.round(max)) {\n trigger(this.$el, 'resize');\n }\n },\n\n events: ['resize']\n\n }\n\n };\n\n var Responsive = {\n\n props: ['width', 'height'],\n\n connected: function() {\n addClass(this.$el, 'uk-responsive-width');\n },\n\n update: {\n\n read: function() {\n return isVisible(this.$el) && this.width && this.height\n ? {width: width(this.$el.parentNode), height: this.height}\n : false;\n },\n\n write: function(dim) {\n height(this.$el, Dimensions.contain({\n height: this.height,\n width: this.width\n }, dim).height);\n },\n\n events: ['resize']\n\n }\n\n };\n\n var Scroll = {\n\n props: {\n duration: Number,\n offset: Number\n },\n\n data: {\n duration: 1000,\n offset: 0\n },\n\n methods: {\n\n scrollTo: function(el) {\n var this$1 = this;\n\n\n el = el && $(el) || document.body;\n\n var docHeight = height(document);\n var winHeight = height(window);\n\n var target = offset(el).top - this.offset;\n if (target + winHeight > docHeight) {\n target = docHeight - winHeight;\n }\n\n if (!trigger(this.$el, 'beforescroll', [this, el])) {\n return;\n }\n\n var start = Date.now();\n var startY = window.pageYOffset;\n var step = function () {\n\n var currentY = startY + (target - startY) * ease(clamp((Date.now() - start) / this$1.duration));\n\n scrollTop(window, currentY);\n\n // scroll more if we have not reached our destination\n if (currentY !== target) {\n requestAnimationFrame(step);\n } else {\n trigger(this$1.$el, 'scrolled', [this$1, el]);\n }\n\n };\n\n step();\n\n }\n\n },\n\n events: {\n\n click: function(e) {\n\n if (e.defaultPrevented) {\n return;\n }\n\n e.preventDefault();\n this.scrollTo(escape(decodeURIComponent(this.$el.hash)).substr(1));\n }\n\n }\n\n };\n\n function ease(k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n }\n\n var Scrollspy = {\n\n args: 'cls',\n\n props: {\n cls: String,\n target: String,\n hidden: Boolean,\n offsetTop: Number,\n offsetLeft: Number,\n repeat: Boolean,\n delay: Number\n },\n\n data: function () { return ({\n cls: false,\n target: false,\n hidden: true,\n offsetTop: 0,\n offsetLeft: 0,\n repeat: false,\n delay: 0,\n inViewClass: 'uk-scrollspy-inview'\n }); },\n\n computed: {\n\n elements: function(ref, $el) {\n var target = ref.target;\n\n return target ? $$(target, $el) : [$el];\n }\n\n },\n\n update: [\n\n {\n\n write: function() {\n if (this.hidden) {\n css(filter(this.elements, (\":not(.\" + (this.inViewClass) + \")\")), 'visibility', 'hidden');\n }\n }\n\n },\n\n {\n\n read: function(ref) {\n var this$1 = this;\n var update = ref.update;\n\n\n if (!update) {\n return;\n }\n\n this.elements.forEach(function (el) {\n\n var state = el._ukScrollspyState;\n\n if (!state) {\n state = {cls: data(el, 'uk-scrollspy-class') || this$1.cls};\n }\n\n state.show = isInView(el, this$1.offsetTop, this$1.offsetLeft);\n el._ukScrollspyState = state;\n\n });\n\n },\n\n write: function(data) {\n var this$1 = this;\n\n\n // Let child components be applied at least once first\n if (!data.update) {\n this.$emit();\n return data.update = true;\n }\n\n this.elements.forEach(function (el) {\n\n var state = el._ukScrollspyState;\n var cls = state.cls;\n\n if (state.show && !state.inview && !state.queued) {\n\n var show = function () {\n\n css(el, 'visibility', '');\n addClass(el, this$1.inViewClass);\n toggleClass(el, cls);\n\n trigger(el, 'inview');\n\n this$1.$update(el);\n\n state.inview = true;\n state.abort && state.abort();\n };\n\n if (this$1.delay) {\n\n state.queued = true;\n data.promise = (data.promise || Promise.resolve()).then(function () {\n return !state.inview && new Promise(function (resolve) {\n\n var timer = setTimeout(function () {\n\n show();\n resolve();\n\n }, data.promise || this$1.elements.length === 1 ? this$1.delay : 0);\n\n state.abort = function () {\n clearTimeout(timer);\n resolve();\n state.queued = false;\n };\n\n });\n\n });\n\n } else {\n show();\n }\n\n } else if (!state.show && (state.inview || state.queued) && this$1.repeat) {\n\n state.abort && state.abort();\n\n if (!state.inview) {\n return;\n }\n\n css(el, 'visibility', this$1.hidden ? 'hidden' : '');\n removeClass(el, this$1.inViewClass);\n toggleClass(el, cls);\n\n trigger(el, 'outview');\n\n this$1.$update(el);\n\n state.inview = false;\n\n }\n\n\n });\n\n },\n\n events: ['scroll', 'resize']\n\n }\n\n ]\n\n };\n\n var ScrollspyNav = {\n\n props: {\n cls: String,\n closest: String,\n scroll: Boolean,\n overflow: Boolean,\n offset: Number\n },\n\n data: {\n cls: 'uk-active',\n closest: false,\n scroll: false,\n overflow: true,\n offset: 0\n },\n\n computed: {\n\n links: function(_, $el) {\n return $$('a[href^=\"#\"]', $el).filter(function (el) { return el.hash; });\n },\n\n elements: function(ref) {\n var selector = ref.closest;\n\n return closest(this.links, selector || '*');\n },\n\n targets: function() {\n return $$(this.links.map(function (el) { return escape(el.hash).substr(1); }).join(','));\n }\n\n },\n\n update: [\n\n {\n\n read: function() {\n if (this.scroll) {\n this.$create('scroll', this.links, {offset: this.offset || 0});\n }\n }\n\n },\n\n {\n\n read: function(data) {\n var this$1 = this;\n\n\n var scroll = window.pageYOffset + this.offset + 1;\n var max = height(document) - height(window) + this.offset;\n\n data.active = false;\n\n this.targets.every(function (el, i) {\n\n var ref = offset(el);\n var top = ref.top;\n var last = i + 1 === this$1.targets.length;\n\n if (!this$1.overflow && (i === 0 && top > scroll || last && top + el.offsetTop < scroll)) {\n return false;\n }\n\n if (!last && offset(this$1.targets[i + 1]).top <= scroll) {\n return true;\n }\n\n if (scroll >= max) {\n for (var j = this$1.targets.length - 1; j > i; j--) {\n if (isInView(this$1.targets[j])) {\n el = this$1.targets[j];\n break;\n }\n }\n }\n\n return !(data.active = $(filter(this$1.links, (\"[href=\\\"#\" + (el.id) + \"\\\"]\"))));\n\n });\n\n },\n\n write: function(ref) {\n var active = ref.active;\n\n\n this.links.forEach(function (el) { return el.blur(); });\n removeClass(this.elements, this.cls);\n\n if (active) {\n trigger(this.$el, 'active', [active, addClass(this.closest ? closest(active, this.closest) : active, this.cls)]);\n }\n\n },\n\n events: ['scroll', 'resize']\n\n }\n\n ]\n\n };\n\n var Sticky = {\n\n mixins: [Class, Media],\n\n props: {\n top: null,\n bottom: Boolean,\n offset: String,\n animation: String,\n clsActive: String,\n clsInactive: String,\n clsFixed: String,\n clsBelow: String,\n selTarget: String,\n widthElement: Boolean,\n showOnUp: Boolean,\n targetOffset: Number\n },\n\n data: {\n top: 0,\n bottom: false,\n offset: 0,\n animation: '',\n clsActive: 'uk-active',\n clsInactive: '',\n clsFixed: 'uk-sticky-fixed',\n clsBelow: 'uk-sticky-below',\n selTarget: '',\n widthElement: false,\n showOnUp: false,\n targetOffset: false\n },\n\n computed: {\n\n offset: function(ref) {\n var offset = ref.offset;\n\n return toPx(offset);\n },\n\n selTarget: function(ref, $el) {\n var selTarget = ref.selTarget;\n\n return selTarget && $(selTarget, $el) || $el;\n },\n\n widthElement: function(ref, $el) {\n var widthElement = ref.widthElement;\n\n return query(widthElement, $el) || this.placeholder;\n },\n\n isActive: {\n\n get: function() {\n return hasClass(this.selTarget, this.clsActive);\n },\n\n set: function(value) {\n if (value && !this.isActive) {\n replaceClass(this.selTarget, this.clsInactive, this.clsActive);\n trigger(this.$el, 'active');\n } else if (!value && !hasClass(this.selTarget, this.clsInactive)) {\n replaceClass(this.selTarget, this.clsActive, this.clsInactive);\n trigger(this.$el, 'inactive');\n }\n }\n\n }\n\n },\n\n connected: function() {\n this.placeholder = $('+ .uk-sticky-placeholder', this.$el) || $('<div class=\"uk-sticky-placeholder\"></div>');\n this.isFixed = false;\n this.isActive = false;\n },\n\n disconnected: function() {\n\n if (this.isFixed) {\n this.hide();\n removeClass(this.selTarget, this.clsInactive);\n }\n\n remove(this.placeholder);\n this.placeholder = null;\n this.widthElement = null;\n },\n\n events: [\n\n {\n\n name: 'load hashchange popstate',\n\n el: window,\n\n handler: function() {\n var this$1 = this;\n\n\n if (!(this.targetOffset !== false && location.hash && window.pageYOffset > 0)) {\n return;\n }\n\n var target = $(location.hash);\n\n if (target) {\n fastdom.read(function () {\n\n var ref = offset(target);\n var top = ref.top;\n var elTop = offset(this$1.$el).top;\n var elHeight = this$1.$el.offsetHeight;\n\n if (this$1.isFixed && elTop + elHeight >= top && elTop <= top + target.offsetHeight) {\n scrollTop(window, top - elHeight - (isNumeric(this$1.targetOffset) ? this$1.targetOffset : 0) - this$1.offset);\n }\n\n });\n }\n\n }\n\n }\n\n ],\n\n update: [\n\n {\n\n read: function(ref, type) {\n var height = ref.height;\n\n\n if (this.isActive && type !== 'update') {\n\n this.hide();\n height = this.$el.offsetHeight;\n this.show();\n\n }\n\n height = !this.isActive ? this.$el.offsetHeight : height;\n\n this.topOffset = offset(this.isFixed ? this.placeholder : this.$el).top;\n this.bottomOffset = this.topOffset + height;\n\n var bottom = parseProp('bottom', this);\n\n this.top = Math.max(toFloat(parseProp('top', this)), this.topOffset) - this.offset;\n this.bottom = bottom && bottom - height;\n this.inactive = !this.matchMedia;\n\n return {\n lastScroll: false,\n height: height,\n margins: css(this.$el, ['marginTop', 'marginBottom', 'marginLeft', 'marginRight'])\n };\n },\n\n write: function(ref) {\n var height = ref.height;\n var margins = ref.margins;\n\n\n var ref$1 = this;\n var placeholder = ref$1.placeholder;\n\n css(placeholder, assign({height: height}, margins));\n\n if (!within(placeholder, document)) {\n after(this.$el, placeholder);\n attr(placeholder, 'hidden', '');\n }\n\n // ensure active/inactive classes are applied\n this.isActive = this.isActive;\n\n },\n\n events: ['resize']\n\n },\n\n {\n\n read: function(ref) {\n var scroll = ref.scroll; if ( scroll === void 0 ) scroll = 0;\n\n\n this.width = (isVisible(this.widthElement) ? this.widthElement : this.$el).offsetWidth;\n\n this.scroll = window.pageYOffset;\n\n return {\n dir: scroll <= this.scroll ? 'down' : 'up',\n scroll: this.scroll,\n visible: isVisible(this.$el),\n top: offsetPosition(this.placeholder)[0]\n };\n },\n\n write: function(data, type) {\n var this$1 = this;\n\n\n var initTimestamp = data.initTimestamp; if ( initTimestamp === void 0 ) initTimestamp = 0;\n var dir = data.dir;\n var lastDir = data.lastDir;\n var lastScroll = data.lastScroll;\n var scroll = data.scroll;\n var top = data.top;\n var visible = data.visible;\n var now = performance.now();\n\n data.lastScroll = scroll;\n\n if (scroll < 0 || scroll === lastScroll || !visible || this.disabled || this.showOnUp && type !== 'scroll') {\n return;\n }\n\n if (now - initTimestamp > 300 || dir !== lastDir) {\n data.initScroll = scroll;\n data.initTimestamp = now;\n }\n\n data.lastDir = dir;\n\n if (this.showOnUp && Math.abs(data.initScroll - scroll) <= 30 && Math.abs(lastScroll - scroll) <= 10) {\n return;\n }\n\n if (this.inactive\n || scroll < this.top\n || this.showOnUp && (scroll <= this.top || dir === 'down' || dir === 'up' && !this.isFixed && scroll <= this.bottomOffset)\n ) {\n\n if (!this.isFixed) {\n\n if (Animation.inProgress(this.$el) && top > scroll) {\n Animation.cancel(this.$el);\n this.hide();\n }\n\n return;\n }\n\n this.isFixed = false;\n\n if (this.animation && scroll > this.topOffset) {\n Animation.cancel(this.$el);\n Animation.out(this.$el, this.animation).then(function () { return this$1.hide(); }, noop);\n } else {\n this.hide();\n }\n\n } else if (this.isFixed) {\n\n this.update();\n\n } else if (this.animation) {\n\n Animation.cancel(this.$el);\n this.show();\n Animation.in(this.$el, this.animation).catch(noop);\n\n } else {\n this.show();\n }\n\n },\n\n events: ['resize', 'scroll']\n\n }\n\n ],\n\n methods: {\n\n show: function() {\n\n this.isFixed = true;\n this.update();\n attr(this.placeholder, 'hidden', null);\n\n },\n\n hide: function() {\n\n this.isActive = false;\n removeClass(this.$el, this.clsFixed, this.clsBelow);\n css(this.$el, {position: '', top: '', width: ''});\n attr(this.placeholder, 'hidden', '');\n\n },\n\n update: function() {\n\n var active = this.top !== 0 || this.scroll > this.top;\n var top = Math.max(0, this.offset);\n\n if (this.bottom && this.scroll > this.bottom - this.offset) {\n top = this.bottom - this.scroll;\n }\n\n css(this.$el, {\n position: 'fixed',\n top: (top + \"px\"),\n width: this.width\n });\n\n this.isActive = active;\n toggleClass(this.$el, this.clsBelow, this.scroll > this.bottomOffset);\n addClass(this.$el, this.clsFixed);\n\n }\n\n }\n\n };\n\n function parseProp(prop, ref) {\n var $props = ref.$props;\n var $el = ref.$el;\n var propOffset = ref[(prop + \"Offset\")];\n\n\n var value = $props[prop];\n\n if (!value) {\n return;\n }\n\n if (isNumeric(value) && isString(value) && value.match(/^-?\\d/)) {\n\n return propOffset + toPx(value);\n\n } else {\n\n return offset(value === true ? $el.parentNode : query(value, $el)).bottom;\n\n }\n }\n\n var Switcher = {\n\n mixins: [Togglable],\n\n args: 'connect',\n\n props: {\n connect: String,\n toggle: String,\n active: Number,\n swiping: Boolean\n },\n\n data: {\n connect: '~.uk-switcher',\n toggle: '> * > :first-child',\n active: 0,\n swiping: true,\n cls: 'uk-active',\n clsContainer: 'uk-switcher',\n attrItem: 'uk-switcher-item',\n queued: true\n },\n\n computed: {\n\n connects: function(ref, $el) {\n var connect = ref.connect;\n\n return queryAll(connect, $el);\n },\n\n toggles: function(ref, $el) {\n var toggle = ref.toggle;\n\n return $$(toggle, $el);\n }\n\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return ((this.toggle) + \":not(.uk-disabled)\");\n },\n\n handler: function(e) {\n e.preventDefault();\n this.show(toNodes(this.$el.children).filter(function (el) { return within(e.current, el); })[0]);\n }\n\n },\n\n {\n name: 'click',\n\n el: function() {\n return this.connects;\n },\n\n delegate: function() {\n return (\"[\" + (this.attrItem) + \"],[data-\" + (this.attrItem) + \"]\");\n },\n\n handler: function(e) {\n e.preventDefault();\n this.show(data(e.current, this.attrItem));\n }\n },\n\n {\n name: 'swipeRight swipeLeft',\n\n filter: function() {\n return this.swiping;\n },\n\n el: function() {\n return this.connects;\n },\n\n handler: function(ref) {\n var type = ref.type;\n\n this.show(endsWith(type, 'Left') ? 'next' : 'previous');\n }\n }\n\n ],\n\n update: function() {\n var this$1 = this;\n\n\n this.connects.forEach(function (list) { return this$1.updateAria(list.children); });\n var ref = this.$el;\n var children = ref.children;\n this.show(filter(children, (\".\" + (this.cls)))[0] || children[this.active] || children[0]);\n\n this.swiping && css(this.connects, 'touch-action', 'pan-y pinch-zoom');\n\n },\n\n methods: {\n\n index: function() {\n return !isEmpty(this.connects) && index(filter(this.connects[0].children, (\".\" + (this.cls)))[0]);\n },\n\n show: function(item) {\n var this$1 = this;\n\n\n var ref = this.$el;\n var children = ref.children;\n var length = children.length;\n var prev = this.index();\n var hasPrev = prev >= 0;\n var dir = item === 'previous' ? -1 : 1;\n\n var toggle, active, next = getIndex(item, children, prev);\n\n for (var i = 0; i < length; i++, next = (next + dir + length) % length) {\n if (!matches(this.toggles[next], '.uk-disabled *, .uk-disabled, [disabled]')) {\n toggle = this.toggles[next];\n active = children[next];\n break;\n }\n }\n\n if (!active || prev >= 0 && hasClass(active, this.cls) || prev === next) {\n return;\n }\n\n removeClass(children, this.cls);\n addClass(active, this.cls);\n attr(this.toggles, 'aria-expanded', false);\n attr(toggle, 'aria-expanded', true);\n\n this.connects.forEach(function (list) {\n if (!hasPrev) {\n this$1.toggleNow(list.children[next]);\n } else {\n this$1.toggleElement([list.children[prev], list.children[next]]);\n }\n });\n\n }\n\n }\n\n };\n\n var Tab = {\n\n mixins: [Class],\n\n extends: Switcher,\n\n props: {\n media: Boolean\n },\n\n data: {\n media: 960,\n attrItem: 'uk-tab-item'\n },\n\n connected: function() {\n\n var cls = hasClass(this.$el, 'uk-tab-left')\n ? 'uk-tab-left'\n : hasClass(this.$el, 'uk-tab-right')\n ? 'uk-tab-right'\n : false;\n\n if (cls) {\n this.$create('toggle', this.$el, {cls: cls, mode: 'media', media: this.media});\n }\n }\n\n };\n\n var Toggle = {\n\n mixins: [Media, Togglable],\n\n args: 'target',\n\n props: {\n href: String,\n target: null,\n mode: 'list'\n },\n\n data: {\n href: false,\n target: false,\n mode: 'click',\n queued: true\n },\n\n computed: {\n\n target: function(ref, $el) {\n var href = ref.href;\n var target = ref.target;\n\n target = queryAll(target || href, $el);\n return target.length && target || [$el];\n }\n\n },\n\n connected: function() {\n trigger(this.target, 'updatearia', [this]);\n },\n\n events: [\n\n {\n\n name: (pointerEnter + \" \" + pointerLeave),\n\n filter: function() {\n return includes(this.mode, 'hover');\n },\n\n handler: function(e) {\n if (!isTouch(e)) {\n this.toggle((\"toggle\" + (e.type === pointerEnter ? 'show' : 'hide')));\n }\n }\n\n },\n\n {\n\n name: 'click',\n\n filter: function() {\n return includes(this.mode, 'click') || hasTouch && includes(this.mode, 'hover');\n },\n\n handler: function(e) {\n\n // TODO better isToggled handling\n var link;\n if (closest(e.target, 'a[href=\"#\"], a[href=\"\"]')\n || (link = closest(e.target, 'a[href]')) && (\n this.cls\n || !isVisible(this.target)\n || link.hash && matches(this.target, link.hash)\n )\n ) {\n e.preventDefault();\n }\n\n this.toggle();\n }\n\n }\n\n ],\n\n update: {\n\n read: function() {\n return includes(this.mode, 'media') && this.media\n ? {match: this.matchMedia}\n : false;\n },\n\n write: function(ref) {\n var match = ref.match;\n\n\n var toggled = this.isToggled(this.target);\n if (match ? !toggled : toggled) {\n this.toggle();\n }\n\n },\n\n events: ['resize']\n\n },\n\n methods: {\n\n toggle: function(type) {\n if (trigger(this.target, type || 'toggle', [this])) {\n this.toggleElement(this.target);\n }\n }\n\n }\n\n };\n\n function core (UIkit) {\n\n // core components\n UIkit.component('accordion', Accordion);\n UIkit.component('alert', Alert);\n UIkit.component('cover', Cover);\n UIkit.component('drop', Drop);\n UIkit.component('dropdown', Dropdown);\n UIkit.component('formCustom', FormCustom);\n UIkit.component('gif', Gif);\n UIkit.component('grid', Grid);\n UIkit.component('heightMatch', HeightMatch);\n UIkit.component('heightViewport', HeightViewport);\n UIkit.component('icon', Icon);\n UIkit.component('img', Img);\n UIkit.component('leader', Leader);\n UIkit.component('margin', Margin);\n UIkit.component('modal', Modal$1);\n UIkit.component('nav', Nav);\n UIkit.component('navbar', Navbar);\n UIkit.component('offcanvas', Offcanvas);\n UIkit.component('overflowAuto', OverflowAuto);\n UIkit.component('responsive', Responsive);\n UIkit.component('scroll', Scroll);\n UIkit.component('scrollspy', Scrollspy);\n UIkit.component('scrollspyNav', ScrollspyNav);\n UIkit.component('sticky', Sticky);\n UIkit.component('svg', Svg);\n UIkit.component('switcher', Switcher);\n UIkit.component('tab', Tab);\n UIkit.component('toggle', Toggle);\n UIkit.component('video', Video);\n\n // Icon components\n UIkit.component('close', Close);\n UIkit.component('marker', IconComponent);\n UIkit.component('navbarToggleIcon', IconComponent);\n UIkit.component('overlayIcon', IconComponent);\n UIkit.component('paginationNext', IconComponent);\n UIkit.component('paginationPrevious', IconComponent);\n UIkit.component('searchIcon', Search);\n UIkit.component('slidenavNext', Slidenav);\n UIkit.component('slidenavPrevious', Slidenav);\n UIkit.component('spinner', Spinner);\n UIkit.component('totop', IconComponent);\n\n // core functionality\n UIkit.use(Core);\n\n }\n\n UIkit.version = '3.2.0';\n\n core(UIkit);\n\n var Countdown = {\n\n mixins: [Class],\n\n props: {\n date: String,\n clsWrapper: String\n },\n\n data: {\n date: '',\n clsWrapper: '.uk-countdown-%unit%'\n },\n\n computed: {\n\n date: function(ref) {\n var date = ref.date;\n\n return Date.parse(date);\n },\n\n days: function(ref, $el) {\n var clsWrapper = ref.clsWrapper;\n\n return $(clsWrapper.replace('%unit%', 'days'), $el);\n },\n\n hours: function(ref, $el) {\n var clsWrapper = ref.clsWrapper;\n\n return $(clsWrapper.replace('%unit%', 'hours'), $el);\n },\n\n minutes: function(ref, $el) {\n var clsWrapper = ref.clsWrapper;\n\n return $(clsWrapper.replace('%unit%', 'minutes'), $el);\n },\n\n seconds: function(ref, $el) {\n var clsWrapper = ref.clsWrapper;\n\n return $(clsWrapper.replace('%unit%', 'seconds'), $el);\n },\n\n units: function() {\n var this$1 = this;\n\n return ['days', 'hours', 'minutes', 'seconds'].filter(function (unit) { return this$1[unit]; });\n }\n\n },\n\n connected: function() {\n this.start();\n },\n\n disconnected: function() {\n var this$1 = this;\n\n this.stop();\n this.units.forEach(function (unit) { return empty(this$1[unit]); });\n },\n\n events: [\n\n {\n\n name: 'visibilitychange',\n\n el: document,\n\n handler: function() {\n if (document.hidden) {\n this.stop();\n } else {\n this.start();\n }\n }\n\n }\n\n ],\n\n update: {\n\n write: function() {\n var this$1 = this;\n\n\n var timespan = getTimeSpan(this.date);\n\n if (timespan.total <= 0) {\n\n this.stop();\n\n timespan.days\n = timespan.hours\n = timespan.minutes\n = timespan.seconds\n = 0;\n }\n\n this.units.forEach(function (unit) {\n\n var digits = String(Math.floor(timespan[unit]));\n\n digits = digits.length < 2 ? (\"0\" + digits) : digits;\n\n var el = this$1[unit];\n if (el.textContent !== digits) {\n digits = digits.split('');\n\n if (digits.length !== el.children.length) {\n html(el, digits.map(function () { return '<span></span>'; }).join(''));\n }\n\n digits.forEach(function (digit, i) { return el.children[i].textContent = digit; });\n }\n\n });\n\n }\n\n },\n\n methods: {\n\n start: function() {\n var this$1 = this;\n\n\n this.stop();\n\n if (this.date && this.units.length) {\n this.$emit();\n this.timer = setInterval(function () { return this$1.$emit(); }, 1000);\n }\n\n },\n\n stop: function() {\n\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n\n }\n\n }\n\n };\n\n function getTimeSpan(date) {\n\n var total = date - Date.now();\n\n return {\n total: total,\n seconds: total / 1000 % 60,\n minutes: total / 1000 / 60 % 60,\n hours: total / 1000 / 60 / 60 % 24,\n days: total / 1000 / 60 / 60 / 24\n };\n }\n\n var targetClass = 'uk-animation-target';\n\n var Animate = {\n\n props: {\n animation: Number\n },\n\n data: {\n animation: 150\n },\n\n computed: {\n\n target: function() {\n return this.$el;\n }\n\n },\n\n methods: {\n\n animate: function(action) {\n var this$1 = this;\n\n\n addStyle();\n\n var children = toNodes(this.target.children);\n var propsFrom = children.map(function (el) { return getProps(el, true); });\n\n var oldHeight = height(this.target);\n var oldScrollY = window.pageYOffset;\n\n action();\n\n Transition.cancel(this.target);\n children.forEach(Transition.cancel);\n\n reset(this.target);\n this.$update(this.target);\n fastdom.flush();\n\n var newHeight = height(this.target);\n\n children = children.concat(toNodes(this.target.children).filter(function (el) { return !includes(children, el); }));\n\n var propsTo = children.map(function (el, i) { return el.parentNode && i in propsFrom\n ? propsFrom[i]\n ? isVisible(el)\n ? getPositionWithMargin(el)\n : {opacity: 0}\n : {opacity: isVisible(el) ? 1 : 0}\n : false; }\n );\n\n propsFrom = propsTo.map(function (props, i) {\n var from = children[i].parentNode === this$1.target\n ? propsFrom[i] || getProps(children[i])\n : false;\n\n if (from) {\n if (!props) {\n delete from.opacity;\n } else if (!('opacity' in props)) {\n var opacity = from.opacity;\n\n if (opacity % 1) {\n props.opacity = 1;\n } else {\n delete from.opacity;\n }\n }\n }\n\n return from;\n });\n\n addClass(this.target, targetClass);\n children.forEach(function (el, i) { return propsFrom[i] && css(el, propsFrom[i]); });\n css(this.target, 'height', oldHeight);\n scrollTop(window, oldScrollY);\n\n return Promise.all(children.map(function (el, i) { return propsFrom[i] && propsTo[i]\n ? Transition.start(el, propsTo[i], this$1.animation, 'ease')\n : Promise.resolve(); }\n ).concat(Transition.start(this.target, {height: newHeight}, this.animation, 'ease'))).then(function () {\n children.forEach(function (el, i) { return css(el, {display: propsTo[i].opacity === 0 ? 'none' : '', zIndex: ''}); });\n reset(this$1.target);\n this$1.$update(this$1.target);\n fastdom.flush(); // needed for IE11\n }, noop);\n\n }\n }\n };\n\n function getProps(el, opacity) {\n\n var zIndex = css(el, 'zIndex');\n\n return isVisible(el)\n ? assign({\n display: '',\n opacity: opacity ? css(el, 'opacity') : '0',\n pointerEvents: 'none',\n position: 'absolute',\n zIndex: zIndex === 'auto' ? index(el) : zIndex\n }, getPositionWithMargin(el))\n : false;\n }\n\n function reset(el) {\n css(el.children, {\n height: '',\n left: '',\n opacity: '',\n pointerEvents: '',\n position: '',\n top: '',\n width: ''\n });\n removeClass(el, targetClass);\n css(el, 'height', '');\n }\n\n function getPositionWithMargin(el) {\n var ref = el.getBoundingClientRect();\n var height = ref.height;\n var width = ref.width;\n var ref$1 = position(el);\n var top = ref$1.top;\n var left = ref$1.left;\n top += toFloat(css(el, 'marginTop'));\n\n return {top: top, left: left, height: height, width: width};\n }\n\n var style;\n\n function addStyle() {\n if (style) {\n return;\n }\n style = append(document.head, '<style>').sheet;\n style.insertRule(\n (\".\" + targetClass + \" > * {\\n margin-top: 0 !important;\\n transform: none !important;\\n }\"), 0\n );\n }\n\n var Filter = {\n\n mixins: [Animate],\n\n args: 'target',\n\n props: {\n target: Boolean,\n selActive: Boolean\n },\n\n data: {\n target: null,\n selActive: false,\n attrItem: 'uk-filter-control',\n cls: 'uk-active',\n animation: 250\n },\n\n computed: {\n\n toggles: {\n\n get: function(ref, $el) {\n var attrItem = ref.attrItem;\n\n return $$((\"[\" + (this.attrItem) + \"],[data-\" + (this.attrItem) + \"]\"), $el);\n },\n\n watch: function() {\n this.updateState();\n }\n\n },\n\n target: function(ref, $el) {\n var target = ref.target;\n\n return $(target, $el);\n },\n\n children: {\n\n get: function() {\n return toNodes(this.target && this.target.children);\n },\n\n watch: function(list, old) {\n if (!isEqualList(list, old)) {\n this.updateState();\n }\n }\n }\n\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return (\"[\" + (this.attrItem) + \"],[data-\" + (this.attrItem) + \"]\");\n },\n\n handler: function(e) {\n\n e.preventDefault();\n this.apply(e.current);\n\n }\n\n }\n\n ],\n\n connected: function() {\n var this$1 = this;\n\n\n this.updateState();\n\n if (this.selActive !== false) {\n var actives = $$(this.selActive, this.$el);\n this.toggles.forEach(function (el) { return toggleClass(el, this$1.cls, includes(actives, el)); });\n }\n\n },\n\n methods: {\n\n apply: function(el) {\n this.setState(mergeState(el, this.attrItem, this.getState()));\n },\n\n getState: function() {\n var this$1 = this;\n\n return this.toggles\n .filter(function (item) { return hasClass(item, this$1.cls); })\n .reduce(function (state, el) { return mergeState(el, this$1.attrItem, state); }, {filter: {'': ''}, sort: []});\n },\n\n setState: function(state, animate) {\n var this$1 = this;\n if ( animate === void 0 ) animate = true;\n\n\n state = assign({filter: {'': ''}, sort: []}, state);\n\n trigger(this.$el, 'beforeFilter', [this, state]);\n\n var ref = this;\n var children = ref.children;\n\n this.toggles.forEach(function (el) { return toggleClass(el, this$1.cls, !!matchFilter(el, this$1.attrItem, state)); });\n\n var apply = function () {\n\n var selector = getSelector(state);\n\n children.forEach(function (el) { return css(el, 'display', selector && !matches(el, selector) ? 'none' : ''); });\n\n var ref = state.sort;\n var sort = ref[0];\n var order = ref[1];\n\n if (sort) {\n var sorted = sortItems(children, sort, order);\n if (!isEqual(sorted, children)) {\n sorted.forEach(function (el) { return append(this$1.target, el); });\n }\n }\n\n };\n\n if (animate) {\n this.animate(apply).then(function () { return trigger(this$1.$el, 'afterFilter', [this$1]); });\n } else {\n apply();\n trigger(this.$el, 'afterFilter', [this]);\n }\n\n },\n\n updateState: function() {\n var this$1 = this;\n\n fastdom.write(function () { return this$1.setState(this$1.getState(), false); });\n }\n\n }\n\n };\n\n function getFilter(el, attr) {\n return parseOptions(data(el, attr), ['filter']);\n }\n\n function mergeState(el, attr, state) {\n\n var filterBy = getFilter(el, attr);\n var filter = filterBy.filter;\n var group = filterBy.group;\n var sort = filterBy.sort;\n var order = filterBy.order; if ( order === void 0 ) order = 'asc';\n\n if (filter || isUndefined(sort)) {\n\n if (group) {\n\n if (filter) {\n delete state.filter[''];\n state.filter[group] = filter;\n } else {\n delete state.filter[group];\n\n if (isEmpty(state.filter) || '' in state.filter) {\n state.filter = {'': filter || ''};\n }\n\n }\n\n } else {\n state.filter = {'': filter || ''};\n }\n\n }\n\n if (!isUndefined(sort)) {\n state.sort = [sort, order];\n }\n\n return state;\n }\n\n function matchFilter(el, attr, ref) {\n var stateFilter = ref.filter; if ( stateFilter === void 0 ) stateFilter = {'': ''};\n var ref_sort = ref.sort;\n var stateSort = ref_sort[0];\n var stateOrder = ref_sort[1];\n\n\n var ref$1 = getFilter(el, attr);\n var filter = ref$1.filter; if ( filter === void 0 ) filter = '';\n var group = ref$1.group; if ( group === void 0 ) group = '';\n var sort = ref$1.sort;\n var order = ref$1.order; if ( order === void 0 ) order = 'asc';\n\n return isUndefined(sort)\n ? group in stateFilter && filter === stateFilter[group]\n || !filter && group && !(group in stateFilter) && !stateFilter['']\n : stateSort === sort && stateOrder === order;\n }\n\n function isEqualList(listA, listB) {\n return listA.length === listB.length\n && listA.every(function (el) { return ~listB.indexOf(el); });\n }\n\n function getSelector(ref) {\n var filter = ref.filter;\n\n var selector = '';\n each(filter, function (value) { return selector += value || ''; });\n return selector;\n }\n\n function sortItems(nodes, sort, order) {\n return assign([], nodes).sort(function (a, b) { return data(a, sort).localeCompare(data(b, sort), undefined, {numeric: true}) * (order === 'asc' || -1); });\n }\n\n var Animations = {\n\n slide: {\n\n show: function(dir) {\n return [\n {transform: translate(dir * -100)},\n {transform: translate()}\n ];\n },\n\n percent: function(current) {\n return translated(current);\n },\n\n translate: function(percent, dir) {\n return [\n {transform: translate(dir * -100 * percent)},\n {transform: translate(dir * 100 * (1 - percent))}\n ];\n }\n\n }\n\n };\n\n function translated(el) {\n return Math.abs(css(el, 'transform').split(',')[4] / el.offsetWidth) || 0;\n }\n\n function translate(value, unit) {\n if ( value === void 0 ) value = 0;\n if ( unit === void 0 ) unit = '%';\n\n value += value ? unit : '';\n return isIE ? (\"translateX(\" + value + \")\") : (\"translate3d(\" + value + \", 0, 0)\"); // currently not translate3d in IE, translate3d within translate3d does not work while transitioning\n }\n\n function scale3d(value) {\n return (\"scale3d(\" + value + \", \" + value + \", 1)\");\n }\n\n var Animations$1 = assign({}, Animations, {\n\n fade: {\n\n show: function() {\n return [\n {opacity: 0},\n {opacity: 1}\n ];\n },\n\n percent: function(current) {\n return 1 - css(current, 'opacity');\n },\n\n translate: function(percent) {\n return [\n {opacity: 1 - percent},\n {opacity: percent}\n ];\n }\n\n },\n\n scale: {\n\n show: function() {\n return [\n {opacity: 0, transform: scale3d(1 - .2)},\n {opacity: 1, transform: scale3d(1)}\n ];\n },\n\n percent: function(current) {\n return 1 - css(current, 'opacity');\n },\n\n translate: function(percent) {\n return [\n {opacity: 1 - percent, transform: scale3d(1 - .2 * percent)},\n {opacity: percent, transform: scale3d(1 - .2 + .2 * percent)}\n ];\n }\n\n }\n\n });\n\n function Transitioner(prev, next, dir, ref) {\n var animation = ref.animation;\n var easing = ref.easing;\n\n\n var percent = animation.percent;\n var translate = animation.translate;\n var show = animation.show; if ( show === void 0 ) show = noop;\n var props = show(dir);\n var deferred = new Deferred();\n\n return {\n\n dir: dir,\n\n show: function(duration, percent, linear) {\n var this$1 = this;\n if ( percent === void 0 ) percent = 0;\n\n\n var timing = linear ? 'linear' : easing;\n duration -= Math.round(duration * clamp(percent, -1, 1));\n\n this.translate(percent);\n\n triggerUpdate(next, 'itemin', {percent: percent, duration: duration, timing: timing, dir: dir});\n triggerUpdate(prev, 'itemout', {percent: 1 - percent, duration: duration, timing: timing, dir: dir});\n\n Promise.all([\n Transition.start(next, props[1], duration, timing),\n Transition.start(prev, props[0], duration, timing)\n ]).then(function () {\n this$1.reset();\n deferred.resolve();\n }, noop);\n\n return deferred.promise;\n },\n\n stop: function() {\n return Transition.stop([next, prev]);\n },\n\n cancel: function() {\n Transition.cancel([next, prev]);\n },\n\n reset: function() {\n for (var prop in props[0]) {\n css([next, prev], prop, '');\n }\n },\n\n forward: function(duration, percent) {\n if ( percent === void 0 ) percent = this.percent();\n\n Transition.cancel([next, prev]);\n return this.show(duration, percent, true);\n\n },\n\n translate: function(percent) {\n\n this.reset();\n\n var props = translate(percent, dir);\n css(next, props[1]);\n css(prev, props[0]);\n triggerUpdate(next, 'itemtranslatein', {percent: percent, dir: dir});\n triggerUpdate(prev, 'itemtranslateout', {percent: 1 - percent, dir: dir});\n\n },\n\n percent: function() {\n return percent(prev || next, next, dir);\n },\n\n getDistance: function() {\n return prev && prev.offsetWidth;\n }\n\n };\n\n }\n\n function triggerUpdate(el, type, data) {\n trigger(el, createEvent(type, false, false, data));\n }\n\n var SliderAutoplay = {\n\n props: {\n autoplay: Boolean,\n autoplayInterval: Number,\n pauseOnHover: Boolean\n },\n\n data: {\n autoplay: false,\n autoplayInterval: 7000,\n pauseOnHover: true\n },\n\n connected: function() {\n this.autoplay && this.startAutoplay();\n },\n\n disconnected: function() {\n this.stopAutoplay();\n },\n\n update: function() {\n attr(this.slides, 'tabindex', '-1');\n },\n\n events: [\n\n {\n\n name: 'visibilitychange',\n\n el: document,\n\n filter: function() {\n return this.autoplay;\n },\n\n handler: function() {\n if (document.hidden) {\n this.stopAutoplay();\n } else {\n this.startAutoplay();\n }\n }\n\n }\n\n ],\n\n methods: {\n\n startAutoplay: function() {\n var this$1 = this;\n\n\n this.stopAutoplay();\n\n this.interval = setInterval(\n function () { return (!this$1.draggable || !$(':focus', this$1.$el))\n && (!this$1.pauseOnHover || !matches(this$1.$el, ':hover'))\n && !this$1.stack.length\n && this$1.show('next'); },\n this.autoplayInterval\n );\n\n },\n\n stopAutoplay: function() {\n this.interval && clearInterval(this.interval);\n }\n\n }\n\n };\n\n var SliderDrag = {\n\n props: {\n draggable: Boolean\n },\n\n data: {\n draggable: true,\n threshold: 10\n },\n\n created: function() {\n var this$1 = this;\n\n\n ['start', 'move', 'end'].forEach(function (key) {\n\n var fn = this$1[key];\n this$1[key] = function (e) {\n\n var pos = getEventPos(e).x * (isRtl ? -1 : 1);\n\n this$1.prevPos = pos !== this$1.pos ? this$1.pos : this$1.prevPos;\n this$1.pos = pos;\n\n fn(e);\n };\n\n });\n\n },\n\n events: [\n\n {\n\n name: pointerDown,\n\n delegate: function() {\n return this.selSlides;\n },\n\n handler: function(e) {\n\n if (!this.draggable\n || !isTouch(e) && hasTextNodesOnly(e.target)\n || e.button > 0\n || this.length < 2\n ) {\n return;\n }\n\n this.start(e);\n }\n\n },\n\n {\n\n // Workaround for iOS 11 bug: https://bugs.webkit.org/show_bug.cgi?id=184250\n\n name: 'touchmove',\n passive: false,\n handler: 'move',\n delegate: function() {\n return this.selSlides;\n }\n\n },\n\n {\n name: 'dragstart',\n\n handler: function(e) {\n e.preventDefault();\n }\n }\n\n ],\n\n methods: {\n\n start: function() {\n var this$1 = this;\n\n\n this.drag = this.pos;\n\n if (this._transitioner) {\n\n this.percent = this._transitioner.percent();\n this.drag += this._transitioner.getDistance() * this.percent * this.dir;\n\n this._transitioner.cancel();\n this._transitioner.translate(this.percent);\n\n this.dragging = true;\n\n this.stack = [];\n\n } else {\n this.prevIndex = this.index;\n }\n\n // See above workaround notice\n var off = pointerMove !== 'touchmove'\n ? on(document, pointerMove, this.move, {passive: false})\n : noop;\n this.unbindMove = function () {\n off();\n this$1.unbindMove = null;\n };\n on(window, 'scroll', this.unbindMove);\n on(document, pointerUp, this.end, true);\n\n css(this.list, 'userSelect', 'none');\n\n },\n\n move: function(e) {\n var this$1 = this;\n\n\n // See above workaround notice\n if (!this.unbindMove) {\n return;\n }\n\n var distance = this.pos - this.drag;\n\n if (distance === 0 || this.prevPos === this.pos || !this.dragging && Math.abs(distance) < this.threshold) {\n return;\n }\n\n css(this.list, 'pointerEvents', 'none');\n\n e.cancelable && e.preventDefault();\n\n this.dragging = true;\n this.dir = (distance < 0 ? 1 : -1);\n\n var ref = this;\n var slides = ref.slides;\n var ref$1 = this;\n var prevIndex = ref$1.prevIndex;\n var dis = Math.abs(distance);\n var nextIndex = this.getIndex(prevIndex + this.dir, prevIndex);\n var width = this._getDistance(prevIndex, nextIndex) || slides[prevIndex].offsetWidth;\n\n while (nextIndex !== prevIndex && dis > width) {\n\n this.drag -= width * this.dir;\n\n prevIndex = nextIndex;\n dis -= width;\n nextIndex = this.getIndex(prevIndex + this.dir, prevIndex);\n width = this._getDistance(prevIndex, nextIndex) || slides[prevIndex].offsetWidth;\n\n }\n\n this.percent = dis / width;\n\n var prev = slides[prevIndex];\n var next = slides[nextIndex];\n var changed = this.index !== nextIndex;\n var edge = prevIndex === nextIndex;\n\n var itemShown;\n\n [this.index, this.prevIndex].filter(function (i) { return !includes([nextIndex, prevIndex], i); }).forEach(function (i) {\n trigger(slides[i], 'itemhidden', [this$1]);\n\n if (edge) {\n itemShown = true;\n this$1.prevIndex = prevIndex;\n }\n\n });\n\n if (this.index === prevIndex && this.prevIndex !== prevIndex || itemShown) {\n trigger(slides[this.index], 'itemshown', [this]);\n }\n\n if (changed) {\n this.prevIndex = prevIndex;\n this.index = nextIndex;\n\n !edge && trigger(prev, 'beforeitemhide', [this]);\n trigger(next, 'beforeitemshow', [this]);\n }\n\n this._transitioner = this._translate(Math.abs(this.percent), prev, !edge && next);\n\n if (changed) {\n !edge && trigger(prev, 'itemhide', [this]);\n trigger(next, 'itemshow', [this]);\n }\n\n },\n\n end: function() {\n\n off(window, 'scroll', this.unbindMove);\n this.unbindMove && this.unbindMove();\n off(document, pointerUp, this.end, true);\n\n if (this.dragging) {\n\n this.dragging = null;\n\n if (this.index === this.prevIndex) {\n this.percent = 1 - this.percent;\n this.dir *= -1;\n this._show(false, this.index, true);\n this._transitioner = null;\n } else {\n\n var dirChange = (isRtl ? this.dir * (isRtl ? 1 : -1) : this.dir) < 0 === this.prevPos > this.pos;\n this.index = dirChange ? this.index : this.prevIndex;\n\n if (dirChange) {\n this.percent = 1 - this.percent;\n }\n\n this.show(this.dir > 0 && !dirChange || this.dir < 0 && dirChange ? 'next' : 'previous', true);\n }\n\n }\n\n css(this.list, {userSelect: '', pointerEvents: ''});\n\n this.drag\n = this.percent\n = null;\n\n }\n\n }\n\n };\n\n function hasTextNodesOnly(el) {\n return !el.children.length && el.childNodes.length;\n }\n\n var SliderNav = {\n\n data: {\n selNav: false\n },\n\n computed: {\n\n nav: function(ref, $el) {\n var selNav = ref.selNav;\n\n return $(selNav, $el);\n },\n\n selNavItem: function(ref) {\n var attrItem = ref.attrItem;\n\n return (\"[\" + attrItem + \"],[data-\" + attrItem + \"]\");\n },\n\n navItems: function(_, $el) {\n return $$(this.selNavItem, $el);\n }\n\n },\n\n update: {\n\n write: function() {\n var this$1 = this;\n\n\n if (this.nav && this.length !== this.nav.children.length) {\n html(this.nav, this.slides.map(function (_, i) { return (\"<li \" + (this$1.attrItem) + \"=\\\"\" + i + \"\\\"><a href=\\\"#\\\"></a></li>\"); }).join(''));\n }\n\n toggleClass($$(this.selNavItem, this.$el).concat(this.nav), 'uk-hidden', !this.maxIndex);\n\n this.updateNav();\n\n },\n\n events: ['resize']\n\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return this.selNavItem;\n },\n\n handler: function(e) {\n e.preventDefault();\n this.show(data(e.current, this.attrItem));\n }\n\n },\n\n {\n\n name: 'itemshow',\n handler: 'updateNav'\n\n }\n\n ],\n\n methods: {\n\n updateNav: function() {\n var this$1 = this;\n\n\n var i = this.getValidIndex();\n this.navItems.forEach(function (el) {\n\n var cmd = data(el, this$1.attrItem);\n\n toggleClass(el, this$1.clsActive, toNumber(cmd) === i);\n toggleClass(el, 'uk-invisible', this$1.finite && (cmd === 'previous' && i === 0 || cmd === 'next' && i >= this$1.maxIndex));\n });\n\n }\n\n }\n\n };\n\n var Slider = {\n\n mixins: [SliderAutoplay, SliderDrag, SliderNav],\n\n props: {\n clsActivated: Boolean,\n easing: String,\n index: Number,\n finite: Boolean,\n velocity: Number\n },\n\n data: function () { return ({\n easing: 'ease',\n finite: false,\n velocity: 1,\n index: 0,\n prevIndex: -1,\n stack: [],\n percent: 0,\n clsActive: 'uk-active',\n clsActivated: false,\n Transitioner: false,\n transitionOptions: {}\n }); },\n\n connected: function() {\n this.prevIndex = -1;\n this.index = this.getValidIndex(this.index);\n this.stack = [];\n },\n\n disconnected: function() {\n removeClass(this.slides, this.clsActive);\n },\n\n computed: {\n\n duration: function(ref, $el) {\n var velocity = ref.velocity;\n\n return speedUp($el.offsetWidth / velocity);\n },\n\n list: function(ref, $el) {\n var selList = ref.selList;\n\n return $(selList, $el);\n },\n\n maxIndex: function() {\n return this.length - 1;\n },\n\n selSlides: function(ref) {\n var selList = ref.selList;\n\n return (selList + \" > *\");\n },\n\n slides: {\n\n get: function() {\n return toNodes(this.list.children);\n },\n\n watch: function() {\n this.$reset();\n }\n\n },\n\n length: function() {\n return this.slides.length;\n }\n\n },\n\n events: {\n\n itemshown: function() {\n this.$update(this.list);\n }\n\n },\n\n methods: {\n\n show: function(index, force) {\n var this$1 = this;\n if ( force === void 0 ) force = false;\n\n\n if (this.dragging || !this.length) {\n return;\n }\n\n var ref = this;\n var stack = ref.stack;\n var queueIndex = force ? 0 : stack.length;\n var reset = function () {\n stack.splice(queueIndex, 1);\n\n if (stack.length) {\n this$1.show(stack.shift(), true);\n }\n };\n\n stack[force ? 'unshift' : 'push'](index);\n\n if (!force && stack.length > 1) {\n\n if (stack.length === 2) {\n this._transitioner.forward(Math.min(this.duration, 200));\n }\n\n return;\n }\n\n var prevIndex = this.index;\n var prev = hasClass(this.slides, this.clsActive) && this.slides[prevIndex];\n var nextIndex = this.getIndex(index, this.index);\n var next = this.slides[nextIndex];\n\n if (prev === next) {\n reset();\n return;\n }\n\n this.dir = getDirection(index, prevIndex);\n this.prevIndex = prevIndex;\n this.index = nextIndex;\n\n prev && trigger(prev, 'beforeitemhide', [this]);\n if (!trigger(next, 'beforeitemshow', [this, prev])) {\n this.index = this.prevIndex;\n reset();\n return;\n }\n\n var promise = this._show(prev, next, force).then(function () {\n\n prev && trigger(prev, 'itemhidden', [this$1]);\n trigger(next, 'itemshown', [this$1]);\n\n return new Promise(function (resolve) {\n fastdom.write(function () {\n stack.shift();\n if (stack.length) {\n this$1.show(stack.shift(), true);\n } else {\n this$1._transitioner = null;\n }\n resolve();\n });\n });\n\n });\n\n prev && trigger(prev, 'itemhide', [this]);\n trigger(next, 'itemshow', [this]);\n\n return promise;\n\n },\n\n getIndex: function(index, prev) {\n if ( index === void 0 ) index = this.index;\n if ( prev === void 0 ) prev = this.index;\n\n return clamp(getIndex(index, this.slides, prev, this.finite), 0, this.maxIndex);\n },\n\n getValidIndex: function(index, prevIndex) {\n if ( index === void 0 ) index = this.index;\n if ( prevIndex === void 0 ) prevIndex = this.prevIndex;\n\n return this.getIndex(index, prevIndex);\n },\n\n _show: function(prev, next, force) {\n\n this._transitioner = this._getTransitioner(\n prev,\n next,\n this.dir,\n assign({\n easing: force\n ? next.offsetWidth < 600\n ? 'cubic-bezier(0.25, 0.46, 0.45, 0.94)' /* easeOutQuad */\n : 'cubic-bezier(0.165, 0.84, 0.44, 1)' /* easeOutQuart */\n : this.easing\n }, this.transitionOptions)\n );\n\n if (!force && !prev) {\n this._transitioner.translate(1);\n return Promise.resolve();\n }\n\n var ref = this.stack;\n var length = ref.length;\n return this._transitioner[length > 1 ? 'forward' : 'show'](length > 1 ? Math.min(this.duration, 75 + 75 / (length - 1)) : this.duration, this.percent);\n\n },\n\n _getDistance: function(prev, next) {\n return this._getTransitioner(prev, prev !== next && next).getDistance();\n },\n\n _translate: function(percent, prev, next) {\n if ( prev === void 0 ) prev = this.prevIndex;\n if ( next === void 0 ) next = this.index;\n\n var transitioner = this._getTransitioner(prev !== next ? prev : false, next);\n transitioner.translate(percent);\n return transitioner;\n },\n\n _getTransitioner: function(prev, next, dir, options) {\n if ( prev === void 0 ) prev = this.prevIndex;\n if ( next === void 0 ) next = this.index;\n if ( dir === void 0 ) dir = this.dir || 1;\n if ( options === void 0 ) options = this.transitionOptions;\n\n return new this.Transitioner(\n isNumber(prev) ? this.slides[prev] : prev,\n isNumber(next) ? this.slides[next] : next,\n dir * (isRtl ? -1 : 1),\n options\n );\n }\n\n }\n\n };\n\n function getDirection(index, prevIndex) {\n return index === 'next'\n ? 1\n : index === 'previous'\n ? -1\n : index < prevIndex\n ? -1\n : 1;\n }\n\n function speedUp(x) {\n return .5 * x + 300; // parabola through (400,500; 600,600; 1800,1200)\n }\n\n var Slideshow = {\n\n mixins: [Slider],\n\n props: {\n animation: String\n },\n\n data: {\n animation: 'slide',\n clsActivated: 'uk-transition-active',\n Animations: Animations,\n Transitioner: Transitioner\n },\n\n computed: {\n\n animation: function(ref) {\n var animation = ref.animation;\n var Animations = ref.Animations;\n\n return assign(animation in Animations ? Animations[animation] : Animations.slide, {name: animation});\n },\n\n transitionOptions: function() {\n return {animation: this.animation};\n }\n\n },\n\n events: {\n\n 'itemshow itemhide itemshown itemhidden': function(ref) {\n var target = ref.target;\n\n this.$update(target);\n },\n\n beforeitemshow: function(ref) {\n var target = ref.target;\n\n addClass(target, this.clsActive);\n },\n\n itemshown: function(ref) {\n var target = ref.target;\n\n addClass(target, this.clsActivated);\n },\n\n itemhidden: function(ref) {\n var target = ref.target;\n\n removeClass(target, this.clsActive, this.clsActivated);\n }\n\n }\n\n };\n\n var lightboxPanel = {\n\n mixins: [Container, Modal, Togglable, Slideshow],\n\n functional: true,\n\n props: {\n delayControls: Number,\n preload: Number,\n videoAutoplay: Boolean,\n template: String\n },\n\n data: function () { return ({\n preload: 1,\n videoAutoplay: false,\n delayControls: 3000,\n items: [],\n cls: 'uk-open',\n clsPage: 'uk-lightbox-page',\n selList: '.uk-lightbox-items',\n attrItem: 'uk-lightbox-item',\n selClose: '.uk-close-large',\n selCaption: '.uk-lightbox-caption',\n pauseOnHover: false,\n velocity: 2,\n Animations: Animations$1,\n template: \"<div class=\\\"uk-lightbox uk-overflow-hidden\\\"> <ul class=\\\"uk-lightbox-items\\\"></ul> <div class=\\\"uk-lightbox-toolbar uk-position-top uk-text-right uk-transition-slide-top uk-transition-opaque\\\"> <button class=\\\"uk-lightbox-toolbar-icon uk-close-large\\\" type=\\\"button\\\" uk-close></button> </div> <a class=\\\"uk-lightbox-button uk-position-center-left uk-position-medium uk-transition-fade\\\" href=\\\"#\\\" uk-slidenav-previous uk-lightbox-item=\\\"previous\\\"></a> <a class=\\\"uk-lightbox-button uk-position-center-right uk-position-medium uk-transition-fade\\\" href=\\\"#\\\" uk-slidenav-next uk-lightbox-item=\\\"next\\\"></a> <div class=\\\"uk-lightbox-toolbar uk-lightbox-caption uk-position-bottom uk-text-center uk-transition-slide-bottom uk-transition-opaque\\\"></div> </div>\"\n }); },\n\n created: function() {\n\n var $el = $(this.template);\n var list = $(this.selList, $el);\n this.items.forEach(function () { return append(list, '<li></li>'); });\n\n this.$mount(append(this.container, $el));\n\n },\n\n computed: {\n\n caption: function(ref, $el) {\n var selCaption = ref.selCaption;\n\n return $('.uk-lightbox-caption', $el);\n }\n\n },\n\n events: [\n\n {\n\n name: (pointerMove + \" \" + pointerDown + \" keydown\"),\n\n handler: 'showControls'\n\n },\n\n {\n\n name: 'click',\n\n self: true,\n\n delegate: function() {\n return this.selSlides;\n },\n\n handler: function(e) {\n\n if (e.defaultPrevented) {\n return;\n }\n\n this.hide();\n }\n\n },\n\n {\n\n name: 'shown',\n\n self: true,\n\n handler: function() {\n this.showControls();\n }\n\n },\n\n {\n\n name: 'hide',\n\n self: true,\n\n handler: function() {\n\n this.hideControls();\n\n removeClass(this.slides, this.clsActive);\n Transition.stop(this.slides);\n\n }\n },\n\n {\n\n name: 'hidden',\n\n self: true,\n\n handler: function() {\n this.$destroy(true);\n }\n\n },\n\n {\n\n name: 'keyup',\n\n el: document,\n\n handler: function(e) {\n\n if (!this.isToggled(this.$el)) {\n return;\n }\n\n switch (e.keyCode) {\n case 37:\n this.show('previous');\n break;\n case 39:\n this.show('next');\n break;\n }\n }\n },\n\n {\n\n name: 'beforeitemshow',\n\n handler: function(e) {\n\n if (this.isToggled()) {\n return;\n }\n\n this.draggable = false;\n\n e.preventDefault();\n\n this.toggleNow(this.$el, true);\n\n this.animation = Animations$1['scale'];\n removeClass(e.target, this.clsActive);\n this.stack.splice(1, 0, this.index);\n\n }\n\n },\n\n {\n\n name: 'itemshow',\n\n handler: function(ref) {\n var target = ref.target;\n\n\n var i = index(target);\n var ref$1 = this.getItem(i);\n var caption = ref$1.caption;\n\n css(this.caption, 'display', caption ? '' : 'none');\n html(this.caption, caption);\n\n for (var j = 0; j <= this.preload; j++) {\n this.loadItem(this.getIndex(i + j));\n this.loadItem(this.getIndex(i - j));\n }\n\n }\n\n },\n\n {\n\n name: 'itemshown',\n\n handler: function() {\n this.draggable = this.$props.draggable;\n }\n\n },\n\n {\n\n name: 'itemload',\n\n handler: function(_, item) {\n var this$1 = this;\n\n\n var source = item.source;\n var type = item.type;\n var alt = item.alt;\n\n this.setItem(item, '<span uk-spinner></span>');\n\n if (!source) {\n return;\n }\n\n var matches;\n\n // Image\n if (type === 'image' || source.match(/\\.(jp(e)?g|png|gif|svg|webp)($|\\?)/i)) {\n\n getImage(source).then(\n function (img) { return this$1.setItem(item, (\"<img width=\\\"\" + (img.width) + \"\\\" height=\\\"\" + (img.height) + \"\\\" src=\\\"\" + source + \"\\\" alt=\\\"\" + (alt ? alt : '') + \"\\\">\")); },\n function () { return this$1.setError(item); }\n );\n\n // Video\n } else if (type === 'video' || source.match(/\\.(mp4|webm|ogv)($|\\?)/i)) {\n\n var video = $((\"<video controls playsinline\" + (item.poster ? (\" poster=\\\"\" + (item.poster) + \"\\\"\") : '') + \" uk-video=\\\"\" + (this.videoAutoplay) + \"\\\"></video>\"));\n attr(video, 'src', source);\n\n once(video, 'error loadedmetadata', function (type) {\n if (type === 'error') {\n this$1.setError(item);\n } else {\n attr(video, {width: video.videoWidth, height: video.videoHeight});\n this$1.setItem(item, video);\n }\n });\n\n // Iframe\n } else if (type === 'iframe' || source.match(/\\.(html|php)($|\\?)/i)) {\n\n this.setItem(item, (\"<iframe class=\\\"uk-lightbox-iframe\\\" src=\\\"\" + source + \"\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\"));\n\n // YouTube\n } else if ((matches = source.match(/\\/\\/.*?youtube(-nocookie)?\\.[a-z]+\\/watch\\?v=([^&\\s]+)/) || source.match(/()youtu\\.be\\/(.*)/))) {\n\n var id = matches[2];\n var setIframe = function (width, height) {\n if ( width === void 0 ) width = 640;\n if ( height === void 0 ) height = 450;\n\n return this$1.setItem(item, getIframe((\"https://www.youtube\" + (matches[1] || '') + \".com/embed/\" + id), width, height, this$1.videoAutoplay));\n };\n\n getImage((\"https://img.youtube.com/vi/\" + id + \"/maxresdefault.jpg\")).then(\n function (ref) {\n var width = ref.width;\n var height = ref.height;\n\n // YouTube default 404 thumb, fall back to low resolution\n if (width === 120 && height === 90) {\n getImage((\"https://img.youtube.com/vi/\" + id + \"/0.jpg\")).then(\n function (ref) {\n var width = ref.width;\n var height = ref.height;\n\n return setIframe(width, height);\n },\n setIframe\n );\n } else {\n setIframe(width, height);\n }\n },\n setIframe\n );\n\n // Vimeo\n } else if ((matches = source.match(/(\\/\\/.*?)vimeo\\.[a-z]+\\/([0-9]+).*?/))) {\n\n ajax((\"https://vimeo.com/api/oembed.json?maxwidth=1920&url=\" + (encodeURI(source))), {responseType: 'json', withCredentials: false})\n .then(\n function (ref) {\n var ref_response = ref.response;\n var height = ref_response.height;\n var width = ref_response.width;\n\n return this$1.setItem(item, getIframe((\"https://player.vimeo.com/video/\" + (matches[2])), width, height, this$1.videoAutoplay));\n },\n function () { return this$1.setError(item); }\n );\n\n }\n\n }\n\n }\n\n ],\n\n methods: {\n\n loadItem: function(index) {\n if ( index === void 0 ) index = this.index;\n\n\n var item = this.getItem(index);\n\n if (item.content) {\n return;\n }\n\n trigger(this.$el, 'itemload', [item]);\n },\n\n getItem: function(index) {\n if ( index === void 0 ) index = this.index;\n\n return this.items[index] || {};\n },\n\n setItem: function(item, content) {\n assign(item, {content: content});\n var el = html(this.slides[this.items.indexOf(item)], content);\n trigger(this.$el, 'itemloaded', [this, el]);\n this.$update(el);\n },\n\n setError: function(item) {\n this.setItem(item, '<span uk-icon=\"icon: bolt; ratio: 2\"></span>');\n },\n\n showControls: function() {\n\n clearTimeout(this.controlsTimer);\n this.controlsTimer = setTimeout(this.hideControls, this.delayControls);\n\n addClass(this.$el, 'uk-active', 'uk-transition-active');\n\n },\n\n hideControls: function() {\n removeClass(this.$el, 'uk-active', 'uk-transition-active');\n }\n\n }\n\n };\n\n function getIframe(src, width, height, autoplay) {\n return (\"<iframe src=\\\"\" + src + \"\\\" width=\\\"\" + width + \"\\\" height=\\\"\" + height + \"\\\" style=\\\"max-width: 100%; box-sizing: border-box;\\\" frameborder=\\\"0\\\" allowfullscreen uk-video=\\\"autoplay: \" + autoplay + \"\\\" uk-responsive></iframe>\");\n }\n\n var Lightbox = {\n\n install: install$2,\n\n props: {toggle: String},\n\n data: {toggle: 'a'},\n\n computed: {\n\n toggles: {\n\n get: function(ref, $el) {\n var toggle = ref.toggle;\n\n return $$(toggle, $el);\n },\n\n watch: function() {\n this.hide();\n }\n\n },\n\n items: function() {\n return uniqueBy(this.toggles.map(toItem), 'source');\n }\n\n },\n\n disconnected: function() {\n this.hide();\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return ((this.toggle) + \":not(.uk-disabled)\");\n },\n\n handler: function(e) {\n e.preventDefault();\n var src = data(e.current, 'href');\n this.show(findIndex(this.items, function (ref) {\n var source = ref.source;\n\n return source === src;\n }));\n }\n\n }\n\n ],\n\n methods: {\n\n show: function(index) {\n var this$1 = this;\n\n\n this.panel = this.panel || this.$create('lightboxPanel', assign({}, this.$props, {items: this.items}));\n\n on(this.panel.$el, 'hidden', function () { return this$1.panel = false; });\n\n return this.panel.show(index);\n\n },\n\n hide: function() {\n\n return this.panel && this.panel.hide();\n\n }\n\n }\n\n };\n\n function install$2(UIkit, Lightbox) {\n\n if (!UIkit.lightboxPanel) {\n UIkit.component('lightboxPanel', lightboxPanel);\n }\n\n assign(\n Lightbox.props,\n UIkit.component('lightboxPanel').options.props\n );\n\n }\n\n function toItem(el) {\n return ['href', 'caption', 'type', 'poster', 'alt'].reduce(function (obj, attr) {\n obj[attr === 'href' ? 'source' : attr] = data(el, attr);\n return obj;\n }, {});\n }\n\n var obj;\n\n var containers = {};\n\n var Notification = {\n\n functional: true,\n\n args: ['message', 'status'],\n\n data: {\n message: '',\n status: '',\n timeout: 5000,\n group: null,\n pos: 'top-center',\n clsClose: 'uk-notification-close',\n clsMsg: 'uk-notification-message'\n },\n\n install: install$3,\n\n computed: {\n\n marginProp: function(ref) {\n var pos = ref.pos;\n\n return (\"margin\" + (startsWith(pos, 'top') ? 'Top' : 'Bottom'));\n },\n\n startProps: function() {\n var obj;\n\n return ( obj = {opacity: 0}, obj[this.marginProp] = -this.$el.offsetHeight, obj );\n }\n\n },\n\n created: function() {\n\n if (!containers[this.pos]) {\n containers[this.pos] = append(this.$container, (\"<div class=\\\"uk-notification uk-notification-\" + (this.pos) + \"\\\"></div>\"));\n }\n\n var container = css(containers[this.pos], 'display', 'block');\n\n this.$mount(append(container,\n (\"<div class=\\\"\" + (this.clsMsg) + (this.status ? (\" \" + (this.clsMsg) + \"-\" + (this.status)) : '') + \"\\\"> <a href=\\\"#\\\" class=\\\"\" + (this.clsClose) + \"\\\" data-uk-close></a> <div>\" + (this.message) + \"</div> </div>\")\n ));\n\n },\n\n connected: function() {\n var this$1 = this;\n var obj;\n\n\n var margin = toFloat(css(this.$el, this.marginProp));\n Transition.start(\n css(this.$el, this.startProps),\n ( obj = {opacity: 1}, obj[this.marginProp] = margin, obj )\n ).then(function () {\n if (this$1.timeout) {\n this$1.timer = setTimeout(this$1.close, this$1.timeout);\n }\n });\n\n },\n\n events: ( obj = {\n\n click: function(e) {\n if (closest(e.target, 'a[href=\"#\"],a[href=\"\"]')) {\n e.preventDefault();\n }\n this.close();\n }\n\n }, obj[pointerEnter] = function () {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n }, obj[pointerLeave] = function () {\n if (this.timeout) {\n this.timer = setTimeout(this.close, this.timeout);\n }\n }, obj ),\n\n methods: {\n\n close: function(immediate) {\n var this$1 = this;\n\n\n var removeFn = function () {\n\n trigger(this$1.$el, 'close', [this$1]);\n remove(this$1.$el);\n\n if (!containers[this$1.pos].children.length) {\n css(containers[this$1.pos], 'display', 'none');\n }\n\n };\n\n if (this.timer) {\n clearTimeout(this.timer);\n }\n\n if (immediate) {\n removeFn();\n } else {\n Transition.start(this.$el, this.startProps).then(removeFn);\n }\n }\n\n }\n\n };\n\n function install$3(UIkit) {\n UIkit.notification.closeAll = function (group, immediate) {\n apply(document.body, function (el) {\n var notification = UIkit.getComponent(el, 'notification');\n if (notification && (!group || group === notification.group)) {\n notification.close(immediate);\n }\n });\n };\n }\n\n var props = ['x', 'y', 'bgx', 'bgy', 'rotate', 'scale', 'color', 'backgroundColor', 'borderColor', 'opacity', 'blur', 'hue', 'grayscale', 'invert', 'saturate', 'sepia', 'fopacity', 'stroke'];\n\n var Parallax = {\n\n mixins: [Media],\n\n props: props.reduce(function (props, prop) {\n props[prop] = 'list';\n return props;\n }, {}),\n\n data: props.reduce(function (data, prop) {\n data[prop] = undefined;\n return data;\n }, {}),\n\n computed: {\n\n props: function(properties, $el) {\n var this$1 = this;\n\n\n return props.reduce(function (props, prop) {\n\n if (isUndefined(properties[prop])) {\n return props;\n }\n\n var isColor = prop.match(/color/i);\n var isCssProp = isColor || prop === 'opacity';\n\n var pos, bgPos, diff;\n var steps = properties[prop].slice(0);\n\n if (isCssProp) {\n css($el, prop, '');\n }\n\n if (steps.length < 2) {\n steps.unshift((prop === 'scale'\n ? 1\n : isCssProp\n ? css($el, prop)\n : 0) || 0);\n }\n\n var unit = getUnit(steps);\n\n if (isColor) {\n\n var ref = $el.style;\n var color = ref.color;\n steps = steps.map(function (step) { return parseColor($el, step); });\n $el.style.color = color;\n\n } else if (startsWith(prop, 'bg')) {\n\n var attr = prop === 'bgy' ? 'height' : 'width';\n steps = steps.map(function (step) { return toPx(step, attr, this$1.$el); });\n\n css($el, (\"background-position-\" + (prop[2])), '');\n bgPos = css($el, 'backgroundPosition').split(' ')[prop[2] === 'x' ? 0 : 1]; // IE 11 can't read background-position-[x|y]\n\n if (this$1.covers) {\n\n var min = Math.min.apply(Math, steps);\n var max = Math.max.apply(Math, steps);\n var down = steps.indexOf(min) < steps.indexOf(max);\n\n diff = max - min;\n\n steps = steps.map(function (step) { return step - (down ? min : max); });\n pos = (down ? -diff : 0) + \"px\";\n\n } else {\n\n pos = bgPos;\n\n }\n\n } else {\n\n steps = steps.map(toFloat);\n\n }\n\n if (prop === 'stroke') {\n\n if (!steps.some(function (step) { return step; })) {\n return props;\n }\n\n var length = getMaxPathLength(this$1.$el);\n css($el, 'strokeDasharray', length);\n\n if (unit === '%') {\n steps = steps.map(function (step) { return step * length / 100; });\n }\n\n steps = steps.reverse();\n\n prop = 'strokeDashoffset';\n }\n\n props[prop] = {steps: steps, unit: unit, pos: pos, bgPos: bgPos, diff: diff};\n\n return props;\n\n }, {});\n\n },\n\n bgProps: function() {\n var this$1 = this;\n\n return ['bgx', 'bgy'].filter(function (bg) { return bg in this$1.props; });\n },\n\n covers: function(_, $el) {\n return covers($el);\n }\n\n },\n\n disconnected: function() {\n delete this._image;\n },\n\n update: {\n\n read: function(data) {\n var this$1 = this;\n\n\n data.active = this.matchMedia;\n\n if (!data.active) {\n return;\n }\n\n if (!data.image && this.covers && this.bgProps.length) {\n var src = css(this.$el, 'backgroundImage').replace(/^none|url\\([\"']?(.+?)[\"']?\\)$/, '$1');\n\n if (src) {\n var img = new Image();\n img.src = src;\n data.image = img;\n\n if (!img.naturalWidth) {\n img.onload = function () { return this$1.$emit(); };\n }\n }\n\n }\n\n var image = data.image;\n\n if (!image || !image.naturalWidth) {\n return;\n }\n\n var dimEl = {\n width: this.$el.offsetWidth,\n height: this.$el.offsetHeight\n };\n var dimImage = {\n width: image.naturalWidth,\n height: image.naturalHeight\n };\n\n var dim = Dimensions.cover(dimImage, dimEl);\n\n this.bgProps.forEach(function (prop) {\n\n var ref = this$1.props[prop];\n var diff = ref.diff;\n var bgPos = ref.bgPos;\n var steps = ref.steps;\n var attr = prop === 'bgy' ? 'height' : 'width';\n var span = dim[attr] - dimEl[attr];\n\n if (span < diff) {\n dimEl[attr] = dim[attr] + diff - span;\n } else if (span > diff) {\n\n var posPercentage = dimEl[attr] / toPx(bgPos, attr, this$1.$el);\n\n if (posPercentage) {\n this$1.props[prop].steps = steps.map(function (step) { return step - (span - diff) / posPercentage; });\n }\n }\n\n dim = Dimensions.cover(dimImage, dimEl);\n });\n\n data.dim = dim;\n },\n\n write: function(ref) {\n var dim = ref.dim;\n var active = ref.active;\n\n\n if (!active) {\n css(this.$el, {backgroundSize: '', backgroundRepeat: ''});\n return;\n }\n\n dim && css(this.$el, {\n backgroundSize: ((dim.width) + \"px \" + (dim.height) + \"px\"),\n backgroundRepeat: 'no-repeat'\n });\n\n },\n\n events: ['resize']\n\n },\n\n methods: {\n\n reset: function() {\n var this$1 = this;\n\n each(this.getCss(0), function (_, prop) { return css(this$1.$el, prop, ''); });\n },\n\n getCss: function(percent) {\n\n var ref = this;\n var props = ref.props;\n return Object.keys(props).reduce(function (css, prop) {\n\n var ref = props[prop];\n var steps = ref.steps;\n var unit = ref.unit;\n var pos = ref.pos;\n var value = getValue(steps, percent);\n\n switch (prop) {\n\n // transforms\n case 'x':\n case 'y': {\n unit = unit || 'px';\n css.transform += \" translate\" + (ucfirst(prop)) + \"(\" + (toFloat(value).toFixed(unit === 'px' ? 0 : 2)) + unit + \")\";\n break;\n }\n case 'rotate':\n unit = unit || 'deg';\n css.transform += \" rotate(\" + (value + unit) + \")\";\n break;\n case 'scale':\n css.transform += \" scale(\" + value + \")\";\n break;\n\n // bg image\n case 'bgy':\n case 'bgx':\n css[(\"background-position-\" + (prop[2]))] = \"calc(\" + pos + \" + \" + value + \"px)\";\n break;\n\n // color\n case 'color':\n case 'backgroundColor':\n case 'borderColor': {\n\n var ref$1 = getStep(steps, percent);\n var start = ref$1[0];\n var end = ref$1[1];\n var p = ref$1[2];\n\n css[prop] = \"rgba(\" + (start.map(function (value, i) {\n value = value + p * (end[i] - value);\n return i === 3 ? toFloat(value) : parseInt(value, 10);\n }).join(',')) + \")\";\n break;\n }\n // CSS Filter\n case 'blur':\n unit = unit || 'px';\n css.filter += \" blur(\" + (value + unit) + \")\";\n break;\n case 'hue':\n unit = unit || 'deg';\n css.filter += \" hue-rotate(\" + (value + unit) + \")\";\n break;\n case 'fopacity':\n unit = unit || '%';\n css.filter += \" opacity(\" + (value + unit) + \")\";\n break;\n case 'grayscale':\n case 'invert':\n case 'saturate':\n case 'sepia':\n unit = unit || '%';\n css.filter += \" \" + prop + \"(\" + (value + unit) + \")\";\n break;\n default:\n css[prop] = value;\n }\n\n return css;\n\n }, {transform: '', filter: ''});\n\n }\n\n }\n\n };\n\n function parseColor(el, color) {\n return css(css(el, 'color', color), 'color')\n .split(/[(),]/g)\n .slice(1, -1)\n .concat(1)\n .slice(0, 4)\n .map(toFloat);\n }\n\n function getStep(steps, percent) {\n var count = steps.length - 1;\n var index = Math.min(Math.floor(count * percent), count - 1);\n var step = steps.slice(index, index + 2);\n\n step.push(percent === 1 ? 1 : percent % (1 / count) * count);\n\n return step;\n }\n\n function getValue(steps, percent, digits) {\n if ( digits === void 0 ) digits = 2;\n\n var ref = getStep(steps, percent);\n var start = ref[0];\n var end = ref[1];\n var p = ref[2];\n return (isNumber(start)\n ? start + Math.abs(start - end) * p * (start < end ? 1 : -1)\n : +end\n ).toFixed(digits);\n }\n\n function getUnit(steps) {\n return steps.reduce(function (unit, step) { return isString(step) && step.replace(/-|\\d/g, '').trim() || unit; }, '');\n }\n\n function covers(el) {\n var ref = el.style;\n var backgroundSize = ref.backgroundSize;\n var covers = css(css(el, 'backgroundSize', ''), 'backgroundSize') === 'cover';\n el.style.backgroundSize = backgroundSize;\n return covers;\n }\n\n var Parallax$1 = {\n\n mixins: [Parallax],\n\n props: {\n target: String,\n viewport: Number,\n easing: Number\n },\n\n data: {\n target: false,\n viewport: 1,\n easing: 1\n },\n\n computed: {\n\n target: function(ref, $el) {\n var target = ref.target;\n\n return getOffsetElement(target && query(target, $el) || $el);\n }\n\n },\n\n update: {\n\n read: function(ref, type) {\n var percent = ref.percent;\n var active = ref.active;\n\n\n if (type !== 'scroll') {\n percent = false;\n }\n\n if (!active) {\n return;\n }\n\n var prev = percent;\n percent = ease$1(scrolledOver(this.target) / (this.viewport || 1), this.easing);\n\n return {\n percent: percent,\n style: prev !== percent ? this.getCss(percent) : false\n };\n },\n\n write: function(ref) {\n var style = ref.style;\n var active = ref.active;\n\n\n if (!active) {\n this.reset();\n return;\n }\n\n style && css(this.$el, style);\n\n },\n\n events: ['scroll', 'resize']\n }\n\n };\n\n function ease$1(percent, easing) {\n return clamp(percent * (1 - (easing - easing * percent)));\n }\n\n // SVG elements do not inherit from HTMLElement\n function getOffsetElement(el) {\n return el\n ? 'offsetTop' in el\n ? el\n : getOffsetElement(el.parentNode)\n : document.body;\n }\n\n var SliderReactive = {\n\n update: {\n\n write: function() {\n\n if (this.stack.length || this.dragging) {\n return;\n }\n\n var index = this.getValidIndex(this.index);\n\n if (!~this.prevIndex || this.index !== index) {\n this.show(index);\n }\n\n },\n\n events: ['resize']\n\n }\n\n };\n\n function Transitioner$1 (prev, next, dir, ref) {\n var center = ref.center;\n var easing = ref.easing;\n var list = ref.list;\n\n\n var deferred = new Deferred();\n\n var from = prev\n ? getLeft(prev, list, center)\n : getLeft(next, list, center) + bounds(next).width * dir;\n var to = next\n ? getLeft(next, list, center)\n : from + bounds(prev).width * dir * (isRtl ? -1 : 1);\n\n return {\n\n dir: dir,\n\n show: function(duration, percent, linear) {\n if ( percent === void 0 ) percent = 0;\n\n\n var timing = linear ? 'linear' : easing;\n duration -= Math.round(duration * clamp(percent, -1, 1));\n\n this.translate(percent);\n\n prev && this.updateTranslates();\n percent = prev ? percent : clamp(percent, 0, 1);\n triggerUpdate$1(this.getItemIn(), 'itemin', {percent: percent, duration: duration, timing: timing, dir: dir});\n prev && triggerUpdate$1(this.getItemIn(true), 'itemout', {percent: 1 - percent, duration: duration, timing: timing, dir: dir});\n\n Transition\n .start(list, {transform: translate(-to * (isRtl ? -1 : 1), 'px')}, duration, timing)\n .then(deferred.resolve, noop);\n\n return deferred.promise;\n\n },\n\n stop: function() {\n return Transition.stop(list);\n },\n\n cancel: function() {\n Transition.cancel(list);\n },\n\n reset: function() {\n css(list, 'transform', '');\n },\n\n forward: function(duration, percent) {\n if ( percent === void 0 ) percent = this.percent();\n\n Transition.cancel(list);\n return this.show(duration, percent, true);\n },\n\n translate: function(percent) {\n\n var distance = this.getDistance() * dir * (isRtl ? -1 : 1);\n\n css(list, 'transform', translate(clamp(\n -to + (distance - distance * percent),\n -getWidth(list),\n bounds(list).width\n ) * (isRtl ? -1 : 1), 'px'));\n\n this.updateTranslates();\n\n if (prev) {\n percent = clamp(percent, -1, 1);\n triggerUpdate$1(this.getItemIn(), 'itemtranslatein', {percent: percent, dir: dir});\n triggerUpdate$1(this.getItemIn(true), 'itemtranslateout', {percent: 1 - percent, dir: dir});\n }\n\n },\n\n percent: function() {\n return Math.abs((css(list, 'transform').split(',')[4] * (isRtl ? -1 : 1) + from) / (to - from));\n },\n\n getDistance: function() {\n return Math.abs(to - from);\n },\n\n getItemIn: function(out) {\n if ( out === void 0 ) out = false;\n\n\n var actives = this.getActives();\n var all = sortBy(slides(list), 'offsetLeft');\n var i = index(all, actives[dir * (out ? -1 : 1) > 0 ? actives.length - 1 : 0]);\n\n return ~i && all[i + (prev && !out ? dir : 0)];\n\n },\n\n getActives: function() {\n\n var left = getLeft(prev || next, list, center);\n\n return sortBy(slides(list).filter(function (slide) {\n var slideLeft = getElLeft(slide, list);\n return slideLeft >= left && slideLeft + bounds(slide).width <= bounds(list).width + left;\n }), 'offsetLeft');\n\n },\n\n updateTranslates: function() {\n\n var actives = this.getActives();\n\n slides(list).forEach(function (slide) {\n var isActive = includes(actives, slide);\n\n triggerUpdate$1(slide, (\"itemtranslate\" + (isActive ? 'in' : 'out')), {\n percent: isActive ? 1 : 0,\n dir: slide.offsetLeft <= next.offsetLeft ? 1 : -1\n });\n });\n }\n\n };\n\n }\n\n function getLeft(el, list, center) {\n\n var left = getElLeft(el, list);\n\n return center\n ? left - centerEl(el, list)\n : Math.min(left, getMax(list));\n\n }\n\n function getMax(list) {\n return Math.max(0, getWidth(list) - bounds(list).width);\n }\n\n function getWidth(list) {\n return slides(list).reduce(function (right, el) { return bounds(el).width + right; }, 0);\n }\n\n function getMaxWidth(list) {\n return slides(list).reduce(function (right, el) { return Math.max(right, bounds(el).width); }, 0);\n }\n\n function centerEl(el, list) {\n return bounds(list).width / 2 - bounds(el).width / 2;\n }\n\n function getElLeft(el, list) {\n return (position(el).left + (isRtl ? bounds(el).width - bounds(list).width : 0)) * (isRtl ? -1 : 1);\n }\n\n function bounds(el) {\n return el.getBoundingClientRect();\n }\n\n function triggerUpdate$1(el, type, data) {\n trigger(el, createEvent(type, false, false, data));\n }\n\n function slides(list) {\n return toNodes(list.children);\n }\n\n var Slider$1 = {\n\n mixins: [Class, Slider, SliderReactive],\n\n props: {\n center: Boolean,\n sets: Boolean\n },\n\n data: {\n center: false,\n sets: false,\n attrItem: 'uk-slider-item',\n selList: '.uk-slider-items',\n selNav: '.uk-slider-nav',\n clsContainer: 'uk-slider-container',\n Transitioner: Transitioner$1\n },\n\n computed: {\n\n avgWidth: function() {\n return getWidth(this.list) / this.length;\n },\n\n finite: function(ref) {\n var finite = ref.finite;\n\n return finite || getWidth(this.list) < bounds(this.list).width + getMaxWidth(this.list) + this.center;\n },\n\n maxIndex: function() {\n\n if (!this.finite || this.center && !this.sets) {\n return this.length - 1;\n }\n\n if (this.center) {\n return last(this.sets);\n }\n\n css(this.slides, 'order', '');\n\n var max = getMax(this.list);\n var i = this.length;\n\n while (i--) {\n if (getElLeft(this.list.children[i], this.list) < max) {\n return Math.min(i + 1, this.length - 1);\n }\n }\n\n return 0;\n },\n\n sets: function(ref) {\n var this$1 = this;\n var sets = ref.sets;\n\n\n var width = bounds(this.list).width / (this.center ? 2 : 1);\n\n var left = 0;\n var leftCenter = width;\n var slideLeft = 0;\n\n sets = sets && this.slides.reduce(function (sets, slide, i) {\n\n var ref = bounds(slide);\n var slideWidth = ref.width;\n var slideRight = slideLeft + slideWidth;\n\n if (slideRight > left) {\n\n if (!this$1.center && i > this$1.maxIndex) {\n i = this$1.maxIndex;\n }\n\n if (!includes(sets, i)) {\n\n var cmp = this$1.slides[i + 1];\n if (this$1.center && cmp && slideWidth < leftCenter - bounds(cmp).width / 2) {\n leftCenter -= slideWidth;\n } else {\n leftCenter = width;\n sets.push(i);\n left = slideLeft + width + (this$1.center ? slideWidth / 2 : 0);\n }\n\n }\n }\n\n slideLeft += slideWidth;\n\n return sets;\n\n }, []);\n\n return !isEmpty(sets) && sets;\n\n },\n\n transitionOptions: function() {\n return {\n center: this.center,\n list: this.list\n };\n }\n\n },\n\n connected: function() {\n toggleClass(this.$el, this.clsContainer, !$((\".\" + (this.clsContainer)), this.$el));\n },\n\n update: {\n\n write: function() {\n var this$1 = this;\n\n\n $$((\"[\" + (this.attrItem) + \"],[data-\" + (this.attrItem) + \"]\"), this.$el).forEach(function (el) {\n var index = data(el, this$1.attrItem);\n this$1.maxIndex && toggleClass(el, 'uk-hidden', isNumeric(index) && (this$1.sets && !includes(this$1.sets, toFloat(index)) || index > this$1.maxIndex));\n });\n\n if (!this.dragging && !this.stack.length) {\n this._getTransitioner().translate(1);\n }\n\n },\n\n events: ['resize']\n\n },\n\n events: {\n\n beforeitemshow: function(e) {\n\n if (!this.dragging && this.sets && this.stack.length < 2 && !includes(this.sets, this.index)) {\n this.index = this.getValidIndex();\n }\n\n var diff = Math.abs(\n this.index\n - this.prevIndex\n + (this.dir > 0 && this.index < this.prevIndex || this.dir < 0 && this.index > this.prevIndex ? (this.maxIndex + 1) * this.dir : 0)\n );\n\n if (!this.dragging && diff > 1) {\n\n for (var i = 0; i < diff; i++) {\n this.stack.splice(1, 0, this.dir > 0 ? 'next' : 'previous');\n }\n\n e.preventDefault();\n return;\n }\n\n this.duration = speedUp(this.avgWidth / this.velocity)\n * (bounds(\n this.dir < 0 || !this.slides[this.prevIndex]\n ? this.slides[this.index]\n : this.slides[this.prevIndex]\n ).width / this.avgWidth);\n\n this.reorder();\n\n },\n\n itemshow: function() {\n !isUndefined(this.prevIndex) && addClass(this._getTransitioner().getItemIn(), this.clsActive);\n },\n\n itemshown: function() {\n var this$1 = this;\n\n var actives = this._getTransitioner(this.index).getActives();\n this.slides.forEach(function (slide) { return toggleClass(slide, this$1.clsActive, includes(actives, slide)); });\n (!this.sets || includes(this.sets, toFloat(this.index))) && this.slides.forEach(function (slide) { return toggleClass(slide, this$1.clsActivated, includes(actives, slide)); });\n }\n\n },\n\n methods: {\n\n reorder: function() {\n var this$1 = this;\n\n\n css(this.slides, 'order', '');\n\n if (this.finite) {\n return;\n }\n\n var index = this.dir > 0 && this.slides[this.prevIndex] ? this.prevIndex : this.index;\n\n this.slides.forEach(function (slide, i) { return css(slide, 'order', this$1.dir > 0 && i < index\n ? 1\n : this$1.dir < 0 && i >= this$1.index\n ? -1\n : ''\n ); }\n );\n\n if (!this.center) {\n return;\n }\n\n var next = this.slides[index];\n var width = bounds(this.list).width / 2 - bounds(next).width / 2;\n var j = 0;\n\n while (width > 0) {\n var slideIndex = this.getIndex(--j + index, index);\n var slide = this.slides[slideIndex];\n\n css(slide, 'order', slideIndex > index ? -2 : -1);\n width -= bounds(slide).width;\n }\n\n },\n\n getValidIndex: function(index, prevIndex) {\n if ( index === void 0 ) index = this.index;\n if ( prevIndex === void 0 ) prevIndex = this.prevIndex;\n\n\n index = this.getIndex(index, prevIndex);\n\n if (!this.sets) {\n return index;\n }\n\n var prev;\n\n do {\n\n if (includes(this.sets, index)) {\n return index;\n }\n\n prev = index;\n index = this.getIndex(index + this.dir, prevIndex);\n\n } while (index !== prev);\n\n return index;\n }\n\n }\n\n };\n\n var SlideshowParallax = {\n\n mixins: [Parallax],\n\n data: {\n selItem: '!li'\n },\n\n computed: {\n\n item: function(ref, $el) {\n var selItem = ref.selItem;\n\n return query(selItem, $el);\n }\n\n },\n\n events: [\n\n {\n\n name: 'itemshown',\n\n self: true,\n\n el: function() {\n return this.item;\n },\n\n handler: function() {\n css(this.$el, this.getCss(.5));\n }\n\n },\n\n {\n name: 'itemin itemout',\n\n self: true,\n\n el: function() {\n return this.item;\n },\n\n handler: function(ref) {\n var type = ref.type;\n var ref_detail = ref.detail;\n var percent = ref_detail.percent;\n var duration = ref_detail.duration;\n var timing = ref_detail.timing;\n var dir = ref_detail.dir;\n\n\n Transition.cancel(this.$el);\n css(this.$el, this.getCss(getCurrent(type, dir, percent)));\n\n Transition.start(this.$el, this.getCss(isIn(type)\n ? .5\n : dir > 0\n ? 1\n : 0\n ), duration, timing).catch(noop);\n\n }\n },\n\n {\n name: 'transitioncanceled transitionend',\n\n self: true,\n\n el: function() {\n return this.item;\n },\n\n handler: function() {\n Transition.cancel(this.$el);\n }\n\n },\n\n {\n name: 'itemtranslatein itemtranslateout',\n\n self: true,\n\n el: function() {\n return this.item;\n },\n\n handler: function(ref) {\n var type = ref.type;\n var ref_detail = ref.detail;\n var percent = ref_detail.percent;\n var dir = ref_detail.dir;\n\n Transition.cancel(this.$el);\n css(this.$el, this.getCss(getCurrent(type, dir, percent)));\n }\n }\n\n ]\n\n };\n\n function isIn(type) {\n return endsWith(type, 'in');\n }\n\n function getCurrent(type, dir, percent) {\n\n percent /= 2;\n\n return !isIn(type)\n ? dir < 0\n ? percent\n : 1 - percent\n : dir < 0\n ? 1 - percent\n : percent;\n }\n\n var Animations$2 = assign({}, Animations, {\n\n fade: {\n\n show: function() {\n return [\n {opacity: 0, zIndex: 0},\n {zIndex: -1}\n ];\n },\n\n percent: function(current) {\n return 1 - css(current, 'opacity');\n },\n\n translate: function(percent) {\n return [\n {opacity: 1 - percent, zIndex: 0},\n {zIndex: -1}\n ];\n }\n\n },\n\n scale: {\n\n show: function() {\n return [\n {opacity: 0, transform: scale3d(1 + .5), zIndex: 0},\n {zIndex: -1}\n ];\n },\n\n percent: function(current) {\n return 1 - css(current, 'opacity');\n },\n\n translate: function(percent) {\n return [\n {opacity: 1 - percent, transform: scale3d(1 + .5 * percent), zIndex: 0},\n {zIndex: -1}\n ];\n }\n\n },\n\n pull: {\n\n show: function(dir) {\n return dir < 0\n ? [\n {transform: translate(30), zIndex: -1},\n {transform: translate(), zIndex: 0}\n ]\n : [\n {transform: translate(-100), zIndex: 0},\n {transform: translate(), zIndex: -1}\n ];\n },\n\n percent: function(current, next, dir) {\n return dir < 0\n ? 1 - translated(next)\n : translated(current);\n },\n\n translate: function(percent, dir) {\n return dir < 0\n ? [\n {transform: translate(30 * percent), zIndex: -1},\n {transform: translate(-100 * (1 - percent)), zIndex: 0}\n ]\n : [\n {transform: translate(-percent * 100), zIndex: 0},\n {transform: translate(30 * (1 - percent)), zIndex: -1}\n ];\n }\n\n },\n\n push: {\n\n show: function(dir) {\n return dir < 0\n ? [\n {transform: translate(100), zIndex: 0},\n {transform: translate(), zIndex: -1}\n ]\n : [\n {transform: translate(-30), zIndex: -1},\n {transform: translate(), zIndex: 0}\n ];\n },\n\n percent: function(current, next, dir) {\n return dir > 0\n ? 1 - translated(next)\n : translated(current);\n },\n\n translate: function(percent, dir) {\n return dir < 0\n ? [\n {transform: translate(percent * 100), zIndex: 0},\n {transform: translate(-30 * (1 - percent)), zIndex: -1}\n ]\n : [\n {transform: translate(-30 * percent), zIndex: -1},\n {transform: translate(100 * (1 - percent)), zIndex: 0}\n ];\n }\n\n }\n\n });\n\n var Slideshow$1 = {\n\n mixins: [Class, Slideshow, SliderReactive],\n\n props: {\n ratio: String,\n minHeight: Number,\n maxHeight: Number\n },\n\n data: {\n ratio: '16:9',\n minHeight: false,\n maxHeight: false,\n selList: '.uk-slideshow-items',\n attrItem: 'uk-slideshow-item',\n selNav: '.uk-slideshow-nav',\n Animations: Animations$2\n },\n\n update: {\n\n read: function() {\n\n var ref = this.ratio.split(':').map(Number);\n var width = ref[0];\n var height = ref[1];\n\n height = height * this.list.offsetWidth / width || 0;\n\n if (this.minHeight) {\n height = Math.max(this.minHeight, height);\n }\n\n if (this.maxHeight) {\n height = Math.min(this.maxHeight, height);\n }\n\n return {height: height - boxModelAdjust(this.list, 'content-box')};\n },\n\n write: function(ref) {\n var height = ref.height;\n\n height > 0 && css(this.list, 'minHeight', height);\n },\n\n events: ['resize']\n\n }\n\n };\n\n var Sortable = {\n\n mixins: [Class, Animate],\n\n props: {\n group: String,\n threshold: Number,\n clsItem: String,\n clsPlaceholder: String,\n clsDrag: String,\n clsDragState: String,\n clsBase: String,\n clsNoDrag: String,\n clsEmpty: String,\n clsCustom: String,\n handle: String\n },\n\n data: {\n group: false,\n threshold: 5,\n clsItem: 'uk-sortable-item',\n clsPlaceholder: 'uk-sortable-placeholder',\n clsDrag: 'uk-sortable-drag',\n clsDragState: 'uk-drag',\n clsBase: 'uk-sortable',\n clsNoDrag: 'uk-sortable-nodrag',\n clsEmpty: 'uk-sortable-empty',\n clsCustom: '',\n handle: false\n },\n\n created: function() {\n var this$1 = this;\n\n ['init', 'start', 'move', 'end'].forEach(function (key) {\n var fn = this$1[key];\n this$1[key] = function (e) {\n this$1.scrollY = window.pageYOffset;\n var ref = getEventPos(e, 'page');\n var x = ref.x;\n var y = ref.y;\n this$1.pos = {x: x, y: y};\n\n fn(e);\n };\n });\n },\n\n events: {\n\n name: pointerDown,\n passive: false,\n handler: 'init'\n\n },\n\n update: {\n\n write: function() {\n\n if (this.clsEmpty) {\n toggleClass(this.$el, this.clsEmpty, isEmpty(this.$el.children));\n }\n\n css(this.handle ? $$(this.handle, this.$el) : this.$el.children, {touchAction: 'none', userSelect: 'none'});\n\n if (this.drag) {\n\n // clamp to viewport\n var ref = offset(window);\n var right = ref.right;\n var bottom = ref.bottom;\n offset(this.drag, {\n top: clamp(this.pos.y + this.origin.top, 0, bottom - this.drag.offsetHeight),\n left: clamp(this.pos.x + this.origin.left, 0, right - this.drag.offsetWidth)\n });\n\n trackScroll(this.pos);\n\n }\n\n }\n\n },\n\n methods: {\n\n init: function(e) {\n\n var target = e.target;\n var button = e.button;\n var defaultPrevented = e.defaultPrevented;\n var ref = toNodes(this.$el.children).filter(function (el) { return within(target, el); });\n var placeholder = ref[0];\n\n if (!placeholder\n || defaultPrevented\n || button > 0\n || isInput(target)\n || within(target, (\".\" + (this.clsNoDrag)))\n || this.handle && !within(target, this.handle)\n ) {\n return;\n }\n\n e.preventDefault();\n\n this.touched = [this];\n this.placeholder = placeholder;\n this.origin = assign({target: target, index: index(placeholder)}, this.pos);\n\n on(document, pointerMove, this.move);\n on(document, pointerUp, this.end);\n on(window, 'scroll', this.scroll);\n\n if (!this.threshold) {\n this.start(e);\n }\n\n },\n\n start: function(e) {\n\n this.drag = append(this.$container, this.placeholder.outerHTML.replace(/^<li/i, '<div').replace(/li>$/i, 'div>'));\n\n css(this.drag, assign({\n boxSizing: 'border-box',\n width: this.placeholder.offsetWidth,\n height: this.placeholder.offsetHeight,\n overflow: 'hidden'\n }, css(this.placeholder, ['paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom'])));\n attr(this.drag, 'uk-no-boot', '');\n addClass(this.drag, this.clsDrag, this.clsCustom);\n\n height(this.drag.firstElementChild, height(this.placeholder.firstElementChild));\n\n var ref = offset(this.placeholder);\n var left = ref.left;\n var top = ref.top;\n assign(this.origin, {left: left - this.pos.x, top: top - this.pos.y});\n\n addClass(this.placeholder, this.clsPlaceholder);\n addClass(this.$el.children, this.clsItem);\n addClass(document.documentElement, this.clsDragState);\n\n trigger(this.$el, 'start', [this, this.placeholder]);\n\n this.move(e);\n },\n\n move: function(e) {\n\n if (!this.drag) {\n\n if (Math.abs(this.pos.x - this.origin.x) > this.threshold || Math.abs(this.pos.y - this.origin.y) > this.threshold) {\n this.start(e);\n }\n\n return;\n }\n\n this.$emit();\n\n var target = e.type === 'mousemove' ? e.target : document.elementFromPoint(this.pos.x - window.pageXOffset, this.pos.y - window.pageYOffset);\n\n var sortable = this.getSortable(target);\n var previous = this.getSortable(this.placeholder);\n var move = sortable !== previous;\n\n if (!sortable || within(target, this.placeholder) || move && (!sortable.group || sortable.group !== previous.group)) {\n return;\n }\n\n target = sortable.$el === target.parentNode && target || toNodes(sortable.$el.children).filter(function (element) { return within(target, element); })[0];\n\n if (move) {\n previous.remove(this.placeholder);\n } else if (!target) {\n return;\n }\n\n sortable.insert(this.placeholder, target);\n\n if (!includes(this.touched, sortable)) {\n this.touched.push(sortable);\n }\n\n },\n\n end: function(e) {\n\n off(document, pointerMove, this.move);\n off(document, pointerUp, this.end);\n off(window, 'scroll', this.scroll);\n\n if (!this.drag) {\n if (e.type === 'touchend') {\n e.target.click();\n }\n\n return;\n }\n\n untrackScroll();\n\n var sortable = this.getSortable(this.placeholder);\n\n if (this === sortable) {\n if (this.origin.index !== index(this.placeholder)) {\n trigger(this.$el, 'moved', [this, this.placeholder]);\n }\n } else {\n trigger(sortable.$el, 'added', [sortable, this.placeholder]);\n trigger(this.$el, 'removed', [this, this.placeholder]);\n }\n\n trigger(this.$el, 'stop', [this, this.placeholder]);\n\n remove(this.drag);\n this.drag = null;\n\n var classes = this.touched.map(function (sortable) { return ((sortable.clsPlaceholder) + \" \" + (sortable.clsItem)); }).join(' ');\n this.touched.forEach(function (sortable) { return removeClass(sortable.$el.children, classes); });\n\n removeClass(document.documentElement, this.clsDragState);\n\n },\n\n scroll: function() {\n var scroll = window.pageYOffset;\n if (scroll !== this.scrollY) {\n this.pos.y += scroll - this.scrollY;\n this.scrollY = scroll;\n this.$emit();\n }\n },\n\n insert: function(element, target) {\n var this$1 = this;\n\n\n addClass(this.$el.children, this.clsItem);\n\n var insert = function () {\n\n if (target) {\n\n if (!within(element, this$1.$el) || isPredecessor(element, target)) {\n before(target, element);\n } else {\n after(target, element);\n }\n\n } else {\n append(this$1.$el, element);\n }\n\n };\n\n if (this.animation) {\n this.animate(insert);\n } else {\n insert();\n }\n\n },\n\n remove: function(element) {\n\n if (!within(element, this.$el)) {\n return;\n }\n\n css(this.handle ? $$(this.handle, element) : element, {touchAction: '', userSelect: ''});\n\n if (this.animation) {\n this.animate(function () { return remove(element); });\n } else {\n remove(element);\n }\n\n },\n\n getSortable: function(element) {\n return element && (this.$getComponent(element, 'sortable') || this.getSortable(element.parentNode));\n }\n\n }\n\n };\n\n function isPredecessor(element, target) {\n return element.parentNode === target.parentNode && index(element) > index(target);\n }\n\n var trackTimer;\n function trackScroll(ref) {\n var x = ref.x;\n var y = ref.y;\n\n\n clearTimeout(trackTimer);\n\n scrollParents(document.elementFromPoint(x - window.pageXOffset, y - window.pageYOffset)).some(function (scrollEl) {\n\n var scroll = scrollEl.scrollTop;\n var scrollHeight = scrollEl.scrollHeight;\n\n if (getScrollingElement() === scrollEl) {\n scrollEl = window;\n scrollHeight -= window.innerHeight;\n }\n\n var ref = offset(scrollEl);\n var top = ref.top;\n var bottom = ref.bottom;\n\n if (top < y && top + 30 > y) {\n scroll -= 5;\n } else if (bottom > y && bottom - 20 < y) {\n scroll += 5;\n }\n\n if (scroll > 0 && scroll < scrollHeight) {\n return trackTimer = setTimeout(function () {\n scrollTop(scrollEl, scroll);\n trackScroll({x: x, y: y});\n }, 10);\n }\n\n });\n\n }\n\n function untrackScroll() {\n clearTimeout(trackTimer);\n }\n\n var overflowRe = /auto|scroll/;\n\n function scrollParents(element) {\n var scrollEl = getScrollingElement();\n return parents$1(element, function (parent) { return parent === scrollEl || overflowRe.test(css(parent, 'overflow')); });\n }\n\n function parents$1(element, fn) {\n var parents = [];\n do {\n if (fn(element)) {\n parents.unshift(element);\n }\n } while (element && (element = element.parentElement));\n return parents;\n }\n\n function getScrollingElement() {\n return document.scrollingElement || document.documentElement;\n }\n\n var obj$1;\n\n var actives = [];\n\n var Tooltip = {\n\n mixins: [Container, Togglable, Position],\n\n args: 'title',\n\n props: {\n delay: Number,\n title: String\n },\n\n data: {\n pos: 'top',\n title: '',\n delay: 0,\n animation: ['uk-animation-scale-up'],\n duration: 100,\n cls: 'uk-active',\n clsPos: 'uk-tooltip'\n },\n\n beforeConnect: function() {\n this._hasTitle = hasAttr(this.$el, 'title');\n attr(this.$el, {title: '', 'aria-expanded': false});\n },\n\n disconnected: function() {\n this.hide();\n attr(this.$el, {title: this._hasTitle ? this.title : null, 'aria-expanded': null});\n },\n\n methods: {\n\n show: function() {\n var this$1 = this;\n\n\n if (this.isActive() || !this.title) {\n return;\n }\n\n actives.forEach(function (active) { return active.hide(); });\n actives.push(this);\n\n this._unbind = on(document, pointerUp, function (e) { return !within(e.target, this$1.$el) && this$1.hide(); });\n\n clearTimeout(this.showTimer);\n this.showTimer = setTimeout(function () {\n this$1._show();\n this$1.hideTimer = setInterval(function () {\n\n if (!isVisible(this$1.$el)) {\n this$1.hide();\n }\n\n }, 150);\n }, this.delay);\n },\n\n hide: function() {\n\n if (!this.isActive() || matches(this.$el, 'input:focus')) {\n return;\n }\n\n actives.splice(actives.indexOf(this), 1);\n\n clearTimeout(this.showTimer);\n clearInterval(this.hideTimer);\n attr(this.$el, 'aria-expanded', false);\n this.toggleElement(this.tooltip, false);\n this.tooltip && remove(this.tooltip);\n this.tooltip = false;\n this._unbind();\n\n },\n\n _show: function() {\n\n this.tooltip = append(this.container,\n (\"<div class=\\\"\" + (this.clsPos) + \"\\\" aria-expanded=\\\"true\\\" aria-hidden> <div class=\\\"\" + (this.clsPos) + \"-inner\\\">\" + (this.title) + \"</div> </div>\")\n );\n\n this.positionAt(this.tooltip, this.$el);\n\n this.origin = this.getAxis() === 'y'\n ? ((flipPosition(this.dir)) + \"-\" + (this.align))\n : ((this.align) + \"-\" + (flipPosition(this.dir)));\n\n this.toggleElement(this.tooltip, true);\n\n },\n\n isActive: function() {\n return includes(actives, this);\n }\n\n },\n\n events: ( obj$1 = {\n\n focus: 'show',\n blur: 'hide'\n\n }, obj$1[(pointerEnter + \" \" + pointerLeave)] = function (e) {\n if (isTouch(e)) {\n return;\n }\n e.type === pointerEnter\n ? this.show()\n : this.hide();\n }, obj$1[pointerDown] = function (e) {\n if (!isTouch(e)) {\n return;\n }\n this.isActive()\n ? this.hide()\n : this.show();\n }, obj$1 )\n\n };\n\n var Upload = {\n\n props: {\n allow: String,\n clsDragover: String,\n concurrent: Number,\n maxSize: Number,\n method: String,\n mime: String,\n msgInvalidMime: String,\n msgInvalidName: String,\n msgInvalidSize: String,\n multiple: Boolean,\n name: String,\n params: Object,\n type: String,\n url: String\n },\n\n data: {\n allow: false,\n clsDragover: 'uk-dragover',\n concurrent: 1,\n maxSize: 0,\n method: 'POST',\n mime: false,\n msgInvalidMime: 'Invalid File Type: %s',\n msgInvalidName: 'Invalid File Name: %s',\n msgInvalidSize: 'Invalid File Size: %s Kilobytes Max',\n multiple: false,\n name: 'files[]',\n params: {},\n type: '',\n url: '',\n abort: noop,\n beforeAll: noop,\n beforeSend: noop,\n complete: noop,\n completeAll: noop,\n error: noop,\n fail: noop,\n load: noop,\n loadEnd: noop,\n loadStart: noop,\n progress: noop\n },\n\n events: {\n\n change: function(e) {\n\n if (!matches(e.target, 'input[type=\"file\"]')) {\n return;\n }\n\n e.preventDefault();\n\n if (e.target.files) {\n this.upload(e.target.files);\n }\n\n e.target.value = '';\n },\n\n drop: function(e) {\n stop(e);\n\n var transfer = e.dataTransfer;\n\n if (!transfer || !transfer.files) {\n return;\n }\n\n removeClass(this.$el, this.clsDragover);\n\n this.upload(transfer.files);\n },\n\n dragenter: function(e) {\n stop(e);\n },\n\n dragover: function(e) {\n stop(e);\n addClass(this.$el, this.clsDragover);\n },\n\n dragleave: function(e) {\n stop(e);\n removeClass(this.$el, this.clsDragover);\n }\n\n },\n\n methods: {\n\n upload: function(files) {\n var this$1 = this;\n\n\n if (!files.length) {\n return;\n }\n\n trigger(this.$el, 'upload', [files]);\n\n for (var i = 0; i < files.length; i++) {\n\n if (this.maxSize && this.maxSize * 1000 < files[i].size) {\n this.fail(this.msgInvalidSize.replace('%s', this.maxSize));\n return;\n }\n\n if (this.allow && !match$1(this.allow, files[i].name)) {\n this.fail(this.msgInvalidName.replace('%s', this.allow));\n return;\n }\n\n if (this.mime && !match$1(this.mime, files[i].type)) {\n this.fail(this.msgInvalidMime.replace('%s', this.mime));\n return;\n }\n\n }\n\n if (!this.multiple) {\n files = [files[0]];\n }\n\n this.beforeAll(this, files);\n\n var chunks = chunk(files, this.concurrent);\n var upload = function (files) {\n\n var data = new FormData();\n\n files.forEach(function (file) { return data.append(this$1.name, file); });\n\n for (var key in this$1.params) {\n data.append(key, this$1.params[key]);\n }\n\n ajax(this$1.url, {\n data: data,\n method: this$1.method,\n responseType: this$1.type,\n beforeSend: function (env) {\n\n var xhr = env.xhr;\n xhr.upload && on(xhr.upload, 'progress', this$1.progress);\n ['loadStart', 'load', 'loadEnd', 'abort'].forEach(function (type) { return on(xhr, type.toLowerCase(), this$1[type]); }\n );\n\n this$1.beforeSend(env);\n\n }\n }).then(\n function (xhr) {\n\n this$1.complete(xhr);\n\n if (chunks.length) {\n upload(chunks.shift());\n } else {\n this$1.completeAll(xhr);\n }\n\n },\n function (e) { return this$1.error(e); }\n );\n\n };\n\n upload(chunks.shift());\n\n }\n\n }\n\n };\n\n function match$1(pattern, path) {\n return path.match(new RegExp((\"^\" + (pattern.replace(/\\//g, '\\\\/').replace(/\\*\\*/g, '(\\\\/[^\\\\/]+)*').replace(/\\*/g, '[^\\\\/]+').replace(/((?!\\\\))\\?/g, '$1.')) + \"$\"), 'i'));\n }\n\n function chunk(files, size) {\n var chunks = [];\n for (var i = 0; i < files.length; i += size) {\n var chunk = [];\n for (var j = 0; j < size; j++) {\n chunk.push(files[i + j]);\n }\n chunks.push(chunk);\n }\n return chunks;\n }\n\n function stop(e) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n UIkit.component('countdown', Countdown);\n UIkit.component('filter', Filter);\n UIkit.component('lightbox', Lightbox);\n UIkit.component('lightboxPanel', lightboxPanel);\n UIkit.component('notification', Notification);\n UIkit.component('parallax', Parallax$1);\n UIkit.component('slider', Slider$1);\n UIkit.component('sliderParallax', SlideshowParallax);\n UIkit.component('slideshow', Slideshow$1);\n UIkit.component('slideshowParallax', SlideshowParallax);\n UIkit.component('sortable', Sortable);\n UIkit.component('tooltip', Tooltip);\n UIkit.component('upload', Upload);\n\n {\n boot(UIkit);\n }\n\n return UIkit;\n\n}));\n","<script>\nimport {\n last\n} from \"lodash/fp\";\nimport IconButton from \"../common/IconButton.svelte\";\nimport ComponentSelector from \"./ComponentSelector.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport UIkit from \"uikit\";\nimport {\n getComponentInfo\n} from \"./pagesParsing/createProps\";\nimport { store } from \"../builderStore\";\n\nconst emptyProps = () => ({_component:\"\"})\n\nexport let props = emptyProps();\nexport let onValueChanged = () => {};\nexport let onComponentChosen = () => {};\nexport let onEdit = () => {};\nexport let disabled = false;\n\nconst CHOOSE_COMPONENT = \"choose_component\";\nconst CLEAR_COMPONENT = \"clear_component\";\n\nlet allComponents;\nlet modalElement;\nlet modalAction;\n\nstore.subscribe(s => {\n allComponents = s.allComponents;\n});\n\n$: componentSelected = props._component.length > 0;\n$: shortName = last(props._component.split(\"/\"));\n\nconst chooseComponent = () => {\n modalAction = CHOOSE_COMPONENT;\n showDialog();\n}\n\nconst clearComponent = () => {\n modalAction = CLEAR_COMPONENT;\n showDialog();\n}\n\nconst componentChosen = (component) => {\n const componentInfo = getComponentInfo(allComponents, component.name);\n props = componentInfo.fullProps;\n onValueChanged(props);\n onComponentChosen();\n hideDialog();\n}\n\nconst hideDialog = () => {\n UIkit.modal(modalElement).hide();\n}\n\nconst showDialog = () => {\n UIkit.modal(modalElement).show();\n}\n\nconst confirmClearComponent = () => {\n props = emptyProps();\n onValueChanged(emptyProps());\n hideDialog();\n}\n\n</script>\n\n\n<div class=\"root uk-form-controls\">\n <div class:selectedname={componentSelected}>\n {componentSelected ? shortName : \"(none)\"}\n </div>\n <div>\n {#if !disabled && componentSelected}\n <IconButton icon=\"edit\" \n on:click={() => onEdit()}/>\n\n <IconButton icon=\"trash\" \n on:click={() => clearComponent()} />\n {:else if !disabled && !componentSelected}\n <IconButton icon=\"plus\" \n on:click={() => chooseComponent()} />\n {/if}\n \n </div>\n</div>\n\n<div bind:this={modalElement} uk-modal>\n <div class=\"uk-modal-dialog\" uk-overflow-auto>\n\n {#if modalAction === CHOOSE_COMPONENT}\n <div class=\"uk-modal-body\">\n <ComponentSelector onComponentChosen={componentChosen}\n allowGenerators={false} />\n </div>\n {:else if modalAction === CLEAR_COMPONENT}\n <div class=\"uk-modal-body\">\n Clear this component ?\n </div>\n <div class=\"uk-modal-footer\">\n <ButtonGroup>\n <Button grouped \n on:click={hideDialog} \n color=\"secondary\" >Cancel</Button>\n <Button grouped \n on:click={confirmClearComponent}>OK</Button>\n </ButtonGroup>\n </div>\n {/if}\n\n </div>\n\n</div>\n\n<style>\n\n.root {\n display: grid;\n grid-template-columns: [name] 1fr [actions] auto;\n}\n\n.root > div:nth-child(1) {\n grid-column-start: name;\n color: var(--secondary50);\n}\n\n.root > div:nth-child(2) {\n grid-column-start: actions;\n}\n\n.selectedname {\n font-weight: bold;\n color: var(--secondary);\n}\n\n</style>","<script>\nimport IconButton from \"../common/IconButton.svelte\";\nimport {\n createArrayElementProps\n} from \"./pagesParsing/createProps\";\nimport PropControl from \"./PropControl.svelte\";\nimport {\n some,\n cloneDeep,\n} from \"lodash/fp\";\nimport { validateProps } from \"./pagesParsing/validateProps\";\n\nexport let parentProps;\nexport let propDef;\nexport let onValueChanged;\nexport let onValidate = () => {};\nexport let onEditComponentProp = () => {};\n\nlet value = [];\nlet elementDefinitionArray;\nlet elementErrors = {};\n\n$: {\n const elArray = [];\n for(let elProp in propDef.elementDefinition) {\n if(elProp === \"_component\") continue;\n elArray.push({\n ...propDef.elementDefinition[elProp],\n ____name: elProp\n });\n }\n elementDefinitionArray = elArray;\n value = parentProps[propDef.____name];\n}\n\nconst addElement = () => {\n const newElement = createArrayElementProps(\n propDef.____name, \n propDef.elementDefinition).props;\n\n value = [...value, newElement];\n onValueChanged(value);\n}\n\nconst validate = (index, elementProps) => {\n elementErrors[index] = validateProps(\n propDef.elementDefinition, elementProps, [], true);\n onValidate(elementErrors[index]);\n return elementErrors[index].length === 0;\n}\n\nconst setProp = (index) => (name, propValue) => {\n const newValue = cloneDeep(value);\n const newProps = cloneDeep(newValue[index]);\n newProps[name] = propValue;\n newValue[index] = newProps;\n value = newValue;\n\n if(validate(index, newProps))\n onValueChanged(newValue);\n \n}\n\nlet fieldHasError = index => propName => \n some(e => e.propName === propName)(elementErrors[index]);\n\nconst onEditComponent = (index, propName) => () => {\n onEditComponentProp(index, propName);\n}\n\n</script>\n\n<div class=\"root\">\n\n\n <div class=\"item-container\">\n {#each value as item, index}\n \n <div class=\"item-inner-container\">\n {#each elementDefinitionArray as propDef}\n <PropControl setProp={setProp(index)}\n fieldHasError={fieldHasError(index)}\n {propDef}\n props={item}\n {index}\n onEditComponent={onEditComponent(index, propDef.____name)}\n disabled={false} />\n {/each}\n </div>\n \n {/each}\n\n <div class=\"addelement-container\"\n on:click={addElement}>\n <IconButton icon=\"plus\" \n size=\"12\"/>\n </div>\n </div>\n</div>\n\n\n<style>\n\n.addelement-container {\n cursor: pointer;\n padding: 3px 0px;\n text-align: center;\n}\n\n.addelement-container:hover {\n background-color: var(--primary25);\n}\n\n\n.item-container {\n padding-left: 3px;\n background: var(--secondary10);\n}\n\n</style>","<script>\nimport {\n isString\n} from \"lodash/fp\";\nimport IconButton from \"../common/IconButton.svelte\";\nimport {\n isBinding, getBinding, setBinding\n} from \"../common/binding\";\n\nexport let value=\"\";\nexport let onChanged= () => {};\nexport let type=\"\";\nexport let options=[];\n\nlet isBound=false;\nlet bindingPath=\"\";\nlet bindingFallbackValue=\"\";\nlet bindingSource=\"store\";\nlet isExpanded = false;\nlet forceIsBound = false;\nlet canOnlyBind = false;\n\n$: {\n canOnlyBind = type === \"state\";\n if(!forceIsBound && canOnlyBind)\n forceIsBound = true;\n\n isBound= forceIsBound || isBinding(value);\n\n if(isBound) {\n const binding = getBinding(value);\n bindingPath= binding.path;\n bindingFallbackValue= binding.fallback;\n bindingSource = binding.source || \"store\";\n } else {\n bindingPath=\"\";\n bindingFallbackValue=\"\";\n bindingSource=\"store\";\n }\n}\n\nconst clearBinding = () => {\n forceIsBound = false;\n onChanged(\"\");\n}\n\nconst bind = (path, fallback, source) => {\n if(!path) {\n clearBinding(\"\");\n return;\n }\n const binding = setBinding({path, fallback, source});\n onChanged(binding);\n}\n\nconst setBindingPath = ev => {\n forceIsBound = canOnlyBind;\n bind(ev.target.value, bindingFallbackValue, bindingSource)\n}\n\nconst setBindingFallback = ev => {\n bind(bindingPath, ev.target.value, bindingSource);\n}\n\nconst setBindingSource = ev => {\n bind(bindingPath, bindingFallbackValue, ev.target.value);\n}\n\nconst makeBinding = () => {\n forceIsBound=true;\n isExpanded=true;\n}\n\n</script>\n\n{#if isBound}\n<div>\n <div class=\"bound-header\">\n <div>{isExpanded ? \"\" : bindingPath}</div>\n <IconButton icon={isExpanded ? \"chevron-up\" : \"chevron-down\"} \n size=\"12\"\n on:click={() => isExpanded=!isExpanded}/>\n {#if !canOnlyBind}\n <IconButton icon=\"trash\" \n size=\"12\"\n on:click={clearBinding}/>\n {/if}\n </div>\n {#if isExpanded}\n <div>\n <div class=\"binding-prop-label\">Binding Path</div>\n <input class=\"uk-input uk-form-small\"\n value={bindingPath}\n on:change={setBindingPath} >\n <div class=\"binding-prop-label\">Fallback Value</div>\n <input class=\"uk-input uk-form-small\"\n value={bindingFallbackValue}\n on:change={setBindingFallback} >\n <div class=\"binding-prop-label\">Binding Source</div>\n <select class=\"uk-select uk-form-small\" \n value={bindingSource} \n on:change={setBindingSource}>\n\n <option>store</option>\n <option>context</option>\n\n </select>\n </div>\n {/if}\n\n</div>\n{:else}\n<div class=\"unbound-container\">\n\n {#if type === \"bool\"}\n\n <div>\n <IconButton icon={value == true ? \"check-square\" : \"square\"}\n size=\"19\"\n on:click={() => value = !value}/>\n </div>\n\n {:else if type === \"options\"}\n\n <select class=\"uk-select uk-form-small\" \n value={value} \n on:change={ev => onChanged(ev.target.checked)}>\n {#each options as option}\n <option value={option}>{option}</option>\n {/each}\n </select>\n\n {:else}\n\n <input class=\"uk-input uk-form-small\"\n on:change={ev => onChanged(ev.target.value)}\n bind:value={value}\n style=\"flex: 1 0 auto;\" > \n\n\n {/if}\n <IconButton icon=\"link\" \n size=\"12\"\n on:click={makeBinding} />\n</div>\n{/if}\n\n\n<style>\n\n.unbound-container {\n display:flex;\n margin: .5rem 0rem .5rem 0rem;\n}\n\n.unbound-container > *:nth-child(1) {\n width:auto;\n flex: 1 0 auto;\n font-size: 0.8rem;\n color: var(--secondary100);\n border-radius: .2rem;\n}\n\n.bound-header {\n display: flex;\n}\n\n.bound-header > div:nth-child(1) {\n flex: 1 0 auto;\n width: 30px;\n color: var(--secondary50);\n padding-left: 5px;\n}\n\n.binding-prop-label {\n color: var(--secondary50);\n}\n\n\n</style>","<script>\r\nimport IconButton from \"../common/IconButton.svelte\";\r\nimport StateBindingControl from \"./StateBindingControl.svelte\";\r\nimport {\r\n find, map, keys, reduce\r\n} from \"lodash/fp\";\r\nimport { pipe } from \"../common/core\";\r\nimport { EVENT_TYPE_MEMBER_NAME, allHandlers } from \"../common/eventHandlers\";\r\n\r\nexport let event;\r\nexport let onChanged;\r\nexport let onRemoved;\r\n\r\nconst events = allHandlers();\r\n\r\nlet eventType;\r\nlet parameters = [];\r\n\r\n$: {\r\n if(event) {\r\n eventType = event[EVENT_TYPE_MEMBER_NAME];\r\n parameters = pipe(event.parameters, [\r\n keys,\r\n map(k => ({name:k, value:event.parameters[k]}))\r\n ]);\r\n } else {\r\n eventType = \"\";\r\n parameters = [];\r\n }\r\n}\r\n\r\nconst eventChanged = (type, parameters) => {\r\n const paramsAsObject = reduce(\r\n (obj, p) => {\r\n obj[p.name] = p.value;\r\n return obj;\r\n }\r\n , {}\r\n )(parameters)\r\n\r\n const ev = {};\r\n ev[EVENT_TYPE_MEMBER_NAME]=type;\r\n ev.parameters = paramsAsObject;\r\n\r\n onChanged(ev);\r\n}\r\n\r\nconst eventTypeChanged = (ev) => {\r\n const eType = find(e => e.name === ev.target.value)(events);\r\n const emptyParameters = map(p => ({name:p, value:\"\"}))(eType.parameters);\r\n eventChanged(eType.name, emptyParameters);\r\n}\r\n\r\nconst onParameterChanged = index => val => {\r\n const newparameters = [...parameters];\r\n newparameters[index].value = val;\r\n eventChanged(eventType, newparameters);\r\n}\r\n\r\n</script>\r\n\r\n<div class=\"type-selector-container\">\r\n <select class=\"type-selector uk-select uk-form-small \" value={eventType} on:change={eventTypeChanged}>\r\n {#each events as ev}\r\n <option value={ev.name}>{ev.name}</option>\r\n {/each}\r\n </select>\r\n\r\n <IconButton icon=\"trash\" \r\n size=\"12\" \r\n on:click={onRemoved}/>\r\n\r\n</div>\r\n\r\n{#if parameters}\r\n{#each parameters as p, index}\r\n\r\n<div>\r\n {p.name} \r\n</div>\r\n<StateBindingControl onChanged={onParameterChanged(index)}\r\n value={p.value} />\r\n\r\n{/each}\r\n{/if}\r\n\r\n<style>\r\n\r\n.type-selector-container {\r\n display: flex;\r\n}\r\n\r\n.type-selector {\r\n border-color: var(--primary50);\r\n border-radius: 2px;\r\n width: 50px;\r\n flex: 1 0 auto;\r\n}\r\n\r\n</style>","<script>\r\nimport IconButton from \"../common/IconButton.svelte\";\r\nimport EventSelector from \"./EventSelector.svelte\";\r\nimport {\r\n filter\r\n} from \"lodash/fp\";\r\nimport {EVENT_TYPE_MEMBER_NAME} from \"../common/eventHandlers\";\r\nexport let parentProps;\r\nexport let propDef;\r\nexport let onValueChanged;\r\nexport let onValidate = () => {};\r\n\r\nlet events = [];\r\nlet elementErrors = {};\r\n\r\n$: {\r\n events = parentProps[propDef.____name];\r\n}\r\n\r\nconst addHandler = () => {\r\n const newHandler = {parameters:{}};\r\n newHandler[EVENT_TYPE_MEMBER_NAME] = \"\";\r\n events = [...events, newHandler];\r\n onValueChanged(events);\r\n}\r\n\r\nconst onEventHandlerChanged = (oldEvent) => (newEvent) => {\r\n const indexOfOldEvent = events.indexOf(oldEvent);\r\n const newEvents = [...events];\r\n newEvents.splice(\r\n events.indexOf(oldEvent),\r\n 1,\r\n newEvent);\r\n events = newEvents;\r\n onValueChanged(events);\r\n}\r\n\r\nconst removeHandler = (index) => () => {\r\n events = filter(e => e !== events[index])(events);\r\n onValueChanged(events);\r\n}\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n <div class=\"control-container\">\r\n {#each events as ev, index}\r\n\r\n <div class=\"handler-container\">\r\n <EventSelector onChanged={onEventHandlerChanged(ev)}\r\n onRemoved={removeHandler(index)}\r\n event={ev} />\r\n\r\n </div>\r\n\r\n <div class=\"separator\"></div>\r\n {/each}\r\n\r\n <div class=\"addelement-container\"\r\n on:click={addHandler}>\r\n <IconButton icon=\"plus\" \r\n size=\"12\"/>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<style>\r\n\r\n.addelement-container {\r\n cursor: pointer;\r\n padding: 3px 0px;\r\n text-align: center;\r\n}\r\n\r\n\r\n\r\n.addelement-container:hover {\r\n background-color: var(--primary25);\r\n margin-top: 5px;\r\n}\r\n\r\n\r\n.control-container {\r\n padding-left: 3px;\r\n background: var(--secondary10);\r\n}\r\n\r\n.separator {\r\n width: 60%;\r\n margin: 10px auto;\r\n border-style:solid;\r\n border-width: 1px 0 0 0;\r\n border-color: var(--primary25);\r\n}\r\n\r\n</style>\r\n","<script>\n\nimport Checkbox from \"../common/Checkbox.svelte\";\nimport Textbox from \"../common/Textbox.svelte\";\nimport Dropdown from \"../common/Dropdown.svelte\";\nimport ComponentPropSelector from \"./ComponentPropSelector.svelte\";\nimport PropArraySelector from \"./PropArraySelector.svelte\";\nimport EventListSelector from \"./EventListSelector.svelte\";\nimport StateBindingControl from \"./StateBindingControl.svelte\";\n\nexport let errors = [];\nexport let setProp = () => {};\nexport let fieldHasError =() => {};\nexport let propDef = {};\nexport let props = {};\nexport let disabled;\nexport let index;\nexport let onEditComponent = () => {};\n\n$: isOdd = (index % 2 !== 0);\n\nconst setComponentProp = (props) => {\n setProp(propDef.____name, props);\n}\n\n</script>\n\n\n<div class=\"root\" >\n\n {#if propDef.type === \"component\"}\n\n <div class=\"prop-label\">{propDef.____name}</div>\n <ComponentPropSelector label={propDef.____name}\n props={props[propDef.____name]}\n {disabled}\n onEdit={onEditComponent}\n onComponentChosen={onEditComponent}\n onValueChanged={setComponentProp}/>\n\n {:else if propDef.type === \"array\"}\n\n <div class=\"prop-label\">{propDef.____name}</div>\n <PropArraySelector parentProps={props}\n {propDef}\n onValueChanged={setComponentProp}\n onEditComponentProp={onEditComponent} />\n\n {:else if propDef.type === \"event\"}\n\n <div class=\"prop-label\">{propDef.____name}</div>\n <EventListSelector parentProps={props}\n {propDef}\n onValueChanged={setComponentProp} />\n\n {:else}\n\n <div class=\"prop-label\">{propDef.____name}</div>\n <StateBindingControl value={props[propDef.____name]}\n type={propDef.type}\n options={propDef.options}\n onChanged={v => setProp(propDef.____name, v)}/>\n\n {/if} \n\n</div>\n\n<style>\n\n.root {\n padding: 1rem 1rem 0rem 1rem;\n}\n\n.prop-label {\n font-size: 0.8rem;\n color: var(--secondary100);\n font-weight: bold;\n}\n\n</style>","<script>\n\nimport {\n keys,\n map,\n some,\n includes,\n cloneDeep,\n isEqual,\n sortBy,\n filter,\n difference\n} from \"lodash/fp\";\nimport { pipe } from \"../common/core\";\nimport { \n getComponentInfo ,\n getInstanceProps\n} from \"./pagesParsing/createProps\";\nimport { getExactComponent } from \"./pagesParsing/searchComponents\";\nimport Checkbox from \"../common/Checkbox.svelte\";\nimport Textbox from \"../common/Textbox.svelte\";\nimport Dropdown from \"../common/Dropdown.svelte\";\nimport { validateProps } from \"./pagesParsing/validateProps\";\nimport ComponentPropSelector from \"./ComponentPropSelector.svelte\";\nimport PropControl from \"./PropControl.svelte\";\nimport IconButton from \"../common/IconButton.svelte\";\n\nexport let shouldValidate = true;\nexport let onValidate = () => {};\nexport let componentInfo;\nexport let instanceProps = null;\nexport let onPropsChanged = () => {};\nexport let onEditComponentProp = () => {};\n\nlet errors = [];\nlet props = {};\nlet propsDefinitions = [];\nlet inheritedPropsDefinitions = [];\nlet inheritedExpanded = false;\nlet isInstance = false;\n\nconst isPropInherited = name => \n includes(name)(componentInfo.inheritedProps);\n\n$: {\n if(componentInfo)\n {\n isInstance = !!instanceProps;\n props = isInstance \n ? getInstanceProps(componentInfo, instanceProps)\n : cloneDeep(componentInfo.fullProps);\n\n propsDefinitions = pipe(componentInfo.propsDefinition, [\n keys,\n filter(k => !isPropInherited(k)),\n map(k => ({...componentInfo.propsDefinition[k], ____name:k})),\n sortBy(\"____name\")\n ]);\n\n inheritedPropsDefinitions = pipe(componentInfo.propsDefinition, [\n keys,\n filter(k => isPropInherited(k)),\n map(k => ({...componentInfo.propsDefinition[k], ____name:k})),\n sortBy(\"____name\")\n ]);\n }\n}\n\n\nlet setProp = (name, value) => {\n const newProps = cloneDeep(props);\n\n let finalProps = isInstance ? newProps : cloneDeep(componentInfo.component.props);\n\n if(!isInstance) {\n const nowSet = [];\n for(let p of componentInfo.unsetProps) {\n if(!isEqual(newProps[p])(componentInfo.rootDefaultProps[p])) {\n finalProps[p] = newProps[p];\n nowSet.push(p);\n }\n }\n componentInfo.unsetProps = difference(nowSet)(componentInfo.unsetProps);\n }\n\n newProps[name] = value;\n finalProps[name] = value;\n props = newProps;\n if(validate(finalProps))\n onPropsChanged(finalProps);\n \n}\n \nconst validate = (finalProps) => {\n errors = validateProps(componentInfo.propsDefinition, finalProps, [], false);\n onValidate(errors);\n return errors.length === 0;\n}\n\nconst fieldHasError = (propName) => \n some(e => e.propName === propName)(errors);\n\nconst onEditComponent = (propName) => (arrayIndex, arrayPropName) => {\n onEditComponentProp(propName, arrayIndex, arrayPropName);\n}\n\n</script>\n\n<div class=\"root\">\n\n <form class=\"uk-form-stacked\">\n {#each propsDefinitions as propDef, index}\n \n <PropControl {setProp}\n {fieldHasError}\n {propDef}\n {props}\n {index}\n onEditComponent={onEditComponent(propDef.____name)}\n disabled={false} />\n \n {/each}\n\n {#if inheritedPropsDefinitions.length > 0}\n <div class=\"inherited-title padding\">\n <div>Inherited</div>\n <div>\n <IconButton icon={inheritedExpanded ? \"chevron-down\" : \"chevron-right\"}\n on:click={() => inheritedExpanded = !inheritedExpanded}/>\n </div>\n </div>\n {/if}\n\n {#if inheritedExpanded}\n {#each inheritedPropsDefinitions as propDef, index}\n \n <PropControl {setProp}\n {fieldHasError}\n {propDef}\n {props}\n {index}\n disabled={true} />\n \n {/each}\n {/if}\n </form>\n\n\n \n\n</div>\n\n\n<style>\n\n.root {\n font-size:10pt;\n}\n\n.padding {\n padding: 0 10px;\n}\n\n.inherited-title {\n padding: 1rem 1rem 1rem 1rem;\n display: grid;\n grid-template-columns: [name] 1fr [actions] auto;\n color: var(--secondary100);\n font-size: .9rem;\n font-weight: bold;\n}\n\n.inherited-title > div:nth-child(1) {\n grid-column-start: name;\n color: var(--secondary50);\n}\n\n.inherited-title > div:nth-child(2) {\n grid-column-start: actions;\n color: var(--secondary100);\n}\n\n</style>","export { identity as linear } from '../internal';\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, cubicOut } from '../easing';\nimport { is_function, assign } from '../internal';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\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 }) {\n const o = +getComputedStyle(node).opacity;\n return {\n delay,\n duration,\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","<script>\n\nimport PropsView from \"./PropsView.svelte\";\nimport IconButton from \"../common/IconButton.svelte\";\nimport { getComponentInfo } from \"./pagesParsing/createProps\";\nimport { store } from \"../builderStore\";\nimport { \n cloneDeep,\n isUndefined\n} from \"lodash/fp\";\nimport { fade, slide } from 'svelte/transition';\n\nexport let title = \"\";\nexport let onGoBack = () => {};\nexport let instanceProps = {};\nexport let onPropsChanged = () => {};\n\n\nlet editingSubComponentName;\nlet editingSubComponentProps;\nlet editingSubComponentArrayIndex;\nlet editingSubComponentArrayPropName;\nlet editingSubComponentTitle;\nlet allComponents;\n\nstore.subscribe(s => {\n allComponents = s.allComponents;\n})\n\n$: componentInfo = getComponentInfo(\n allComponents, instanceProps._component);\n\nconst onSubComponentGoBack = () => {\n editingSubComponentName = null;\n editingSubComponentProps = null;\n}\n\nconst onEditComponentProp = (propName, arrayIndex, arrayPropName) => {\n editingSubComponentName = propName;\n editingSubComponentTitle = isUndefined(arrayIndex)\n ? propName\n : `${propName}[${arrayIndex}].${arrayPropName}`;\n editingSubComponentProps = isUndefined(arrayIndex)\n ? instanceProps[propName]\n : instanceProps[propName][arrayIndex][arrayPropName];\n editingSubComponentArrayIndex = arrayIndex;\n editingSubComponentArrayPropName = arrayPropName;\n};\n\n\nconst onSubComponentPropsChanged = (subProps) => {\n const newProps = cloneDeep(instanceProps);\n if(isUndefined(editingSubComponentArrayIndex)) {\n newProps[editingSubComponentName] = subProps;\n } else {\n newProps[editingSubComponentName]\n [editingSubComponentArrayIndex]\n [editingSubComponentArrayPropName] = subProps;\n }\n \n instanceProps = newProps;\n onPropsChanged(newProps);\n}\n\n\nconst propsChanged = newProps => {\n instanceProps = newProps;\n onPropsChanged(newProps);\n}\n\n</script>\n\n<div>\n\n <div class=\"title\">\n <IconButton icon=\"chevron-left\"\n on:click={onGoBack}/>\n <span>{title}</span>\n </div>\n\n {#if editingSubComponentName}\n <div in:slide={{delay: 250, duration: 300}}\n out:fade>\n <svelte:self onPropsChanged={onSubComponentPropsChanged}\n onGoBack={onSubComponentGoBack}\n instanceProps={editingSubComponentProps}\n title={editingSubComponentTitle} />\n </div>\n {:else}\n <PropsView {instanceProps}\n {componentInfo}\n onPropsChanged={propsChanged}\n {onEditComponentProp} />\n {/if}\n \n\n \n\n</div>\n\n<style>\n.title {\n padding:3px;\n background-color: white;\n color: var(--secondary100);\n border-style:solid;\n border-width: 1px 0 0 0;\n border-color: var(--lightslate);\n}\n\n.title > span {\n margin-left: 10px;\n }\n</style>","<script>\n\nimport PropsView from \"./PropsView.svelte\";\nimport { store } from \"../builderStore\";\nimport { isRootComponent } from \"./pagesParsing/searchComponents\";\nimport IconButton from \"../common/IconButton.svelte\";\nimport Textbox from \"../common/Textbox.svelte\";\nimport UIkit from \"uikit\";\nimport { pipe } from \"../common/core\";\nimport {\n getComponentInfo\n} from \"./pagesParsing/createProps\";\nimport Button from \"../common/Button.svelte\";\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport ComponentInstanceEditor from \"./ComponentInstanceEditor.svelte\";\n\nimport { \n cloneDeep, \n join,\n split,\n map,\n keys,\n isUndefined,\n last\n} from \"lodash/fp\";\nimport { assign } from \"lodash\";\n\nlet component;\nlet name = \"\";\nlet description = \"\";\nlet tagsString = \"\";\nlet nameInvalid = \"\";\nlet componentDetailsExpanded = false;\nlet componentInfo;\nlet modalElement\nlet propsValidationErrors = [];\nlet editingComponentInstance;\nlet editingComponentInstancePropName=\"\";\nlet editingComponentArrayIndex;\nlet editingComponentArrayPropName;\nlet editingComponentInstanceTitle;\nlet originalName=\"\";\nlet allComponents;\nlet ignoreStore = false;\n\n$: shortName = last(name.split(\"/\"));\n\nstore.subscribe(s => {\n if(ignoreStore) return;\n component = s.currentFrontEndItem;\n if(!component) return;\n originalName = component.name;\n name = component.name;\n description = component.description;\n tagsString = join(\", \")(component.tags);\n componentInfo = s.currentComponentInfo;\n componentDetailsExpanded = s.currentComponentIsNew;\n allComponents = s.allComponents;\n});\n\nconst save = () => {\n\n ignoreStore = true;\n if(!validate()) {\n ignoreStore = false;\n return;\n }\n\n component.name = originalName || name;\n component.description = description;\n component.tags = pipe(tagsString, [\n split(\",\"),\n map(s => s.trim())\n ]);\n\n store.saveDerivedComponent(component);\n\n ignoreStore = false;\n // now do the rename\n if(name !== originalName) {\n store.renameDerivedComponent(originalName, name);\n }\n}\n\nconst deleteComponent = () => {\n showDialog();\n}\n\nconst confirmDeleteComponent = () => {\n store.deleteDerivedComponent(component.name);\n hideDialog();\n}\n\nconst onPropsValidate = result => {\n propsValidationErrors = result;\n}\n\nconst updateComponent = doChange => {\n const newComponent = cloneDeep(component);\n doChange(newComponent);\n component = newComponent;\n componentInfo = getComponentInfo(allComponents, newComponent);\n}\n\nconst onPropsChanged = newProps => {\n updateComponent(newComponent => \n assign(newComponent.props, newProps));\n \n}\n\nconst validate = () => {\n const fieldInvalid = (field, err) => \n errors[field] = err;\n const fieldValid = field => \n errors[field] && delete errors[field];\n\n if(!name) nameInvalid = \"component name i not supplied\";\n else nameInvalid = \"\";\n\n return (!nameInvalid && propsValidationErrors.length === 0);\n}\n\nconst hideDialog = () => {\n UIkit.modal(modalElement).hide();\n}\n\nconst showDialog = () => {\n UIkit.modal(modalElement).show();\n}\n\nconst onEditComponentProp = (propName, arrayIndex, arrayPropName) => {\n\n editingComponentInstance = isUndefined(arrayIndex) \n ? component.props[propName]\n : component.props[propName][arrayIndex][arrayPropName];\n editingComponentInstancePropName = propName;\n editingComponentInstanceTitle = isUndefined(arrayIndex)\n ? propName\n : `${propName}[${arrayIndex}].${arrayPropName}`;\n \n editingComponentArrayIndex = arrayIndex;\n editingComponentArrayPropName = arrayPropName;\n}\n\nconst componentInstanceCancelEdit = () => {\n editingComponentInstance = null;\n editingComponentInstancePropName = \"\";\n}\n\nconst componentInstancePropsChanged = (instanceProps) => {\n updateComponent(newComponent => {\n if(isUndefined(editingComponentArrayIndex)) {\n newComponent.props[editingComponentInstancePropName] = instanceProps;\n } else {\n newComponent.props[editingComponentInstancePropName]\n [editingComponentArrayIndex]\n [editingComponentArrayPropName] = instanceProps;\n }\n });\n}\n\n</script>\n\n<div class=\"root\">\n\n <div class=\"title\">\n <div>{shortName}</div>\n <div>\n <IconButton icon=\"save\" \n on:click={save} \n color=\"var(--secondary100)\"\n hoverColor=\"var(--primary100)\"/>\n <IconButton icon=\"trash\" \n on:click={deleteComponent} \n color=\"var(--secondary100)\"\n hoverColor=\"var(--primary100)\"/>\n </div>\n </div>\n\n {#if editingComponentInstance}\n <div class=\"component-props-container\">\n <ComponentInstanceEditor onGoBack={componentInstanceCancelEdit}\n title={editingComponentInstanceTitle}\n instanceProps={editingComponentInstance}\n onPropsChanged={componentInstancePropsChanged}/>\n </div>\n {:else}\n <div class=\"component-props-container\">\n\n <div class=\"section-header padding\" on:click={() => componentDetailsExpanded = !componentDetailsExpanded}>\n <span style=\"margin-right: 7px\">Component Details</span>\n <IconButton icon={componentDetailsExpanded ? \"chevron-down\" : \"chevron-right\"}/>\n </div>\n\n {#if componentDetailsExpanded}\n <div class=\"padding\">\n <div class=\"info-text\">\n <Textbox label=\"Name\" \n infoText=\"use forward slash to store in subfolders\"\n text={name}\n on:change={ev => name = ev.target.value}\n hasError={!!nameInvalid}/>\n <Textbox label=\"Description\"\n on:change={ev => description = ev.target.value}\n text={description}/>\n <Textbox label=\"Tags\" \n infoText=\"comma separated\"\n on:change={ev => tagsString = ev.target.value}\n text={tagsString}/>\n </div> \n </div>\n {/if}\n\n <div class=\"section-header padding\">\n <span>Properties</span>\n </div>\n\n \n <PropsView onValidate={onPropsValidate}\n {componentInfo}\n {onPropsChanged}\n {onEditComponentProp}/>\n \n\n </div>\n {/if}\n\n</div>\n\n\n<div bind:this={modalElement} uk-modal>\n <div class=\"uk-modal-dialog\">\n\n <div class=\"uk-modal-header\">\n Delete {name} ? \n </div>\n\n <div class=\"uk-modal-body\">\n Are you sure you want to delete this component ?\n </div>\n\n <div class=\"uk-modal-footer\">\n <ButtonGroup>\n <Button grouped \n on:click={confirmDeleteComponent}>\n OK\n </Button>\n <Button grouped \n on:click={hideDialog} \n color=\"secondary\" >\n Cancel\n </Button>\n </ButtonGroup>\n </div>\n\n </div>\n\n</div>\n\n<style>\n\n.root {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n.padding {\n padding: 1rem 1rem 0rem 1rem;\n}\n\n.info-text {\n color: var(--secondary100);\n font-size: .8rem !important;\n font-weight: bold;\n}\n\n.title {\n padding: 2rem 1rem 1rem 1rem;\n display: grid;\n grid-template-columns: [name] 1fr [actions] auto;\n color: var(--secondary100);\n font-size: .9rem;\n font-weight: bold;\n}\n\n.title > div:nth-child(1) {\n grid-column-start: name;\n color: var(--secondary100);\n}\n\n.title > div:nth-child(2) {\n grid-column-start: actions;\n}\n\n.section-header {\n display: grid;\n grid-template-columns: [name] 1fr [actions] auto;\n color: var(--secondary50);\n font-size: .9rem;\n font-weight: bold;\n vertical-align: middle;\n}\n\n.component-props-container {\n flex: 1 1 auto;\n overflow-y: auto;\n}\n</style>","<script>\nimport UIkit from \"uikit\";\n\nexport let isOpen = false;\nexport let onClosed = () => {};\nexport let id = \"\";\n\nlet ukModal;\nlet listenerAdded = false;\n\n$: if(ukModal && !listenerAdded) {\n listenerAdded = true;\n ukModal.addEventListener(\"hide\", onClosed);\n}\n\n$: {\n if(ukModal) {\n if(isOpen) {\n UIkit.modal(ukModal).show();\n } else {\n UIkit.modal(ukModal).hide();\n }\n }\n}\n\n</script>\n\n<div bind:this={ukModal} uk-modal {id}>\n <div class=\"uk-modal-dialog uk-modal-body\" uk-overflow-auto>\n <slot />\n </div>\n</div>\n\n\n<style>\n\n.uk-modal-dialog {\n border-radius: .3rem;\n}\n\n</style>","import { splitName } from \"./splitRootComponentName\";\nimport {\n find, filter, cloneDeep, isPlainObject,\n isArray\n} from \"lodash/fp\";\nimport { isRootComponent } from \"./searchComponents\";\n\nexport const libraryDependencies = (allComponents, lib) => {\n\n const componentDependsOnLibrary = comp => {\n if(isRootComponent(comp)) {\n const {libName} = splitName(component.name);\n return (libName === lib);\n }\n return componentDependsOnLibrary(\n find(c => c.name === comp.inherits)(allComponents)\n );\n }\n\n return filter(c => !isRootComponent(c) \n && componentDependsOnLibrary(c))(\n allComponents\n );\n}\n\nexport const componentDependencies = (pages, allComponents, dependsOn) => {\n\n \n pages = cloneDeep(pages);\n allComponents = cloneDeep(allComponents);\n const dependantComponents = [];\n const dependantPages = [];\n\n const traverseProps = (props) => {\n \n if(props._component && props._component === dependsOn.name) {\n return true;\n } \n\n for(let propName in props) {\n const prop = props[propName];\n if(isPlainObject(prop) && prop._component) {\n if(traverseProps(prop)) return true;\n }\n if(isArray(prop)) {\n for(let element of prop) {\n if(traverseProps(element)) return true;\n }\n }\n }\n\n return false;\n }\n\n\n for(let component of allComponents) {\n \n if(isRootComponent(component)) {\n continue;\n }\n\n if(component.name === dependsOn.name) {\n continue;\n }\n\n if(component.inherits === dependsOn.name) {\n dependantComponents.push(component);\n continue;\n }\n \n if(traverseProps(component.props)) {\n dependantComponents.push(component);\n }\n\n }\n\n for(let pageName in pages) {\n const page = pages[pageName];\n if(page.appBody === dependsOn.name) {\n dependantPages.push(pageName);\n }\n }\n\n return {dependantComponents, dependantPages};\n\n}","<script>\r\nimport { store } from \"../builderStore\";\r\nimport { splitName } from \"./pagesParsing/splitRootComponentName\";\r\nimport {\r\n getIndexNodes, getRecordNodes, getIndexSchema, pipe\r\n} from \"../common/core\";\r\nimport {\r\n map, some, filter\r\n} from \"lodash/fp\";\r\nimport Button from \"../common/Button.svelte\";\r\nimport { componentDependencies } from \"./pagesParsing/findDependencies\";\r\nimport { rename } from \"./pagesParsing/renameComponent\";\r\nimport { getExactComponent } from \"./pagesParsing/searchComponents\";\r\nexport let generator;\r\nexport let onConfirmGenerate;\r\n\r\nlet libName;\r\nlet componentName;\r\nlet libs;\r\nlet existingComponents;\r\nlet _generator;\r\nlet components;\r\nlet generateParameter;\r\nlet allGeneratedComponents;\r\nlet selectedComponents = [];\r\n\r\nstore.subscribe(s => {\r\n libs = s.generatorLibraries;\r\n generateParameter = {\r\n indexes: getIndexNodes(s.hierarchy),\r\n records: getRecordNodes(s.hierarchy),\r\n helpers: {\r\n indexSchema: getIndexSchema(s.hierarchy)\r\n }\r\n }\r\n existingComponents = s.allComponents;\r\n});\r\n\r\nconst componentExists = name => \r\n getExactComponent(existingComponents, name);\r\n\r\nconst componentsWithDependencies = () => {\r\n \r\n const cmp = map(c => {\r\n const dependants = componentDependencies(\r\n {}, [...selectedComponents, ...existingComponents], c);\r\n const exists = componentExists(c.name);\r\n return {\r\n dependants: dependants.dependantComponents, \r\n component:c,\r\n error: exists ? \"a component by this name already exists\" : \"\"\r\n };\r\n })(allGeneratedComponents); \r\n components = cmp;\r\n} \r\n\r\n$ : {\r\n if(generator && generator !== _generator) {\r\n _generator = generator;\r\n\r\n const sp = splitName(generator.name);\r\n libName = sp.libName;\r\n componentName = sp.componentName;\r\n\r\n allGeneratedComponents = libs[libName][componentName](generateParameter);\r\n selectedComponents = \r\n filter(c => !componentExists(c.name))(allGeneratedComponents);\r\n componentsWithDependencies();\r\n }\r\n}\r\n\r\n\r\nconst onSelectedChanged = component => ev => {\r\n const newselectedComponents = filter(c => c.name !== component.component.name)(\r\n selectedComponents);\r\n if(ev.target.checked) {\r\n newselectedComponents.push(component.component); \r\n }\r\n\r\n selectedComponents = newselectedComponents;\r\n componentsWithDependencies();\r\n}\r\n\r\nconst onNameChanged = component => ev => {\r\n const newname = ev.target.value;\r\n const oldname = component.component.name;\r\n const result = rename({}, allGeneratedComponents, oldname, newname);\r\n component.error = result.error || \"\";\r\n allGeneratedComponents = [...result.allComponents];\r\n selectedComponents = map(s => {\r\n if(s.name === oldname) s.name = newname;\r\n return s;\r\n })(selectedComponents);\r\n componentsWithDependencies();\r\n}\r\n\r\nconst isComponentSelected = component => \r\n some(c => c.name === component.component.name)(selectedComponents);\r\n\r\n</script>\r\n\r\n{#each components as c}\r\n\r\n<div class=\"component\">\r\n\r\n <div class=\"uk-inline\">\r\n <input type=\"checkbox\" \r\n disabled={c.dependants.length > 0} \r\n class=\"uk-checkbox\" \r\n checked={isComponentSelected(c)}\r\n on:change={onSelectedChanged(c)}>\r\n <input type=\"text\" \r\n value={c.component.name} \r\n on:change={onNameChanged(c)}\r\n class=\"uk-input title {c.error ? 'uk-form-danger' : ''}\">\r\n {#if isComponentSelected(c)}\r\n <span class=\"error\">{c.error}</span>\r\n {/if}\r\n </div>\r\n\r\n <div class=\"description\">\r\n {c.component.description}\r\n </div>\r\n\r\n</div>\r\n\r\n{/each}\r\n\r\n<div class=\"button-container\">\r\n <Button on:click={() => onConfirmGenerate(selectedComponents)}>Add Components</Button>\r\n</div>\r\n\r\n\r\n\r\n\r\n<style>\r\n\r\n.component {\r\n padding: 5px 0;\r\n}\r\n\r\n.component .title {\r\n width: 300px\r\n}\r\n\r\n.component > .description {\r\n font-size: 0.8em;\r\n color: var(--secondary75);\r\n}\r\n\r\n.button-container {\r\n text-align: right;\r\n margin-top: 20px;\r\n}\r\n\r\n.error {\r\n font-size: 10pt;\r\n color: red;\r\n}\r\n\r\n</style>\r\n","<script>\n\nimport ComponentSelector from \"./ComponentSelector.svelte\";\nimport { store } from \"../builderStore\";\nimport PropsView from \"./PropsView.svelte\";\nimport Textbox from \"../common/Textbox.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport { pipe } from \"../common/core\";\nimport UIkit from \"uikit\";\nimport {\n getNewComponentInfo\n} from \"./pagesParsing/createProps\";\nimport { isRootComponent } from \"./pagesParsing/searchComponents\";\nimport GeneratedComponents from \"./GeneratedComponents.svelte\";\n\nimport { \n cloneDeep, \n join,\n split,\n map,\n keys,\n isUndefined\n} from \"lodash/fp\";\nimport { assign } from \"lodash\";\n\n\n\nlet componentSelectorModal;\nlet generatorOptionsModal;\nlet allComponents;\nlet generator;\n\nstore.subscribe(s => {\n allComponents = s.allComponents;\n})\n\nexport const close = () => {\n UIkit.modal(componentSelectorModal).hide();\n if(generatorOptionsModal) UIkit.modal(generatorOptionsModal).hide();\n generator = null;\n}\n\nexport const show = () => {\n UIkit.modal(componentSelectorModal).show();\n}\n\nconst onComponentChosen = (c) => {\n store.createDerivedComponent(c.name);\n close();\n}\n\nconst onGeneratorChosen = (g) => {\n generator = g;\n UIkit.modal(componentSelectorModal).hide();\n UIkit.modal(generatorOptionsModal).show();\n}\n\nconst onConfirmGenerate = (components) => {\n store.createGeneratedComponents(components);\n UIkit.modal(generatorOptionsModal).hide();\n generator = null;\n}\n\n</script>\n\n<div bind:this={componentSelectorModal} id=\"new-component-modal\" uk-modal>\n <div class=\"uk-modal-dialog\" uk-overflow-auto>\n\n <div class=\"uk-modal-header\">\n <h1>New Component</h1>\n </div>\n\n <div class=\"uk-modal-body\">\n <ComponentSelector onComponentChosen={onComponentChosen}\n onGeneratorChosen={onGeneratorChosen}\n allowGenerators={true} />\n </div>\n </div>\n</div>\n\n\n<div bind:this={generatorOptionsModal} uk-modal>\n <div class=\"uk-modal-dialog\" uk-overflow-auto>\n\n {#if generator}\n \n <div class=\"uk-modal-header\">\n <h1>Generator - {generator ? generator.name : \"\"}</h1>\n </div>\n\n <div class=\"uk-modal-body\">\n <GeneratedComponents generator={generator}\n onConfirmGenerate={onConfirmGenerate} />\n </div>\n\n {/if}\n </div>\n</div>\n\n\n<style>\nh1 {\n font-size:1.2em;\n}\n\n</style>","<script>\nimport { store } from \"../builderStore\";\nimport { makeLibraryUrl } from \"../builderStore/loadComponentLibraries\";\nimport {\n last, split, map, join\n} from \"lodash/fp\";\nimport { pipe } from \"../common/core\";\nimport { splitName } from \"./pagesParsing/splitRootComponentName\"\nimport { afterUpdate } from 'svelte';\nimport { getRootComponent } from \"./pagesParsing/getRootComponent\";\nimport { buildPropsHierarchy } from \"./pagesParsing/buildPropsHierarchy\";\n\n\nlet hasComponent=false;\nlet stylesheetLinks = \"\";\nlet appDefinition = {};\n\nstore.subscribe(s => {\n hasComponent = !!s.currentFrontEndItem;\n \n stylesheetLinks = pipe(s.pages.stylesheets, [\n map(s => `<link rel=\"stylesheet\" href=\"${s}\"/>`),\n join(\"\\n\")\n ]);\n appDefinition = {\n componentLibraries: s.loadLibraryUrls(),\n props: buildPropsHierarchy(s.allComponents, s.currentFrontEndItem)\n };\n\n});\n\n\n\n</script>\n\n\n<div class=\"component-container\">\n {#if hasComponent}\n <iframe style=\"height: 100%; width: 100%\"\n title=\"componentPreview\"\n srcdoc={\n`<html>\n \n<head>\n ${stylesheetLinks}\n <script>\n window[\"##BUDIBASE_APPDEFINITION##\"] = ${JSON.stringify(appDefinition)};\n import('./budibase-client.esm.mjs')\n .then(module => {\n module.loadBudibase();\n }) \n </script>\n <style>\n\n body {\n box-sizing: border-box;\n padding: 20px;\n }\n </style>\n</head>\n<body>\n</body>\n</html>`}>\n </iframe>\n {/if}\n</div>\n\n\n<style>\n\n.component-container {\n grid-row-start: middle;\n grid-column-start: middle;\n position: relative;\n overflow: hidden;\n padding-top: 56.25%;\n margin: auto;\n}\n\n.component-container iframe {\n border: 0;\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n}\n\n</style>","<script>\n\nimport { store } from \"../builderStore\";\nimport Textbox from \"../common/Textbox.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport IconButton from \"../common/IconButton.svelte\";\nimport { libraryDependencies } from \"./pagesParsing/findDependencies\";\nimport UIkit from \"uikit\";\n\nlet addNewLib = \"\";\nlet addNewStylesheet = \"\";\nlet addComponentError = \"\";\nlet modalElement;\nlet allComponents;\n\nstore.subscribe(s => {\n allComponents = s.allComponents;\n})\n\nconst removeLibrary = lib => {\n const dependencies = libraryDependencies(allComponents, lib);\n if(dependencies.length > 0) return;\n store.removeComponentLibrary(lib);\n}\n\nconst addLib = () => {\n store.addComponentLibrary(addNewLib)\n .then(() => {\n addNewLib = \"\";\n }); \n}\n\nconst removeStylesheet = stylesheet => {\n store.removeStylesheet(stylesheet);\n}\n\nconst addStylesheet = () => {\n if(addNewStylesheet)\n store.addStylesheet(addNewStylesheet);\n}\n\nexport const close = () => {\n UIkit.modal(modalElement).hide();\n}\n\nexport const show = () => {\n UIkit.modal(modalElement).show();\n}\n\n</script>\n\n<div bind:this={modalElement} id=\"new-component-modal\" uk-modal>\n <div class=\"uk-modal-dialog\">\n\n <div class=\"uk-modal-header header\">\n <div>Settings</div>\n <div>\n <IconButton icon=\"x\"\n on:click={close}/>\n </div>\n </div>\n\n <div class=\"uk-modal-body uk-form-horizontal\">\n\n <div class=\"section-container\">\n <p>Component Libraries\n <span>\n <input bind:value={addNewLib} /> \n <Button color=\"primary-outline\"\n on:click={addLib}>Add</Button>\n </span>\n </p>\n {#each $store.pages.componentLibraries as lib}\n <div>\n <span class=\"row-text\">{lib}</span>\n <IconButton icon=\"x\" \n on:click={() => removeLibrary(lib)}/>\n </div>\n {/each}\n </div>\n \n\n <div class=\"section-container\">\n <p>Stylesheets\n <span>\n <input bind:value={addNewStylesheet} /> \n <Button color=\"primary-outline\"\n on:click={addStylesheet} >Add</Button>\n </span>\n </p>\n {#each $store.pages.stylesheets as stylesheet}\n <div>\n <span class=\"row-text\">{stylesheet}</span>\n <IconButton icon=\"x\" \n on:click={() => removeStylesheet(stylesheet)}/>\n </div>\n {/each}\n </div>\n\n \n </div>\n </div>\n</div>\n\n<style>\n\n.section-container {\n padding: 15px;\n border-style: dotted;\n border-width: 1px;\n border-color: var(--lightslate);\n border-radius: 2px;\n}\n\n.section-container:nth-child(1) {\n margin-bottom: 15px;\n}\n\n.row-text {\n margin-right: 15px;\n color: var(--primary100);\n}\n\ninput {\n margin-right: 15px;\n}\n\np > span {\n margin-left: 30px;\n}\n\n.header {\n display: grid;\n grid-template-columns: [title] 1fr [icon] auto;\n}\n\n.header > div:nth-child(1) {\n grid-column-start: title;\n}\n\n.header > div:nth-child(2) {\n grid-column-start: icon;\n}\n\n</style>","<script>\n\nimport Textbox from \"../common/Textbox.svelte\";\nimport Dropdown from \"../common/Dropdown.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport { store } from \"../builderStore\";\nimport { isRootComponent } from \"./pagesParsing/searchComponents\";\nimport { pipe } from \"../common/core\";\nimport {\n filter, find, concat\n} from \"lodash/fp\";\n\nlet entryComponent;\nlet title = \"\";\nlet components = [];\nlet page={};\nconst notSeletedComponent = {name:\"(none selected)\"};\n\nstore.subscribe(s => {\n page = s.pages[s.currentPageName];\n if(!page) return;\n title = page.index.title;\n components = pipe(s.allComponents, [\n filter(s => !isRootComponent(s)),\n concat([notSeletedComponent])\n ]);\n entryComponent = find(c => c.name === page.appBody)(components);\n if(!entryComponent) entryComponent = notSeletedComponent;\n});\n\nconst save = () => {\n if(!title || !entryComponent || entryComponent === notSeletedComponent) return;\n const page = {\n index: {\n title\n },\n appBody: entryComponent.name,\n }\n store.savePage(page);\n}\n\n</script>\n\n<div class=\"root\">\n\n <h3>{$store.currentPageName}</h3>\n\n <form class=\"uk-form-horizontal\">\n <Textbox bind:text={title} label=\"Title\" hasError={!title}/>\n <div class=\"help-text\">The title of your page, displayed in the bowser tab</div>\n <Dropdown label=\"App Entry Component\"\n options={components}\n bind:selected={entryComponent}\n textMember={(v) => v.name} />\n\n <div class=\"help-text\">The component that will be loaded into the body of the page</div>\n <div style=\"margin-top: 20px\"></div>\n <Button on:click={save}>Save</Button>\n </form>\n\n</div>\n\n<style>\n.root {\n padding: 15px;\n}\n.help-text {\n color: var(--slate);\n font-size: 10pt;\n}\n</style>","<script>\n\nimport ComponentsHierarchy from \"./ComponentsHierarchy.svelte\";\nimport PagesList from \"./PagesList.svelte\"\nimport EditComponent from \"./EditComponent.svelte\";\nimport { store } from \"../builderStore\";\nimport getIcon from \"../common/icon\";\nimport { isComponent } from \"./pagesParsing/searchComponents\";\nimport IconButton from \"../common/IconButton.svelte\";\nimport Modal from \"../common/Modal.svelte\";\nimport NewComponent from \"./NewComponent.svelte\";\nimport CurrentItemPreview from \"./CurrentItemPreview.svelte\";\nimport SettingsView from \"./SettingsView.svelte\";\nimport PageView from \"./PageView.svelte\";\n\nlet newComponentPicker; \nconst newComponent = () => {\n newComponentPicker.show();\n}\n\nlet settingsView;\nconst settings = () => {\n settingsView.show();\n}\n\n</script>\n\n<div class=\"root\">\n \n <div class=\"ui-nav\">\n\n <div class=\"components-list-container\">\n <div class=\"nav-group-header\">\n <div>{@html getIcon(\"sidebar\",\"18\")}</div>\n <span class=\"components-nav-header\">Components</span>\n <div>\n <IconButton icon=\"settings\" \n size=\"14px\"\n on:click={settings}/>\n <IconButton icon=\"plus\" \n on:click={newComponent}/>\n </div>\n </div>\n <div class=\"nav-items-container\">\n <ComponentsHierarchy components={$store.derivedComponents}/>\n </div>\n </div>\n\n <div class=\"pages-list-container\">\n <div class=\"nav-group-header\">\n <div>{@html getIcon(\"grid\",\"18\")}</div>\n <span>Pages</span>\n </div>\n <div class=\"nav-items-container\">\n <PagesList />\n </div>\n </div>\n\n </div>\n\n <div>\n {#if $store.currentFrontEndType === \"component\"}\n <CurrentItemPreview />\n {:else if $store.currentFrontEndType === \"page\"}\n <PageView />\n {/if} \n </div>\n\n {#if $store.currentFrontEndType === \"component\"}\n <div class=\"properties-pane\">\n <EditComponent />\n </div>\n {/if}\n\n</div>\n\n\n<NewComponent bind:this={newComponentPicker}/>\n<SettingsView bind:this={settingsView} />\n\n\n<style>\n\n.root {\n display: grid;\n grid-template-columns: [uiNav] 250px [preview] auto [properties] 300px;\n height: 100%;\n width: 100%;\n overflow-y: auto;\n}\n\n.ui-nav {\n grid-column-start: uiNav;\n background-color: var(--secondary5);\n height: 100%;\n}\n\n.properties-pane {\n grid-column-start: properties;\n background-color: var(--secondary5);\n height: 100%;\n overflow-y: hidden;\n}\n\n.pages-list-container {\n padding-top: 2rem;\n}\n\n.components-nav-header {\n font-size: .9rem;\n}\n\n.nav-group-header {\n font-size: .9rem;\n padding-left: 1rem;\n}\n\n.nav-items-container {\n padding: 1rem 1rem 0rem 1rem;\n}\n\n.nav-group-header {\n display:grid;\n grid-template-columns: [icon] auto [title] 1fr [button] auto;\n padding: 2rem 1rem 0rem 1rem;\n font-size: .9rem;\n font-weight: bold;\n}\n\n.nav-group-header>div:nth-child(1) {\n padding: 0rem .5rem 0rem 0rem;\n vertical-align: bottom;\n grid-column-start: icon;\n margin-right: 5px;\n}\n\n.nav-group-header>span:nth-child(2) {\n margin-left:5px;\n vertical-align: bottom;\n grid-column-start: title;\n margin-top:auto;\n}\n\n.nav-group-header>div:nth-child(3) {\n vertical-align: bottom;\n grid-column-start: button;\n cursor: pointer;\n color: var(--primary75);\n}\n\n.nav-group-header>div:nth-child(3):hover {\n color: var(--primary75); \n}\n\n</style>","<script>\n\nimport {store} from \"../builderStore\";\nimport {cloneDeep} from \"lodash/fp\";\nimport getIcon from \"../common/icon\";\nexport let level = 0;\nexport let node;\nexport let type;\n\nlet navActive = \"\";\n$:icon = type===\"index\" ? \"list\" : \"file\";\n\nstore.subscribe(s => {\n if(s.currentNode)\n navActive = (s.activeNav === \"database\" && node.nodeId === s.currentNode.nodeId \n ? \"active\" : \"\")\n});\n\n</script>\n\n<div class=\"root\">\n <div class=\"title {navActive}\" on:click={() => store.selectExistingNode(node.nodeId)} style=\"padding-left: {20 + (level * 20)}px\">\n {@html getIcon(icon, 12)} <span style=\"margin-left: 1rem\">{node.name}</span>\n </div>\n {#if node.children}\n {#each node.children as child}\n <svelte:self node={child} \n level={level+1}\n type=\"record\"/>\n {/each}\n {/if}\n {#if node.indexes}\n {#each node.indexes as index}\n <svelte:self node={index} \n level={level+1}\n type=\"index\"/>\n {/each}\n {/if}\n</div>\n\n\n<style>\n\n.root { \n display: block;\n font-size: .9rem;\n width: 100%;\n cursor: pointer;\n color: var(--secondary50);\n font-weight: 500;\n}\n\n.title {\n padding-top: .5rem;\n padding-right: .5rem;\n}\n\n.title:hover {\n background-color: var(--secondary10);\n}\n\n.active {\n background-color: var(--primary10);\n}\n\n</style>","<script>\n\nimport getIcon from \"./icon\";\nexport let iconName;\nexport let actions = []; // [ {label: \"Action Name\", onclick: () => {...} } ]\nlet isDroppedDown = false;\n\n</script>\n\n\n<div class=\"root\" on:click={() => isDroppedDown = !isDroppedDown}>\n {@html getIcon(iconName)}\n \n <div class=\"dropdown-background\" on:click|stopPropagation={() => isDroppedDown = false} style=\"display: {isDroppedDown ? 'block' : 'none'}\"></div>\n\n <div class=\"dropdown-content\" style=\"display: {isDroppedDown ? 'inline-block' : 'none'}\">\n {#each actions as action}\n <div class=\"action-row\" on:click={action.onclick}>\n {action.label}\n </div>\n {/each}\n </div>\n \n</div>\n\n\n<style>\n\n.dropdown-background {\n position: fixed;\n top:0;\n left:0;\n width:100vw;\n height:100vh;\n}\n\n.root {\n cursor: pointer;\n z-index: 1;\n}\n\n.dropdown-content {\n position: absolute;\n background-color: var(--white);\n min-width: 160px;\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n z-index: 1;\n font-weight: normal;\n border-style: solid;\n border-width: 1px;\n border-color: var(--secondary10);\n}\n\n.dropdown-content:not(:focus) {\n display: none;\n}\n\n.action-row {\n padding: 7px 10px;\n cursor:pointer;\n}\n\n.action-row:hover {\n background-color: var(--primary100);\n color:var(--white);\n}\n\n</style>","<script>\n\nimport {store} from \"../builderStore\";\nimport getIcon from \"../common/icon\";\n\nexport let name = \"\";\nexport let label = \"\";\n\nlet navActive = \"\";\n\nstore.subscribe(db => {\n navActive = (db.activeNav === name ? \"active\" : \"\")\n});\n\nconst setActive = () => \n store.setActiveNav(name);\n\n</script>\n\n<div class=\"nav-item {navActive}\" on:click={setActive}>\n {label}\n</div>\n\n\n<style>\n\n.nav-item {\n padding: 1.5rem 1rem 0rem 1rem;\n font-size: .9rem;\n font-weight: bold;\n cursor: pointer;\n flex: 0 0 auto;\n}\n\n.nav-item:hover {\n background-color: var(--primary10);\n}\n\n.active {\n background-color: var(--primary10);\n}\n\n</style>","<script>\n\nimport { store } from \"../builderStore\";\nimport HierarchyRow from \"./HierarchyRow.svelte\";\nimport DropdownButton from \"../common/DropdownButton.svelte\";\nimport {hierarchy as hierarchyFunctions} from \"../../../core/src\";\nimport NavItem from \"./NavItem.svelte\";\nimport getIcon from \"../common/icon\";\n\n\nconst defaultNewChildActions = [\n {\n label:\"New Root Index\", \n onclick: store.newRootIndex\n }, \n {\n label:\"New Root Record\", \n onclick: store.newRootRecord\n }\n];\n\nlet newChildActions = defaultNewChildActions;\n\nconst setActiveNav = (name) => () => {\n store.setActiveNav(name);\n}\n\n\nstore.subscribe(db => {\n if(!db.currentNode || hierarchyFunctions.isIndex(db.currentNode)) {\n newChildActions = defaultNewChildActions;\n } else {\n newChildActions = [\n {label:\"New Root Record\", \n onclick: store.newRootRecord},\n {label: `New Child Record of ${db.currentNode.name}`, \n onclick: store.newChildRecord},\n {label:\"New Root Index\", \n onclick: store.newRootIndex},\n {label: `New Index on ${db.currentNode.name}`, \n onclick: store.newChildIndex}\n ];\n }\n});\n\n</script>\n\n\n<div class=\"items-root\">\n <div class=\"hierarchy\">\n <div class=\"components-list-container\">\n <div class=\"nav-group-header\">\n <div>{@html getIcon(\"database\",\"18\")}</div>\n <div class=\"hierarchy-title\">Database</div>\n <DropdownButton iconName=\"plus\" actions={newChildActions} />\n </div>\n </div>\n\n <div class=\"hierarchy-items-container\">\n {#each $store.hierarchy.children as record}\n <HierarchyRow node={record}\n type=\"record\" />\n {/each}\n\n {#each $store.hierarchy.indexes as index}\n <HierarchyRow node={index}\n type=\"index\" />\n {/each}\n </div>\n </div>\n\n <NavItem name=\"actions\" label=\"Actions & Triggers\"/>\n <NavItem name=\"access levels\" label=\"User Levels\"/>\n\n</div>\n\n\n<style>\n\n\n.items-root {\n display: flex;\n flex-direction: column;\n max-height: 100%;\n height: 100%;\n background-color: var(--secondary5);\n}\n\n.nav-group-header {\n display:grid;\n grid-template-columns: [icon] auto [title] 1fr [button] auto;\n padding: 2rem 1rem 0rem 1rem;\n font-size: .9rem;\n font-weight: bold;\n}\n\n.nav-group-header>div:nth-child(1) {\n padding: 0rem .7rem 0rem 0rem;\n vertical-align: bottom;\n grid-column-start: icon;\n margin-right: 5px;\n}\n\n.nav-group-header>div:nth-child(2) {\n margin-left:5px;\n vertical-align: bottom;\n grid-column-start: title;\n margin-top:auto;\n}\n\n.nav-group-header>div:nth-child(3) {\n vertical-align: bottom;\n grid-column-start: button;\n cursor: pointer;\n color: var(--primary75);\n}\n\n.nav-group-header>div:nth-child(3):hover {\n color: var(--primary75); \n}\n\n.hierarchy-title {\n flex: auto 1 1;\n}\n\n\n.hierarchy {\n display:flex;\n flex-direction: column;\n flex: 1 0 auto;\n height: 100px;\n}\n\n.hierarchy-items-container {\n flex: 1 1 auto;\n overflow-y:auto;\n}\n\n\n</style>","<script>\n\nexport let value;\nexport let label;\n\nconst inputChanged = ev => {\n try {\n value = Number(ev.target.value);\n } catch(_) {\n value = null;\n }\n}\n\nlet numberText = value === null || value === undefined\n ? \"\" : value.toString();\n\n\n</script>\n\n<div class=\"uk-margin\">\n <label class=\"uk-form-label\">{label}</label>\n <div class=\"uk-form-controls\">\n <input class=\"uk-input\" value={value} on:change={inputChanged} >\n </div>\n</div>\n\n","<script>\nimport {join} from \"lodash/fp\";\n\nexport let values;\nexport let label;\n\nconst inputChanged = ev => {\n try {\n values = ev.target.value.split(\"\\n\");\n } catch(_) {\n values = [];\n }\n}\n\n$: valuesText = join(\"\\n\")(values);\n\n\n</script>\n\n\n<div class=\"uk-margin\">\n <label class=\"uk-form-label\">{label}</label>\n <div class=\"uk-form-controls\">\n <textarea value={valuesText} on:change={inputChanged} ></textarea>\n </div>\n</div>\n\n<style>\n\ntextarea {\n width:300px;\n height:200px;\n}\n\n</style>","<script>\nexport let errors = [];\n\n$:hasErrors = errors.length > 0;\n</script>\n\n{#if hasErrors}\n<div class=\"error-container\">\n {#each errors as error}\n <div class=\"error-row\">{error.field ? `${error.field}: ` : \"\"}{error.error}</div>\n {/each}\n</div>\n{/if}\n\n<style>\n\n.error-container {\n padding:10px;\n border-style: solid;\n border-color: var(--deletion100);\n border-radius: var(--borderradiusall);\n background: var(--deletion75);\n}\n\n.error-row {\n padding: 5px 0px;\n}\n\n</style>","/* flatpickr v4.6.2, @license MIT */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.flatpickr = factory());\n}(this, function () { 'use strict';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation. All rights reserved.\r\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n this file except in compliance with the License. You may obtain a copy of the\r\n License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n See the Apache Version 2.0 License for specific language governing permissions\r\n and limitations under the License.\r\n ***************************************************************************** */\r\n\r\n 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 };\n\n var HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n ];\n var defaults = {\n _disable: [],\n _enable: [],\n allowInput: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enable: [],\n enableSeconds: false,\n enableTime: false,\n errorHandler: function (err) {\n return typeof console !== \"undefined\" && console.warn(err);\n },\n getWeek: function (givenDate) {\n var date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n // Thursday in current week decides the year.\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n // January 4 is always in week 1.\n var week1 = new Date(date.getFullYear(), 0, 4);\n // Adjust to Thursday in week 1 and count number of weeks from date to week1.\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\n nextArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false\n };\n\n var english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ]\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ]\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: function (nth) {\n var s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false\n };\n\n var pad = function (number) { return (\"0\" + number).slice(-2); };\n var int = function (bool) { return (bool === true ? 1 : 0); };\n /* istanbul ignore next */\n function debounce(func, wait, immediate) {\n if (immediate === void 0) { immediate = false; }\n var timeout;\n return function () {\n var context = this, args = arguments;\n timeout !== null && clearTimeout(timeout);\n timeout = window.setTimeout(function () {\n timeout = null;\n if (!immediate)\n func.apply(context, args);\n }, wait);\n if (immediate && !timeout)\n func.apply(context, args);\n };\n }\n var arrayify = function (obj) {\n return obj instanceof Array ? obj : [obj];\n };\n\n function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n }\n function createElement(tag, className, content) {\n var e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n }\n function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n }\n function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined; // nothing found\n }\n function createNumberInput(inputClassName, opts) {\n var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (var key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n }\n function getEventTarget(event) {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n\n var doNothing = function () { return undefined; };\n var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\n var revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n H: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n J: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n K: function (dateObj, amPM, locale) {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n W: function (dateObj, weekNum, locale) {\n var weekNumber = parseInt(weekNum);\n var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: function (dateObj, year) {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: function (_, ISODate) { return new Date(ISODate); },\n d: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n h: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n i: function (dateObj, minutes) {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: function (_, unixMillSeconds) {\n return new Date(parseFloat(unixMillSeconds));\n },\n w: doNothing,\n y: function (dateObj, year) {\n dateObj.setFullYear(2000 + parseFloat(year));\n }\n };\n var tokenRegex = {\n D: \"(\\\\w+)\",\n F: \"(\\\\w+)\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"(\\\\w+)\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"(\\\\w+)\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\"\n };\n var formats = {\n // get the date in UTC\n Z: function (date) { return date.toISOString(); },\n // weekday name, short, e.g. Thu\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n // full month name e.g. January\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n // padded hour 1-12\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n // hours with leading zero e.g. 03\n H: function (date) { return pad(date.getHours()); },\n // day (1-30) with ordinal suffix e.g. 1st, 2nd\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n // AM/PM\n K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n // shorthand month e.g. Jan, Sep, Oct, etc\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n // seconds 00-59\n S: function (date) { return pad(date.getSeconds()); },\n // unix timestamp\n U: function (date) { return date.getTime() / 1000; },\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n // full year e.g. 2016\n Y: function (date) { return date.getFullYear(); },\n // day in month, padded (01-30)\n d: function (date) { return pad(date.getDate()); },\n // hour from 1-12 (am/pm)\n h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n // minutes, padded with leading zero e.g. 09\n i: function (date) { return pad(date.getMinutes()); },\n // day in month (1-30)\n j: function (date) { return date.getDate(); },\n // weekday name, full, e.g. Thursday\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n // padded month number (01-12)\n m: function (date) { return pad(date.getMonth() + 1); },\n // the month number (1-12)\n n: function (date) { return date.getMonth() + 1; },\n // seconds 0-59\n s: function (date) { return date.getSeconds(); },\n // Unix Milliseconds\n u: function (date) { return date.getTime(); },\n // number of the day of the week\n w: function (date) { return date.getDay(); },\n // last two digits of year e.g. 16 for 2016\n y: function (date) { return String(date.getFullYear()).substring(2); }\n };\n\n var createDateFormatter = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (dateObj, frmt, overrideLocale) {\n var locale = overrideLocale || l10n;\n if (config.formatDate !== undefined) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map(function (c, i, arr) {\n return formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\";\n })\n .join(\"\");\n };\n };\n var createDateParser = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (date, givenFormat, timeless, customLocale) {\n if (date !== 0 && !date)\n return undefined;\n var locale = customLocale || l10n;\n var parsedDate;\n var dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined // timestamp\n )\n // create a copy\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n // date string\n var format = givenFormat || (config || defaults).dateFormat;\n var datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr) // datestrings w/ timezone\n )\n parsedDate = new Date(date);\n else if (config && config.parseDate)\n parsedDate = config.parseDate(date, format);\n else {\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n var matched = void 0, ops = [];\n for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n var token_1 = format[i];\n var isBackSlash = token_1 === \"\\\\\";\n var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token_1] && !escaped) {\n regexStr += tokenRegex[token_1];\n var match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token_1 !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token_1],\n val: match[++matchIndex]\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\"; // don't really care\n ops.forEach(function (_a) {\n var fn = _a.fn, val = _a.val;\n return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n });\n }\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n /* istanbul ignore next */\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n };\n };\n /**\n * Compute the difference in dates, measured in ms\n */\n function compareDates(date1, date2, timeless) {\n if (timeless === void 0) { timeless = true; }\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n }\n var isBetween = function (ts, ts1, ts2) {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n };\n var duration = {\n DAY: 86400000\n };\n\n if (typeof Object.assign !== \"function\") {\n Object.assign = function (target) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n var _loop_1 = function (source) {\n if (source) {\n Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n }\n };\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var source = args_1[_a];\n _loop_1(source);\n }\n return target;\n };\n }\n\n var DEBOUNCED_CHANGE_MS = 300;\n function FlatpickrInstance(element, instanceConfig) {\n var self = {\n config: __assign({}, defaults, flatpickr.defaultConfig),\n l10n: english\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self._createElement = createElement;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth: function (month, yr) {\n if (month === void 0) { month = self.currentMonth; }\n if (yr === void 0) { yr = self.currentYear; }\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n }\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar\n ? self.latestSelectedDateObj || self.config.minDate\n : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n self.showTimeInput =\n self.selectedDates.length > 0 || self.config.noCalendar;\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n /* TODO: investigate this further\n \n Currently, there is weird positioning behavior in safari causing pages\n to scroll up. https://github.com/chmln/flatpickr/issues/563\n \n However, most browsers are not Safari and positioning is expensive when used\n in scale. https://github.com/chmln/flatpickr/issues/1096\n */\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n var config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1)\n return;\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n /**\n * The handler for all events targeting the time inputs\n */\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n setDefaultTime();\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n var prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n /**\n * Syncs the selected date object time with user's time input\n */\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n var limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n var limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (limitMaxHours) {\n var maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n var minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours())\n minutes = Math.max(minutes, minTime.getMinutes());\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n setHours(hours, minutes, seconds);\n }\n /**\n * Syncs time input values with a date\n */\n function setHoursFromDate(dateObj) {\n var date = dateObj || self.latestSelectedDateObj;\n if (date)\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n function setDefaultHours() {\n var hours = self.config.defaultHour;\n var minutes = self.config.defaultMinute;\n var seconds = self.config.defaultSeconds;\n if (self.config.minDate !== undefined) {\n var minHr = self.config.minDate.getHours();\n var minMinutes = self.config.minDate.getMinutes();\n hours = Math.max(hours, minHr);\n if (hours === minHr)\n minutes = Math.max(minMinutes, minutes);\n if (hours === minHr && minutes === minMinutes)\n seconds = self.config.minDate.getSeconds();\n }\n if (self.config.maxDate !== undefined) {\n var maxHr = self.config.maxDate.getHours();\n var maxMinutes = self.config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = self.config.maxDate.getSeconds();\n }\n setHours(hours, minutes, seconds);\n }\n /**\n * Sets the hours, minutes, and optionally seconds\n * of the latest selected date object and the\n * corresponding time inputs\n * @param {Number} hours the hour. whether its military\n * or am-pm gets inferred from config\n * @param {Number} minutes the minutes\n * @param {Number} seconds the seconds (optional)\n */\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n /**\n * Handles the year input and incrementing events\n * @param {Event} event the keyup or increment event\n */\n function onYearInput(event) {\n var year = parseInt(event.target.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n /**\n * Essentially addEventListener + tracking\n * @param {Element} element the element to addEventListener to\n * @param {String} event the event name\n * @param {Function} handler the event handler\n */\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n if (element instanceof Array)\n return element.forEach(function (el) { return bind(el, event, handler, options); });\n element.addEventListener(event, handler, options);\n self._handlers.push({\n element: element,\n event: event,\n handler: handler,\n options: options\n });\n }\n /**\n * A mousedown handler which mimics click.\n * Minimizes latency, since we don't need to wait for mouseup in most cases.\n * Also, avoids handling right clicks.\n *\n * @param {Function} handler the event handler\n */\n function onClick(handler) {\n return function (evt) {\n evt.which === 1 && handler(evt);\n };\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n /**\n * Adds all the necessary event listeners\n */\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n return bind(el, \"click\", self[evt]);\n });\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n var debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", function (e) {\n if (self.config.mode === \"range\")\n onMouseOver(e.target);\n });\n bind(window.document.body, \"keydown\", onKeyDown);\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", onClick(documentClick));\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"mousedown\", onClick(self.open));\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"mousedown\", onClick(onMonthNavClick));\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"mousedown\", onClick(selectDate));\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n var selText = function (e) {\n return e.target.select();\n };\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"mousedown\", onClick(timeIncrement));\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n if (self.amPM !== undefined) {\n bind(self.amPM, \"mousedown\", onClick(function (e) {\n updateTime(e);\n triggerChange();\n }));\n }\n }\n }\n /**\n * Set the calendar view to a particular date.\n * @param {Date} jumpDate the date to set the view to\n * @param {boolean} triggerChange if change events should be triggered\n */\n function jumpToDate(jumpDate, triggerChange) {\n var jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n var oldYear = self.currentYear;\n var oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n /* istanbul ignore next */\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n /**\n * The up/down arrow handler for time inputs\n * @param {Event} e the click event\n */\n function timeIncrement(e) {\n if (~e.target.className.indexOf(\"arrow\"))\n incrementNumInput(e, e.target.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n /**\n * Increments/decrements the value of input associ-\n * ated with the up/down arrow by dispatching an\n * \"increment\" event on the input.\n *\n * @param {Event} e the click event\n * @param {Number} delta the diff (usually 1 or -1)\n * @param {Element} inputElem the input element\n */\n function incrementNumInput(e, delta, inputElem) {\n var target = e && e.target;\n var input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n var event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n var fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n var customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, dayNumber, i) {\n var dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", \"flatpickr-day \" + className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n dayNumber % 7 === 1) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"<span class='flatpickr-day'>\" + self.config.getWeek(date) + \"</span>\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n for (var m = startMonth; m != endMonth; m += delta) {\n var month = self.daysContainer.children[m];\n var startIndex = delta > 0 ? 0 : month.children.length - 1;\n var endIndex = delta > 0 ? month.children.length : -1;\n for (var i = startIndex; i != endIndex; i += delta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n var givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n var loopDelta = delta > 0 ? 1 : -1;\n for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n var month = self.daysContainer.children[m];\n var startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n var numMonthDays = month.children.length;\n for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n var dayFocused = isInView(document.activeElement || document.body);\n var startElem = current !== undefined\n ? current\n : dayFocused\n ? document.activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined)\n return self._input.focus();\n if (!dayFocused)\n return focusOnDayElem(startElem);\n getNextAvailableDay(startElem, offset);\n }\n function buildMonthDays(year, month) {\n var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12);\n var daysInMonth = self.utils.getDaysInMonth(month), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n // prepend days from the ending of previous month\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n // Start at 1 since there is no 0th day\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n // append days from the next month\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n //updateNavigationCurrentMonth();\n var dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n // TODO: week numbers for each month\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n var frag = document.createDocumentFragment();\n for (var i = 0; i < self.config.showMonths; i++) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType !== \"dropdown\")\n return;\n var shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (var i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n var container = createElement(\"div\", \"flatpickr-month\");\n var monthNavFragment = window.document.createDocumentFragment();\n var monthElement;\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n bind(self.monthsDropdownContainer, \"change\", function (e) {\n var target = e.target;\n var selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n var yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container: container,\n yearElement: yearElement,\n monthElement: monthElement\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (var m = self.config.showMonths; m--;) {\n var month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: function () { return self.__hidePrevMonthArrow; },\n set: function (bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n }\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: function () { return self.__hideNextMonthArrow; },\n set: function (bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n }\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n var hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n var minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? self.config.defaultHour\n : military2ampm(self.config.defaultHour));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : self.config.defaultMinute);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n var secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : self.config.defaultSeconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n // add self.amPM if appropriate\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (var i = self.config.showMonths; i--;) {\n var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n var firstDayOfWeek = self.l10n.firstDayOfWeek;\n var weekdays = self.l10n.weekdays.shorthand.slice();\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = weekdays.splice(firstDayOfWeek, weekdays.length).concat(weekdays.splice(0, firstDayOfWeek));\n }\n for (var i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = \"\\n <span class='flatpickr-weekday'>\\n \" + weekdays.join(\"</span><span class='flatpickr-weekday'>\") + \"\\n </span>\\n \";\n }\n }\n /* istanbul ignore next */\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper: weekWrapper,\n weekNumbers: weekNumbers\n };\n }\n function changeMonth(value, isOffset) {\n if (isOffset === void 0) { isOffset = true; }\n var delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent, toInitial) {\n if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\n if (toInitial === void 0) { toInitial = true; }\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n self.showTimeInput = false;\n if (self.config.enableTime === true) {\n setDefaultHours();\n }\n self.redraw();\n if (triggerChangeEvent)\n // triggerChangeEvent is true (default) or an Event\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (var i = self._handlers.length; i--;) {\n var h = self._handlers[i];\n h.element.removeEventListener(h.event, h.handler, h.options);\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n var wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n self.input.value = \"\";\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach(function (k) {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n if (self.config.appendTo && self.config.appendTo.contains(elem))\n return true;\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n var eventTarget_1 = getEventTarget(e);\n var isCalendarElement = isCalendarElem(eventTarget_1);\n var isInput = eventTarget_1 === self.input ||\n eventTarget_1 === self.altInput ||\n self.element.contains(eventTarget_1) ||\n // web components\n // e.path is not present in all browsers. circumventing typechecks\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n var lostFocus = e.type === \"blur\"\n ? isInput &&\n e.relatedTarget &&\n !isCalendarElem(e.relatedTarget)\n : !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n return elem.contains(eventTarget_1);\n });\n if (lostFocus && isIgnored) {\n self.close();\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n self.clear(false);\n self.redraw();\n }\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless) {\n if (timeless === void 0) { timeless = true; }\n var dateToCheck = self.parseDate(date, undefined, timeless); // timeless\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (self.config.enable.length === 0 && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n var bool = self.config.enable.length > 0, array = bool ? self.config.enable : self.config.disable;\n for (var i = 0, d = void 0; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck) // disabled by function\n )\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n // disabled by date\n return bool;\n else if (typeof d === \"string\" && dateToCheck !== undefined) {\n // disabled by date string\n var parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (\n // disabled by range\n typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onKeyDown(e) {\n // e.key e.keyCode\n // \"Backspace\" 8\n // \"Tab\" 9\n // \"Enter\" 13\n // \"Escape\" (IE \"Esc\") 27\n // \"ArrowLeft\" (IE \"Left\") 37\n // \"ArrowUp\" (IE \"Up\") 38\n // \"ArrowRight\" (IE \"Right\") 39\n // \"ArrowDown\" (IE \"Down\") 40\n // \"Delete\" (IE \"Del\") 46\n var isInput = e.target === self._input;\n var allowInput = self.config.allowInput;\n var allowKeydown = self.isOpen && (!allowInput || !isInput);\n var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n return e.target.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(e.target) ||\n allowKeydown ||\n allowInlineKeydown) {\n var isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(e.target);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27: // escape\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (document.activeElement && isInView(document.activeElement)))) {\n var delta_1 = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta_1);\n else {\n e.stopPropagation();\n changeMonth(delta_1);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n var delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer && e.target.$i !== undefined) ||\n e.target === self.input) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (e.target === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n var elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter(function (x) { return x; });\n var i = elems.indexOf(e.target);\n if (i !== -1) {\n var target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(e.target) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && e.target === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(e.target)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem) {\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(\"flatpickr-day\") ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n var hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n var containsDisabled = false;\n var minRange = 0, maxRange = 0;\n for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n for (var m = 0; m < self.config.showMonths; m++) {\n var month = self.daysContainer.children[m];\n var _loop_1 = function (i, l) {\n var dayElem = month.children[i], date = dayElem.dateObj;\n var timestamp = date.getTime();\n var outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n return \"continue\";\n }\n else if (containsDisabled && !outOfRange)\n return \"continue\";\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n };\n for (var i = 0, l = month.children.length; i < l; i++) {\n _loop_1(i, l);\n }\n }\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function setDefaultTime() {\n self.setDate(self.config.minDate !== undefined\n ? new Date(self.config.minDate.getTime())\n : new Date(), true);\n setDefaultHours();\n updateValue();\n }\n function open(e, positionElement) {\n if (positionElement === void 0) { positionElement = self._positionElement; }\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n e.target && e.target.blur();\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n if (self._input.disabled || self.config.inline)\n return;\n var wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.selectedDates.length === 0) {\n setDefaultTime();\n }\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(function () { return self.hourElement.select(); }, 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return function (date) {\n var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n var boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n var userConfig = __assign({}, instanceConfig, JSON.parse(JSON.stringify(element.dataset || {})));\n var formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: function () { return self.config._enable; },\n set: function (dates) {\n self.config._enable = parseDateRules(dates);\n }\n });\n Object.defineProperty(self.config, \"disable\", {\n get: function () { return self.config._disable; },\n set: function (dates) {\n self.config._disable = parseDateRules(dates);\n }\n });\n var timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaults.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaults.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n self.input.className + \" \" + self.config.altInputClass;\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: function () { return self.config._minDate; },\n set: minMaxDateSetter(\"min\")\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: function () { return self.config._maxDate; },\n set: minMaxDateSetter(\"max\")\n });\n var minMaxTimeSetter = function (type) { return function (val) {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i\");\n }; };\n Object.defineProperty(self.config, \"minTime\", {\n get: function () { return self.config._minTime; },\n set: minMaxTimeSetter(\"min\")\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: function () { return self.config._maxTime; },\n set: minMaxTimeSetter(\"max\")\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (var i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable.length &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (var i = 0; i < self.config.plugins.length; i++) {\n var pluginConf = self.config.plugins[i](self) || {};\n for (var key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n triggerEvent(\"onParseConfig\");\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n self.l10n = __assign({}, flatpickr.l10ns[\"default\"], (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n var userConfig = __assign({}, instanceConfig, JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n var positionElement = customPositionElement || self._positionElement;\n var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n var top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n var left = window.pageXOffset +\n inputBounds.left -\n (configPosHorizontal != null && configPosHorizontal === \"center\"\n ? (calendarWidth - inputBounds.width) / 2\n : 0);\n var right = window.document.body.offsetWidth - inputBounds.right;\n var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = top + \"px\";\n if (!rightMost) {\n self.calendarContainer.style.left = left + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = right + \"px\";\n }\n else {\n var doc = document.styleSheets[0];\n // some testing environments don't have css support\n if (doc === undefined)\n return;\n var bodyWidth = window.document.body.offsetWidth;\n var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n var centerBefore = \".flatpickr-calendar.centerMost:before\";\n var centerAfter = \".flatpickr-calendar.centerMost:after\";\n var centerIndex = doc.cssRules.length;\n var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n self.calendarContainer.style.left = centerLeft + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n // hack - bugs in the way IE handles focus keeps the calendar open\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n var isSelectable = function (day) {\n return day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n };\n var t = findParent(e.target, isSelectable);\n if (t === undefined)\n return;\n var target = t;\n var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n var selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n // unless selecting same date twice, sort ascendingly\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n var isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (self.config.enableTime)\n setTimeout(function () { return (self.showTimeInput = true); }, 50);\n // maintain focus\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n var single = self.config.mode === \"single\" && !self.config.enableTime;\n var range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n var CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate]\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (var key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach(function (x) { return x(); });\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach(function (x) { return x(); });\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(false);\n }\n function setSelectedDate(inputDate, format) {\n var dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n self.selectedDates = dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); });\n if (self.config.mode === \"range\")\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n function setDate(date, triggerChange, format) {\n if (triggerChange === void 0) { triggerChange = false; }\n if (format === void 0) { format = self.config.dateFormat; }\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.showTimeInput = self.selectedDates.length > 0;\n self.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate();\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map(function (rule) {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined)\n };\n return rule;\n })\n .filter(function (x) { return x; }); // remove falsy values\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n // Workaround IE11 setting placeholder as the input's value\n var preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n Object.defineProperty(self, \"showTimeInput\", {\n get: function () { return self._showTimeInput; },\n set: function (bool) {\n self._showTimeInput = bool;\n if (self.calendarContainer)\n toggleClass(self.calendarContainer, \"showTimeInput\", bool);\n self.isOpen && positionCalendar();\n }\n });\n }\n function setupInputs() {\n self.input = self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n /* istanbul ignore next */\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n // hack: store previous type to restore it after destroy()\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n // replicate self.element\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n var inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.step = self.input.getAttribute(\"step\") || \"any\";\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", function (e) {\n self.setDate(e.target.value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n // If the instance has been destroyed already, all hooks have been removed\n if (self.config === undefined)\n return;\n var hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (var i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n // many front-end frameworks bind to the input event\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (var i = 0; i < self.selectedDates.length; i++) {\n if (compareDates(self.selectedDates[i], date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach(function (yearElement, i) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(format) {\n return self.selectedDates\n .map(function (dObj) { return self.formatDate(dObj, format); })\n .filter(function (d, i, arr) {\n return self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i;\n })\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n /**\n * Updates the values of inputs associated with the calendar\n */\n function updateValue(triggerChange) {\n if (triggerChange === void 0) { triggerChange = true; }\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n var isPrevMonth = self.prevMonthNav.contains(e.target);\n var isNextMonth = self.nextMonthNav.contains(e.target);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(e.target) >= 0) {\n e.target.select();\n }\n else if (e.target.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (e.target.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n var isKeyDown = e.type === \"keydown\", input = e.target;\n if (self.amPM !== undefined && e.target === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n var newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n }\n /* istanbul ignore next */\n function _flatpickr(nodeList, config) {\n // static list\n var nodes = Array.prototype.slice\n .call(nodeList)\n .filter(function (x) { return x instanceof HTMLElement; });\n var instances = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n }\n /* istanbul ignore next */\n if (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n // browser env\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n }\n /* istanbul ignore next */\n var flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n };\n /* istanbul ignore next */\n flatpickr.defaultConfig = {};\n flatpickr.l10ns = {\n en: __assign({}, english),\n \"default\": __assign({}, english)\n };\n flatpickr.localize = function (l10n) {\n flatpickr.l10ns[\"default\"] = __assign({}, flatpickr.l10ns[\"default\"], l10n);\n };\n flatpickr.setDefaults = function (config) {\n flatpickr.defaultConfig = __assign({}, flatpickr.defaultConfig, config);\n };\n flatpickr.parseDate = createDateParser({});\n flatpickr.formatDate = createDateFormatter({});\n flatpickr.compareDates = compareDates;\n /* istanbul ignore next */\n if (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n }\n // eslint-disable-next-line @typescript-eslint/camelcase\n Date.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n };\n if (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n }\n\n return flatpickr;\n\n}));\n","<script>\n\nimport flatpickr from \"flatpickr\";\nimport \"flatpickr/dist/flatpickr.css\";\nimport { onMount } from 'svelte';\n\nexport let value;\nexport let label;\nexport let width = \"medium\";\nexport let size = \"small\";\n\nlet input;\nlet fpInstance;\n\n$: if (fpInstance) fpInstance.setDate(value);\n\nonMount(() => {\n fpInstance = flatpickr(input, {});\n\n fpInstance.config.onChange.push(selectedDates => {\n if(selectedDates.length > 0)\n value = new Date(selectedDates[0]);\n });\n\n return fpInstance;\n})\n\n</script>\n\n<div class=\"uk-margin\">\n <label class=\"uk-form-label\">{label}</label>\n <div class=\"uk-form-controls\">\n <input class=\"uk-input uk-form-width-{width} uk-form-{size}\" bind:this={input} >\n </div>\n</div>\n\n","<script>\nimport Dropdown from \"../common/Dropdown.svelte\";\nimport Textbox from \"../common/Textbox.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport NumberBox from \"../common/NumberBox.svelte\";\nimport ValuesList from \"../common/ValuesList.svelte\";\nimport ErrorsBox from \"../common/ErrorsBox.svelte\";\nimport Checkbox from \"../common/Checkbox.svelte\";\nimport DatePicker from \"../common/DatePicker.svelte\";\nimport {cloneDeep, assign, keys, \n isNumber, includes, map, isBoolean} from \"lodash/fp\";\nimport {allTypes, validate, getPotentialReferenceIndexes,\n getDefaultTypeOptions, getNode,\n getPotentialReverseReferenceIndexes} from \"../common/core\";\n\nexport let field;\nexport let allFields;\nexport let onFinished = () => {};\nexport let store;\n\nlet errors = [];\nlet clonedField = cloneDeep(field);\n\n$: isNew = !!field && field.name.length === 0;\n\n$: possibleReferenceIndexes = getPotentialReferenceIndexes(\n store.hierarchy, store.currentNode\n);\n\n$: selectedReverseRefIndex = \n !clonedField.typeOptions.indexNodeKey \n ? \"\"\n : getNode(store.hierarchy, clonedField.typeOptions.indexNodeKey);\n\n$: possibleReverseReferenceIndexes = \n !selectedReverseRefIndex \n ? []\n : getPotentialReverseReferenceIndexes(\n store.hierarchy, selectedReverseRefIndex);\n\nconst typeChanged = (ev) => \n clonedField.typeOptions = getDefaultTypeOptions(ev.detail);\n\n\nconst save = () => {\n\n errors = validate.field(allFields)(clonedField);\n if(errors.length > 0) return;\n field.typeOptions = cloneDeep(clonedField.typeOptions);\n onFinished(\n assign(field)(clonedField)\n );\n}\n\n</script>\n\n<div class=\"root\">\n\n <ErrorsBox errors={errors} />\n\n <form class=\"uk-form-horizontal\">\n\n <Dropdown label=\"Type\" bind:selected={clonedField.type} options={keys(allTypes)} on:change={typeChanged} />\n\n {#if isNew}\n <Textbox label=\"Field Name\" bind:text={clonedField.name} />\n {:else}\n <div style=\"font-weight: bold\">{clonedField.name}</div>\n {/if}\n\n <Textbox label=\"Label\" bind:text={clonedField.label} />\n \n {#if clonedField.type === \"string\"}\n <NumberBox label=\"Max Length\" bind:value={clonedField.typeOptions.maxLength} />\n <ValuesList label=\"Values (options)\" bind:values={clonedField.typeOptions.values} />\n <Checkbox label=\"Declared Values Only\" bind:checked={clonedField.typeOptions.allowDeclaredValuesOnly} />\n {:else if clonedField.type === \"bool\"}\n <Checkbox label=\"Allow Null\" bind:checked={clonedField.typeOptions.allowNulls} />\n {:else if clonedField.type === \"datetime\"}\n <DatePicker label=\"Min Value\" bind:value={clonedField.typeOptions.minValue} />\n <DatePicker label=\"Max Value\" bind:value={clonedField.typeOptions.maxValue} />\n {:else if clonedField.type === \"number\"}\n <NumberBox label=\"Min Value\" bind:value={clonedField.typeOptions.minValue} />\n <NumberBox label=\"Max Value\" bind:value={clonedField.typeOptions.maxValue} />\n <NumberBox label=\"Decimal Places\" bind:value={clonedField.typeOptions.decimalPlaces} />\n {:else if clonedField.type === \"reference\"}\n <Dropdown label=\"Lookup Index\" \n options={possibleReferenceIndexes} \n valueMember={n => n.nodeKey()}\n textMember={n => n.name}\n bind:selected={clonedField.typeOptions.indexNodeKey} />\n\n <Dropdown label=\"Reverse Reference Index\" \n options={possibleReverseReferenceIndexes} \n multiple=true\n valueMember={n => n.nodeKey()}\n textMember={n => n.name}\n bind:selected={clonedField.typeOptions.reverseIndexNodeKeys} />\n\n <Textbox label=\"Display Value\" bind:text={clonedField.typeOptions.displayValue} />\n\n {:else if clonedField.type.startsWith(\"array\")}\n <NumberBox label=\"Min Length\" bind:value={clonedField.typeOptions.minLength} />\n <NumberBox label=\"Max Length\" bind:value={clonedField.typeOptions.maxLength} />\n {/if}\n\n </form>\n\n <ButtonGroup style=\"float: right;\">\n <Button color=\"primary\" grouped on:click={save}>Save</Button>\n <Button color=\"tertiary\" grouped on:click={() => onFinished(false)}>Cancel</Button>\n </ButtonGroup>\n\n</div>\n\n<style>\n\n\n\n</style>","<script>\n\nimport Textbox from \"../common/Textbox.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport getIcon from \"../common/icon\";\nimport FieldView from \"./FieldView.svelte\";\nimport Modal from \"../common/Modal.svelte\";\nimport {map, join, filter, some, \n find, keys, isDate} from \"lodash/fp\";\nimport { store } from \"../builderStore\";\nimport {common, hierarchy as h} from \"../../../core/src\";\nimport {templateApi, pipe, validate} from \"../common/core\";\n\nlet record;\nlet getIndexAllowedRecords;\nlet editingField = false;\nlet fieldToEdit;\nlet isNewField = false;\nlet newField;\nlet editField;\nlet deleteField;\nlet onFinishedFieldEdit;\nlet editIndex;\n\nstore.subscribe($store => {\n record = $store.currentNode;\n const flattened = h.getFlattenedHierarchy($store.hierarchy);\n getIndexAllowedRecords = index => \n pipe(index.allowedRecordNodeIds, [\n filter(id => some(n => n.nodeId === id)(flattened)),\n map(id => find(n => n.nodeId === id)\n (flattened).name),\n join(\", \")\n ]);\n\n newField = () => {\n isNewField = true;\n fieldToEdit = templateApi($store.hierarchy).getNewField(\"string\");\n editingField = true;\n }\n\n onFinishedFieldEdit = (field) => {\n if(field) {\n store.saveField(field);\n }\n editingField = false;\n }\n\n editField = (field) => {\n isNewField = false;\n fieldToEdit = field;\n editingField = true;\n }\n\n deleteField = (field) => {\n store.deleteField(field);\n }\n\n editIndex = index => {\n store.selectExistingNode(index.nodeId);\n }\n\n})\n\nlet getTypeOptionsValueText = value => {\n if(value === Number.MAX_SAFE_INTEGER\n || value === Number.MIN_SAFE_INTEGER\n || new Date(value).getTime() === new Date(8640000000000000).getTime()\n || new Date(value).getTime() === new Date(-8640000000000000).getTime()) return \"(any)\";\n \n if(value === null) return \"(not set)\";\n return value;\n}\n\nlet getTypeOptions = typeOptions => \n pipe(typeOptions, [\n keys,\n map(k => `<span style=\"color:var(--slate)\">${k}: </span>${getTypeOptionsValueText(typeOptions[k])}`),\n join(\"<br>\")\n ]);\n\n\n</script>\n\n<div class=\"root\">\n\n <form class=\"uk-form-horizontal\">\n <h3 class=\"settings-title\">\n Settings \n </h3>\n \n <Textbox label=\"Name:\" bind:text={record.name} />\n {#if !record.isSingle}\n <Textbox label=\"Collection Name:\" bind:text={record.collectionName} />\n <Textbox label=\"Shard Factor:\" bind:text={record.allidsShardFactor} />\n {/if}\n <div class=\"recordkey\">{record.nodeKey()}</div>\n\n </form>\n <h3 class=\"title\">\n Fields <span class=\"add-field-button\" on:click={newField}>{@html getIcon(\"plus\")}</span>\n </h3>\n\n {#if record.fields.length > 0}\n <table class=\"fields-table uk-table\">\n <thead>\n <tr>\n <th>Name</th>\n <th>Type</th>\n <th>Options</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n {#each record.fields as field}\n <tr>\n <td >\n <div class=\"field-label\">{field.label}</div>\n <div style=\"font-size: 0.8em; color: var(--slate)\">{field.name}</div>\n </td>\n <td >{field.type}</td>\n <td >{@html getTypeOptions(field.typeOptions)}</td>\n <td>\n <span class=\"edit-button\" on:click={() => editField(field)}>{@html getIcon(\"edit\")}</span>\n <span class=\"edit-button\" on:click={() => deleteField(field)}>{@html getIcon(\"trash\")}</span>\n </td>\n </tr>\n {/each}\n </tbody>\n </table>\n {:else}\n (no fields added)\n {/if}\n\n {#if editingField}\n <Modal bind:isOpen={editingField}>\n <FieldView field={fieldToEdit} \n onFinished={onFinishedFieldEdit}\n allFields={record.fields} \n store={$store}/>\n </Modal>\n {/if}\n\n <h3 class=\"title\">\n Indexes \n </h3>\n\n {#each record.indexes as index}\n <div class=\"index-container\">\n <div class=\"index-name\">\n {index.name}\n <span style=\"margin-left: 7px\" on:click={() => editIndex(index)}>{@html getIcon(\"edit\")}</span>\n </div>\n <div class=\"index-field-row\">\n <span class=\"index-label\">records indexed: </span> \n <span>{getIndexAllowedRecords(index)}</span>\n <span class=\"index-label\" style=\"margin-left: 15px\">type:</span> \n <span>{index.indexType}</span>\n </div>\n <div class=\"index-field-row\">\n <span class=\"index-label\">map:</span>\n <code class=\"index-mapfilter\">{index.map}</code>\n </div>\n {#if index.filter}\n <div class=\"index-field-row\">\n <span class=\"index-label\">filter:</span>\n <code class=\"index-mapfilter\">{index.filter}</code>\n </div>\n {/if}\n </div>\n {:else}\n <div class=\"no-indexes\">\n No indexes added.\n </div>\n {/each}\n\n</div>\n\n\n<style>\n\n.root {\n height: 100%;\n padding: 2rem;\n}\n\n.settings-title {\n font-weight: 700;\n}\n\n.title {\n margin: 3rem 0rem 0rem 0rem;\n font-weight: 700;\n}\n\n.recordkey {\n font-size: 14px;\n font-weight: 600;\n color: var(--primary100);\n}\n\n.fields-table {\n margin: 1rem 1rem 0rem 0rem;\n border-collapse:collapse;\n}\n\n.add-field-button {\n cursor:pointer;\n}\n\n.edit-button {\n cursor:pointer;\n color: var(--secondary25);\n}\n\n.edit-button:hover {\n cursor:pointer;\n color: var(--secondary75);\n}\n\nth {\n text-align: left; \n}\n\ntd {\n padding: 1rem 5rem 1rem 0rem;\n margin:0;\n font-size: 14px;\n font-weight: 500;\n\n}\n\n.field-label {\n font-size: 14px;\n font-weight: 500;\n}\n\nthead > tr {\n border-width: 0px 0px 1px 0px;\n border-style: solid;\n border-color: var(--secondary75);\n margin-bottom: 20px;\n}\n\ntbody > tr {\n border-width: 0px 0px 1px 0px;\n border-style: solid;\n border-color: var(--primary10);\n}\n\ntbody > tr:hover {\n background-color: var(--primary10);\n}\n\ntbody > tr:hover .edit-button {\n color: var(--secondary75);\n}\n\n.index-container {\n border-style: solid;\n border-width: 0 0 1px 0;\n border-color: var(--secondary25);\n padding: 10px;\n margin-bottom: 5px;\n}\n\n.index-label {\n color: var(--slate);\n}\n\n.index-name {\n font-weight: bold;\n color: var(--primary100);\n}\n\n.index-container code {\n margin: 0;\n display: inline;\n background-color: var(--primary10);\n color: var(--secondary100);\n padding:3px;\n}\n\n.index-field-row {\n margin: 1rem 0rem 0rem 0rem;\n}\n\n.no-indexes {\n margin: 1rem 0rem 0rem 0rem;\n font-family: var(--fontnormal);\n font-size: 14px;\n}\n</style>","<script>\n// todo: use https://ace.c9.io\nexport let text = \"\";\nexport let label = \"\";\n</script>\n\n<div>{label}</div>\n<textarea class=\"uk-textarea\" bind:value={text}></textarea>\n\n<style>\n\ntextarea {\n padding:3px;\n margin-top:5px;\n margin-bottom:10px;\n background: var(--lightslate);\n color: var(--white);\n font-family: 'Courier New', Courier, monospace;\n width:95%;\n height:100px;\n border-radius: 5px;\n}\n\n</style>","<script>\n\nimport Textbox from \"../common/Textbox.svelte\";\nimport CodeArea from \"../common/CodeArea.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport Dropdown from \"../common/Dropdown.svelte\";\nimport {store} from \"../builderStore\";\nimport {filter, some, map} from \"lodash/fp\";\nimport {hierarchy as hierarchyFunctions, common} from \"../../../core/src\";\n\nconst pipe = common.$;\n\nlet index;\nlet indexableRecords = [];\n\nstore.subscribe($store => {\n index = $store.currentNode;\n indexableRecords = pipe($store.hierarchy,[\n hierarchyFunctions.getFlattenedHierarchy,\n filter(hierarchyFunctions.isDecendant(index.parent())),\n filter(hierarchyFunctions.isRecord),\n map(n => ({\n node:n,\n isallowed: some(id => n.nodeId === id)(index.allowedRecordNodeIds)\n }))\n ]);\n});\n\nconst toggleAllowedRecord = record => {\n if(record.isallowed) {\n index.allowedRecordNodeIds = filter(id => id !== record.node.nodeId)\n (index.allowedRecordNodeIds);\n } else {\n index.allowedRecordNodeIds.push(record.node.nodeId);\n }\n};\n\n</script>\n\n<form class=\"uk-form-horizontal root\">\n <Textbox bind:text={index.name} label=\"Name\"/>\n \n <div class=\"allowed-records\">\n <div>Records to Index</div>\n {#each indexableRecords as rec}\n <input type=\"checkbox\" checked={rec.isallowed} on:change={() => toggleAllowedRecord(rec)}/>\n <span>{rec.node.name}</span>\n {/each}\n </div>\n\n\n <Dropdown label=\"Index Type\" bind:selected={index.indexType} options={[\"ancestor\", \"reference\"]} />\n\n <CodeArea bind:text={index.map} label=\"Map (javascript)\"/>\n <CodeArea bind:text={index.filter} label=\"Filter (javascript expression)\"/>\n <CodeArea bind:text={index.getShardName} label=\"Shard Name (javascript expression)\"/>\n\n \n</form>\n\n<style>\n\n.root {\n height: 100%;\n padding: 15px;\n}\n\n.allowed-records {\n margin: 20px 0px;\n}\n\n.allowed-records > span {\n margin-right:30px;\n}\n\n</style>","<script>\nimport Button from \"../common/Button.svelte\";\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport {store} from \"../builderStore\";\nimport Modal from \"../common/Modal.svelte\";\nimport ErrorsBox from \"../common/ErrorsBox.svelte\";\n\nexport let left;\nlet confirmDelete = false;\nconst openConfirmDelete = () => {\n confirmDelete = true;\n}\n\nconst deleteCurrentNode = () => {\n confirmDelete = false;\n store.deleteCurrentNode();\n}\n\n</script>\n\n<div class=\"root\" style=\"left: {left}\">\n\n <ButtonGroup>\n <Button color=\"secondary\" grouped on:click={store.saveCurrentNode}>\n {#if $store.currentNodeIsNew}\n Create\n {:else}\n Update\n {/if}\n </Button>\n\n {#if !$store.currentNodeIsNew}\n <Button color=\"tertiary\" grouped on:click={openConfirmDelete}>\n Delete\n </Button>\n {/if}\n </ButtonGroup>\n\n {#if !!$store.errors && $store.errors.length > 0}\n <div style=\"width: 500px\">\n <ErrorsBox errors={$store.errors}/>\n </div>\n {/if}\n \n <Modal bind:isOpen={confirmDelete}>\n <div style=\"margin: 10px 0px 20px 0px\">Are you sure you want to delete {$store.currentNode.name} ?</div>\n <div style=\"float:right\">\n <Button color=\"primary\" on:click={deleteCurrentNode}>Yes</Button>\n <Button color=\"secondary\" on:click={() => confirmDelete = false}>No</Button>\n </div>\n </Modal>\n</div>\n\n<style>\n\n.root {\n padding: 1.5rem;\n width: 100%;\n align-items: right;\n }\n\n</style>","<script>\n\nimport HierarchyRow from \"./HierarchyRow.svelte\";\nimport RecordView from \"./RecordView.svelte\";\nimport IndexView from \"./IndexView.svelte\";\nimport ActionsHeader from \"./ActionsHeader.svelte\";\nimport {store} from \"../builderStore\";\nimport getIcon from \"../common/icon\";\nimport DropdownButton from \"../common/DropdownButton.svelte\";\nimport {hierarchy as hierarchyFunctions} from \"../../../core/src\";\n\nconst hierarchyWidth = \"200px\";\n\nconst defaultNewIndexActions = [{\n label:\"New Root Index\", \n onclick: store.newRootIndex\n}];\n\nconst defaultNewRecordActions = [{\n label:\"New Root Record\", \n onclick: store.newRootRecord\n}];\n\nlet newIndexActions = defaultNewIndexActions;\nlet newRecordActions = defaultNewRecordActions;\n\nstore.subscribe(db => {\n if(!db.currentNode || hierarchyFunctions.isIndex(db.currentNode)) {\n newRecordActions = defaultNewRecordActions;\n newIndexActions = defaultNewIndexActions;\n } else {\n newRecordActions = [\n ...defaultNewRecordActions,\n {label: `New Child Record of ${db.currentNode.name}`, \n onclick: store.newChildRecord}\n ];\n\n newIndexActions = [\n ...defaultNewIndexActions,\n {label: `New Index on ${db.currentNode.name}`, \n onclick: store.newChildIndex}\n ];\n }\n});\n\n\n</script>\n\n<div class=\"root\">\n <div class=\"actions-header\">\n {#if $store.currentNode}\n <ActionsHeader left={hierarchyWidth}/>\n {/if}\n </div>\n <div class=\"node-view\">\n {#if !$store.currentNode}\n <h1 style=\"margin-left: 100px\">:)</h1>\n {:else if $store.currentNode.type === \"record\"}\n <RecordView />\n {:else}\n <IndexView />\n {/if}\n </div>\n</div>\n\n\n<style>\n.root {\n height: 100%;\n position: relative;\n}\n\n.actions-header {\n flex: 0 1 auto;\n}\n\n.node-view {\n overflow-y: auto;\n flex: 1 1 auto;\n}\n\n</style>","<script>\n\nimport Textbox from \"../common/Textbox.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport {cloneDeep, filter, keys,\nmap, isUndefined} from \"lodash/fp\";\nimport ErrorsBox from \"../common/ErrorsBox.svelte\";\nimport {validateActions, pipe} from \"../common/core\";\nimport getIcon from \"../common/icon\";\n\nexport let action;\nexport let onFinished = (action) => {};\nexport let allActions;\nexport let isNew = true;\n\nlet optKey = \"\";\nlet optValue = \"\";\n\nlet clonedAction = cloneDeep(action); \nlet initialOptions = pipe(action.initialOptions, [\n keys,\n map(k => ({key:k, value:action.initialOptions[k]}))\n]);\nlet errors = [];\n\nconst addNewOption = () => {\n\n if(optKey && optValue && isUndefined(clonedAction.initialOptions[optKey])) {\n clonedAction.initialOptions[optKey] = optValue;\n initialOptions = [...initialOptions, {\n key:optKey, value: optValue\n }];\n optKey = \"\";\n optValue = \"\";\n }\n}\n\nconst removeOption = (opt) => {\n if(opt) {\n delete clonedAction.initialOptions[opt.key]\n initialOptions = pipe(initialOptions, [\n filter(o => o.key !== opt.key)\n ]);\n }\n}\n\nconst save = () => {\n\n const newActionsList = [\n ...pipe(allActions ,[filter(a => a !== action)]),\n clonedAction]\n\n errors = pipe(newActionsList ,[\n validateActions,\n map(e => e.error)\n ]);\n\n if(errors.length === 0)\n onFinished(clonedAction);\n}\n\nconst cancel = () => {\n onFinished();\n}\n\n</script>\n\n<div class=\"root\">\n\n <ErrorsBox {errors} />\n\n <form class=\"uk-form-horizontal\">\n\n <Textbox label=\"Name\" bind:text={clonedAction.name} />\n <Textbox label=\"Behaviour Source\" bind:text={clonedAction.behaviourSource} />\n <Textbox label=\"Behaviour\" bind:text={clonedAction.behaviourName} />\n\n </form>\n\n <div class=\" uk-form-stacked\" style=\"margin-bottom: 20px\">\n <label class=\"uk-form-label\">Default Options</label>\n <div class=\"uk-grid-small\" uk-grid>\n <input class=\"uk-input uk-width-1-4 uk-margin-right\" placeholder=\"key\" bind:value={optKey} > \n <input class=\"uk-input uk-width-1-4 uk-margin-right\" placeholder=\"value\" bind:value={optValue} > \n <Button color=\"primary-outline uk-width-1-4\" on:click={addNewOption}>Add</Button>\n </div>\n <div style=\"margin-top: 10px\">\n {#each initialOptions as option}\n <span class=\"option-container\">{option.key} : {option.value} <span style=\"font-size:10pt; cursor: pointer\" on:click={() => removeOption(option)}>{@html getIcon(\"trash-2\")}</span></span>\n {/each}\n </div>\n </div>\n\n <ButtonGroup>\n <Button color=\"secondary\" grouped on:click={save}>Save</Button>\n <Button color=\"tertiary\" grouped on:click={cancel}>Cancel</Button>\n </ButtonGroup>\n\n \n</div>\n\n\n<style>\n\n.root {\n padding: 2rem;\n border-radius: 2rem;\n}\n\n.uk-grid-small {\n padding: 1rem;\n}\n\n.option-container {\n border-style: dotted;\n border-width: 1px;\n border-color: var(--primary75);\n padding: 3px;\n margin-right: 5px;\n}\n\n</style>","<script>\n\nimport getIcon from \"../common/icon\";\nimport {store} from \"../builderStore\";\nimport Button from \"../common/Button.svelte\";\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport ActionView from \"./ActionView.svelte\";\nimport Modal from \"../common/Modal.svelte\";\nimport {pipe} from \"../common/core\";\nimport {keys, map, join} from \"lodash/fp\";\n\nexport let editingActionIsNew = false;\nexport let editingAction = null;\nexport let onActionEdit = (action) => {};\nexport let onActionDelete = (action) => {};\nexport let onActionSave = (action) => {};\nexport let onActionCancel = () => {};\n\n$: isEditing = (editingAction !== null); \n\nlet actionsArray = [];\nstore.subscribe(s => {\n actionsArray = pipe(s.actions, [\n keys,\n map(k => s.actions[k])\n ]);\n});\n\nlet getDefaultOptionsHtml = defaultOptions => \n pipe(defaultOptions, [\n keys,\n map(k => `<span style=\"color:var(--slate)\">${k}: </span>${JSON.stringify(defaultOptions[k])}`),\n join(\"<br>\")\n ]);\n\n\nlet actionEditingFinished = (action) => {\n \n if(action) {\n onActionSave(action)\n } else {\n onActionCancel();\n }\n}\n\n</script>\n\n<h3 class=\"title\">Actions</h3>\n\n{#if actionsArray}\n<table class=\"fields-table uk-table uk-table-small uk-table-striped\">\n <thead>\n <tr>\n <th >Description</th>\n <th>Behaviour Source</th>\n <th>Behaviour Name</th>\n <th>Default Options</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n {#each actionsArray as action}\n <tr>\n <td class=\"table-content\">{action.name}</td>\n <td class=\"table-content\">{action.behaviourSource}</td>\n <td class=\"table-content\">{action.behaviourName}</td>\n <td class=\"table-content\">{@html getDefaultOptionsHtml(action.initialOptions)}</td>\n <td class=\"edit-button\">\n <span on:click={() => onActionEdit(action)}>{@html getIcon(\"edit\")}</span>\n <span on:click={() => onActionDelete(action)}>{@html getIcon(\"trash\")}</span>\n </td>\n </tr>\n {/each}\n </tbody>\n</table>\n{:else}\n(no actions added)\n{/if}\n\n\n<Modal bind:isOpen={isEditing}>\n {#if isEditing}\n <ActionView action={editingAction}\n allActions={$store.actions}\n onFinished={actionEditingFinished}\n isNew={editingActionIsNew}/>\n {/if} \n</Modal>\n\n\n<style>\n\n.edit-button {\n cursor:pointer;\n color: var(--secondary25);\n}\n\ntr:hover .edit-button {\n color: var(--secondary75);\n}\n\n.title {\n margin: 3rem 0rem 0rem 0rem;\n font-weight: 700;\n}\n\n.table-content {\n font-weight: 500;\n font-size: .9rem;\n}\n\n</style>","<script>\n\nimport Textbox from \"../common/Textbox.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport Dropdown from \"../common/Dropdown.svelte\";\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport CodeArea from \"../common/CodeArea.svelte\";\nimport {cloneDeep, filter, keys, some,\nmap, isUndefined} from \"lodash/fp\";\nimport ErrorsBox from \"../common/ErrorsBox.svelte\";\nimport {validateTriggers, pipe, events} from \"../common/core\";\nimport getIcon from \"../common/icon\";\n\nexport let trigger;\nexport let onFinished = (action) => {};\nexport let allTriggers;\nexport let allActions;\nexport let isNew = true;\n\nlet clonedTrigger = cloneDeep(trigger); \nlet errors = [];\n$: actionNames = map(a => a.name)(allActions);\n\nlet cancel = () => onFinished();\nlet save = () => {\n const newTriggersList = [\n ...pipe(allTriggers ,[filter(t => t !== trigger)]),\n clonedTrigger]\n\n errors = validateTriggers(newTriggersList, allActions);\n\n const test = map(t =>(!t.actionName || some(a => a.name === t.actionName)(allActions)))(newTriggersList)\n\n if(errors.length === 0)\n onFinished(clonedTrigger);\n}\n\n</script>\n\n<div>\n\n <ErrorsBox {errors} style=\"margin-bottom:20px\"/>\n\n <form class=\"uk-form-horizontal\">\n \n <Dropdown label=\"Event\" \n options={[\"\",...events]}\n bind:selected={clonedTrigger.eventName} />\n <Dropdown label=\"Action\" \n options={[\"\",...actionNames]}\n bind:selected={clonedTrigger.actionName} />\n <CodeArea label=\"Condition (javascript)\"\n bind:text={clonedTrigger.condition} />\n <CodeArea label=\"Action Options Creator (javascript)\"\n bind:text={clonedTrigger.optionsCreator} />\n\n </form>\n\n <ButtonGroup>\n <Button color=\"primary\" grouped on:click={save}>Save</Button>\n <Button color=\"tertiary\" grouped on:click={cancel}>Cancel</Button>\n </ButtonGroup>\n\n</div>\n\n<style>\n\n</style>","<script>\n\nimport {store} from \"../builderStore\";\nimport getIcon from \"../common/icon\";\nimport Button from \"../common/Button.svelte\";\nimport Modal from \"../common/Modal.svelte\";\nimport TriggerView from \"./TriggerView.svelte\";\n\n\nexport let editingTrigger = null;\nexport let editingTriggerIsNew = true;\nexport let onTriggerEdit = (trigger) => {};\nexport let onTriggerDelete = (trigger) => {};\nexport let onTriggerSave = (trigger) => {};\nexport let onTriggerCancel = () => {};\n\n$: isEditing = (editingTrigger !== null); \n\nlet triggerEditingFinished = (trigger) => {\n \n if(trigger) {\n onTriggerSave(trigger)\n } else {\n onTriggerCancel();\n }\n}\n\n</script>\n\n<h3 class=\"title\">Triggers</h3>\n\n{#if $store.triggers}\n<table class=\"fields-table uk-table uk-table-small uk-table-striped\">\n <thead>\n <tr>\n <th>Event</th>\n <th>Action</th>\n <th>Condition</th>\n <th>Create Options</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n {#each $store.triggers as trigger}\n <tr>\n <td class=\"table-content\">{trigger.eventName}</td>\n <td class=\"table-content\">{trigger.actionName}</td>\n <td class=\"table-content\">{trigger.condition}</td>\n <td class=\"table-content\">{trigger.optionsCreator}</td>\n <td class=\"edit-button\">\n <span on:click={() => onTriggerEdit(trigger)}>{@html getIcon(\"edit\")}</span>\n <span on:click={() => onTriggerDelete(trigger)}>{@html getIcon(\"trash\")}</span>\n </td>\n </tr>\n {/each}\n </tbody>\n</table>\n{:else}\n(no triggers added)\n{/if}\n\n\n<Modal bind:isOpen={isEditing}>\n {#if isEditing}\n <TriggerView trigger={editingTrigger}\n allActions={$store.actions}\n allTriggers={$store.triggers}\n onFinished={triggerEditingFinished}\n isNew={editingTriggerIsNew}/>\n {/if} \n</Modal>\n\n<style>\n\n.edit-button {\n cursor:pointer;\n color: var(--secondary25);\n}\n\n.title {\n margin: 3rem 0rem 0rem 0rem;\n font-weight: 700;\n}\n\n.table-content {\n font-weight: 500;\n font-size: .9rem;\n}\n\ntr:hover .edit-button {\n color: var(--secondary75);\n}\n\n</style>","<script>\n\nimport getIcon from \"../common/icon\";\nimport {store} from \"../builderStore\";\nimport Button from \"../common/Button.svelte\";\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport Actions from \"./Actions.svelte\";\nimport Triggers from \"./Triggers.svelte\";\nimport {getNewAction, getNewTrigger} from \"../common/core\";\n\nlet editingAction = null;\nlet editingActionIsNew = true;\nlet editingTrigger = null;\nlet editingTriggerIsNew = true;\n\nlet getDefaultOptionsHtml = defaultOptions => \n pipe(defaultOptions, [\n keys,\n map(k => `<span style=\"color:var(--slate)\">${k}: </span>${JSON.parse(typeOptions[k])}`),\n join(\"<br>\")\n ]);\n\nlet onActionEdit = (action) => {\n editingAction = action;\n editingActionIsNew = false;\n}\n\nlet newAction = () => {\n editingAction = getNewAction();\n editingActionIsNew = true;\n}\n\nlet onActionDelete = (action) => {\n store.deleteAction(action);\n}\n\nlet deleteTrigger = () => {}\n\nlet editTrigger = (trigger) => {\n editingTrigger = trigger;\n editingTriggerIsNew = false;\n}\n\nlet newTrigger = () => {\n editingTrigger = getNewTrigger();\n editingTriggerIsNew = true;\n}\n\nlet onActionSave = action => {\n store.saveAction(\n action, \n editingActionIsNew, \n editingAction);\n\n editingAction = null;\n}\n\nlet onActionCancel = () => {\n editingAction = null;\n}\n\nlet onTriggerSave = trigger => {\n store.saveTrigger(\n trigger, \n editingTriggerIsNew, \n editingTrigger);\n\n editingTrigger = null;\n}\n\nlet onTriggerCancel = () => {\n editingTrigger = null;\n}\n\nlet onTriggerEdit = (trigger) => {\n editingTrigger = trigger;\n editingTriggerIsNew = false;\n}\n\n\nlet onTriggerDelete = (trigger) => {\n store.deleteTrigger(trigger);\n}\n\n</script>\n\n<div class=\"root\">\n <div class=\"actions-header\">\n <ButtonGroup>\n <Button color=\"secondary\" \n grouped\n on:click={newAction}>Create New Action</Button>\n <Button color=\"tertiary\" \n grouped\n on:click={newTrigger}>Create New Trigger</Button>\n </ButtonGroup>\n </div>\n\n <div class=\"node-view\">\n <Actions {editingActionIsNew} {editingAction} \n {onActionEdit} {onActionDelete} {onActionSave}\n {onActionCancel} />\n\n <Triggers {editingTriggerIsNew} {editingTrigger} \n {onTriggerEdit} {onTriggerDelete} {onTriggerSave}\n {onTriggerCancel} />\n </div>\n\n</div>\n\n<style>\n\n.root {\n height: 100%;\n position: relative;\n padding: 1.5rem;\n\n}\n\n.actions-header {\n flex: 0 1 auto;\n}\n\n.node-view {\n overflow-y: auto;\n flex: 1 1 auto;\n}\n\n</style>","<script>\n\nimport {cloneDeep, map, some, filter} from \"lodash/fp\";\nimport Textbox from \"../common/Textbox.svelte\";\nimport Checkbox from \"../common/Checkbox.svelte\";\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport {validateAccessLevels} from \"../common/core\";\nimport ErrorsBox from \"../common/ErrorsBox.svelte\";\n\nexport let level;\nexport let allPermissions;\nexport let onFinished;\nexport let isNew;\nexport let allLevels;\nexport let hierarchy;\nexport let actions;\n\nlet errors = [];\nlet clonedLevel = cloneDeep(level);\n\nconst matchPermissions = (p1, p2) => \n p1.type === p2.type\n && \n ((!p2.nodeKey && !p1.nodeKey)\n || p2.nodeKey === p1.nodeKey);\n\nconst hasPermission = hasPerm => \n some(p => matchPermissions(p, hasPerm))\n (clonedLevel.permissions);\n\n$: permissionMatrix = \n map(p => ({permission:p, hasPermission: hasPermission(p)}))\n (allPermissions)\n\nconst getPermissionName = perm => \n perm.nodeKey\n ? `${perm.type} - ${perm.nodeKey}`\n : perm.type;\n\nconst save = () => {\n\n const newLevels = \n isNew \n ? [...allLevels, clonedLevel]\n : [...filter(l => l.name !== level.name)(allLevels), clonedLevel];\n\n errors = validateAccessLevels(\n hierarchy,\n actions,\n newLevels\n );\n\n if(errors.length > 0) return;\n\n onFinished(clonedLevel);\n}\n\nconst permissionChanged = perm => ev => {\n const hasPermission = ev.target.checked;\n\n if(hasPermission) {\n clonedLevel.permissions.push(perm);\n } else {\n clonedLevel.permissions = filter(p => !matchPermissions(p, perm))(clonedLevel.permissions);\n }\n}\n\n</script>\n\n<div>\n\n <ErrorsBox {errors} />\n\n <form class=\"uk-form-horizontal\">\n\n <Textbox label=\"Name\" bind:text={clonedLevel.name} />\n\n {#each permissionMatrix as permission}\n <div>\n <Checkbox label={getPermissionName(permission.permission)} \n checked={permission.hasPermission} \n on:change={permissionChanged(permission.permission)} />\n </div>\n {/each}\n\n </form>\n\n <ButtonGroup style=\"margin-top: 10px\">\n <Button color=\"primary\" grouped on:click={save}>Save</Button>\n <Button color=\"secondary\" grouped on:click={() => onFinished()}>Cancel</Button>\n </ButtonGroup>\n\n\n</div>\n\n<style>\n\n</style>","<script>\n\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport {store} from \"../builderStore\";\nimport {generateFullPermissions, getNewAccessLevel} from \"../common/core\";\nimport getIcon from \"../common/icon\";\nimport AccessLevelView from \"./AccessLevelView.svelte\";\nimport Modal from \"../common/Modal.svelte\";\n\nlet editingLevel = null;\nlet editingLevelIsNew = false;\n$: isEditing = (editingLevel !== null); \n\nlet allPermissions = [];\nstore.subscribe(db => {\n allPermissions = generateFullPermissions(db.hierarchy, db.actions);\n})\n\nlet onLevelEdit = (level) => {\n editingLevel = level;\n editingLevelIsNew = false;\n};\n\nlet onLevelCancel = () => {\n editingAction = null;\n};\n\nlet onLevelDelete = (level) => {\n store.deleteLevel(level);\n};\n\n\nlet createNewLevel = () => {\n editingLevelIsNew = true;\n editingLevel = getNewAccessLevel();\n}\n\nlet onEditingFinished = (level) => {\n if(level) {\n store.saveLevel(level, editingLevelIsNew, editingLevel);\n }\n editingLevel = null;\n}\n\nconst getPermissionsString = perms => {\n return `${perms.length} / ${allPermissions.length}`;\n}\n\n</script>\n\n<div class=\"root\">\n\n<ButtonGroup>\n <Button grouped color=\"secondary\" on:click={createNewLevel}>Create New Access Level</Button>\n</ButtonGroup>\n\n{#if $store.accessLevels}\n<table class=\"fields-table uk-table uk-table-small\">\n <thead>\n <tr>\n <th>Name</th>\n <th>Permissions</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n {#each $store.accessLevels.levels as level}\n <tr>\n <td >{level.name}</td>\n <td >{getPermissionsString(level.permissions)}</td>\n <td class=\"edit-button\">\n <span on:click={() => onLevelEdit(level)}>{@html getIcon(\"edit\")}</span>\n <span on:click={() => onLevelDelete(level)}>{@html getIcon(\"trash\")}</span>\n </td>\n </tr>\n {/each}\n </tbody>\n</table>\n{:else}\n(no actions added)\n{/if}\n\n\n<Modal bind:isOpen={isEditing}>\n {#if isEditing}\n <AccessLevelView level={editingLevel}\n allPermissions={allPermissions}\n onFinished={onEditingFinished}\n isNew={editingLevelIsNew}\n allLevels={$store.accessLevels.levels}\n hierarchy={$store.hierarchy}\n actions={$store.actions} />\n {/if} \n</Modal>\n\n\n</div>\n\n<style>\n\n.root {\n height: 100%;\n position: relative;\n padding: 1.5rem;\n\n}\n\n.actions-header {\n flex: 0 1 auto;\n}\n\n.node-view {\n overflow-y: auto;\n flex: 1 1 auto;\n}\n\n\n</style>","<script>\n\nimport BackendNav from \"./nav/BackendNav.svelte\";\nimport Database from \"./database/DatabaseRoot.svelte\" ;\nimport UserInterface from \"./userInterface/UserInterfaceRoot.svelte\" ;\nimport ActionsAndTriggers from \"./actionsAndTriggers/ActionsAndTriggersRoot.svelte\" ;\nimport AccessLevels from \"./accessLevels/AccessLevelsRoot.svelte\" ;\nimport ComingSoon from \"./common/ComingSoon.svelte\";\n\nimport {store} from \"./builderStore\";\n\nexport let navWidth = \"50px\";\n\n\n</script>\n\n<div class=\"root\">\n <div class=\"nav\">\n <BackendNav />\n </div>\n <div class=\"content\" \n style=\"width: calc(100% - {navWidth}); left: {navWidth}\"> \n {#if $store.activeNav === \"database\"}\n <Database />\n {:else if $store.activeNav === \"actions\"}\n <ActionsAndTriggers />\n {:else if $store.activeNav === \"access levels\"}\n <AccessLevels />\n {/if}\n </div>\n</div>\n\n\n\n<style>\n\n.root {\n height: 100%;\n display: flex;\n}\n\n\n.content {\n flex: 1 1 auto;\n height: 100%;\n background-color: var(--white);\n margin:0;\n}\n\n.nav {\n flex: 0 1 auto;\n width: 300px;\n height: 100%;\n}\n\n</style>","<script>\n\nimport IconButton from \"./common/IconButton.svelte\";\nimport { store } from \"./builderStore\";\nimport UserInterfaceRoot from \"./userInterface/UserInterfaceRoot.svelte\";\nimport BackendRoot from \"./BackendRoot.svelte\";\nimport { fade } from \"svelte/transition\";\n\n</script>\n\n<div class=\"root\">\n\n <div class=\"top-nav\">\n <IconButton icon=\"home\" \n color=\"var(--slate)\"\n hoverColor=\"var(--secondary75)\"/>\n <span class:active={$store.isBackend}\n class=\"topnavitem\"\n on:click={store.showBackend}>\n Backend\n </span>\n <span class:active={!$store.isBackend}\n class=\"topnavitem\"\n on:click={store.showFrontend}>\n Frontend\n </span>\n </div>\n\n <div class=\"content\">\n {#if $store.isBackend}\n <div in:fade out:fade>\n <BackendRoot />\n </div>\n {:else}\n <div in:fade out:fade>\n <UserInterfaceRoot />\n </div>\n {/if}\n </div>\n \n</div>\n\n<style>\n\n.root {\n height:100%;\n width:100%;\n display: flex;\n flex-direction: column;\n}\n\n.top-nav {\n flex: 0 0 auto;\n height: 25px;\n background: white;\n padding: 5px;\n width: 100%;\n}\n\n.content {\n flex: 1 1 auto;\n width: 100%;\n height: 100px;\n}\n\n.content > div {\n height:100%;\n width:100%;\n}\n\n.topnavitem {\n cursor: pointer;\n color: var(--secondary50);\n padding: 0px 15px;\n font-weight: 600;\n font-size: .9rem;\n}\n\n.topnavitem:hover {\n color: var(--secondary75);\n font-weight: 600;\n\n}\n\n.active {\n color: var(--primary100);\n font-weight: 900;\n}\n\n\n</style>","<script>\n\t\n\timport NoPackage from \"./NoPackage.svelte\";\n\timport PackageRoot from \"./PackageRoot.svelte\";\n\timport Settings from \"./Settings.svelte\";\n\timport {store, initialise} from \"./builderStore\";\n\timport { onMount } from 'svelte';\n\timport IconButton from \"./common/IconButton.svelte\";\n\n\tlet init = initialise();\n\n</script>\n\n<main>\n\n\t{#await init}\n\t\n\t\t<h1>loading</h1>\n\n\t{:then result}\n\n\t\t{#if $store.hasAppPackage}\n\t\t<PackageRoot />\n\n\t\t{:else}\n\n\t\t<NoPackage />\n\t\t{/if}\n\n\n\t{:catch err}\n\t\t<h1 style=\"color:red\">{err}</h1>\n\t{/await}\n\n<!--\n\t<div class=\"settings\">\n\t\t<IconButton icon=\"settings\"\n on:click={store.showSettings}/>\n\t</div>\n\n\n\t{#if $store.useAnalytics}\n\t\t<iframe src=\"https://marblekirby.github.io/bb-analytics.html\" width=\"0\" height=\"0\" style=\"visibility:hidden;display:none\"/>\n\t{/if}\n-->\n</main>\n\n<style>\n\tmain {\n\t\theight: 100%;\n\t\twidth: 100%;\n\t\tfont-family: \"Roboto\", Helvetica, Arial, sans-serif;\n\t}\n\n\t.settings {\n\t\tposition: absolute;\n\t\tbottom: 25px;\n\t\tright: 25px;\n\t}\n</style>","/*! UIkit 3.2.0 | http://www.getuikit.com | (c) 2014 - 2019 YOOtheme | MIT License */\n\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(\"uikit\",e):(t=t||self).UIkit=e()}(this,function(){\"use strict\";var e=Object.prototype,n=e.hasOwnProperty;function c(t,e){return n.call(t,e)}var i={},r=/([a-z\\d])([A-Z])/g;function d(t){return t in i||(i[t]=t.replace(r,\"$1-$2\").toLowerCase()),i[t]}var o=/-(\\w)/g;function f(t){return t.replace(o,s)}function s(t,e){return e?e.toUpperCase():\"\"}function p(t){return t.length?s(0,t.charAt(0))+t.slice(1):\"\"}var t=String.prototype,a=t.startsWith||function(t){return 0===this.lastIndexOf(t,0)};function w(t,e){return a.call(t,e)}var h=t.endsWith||function(t){return this.substr(-t.length)===t};function u(t,e){return h.call(t,e)}function l(t,e){return~this.indexOf(t,e)}var m=Array.prototype,g=t.includes||l,v=m.includes||l;function b(t,e){return t&&(O(t)?g:v).call(t,e)}var y=m.findIndex||function(t){for(var e=arguments,n=0;n<this.length;n++)if(t.call(e[1],this[n],n,this))return n;return-1};function x(t,e){return y.call(t,e)}var k=Array.isArray;function $(t){return\"function\"==typeof t}function I(t){return null!==t&&\"object\"==typeof t}function S(t){return I(t)&&Object.getPrototypeOf(t)===e}function T(t){return I(t)&&t===t.window}function E(t){return I(t)&&9===t.nodeType}function C(t){return I(t)&&!!t.jquery}function A(t){return t instanceof Node||I(t)&&1<=t.nodeType}var _=e.toString;function N(t){return _.call(t).match(/^\\[object (NodeList|HTMLCollection)\\]$/)}function M(t){return\"boolean\"==typeof t}function O(t){return\"string\"==typeof t}function D(t){return\"number\"==typeof t}function z(t){return D(t)||O(t)&&!isNaN(t-parseFloat(t))}function B(t){return!(k(t)?t.length:I(t)&&Object.keys(t).length)}function P(t){return void 0===t}function H(t){return M(t)?t:\"true\"===t||\"1\"===t||\"\"===t||\"false\"!==t&&\"0\"!==t&&t}function L(t){var e=Number(t);return!isNaN(e)&&e}function F(t){return parseFloat(t)||0}function j(t){return A(t)||T(t)||E(t)?t:N(t)||C(t)?t[0]:k(t)?j(t[0]):null}function W(t){return A(t)?[t]:N(t)?m.slice.call(t):k(t)?t.map(j).filter(Boolean):C(t)?t.toArray():[]}function V(t){return k(t)?t:O(t)?t.split(/,(?![^(]*\\))/).map(function(t){return z(t)?L(t):H(t.trim())}):[t]}function R(t){return t?u(t,\"ms\")?F(t):1e3*F(t):0}function Y(t,n){return t===n||I(t)&&I(n)&&Object.keys(t).length===Object.keys(n).length&&K(t,function(t,e){return t===n[e]})}function q(t,e,n){return t.replace(new RegExp(e+\"|\"+n,\"mg\"),function(t){return t===e?n:e})}var U=Object.assign||function(t){for(var e=[],n=arguments.length-1;0<n--;)e[n]=arguments[n+1];t=Object(t);for(var i=0;i<e.length;i++){var r=e[i];if(null!==r)for(var o in r)c(r,o)&&(t[o]=r[o])}return t};function X(t){return t[t.length-1]}function K(t,e){for(var n in t)if(!1===e(t[n],n))return!1;return!0}function G(t,r){return t.sort(function(t,e){var n=t[r];void 0===n&&(n=0);var i=e[r];return void 0===i&&(i=0),i<n?1:n<i?-1:0})}function J(t,n){var i=new Set;return t.filter(function(t){var e=t[n];return!i.has(e)&&(i.add(e)||!0)})}function Z(t,e,n){return void 0===e&&(e=0),void 0===n&&(n=1),Math.min(Math.max(L(t)||0,e),n)}function Q(){}function tt(t,e){return t.left<e.right&&t.right>e.left&&t.top<e.bottom&&t.bottom>e.top}function et(t,e){return t.x<=e.right&&t.x>=e.left&&t.y<=e.bottom&&t.y>=e.top}var nt={ratio:function(t,e,n){var i,r=\"width\"===e?\"height\":\"width\";return(i={})[r]=t[e]?Math.round(n*t[r]/t[e]):t[r],i[e]=n,i},contain:function(n,i){var r=this;return K(n=U({},n),function(t,e){return n=n[e]>i[e]?r.ratio(n,e,i[e]):n}),n},cover:function(n,i){var r=this;return K(n=this.contain(n,i),function(t,e){return n=n[e]<i[e]?r.ratio(n,e,i[e]):n}),n}};function it(t,e,n){if(I(e))for(var i in e)it(t,i,e[i]);else{if(P(n))return(t=j(t))&&t.getAttribute(e);W(t).forEach(function(t){$(n)&&(n=n.call(t,it(t,e))),null===n?ot(t,e):t.setAttribute(e,n)})}}function rt(t,e){return W(t).some(function(t){return t.hasAttribute(e)})}function ot(t,e){t=W(t),e.split(\" \").forEach(function(e){return t.forEach(function(t){return t.hasAttribute(e)&&t.removeAttribute(e)})})}function st(t,e){for(var n=0,i=[e,\"data-\"+e];n<i.length;n++)if(rt(t,i[n]))return it(t,i[n])}var at=/msie|trident/i.test(window.navigator.userAgent),ht=\"rtl\"===it(document.documentElement,\"dir\"),ct=\"ontouchstart\"in window,ut=window.PointerEvent,lt=ct||window.DocumentTouch&&document instanceof DocumentTouch||navigator.maxTouchPoints,dt=ut?\"pointerdown\":ct?\"touchstart\":\"mousedown\",ft=ut?\"pointermove\":ct?\"touchmove\":\"mousemove\",pt=ut?\"pointerup\":ct?\"touchend\":\"mouseup\",mt=ut?\"pointerenter\":ct?\"\":\"mouseenter\",gt=ut?\"pointerleave\":ct?\"\":\"mouseleave\",vt=ut?\"pointercancel\":\"touchcancel\";function wt(t,e){return j(t)||xt(t,yt(t,e))}function bt(t,e){var n=W(t);return n.length&&n||kt(t,yt(t,e))}function yt(t,e){return void 0===e&&(e=document),Tt(t)||E(e)?e:e.ownerDocument}function xt(t,e){return j($t(t,e,\"querySelector\"))}function kt(t,e){return W($t(t,e,\"querySelectorAll\"))}function $t(t,s,e){if(void 0===s&&(s=document),!t||!O(t))return null;var a;Tt(t=t.replace(St,\"$1 *\"))&&(a=[],t=function(t){return t.match(Et).map(function(t){return t.replace(/,$/,\"\").trim()})}(t).map(function(t,e){var n=s;if(\"!\"===t[0]){var i=t.substr(1).trim().split(\" \");n=Mt(s.parentNode,i[0]),t=i.slice(1).join(\" \").trim()}if(\"-\"===t[0]){var r=t.substr(1).trim().split(\" \"),o=(n||s).previousElementSibling;n=_t(o,t.substr(1))?o:null,t=r.slice(1).join(\" \")}return n?(n.id||(n.id=\"uk-\"+Date.now()+e,a.push(function(){return ot(n,\"id\")})),\"#\"+zt(n.id)+\" \"+t):null}).filter(Boolean).join(\",\"),s=document);try{return s[e](t)}catch(t){return null}finally{a&&a.forEach(function(t){return t()})}}var It=/(^|[^\\\\],)\\s*[!>+~-]/,St=/([!>+~-])(?=\\s+[!>+~-]|\\s*$)/g;function Tt(t){return O(t)&&t.match(It)}var Et=/.*?[^\\\\](?:,|$)/g;var Ct=Element.prototype,At=Ct.matches||Ct.webkitMatchesSelector||Ct.msMatchesSelector;function _t(t,e){return W(t).some(function(t){return At.call(t,e)})}var Nt=Ct.closest||function(t){var e=this;do{if(_t(e,t))return e;e=e.parentNode}while(e&&1===e.nodeType)};function Mt(t,e){return w(e,\">\")&&(e=e.slice(1)),A(t)?Nt.call(t,e):W(t).map(function(t){return Mt(t,e)}).filter(Boolean)}function Ot(t,e){var n=[];for(t=j(t);(t=t.parentNode)&&1===t.nodeType;)_t(t,e)&&n.push(t);return n}var Dt=window.CSS&&CSS.escape||function(t){return t.replace(/([^\\x7f-\\uFFFF\\w-])/g,function(t){return\"\\\\\"+t})};function zt(t){return O(t)?Dt.call(null,t):\"\"}var Bt={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,menuitem:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0};function Pt(t){return W(t).some(function(t){return Bt[t.tagName.toLowerCase()]})}function Ht(t){return W(t).some(function(t){return t.offsetWidth||t.offsetHeight||t.getClientRects().length})}var Lt=\"input,select,textarea,button\";function Ft(t){return W(t).some(function(t){return _t(t,Lt)})}function jt(t,e){return W(t).filter(function(t){return _t(t,e)})}function Wt(t,e){return O(e)?_t(t,e)||Mt(t,e):t===e||(E(e)?e.documentElement:j(e)).contains(j(t))}function Vt(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n=Xt(t),i=n[0],r=n[1],o=n[2],s=n[3],a=n[4];return i=Zt(i),1<s.length&&(s=function(e){return function(t){return k(t.detail)?e.apply(void 0,[t].concat(t.detail)):e(t)}}(s)),o&&(s=function(t,i,r){var o=this;return function(n){t.forEach(function(t){var e=\">\"===i[0]?kt(i,t).reverse().filter(function(t){return Wt(n.target,t)})[0]:Mt(n.target,i);e&&(n.delegate=t,n.current=e,r.call(o,n))})}}(i,o,s)),a&&a.self&&(s=function(e){return function(t){if(t.target===t.currentTarget||t.target===t.current)return e.call(null,t)}}(s)),a=Kt(a),r.split(\" \").forEach(function(e){return i.forEach(function(t){return t.addEventListener(e,s,a)})}),function(){return Rt(i,r,s,a)}}function Rt(t,e,n,i){void 0===i&&(i=!1),i=Kt(i),t=Zt(t),e.split(\" \").forEach(function(e){return t.forEach(function(t){return t.removeEventListener(e,n,i)})})}function Yt(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n=Xt(t),i=n[0],r=n[1],o=n[2],s=n[3],a=n[4],h=n[5],c=Vt(i,r,o,function(t){var e=!h||h(t);e&&(c(),s(t,e))},a);return c}function qt(t,n,i){return Zt(t).reduce(function(t,e){return t&&e.dispatchEvent(Ut(n,!0,!0,i))},!0)}function Ut(t,e,n,i){if(void 0===e&&(e=!0),void 0===n&&(n=!1),O(t)){var r=document.createEvent(\"CustomEvent\");r.initCustomEvent(t,e,n,i),t=r}return t}function Xt(t){return $(t[2])&&t.splice(2,0,!1),t}function Kt(t){return t&&at&&!M(t)?!!t.capture:t}function Gt(t){return t&&\"addEventListener\"in t}function Jt(t){return Gt(t)?t:j(t)}function Zt(t){return k(t)?t.map(Jt).filter(Boolean):O(t)?kt(t):Gt(t)?[t]:W(t)}function Qt(t){return\"touch\"===t.pointerType||!!t.touches}function te(t,e){void 0===e&&(e=\"client\");var n=t.touches,i=t.changedTouches,r=n&&n[0]||i&&i[0]||t;return{x:r[e+\"X\"],y:r[e+\"Y\"]}}function ee(){var n=this;this.promise=new ne(function(t,e){n.reject=e,n.resolve=t})}var ne=\"Promise\"in window?window.Promise:oe,ie=2,re=\"setImmediate\"in window?setImmediate:setTimeout;function oe(t){this.state=ie,this.value=void 0,this.deferred=[];var e=this;try{t(function(t){e.resolve(t)},function(t){e.reject(t)})}catch(t){e.reject(t)}}oe.reject=function(n){return new oe(function(t,e){e(n)})},oe.resolve=function(n){return new oe(function(t,e){t(n)})},oe.all=function(s){return new oe(function(n,t){var i=[],r=0;function e(e){return function(t){i[e]=t,(r+=1)===s.length&&n(i)}}0===s.length&&n(i);for(var o=0;o<s.length;o+=1)oe.resolve(s[o]).then(e(o),t)})},oe.race=function(i){return new oe(function(t,e){for(var n=0;n<i.length;n+=1)oe.resolve(i[n]).then(t,e)})};var se=oe.prototype;function ae(s,a){return new ne(function(t,e){var n=U({data:null,method:\"GET\",headers:{},xhr:new XMLHttpRequest,beforeSend:Q,responseType:\"\"},a);n.beforeSend(n);var i=n.xhr;for(var r in n)if(r in i)try{i[r]=n[r]}catch(t){}for(var o in i.open(n.method.toUpperCase(),s),n.headers)i.setRequestHeader(o,n.headers[o]);Vt(i,\"load\",function(){0===i.status||200<=i.status&&i.status<300||304===i.status?t(i):e(U(Error(i.statusText),{xhr:i,status:i.status}))}),Vt(i,\"error\",function(){return e(U(Error(\"Network Error\"),{xhr:i}))}),Vt(i,\"timeout\",function(){return e(U(Error(\"Network Timeout\"),{xhr:i}))}),i.send(n.data)})}function he(i,r,o){return new ne(function(t,e){var n=new Image;n.onerror=e,n.onload=function(){return t(n)},o&&(n.sizes=o),r&&(n.srcset=r),n.src=i})}function ce(t){if(\"loading\"===document.readyState)var e=Vt(document,\"DOMContentLoaded\",function(){e(),t()});else t()}function ue(t,e){return e?W(t).indexOf(j(e)):W((t=j(t))&&t.parentNode.children).indexOf(t)}function le(t,e,n,i){void 0===n&&(n=0),void 0===i&&(i=!1);var r=(e=W(e)).length;return t=z(t)?L(t):\"next\"===t?n+1:\"previous\"===t?n-1:ue(e,t),i?Z(t,0,r-1):(t%=r)<0?t+r:t}function de(t){return(t=Te(t)).innerHTML=\"\",t}function fe(t,e){return t=Te(t),P(e)?t.innerHTML:pe(t.hasChildNodes()?de(t):t,e)}function pe(e,t){return e=Te(e),ve(t,function(t){return e.appendChild(t)})}function me(e,t){return e=Te(e),ve(t,function(t){return e.parentNode.insertBefore(t,e)})}function ge(e,t){return e=Te(e),ve(t,function(t){return e.nextSibling?me(e.nextSibling,t):pe(e.parentNode,t)})}function ve(t,e){return(t=O(t)?Ie(t):t)?\"length\"in t?W(t).map(e):e(t):null}function we(t){W(t).map(function(t){return t.parentNode&&t.parentNode.removeChild(t)})}function be(t,e){for(e=j(me(t,e));e.firstChild;)e=e.firstChild;return pe(e,t),e}function ye(t,e){return W(W(t).map(function(t){return t.hasChildNodes?be(W(t.childNodes),e):pe(t,e)}))}function xe(t){W(t).map(function(t){return t.parentNode}).filter(function(t,e,n){return n.indexOf(t)===e}).forEach(function(t){me(t,t.childNodes),we(t)})}se.resolve=function(t){var e=this;if(e.state===ie){if(t===e)throw new TypeError(\"Promise settled with itself.\");var n=!1;try{var i=t&&t.then;if(null!==t&&I(t)&&$(i))return void i.call(t,function(t){n||e.resolve(t),n=!0},function(t){n||e.reject(t),n=!0})}catch(t){return void(n||e.reject(t))}e.state=0,e.value=t,e.notify()}},se.reject=function(t){var e=this;if(e.state===ie){if(t===e)throw new TypeError(\"Promise settled with itself.\");e.state=1,e.value=t,e.notify()}},se.notify=function(){var o=this;re(function(){if(o.state!==ie)for(;o.deferred.length;){var t=o.deferred.shift(),e=t[0],n=t[1],i=t[2],r=t[3];try{0===o.state?$(e)?i(e.call(void 0,o.value)):i(o.value):1===o.state&&($(n)?i(n.call(void 0,o.value)):r(o.value))}catch(t){r(t)}}})},se.then=function(n,i){var r=this;return new oe(function(t,e){r.deferred.push([n,i,t,e]),r.notify()})},se.catch=function(t){return this.then(void 0,t)};var ke=/^\\s*<(\\w+|!)[^>]*>/,$e=/^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/;function Ie(t){var e=$e.exec(t);if(e)return document.createElement(e[1]);var n=document.createElement(\"div\");return ke.test(t)?n.insertAdjacentHTML(\"beforeend\",t.trim()):n.textContent=t,1<n.childNodes.length?W(n.childNodes):n.firstChild}function Se(t,e){if(t&&1===t.nodeType)for(e(t),t=t.firstElementChild;t;)Se(t,e),t=t.nextElementSibling}function Te(t,e){return O(t)?Ce(t)?j(Ie(t)):xt(t,e):j(t)}function Ee(t,e){return O(t)?Ce(t)?W(Ie(t)):kt(t,e):W(t)}function Ce(t){return\"<\"===t[0]||t.match(/^\\s*</)}function Ae(t){for(var e=[],n=arguments.length-1;0<n--;)e[n]=arguments[n+1];ze(t,e,\"add\")}function _e(t){for(var e=[],n=arguments.length-1;0<n--;)e[n]=arguments[n+1];ze(t,e,\"remove\")}function Ne(t,e){it(t,\"class\",function(t){return(t||\"\").replace(new RegExp(\"\\\\b\"+e+\"\\\\b\",\"g\"),\"\")})}function Me(t){for(var e=[],n=arguments.length-1;0<n--;)e[n]=arguments[n+1];e[0]&&_e(t,e[0]),e[1]&&Ae(t,e[1])}function Oe(t,e){return e&&W(t).some(function(t){return t.classList.contains(e.split(\" \")[0])})}function De(t){for(var i=[],e=arguments.length-1;0<e--;)i[e]=arguments[e+1];if(i.length){var r=O(X(i=Be(i)))?[]:i.pop();i=i.filter(Boolean),W(t).forEach(function(t){for(var e=t.classList,n=0;n<i.length;n++)Pe.Force?e.toggle.apply(e,[i[n]].concat(r)):e[(P(r)?!e.contains(i[n]):r)?\"add\":\"remove\"](i[n])})}}function ze(t,n,i){(n=Be(n).filter(Boolean)).length&&W(t).forEach(function(t){var e=t.classList;Pe.Multiple?e[i].apply(e,n):n.forEach(function(t){return e[i](t)})})}function Be(t){return t.reduce(function(t,e){return t.concat.call(t,O(e)&&b(e,\" \")?e.trim().split(\" \"):e)},[])}var Pe={get Multiple(){return this.get(\"_multiple\")},get Force(){return this.get(\"_force\")},get:function(t){if(!c(this,t)){var e=document.createElement(\"_\").classList;e.add(\"a\",\"b\"),e.toggle(\"c\",!1),this._multiple=e.contains(\"b\"),this._force=!e.contains(\"c\")}return this[t]}},He={\"animation-iteration-count\":!0,\"column-count\":!0,\"fill-opacity\":!0,\"flex-grow\":!0,\"flex-shrink\":!0,\"font-weight\":!0,\"line-height\":!0,opacity:!0,order:!0,orphans:!0,\"stroke-dasharray\":!0,\"stroke-dashoffset\":!0,widows:!0,\"z-index\":!0,zoom:!0};function Le(t,e,r){return W(t).map(function(n){if(O(e)){if(e=Ye(e),P(r))return je(n,e);r||D(r)?n.style[e]=z(r)&&!He[e]?r+\"px\":r:n.style.removeProperty(e)}else{if(k(e)){var i=Fe(n);return e.reduce(function(t,e){return t[e]=i[Ye(e)],t},{})}I(e)&&K(e,function(t,e){return Le(n,e,t)})}return n})[0]}function Fe(t,e){return(t=j(t)).ownerDocument.defaultView.getComputedStyle(t,e)}function je(t,e,n){return Fe(t,n)[e]}var We={};function Ve(t){var e=document.documentElement;if(!at)return Fe(e).getPropertyValue(\"--uk-\"+t);if(!(t in We)){var n=pe(e,document.createElement(\"div\"));Ae(n,\"uk-\"+t),We[t]=je(n,\"content\",\":before\").replace(/^[\"'](.*)[\"']$/,\"$1\"),we(n)}return We[t]}var Re={};function Ye(t){var e=Re[t];return e=e||(Re[t]=function(t){t=d(t);var e=document.documentElement.style;if(t in e)return t;var n,i=qe.length;for(;i--;)if((n=\"-\"+qe[i]+\"-\"+t)in e)return n}(t)||t)}var qe=[\"webkit\",\"moz\",\"ms\"];function Ue(t,s,a,h){return void 0===a&&(a=400),void 0===h&&(h=\"linear\"),ne.all(W(t).map(function(o){return new ne(function(n,i){for(var t in s){var e=Le(o,t);\"\"===e&&Le(o,t,e)}var r=setTimeout(function(){return qt(o,\"transitionend\")},a);Yt(o,\"transitionend transitioncanceled\",function(t){var e=t.type;clearTimeout(r),_e(o,\"uk-transition\"),Le(o,{\"transition-property\":\"\",\"transition-duration\":\"\",\"transition-timing-function\":\"\"}),\"transitioncanceled\"===e?i():n()},{self:!0}),Ae(o,\"uk-transition\"),Le(o,U({\"transition-property\":Object.keys(s).map(Ye).join(\",\"),\"transition-duration\":a+\"ms\",\"transition-timing-function\":h},s))})}))}var Xe={start:Ue,stop:function(t){return qt(t,\"transitionend\"),ne.resolve()},cancel:function(t){qt(t,\"transitioncanceled\")},inProgress:function(t){return Oe(t,\"uk-transition\")}},Ke=\"uk-animation-\",Ge=\"uk-cancel-animation\";function Je(t,e,n,a,h){var c=arguments;return void 0===n&&(n=200),ne.all(W(t).map(function(s){return new ne(function(i,r){if(Oe(s,Ge))requestAnimationFrame(function(){return ne.resolve().then(function(){return Je.apply(void 0,c).then(i,r)})});else{var t=e+\" \"+Ke+(h?\"leave\":\"enter\");w(e,Ke)&&(a&&(t+=\" uk-transform-origin-\"+a),h&&(t+=\" \"+Ke+\"reverse\")),o(),Yt(s,\"animationend animationcancel\",function(t){var e=t.type,n=!1;\"animationcancel\"===e?(r(),o()):(i(),ne.resolve().then(function(){n=!0,o()})),requestAnimationFrame(function(){n||(Ae(s,Ge),requestAnimationFrame(function(){return _e(s,Ge)}))})},{self:!0}),Le(s,\"animationDuration\",n+\"ms\"),Ae(s,t)}function o(){Le(s,\"animationDuration\",\"\"),Ne(s,Ke+\"\\\\S*\")}})}))}var Ze=new RegExp(Ke+\"(enter|leave)\"),Qe={in:function(t,e,n,i){return Je(t,e,n,i,!1)},out:function(t,e,n,i){return Je(t,e,n,i,!0)},inProgress:function(t){return Ze.test(it(t,\"class\"))},cancel:function(t){qt(t,\"animationcancel\")}},tn={width:[\"x\",\"left\",\"right\"],height:[\"y\",\"top\",\"bottom\"]};function en(t,e,u,l,d,n,i,r){u=ln(u),l=ln(l);var f={element:u,target:l};if(!t||!e)return f;var p=rn(t),m=rn(e),g=m;if(un(g,u,p,-1),un(g,l,m,1),d=dn(d,p.width,p.height),n=dn(n,m.width,m.height),d.x+=n.x,d.y+=n.y,g.left+=d.x,g.top+=d.y,i){var o=[rn(yn(t))];r&&o.unshift(rn(r)),K(tn,function(t,s){var a=t[0],h=t[1],c=t[2];!0!==i&&!b(i,a)||o.some(function(i){var t=u[a]===h?-p[s]:u[a]===c?p[s]:0,e=l[a]===h?m[s]:l[a]===c?-m[s]:0;if(g[h]<i[h]||g[h]+p[s]>i[c]){var n=p[s]/2,r=\"center\"===l[a]?-m[s]/2:0;return\"center\"===u[a]&&(o(n,r)||o(-n,-r))||o(t,e)}function o(e,t){var n=g[h]+e+t-2*d[a];if(n>=i[h]&&n+p[s]<=i[c])return g[h]=n,[\"element\",\"target\"].forEach(function(t){f[t][a]=e?f[t][a]===tn[s][1]?tn[s][2]:tn[s][1]:f[t][a]}),!0}})})}return nn(t,g),f}function nn(n,i){if(n=j(n),!i)return rn(n);var r=nn(n),o=Le(n,\"position\");[\"left\",\"top\"].forEach(function(t){if(t in i){var e=Le(n,t);Le(n,t,i[t]-r[t]+F(\"absolute\"===o&&\"auto\"===e?on(n)[t]:e))}})}function rn(t){if(!(t=j(t)))return{};var e,n,i=yn(t),r=i.pageYOffset,o=i.pageXOffset;if(T(t)){var s=t.innerHeight,a=t.innerWidth;return{top:r,left:o,height:s,width:a,bottom:r+s,right:o+a}}Ht(t)||\"none\"!==Le(t,\"display\")||(e=it(t,\"style\"),n=it(t,\"hidden\"),it(t,{style:(e||\"\")+\";display:block !important;\",hidden:null}));var h=t.getBoundingClientRect();return P(e)||it(t,{style:e,hidden:n}),{height:h.height,width:h.width,top:h.top+r,left:h.left+o,bottom:h.bottom+r,right:h.right+o}}function on(i){var r=(i=j(i)).offsetParent||function(t){return xn(t).documentElement}(i),o=nn(r),t=[\"top\",\"left\"].reduce(function(t,e){var n=p(e);return t[e]-=o[e]+F(Le(i,\"margin\"+n))+F(Le(r,\"border\"+n+\"Width\")),t},nn(i));return{top:t.top,left:t.left}}var sn=hn(\"height\"),an=hn(\"width\");function hn(i){var r=p(i);return function(t,e){if(t=j(t),P(e)){if(T(t))return t[\"inner\"+r];if(E(t)){var n=t.documentElement;return Math.max(n[\"offset\"+r],n[\"scroll\"+r])}return(e=\"auto\"===(e=Le(t,i))?t[\"offset\"+r]:F(e)||0)-cn(i,t)}Le(t,i,e||0===e?+e+cn(i,t)+\"px\":\"\")}}function cn(t,n,e){return void 0===e&&(e=\"border-box\"),Le(n,\"boxSizing\")===e?tn[t].slice(1).map(p).reduce(function(t,e){return t+F(Le(n,\"padding\"+e))+F(Le(n,\"border\"+e+\"Width\"))},0):0}function un(o,s,a,h){K(tn,function(t,e){var n=t[0],i=t[1],r=t[2];s[n]===r?o[i]+=a[e]*h:\"center\"===s[n]&&(o[i]+=a[e]*h/2)})}function ln(t){var e=/left|center|right/,n=/top|center|bottom/;return 1===(t=(t||\"\").split(\" \")).length&&(t=e.test(t[0])?t.concat([\"center\"]):n.test(t[0])?[\"center\"].concat(t):[\"center\",\"center\"]),{x:e.test(t[0])?t[0]:\"center\",y:n.test(t[1])?t[1]:\"center\"}}function dn(t,e,n){var i=(t||\"\").split(\" \"),r=i[0],o=i[1];return{x:r?F(r)*(u(r,\"%\")?e/100:1):0,y:o?F(o)*(u(o,\"%\")?n/100:1):0}}function fn(t){switch(t){case\"left\":return\"right\";case\"right\":return\"left\";case\"top\":return\"bottom\";case\"bottom\":return\"top\";default:return t}}function pn(t,e,n){if(void 0===e&&(e=0),void 0===n&&(n=0),!Ht(t))return!1;var i=yn(t=j(t)),r=t.getBoundingClientRect(),o={top:-e,left:-n,bottom:e+sn(i),right:n+an(i)};return tt(r,o)||et({x:r.left,y:r.top},o)}function mn(t,e){if(void 0===e&&(e=0),!Ht(t))return 0;var n=yn(t=j(t)),i=xn(t),r=t.offsetHeight+e,o=vn(t)[0],s=sn(n),a=s+Math.min(0,o-s),h=Math.max(0,s-(sn(i)+e-(o+r)));return Z((a+n.pageYOffset-o)/((a+(r-(h<s?h:0)))/100)/100)}function gn(t,e){if(T(t=j(t))||E(t)){var n=yn(t);(0,n.scrollTo)(n.pageXOffset,e)}else t.scrollTop=e}function vn(t){var e=[0,0];do{if(e[0]+=t.offsetTop,e[1]+=t.offsetLeft,\"fixed\"===Le(t,\"position\")){var n=yn(t);return e[0]+=n.pageYOffset,e[1]+=n.pageXOffset,e}}while(t=t.offsetParent);return e}function wn(t,e,n){return void 0===e&&(e=\"width\"),void 0===n&&(n=window),z(t)?+t:u(t,\"vh\")?bn(sn(yn(n)),t):u(t,\"vw\")?bn(an(yn(n)),t):u(t,\"%\")?bn(rn(n)[e],t):F(t)}function bn(t,e){return t*F(e)/100}function yn(t){return T(t)?t:xn(t).defaultView}function xn(t){return j(t).ownerDocument}var kn={reads:[],writes:[],read:function(t){return this.reads.push(t),In(),t},write:function(t){return this.writes.push(t),In(),t},clear:function(t){return Tn(this.reads,t)||Tn(this.writes,t)},flush:$n};function $n(){Sn(kn.reads),Sn(kn.writes.splice(0,kn.writes.length)),kn.scheduled=!1,(kn.reads.length||kn.writes.length)&&In(!0)}function In(t){void 0===t&&(t=!1),kn.scheduled||(kn.scheduled=!0,t?ne.resolve().then($n):requestAnimationFrame($n))}function Sn(t){for(var e;e=t.shift();)e()}function Tn(t,e){var n=t.indexOf(e);return!!~n&&!!t.splice(n,1)}function En(){}function Cn(t,e){return(e.y-t.y)/(e.x-t.x)}En.prototype={positions:[],position:null,init:function(){var i=this;this.positions=[],this.position=null;var r=!1;this.unbind=Vt(document,\"mousemove\",function(n){r||(setTimeout(function(){var t=Date.now(),e=i.positions.length;e&&100<t-i.positions[e-1].time&&i.positions.splice(0,e),i.positions.push({time:t,x:n.pageX,y:n.pageY}),5<i.positions.length&&i.positions.shift(),r=!1},5),r=!0)})},cancel:function(){this.unbind&&this.unbind()},movesTo:function(t){if(this.positions.length<2)return!1;var e=nn(t),n=X(this.positions),i=this.positions[0];if(e.left<=n.x&&n.x<=e.right&&e.top<=n.y&&n.y<=e.bottom)return!1;var r=[[{x:e.left,y:e.top},{x:e.right,y:e.bottom}],[{x:e.right,y:e.top},{x:e.left,y:e.bottom}]];return e.right<=n.x||(e.left>=n.x?(r[0].reverse(),r[1].reverse()):e.bottom<=n.y?r[0].reverse():e.top>=n.y&&r[1].reverse()),!!r.reduce(function(t,e){return t+(Cn(i,e[0])<Cn(n,e[0])&&Cn(i,e[1])>Cn(n,e[1]))},0)}};var An={};function _n(t,e,n){return An.computed($(t)?t.call(n,n):t,$(e)?e.call(n,n):e)}function Nn(t,e){return t=t&&!k(t)?[t]:t,e?t?t.concat(e):k(e)?e:[e]:t}function Mn(e,n,i){var r={};if($(n)&&(n=n.options),n.extends&&(e=Mn(e,n.extends,i)),n.mixins)for(var t=0,o=n.mixins.length;t<o;t++)e=Mn(e,n.mixins[t],i);for(var s in e)h(s);for(var a in n)c(e,a)||h(a);function h(t){r[t]=(An[t]||function(t,e){return P(e)?t:e})(e[t],n[t],i)}return r}function On(t,e){var n;void 0===e&&(e=[]);try{return t?w(t,\"{\")?JSON.parse(t):e.length&&!b(t,\":\")?((n={})[e[0]]=t,n):t.split(\";\").reduce(function(t,e){var n=e.split(/:(.*)/),i=n[0],r=n[1];return i&&!P(r)&&(t[i.trim()]=r.trim()),t},{}):{}}catch(t){return{}}}An.events=An.created=An.beforeConnect=An.connected=An.beforeDisconnect=An.disconnected=An.destroy=Nn,An.args=function(t,e){return!1!==e&&Nn(e||t)},An.update=function(t,e){return G(Nn(t,$(e)?{read:e}:e),\"order\")},An.props=function(t,e){return k(e)&&(e=e.reduce(function(t,e){return t[e]=String,t},{})),An.methods(t,e)},An.computed=An.methods=function(t,e){return e?t?U({},t,e):e:t},An.data=function(e,n,t){return t?_n(e,n,t):n?e?function(t){return _n(e,n,t)}:n:e};function Dn(t){this.id=++zn,this.el=j(t)}var zn=0;function Bn(t,e){try{t.contentWindow.postMessage(JSON.stringify(U({event:\"command\"},e)),\"*\")}catch(t){}}Dn.prototype.isVideo=function(){return this.isYoutube()||this.isVimeo()||this.isHTML5()},Dn.prototype.isHTML5=function(){return\"VIDEO\"===this.el.tagName},Dn.prototype.isIFrame=function(){return\"IFRAME\"===this.el.tagName},Dn.prototype.isYoutube=function(){return this.isIFrame()&&!!this.el.src.match(/\\/\\/.*?youtube(-nocookie)?\\.[a-z]+\\/(watch\\?v=[^&\\s]+|embed)|youtu\\.be\\/.*/)},Dn.prototype.isVimeo=function(){return this.isIFrame()&&!!this.el.src.match(/vimeo\\.com\\/video\\/.*/)},Dn.prototype.enableApi=function(){var e=this;if(this.ready)return this.ready;var n,i=this.isYoutube(),r=this.isVimeo();return i||r?this.ready=new ne(function(t){Yt(e.el,\"load\",function(){if(i){var t=function(){return Bn(e.el,{event:\"listening\",id:e.id})};n=setInterval(t,100),t()}}),function(i){return new ne(function(n){Yt(window,\"message\",function(t,e){return n(e)},!1,function(t){var e=t.data;if(e&&O(e)){try{e=JSON.parse(e)}catch(t){return}return e&&i(e)}})})}(function(t){return i&&t.id===e.id&&\"onReady\"===t.event||r&&Number(t.player_id)===e.id}).then(function(){t(),n&&clearInterval(n)}),it(e.el,\"src\",e.el.src+(b(e.el.src,\"?\")?\"&\":\"?\")+(i?\"enablejsapi=1\":\"api=1&player_id=\"+e.id))}):ne.resolve()},Dn.prototype.play=function(){var t=this;if(this.isVideo())if(this.isIFrame())this.enableApi().then(function(){return Bn(t.el,{func:\"playVideo\",method:\"play\"})});else if(this.isHTML5())try{var e=this.el.play();e&&e.catch(Q)}catch(t){}},Dn.prototype.pause=function(){var t=this;this.isVideo()&&(this.isIFrame()?this.enableApi().then(function(){return Bn(t.el,{func:\"pauseVideo\",method:\"pause\"})}):this.isHTML5()&&this.el.pause())},Dn.prototype.mute=function(){var t=this;this.isVideo()&&(this.isIFrame()?this.enableApi().then(function(){return Bn(t.el,{func:\"mute\",method:\"setVolume\",value:0})}):this.isHTML5()&&(this.el.muted=!0,it(this.el,\"muted\",\"\")))};var Pn=\"IntersectionObserver\"in window?window.IntersectionObserver:function(){function t(e,t){var n=this;void 0===t&&(t={});var i=t.rootMargin;void 0===i&&(i=\"0 0\"),this.targets=[];var r,o=(i||\"0 0\").split(\" \").map(F),s=o[0],a=o[1];this.offsetTop=s,this.offsetLeft=a,this.apply=function(){r=r||requestAnimationFrame(function(){return setTimeout(function(){var t=n.takeRecords();t.length&&e(t,n),r=!1})})},this.off=Vt(window,\"scroll resize load\",this.apply,{passive:!0,capture:!0})}return t.prototype.takeRecords=function(){var n=this;return this.targets.filter(function(t){var e=pn(t.target,n.offsetTop,n.offsetLeft);if(null===t.isIntersecting||e^t.isIntersecting)return t.isIntersecting=e,!0})},t.prototype.observe=function(t){this.targets.push({target:t,isIntersecting:null}),this.apply()},t.prototype.disconnect=function(){this.targets=[],this.off()},t}();function Hn(t){return!(!w(t,\"uk-\")&&!w(t,\"data-uk-\"))&&f(t.replace(\"data-uk-\",\"\").replace(\"uk-\",\"\"))}function Ln(t){this._init(t)}var Fn,jn,Wn,Vn,Rn,Yn,qn,Un,Xn;function Kn(t,e){if(t)for(var n in t)t[n]._connected&&t[n]._callUpdate(e)}function Gn(t,e){var n={},i=t.args;void 0===i&&(i=[]);var r=t.props;void 0===r&&(r={});var o=t.el;if(!r)return n;for(var s in r){var a=d(s),h=st(o,a);if(!P(h)){if(h=r[s]===Boolean&&\"\"===h||ti(r[s],h),\"target\"===a&&(!h||w(h,\"_\")))continue;n[s]=h}}var c=On(st(o,e),i);for(var u in c){var l=f(u);void 0!==r[l]&&(n[l]=ti(r[l],c[u]))}return n}function Jn(i,r,o){Object.defineProperty(i,r,{enumerable:!0,get:function(){var t=i._computeds,e=i.$props,n=i.$el;return c(t,r)||(t[r]=(o.get||o).call(i,e,n)),t[r]},set:function(t){var e=i._computeds;e[r]=o.set?o.set.call(i,t):t,P(e[r])&&delete e[r]}})}function Zn(e,n,i){S(n)||(n={name:i,handler:n});var t=n.name,r=n.el,o=n.handler,s=n.capture,a=n.passive,h=n.delegate,c=n.filter,u=n.self;r=$(r)?r.call(e):r||e.$el,k(r)?r.forEach(function(t){return Zn(e,U({},n,{el:t}),i)}):!r||c&&!c.call(e)||e._events.push(Vt(r,t,h?O(h)?h:h.call(e):null,O(o)?e[o]:o.bind(e),{passive:a,capture:s,self:u}))}function Qn(t,e){return t.every(function(t){return!t||!c(t,e)})}function ti(t,e){return t===Boolean?H(e):t===Number?L(e):\"list\"===t?V(e):t?t(e):e}Ln.util=Object.freeze({ajax:ae,getImage:he,transition:Ue,Transition:Xe,animate:Je,Animation:Qe,attr:it,hasAttr:rt,removeAttr:ot,data:st,addClass:Ae,removeClass:_e,removeClasses:Ne,replaceClass:Me,hasClass:Oe,toggleClass:De,positionAt:en,offset:nn,position:on,height:sn,width:an,boxModelAdjust:cn,flipPosition:fn,isInView:pn,scrolledOver:mn,scrollTop:gn,offsetPosition:vn,toPx:wn,ready:ce,index:ue,getIndex:le,empty:de,html:fe,prepend:function(e,t){return(e=Te(e)).hasChildNodes()?ve(t,function(t){return e.insertBefore(t,e.firstChild)}):pe(e,t)},append:pe,before:me,after:ge,remove:we,wrapAll:be,wrapInner:ye,unwrap:xe,fragment:Ie,apply:Se,$:Te,$$:Ee,isIE:at,isRtl:ht,hasTouch:lt,pointerDown:dt,pointerMove:ft,pointerUp:pt,pointerEnter:mt,pointerLeave:gt,pointerCancel:vt,on:Vt,off:Rt,once:Yt,trigger:qt,createEvent:Ut,toEventTargets:Zt,isTouch:Qt,getEventPos:te,fastdom:kn,isVoidElement:Pt,isVisible:Ht,selInput:Lt,isInput:Ft,filter:jt,within:Wt,hasOwn:c,hyphenate:d,camelize:f,ucfirst:p,startsWith:w,endsWith:u,includes:b,findIndex:x,isArray:k,isFunction:$,isObject:I,isPlainObject:S,isWindow:T,isDocument:E,isJQuery:C,isNode:A,isNodeCollection:N,isBoolean:M,isString:O,isNumber:D,isNumeric:z,isEmpty:B,isUndefined:P,toBoolean:H,toNumber:L,toFloat:F,toNode:j,toNodes:W,toList:V,toMs:R,isEqual:Y,swap:q,assign:U,last:X,each:K,sortBy:G,uniqueBy:J,clamp:Z,noop:Q,intersectRect:tt,pointInRect:et,Dimensions:nt,MouseTracker:En,mergeOptions:Mn,parseOptions:On,Player:Dn,Promise:ne,Deferred:ee,IntersectionObserver:Pn,query:wt,queryAll:bt,find:xt,findAll:kt,matches:_t,closest:Mt,parents:Ot,escape:zt,css:Le,getStyles:Fe,getStyle:je,getCssVar:Ve,propName:Ye}),Ln.data=\"__uikit__\",Ln.prefix=\"uk-\",Ln.options={},Wn=(Fn=Ln).data,Fn.use=function(t){if(!t.installed)return t.call(null,this),t.installed=!0,this},Fn.mixin=function(t,e){(e=(O(e)?Fn.component(e):e)||this).options=Mn(e.options,t)},Fn.extend=function(t){function e(t){this._init(t)}return t=t||{},((e.prototype=Object.create(this.prototype)).constructor=e).options=Mn(this.options,t),e.super=this,e.extend=this.extend,e},Fn.update=function(t,e){(function t(e,n){e&&e!==document.body&&e.parentNode&&(t(e.parentNode,n),n(e.parentNode))})(t=t?j(t):document.body,function(t){return Kn(t[Wn],e)}),Se(t,function(t){return Kn(t[Wn],e)})},Object.defineProperty(Fn,\"container\",{get:function(){return jn||document.body},set:function(t){jn=Te(t)}}),(Vn=Ln).prototype._callHook=function(t){var e=this,n=this.$options[t];n&&n.forEach(function(t){return t.call(e)})},Vn.prototype._callConnected=function(){this._connected||(this._data={},this._computeds={},this._initProps(),this._callHook(\"beforeConnect\"),this._connected=!0,this._initEvents(),this._initObserver(),this._callHook(\"connected\"),this._callUpdate())},Vn.prototype._callDisconnected=function(){this._connected&&(this._callHook(\"beforeDisconnect\"),this._observer&&(this._observer.disconnect(),this._observer=null),this._unbindEvents(),this._callHook(\"disconnected\"),this._connected=!1)},Vn.prototype._callUpdate=function(t){var o=this;void 0===t&&(t=\"update\");var s=t.type||t;b([\"update\",\"resize\"],s)&&this._callWatches();var e=this.$options.update,n=this._frames,a=n.reads,h=n.writes;e&&e.forEach(function(t,e){var n=t.read,i=t.write,r=t.events;\"update\"!==s&&!b(r,s)||(n&&!b(kn.reads,a[e])&&(a[e]=kn.read(function(){var t=o._connected&&n.call(o,o._data,s);!1===t&&i?kn.clear(h[e]):S(t)&&U(o._data,t)})),i&&!b(kn.writes,h[e])&&(h[e]=kn.write(function(){return o._connected&&i.call(o,o._data,s)})))})},Yn=0,(Rn=Ln).prototype._init=function(t){(t=t||{}).data=function(t,e){var n=t.data,i=(t.el,e.args),r=e.props;if(void 0===r&&(r={}),n=k(n)?B(i)?void 0:n.slice(0,i.length).reduce(function(t,e,n){return S(e)?U(t,e):t[i[n]]=e,t},{}):n)for(var o in n)P(n[o])?delete n[o]:n[o]=r[o]?ti(r[o],n[o]):n[o];return n}(t,this.constructor.options),this.$options=Mn(this.constructor.options,t,this),this.$el=null,this.$props={},this._frames={reads:{},writes:{}},this._events=[],this._uid=Yn++,this._initData(),this._initMethods(),this._initComputeds(),this._callHook(\"created\"),t.el&&this.$mount(t.el)},Rn.prototype._initData=function(){var t=this.$options.data;for(var e in void 0===t&&(t={}),t)this.$props[e]=this[e]=t[e]},Rn.prototype._initMethods=function(){var t=this.$options.methods;if(t)for(var e in t)this[e]=t[e].bind(this)},Rn.prototype._initComputeds=function(){var t=this.$options.computed;if(this._computeds={},t)for(var e in t)Jn(this,e,t[e])},Rn.prototype._callWatches=function(){var t=this.$options.computed,e=this._computeds;for(var n in e){var i=e[n];delete e[n],t[n].watch&&!Y(i,this[n])&&t[n].watch.call(this,this[n],i)}},Rn.prototype._initProps=function(t){var e;for(e in t=t||Gn(this.$options,this.$name))P(t[e])||(this.$props[e]=t[e]);var n=[this.$options.computed,this.$options.methods];for(e in this.$props)e in t&&Qn(n,e)&&(this[e]=this.$props[e])},Rn.prototype._initEvents=function(){var n=this,t=this.$options.events;t&&t.forEach(function(t){if(c(t,\"handler\"))Zn(n,t);else for(var e in t)Zn(n,t[e],e)})},Rn.prototype._unbindEvents=function(){this._events.forEach(function(t){return t()}),this._events=[]},Rn.prototype._initObserver=function(){var n=this,t=this.$options,i=t.attrs,e=t.props,r=t.el;if(!this._observer&&e&&!1!==i){i=k(i)?i:Object.keys(e),this._observer=new MutationObserver(function(){var e=Gn(n.$options,n.$name);i.some(function(t){return!P(e[t])&&e[t]!==n.$props[t]})&&n.$reset()});var o=i.map(function(t){return d(t)}).concat(this.$name);this._observer.observe(r,{attributes:!0,attributeFilter:o.concat(o.map(function(t){return\"data-\"+t}))})}},Un=(qn=Ln).data,Xn={},qn.component=function(s,t){if(!t)return S(Xn[s])&&(Xn[s]=qn.extend(Xn[s])),Xn[s];qn[s]=function(t,n){for(var e=arguments.length,i=Array(e);e--;)i[e]=arguments[e];var r=qn.component(s);return S(t)?new r({data:t}):r.options.functional?new r({data:[].concat(i)}):t&&t.nodeType?o(t):Ee(t).map(o)[0];function o(t){var e=qn.getComponent(t,s);if(e){if(!n)return e;e.$destroy()}return new r({el:t,data:n})}};var e=S(t)?U({},t):t.options;if(e.name=s,e.install&&e.install(qn,e,s),qn._initialized&&!e.functional){var n=d(s);kn.read(function(){return qn[s](\"[uk-\"+n+\"],[data-uk-\"+n+\"]\")})}return Xn[s]=S(t)?e:t},qn.getComponents=function(t){return t&&t[Un]||{}},qn.getComponent=function(t,e){return qn.getComponents(t)[e]},qn.connect=function(t){if(t[Un])for(var e in t[Un])t[Un][e]._callConnected();for(var n=0;n<t.attributes.length;n++){var i=Hn(t.attributes[n].name);i&&i in Xn&&qn[i](t)}},qn.disconnect=function(t){for(var e in t[Un])t[Un][e]._callDisconnected()},function(i){var r=i.data;i.prototype.$mount=function(t){var e=this.$options.name;t[r]||(t[r]={}),t[r][e]||((t[r][e]=this).$el=this.$options.el=this.$options.el||t,Wt(t,document)&&this._callConnected())},i.prototype.$emit=function(t){this._callUpdate(t)},i.prototype.$reset=function(){this._callDisconnected(),this._callConnected()},i.prototype.$destroy=function(t){void 0===t&&(t=!1);var e=this.$options,n=e.el,i=e.name;n&&this._callDisconnected(),this._callHook(\"destroy\"),n&&n[r]&&(delete n[r][i],B(n[r])||delete n[r],t&&we(this.$el))},i.prototype.$create=function(t,e,n){return i[t](e,n)},i.prototype.$update=i.update,i.prototype.$getComponent=i.getComponent;var e={};Object.defineProperties(i.prototype,{$container:Object.getOwnPropertyDescriptor(i,\"container\"),$name:{get:function(){var t=this.$options.name;return e[t]||(e[t]=i.prefix+d(t)),e[t]}}})}(Ln);var ei={connected:function(){Oe(this.$el,this.$name)||Ae(this.$el,this.$name)}},ni={props:{cls:Boolean,animation:\"list\",duration:Number,origin:String,transition:String,queued:Boolean},data:{cls:!1,animation:[!1],duration:200,origin:!1,transition:\"linear\",queued:!1,initProps:{overflow:\"\",height:\"\",paddingTop:\"\",paddingBottom:\"\",marginTop:\"\",marginBottom:\"\"},hideProps:{overflow:\"hidden\",height:0,paddingTop:0,paddingBottom:0,marginTop:0,marginBottom:0}},computed:{hasAnimation:function(t){return!!t.animation[0]},hasTransition:function(t){var e=t.animation;return this.hasAnimation&&!0===e[0]}},methods:{toggleElement:function(c,u,l){var d=this;return new ne(function(t){c=W(c);function e(t){return ne.all(t.map(function(t){return d._toggleElement(t,u,l)}))}var n,i=c.filter(function(t){return d.isToggled(t)}),r=c.filter(function(t){return!b(i,t)});if(d.queued&&P(l)&&P(u)&&d.hasAnimation&&!(c.length<2)){var o=document.body,s=o.scrollTop,a=i[0],h=Qe.inProgress(a)&&Oe(a,\"uk-animation-leave\")||Xe.inProgress(a)&&\"0px\"===a.style.height;n=e(i),h||(n=n.then(function(){var t=e(r);return o.scrollTop=s,t}))}else n=e(r.concat(i));n.then(t,Q)})},toggleNow:function(e,n){var i=this;return new ne(function(t){return ne.all(W(e).map(function(t){return i._toggleElement(t,n,!1)})).then(t,Q)})},isToggled:function(t){var e=W(t||this.$el);return this.cls?Oe(e,this.cls.split(\" \")[0]):!rt(e,\"hidden\")},updateAria:function(t){!1===this.cls&&it(t,\"aria-hidden\",!this.isToggled(t))},_toggleElement:function(t,e,n){var i=this;if(e=M(e)?e:Qe.inProgress(t)?Oe(t,\"uk-animation-leave\"):Xe.inProgress(t)?\"0px\"===t.style.height:!this.isToggled(t),!qt(t,\"before\"+(e?\"show\":\"hide\"),[this]))return ne.reject();var r=($(n)?n:!1!==n&&this.hasAnimation?this.hasTransition?function(t){var s=t.isToggled,a=t.duration,h=t.initProps,c=t.hideProps,u=t.transition,l=t._toggle;return function(t,e){var n=Xe.inProgress(t),i=t.hasChildNodes?F(Le(t.firstElementChild,\"marginTop\"))+F(Le(t.lastElementChild,\"marginBottom\")):0,r=Ht(t)?sn(t)+(n?0:i):0;Xe.cancel(t),s(t)||l(t,!0),sn(t,\"\"),kn.flush();var o=sn(t)+(n?0:i);return sn(t,r),(e?Xe.start(t,U({},h,{overflow:\"hidden\",height:o}),Math.round(a*(1-r/o)),u):Xe.start(t,c,Math.round(a*(r/o)),u).then(function(){return l(t,!1)})).then(function(){return Le(t,h)})}}(this):function(t){var n=t.animation,i=t.duration,r=t.origin,o=t._toggle;return function(t,e){return Qe.cancel(t),e?(o(t,!0),Qe.in(t,n[0],i,r)):Qe.out(t,n[1]||n[0],i,r).then(function(){return o(t,!1)})}}(this):this._toggle)(t,e);qt(t,e?\"show\":\"hide\",[this]);function o(){qt(t,e?\"shown\":\"hidden\",[i]),i.$update(t)}return r?r.then(o):ne.resolve(o())},_toggle:function(t,e){var n;t&&(e=Boolean(e),this.cls?(n=b(this.cls,\" \")||e!==Oe(t,this.cls))&&De(t,this.cls,b(this.cls,\" \")?void 0:e):(n=e===rt(t,\"hidden\"))&&it(t,\"hidden\",e?null:\"\"),Ee(\"[autofocus]\",t).some(function(t){return Ht(t)?t.focus()||!0:t.blur()}),this.updateAria(t),n&&this.$update(t))}}};var ii={mixins:[ei,ni],props:{targets:String,active:null,collapsible:Boolean,multiple:Boolean,toggle:String,content:String,transition:String},data:{targets:\"> *\",active:!1,animation:[!0],collapsible:!0,multiple:!1,clsOpen:\"uk-open\",toggle:\"> .uk-accordion-title\",content:\"> .uk-accordion-content\",transition:\"ease\"},computed:{items:function(t,e){return Ee(t.targets,e)}},events:[{name:\"click\",delegate:function(){return this.targets+\" \"+this.$props.toggle},handler:function(t){t.preventDefault(),this.toggle(ue(Ee(this.targets+\" \"+this.$props.toggle,this.$el),t.current))}}],connected:function(){if(!1!==this.active){var t=this.items[Number(this.active)];t&&!Oe(t,this.clsOpen)&&this.toggle(t,!1)}},update:function(){var e=this;this.items.forEach(function(t){return e._toggle(Te(e.content,t),Oe(t,e.clsOpen))});var t=!this.collapsible&&!Oe(this.items,this.clsOpen)&&this.items[0];t&&this.toggle(t,!1)},methods:{toggle:function(r,o){var s=this,t=le(r,this.items),a=jt(this.items,\".\"+this.clsOpen);(r=this.items[t])&&[r].concat(!this.multiple&&!b(a,r)&&a||[]).forEach(function(t){var e=t===r,n=e&&!Oe(t,s.clsOpen);if(n||!e||s.collapsible||!(a.length<2)){De(t,s.clsOpen,n);var i=t._wrapper?t._wrapper.firstElementChild:Te(s.content,t);t._wrapper||(t._wrapper=be(i,\"<div>\"),it(t._wrapper,\"hidden\",n?\"\":null)),s._toggle(i,!0),s.toggleElement(t._wrapper,n,o).then(function(){Oe(t,s.clsOpen)===n&&(n||s._toggle(i,!1),t._wrapper=null,xe(i))})}})}}},ri={mixins:[ei,ni],args:\"animation\",props:{close:String},data:{animation:[!0],selClose:\".uk-alert-close\",duration:150,hideProps:U({opacity:0},ni.data.hideProps)},events:[{name:\"click\",delegate:function(){return this.selClose},handler:function(t){t.preventDefault(),this.close()}}],methods:{close:function(){var t=this;this.toggleElement(this.$el).then(function(){return t.$destroy(!0)})}}};function oi(r){ce(function(){var n;r.update(),Vt(window,\"load resize\",function(){return r.update(null,\"resize\")}),Vt(document,\"loadedmetadata load\",function(t){var e=t.target;return r.update(e,\"resize\")},!0),Vt(window,\"scroll\",function(t){if(!n){n=!0,kn.write(function(){return n=!1});var e=t.target;r.update(1!==e.nodeType?document.body:e,t.type)}},{passive:!0,capture:!0});var e,i=0;Vt(document,\"animationstart\",function(t){var e=t.target;(Le(e,\"animationName\")||\"\").match(/^uk-.*(left|right)/)&&(i++,Le(document.body,\"overflowX\",\"hidden\"),setTimeout(function(){--i||Le(document.body,\"overflowX\",\"\")},R(Le(e,\"animationDuration\"))+100))},!0),Vt(document,dt,function(t){if(e&&e(),Qt(t)){var r=te(t),o=\"tagName\"in t.target?t.target:t.target.parentNode;e=Yt(document,pt+\" \"+vt,function(t){var e=te(t),n=e.x,i=e.y;(o&&n&&100<Math.abs(r.x-n)||i&&100<Math.abs(r.y-i))&&setTimeout(function(){qt(o,\"swipe\"),qt(o,\"swipe\"+function(t,e,n,i){return Math.abs(t-n)>=Math.abs(e-i)?0<t-n?\"Left\":\"Right\":0<e-i?\"Up\":\"Down\"}(r.x,r.y,n,i))})}),\"touchstart\"===dt&&(Le(document.body,\"cursor\",\"pointer\"),Yt(document,pt+\" \"+vt,function(){return setTimeout(function(){return Le(document.body,\"cursor\",\"\")},50)}))}},{passive:!0})})}var si,ai={args:\"autoplay\",props:{automute:Boolean,autoplay:Boolean},data:{automute:!1,autoplay:!0},computed:{inView:function(t){return\"inview\"===t.autoplay}},connected:function(){this.inView&&!rt(this.$el,\"preload\")&&(this.$el.preload=\"none\"),this.player=new Dn(this.$el),this.automute&&this.player.mute()},update:{read:function(){return!!this.player&&{visible:Ht(this.$el)&&\"hidden\"!==Le(this.$el,\"visibility\"),inView:this.inView&&pn(this.$el)}},write:function(t){var e=t.visible,n=t.inView;!e||this.inView&&!n?this.player.pause():(!0===this.autoplay||this.inView&&n)&&this.player.play()},events:[\"resize\",\"scroll\"]}},hi={mixins:[ei,ai],props:{width:Number,height:Number},data:{automute:!0},update:{read:function(){var t=this.$el,e=t.parentNode,n=e.offsetHeight,i=e.offsetWidth,r=nt.cover({width:this.width||t.naturalWidth||t.videoWidth||t.clientWidth,height:this.height||t.naturalHeight||t.videoHeight||t.clientHeight},{width:i+(i%2?1:0),height:n+(n%2?1:0)});return!(!r.width||!r.height)&&r},write:function(t){var e=t.height,n=t.width;Le(this.$el,{height:e,width:n})},events:[\"resize\"]}},ci={props:{pos:String,offset:null,flip:Boolean,clsPos:String},data:{pos:\"bottom-\"+(ht?\"right\":\"left\"),flip:!0,offset:!1,clsPos:\"\"},computed:{pos:function(t){var e=t.pos;return(e+(b(e,\"-\")?\"\":\"-center\")).split(\"-\")},dir:function(){return this.pos[0]},align:function(){return this.pos[1]}},methods:{positionAt:function(t,e,n){var i;Ne(t,this.clsPos+\"-(top|bottom|left|right)(-[a-z]+)?\"),Le(t,{top:\"\",left:\"\"});var r=this.offset,o=this.getAxis();z(r)||(r=(i=Te(r))?nn(i)[\"x\"===o?\"left\":\"top\"]-nn(e)[\"x\"===o?\"right\":\"bottom\"]:0);var s=en(t,e,\"x\"===o?fn(this.dir)+\" \"+this.align:this.align+\" \"+fn(this.dir),\"x\"===o?this.dir+\" \"+this.align:this.align+\" \"+this.dir,\"x\"===o?\"\"+(\"left\"===this.dir?-r:r):\" \"+(\"top\"===this.dir?-r:r),null,this.flip,n).target,a=s.x,h=s.y;this.dir=\"x\"===o?a:h,this.align=\"x\"===o?h:a,De(t,this.clsPos+\"-\"+this.dir+\"-\"+this.align,!1===this.offset)},getAxis:function(){return\"top\"===this.dir||\"bottom\"===this.dir?\"y\":\"x\"}}},ui={mixins:[ci,ni],args:\"pos\",props:{mode:\"list\",toggle:Boolean,boundary:Boolean,boundaryAlign:Boolean,delayShow:Number,delayHide:Number,clsDrop:String},data:{mode:[\"click\",\"hover\"],toggle:\"- *\",boundary:window,boundaryAlign:!1,delayShow:0,delayHide:800,clsDrop:!1,hoverIdle:200,animation:[\"uk-animation-fade\"],cls:\"uk-open\"},computed:{boundary:function(t,e){return wt(t.boundary,e)},clsDrop:function(t){return t.clsDrop||\"uk-\"+this.$options.name},clsPos:function(){return this.clsDrop}},created:function(){this.tracker=new En},connected:function(){Ae(this.$el,this.clsDrop);var t=this.$props.toggle;this.toggle=t&&this.$create(\"toggle\",wt(t,this.$el),{target:this.$el,mode:this.mode}),this.toggle||qt(this.$el,\"updatearia\")},events:[{name:\"click\",delegate:function(){return\".\"+this.clsDrop+\"-close\"},handler:function(t){t.preventDefault(),this.hide(!1)}},{name:\"click\",delegate:function(){return'a[href^=\"#\"]'},handler:function(t){var e=t.defaultPrevented,n=t.current.hash;e||!n||Wt(n,this.$el)||this.hide(!1)}},{name:\"beforescroll\",handler:function(){this.hide(!1)}},{name:\"toggle\",self:!0,handler:function(t,e){t.preventDefault(),this.isToggled()?this.hide(!1):this.show(e,!1)}},{name:mt,filter:function(){return b(this.mode,\"hover\")},handler:function(t){Qt(t)||(si&&si!==this&&si.toggle&&b(si.toggle.mode,\"hover\")&&!Wt(t.target,si.toggle.$el)&&!et({x:t.pageX,y:t.pageY},nn(si.$el))&&si.hide(!1),t.preventDefault(),this.show(this.toggle))}},{name:\"toggleshow\",handler:function(t,e){e&&!b(e.target,this.$el)||(t.preventDefault(),this.show(e||this.toggle))}},{name:\"togglehide \"+gt,handler:function(t,e){Qt(t)||e&&!b(e.target,this.$el)||(t.preventDefault(),this.toggle&&b(this.toggle.mode,\"hover\")&&this.hide())}},{name:\"beforeshow\",self:!0,handler:function(){this.clearTimers(),Qe.cancel(this.$el),this.position()}},{name:\"show\",self:!0,handler:function(){var i=this;this.tracker.init(),qt(this.$el,\"updatearia\");var t=li(document,\"click\",function(t){var e=t.defaultPrevented,n=t.target;e||Wt(n,i.$el)||i.toggle&&Wt(n,i.toggle.$el)||i.hide(!1)});Yt(this.$el,\"hide\",t,{self:!0})}},{name:\"beforehide\",self:!0,handler:function(){this.clearTimers()}},{name:\"hide\",handler:function(t){var e=t.target;this.$el===e?(si=this.isActive()?null:si,qt(this.$el,\"updatearia\"),this.tracker.cancel()):si=null===si&&Wt(e,this.$el)&&this.isToggled()?this:si}},{name:\"updatearia\",self:!0,handler:function(t,e){t.preventDefault(),this.updateAria(this.$el),(e||this.toggle)&&(it((e||this.toggle).$el,\"aria-expanded\",this.isToggled()),De(this.toggle.$el,this.cls,this.isToggled()))}}],update:{write:function(){this.isToggled()&&!Qe.inProgress(this.$el)&&this.position()},events:[\"resize\"]},methods:{show:function(e,n){var i=this;void 0===n&&(n=!0);function r(){return!i.isToggled()&&i.toggleElement(i.$el,!0)}function t(){if(i.toggle=e||i.toggle,i.clearTimers(),!i.isActive())if(n&&si&&si!==i&&si.isDelaying)i.showTimer=setTimeout(i.show,10);else{if(i.isParentOf(si)){if(!si.hideTimer)return;si.hide(!1)}else if(i.isChildOf(si))si.clearTimers();else if(si&&!i.isChildOf(si)&&!i.isParentOf(si))for(var t;si&&si!==t&&!i.isChildOf(si);)(t=si).hide(!1);n&&i.delayShow?i.showTimer=setTimeout(r,i.delayShow):r(),si=i}}e&&this.toggle&&e.$el!==this.toggle.$el?(Yt(this.$el,\"hide\",t),this.hide(!1)):t()},hide:function(t){var e=this;void 0===t&&(t=!0);function n(){return e.toggleNow(e.$el,!1)}this.clearTimers(),this.isDelaying=this.tracker.movesTo(this.$el),t&&this.isDelaying?this.hideTimer=setTimeout(this.hide,this.hoverIdle):t&&this.delayHide?this.hideTimer=setTimeout(n,this.delayHide):n()},clearTimers:function(){clearTimeout(this.showTimer),clearTimeout(this.hideTimer),this.showTimer=null,this.hideTimer=null,this.isDelaying=!1},isActive:function(){return si===this},isChildOf:function(t){return t&&t!==this&&Wt(this.$el,t.$el)},isParentOf:function(t){return t&&t!==this&&Wt(t.$el,this.$el)},position:function(){Ne(this.$el,this.clsDrop+\"-(stack|boundary)\"),Le(this.$el,{top:\"\",left:\"\",display:\"block\"}),De(this.$el,this.clsDrop+\"-boundary\",this.boundaryAlign);var t=nn(this.boundary),e=this.boundaryAlign?t:nn(this.toggle.$el);if(\"justify\"===this.align){var n=\"y\"===this.getAxis()?\"width\":\"height\";Le(this.$el,n,e[n])}else this.$el.offsetWidth>Math.max(t.right-e.left,e.right-t.left)&&Ae(this.$el,this.clsDrop+\"-stack\");this.positionAt(this.$el,this.boundaryAlign?this.boundary:this.toggle.$el,this.boundary),Le(this.$el,\"display\",\"\")}}};function li(t,e,n){var i=Yt(t,e,function(){return i=Vt(t,e,n)},!0);return function(){return i()}}var di={extends:ui},fi={mixins:[ei],args:\"target\",props:{target:Boolean},data:{target:!1},computed:{input:function(t,e){return Te(Lt,e)},state:function(){return this.input.nextElementSibling},target:function(t,e){var n=t.target;return n&&(!0===n&&this.input.parentNode===e&&this.input.nextElementSibling||wt(n,e))}},update:function(){var t=this.target,e=this.input;if(t){var n,i=Ft(t)?\"value\":\"textContent\",r=t[i],o=e.files&&e.files[0]?e.files[0].name:_t(e,\"select\")&&(n=Ee(\"option\",e).filter(function(t){return t.selected})[0])?n.textContent:e.value;r!==o&&(t[i]=o)}},events:[{name:\"change\",handler:function(){this.$emit()}},{name:\"reset\",el:function(){return Mt(this.$el,\"form\")},handler:function(){this.$emit()}}]},pi={update:{read:function(t){var e=pn(this.$el);if(!e||t.isInView===e)return!1;t.isInView=e},write:function(){this.$el.src=this.$el.src},events:[\"scroll\",\"resize\"]}},mi={props:{margin:String,firstColumn:Boolean},data:{margin:\"uk-margin-small-top\",firstColumn:\"uk-first-column\"},update:{read:function(t){var e=this.$el.children;if(!e.length||!Ht(this.$el))return t.rows=[[]];t.rows=gi(e),t.stacks=!t.rows.some(function(t){return 1<t.length})},write:function(t){var i=this;t.rows.forEach(function(t,n){return t.forEach(function(t,e){De(t,i.margin,0!==n),De(t,i.firstColumn,0===e)})})},events:[\"resize\"]}};function gi(t){for(var e=[[]],n=0;n<t.length;n++){var i=t[n],r=vi(i);if(r.height)for(var o=e.length-1;0<=o;o--){var s=e[o];if(!s[0]){s.push(i);break}var a=void 0;if(a=s[0].offsetParent===i.offsetParent?vi(s[0]):(r=vi(i,!0),vi(s[0],!0)),r.top>=a.bottom-1&&r.top!==a.top){e.push([i]);break}if(r.bottom>a.top){if(r.left<a.left&&!ht){s.unshift(i);break}s.push(i);break}if(0===o){e.unshift([i]);break}}}return e}function vi(t,e){var n;void 0===e&&(e=!1);var i=t.offsetTop,r=t.offsetLeft,o=t.offsetHeight;return e&&(i=(n=vn(t))[0],r=n[1]),{top:i,left:r,height:o,bottom:i+o}}var wi={extends:mi,mixins:[ei],name:\"grid\",props:{masonry:Boolean,parallax:Number},data:{margin:\"uk-grid-margin\",clsStack:\"uk-grid-stack\",masonry:!1,parallax:0},computed:{length:function(t,e){return e.children.length},parallax:function(t){var e=t.parallax;return e&&this.length?Math.abs(e):\"\"}},connected:function(){this.masonry&&Ae(this.$el,\"uk-flex-top uk-flex-wrap-top\")},update:[{read:function(t){var r=t.rows;(this.masonry||this.parallax)&&(r=r.map(function(t){return G(t,\"offsetLeft\")}),ht&&r.map(function(t){return t.reverse()}));var e=r.some(function(t){return t.some(Xe.inProgress)}),n=!1,i=\"\";if(this.masonry&&this.length){var o=0;n=r.reduce(function(n,t,i){return n[i]=t.map(function(t,e){return 0===i?0:F(n[i-1][e])+(o-F(r[i-1][e]&&r[i-1][e].offsetHeight))}),o=t.reduce(function(t,e){return Math.max(t,e.offsetHeight)},0),n},[]),i=function(t){return Math.max.apply(Math,t.reduce(function(n,t){return t.forEach(function(t,e){return n[e]=(n[e]||0)+t.offsetHeight}),n},[]))}(r)+function(t,e){var n=W(t.children),i=n.filter(function(t){return Oe(t,e)})[0];return F(i?Le(i,\"marginTop\"):Le(n[0],\"paddingLeft\"))}(this.$el,this.margin)*(r.length-1)}return{padding:this.parallax&&function(t,e,n){for(var i=0,r=0,o=0,s=e.length-1;0<=s;s--)for(var a=i;a<e[s].length;a++){var h=e[s][a],c=h.offsetTop+sn(h)+(n&&-n[s][a]);r=Math.max(r,c),o=Math.max(o,c+(a%2?t:t/8)),i++}return o-r}(this.parallax,r,n),rows:r,translates:n,height:!e&&i}},write:function(t){var e=t.stacks,n=t.height,i=t.padding;De(this.$el,this.clsStack,e),Le(this.$el,\"paddingBottom\",i),!1!==n&&Le(this.$el,\"height\",n)},events:[\"resize\"]},{read:function(t){var e=t.height;return{scrolled:!!this.parallax&&mn(this.$el,e?e-sn(this.$el):0)*this.parallax}},write:function(t){var e=t.rows,i=t.scrolled,r=t.translates;!1===i&&!r||e.forEach(function(t,n){return t.forEach(function(t,e){return Le(t,\"transform\",i||r?\"translateY(\"+((r&&-r[n][e])+(i?e%2?i:i/8:0))+\"px)\":\"\")})})},events:[\"scroll\",\"resize\"]}]};var bi=at?{props:{selMinHeight:String},data:{selMinHeight:!1,forceHeight:!1},computed:{elements:function(t,e){var n=t.selMinHeight;return n?Ee(n,e):[e]}},update:[{read:function(){Le(this.elements,\"height\",\"\")},order:-5,events:[\"resize\"]},{write:function(){var n=this;this.elements.forEach(function(t){var e=F(Le(t,\"minHeight\"));e&&(n.forceHeight||Math.round(e+cn(\"height\",t,\"content-box\"))>=t.offsetHeight)&&Le(t,\"height\",e)})},order:5,events:[\"resize\"]}]}:{},yi={mixins:[bi],args:\"target\",props:{target:String,row:Boolean},data:{target:\"> *\",row:!0,forceHeight:!0},computed:{elements:function(t,e){return Ee(t.target,e)}},update:{read:function(){return{rows:(this.row?gi(this.elements):[this.elements]).map(xi)}},write:function(t){t.rows.forEach(function(t){var n=t.heights;return t.elements.forEach(function(t,e){return Le(t,\"minHeight\",n[e])})})},events:[\"resize\"]}};function xi(t){var e;if(t.length<2)return{heights:[\"\"],elements:t};var n=ki(t),i=n.heights,r=n.max,o=t.some(function(t){return t.style.minHeight}),s=t.some(function(t,e){return!t.style.minHeight&&i[e]<r});return o&&s&&(Le(t,\"minHeight\",\"\"),e=ki(t),i=e.heights,r=e.max),{heights:i=t.map(function(t,e){return i[e]===r&&F(t.style.minHeight).toFixed(2)!==r.toFixed(2)?\"\":r}),elements:t}}function ki(t){var e=t.map(function(t){return nn(t).height-cn(\"height\",t,\"content-box\")});return{heights:e,max:Math.max.apply(null,e)}}var $i={mixins:[bi],props:{expand:Boolean,offsetTop:Boolean,offsetBottom:Boolean,minHeight:Number},data:{expand:!1,offsetTop:!1,offsetBottom:!1,minHeight:0},update:{read:function(t){var e=t.minHeight;if(!Ht(this.$el))return!1;var n=\"\",i=cn(\"height\",this.$el,\"content-box\");if(this.expand){if(this.$el.dataset.heightExpand=\"\",Te(\"[data-height-expand]\")!==this.$el)return!1;n=sn(window)-(Ii(document.documentElement)-Ii(this.$el))-i||\"\"}else{if(n=\"calc(100vh\",this.offsetTop){var r=nn(this.$el).top;n+=0<r&&r<sn(window)/2?\" - \"+r+\"px\":\"\"}!0===this.offsetBottom?n+=\" - \"+Ii(this.$el.nextElementSibling)+\"px\":z(this.offsetBottom)?n+=\" - \"+this.offsetBottom+\"vh\":this.offsetBottom&&u(this.offsetBottom,\"px\")?n+=\" - \"+F(this.offsetBottom)+\"px\":O(this.offsetBottom)&&(n+=\" - \"+Ii(wt(this.offsetBottom,this.$el))+\"px\"),n+=(i?\" - \"+i+\"px\":\"\")+\")\"}return{minHeight:n,prev:e}},write:function(t){var e=t.minHeight,n=t.prev;Le(this.$el,{minHeight:e}),e!==n&&this.$update(this.$el,\"resize\"),this.minHeight&&F(Le(this.$el,\"minHeight\"))<this.minHeight&&Le(this.$el,\"minHeight\",this.minHeight)},events:[\"resize\"]}};function Ii(t){return t&&nn(t).height||0}var Si={args:\"src\",props:{id:Boolean,icon:String,src:String,style:String,width:Number,height:Number,ratio:Number,class:String,strokeAnimation:Boolean,focusable:Boolean,attributes:\"list\"},data:{ratio:1,include:[\"style\",\"class\",\"focusable\"],class:\"\",strokeAnimation:!1},beforeConnect:function(){var t,e=this;if(this.class+=\" uk-svg\",!this.icon&&b(this.src,\"#\")){var n=this.src.split(\"#\");1<n.length&&(t=n,this.src=t[0],this.icon=t[1])}this.svg=this.getSvg().then(function(t){return e.applyAttributes(t),e.svgEl=function(t,e){{if(Pt(e)||\"CANVAS\"===e.tagName){it(e,\"hidden\",!0);var n=e.nextElementSibling;return _i(t,n)?n:ge(e,t)}var i=e.lastElementChild;return _i(t,i)?i:pe(e,t)}}(t,e.$el)},Q)},disconnected:function(){var e=this;Pt(this.$el)&&it(this.$el,\"hidden\",null),this.svg&&this.svg.then(function(t){return(!e._connected||t!==e.svgEl)&&we(t)},Q),this.svg=this.svgEl=null},update:{read:function(){return!!(this.strokeAnimation&&this.svgEl&&Ht(this.svgEl))},write:function(){!function(t){var e=Ai(t);e&&t.style.setProperty(\"--uk-animation-stroke\",e)}(this.svgEl)},type:[\"resize\"]},methods:{getSvg:function(){var e=this;return function(n){if(Ti[n])return Ti[n];return Ti[n]=new ne(function(e,t){n?w(n,\"data:\")?e(decodeURIComponent(n.split(\",\")[1])):ae(n).then(function(t){return e(t.response)},function(){return t(\"SVG not found.\")}):t()})}(this.src).then(function(t){return function(t,e){e&&b(t,\"<symbol\")&&(t=function(t,e){if(!Ci[t]){var n;for(Ci[t]={};n=Ei.exec(t);)Ci[t][n[3]]='<svg xmlns=\"http://www.w3.org/2000/svg\"'+n[1]+\"svg>\";Ei.lastIndex=0}return Ci[t][e]}(t,e)||t);return(t=Te(t.substr(t.indexOf(\"<svg\"))))&&t.hasChildNodes()&&t}(t,e.icon)||ne.reject(\"SVG not found.\")})},applyAttributes:function(n){var i=this;for(var t in this.$options.props)this[t]&&b(this.include,t)&&it(n,t,this[t]);for(var e in this.attributes){var r=this.attributes[e].split(\":\",2),o=r[0],s=r[1];it(n,o,s)}this.id||ot(n,\"id\");var a=[\"width\",\"height\"],h=[this.width,this.height];h.some(function(t){return t})||(h=a.map(function(t){return it(n,t)}));var c=it(n,\"viewBox\");c&&!h.some(function(t){return t})&&(h=c.split(\" \").slice(2)),h.forEach(function(t,e){(t=(0|t)*i.ratio)&&it(n,a[e],t),t&&!h[1^e]&&ot(n,a[1^e])}),it(n,\"data-svg\",this.icon||this.src)}}},Ti={};var Ei=/<symbol(.*?id=(['\"])(.*?)\\2[^]*?<\\/)symbol>/g,Ci={};function Ai(t){return Math.ceil(Math.max.apply(Math,Ee(\"[stroke]\",t).map(function(t){return t.getTotalLength&&t.getTotalLength()||0}).concat([0])))}function _i(t,e){return it(t,\"data-svg\")===it(e,\"data-svg\")}var Ni={},Mi={spinner:'<svg width=\"30\" height=\"30\" viewBox=\"0 0 30 30\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" cx=\"15\" cy=\"15\" r=\"14\"/></svg>',totop:'<svg width=\"18\" height=\"10\" viewBox=\"0 0 18 10\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" points=\"1 9 9 1 17 9 \"/></svg>',marker:'<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"9\" y=\"4\" width=\"1\" height=\"11\"/><rect x=\"4\" y=\"9\" width=\"11\" height=\"1\"/></svg>',\"close-icon\":'<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" xmlns=\"http://www.w3.org/2000/svg\"><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"1\" y1=\"1\" x2=\"13\" y2=\"13\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"13\" y1=\"1\" x2=\"1\" y2=\"13\"/></svg>',\"close-large\":'<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" x1=\"1\" y1=\"1\" x2=\"19\" y2=\"19\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" x1=\"19\" y1=\"1\" x2=\"1\" y2=\"19\"/></svg>',\"navbar-toggle-icon\":'<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect y=\"9\" width=\"20\" height=\"2\"/><rect y=\"3\" width=\"20\" height=\"2\"/><rect y=\"15\" width=\"20\" height=\"2\"/></svg>',\"overlay-icon\":'<svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"19\" y=\"0\" width=\"1\" height=\"40\"/><rect x=\"0\" y=\"19\" width=\"40\" height=\"1\"/></svg>',\"pagination-next\":'<svg width=\"7\" height=\"12\" viewBox=\"0 0 7 12\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" points=\"1 1 6 6 1 11\"/></svg>',\"pagination-previous\":'<svg width=\"7\" height=\"12\" viewBox=\"0 0 7 12\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" points=\"6 1 1 6 6 11\"/></svg>',\"search-icon\":'<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"9\" cy=\"9\" r=\"7\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M14,14 L18,18 L14,14 Z\"/></svg>',\"search-large\":'<svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.8\" cx=\"17.5\" cy=\"17.5\" r=\"16.5\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.8\" x1=\"38\" y1=\"39\" x2=\"29\" y2=\"30\"/></svg>',\"search-navbar\":'<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"10.5\" cy=\"10.5\" r=\"9.5\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"23\" y1=\"23\" x2=\"17\" y2=\"17\"/></svg>',\"slidenav-next\":'<svg width=\"14px\" height=\"24px\" viewBox=\"0 0 14 24\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" points=\"1.225,23 12.775,12 1.225,1 \"/></svg>',\"slidenav-next-large\":'<svg width=\"25px\" height=\"40px\" viewBox=\"0 0 25 40\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"2\" points=\"4.002,38.547 22.527,20.024 4,1.5 \"/></svg>',\"slidenav-previous\":'<svg width=\"14px\" height=\"24px\" viewBox=\"0 0 14 24\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" points=\"12.775,1 1.225,12 12.775,23 \"/></svg>',\"slidenav-previous-large\":'<svg width=\"25px\" height=\"40px\" viewBox=\"0 0 25 40\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"2\" points=\"20.527,1.5 2,20.024 20.525,38.547 \"/></svg>'},Oi={install:function(r){r.icon.add=function(t,e){var n,i=O(t)?((n={})[t]=e,n):t;K(i,function(t,e){Mi[e]=t,delete Ni[e]}),r._initialized&&Se(document.body,function(t){return K(r.getComponents(t),function(t){t.$options.isIcon&&t.icon in i&&t.$reset()})})}},extends:Si,args:\"icon\",props:[\"icon\"],data:{include:[\"focusable\"]},isIcon:!0,beforeConnect:function(){Ae(this.$el,\"uk-icon\")},methods:{getSvg:function(){var t=function(t){if(!Mi[t])return null;Ni[t]||(Ni[t]=Te(Mi[t].trim()));return Ni[t].cloneNode(!0)}(function(t){return ht?q(q(t,\"left\",\"right\"),\"previous\",\"next\"):t}(this.icon));return t?ne.resolve(t):ne.reject(\"Icon not found.\")}}},Di={args:!1,extends:Oi,data:function(t){return{icon:d(t.constructor.options.name)}},beforeConnect:function(){Ae(this.$el,this.$name)}},zi={extends:Di,beforeConnect:function(){Ae(this.$el,\"uk-slidenav\")},computed:{icon:function(t,e){var n=t.icon;return Oe(e,\"uk-slidenav-large\")?n+\"-large\":n}}},Bi={extends:Di,computed:{icon:function(t,e){var n=t.icon;return Oe(e,\"uk-search-icon\")&&Ot(e,\".uk-search-large\").length?\"search-large\":Ot(e,\".uk-search-navbar\").length?\"search-navbar\":n}}},Pi={extends:Di,computed:{icon:function(){return\"close-\"+(Oe(this.$el,\"uk-close-large\")?\"large\":\"icon\")}}},Hi={extends:Di,connected:function(){var e=this;this.svg.then(function(t){return 1!==e.ratio&&Le(Te(\"circle\",t),\"strokeWidth\",1/e.ratio)},Q)}};var Li={args:\"dataSrc\",props:{dataSrc:String,dataSrcset:Boolean,sizes:String,width:Number,height:Number,offsetTop:String,offsetLeft:String,target:String},data:{dataSrc:\"\",dataSrcset:!1,sizes:!1,width:!1,height:!1,offsetTop:\"50vh\",offsetLeft:0,target:!1},computed:{cacheKey:function(t){var e=t.dataSrc;return this.$name+\".\"+e},width:function(t){var e=t.width,n=t.dataWidth;return e||n},height:function(t){var e=t.height,n=t.dataHeight;return e||n},sizes:function(t){var e=t.sizes,n=t.dataSizes;return e||n},isImg:function(t,e){return qi(e)},target:{get:function(t){var e=t.target;return[this.$el].concat(bt(e,this.$el))},watch:function(){this.observe()}},offsetTop:function(t){return wn(t.offsetTop,\"height\")},offsetLeft:function(t){return wn(t.offsetLeft,\"width\")}},connected:function(){Xi[this.cacheKey]?Fi(this.$el,Xi[this.cacheKey]||this.dataSrc,this.dataSrcset,this.sizes):this.isImg&&this.width&&this.height&&Fi(this.$el,function(t,e,n){var i;n&&(i=nt.ratio({width:t,height:e},\"width\",wn(Wi(n))),t=i.width,e=i.height);return'data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"'+t+'\" height=\"'+e+'\"></svg>'}(this.width,this.height,this.sizes)),this.observer=new Pn(this.load,{rootMargin:this.offsetTop+\"px \"+this.offsetLeft+\"px\"}),requestAnimationFrame(this.observe)},disconnected:function(){this.observer.disconnect()},update:{read:function(t){var e=this,n=t.image;if(n||\"complete\"!==document.readyState||this.load(this.observer.takeRecords()),this.isImg)return!1;n&&n.then(function(t){return t&&\"\"!==t.currentSrc&&Fi(e.$el,Ui(t))})},write:function(t){if(this.dataSrcset&&1!==window.devicePixelRatio){var e=Le(this.$el,\"backgroundSize\");!e.match(/^(auto\\s?)+$/)&&F(e)!==t.bgSize||(t.bgSize=function(t,e){var n=wn(Wi(e)),i=(t.match(Yi)||[]).map(F).sort(function(t,e){return t-e});return i.filter(function(t){return n<=t})[0]||i.pop()||\"\"}(this.dataSrcset,this.sizes),Le(this.$el,\"backgroundSize\",t.bgSize+\"px\"))}},events:[\"resize\"]},methods:{load:function(t){var e=this;t.some(function(t){return P(t.isIntersecting)||t.isIntersecting})&&(this._data.image=he(this.dataSrc,this.dataSrcset,this.sizes).then(function(t){return Fi(e.$el,Ui(t),t.srcset,t.sizes),Xi[e.cacheKey]=Ui(t),t},Q),this.observer.disconnect())},observe:function(){var e=this;!this._data.image&&this._connected&&this.target.forEach(function(t){return e.observer.observe(t)})}}};function Fi(t,e,n,i){if(qi(t))i&&(t.sizes=i),n&&(t.srcset=n),e&&(t.src=e);else if(e){!b(t.style.backgroundImage,e)&&(Le(t,\"backgroundImage\",\"url(\"+zt(e)+\")\"),qt(t,Ut(\"load\",!1)))}}var ji=/\\s*(.*?)\\s*(\\w+|calc\\(.*?\\))\\s*(?:,|$)/g;function Wi(t){var e,n;for(ji.lastIndex=0;e=ji.exec(t);)if(!e[1]||window.matchMedia(e[1]).matches){e=w(n=e[2],\"calc\")?n.substring(5,n.length-1).replace(Vi,function(t){return wn(t)}).replace(/ /g,\"\").match(Ri).reduce(function(t,e){return t+ +e},0):n;break}return e||\"100vw\"}var Vi=/\\d+(?:\\w+|%)/g,Ri=/[+-]?(\\d+)/g;var Yi=/\\s+\\d+w\\s*(?:,|$)/g;function qi(t){return\"IMG\"===t.tagName}function Ui(t){return t.currentSrc||t.src}var Xi,Ki=\"__test__\";try{(Xi=window.sessionStorage||{})[Ki]=1,delete Xi[Ki]}catch(t){Xi={}}var Gi={props:{media:Boolean},data:{media:!1},computed:{matchMedia:function(){var t=function(t){if(O(t)){if(\"@\"===t[0])t=F(Ve(\"breakpoint-\"+t.substr(1)));else if(isNaN(t))return t}return!(!t||isNaN(t))&&\"(min-width: \"+t+\"px)\"}(this.media);return!t||window.matchMedia(t).matches}}};var Ji={mixins:[ei,Gi],props:{fill:String},data:{fill:\"\",clsWrapper:\"uk-leader-fill\",clsHide:\"uk-leader-hide\",attrFill:\"data-fill\"},computed:{fill:function(t){return t.fill||Ve(\"leader-fill-content\")}},connected:function(){var t;t=ye(this.$el,'<span class=\"'+this.clsWrapper+'\">'),this.wrapper=t[0]},disconnected:function(){xe(this.wrapper.childNodes)},update:{read:function(t){var e=t.changed,n=t.width,i=n;return{width:n=Math.floor(this.$el.offsetWidth/2),fill:this.fill,changed:e||i!==n,hide:!this.matchMedia}},write:function(t){De(this.wrapper,this.clsHide,t.hide),t.changed&&(t.changed=!1,it(this.wrapper,this.attrFill,new Array(t.width).join(t.fill)))},events:[\"resize\"]}},Zi={props:{container:Boolean},data:{container:!0},computed:{container:function(t){var e=t.container;return!0===e&&this.$container||e&&Te(e)}}},Qi=[],tr={mixins:[ei,Zi,ni],props:{selPanel:String,selClose:String,escClose:Boolean,bgClose:Boolean,stack:Boolean},data:{cls:\"uk-open\",escClose:!0,bgClose:!0,overlay:!0,stack:!1},computed:{panel:function(t,e){return Te(t.selPanel,e)},transitionElement:function(){return this.panel},bgClose:function(t){return t.bgClose&&this.panel}},beforeDisconnect:function(){this.isToggled()&&this.toggleNow(this.$el,!1)},events:[{name:\"click\",delegate:function(){return this.selClose},handler:function(t){t.preventDefault(),this.hide()}},{name:\"toggle\",self:!0,handler:function(t){t.defaultPrevented||(t.preventDefault(),this.toggle())}},{name:\"beforeshow\",self:!0,handler:function(t){if(b(Qi,this))return!1;!this.stack&&Qi.length?(ne.all(Qi.map(function(t){return t.hide()})).then(this.show),t.preventDefault()):Qi.push(this)}},{name:\"show\",self:!0,handler:function(){var r=this;an(window)-an(document)&&this.overlay&&Le(document.body,\"overflowY\",\"scroll\"),Ae(document.documentElement,this.clsPage),this.bgClose&&Yt(this.$el,\"hide\",li(document,\"click\",function(t){var e=t.defaultPrevented,n=t.target,i=X(Qi);e||i!==r||i.overlay&&!Wt(n,i.$el)||Wt(n,i.panel)||i.hide()}),{self:!0}),this.escClose&&Yt(this.$el,\"hide\",Vt(document,\"keydown\",function(t){var e=X(Qi);27===t.keyCode&&e===r&&(t.preventDefault(),e.hide())}),{self:!0})}},{name:\"hidden\",self:!0,handler:function(){var e=this;Qi.splice(Qi.indexOf(this),1),Qi.length||Le(document.body,\"overflowY\",\"\"),Qi.some(function(t){return t.clsPage===e.clsPage})||_e(document.documentElement,this.clsPage)}}],methods:{toggle:function(){return this.isToggled()?this.hide():this.show()},show:function(){var e=this;return this.container&&this.$el.parentNode!==this.container?(pe(this.container,this.$el),new ne(function(t){return requestAnimationFrame(function(){return e.show().then(t)})})):this.toggleElement(this.$el,!0,er(this))},hide:function(){return this.toggleElement(this.$el,!1,er(this))}}};function er(t){var s=t.transitionElement,a=t._toggle;return function(r,o){return new ne(function(n,i){return Yt(r,\"show hide\",function(){r._reject&&r._reject(),r._reject=i,a(r,o);var t=Yt(s,\"transitionstart\",function(){Yt(s,\"transitionend transitioncancel\",n,{self:!0}),clearTimeout(e)},{self:!0}),e=setTimeout(function(){t(),n()},R(Le(s,\"transitionDuration\")))})})}}var nr={install:function(a){a.modal.dialog=function(t,e){var n=a.modal(' <div class=\"uk-modal\"> <div class=\"uk-modal-dialog\">'+t+\"</div> </div> \",e);return n.show(),Vt(n.$el,\"hidden\",function(){return ne.resolve(function(){return n.$destroy(!0)})},{self:!0}),n},a.modal.alert=function(e,n){return n=U({bgClose:!1,escClose:!1,labels:a.modal.labels},n),new ne(function(t){return Vt(a.modal.dialog(' <div class=\"uk-modal-body\">'+(O(e)?e:fe(e))+'</div> <div class=\"uk-modal-footer uk-text-right\"> <button class=\"uk-button uk-button-primary uk-modal-close\" autofocus>'+n.labels.ok+\"</button> </div> \",n).$el,\"hide\",t)})},a.modal.confirm=function(r,o){return o=U({bgClose:!1,escClose:!0,labels:a.modal.labels},o),new ne(function(e,t){var n=a.modal.dialog(' <form> <div class=\"uk-modal-body\">'+(O(r)?r:fe(r))+'</div> <div class=\"uk-modal-footer uk-text-right\"> <button class=\"uk-button uk-button-default uk-modal-close\" type=\"button\">'+o.labels.cancel+'</button> <button class=\"uk-button uk-button-primary\" autofocus>'+o.labels.ok+\"</button> </div> </form> \",o),i=!1;Vt(n.$el,\"submit\",\"form\",function(t){t.preventDefault(),e(),i=!0,n.hide()}),Vt(n.$el,\"hide\",function(){i||t()})})},a.modal.prompt=function(t,o,s){return s=U({bgClose:!1,escClose:!0,labels:a.modal.labels},s),new ne(function(e){var n=a.modal.dialog(' <form class=\"uk-form-stacked\"> <div class=\"uk-modal-body\"> <label>'+(O(t)?t:fe(t))+'</label> <input class=\"uk-input\" autofocus> </div> <div class=\"uk-modal-footer uk-text-right\"> <button class=\"uk-button uk-button-default uk-modal-close\" type=\"button\">'+s.labels.cancel+'</button> <button class=\"uk-button uk-button-primary\">'+s.labels.ok+\"</button> </div> </form> \",s),i=Te(\"input\",n.$el);i.value=o;var r=!1;Vt(n.$el,\"submit\",\"form\",function(t){t.preventDefault(),e(i.value),r=!0,n.hide()}),Vt(n.$el,\"hide\",function(){r||e(null)})})},a.modal.labels={ok:\"Ok\",cancel:\"Cancel\"}},mixins:[tr],data:{clsPage:\"uk-modal-page\",selPanel:\".uk-modal-dialog\",selClose:\".uk-modal-close, .uk-modal-close-default, .uk-modal-close-outside, .uk-modal-close-full\"},events:[{name:\"show\",self:!0,handler:function(){Oe(this.panel,\"uk-margin-auto-vertical\")?Ae(this.$el,\"uk-flex\"):Le(this.$el,\"display\",\"block\"),sn(this.$el)}},{name:\"hidden\",self:!0,handler:function(){Le(this.$el,\"display\",\"\"),_e(this.$el,\"uk-flex\")}}]};var ir={extends:ii,data:{targets:\"> .uk-parent\",toggle:\"> a\",content:\"> ul\"}},rr={mixins:[ei,bi],props:{dropdown:String,mode:\"list\",align:String,offset:Number,boundary:Boolean,boundaryAlign:Boolean,clsDrop:String,delayShow:Number,delayHide:Number,dropbar:Boolean,dropbarMode:String,dropbarAnchor:Boolean,duration:Number},data:{dropdown:\".uk-navbar-nav > li\",align:ht?\"right\":\"left\",clsDrop:\"uk-navbar-dropdown\",mode:void 0,offset:void 0,delayShow:void 0,delayHide:void 0,boundaryAlign:void 0,flip:\"x\",boundary:!0,dropbar:!1,dropbarMode:\"slide\",dropbarAnchor:!1,duration:200,forceHeight:!0,selMinHeight:\".uk-navbar-nav > li > a, .uk-navbar-item, .uk-navbar-toggle\"},computed:{boundary:function(t,e){var n=t.boundary,i=t.boundaryAlign;return!0===n||i?e:n},dropbarAnchor:function(t,e){return wt(t.dropbarAnchor,e)},pos:function(t){return\"bottom-\"+t.align},dropdowns:function(t,e){return Ee(t.dropdown+\" .\"+t.clsDrop,e)}},beforeConnect:function(){var t=this.$props.dropbar;this.dropbar=t&&(wt(t,this.$el)||Te(\"+ .uk-navbar-dropbar\",this.$el)||Te(\"<div></div>\")),this.dropbar&&(Ae(this.dropbar,\"uk-navbar-dropbar\"),\"slide\"===this.dropbarMode&&Ae(this.dropbar,\"uk-navbar-dropbar-slide\"))},disconnected:function(){this.dropbar&&we(this.dropbar)},update:function(){var e=this;this.$create(\"drop\",this.dropdowns.filter(function(t){return!e.getDropdown(t)}),U({},this.$props,{boundary:this.boundary,pos:this.pos,offset:this.dropbar||this.offset}))},events:[{name:\"mouseover\",delegate:function(){return this.dropdown},handler:function(t){var e=t.current,n=this.getActive();n&&n.toggle&&!Wt(n.toggle.$el,e)&&!n.tracker.movesTo(n.$el)&&n.hide(!1)}},{name:\"mouseleave\",el:function(){return this.dropbar},handler:function(){var t=this.getActive();t&&!this.dropdowns.some(function(t){return _t(t,\":hover\")})&&t.hide()}},{name:\"beforeshow\",capture:!0,filter:function(){return this.dropbar},handler:function(){this.dropbar.parentNode||ge(this.dropbarAnchor||this.$el,this.dropbar)}},{name:\"show\",capture:!0,filter:function(){return this.dropbar},handler:function(t,e){var n=e.$el,i=e.dir;this.clsDrop&&Ae(n,this.clsDrop+\"-dropbar\"),\"bottom\"===i&&this.transitionTo(n.offsetHeight+F(Le(n,\"marginTop\"))+F(Le(n,\"marginBottom\")),n)}},{name:\"beforehide\",filter:function(){return this.dropbar},handler:function(t,e){var n=e.$el,i=this.getActive();_t(this.dropbar,\":hover\")&&i&&i.$el===n&&t.preventDefault()}},{name:\"hide\",filter:function(){return this.dropbar},handler:function(t,e){var n=e.$el,i=this.getActive();(!i||i&&i.$el===n)&&this.transitionTo(0)}}],methods:{getActive:function(){var t=this.dropdowns.map(this.getDropdown).filter(function(t){return t&&t.isActive()})[0];return t&&b(t.mode,\"hover\")&&Wt(t.toggle.$el,this.$el)&&t},transitionTo:function(t,e){var n=this,i=this.dropbar,r=Ht(i)?sn(i):0;return Le(e=r<t&&e,\"clip\",\"rect(0,\"+e.offsetWidth+\"px,\"+r+\"px,0)\"),sn(i,r),Xe.cancel([e,i]),ne.all([Xe.start(i,{height:t},this.duration),Xe.start(e,{clip:\"rect(0,\"+e.offsetWidth+\"px,\"+t+\"px,0)\"},this.duration)]).catch(Q).then(function(){Le(e,{clip:\"\"}),n.$update(i)})},getDropdown:function(t){return this.$getComponent(t,\"drop\")||this.$getComponent(t,\"dropdown\")}}},or={mixins:[tr],args:\"mode\",props:{mode:String,flip:Boolean,overlay:Boolean},data:{mode:\"slide\",flip:!1,overlay:!1,clsPage:\"uk-offcanvas-page\",clsContainer:\"uk-offcanvas-container\",selPanel:\".uk-offcanvas-bar\",clsFlip:\"uk-offcanvas-flip\",clsContainerAnimation:\"uk-offcanvas-container-animation\",clsSidebarAnimation:\"uk-offcanvas-bar-animation\",clsMode:\"uk-offcanvas\",clsOverlay:\"uk-offcanvas-overlay\",selClose:\".uk-offcanvas-close\",container:!1},computed:{clsFlip:function(t){var e=t.flip,n=t.clsFlip;return e?n:\"\"},clsOverlay:function(t){var e=t.overlay,n=t.clsOverlay;return e?n:\"\"},clsMode:function(t){var e=t.mode;return t.clsMode+\"-\"+e},clsSidebarAnimation:function(t){var e=t.mode,n=t.clsSidebarAnimation;return\"none\"===e||\"reveal\"===e?\"\":n},clsContainerAnimation:function(t){var e=t.mode,n=t.clsContainerAnimation;return\"push\"!==e&&\"reveal\"!==e?\"\":n},transitionElement:function(t){return\"reveal\"===t.mode?this.panel.parentNode:this.panel}},events:[{name:\"click\",delegate:function(){return'a[href^=\"#\"]'},handler:function(t){var e=t.current.hash;!t.defaultPrevented&&e&&Te(e,document.body)&&this.hide()}},{name:\"touchstart\",passive:!0,el:function(){return this.panel},handler:function(t){var e=t.targetTouches;1===e.length&&(this.clientY=e[0].clientY)}},{name:\"touchmove\",self:!0,passive:!1,filter:function(){return this.overlay},handler:function(t){t.cancelable&&t.preventDefault()}},{name:\"touchmove\",passive:!1,el:function(){return this.panel},handler:function(t){if(1===t.targetTouches.length){var e=event.targetTouches[0].clientY-this.clientY,n=this.panel,i=n.scrollTop,r=n.scrollHeight,o=n.clientHeight;(r<=o||0===i&&0<e||r-i<=o&&e<0)&&t.cancelable&&t.preventDefault()}}},{name:\"show\",self:!0,handler:function(){\"reveal\"!==this.mode||Oe(this.panel.parentNode,this.clsMode)||(be(this.panel,\"<div>\"),Ae(this.panel.parentNode,this.clsMode)),Le(document.documentElement,\"overflowY\",this.overlay?\"hidden\":\"\"),Ae(document.body,this.clsContainer,this.clsFlip),Le(document.body,\"touch-action\",\"pan-y pinch-zoom\"),Le(this.$el,\"display\",\"block\"),Ae(this.$el,this.clsOverlay),Ae(this.panel,this.clsSidebarAnimation,\"reveal\"!==this.mode?this.clsMode:\"\"),sn(document.body),Ae(document.body,this.clsContainerAnimation),this.clsContainerAnimation&&(sr().content+=\",user-scalable=0\")}},{name:\"hide\",self:!0,handler:function(){_e(document.body,this.clsContainerAnimation),Le(document.body,\"touch-action\",\"\")}},{name:\"hidden\",self:!0,handler:function(){this.clsContainerAnimation&&function(){var t=sr();t.content=t.content.replace(/,user-scalable=0$/,\"\")}(),\"reveal\"===this.mode&&xe(this.panel),_e(this.panel,this.clsSidebarAnimation,this.clsMode),_e(this.$el,this.clsOverlay),Le(this.$el,\"display\",\"\"),_e(document.body,this.clsContainer,this.clsFlip),Le(document.documentElement,\"overflowY\",\"\")}},{name:\"swipeLeft swipeRight\",handler:function(t){this.isToggled()&&u(t.type,\"Left\")^this.flip&&this.hide()}}]};function sr(){return Te('meta[name=\"viewport\"]',document.head)||pe(document.head,'<meta name=\"viewport\">')}var ar={mixins:[ei],props:{selContainer:String,selContent:String},data:{selContainer:\".uk-modal\",selContent:\".uk-modal-dialog\"},computed:{container:function(t,e){return Mt(e,t.selContainer)},content:function(t,e){return Mt(e,t.selContent)}},connected:function(){Le(this.$el,\"minHeight\",150)},update:{read:function(){return!(!this.content||!this.container)&&{current:F(Le(this.$el,\"maxHeight\")),max:Math.max(150,sn(this.container)-(nn(this.content).height-sn(this.$el)))}},write:function(t){var e=t.current,n=t.max;Le(this.$el,\"maxHeight\",n),Math.round(e)!==Math.round(n)&&qt(this.$el,\"resize\")},events:[\"resize\"]}},hr={props:[\"width\",\"height\"],connected:function(){Ae(this.$el,\"uk-responsive-width\")},update:{read:function(){return!!(Ht(this.$el)&&this.width&&this.height)&&{width:an(this.$el.parentNode),height:this.height}},write:function(t){sn(this.$el,nt.contain({height:this.height,width:this.width},t).height)},events:[\"resize\"]}},cr={props:{duration:Number,offset:Number},data:{duration:1e3,offset:0},methods:{scrollTo:function(e){var n=this;e=e&&Te(e)||document.body;var t=sn(document),i=sn(window),r=nn(e).top-this.offset;if(t<r+i&&(r=t-i),qt(this.$el,\"beforescroll\",[this,e])){var o=Date.now(),s=window.pageYOffset,a=function(){var t=s+(r-s)*function(t){return.5*(1-Math.cos(Math.PI*t))}(Z((Date.now()-o)/n.duration));gn(window,t),t!==r?requestAnimationFrame(a):qt(n.$el,\"scrolled\",[n,e])};a()}}},events:{click:function(t){t.defaultPrevented||(t.preventDefault(),this.scrollTo(zt(decodeURIComponent(this.$el.hash)).substr(1)))}}};var ur={args:\"cls\",props:{cls:String,target:String,hidden:Boolean,offsetTop:Number,offsetLeft:Number,repeat:Boolean,delay:Number},data:function(){return{cls:!1,target:!1,hidden:!0,offsetTop:0,offsetLeft:0,repeat:!1,delay:0,inViewClass:\"uk-scrollspy-inview\"}},computed:{elements:function(t,e){var n=t.target;return n?Ee(n,e):[e]}},update:[{write:function(){this.hidden&&Le(jt(this.elements,\":not(.\"+this.inViewClass+\")\"),\"visibility\",\"hidden\")}},{read:function(t){var n=this;t.update&&this.elements.forEach(function(t){var e=t._ukScrollspyState;(e=e||{cls:st(t,\"uk-scrollspy-class\")||n.cls}).show=pn(t,n.offsetTop,n.offsetLeft),t._ukScrollspyState=e})},write:function(r){var o=this;if(!r.update)return this.$emit(),r.update=!0;this.elements.forEach(function(t){var n=t._ukScrollspyState,e=n.cls;if(!n.show||n.inview||n.queued){if(!n.show&&(n.inview||n.queued)&&o.repeat){if(n.abort&&n.abort(),!n.inview)return;Le(t,\"visibility\",o.hidden?\"hidden\":\"\"),_e(t,o.inViewClass),De(t,e),qt(t,\"outview\"),o.$update(t),n.inview=!1}}else{var i=function(){Le(t,\"visibility\",\"\"),Ae(t,o.inViewClass),De(t,e),qt(t,\"inview\"),o.$update(t),n.inview=!0,n.abort&&n.abort()};o.delay?(n.queued=!0,r.promise=(r.promise||ne.resolve()).then(function(){return!n.inview&&new ne(function(t){var e=setTimeout(function(){i(),t()},r.promise||1===o.elements.length?o.delay:0);n.abort=function(){clearTimeout(e),t(),n.queued=!1}})})):i()}})},events:[\"scroll\",\"resize\"]}]},lr={props:{cls:String,closest:String,scroll:Boolean,overflow:Boolean,offset:Number},data:{cls:\"uk-active\",closest:!1,scroll:!1,overflow:!0,offset:0},computed:{links:function(t,e){return Ee('a[href^=\"#\"]',e).filter(function(t){return t.hash})},elements:function(t){var e=t.closest;return Mt(this.links,e||\"*\")},targets:function(){return Ee(this.links.map(function(t){return zt(t.hash).substr(1)}).join(\",\"))}},update:[{read:function(){this.scroll&&this.$create(\"scroll\",this.links,{offset:this.offset||0})}},{read:function(o){var s=this,a=window.pageYOffset+this.offset+1,h=sn(document)-sn(window)+this.offset;o.active=!1,this.targets.every(function(t,e){var n=nn(t).top,i=e+1===s.targets.length;if(!s.overflow&&(0===e&&a<n||i&&n+t.offsetTop<a))return!1;if(!i&&nn(s.targets[e+1]).top<=a)return!0;if(h<=a)for(var r=s.targets.length-1;e<r;r--)if(pn(s.targets[r])){t=s.targets[r];break}return!(o.active=Te(jt(s.links,'[href=\"#'+t.id+'\"]')))})},write:function(t){var e=t.active;this.links.forEach(function(t){return t.blur()}),_e(this.elements,this.cls),e&&qt(this.$el,\"active\",[e,Ae(this.closest?Mt(e,this.closest):e,this.cls)])},events:[\"scroll\",\"resize\"]}]},dr={mixins:[ei,Gi],props:{top:null,bottom:Boolean,offset:String,animation:String,clsActive:String,clsInactive:String,clsFixed:String,clsBelow:String,selTarget:String,widthElement:Boolean,showOnUp:Boolean,targetOffset:Number},data:{top:0,bottom:!1,offset:0,animation:\"\",clsActive:\"uk-active\",clsInactive:\"\",clsFixed:\"uk-sticky-fixed\",clsBelow:\"uk-sticky-below\",selTarget:\"\",widthElement:!1,showOnUp:!1,targetOffset:!1},computed:{offset:function(t){return wn(t.offset)},selTarget:function(t,e){var n=t.selTarget;return n&&Te(n,e)||e},widthElement:function(t,e){return wt(t.widthElement,e)||this.placeholder},isActive:{get:function(){return Oe(this.selTarget,this.clsActive)},set:function(t){t&&!this.isActive?(Me(this.selTarget,this.clsInactive,this.clsActive),qt(this.$el,\"active\")):t||Oe(this.selTarget,this.clsInactive)||(Me(this.selTarget,this.clsActive,this.clsInactive),qt(this.$el,\"inactive\"))}}},connected:function(){this.placeholder=Te(\"+ .uk-sticky-placeholder\",this.$el)||Te('<div class=\"uk-sticky-placeholder\"></div>'),this.isFixed=!1,this.isActive=!1},disconnected:function(){this.isFixed&&(this.hide(),_e(this.selTarget,this.clsInactive)),we(this.placeholder),this.placeholder=null,this.widthElement=null},events:[{name:\"load hashchange popstate\",el:window,handler:function(){var i=this;if(!1!==this.targetOffset&&location.hash&&0<window.pageYOffset){var r=Te(location.hash);r&&kn.read(function(){var t=nn(r).top,e=nn(i.$el).top,n=i.$el.offsetHeight;i.isFixed&&t<=e+n&&e<=t+r.offsetHeight&&gn(window,t-n-(z(i.targetOffset)?i.targetOffset:0)-i.offset)})}}}],update:[{read:function(t,e){var n=t.height;this.isActive&&\"update\"!==e&&(this.hide(),n=this.$el.offsetHeight,this.show()),n=this.isActive?n:this.$el.offsetHeight,this.topOffset=nn(this.isFixed?this.placeholder:this.$el).top,this.bottomOffset=this.topOffset+n;var i=fr(\"bottom\",this);return this.top=Math.max(F(fr(\"top\",this)),this.topOffset)-this.offset,this.bottom=i&&i-n,this.inactive=!this.matchMedia,{lastScroll:!1,height:n,margins:Le(this.$el,[\"marginTop\",\"marginBottom\",\"marginLeft\",\"marginRight\"])}},write:function(t){var e=t.height,n=t.margins,i=this.placeholder;Le(i,U({height:e},n)),Wt(i,document)||(ge(this.$el,i),it(i,\"hidden\",\"\")),this.isActive=this.isActive},events:[\"resize\"]},{read:function(t){var e=t.scroll;return void 0===e&&(e=0),this.width=(Ht(this.widthElement)?this.widthElement:this.$el).offsetWidth,this.scroll=window.pageYOffset,{dir:e<=this.scroll?\"down\":\"up\",scroll:this.scroll,visible:Ht(this.$el),top:vn(this.placeholder)[0]}},write:function(t,e){var n=this,i=t.initTimestamp;void 0===i&&(i=0);var r=t.dir,o=t.lastDir,s=t.lastScroll,a=t.scroll,h=t.top,c=t.visible,u=performance.now();if(!((t.lastScroll=a)<0||a===s||!c||this.disabled||this.showOnUp&&\"scroll\"!==e||((300<u-i||r!==o)&&(t.initScroll=a,t.initTimestamp=u),t.lastDir=r,this.showOnUp&&Math.abs(t.initScroll-a)<=30&&Math.abs(s-a)<=10)))if(this.inactive||a<this.top||this.showOnUp&&(a<=this.top||\"down\"===r||\"up\"===r&&!this.isFixed&&a<=this.bottomOffset)){if(!this.isFixed)return void(Qe.inProgress(this.$el)&&a<h&&(Qe.cancel(this.$el),this.hide()));this.isFixed=!1,this.animation&&a>this.topOffset?(Qe.cancel(this.$el),Qe.out(this.$el,this.animation).then(function(){return n.hide()},Q)):this.hide()}else this.isFixed?this.update():this.animation?(Qe.cancel(this.$el),this.show(),Qe.in(this.$el,this.animation).catch(Q)):this.show()},events:[\"resize\",\"scroll\"]}],methods:{show:function(){this.isFixed=!0,this.update(),it(this.placeholder,\"hidden\",null)},hide:function(){this.isActive=!1,_e(this.$el,this.clsFixed,this.clsBelow),Le(this.$el,{position:\"\",top:\"\",width:\"\"}),it(this.placeholder,\"hidden\",\"\")},update:function(){var t=0!==this.top||this.scroll>this.top,e=Math.max(0,this.offset);this.bottom&&this.scroll>this.bottom-this.offset&&(e=this.bottom-this.scroll),Le(this.$el,{position:\"fixed\",top:e+\"px\",width:this.width}),this.isActive=t,De(this.$el,this.clsBelow,this.scroll>this.bottomOffset),Ae(this.$el,this.clsFixed)}}};function fr(t,e){var n=e.$props,i=e.$el,r=e[t+\"Offset\"],o=n[t];if(o)return z(o)&&O(o)&&o.match(/^-?\\d/)?r+wn(o):nn(!0===o?i.parentNode:wt(o,i)).bottom}var pr,mr={mixins:[ni],args:\"connect\",props:{connect:String,toggle:String,active:Number,swiping:Boolean},data:{connect:\"~.uk-switcher\",toggle:\"> * > :first-child\",active:0,swiping:!0,cls:\"uk-active\",clsContainer:\"uk-switcher\",attrItem:\"uk-switcher-item\",queued:!0},computed:{connects:function(t,e){return bt(t.connect,e)},toggles:function(t,e){return Ee(t.toggle,e)}},events:[{name:\"click\",delegate:function(){return this.toggle+\":not(.uk-disabled)\"},handler:function(e){e.preventDefault(),this.show(W(this.$el.children).filter(function(t){return Wt(e.current,t)})[0])}},{name:\"click\",el:function(){return this.connects},delegate:function(){return\"[\"+this.attrItem+\"],[data-\"+this.attrItem+\"]\"},handler:function(t){t.preventDefault(),this.show(st(t.current,this.attrItem))}},{name:\"swipeRight swipeLeft\",filter:function(){return this.swiping},el:function(){return this.connects},handler:function(t){var e=t.type;this.show(u(e,\"Left\")?\"next\":\"previous\")}}],update:function(){var e=this;this.connects.forEach(function(t){return e.updateAria(t.children)});var t=this.$el.children;this.show(jt(t,\".\"+this.cls)[0]||t[this.active]||t[0]),this.swiping&&Le(this.connects,\"touch-action\",\"pan-y pinch-zoom\")},methods:{index:function(){return!B(this.connects)&&ue(jt(this.connects[0].children,\".\"+this.cls)[0])},show:function(t){for(var e,n,i=this,r=this.$el.children,o=r.length,s=this.index(),a=0<=s,h=\"previous\"===t?-1:1,c=le(t,r,s),u=0;u<o;u++,c=(c+h+o)%o)if(!_t(this.toggles[c],\".uk-disabled *, .uk-disabled, [disabled]\")){e=this.toggles[c],n=r[c];break}!n||0<=s&&Oe(n,this.cls)||s===c||(_e(r,this.cls),Ae(n,this.cls),it(this.toggles,\"aria-expanded\",!1),it(e,\"aria-expanded\",!0),this.connects.forEach(function(t){a?i.toggleElement([t.children[s],t.children[c]]):i.toggleNow(t.children[c])}))}}},gr={mixins:[ei],extends:mr,props:{media:Boolean},data:{media:960,attrItem:\"uk-tab-item\"},connected:function(){var t=Oe(this.$el,\"uk-tab-left\")?\"uk-tab-left\":!!Oe(this.$el,\"uk-tab-right\")&&\"uk-tab-right\";t&&this.$create(\"toggle\",this.$el,{cls:t,mode:\"media\",media:this.media})}},vr={mixins:[Gi,ni],args:\"target\",props:{href:String,target:null,mode:\"list\"},data:{href:!1,target:!1,mode:\"click\",queued:!0},computed:{target:function(t,e){var n=t.href,i=t.target;return(i=bt(i||n,e)).length&&i||[e]}},connected:function(){qt(this.target,\"updatearia\",[this])},events:[{name:mt+\" \"+gt,filter:function(){return b(this.mode,\"hover\")},handler:function(t){Qt(t)||this.toggle(\"toggle\"+(t.type===mt?\"show\":\"hide\"))}},{name:\"click\",filter:function(){return b(this.mode,\"click\")||lt&&b(this.mode,\"hover\")},handler:function(t){var e;(Mt(t.target,'a[href=\"#\"], a[href=\"\"]')||(e=Mt(t.target,\"a[href]\"))&&(this.cls||!Ht(this.target)||e.hash&&_t(this.target,e.hash)))&&t.preventDefault(),this.toggle()}}],update:{read:function(){return!(!b(this.mode,\"media\")||!this.media)&&{match:this.matchMedia}},write:function(t){var e=t.match,n=this.isToggled(this.target);(e?!n:n)&&this.toggle()},events:[\"resize\"]},methods:{toggle:function(t){qt(this.target,t||\"toggle\",[this])&&this.toggleElement(this.target)}}};Ln.version=\"3.2.0\",(pr=Ln).component(\"accordion\",ii),pr.component(\"alert\",ri),pr.component(\"cover\",hi),pr.component(\"drop\",ui),pr.component(\"dropdown\",di),pr.component(\"formCustom\",fi),pr.component(\"gif\",pi),pr.component(\"grid\",wi),pr.component(\"heightMatch\",yi),pr.component(\"heightViewport\",$i),pr.component(\"icon\",Oi),pr.component(\"img\",Li),pr.component(\"leader\",Ji),pr.component(\"margin\",mi),pr.component(\"modal\",nr),pr.component(\"nav\",ir),pr.component(\"navbar\",rr),pr.component(\"offcanvas\",or),pr.component(\"overflowAuto\",ar),pr.component(\"responsive\",hr),pr.component(\"scroll\",cr),pr.component(\"scrollspy\",ur),pr.component(\"scrollspyNav\",lr),pr.component(\"sticky\",dr),pr.component(\"svg\",Si),pr.component(\"switcher\",mr),pr.component(\"tab\",gr),pr.component(\"toggle\",vr),pr.component(\"video\",ai),pr.component(\"close\",Pi),pr.component(\"marker\",Di),pr.component(\"navbarToggleIcon\",Di),pr.component(\"overlayIcon\",Di),pr.component(\"paginationNext\",Di),pr.component(\"paginationPrevious\",Di),pr.component(\"searchIcon\",Bi),pr.component(\"slidenavNext\",zi),pr.component(\"slidenavPrevious\",zi),pr.component(\"spinner\",Hi),pr.component(\"totop\",Di),pr.use(oi);var wr={mixins:[ei],props:{date:String,clsWrapper:String},data:{date:\"\",clsWrapper:\".uk-countdown-%unit%\"},computed:{date:function(t){var e=t.date;return Date.parse(e)},days:function(t,e){return Te(t.clsWrapper.replace(\"%unit%\",\"days\"),e)},hours:function(t,e){return Te(t.clsWrapper.replace(\"%unit%\",\"hours\"),e)},minutes:function(t,e){return Te(t.clsWrapper.replace(\"%unit%\",\"minutes\"),e)},seconds:function(t,e){return Te(t.clsWrapper.replace(\"%unit%\",\"seconds\"),e)},units:function(){var e=this;return[\"days\",\"hours\",\"minutes\",\"seconds\"].filter(function(t){return e[t]})}},connected:function(){this.start()},disconnected:function(){var e=this;this.stop(),this.units.forEach(function(t){return de(e[t])})},events:[{name:\"visibilitychange\",el:document,handler:function(){document.hidden?this.stop():this.start()}}],update:{write:function(){var i=this,r=function(t){var e=t-Date.now();return{total:e,seconds:e/1e3%60,minutes:e/1e3/60%60,hours:e/1e3/60/60%24,days:e/1e3/60/60/24}}(this.date);r.total<=0&&(this.stop(),r.days=r.hours=r.minutes=r.seconds=0),this.units.forEach(function(t){var e=String(Math.floor(r[t]));e=e.length<2?\"0\"+e:e;var n=i[t];n.textContent!==e&&((e=e.split(\"\")).length!==n.children.length&&fe(n,e.map(function(){return\"<span></span>\"}).join(\"\")),e.forEach(function(t,e){return n.children[e].textContent=t}))})}},methods:{start:function(){var t=this;this.stop(),this.date&&this.units.length&&(this.$emit(),this.timer=setInterval(function(){return t.$emit()},1e3))},stop:function(){this.timer&&(clearInterval(this.timer),this.timer=null)}}};var br,yr=\"uk-animation-target\",xr={props:{animation:Number},data:{animation:150},computed:{target:function(){return this.$el}},methods:{animate:function(t){var i=this;!function(){if(br)return;(br=pe(document.head,\"<style>\").sheet).insertRule(\".\"+yr+\" > * {\\n margin-top: 0 !important;\\n transform: none !important;\\n }\",0)}();var r=W(this.target.children),o=r.map(function(t){return kr(t,!0)}),e=sn(this.target),n=window.pageYOffset;t(),Xe.cancel(this.target),r.forEach(Xe.cancel),$r(this.target),this.$update(this.target),kn.flush();var s=sn(this.target),a=(r=r.concat(W(this.target.children).filter(function(t){return!b(r,t)}))).map(function(t,e){return!!(t.parentNode&&e in o)&&(o[e]?Ht(t)?Ir(t):{opacity:0}:{opacity:Ht(t)?1:0})});return o=a.map(function(t,e){var n=r[e].parentNode===i.target&&(o[e]||kr(r[e]));if(n)if(t){if(!(\"opacity\"in t)){n.opacity%1?t.opacity=1:delete n.opacity}}else delete n.opacity;return n}),Ae(this.target,yr),r.forEach(function(t,e){return o[e]&&Le(t,o[e])}),Le(this.target,\"height\",e),gn(window,n),ne.all(r.map(function(t,e){return o[e]&&a[e]?Xe.start(t,a[e],i.animation,\"ease\"):ne.resolve()}).concat(Xe.start(this.target,{height:s},this.animation,\"ease\"))).then(function(){r.forEach(function(t,e){return Le(t,{display:0===a[e].opacity?\"none\":\"\",zIndex:\"\"})}),$r(i.target),i.$update(i.target),kn.flush()},Q)}}};function kr(t,e){var n=Le(t,\"zIndex\");return!!Ht(t)&&U({display:\"\",opacity:e?Le(t,\"opacity\"):\"0\",pointerEvents:\"none\",position:\"absolute\",zIndex:\"auto\"===n?ue(t):n},Ir(t))}function $r(t){Le(t.children,{height:\"\",left:\"\",opacity:\"\",pointerEvents:\"\",position:\"\",top:\"\",width:\"\"}),_e(t,yr),Le(t,\"height\",\"\")}function Ir(t){var e=t.getBoundingClientRect(),n=e.height,i=e.width,r=on(t),o=r.top,s=r.left;return{top:o+=F(Le(t,\"marginTop\")),left:s,height:n,width:i}}var Sr={mixins:[xr],args:\"target\",props:{target:Boolean,selActive:Boolean},data:{target:null,selActive:!1,attrItem:\"uk-filter-control\",cls:\"uk-active\",animation:250},computed:{toggles:{get:function(t,e){t.attrItem;return Ee(\"[\"+this.attrItem+\"],[data-\"+this.attrItem+\"]\",e)},watch:function(){this.updateState()}},target:function(t,e){return Te(t.target,e)},children:{get:function(){return W(this.target&&this.target.children)},watch:function(t,e){!function(t,e){return t.length===e.length&&t.every(function(t){return~e.indexOf(t)})}(t,e)&&this.updateState()}}},events:[{name:\"click\",delegate:function(){return\"[\"+this.attrItem+\"],[data-\"+this.attrItem+\"]\"},handler:function(t){t.preventDefault(),this.apply(t.current)}}],connected:function(){var e=this;if(this.updateState(),!1!==this.selActive){var n=Ee(this.selActive,this.$el);this.toggles.forEach(function(t){return De(t,e.cls,b(n,t))})}},methods:{apply:function(t){this.setState(Er(t,this.attrItem,this.getState()))},getState:function(){var n=this;return this.toggles.filter(function(t){return Oe(t,n.cls)}).reduce(function(t,e){return Er(e,n.attrItem,t)},{filter:{\"\":\"\"},sort:[]})},setState:function(o,t){var s=this;void 0===t&&(t=!0),o=U({filter:{\"\":\"\"},sort:[]},o),qt(this.$el,\"beforeFilter\",[this,o]);var a=this.children;this.toggles.forEach(function(t){return De(t,s.cls,!!function(t,e,n){var i=n.filter;void 0===i&&(i={\"\":\"\"});var r=n.sort,o=r[0],s=r[1],a=Tr(t,e),h=a.filter;void 0===h&&(h=\"\");var c=a.group;void 0===c&&(c=\"\");var u=a.sort,l=a.order;void 0===l&&(l=\"asc\");return P(u)?c in i&&h===i[c]||!h&&c&&!(c in i)&&!i[\"\"]:o===u&&s===l}(t,s.attrItem,o))});function e(){var e=function(t){var e=t.filter,n=\"\";return K(e,function(t){return n+=t||\"\"}),n}(o);a.forEach(function(t){return Le(t,\"display\",e&&!_t(t,e)?\"none\":\"\")});var t=o.sort,n=t[0],i=t[1];if(n){var r=function(t,n,i){return U([],t).sort(function(t,e){return st(t,n).localeCompare(st(e,n),void 0,{numeric:!0})*(\"asc\"===i||-1)})}(a,n,i);Y(r,a)||r.forEach(function(t){return pe(s.target,t)})}}t?this.animate(e).then(function(){return qt(s.$el,\"afterFilter\",[s])}):(e(),qt(this.$el,\"afterFilter\",[this]))},updateState:function(){var t=this;kn.write(function(){return t.setState(t.getState(),!1)})}}};function Tr(t,e){return On(st(t,e),[\"filter\"])}function Er(t,e,n){var i=Tr(t,e),r=i.filter,o=i.group,s=i.sort,a=i.order;return void 0===a&&(a=\"asc\"),(r||P(s))&&(o?r?(delete n.filter[\"\"],n.filter[o]=r):(delete n.filter[o],(B(n.filter)||\"\"in n.filter)&&(n.filter={\"\":r||\"\"})):n.filter={\"\":r||\"\"}),P(s)||(n.sort=[s,a]),n}var Cr={slide:{show:function(t){return[{transform:_r(-100*t)},{transform:_r()}]},percent:function(t){return Ar(t)},translate:function(t,e){return[{transform:_r(-100*e*t)},{transform:_r(100*e*(1-t))}]}}};function Ar(t){return Math.abs(Le(t,\"transform\").split(\",\")[4]/t.offsetWidth)||0}function _r(t,e){return void 0===t&&(t=0),void 0===e&&(e=\"%\"),t+=t?e:\"\",at?\"translateX(\"+t+\")\":\"translate3d(\"+t+\", 0, 0)\"}function Nr(t){return\"scale3d(\"+t+\", \"+t+\", 1)\"}var Mr=U({},Cr,{fade:{show:function(){return[{opacity:0},{opacity:1}]},percent:function(t){return 1-Le(t,\"opacity\")},translate:function(t){return[{opacity:1-t},{opacity:t}]}},scale:{show:function(){return[{opacity:0,transform:Nr(.8)},{opacity:1,transform:Nr(1)}]},percent:function(t){return 1-Le(t,\"opacity\")},translate:function(t){return[{opacity:1-t,transform:Nr(1-.2*t)},{opacity:t,transform:Nr(.8+.2*t)}]}}});function Or(t,e,n){qt(t,Ut(e,!1,!1,n))}var Dr={mixins:[{props:{autoplay:Boolean,autoplayInterval:Number,pauseOnHover:Boolean},data:{autoplay:!1,autoplayInterval:7e3,pauseOnHover:!0},connected:function(){this.autoplay&&this.startAutoplay()},disconnected:function(){this.stopAutoplay()},update:function(){it(this.slides,\"tabindex\",\"-1\")},events:[{name:\"visibilitychange\",el:document,filter:function(){return this.autoplay},handler:function(){document.hidden?this.stopAutoplay():this.startAutoplay()}}],methods:{startAutoplay:function(){var t=this;this.stopAutoplay(),this.interval=setInterval(function(){return(!t.draggable||!Te(\":focus\",t.$el))&&(!t.pauseOnHover||!_t(t.$el,\":hover\"))&&!t.stack.length&&t.show(\"next\")},this.autoplayInterval)},stopAutoplay:function(){this.interval&&clearInterval(this.interval)}}},{props:{draggable:Boolean},data:{draggable:!0,threshold:10},created:function(){var i=this;[\"start\",\"move\",\"end\"].forEach(function(t){var n=i[t];i[t]=function(t){var e=te(t).x*(ht?-1:1);i.prevPos=e!==i.pos?i.pos:i.prevPos,i.pos=e,n(t)}})},events:[{name:dt,delegate:function(){return this.selSlides},handler:function(t){!this.draggable||!Qt(t)&&function(t){return!t.children.length&&t.childNodes.length}(t.target)||0<t.button||this.length<2||this.start(t)}},{name:\"touchmove\",passive:!1,handler:\"move\",delegate:function(){return this.selSlides}},{name:\"dragstart\",handler:function(t){t.preventDefault()}}],methods:{start:function(){var t=this;this.drag=this.pos,this._transitioner?(this.percent=this._transitioner.percent(),this.drag+=this._transitioner.getDistance()*this.percent*this.dir,this._transitioner.cancel(),this._transitioner.translate(this.percent),this.dragging=!0,this.stack=[]):this.prevIndex=this.index;var e=\"touchmove\"!=ft?Vt(document,ft,this.move,{passive:!1}):Q;this.unbindMove=function(){e(),t.unbindMove=null},Vt(window,\"scroll\",this.unbindMove),Vt(document,pt,this.end,!0),Le(this.list,\"userSelect\",\"none\")},move:function(t){var e=this;if(this.unbindMove){var n=this.pos-this.drag;if(!(0==n||this.prevPos===this.pos||!this.dragging&&Math.abs(n)<this.threshold)){Le(this.list,\"pointerEvents\",\"none\"),t.cancelable&&t.preventDefault(),this.dragging=!0,this.dir=n<0?1:-1;for(var i=this.slides,r=this.prevIndex,o=Math.abs(n),s=this.getIndex(r+this.dir,r),a=this._getDistance(r,s)||i[r].offsetWidth;s!==r&&a<o;)this.drag-=a*this.dir,r=s,o-=a,s=this.getIndex(r+this.dir,r),a=this._getDistance(r,s)||i[r].offsetWidth;this.percent=o/a;var h,c=i[r],u=i[s],l=this.index!==s,d=r===s;[this.index,this.prevIndex].filter(function(t){return!b([s,r],t)}).forEach(function(t){qt(i[t],\"itemhidden\",[e]),d&&(h=!0,e.prevIndex=r)}),(this.index===r&&this.prevIndex!==r||h)&&qt(i[this.index],\"itemshown\",[this]),l&&(this.prevIndex=r,this.index=s,d||qt(c,\"beforeitemhide\",[this]),qt(u,\"beforeitemshow\",[this])),this._transitioner=this._translate(Math.abs(this.percent),c,!d&&u),l&&(d||qt(c,\"itemhide\",[this]),qt(u,\"itemshow\",[this]))}}},end:function(){if(Rt(window,\"scroll\",this.unbindMove),this.unbindMove&&this.unbindMove(),Rt(document,pt,this.end,!0),this.dragging)if(this.dragging=null,this.index===this.prevIndex)this.percent=1-this.percent,this.dir*=-1,this._show(!1,this.index,!0),this._transitioner=null;else{var t=(ht?this.dir*(ht?1:-1):this.dir)<0==this.prevPos>this.pos;this.index=t?this.index:this.prevIndex,t&&(this.percent=1-this.percent),this.show(0<this.dir&&!t||this.dir<0&&t?\"next\":\"previous\",!0)}Le(this.list,{userSelect:\"\",pointerEvents:\"\"}),this.drag=this.percent=null}}},{data:{selNav:!1},computed:{nav:function(t,e){return Te(t.selNav,e)},selNavItem:function(t){var e=t.attrItem;return\"[\"+e+\"],[data-\"+e+\"]\"},navItems:function(t,e){return Ee(this.selNavItem,e)}},update:{write:function(){var n=this;this.nav&&this.length!==this.nav.children.length&&fe(this.nav,this.slides.map(function(t,e){return\"<li \"+n.attrItem+'=\"'+e+'\"><a href=\"#\"></a></li>'}).join(\"\")),De(Ee(this.selNavItem,this.$el).concat(this.nav),\"uk-hidden\",!this.maxIndex),this.updateNav()},events:[\"resize\"]},events:[{name:\"click\",delegate:function(){return this.selNavItem},handler:function(t){t.preventDefault(),this.show(st(t.current,this.attrItem))}},{name:\"itemshow\",handler:\"updateNav\"}],methods:{updateNav:function(){var n=this,i=this.getValidIndex();this.navItems.forEach(function(t){var e=st(t,n.attrItem);De(t,n.clsActive,L(e)===i),De(t,\"uk-invisible\",n.finite&&(\"previous\"===e&&0===i||\"next\"===e&&i>=n.maxIndex))})}}}],props:{clsActivated:Boolean,easing:String,index:Number,finite:Boolean,velocity:Number},data:function(){return{easing:\"ease\",finite:!1,velocity:1,index:0,prevIndex:-1,stack:[],percent:0,clsActive:\"uk-active\",clsActivated:!1,Transitioner:!1,transitionOptions:{}}},connected:function(){this.prevIndex=-1,this.index=this.getValidIndex(this.index),this.stack=[]},disconnected:function(){_e(this.slides,this.clsActive)},computed:{duration:function(t,e){var n=t.velocity;return zr(e.offsetWidth/n)},list:function(t,e){return Te(t.selList,e)},maxIndex:function(){return this.length-1},selSlides:function(t){return t.selList+\" > *\"},slides:{get:function(){return W(this.list.children)},watch:function(){this.$reset()}},length:function(){return this.slides.length}},events:{itemshown:function(){this.$update(this.list)}},methods:{show:function(t,e){var n=this;if(void 0===e&&(e=!1),!this.dragging&&this.length){var i=this.stack,r=e?0:i.length,o=function(){i.splice(r,1),i.length&&n.show(i.shift(),!0)};if(i[e?\"unshift\":\"push\"](t),!e&&1<i.length)2===i.length&&this._transitioner.forward(Math.min(this.duration,200));else{var s=this.index,a=Oe(this.slides,this.clsActive)&&this.slides[s],h=this.getIndex(t,this.index),c=this.slides[h];if(a!==c){if(this.dir=function(t,e){return\"next\"===t?1:\"previous\"===t?-1:t<e?-1:1}(t,s),this.prevIndex=s,this.index=h,a&&qt(a,\"beforeitemhide\",[this]),!qt(c,\"beforeitemshow\",[this,a]))return this.index=this.prevIndex,void o();var u=this._show(a,c,e).then(function(){return a&&qt(a,\"itemhidden\",[n]),qt(c,\"itemshown\",[n]),new ne(function(t){kn.write(function(){i.shift(),i.length?n.show(i.shift(),!0):n._transitioner=null,t()})})});return a&&qt(a,\"itemhide\",[this]),qt(c,\"itemshow\",[this]),u}o()}}},getIndex:function(t,e){return void 0===t&&(t=this.index),void 0===e&&(e=this.index),Z(le(t,this.slides,e,this.finite),0,this.maxIndex)},getValidIndex:function(t,e){return void 0===t&&(t=this.index),void 0===e&&(e=this.prevIndex),this.getIndex(t,e)},_show:function(t,e,n){if(this._transitioner=this._getTransitioner(t,e,this.dir,U({easing:n?e.offsetWidth<600?\"cubic-bezier(0.25, 0.46, 0.45, 0.94)\":\"cubic-bezier(0.165, 0.84, 0.44, 1)\":this.easing},this.transitionOptions)),!n&&!t)return this._transitioner.translate(1),ne.resolve();var i=this.stack.length;return this._transitioner[1<i?\"forward\":\"show\"](1<i?Math.min(this.duration,75+75/(i-1)):this.duration,this.percent)},_getDistance:function(t,e){return this._getTransitioner(t,t!==e&&e).getDistance()},_translate:function(t,e,n){void 0===e&&(e=this.prevIndex),void 0===n&&(n=this.index);var i=this._getTransitioner(e!==n&&e,n);return i.translate(t),i},_getTransitioner:function(t,e,n,i){return void 0===t&&(t=this.prevIndex),void 0===e&&(e=this.index),void 0===n&&(n=this.dir||1),void 0===i&&(i=this.transitionOptions),new this.Transitioner(D(t)?this.slides[t]:t,D(e)?this.slides[e]:e,n*(ht?-1:1),i)}}};function zr(t){return.5*t+300}var Br={mixins:[Dr],props:{animation:String},data:{animation:\"slide\",clsActivated:\"uk-transition-active\",Animations:Cr,Transitioner:function(o,s,a,t){var e=t.animation,h=t.easing,n=e.percent,i=e.translate,r=e.show;void 0===r&&(r=Q);var c=r(a),u=new ee;return{dir:a,show:function(t,e,n){var i=this;void 0===e&&(e=0);var r=n?\"linear\":h;return t-=Math.round(t*Z(e,-1,1)),this.translate(e),Or(s,\"itemin\",{percent:e,duration:t,timing:r,dir:a}),Or(o,\"itemout\",{percent:1-e,duration:t,timing:r,dir:a}),ne.all([Xe.start(s,c[1],t,r),Xe.start(o,c[0],t,r)]).then(function(){i.reset(),u.resolve()},Q),u.promise},stop:function(){return Xe.stop([s,o])},cancel:function(){Xe.cancel([s,o])},reset:function(){for(var t in c[0])Le([s,o],t,\"\")},forward:function(t,e){return void 0===e&&(e=this.percent()),Xe.cancel([s,o]),this.show(t,e,!0)},translate:function(t){this.reset();var e=i(t,a);Le(s,e[1]),Le(o,e[0]),Or(s,\"itemtranslatein\",{percent:t,dir:a}),Or(o,\"itemtranslateout\",{percent:1-t,dir:a})},percent:function(){return n(o||s,s,a)},getDistance:function(){return o&&o.offsetWidth}}}},computed:{animation:function(t){var e=t.animation,n=t.Animations;return U(e in n?n[e]:n.slide,{name:e})},transitionOptions:function(){return{animation:this.animation}}},events:{\"itemshow itemhide itemshown itemhidden\":function(t){var e=t.target;this.$update(e)},beforeitemshow:function(t){Ae(t.target,this.clsActive)},itemshown:function(t){Ae(t.target,this.clsActivated)},itemhidden:function(t){_e(t.target,this.clsActive,this.clsActivated)}}},Pr={mixins:[Zi,tr,ni,Br],functional:!0,props:{delayControls:Number,preload:Number,videoAutoplay:Boolean,template:String},data:function(){return{preload:1,videoAutoplay:!1,delayControls:3e3,items:[],cls:\"uk-open\",clsPage:\"uk-lightbox-page\",selList:\".uk-lightbox-items\",attrItem:\"uk-lightbox-item\",selClose:\".uk-close-large\",selCaption:\".uk-lightbox-caption\",pauseOnHover:!1,velocity:2,Animations:Mr,template:'<div class=\"uk-lightbox uk-overflow-hidden\"> <ul class=\"uk-lightbox-items\"></ul> <div class=\"uk-lightbox-toolbar uk-position-top uk-text-right uk-transition-slide-top uk-transition-opaque\"> <button class=\"uk-lightbox-toolbar-icon uk-close-large\" type=\"button\" uk-close></button> </div> <a class=\"uk-lightbox-button uk-position-center-left uk-position-medium uk-transition-fade\" href=\"#\" uk-slidenav-previous uk-lightbox-item=\"previous\"></a> <a class=\"uk-lightbox-button uk-position-center-right uk-position-medium uk-transition-fade\" href=\"#\" uk-slidenav-next uk-lightbox-item=\"next\"></a> <div class=\"uk-lightbox-toolbar uk-lightbox-caption uk-position-bottom uk-text-center uk-transition-slide-bottom uk-transition-opaque\"></div> </div>'}},created:function(){var t=Te(this.template),e=Te(this.selList,t);this.items.forEach(function(){return pe(e,\"<li></li>\")}),this.$mount(pe(this.container,t))},computed:{caption:function(t,e){t.selCaption;return Te(\".uk-lightbox-caption\",e)}},events:[{name:ft+\" \"+dt+\" keydown\",handler:\"showControls\"},{name:\"click\",self:!0,delegate:function(){return this.selSlides},handler:function(t){t.defaultPrevented||this.hide()}},{name:\"shown\",self:!0,handler:function(){this.showControls()}},{name:\"hide\",self:!0,handler:function(){this.hideControls(),_e(this.slides,this.clsActive),Xe.stop(this.slides)}},{name:\"hidden\",self:!0,handler:function(){this.$destroy(!0)}},{name:\"keyup\",el:document,handler:function(t){if(this.isToggled(this.$el))switch(t.keyCode){case 37:this.show(\"previous\");break;case 39:this.show(\"next\")}}},{name:\"beforeitemshow\",handler:function(t){this.isToggled()||(this.draggable=!1,t.preventDefault(),this.toggleNow(this.$el,!0),this.animation=Mr.scale,_e(t.target,this.clsActive),this.stack.splice(1,0,this.index))}},{name:\"itemshow\",handler:function(t){var e=ue(t.target),n=this.getItem(e).caption;Le(this.caption,\"display\",n?\"\":\"none\"),fe(this.caption,n);for(var i=0;i<=this.preload;i++)this.loadItem(this.getIndex(e+i)),this.loadItem(this.getIndex(e-i))}},{name:\"itemshown\",handler:function(){this.draggable=this.$props.draggable}},{name:\"itemload\",handler:function(t,r){var o,s=this,e=r.source,n=r.type,i=r.alt;if(this.setItem(r,\"<span uk-spinner></span>\"),e)if(\"image\"===n||e.match(/\\.(jp(e)?g|png|gif|svg|webp)($|\\?)/i))he(e).then(function(t){return s.setItem(r,'<img width=\"'+t.width+'\" height=\"'+t.height+'\" src=\"'+e+'\" alt=\"'+(i||\"\")+'\">')},function(){return s.setError(r)});else if(\"video\"===n||e.match(/\\.(mp4|webm|ogv)($|\\?)/i)){var a=Te(\"<video controls playsinline\"+(r.poster?' poster=\"'+r.poster+'\"':\"\")+' uk-video=\"'+this.videoAutoplay+'\"></video>');it(a,\"src\",e),Yt(a,\"error loadedmetadata\",function(t){\"error\"===t?s.setError(r):(it(a,{width:a.videoWidth,height:a.videoHeight}),s.setItem(r,a))})}else if(\"iframe\"===n||e.match(/\\.(html|php)($|\\?)/i))this.setItem(r,'<iframe class=\"uk-lightbox-iframe\" src=\"'+e+'\" frameborder=\"0\" allowfullscreen></iframe>');else if(o=e.match(/\\/\\/.*?youtube(-nocookie)?\\.[a-z]+\\/watch\\?v=([^&\\s]+)/)||e.match(/()youtu\\.be\\/(.*)/)){var h=o[2],c=function(t,e){return void 0===t&&(t=640),void 0===e&&(e=450),s.setItem(r,Hr(\"https://www.youtube\"+(o[1]||\"\")+\".com/embed/\"+h,t,e,s.videoAutoplay))};he(\"https://img.youtube.com/vi/\"+h+\"/maxresdefault.jpg\").then(function(t){var e=t.width,n=t.height;120===e&&90===n?he(\"https://img.youtube.com/vi/\"+h+\"/0.jpg\").then(function(t){var e=t.width,n=t.height;return c(e,n)},c):c(e,n)},c)}else(o=e.match(/(\\/\\/.*?)vimeo\\.[a-z]+\\/([0-9]+).*?/))&&ae(\"https://vimeo.com/api/oembed.json?maxwidth=1920&url=\"+encodeURI(e),{responseType:\"json\",withCredentials:!1}).then(function(t){var e=t.response,n=e.height,i=e.width;return s.setItem(r,Hr(\"https://player.vimeo.com/video/\"+o[2],i,n,s.videoAutoplay))},function(){return s.setError(r)})}}],methods:{loadItem:function(t){void 0===t&&(t=this.index);var e=this.getItem(t);e.content||qt(this.$el,\"itemload\",[e])},getItem:function(t){return void 0===t&&(t=this.index),this.items[t]||{}},setItem:function(t,e){U(t,{content:e});var n=fe(this.slides[this.items.indexOf(t)],e);qt(this.$el,\"itemloaded\",[this,n]),this.$update(n)},setError:function(t){this.setItem(t,'<span uk-icon=\"icon: bolt; ratio: 2\"></span>')},showControls:function(){clearTimeout(this.controlsTimer),this.controlsTimer=setTimeout(this.hideControls,this.delayControls),Ae(this.$el,\"uk-active\",\"uk-transition-active\")},hideControls:function(){_e(this.$el,\"uk-active\",\"uk-transition-active\")}}};function Hr(t,e,n,i){return'<iframe src=\"'+t+'\" width=\"'+e+'\" height=\"'+n+'\" style=\"max-width: 100%; box-sizing: border-box;\" frameborder=\"0\" allowfullscreen uk-video=\"autoplay: '+i+'\" uk-responsive></iframe>'}var Lr,Fr={install:function(t,e){t.lightboxPanel||t.component(\"lightboxPanel\",Pr);U(e.props,t.component(\"lightboxPanel\").options.props)},props:{toggle:String},data:{toggle:\"a\"},computed:{toggles:{get:function(t,e){return Ee(t.toggle,e)},watch:function(){this.hide()}},items:function(){return J(this.toggles.map(jr),\"source\")}},disconnected:function(){this.hide()},events:[{name:\"click\",delegate:function(){return this.toggle+\":not(.uk-disabled)\"},handler:function(t){t.preventDefault();var e=st(t.current,\"href\");this.show(x(this.items,function(t){return t.source===e}))}}],methods:{show:function(t){var e=this;return this.panel=this.panel||this.$create(\"lightboxPanel\",U({},this.$props,{items:this.items})),Vt(this.panel.$el,\"hidden\",function(){return e.panel=!1}),this.panel.show(t)},hide:function(){return this.panel&&this.panel.hide()}}};function jr(n){return[\"href\",\"caption\",\"type\",\"poster\",\"alt\"].reduce(function(t,e){return t[\"href\"===e?\"source\":e]=st(n,e),t},{})}var Wr={},Vr={functional:!0,args:[\"message\",\"status\"],data:{message:\"\",status:\"\",timeout:5e3,group:null,pos:\"top-center\",clsClose:\"uk-notification-close\",clsMsg:\"uk-notification-message\"},install:function(r){r.notification.closeAll=function(n,i){Se(document.body,function(t){var e=r.getComponent(t,\"notification\");!e||n&&n!==e.group||e.close(i)})}},computed:{marginProp:function(t){return\"margin\"+(w(t.pos,\"top\")?\"Top\":\"Bottom\")},startProps:function(){var t;return(t={opacity:0})[this.marginProp]=-this.$el.offsetHeight,t}},created:function(){Wr[this.pos]||(Wr[this.pos]=pe(this.$container,'<div class=\"uk-notification uk-notification-'+this.pos+'\"></div>'));var t=Le(Wr[this.pos],\"display\",\"block\");this.$mount(pe(t,'<div class=\"'+this.clsMsg+(this.status?\" \"+this.clsMsg+\"-\"+this.status:\"\")+'\"> <a href=\"#\" class=\"'+this.clsClose+'\" data-uk-close></a> <div>'+this.message+\"</div> </div>\"))},connected:function(){var t,e=this,n=F(Le(this.$el,this.marginProp));Xe.start(Le(this.$el,this.startProps),((t={opacity:1})[this.marginProp]=n,t)).then(function(){e.timeout&&(e.timer=setTimeout(e.close,e.timeout))})},events:(Lr={click:function(t){Mt(t.target,'a[href=\"#\"],a[href=\"\"]')&&t.preventDefault(),this.close()}},Lr[mt]=function(){this.timer&&clearTimeout(this.timer)},Lr[gt]=function(){this.timeout&&(this.timer=setTimeout(this.close,this.timeout))},Lr),methods:{close:function(t){function e(){qt(n.$el,\"close\",[n]),we(n.$el),Wr[n.pos].children.length||Le(Wr[n.pos],\"display\",\"none\")}var n=this;this.timer&&clearTimeout(this.timer),t?e():Xe.start(this.$el,this.startProps).then(e)}}};var Rr=[\"x\",\"y\",\"bgx\",\"bgy\",\"rotate\",\"scale\",\"color\",\"backgroundColor\",\"borderColor\",\"opacity\",\"blur\",\"hue\",\"grayscale\",\"invert\",\"saturate\",\"sepia\",\"fopacity\",\"stroke\"],Yr={mixins:[Gi],props:Rr.reduce(function(t,e){return t[e]=\"list\",t},{}),data:Rr.reduce(function(t,e){return t[e]=void 0,t},{}),computed:{props:function(m,g){var v=this;return Rr.reduce(function(t,e){if(P(m[e]))return t;var n,i,r,o=e.match(/color/i),s=o||\"opacity\"===e,a=m[e].slice(0);s&&Le(g,e,\"\"),a.length<2&&a.unshift((\"scale\"===e?1:s?Le(g,e):0)||0);var h=function(t){return t.reduce(function(t,e){return O(e)&&e.replace(/-|\\d/g,\"\").trim()||t},\"\")}(a);if(o){var c=g.style.color;a=a.map(function(t){return function(t,e){return Le(Le(t,\"color\",e),\"color\").split(/[(),]/g).slice(1,-1).concat(1).slice(0,4).map(F)}(g,t)}),g.style.color=c}else if(w(e,\"bg\")){var u=\"bgy\"===e?\"height\":\"width\";if(a=a.map(function(t){return wn(t,u,v.$el)}),Le(g,\"background-position-\"+e[2],\"\"),i=Le(g,\"backgroundPosition\").split(\" \")[\"x\"===e[2]?0:1],v.covers){var l=Math.min.apply(Math,a),d=Math.max.apply(Math,a),f=a.indexOf(l)<a.indexOf(d);r=d-l,a=a.map(function(t){return t-(f?l:d)}),n=(f?-r:0)+\"px\"}else n=i}else a=a.map(F);if(\"stroke\"===e){if(!a.some(function(t){return t}))return t;var p=Ai(v.$el);Le(g,\"strokeDasharray\",p),\"%\"===h&&(a=a.map(function(t){return t*p/100})),a=a.reverse(),e=\"strokeDashoffset\"}return t[e]={steps:a,unit:h,pos:n,bgPos:i,diff:r},t},{})},bgProps:function(){var e=this;return[\"bgx\",\"bgy\"].filter(function(t){return t in e.props})},covers:function(t,e){return function(t){var e=t.style.backgroundSize,n=\"cover\"===Le(Le(t,\"backgroundSize\",\"\"),\"backgroundSize\");return t.style.backgroundSize=e,n}(e)}},disconnected:function(){delete this._image},update:{read:function(t){var h=this;if(t.active=this.matchMedia,t.active){if(!t.image&&this.covers&&this.bgProps.length){var e=Le(this.$el,\"backgroundImage\").replace(/^none|url\\([\"']?(.+?)[\"']?\\)$/,\"$1\");if(e){var n=new Image;n.src=e,(t.image=n).naturalWidth||(n.onload=function(){return h.$emit()})}}var i=t.image;if(i&&i.naturalWidth){var c={width:this.$el.offsetWidth,height:this.$el.offsetHeight},u={width:i.naturalWidth,height:i.naturalHeight},l=nt.cover(u,c);this.bgProps.forEach(function(t){var e=h.props[t],n=e.diff,i=e.bgPos,r=e.steps,o=\"bgy\"===t?\"height\":\"width\",s=l[o]-c[o];if(s<n)c[o]=l[o]+n-s;else if(n<s){var a=c[o]/wn(i,o,h.$el);a&&(h.props[t].steps=r.map(function(t){return t-(s-n)/a}))}l=nt.cover(u,c)}),t.dim=l}}},write:function(t){var e=t.dim;t.active?e&&Le(this.$el,{backgroundSize:e.width+\"px \"+e.height+\"px\",backgroundRepeat:\"no-repeat\"}):Le(this.$el,{backgroundSize:\"\",backgroundRepeat:\"\"})},events:[\"resize\"]},methods:{reset:function(){var n=this;K(this.getCss(0),function(t,e){return Le(n.$el,e,\"\")})},getCss:function(l){var d=this.props;return Object.keys(d).reduce(function(t,e){var n=d[e],i=n.steps,r=n.unit,o=n.pos,s=function(t,e,n){void 0===n&&(n=2);var i=qr(t,e),r=i[0],o=i[1],s=i[2];return(D(r)?r+Math.abs(r-o)*s*(r<o?1:-1):+o).toFixed(n)}(i,l);switch(e){case\"x\":case\"y\":r=r||\"px\",t.transform+=\" translate\"+p(e)+\"(\"+F(s).toFixed(\"px\"===r?0:2)+r+\")\";break;case\"rotate\":r=r||\"deg\",t.transform+=\" rotate(\"+(s+r)+\")\";break;case\"scale\":t.transform+=\" scale(\"+s+\")\";break;case\"bgy\":case\"bgx\":t[\"background-position-\"+e[2]]=\"calc(\"+o+\" + \"+s+\"px)\";break;case\"color\":case\"backgroundColor\":case\"borderColor\":var a=qr(i,l),h=a[0],c=a[1],u=a[2];t[e]=\"rgba(\"+h.map(function(t,e){return t+=u*(c[e]-t),3===e?F(t):parseInt(t,10)}).join(\",\")+\")\";break;case\"blur\":r=r||\"px\",t.filter+=\" blur(\"+(s+r)+\")\";break;case\"hue\":r=r||\"deg\",t.filter+=\" hue-rotate(\"+(s+r)+\")\";break;case\"fopacity\":r=r||\"%\",t.filter+=\" opacity(\"+(s+r)+\")\";break;case\"grayscale\":case\"invert\":case\"saturate\":case\"sepia\":r=r||\"%\",t.filter+=\" \"+e+\"(\"+(s+r)+\")\";break;default:t[e]=s}return t},{transform:\"\",filter:\"\"})}}};function qr(t,e){var n=t.length-1,i=Math.min(Math.floor(n*e),n-1),r=t.slice(i,i+2);return r.push(1===e?1:e%(1/n)*n),r}var Ur={mixins:[Yr],props:{target:String,viewport:Number,easing:Number},data:{target:!1,viewport:1,easing:1},computed:{target:function(t,e){var n=t.target;return function t(e){return e?\"offsetTop\"in e?e:t(e.parentNode):document.body}(n&&wt(n,e)||e)}},update:{read:function(t,e){var n=t.percent;if(\"scroll\"!==e&&(n=!1),t.active){var i=n;return{percent:n=function(t,e){return Z(t*(1-(e-e*t)))}(mn(this.target)/(this.viewport||1),this.easing),style:i!==n&&this.getCss(n)}}},write:function(t){var e=t.style;t.active?e&&Le(this.$el,e):this.reset()},events:[\"scroll\",\"resize\"]}};var Xr={update:{write:function(){if(!this.stack.length&&!this.dragging){var t=this.getValidIndex(this.index);~this.prevIndex&&this.index===t||this.show(t)}},events:[\"resize\"]}};function Kr(t,e,n){var i=Zr(t,e);return n?i-function(t,e){return Qr(e).width/2-Qr(t).width/2}(t,e):Math.min(i,Gr(e))}function Gr(t){return Math.max(0,Jr(t)-Qr(t).width)}function Jr(t){return eo(t).reduce(function(t,e){return Qr(e).width+t},0)}function Zr(t,e){return(on(t).left+(ht?Qr(t).width-Qr(e).width:0))*(ht?-1:1)}function Qr(t){return t.getBoundingClientRect()}function to(t,e,n){qt(t,Ut(e,!1,!1,n))}function eo(t){return W(t.children)}var no={mixins:[ei,Dr,Xr],props:{center:Boolean,sets:Boolean},data:{center:!1,sets:!1,attrItem:\"uk-slider-item\",selList:\".uk-slider-items\",selNav:\".uk-slider-nav\",clsContainer:\"uk-slider-container\",Transitioner:function(r,i,o,t){var e=t.center,s=t.easing,a=t.list,h=new ee,n=r?Kr(r,a,e):Kr(i,a,e)+Qr(i).width*o,c=i?Kr(i,a,e):n+Qr(r).width*o*(ht?-1:1);return{dir:o,show:function(t,e,n){void 0===e&&(e=0);var i=n?\"linear\":s;return t-=Math.round(t*Z(e,-1,1)),this.translate(e),r&&this.updateTranslates(),e=r?e:Z(e,0,1),to(this.getItemIn(),\"itemin\",{percent:e,duration:t,timing:i,dir:o}),r&&to(this.getItemIn(!0),\"itemout\",{percent:1-e,duration:t,timing:i,dir:o}),Xe.start(a,{transform:_r(-c*(ht?-1:1),\"px\")},t,i).then(h.resolve,Q),h.promise},stop:function(){return Xe.stop(a)},cancel:function(){Xe.cancel(a)},reset:function(){Le(a,\"transform\",\"\")},forward:function(t,e){return void 0===e&&(e=this.percent()),Xe.cancel(a),this.show(t,e,!0)},translate:function(t){var e=this.getDistance()*o*(ht?-1:1);Le(a,\"transform\",_r(Z(e-e*t-c,-Jr(a),Qr(a).width)*(ht?-1:1),\"px\")),this.updateTranslates(),r&&(t=Z(t,-1,1),to(this.getItemIn(),\"itemtranslatein\",{percent:t,dir:o}),to(this.getItemIn(!0),\"itemtranslateout\",{percent:1-t,dir:o}))},percent:function(){return Math.abs((Le(a,\"transform\").split(\",\")[4]*(ht?-1:1)+n)/(c-n))},getDistance:function(){return Math.abs(c-n)},getItemIn:function(t){void 0===t&&(t=!1);var e=this.getActives(),n=G(eo(a),\"offsetLeft\"),i=ue(n,e[0<o*(t?-1:1)?e.length-1:0]);return~i&&n[i+(r&&!t?o:0)]},getActives:function(){var n=Kr(r||i,a,e);return G(eo(a).filter(function(t){var e=Zr(t,a);return n<=e&&e+Qr(t).width<=Qr(a).width+n}),\"offsetLeft\")},updateTranslates:function(){var n=this.getActives();eo(a).forEach(function(t){var e=b(n,t);to(t,\"itemtranslate\"+(e?\"in\":\"out\"),{percent:e?1:0,dir:t.offsetLeft<=i.offsetLeft?1:-1})})}}}},computed:{avgWidth:function(){return Jr(this.list)/this.length},finite:function(t){return t.finite||Jr(this.list)<Qr(this.list).width+function(t){return eo(t).reduce(function(t,e){return Math.max(t,Qr(e).width)},0)}(this.list)+this.center},maxIndex:function(){if(!this.finite||this.center&&!this.sets)return this.length-1;if(this.center)return X(this.sets);Le(this.slides,\"order\",\"\");for(var t=Gr(this.list),e=this.length;e--;)if(Zr(this.list.children[e],this.list)<t)return Math.min(e+1,this.length-1);return 0},sets:function(t){var o=this,e=t.sets,s=Qr(this.list).width/(this.center?2:1),a=0,h=s,c=0;return!B(e=e&&this.slides.reduce(function(t,e,n){var i=Qr(e).width;if(a<c+i&&(!o.center&&n>o.maxIndex&&(n=o.maxIndex),!b(t,n))){var r=o.slides[n+1];o.center&&r&&i<h-Qr(r).width/2?h-=i:(h=s,t.push(n),a=c+s+(o.center?i/2:0))}return c+=i,t},[]))&&e},transitionOptions:function(){return{center:this.center,list:this.list}}},connected:function(){De(this.$el,this.clsContainer,!Te(\".\"+this.clsContainer,this.$el))},update:{write:function(){var n=this;Ee(\"[\"+this.attrItem+\"],[data-\"+this.attrItem+\"]\",this.$el).forEach(function(t){var e=st(t,n.attrItem);n.maxIndex&&De(t,\"uk-hidden\",z(e)&&(n.sets&&!b(n.sets,F(e))||e>n.maxIndex))}),this.dragging||this.stack.length||this._getTransitioner().translate(1)},events:[\"resize\"]},events:{beforeitemshow:function(t){!this.dragging&&this.sets&&this.stack.length<2&&!b(this.sets,this.index)&&(this.index=this.getValidIndex());var e=Math.abs(this.index-this.prevIndex+(0<this.dir&&this.index<this.prevIndex||this.dir<0&&this.index>this.prevIndex?(this.maxIndex+1)*this.dir:0));if(!this.dragging&&1<e){for(var n=0;n<e;n++)this.stack.splice(1,0,0<this.dir?\"next\":\"previous\");t.preventDefault()}else this.duration=zr(this.avgWidth/this.velocity)*(Qr(this.dir<0||!this.slides[this.prevIndex]?this.slides[this.index]:this.slides[this.prevIndex]).width/this.avgWidth),this.reorder()},itemshow:function(){P(this.prevIndex)||Ae(this._getTransitioner().getItemIn(),this.clsActive)},itemshown:function(){var e=this,n=this._getTransitioner(this.index).getActives();this.slides.forEach(function(t){return De(t,e.clsActive,b(n,t))}),this.sets&&!b(this.sets,F(this.index))||this.slides.forEach(function(t){return De(t,e.clsActivated,b(n,t))})}},methods:{reorder:function(){var n=this;if(Le(this.slides,\"order\",\"\"),!this.finite){var i=0<this.dir&&this.slides[this.prevIndex]?this.prevIndex:this.index;if(this.slides.forEach(function(t,e){return Le(t,\"order\",0<n.dir&&e<i?1:n.dir<0&&e>=n.index?-1:\"\")}),this.center)for(var t=this.slides[i],e=Qr(this.list).width/2-Qr(t).width/2,r=0;0<e;){var o=this.getIndex(--r+i,i),s=this.slides[o];Le(s,\"order\",i<o?-2:-1),e-=Qr(s).width}}},getValidIndex:function(t,e){if(void 0===t&&(t=this.index),void 0===e&&(e=this.prevIndex),t=this.getIndex(t,e),!this.sets)return t;var n;do{if(b(this.sets,t))return t;n=t,t=this.getIndex(t+this.dir,e)}while(t!==n);return t}}},io={mixins:[Yr],data:{selItem:\"!li\"},computed:{item:function(t,e){return wt(t.selItem,e)}},events:[{name:\"itemshown\",self:!0,el:function(){return this.item},handler:function(){Le(this.$el,this.getCss(.5))}},{name:\"itemin itemout\",self:!0,el:function(){return this.item},handler:function(t){var e=t.type,n=t.detail,i=n.percent,r=n.duration,o=n.timing,s=n.dir;Xe.cancel(this.$el),Le(this.$el,this.getCss(oo(e,s,i))),Xe.start(this.$el,this.getCss(ro(e)?.5:0<s?1:0),r,o).catch(Q)}},{name:\"transitioncanceled transitionend\",self:!0,el:function(){return this.item},handler:function(){Xe.cancel(this.$el)}},{name:\"itemtranslatein itemtranslateout\",self:!0,el:function(){return this.item},handler:function(t){var e=t.type,n=t.detail,i=n.percent,r=n.dir;Xe.cancel(this.$el),Le(this.$el,this.getCss(oo(e,r,i)))}}]};function ro(t){return u(t,\"in\")}function oo(t,e,n){return n/=2,ro(t)?e<0?1-n:n:e<0?n:1-n}var so,ao=U({},Cr,{fade:{show:function(){return[{opacity:0,zIndex:0},{zIndex:-1}]},percent:function(t){return 1-Le(t,\"opacity\")},translate:function(t){return[{opacity:1-t,zIndex:0},{zIndex:-1}]}},scale:{show:function(){return[{opacity:0,transform:Nr(1.5),zIndex:0},{zIndex:-1}]},percent:function(t){return 1-Le(t,\"opacity\")},translate:function(t){return[{opacity:1-t,transform:Nr(1+.5*t),zIndex:0},{zIndex:-1}]}},pull:{show:function(t){return t<0?[{transform:_r(30),zIndex:-1},{transform:_r(),zIndex:0}]:[{transform:_r(-100),zIndex:0},{transform:_r(),zIndex:-1}]},percent:function(t,e,n){return n<0?1-Ar(e):Ar(t)},translate:function(t,e){return e<0?[{transform:_r(30*t),zIndex:-1},{transform:_r(-100*(1-t)),zIndex:0}]:[{transform:_r(100*-t),zIndex:0},{transform:_r(30*(1-t)),zIndex:-1}]}},push:{show:function(t){return t<0?[{transform:_r(100),zIndex:0},{transform:_r(),zIndex:-1}]:[{transform:_r(-30),zIndex:-1},{transform:_r(),zIndex:0}]},percent:function(t,e,n){return 0<n?1-Ar(e):Ar(t)},translate:function(t,e){return e<0?[{transform:_r(100*t),zIndex:0},{transform:_r(-30*(1-t)),zIndex:-1}]:[{transform:_r(-30*t),zIndex:-1},{transform:_r(100*(1-t)),zIndex:0}]}}}),ho={mixins:[ei,Br,Xr],props:{ratio:String,minHeight:Number,maxHeight:Number},data:{ratio:\"16:9\",minHeight:!1,maxHeight:!1,selList:\".uk-slideshow-items\",attrItem:\"uk-slideshow-item\",selNav:\".uk-slideshow-nav\",Animations:ao},update:{read:function(){var t=this.ratio.split(\":\").map(Number),e=t[0],n=t[1];return n=n*this.list.offsetWidth/e||0,this.minHeight&&(n=Math.max(this.minHeight,n)),this.maxHeight&&(n=Math.min(this.maxHeight,n)),{height:n-cn(this.list,\"content-box\")}},write:function(t){var e=t.height;0<e&&Le(this.list,\"minHeight\",e)},events:[\"resize\"]}},co={mixins:[ei,xr],props:{group:String,threshold:Number,clsItem:String,clsPlaceholder:String,clsDrag:String,clsDragState:String,clsBase:String,clsNoDrag:String,clsEmpty:String,clsCustom:String,handle:String},data:{group:!1,threshold:5,clsItem:\"uk-sortable-item\",clsPlaceholder:\"uk-sortable-placeholder\",clsDrag:\"uk-sortable-drag\",clsDragState:\"uk-drag\",clsBase:\"uk-sortable\",clsNoDrag:\"uk-sortable-nodrag\",clsEmpty:\"uk-sortable-empty\",clsCustom:\"\",handle:!1},created:function(){var o=this;[\"init\",\"start\",\"move\",\"end\"].forEach(function(t){var r=o[t];o[t]=function(t){o.scrollY=window.pageYOffset;var e=te(t,\"page\"),n=e.x,i=e.y;o.pos={x:n,y:i},r(t)}})},events:{name:dt,passive:!1,handler:\"init\"},update:{write:function(){if(this.clsEmpty&&De(this.$el,this.clsEmpty,B(this.$el.children)),Le(this.handle?Ee(this.handle,this.$el):this.$el.children,{touchAction:\"none\",userSelect:\"none\"}),this.drag){var t=nn(window),e=t.right,n=t.bottom;nn(this.drag,{top:Z(this.pos.y+this.origin.top,0,n-this.drag.offsetHeight),left:Z(this.pos.x+this.origin.left,0,e-this.drag.offsetWidth)}),function s(t){var a=t.x;var h=t.y;clearTimeout(so);(e=document.elementFromPoint(a-window.pageXOffset,h-window.pageYOffset),n=fo(),function(t,e){var n=[];for(;e(t)&&n.unshift(t),t=t&&t.parentElement;);return n}(e,function(t){return t===n||lo.test(Le(t,\"overflow\"))})).some(function(t){var e=t.scrollTop,n=t.scrollHeight;fo()===t&&(t=window,n-=window.innerHeight);var i=nn(t),r=i.top,o=i.bottom;if(r<h&&h<r+30?e-=5:h<o&&o-20<h&&(e+=5),0<e&&e<n)return so=setTimeout(function(){gn(t,e),s({x:a,y:h})},10)});var e,n}(this.pos)}}},methods:{init:function(t){var e=t.target,n=t.button,i=t.defaultPrevented,r=W(this.$el.children).filter(function(t){return Wt(e,t)})[0];!r||i||0<n||Ft(e)||Wt(e,\".\"+this.clsNoDrag)||this.handle&&!Wt(e,this.handle)||(t.preventDefault(),this.touched=[this],this.placeholder=r,this.origin=U({target:e,index:ue(r)},this.pos),Vt(document,ft,this.move),Vt(document,pt,this.end),Vt(window,\"scroll\",this.scroll),this.threshold||this.start(t))},start:function(t){this.drag=pe(this.$container,this.placeholder.outerHTML.replace(/^<li/i,\"<div\").replace(/li>$/i,\"div>\")),Le(this.drag,U({boxSizing:\"border-box\",width:this.placeholder.offsetWidth,height:this.placeholder.offsetHeight,overflow:\"hidden\"},Le(this.placeholder,[\"paddingLeft\",\"paddingRight\",\"paddingTop\",\"paddingBottom\"]))),it(this.drag,\"uk-no-boot\",\"\"),Ae(this.drag,this.clsDrag,this.clsCustom),sn(this.drag.firstElementChild,sn(this.placeholder.firstElementChild));var e=nn(this.placeholder),n=e.left,i=e.top;U(this.origin,{left:n-this.pos.x,top:i-this.pos.y}),Ae(this.placeholder,this.clsPlaceholder),Ae(this.$el.children,this.clsItem),Ae(document.documentElement,this.clsDragState),qt(this.$el,\"start\",[this,this.placeholder]),this.move(t)},move:function(t){if(this.drag){this.$emit();var e=\"mousemove\"===t.type?t.target:document.elementFromPoint(this.pos.x-window.pageXOffset,this.pos.y-window.pageYOffset),n=this.getSortable(e),i=this.getSortable(this.placeholder),r=n!==i;if(n&&!Wt(e,this.placeholder)&&(!r||n.group&&n.group===i.group)){if(e=n.$el===e.parentNode&&e||W(n.$el.children).filter(function(t){return Wt(e,t)})[0],r)i.remove(this.placeholder);else if(!e)return;n.insert(this.placeholder,e),b(this.touched,n)||this.touched.push(n)}}else(Math.abs(this.pos.x-this.origin.x)>this.threshold||Math.abs(this.pos.y-this.origin.y)>this.threshold)&&this.start(t)},end:function(t){if(Rt(document,ft,this.move),Rt(document,pt,this.end),Rt(window,\"scroll\",this.scroll),this.drag){clearTimeout(so);var e=this.getSortable(this.placeholder);this===e?this.origin.index!==ue(this.placeholder)&&qt(this.$el,\"moved\",[this,this.placeholder]):(qt(e.$el,\"added\",[e,this.placeholder]),qt(this.$el,\"removed\",[this,this.placeholder])),qt(this.$el,\"stop\",[this,this.placeholder]),we(this.drag),this.drag=null;var n=this.touched.map(function(t){return t.clsPlaceholder+\" \"+t.clsItem}).join(\" \");this.touched.forEach(function(t){return _e(t.$el.children,n)}),_e(document.documentElement,this.clsDragState)}else\"touchend\"===t.type&&t.target.click()},scroll:function(){var t=window.pageYOffset;t!==this.scrollY&&(this.pos.y+=t-this.scrollY,this.scrollY=t,this.$emit())},insert:function(t,e){var n=this;Ae(this.$el.children,this.clsItem);function i(){e?!Wt(t,n.$el)||function(t,e){return t.parentNode===e.parentNode&&ue(t)>ue(e)}(t,e)?me(e,t):ge(e,t):pe(n.$el,t)}this.animation?this.animate(i):i()},remove:function(t){Wt(t,this.$el)&&(Le(this.handle?Ee(this.handle,t):t,{touchAction:\"\",userSelect:\"\"}),this.animation?this.animate(function(){return we(t)}):we(t))},getSortable:function(t){return t&&(this.$getComponent(t,\"sortable\")||this.getSortable(t.parentNode))}}};var uo,lo=/auto|scroll/;function fo(){return document.scrollingElement||document.documentElement}var po,mo,go,vo=[],wo={mixins:[Zi,ni,ci],args:\"title\",props:{delay:Number,title:String},data:{pos:\"top\",title:\"\",delay:0,animation:[\"uk-animation-scale-up\"],duration:100,cls:\"uk-active\",clsPos:\"uk-tooltip\"},beforeConnect:function(){this._hasTitle=rt(this.$el,\"title\"),it(this.$el,{title:\"\",\"aria-expanded\":!1})},disconnected:function(){this.hide(),it(this.$el,{title:this._hasTitle?this.title:null,\"aria-expanded\":null})},methods:{show:function(){var e=this;!this.isActive()&&this.title&&(vo.forEach(function(t){return t.hide()}),vo.push(this),this._unbind=Vt(document,pt,function(t){return!Wt(t.target,e.$el)&&e.hide()}),clearTimeout(this.showTimer),this.showTimer=setTimeout(function(){e._show(),e.hideTimer=setInterval(function(){Ht(e.$el)||e.hide()},150)},this.delay))},hide:function(){this.isActive()&&!_t(this.$el,\"input:focus\")&&(vo.splice(vo.indexOf(this),1),clearTimeout(this.showTimer),clearInterval(this.hideTimer),it(this.$el,\"aria-expanded\",!1),this.toggleElement(this.tooltip,!1),this.tooltip&&we(this.tooltip),this.tooltip=!1,this._unbind())},_show:function(){this.tooltip=pe(this.container,'<div class=\"'+this.clsPos+'\" aria-expanded=\"true\" aria-hidden> <div class=\"'+this.clsPos+'-inner\">'+this.title+\"</div> </div>\"),this.positionAt(this.tooltip,this.$el),this.origin=\"y\"===this.getAxis()?fn(this.dir)+\"-\"+this.align:this.align+\"-\"+fn(this.dir),this.toggleElement(this.tooltip,!0)},isActive:function(){return b(vo,this)}},events:(uo={focus:\"show\",blur:\"hide\"},uo[mt+\" \"+gt]=function(t){Qt(t)||(t.type===mt?this.show():this.hide())},uo[dt]=function(t){Qt(t)&&(this.isActive()?this.hide():this.show())},uo)},bo={props:{allow:String,clsDragover:String,concurrent:Number,maxSize:Number,method:String,mime:String,msgInvalidMime:String,msgInvalidName:String,msgInvalidSize:String,multiple:Boolean,name:String,params:Object,type:String,url:String},data:{allow:!1,clsDragover:\"uk-dragover\",concurrent:1,maxSize:0,method:\"POST\",mime:!1,msgInvalidMime:\"Invalid File Type: %s\",msgInvalidName:\"Invalid File Name: %s\",msgInvalidSize:\"Invalid File Size: %s Kilobytes Max\",multiple:!1,name:\"files[]\",params:{},type:\"\",url:\"\",abort:Q,beforeAll:Q,beforeSend:Q,complete:Q,completeAll:Q,error:Q,fail:Q,load:Q,loadEnd:Q,loadStart:Q,progress:Q},events:{change:function(t){_t(t.target,'input[type=\"file\"]')&&(t.preventDefault(),t.target.files&&this.upload(t.target.files),t.target.value=\"\")},drop:function(t){xo(t);var e=t.dataTransfer;e&&e.files&&(_e(this.$el,this.clsDragover),this.upload(e.files))},dragenter:function(t){xo(t)},dragover:function(t){xo(t),Ae(this.$el,this.clsDragover)},dragleave:function(t){xo(t),_e(this.$el,this.clsDragover)}},methods:{upload:function(t){var i=this;if(t.length){qt(this.$el,\"upload\",[t]);for(var e=0;e<t.length;e++){if(this.maxSize&&1e3*this.maxSize<t[e].size)return void this.fail(this.msgInvalidSize.replace(\"%s\",this.maxSize));if(this.allow&&!yo(this.allow,t[e].name))return void this.fail(this.msgInvalidName.replace(\"%s\",this.allow));if(this.mime&&!yo(this.mime,t[e].type))return void this.fail(this.msgInvalidMime.replace(\"%s\",this.mime))}this.multiple||(t=[t[0]]),this.beforeAll(this,t);var r=function(t,e){for(var n=[],i=0;i<t.length;i+=e){for(var r=[],o=0;o<e;o++)r.push(t[i+o]);n.push(r)}return n}(t,this.concurrent),o=function(t){var e=new FormData;for(var n in t.forEach(function(t){return e.append(i.name,t)}),i.params)e.append(n,i.params[n]);ae(i.url,{data:e,method:i.method,responseType:i.type,beforeSend:function(t){var e=t.xhr;e.upload&&Vt(e.upload,\"progress\",i.progress),[\"loadStart\",\"load\",\"loadEnd\",\"abort\"].forEach(function(t){return Vt(e,t.toLowerCase(),i[t])}),i.beforeSend(t)}}).then(function(t){i.complete(t),r.length?o(r.shift()):i.completeAll(t)},function(t){return i.error(t)})};o(r.shift())}}}};function yo(t,e){return e.match(new RegExp(\"^\"+t.replace(/\\//g,\"\\\\/\").replace(/\\*\\*/g,\"(\\\\/[^\\\\/]+)*\").replace(/\\*/g,\"[^\\\\/]+\").replace(/((?!\\\\))\\?/g,\"$1.\")+\"$\",\"i\"))}function xo(t){t.preventDefault(),t.stopPropagation()}function ko(){Io(document.body,mo),kn.flush(),new MutationObserver(function(t){return t.forEach($o)}).observe(document,{childList:!0,subtree:!0,characterData:!0,attributes:!0}),po._initialized=!0}function $o(t){var e=t.target;(\"attributes\"!==t.type?function(t){for(var e=t.addedNodes,n=t.removedNodes,i=0;i<e.length;i++)Io(e[i],mo);for(var r=0;r<n.length;r++)Io(n[r],go);return!0}(t):function(t){var e=t.target,n=t.attributeName;if(\"href\"===n)return!0;var i=Hn(n);if(!(i&&i in po))return;if(rt(e,n))return po[i](e),!0;var r=po.getComponent(e,i);if(r)return r.$destroy(),!0}(t))&&po.update(e)}function Io(t,e){if(1===t.nodeType&&!rt(t,\"uk-no-boot\"))for(e(t),t=t.firstElementChild;t;){var n=t.nextElementSibling;Io(t,e),t=n}}return Ln.component(\"countdown\",wr),Ln.component(\"filter\",Sr),Ln.component(\"lightbox\",Fr),Ln.component(\"lightboxPanel\",Pr),Ln.component(\"notification\",Vr),Ln.component(\"parallax\",Ur),Ln.component(\"slider\",no),Ln.component(\"sliderParallax\",io),Ln.component(\"slideshow\",ho),Ln.component(\"slideshowParallax\",io),Ln.component(\"sortable\",co),Ln.component(\"tooltip\",wo),Ln.component(\"upload\",bo),mo=(po=Ln).connect,go=po.disconnect,\"MutationObserver\"in window&&(document.body?kn.read(ko):new MutationObserver(function(){document.body&&(this.disconnect(),ko())}).observe(document,{childList:!0,subtree:!0})),Ln});","import App from \"./App.svelte\";\nimport \"./global.css\";\nimport \"./fonts.css\";\nimport \"/assets/roboto-v20-latin-ext_latin-300\";\nimport \"/assets/roboto-v20-latin-ext_latin-400\";\nimport \"/assets/roboto-v20-latin-ext_latin-500\";\nimport \"/assets/roboto-v20-latin-ext_latin-700\";\nimport \"/assets/roboto-v20-latin-ext_latin-900\";\nimport \"/assets/budibase-logo.png\";\nimport \"/assets/budibase-logo-only.png\";\nimport \"uikit/dist/css/uikit.min.css\";\nimport \"uikit/dist/js/uikit.min.js\";\n\nconst app = new App({\n\ttarget: document.getElementById(\"app\")\n});\n\n\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","component_subscribe","component","store","callback","$$","on_destroy","push","unsub","subscribe","unsubscribe","create_slot","definition","ctx","slot_ctx","get_slot_context","$$scope","get_slot_changes","changed","is_client","window","now","performance","Date","raf","cb","requestAnimationFrame","tasks","Set","stylesheet","running","run_tasks","task","delete","size","loop","promise","Promise","fulfil","add","[object Object]","append","target","node","appendChild","insert","anchor","insertBefore","detach","parentNode","removeChild","destroy_each","iterations","detaching","i","length","d","element","name","document","createElement","text","data","createTextNode","space","empty","listen","event","handler","options","addEventListener","removeEventListener","stop_propagation","stopPropagation","call","this","attr","attribute","value","removeAttribute","setAttribute","set_data","set_input_value","input","set_style","key","important","style","setProperty","select_option","select","option","__value","selected","select_options","indexOf","toggle_class","toggle","classList","HtmlTag","html","e","u","n","t","innerHTML","Array","from","childNodes","m","current_component","active","current_rules","create_rule","duration","delay","ease","uid","step","keyframes","p","rule","str","hash","charCodeAt","head","sheet","insertRule","cssRules","animation","delete_rule","split","filter","anim","join","deleteRule","set_current_component","get_current_component","Error","bubble","callbacks","type","slice","dirty_components","binding_callbacks","render_callbacks","flush_callbacks","resolved_promise","resolve","update_scheduled","add_render_callback","add_flush_callback","flush","seen_callbacks","shift","update","pop","has","fragment","dirty","before_update","after_update","wait","then","dispatch","direction","kind","dispatchEvent","detail","createEvent","initCustomEvent","custom_event","outroing","outros","group_outros","r","c","check_outros","transition_in","block","local","transition_out","o","null_transition","create_in_transition","params","animation_name","config","cleanup","go","easing","tick","css","start_time","end_time","abort","started","create_out_transition","group","reset","bind","props","bound","mount_component","on_mount","new_on_destroy","map","destroy_component","make_dirty","init","instance","create_fragment","not_equal","prop_names","parent_component","context","Map","ready","ret","hydrate","l","intro","SvelteElement","HTMLElement","super","attachShadow","mode","slotted","_oldValue","newValue","$destroy","index","splice","SvelteComponent","color","className","borderClass","grouped","groupPosition","apply","v","f","s","h","_","g","y","F","T","j","A","S","O","I","R","z","Un","W","B","L","U","D","Rn","test","On","lastIndex","Qn","M","match","$","NaN","N","P","Z","q","V","K","G","RegExp","source","H","J","Y","Q","X","nn","tn","rn","en","un","on","cn","an","ln","sn","hn","pn","_n","vn","gn","dn","yn","bn","xn","jn","wn","mn","An","kn","Sn","In","zn","Wn","Bn","Ln","\\","'","\n","\r","
","
","Cn","parseFloat","Dn","parseInt","Mn","global","Tn","self","$n","Function","Fn","exports","nodeType","Nn","module","Pn","Zn","process","qn","types","binding","Vn","isArrayBuffer","Kn","isDate","Gn","isMap","Hn","isRegExp","Jn","isSet","Yn","isTypedArray","Xn","À","Á","Â","Ã","Ä","Å","à","á","â","ã","ä","å","Ç","ç","Ð","ð","È","É","Ê","Ë","è","é","ê","ë","Ì","Í","Î","Ï","ì","í","î","ï","Ñ","ñ","Ò","Ó","Ô","Õ","Ö","Ø","ò","ó","ô","õ","ö","ø","Ù","Ú","Û","Ü","ù","ú","û","ü","Ý","ý","ÿ","Æ","æ","Þ","þ","ß","Ā","Ă","Ą","ā","ă","ą","Ć","Ĉ","Ċ","Č","ć","ĉ","ċ","č","Ď","Đ","ď","đ","Ē","Ĕ","Ė","Ę","Ě","ē","ĕ","ė","ę","ě","Ĝ","Ğ","Ġ","Ģ","ĝ","ğ","ġ","ģ","Ĥ","Ħ","ĥ","ħ","Ĩ","Ī","Ĭ","Į","İ","ĩ","ī","ĭ","į","ı","Ĵ","ĵ","Ķ","ķ","ĸ","Ĺ","Ļ","Ľ","Ŀ","Ł","ĺ","ļ","ľ","ŀ","ł","Ń","Ņ","Ň","Ŋ","ń","ņ","ň","ŋ","Ō","Ŏ","Ő","ō","ŏ","ő","Ŕ","Ŗ","Ř","ŕ","ŗ","ř","Ś","Ŝ","Ş","Š","ś","ŝ","ş","š","Ţ","Ť","Ŧ","ţ","ť","ŧ","Ũ","Ū","Ŭ","Ů","Ű","Ų","ũ","ū","ŭ","ů","ű","ų","Ŵ","ŵ","Ŷ","ŷ","Ÿ","Ź","Ż","Ž","ź","ż","ž","IJ","ij","Œ","œ","ʼn","ſ","nt","&","<",">","\"","tt","&","<",">",""","'","rt","yu","ff","oi","Fe","En","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","clear","set","__data__","of","af","_f","ni","Se","ir","it","lu","st","ot","ft","ct","uo","at","Cr","Wu","Ai","configurable","enumerable","writable","ht","Ku","Ru","pt","_t","du","constructor","me","Ur","vo","Ir","Ae","_o","Mr","Bu","lt","po","Dr","Rr","buffer","byteOffset","byteLength","zr","exec","to","Qu","Ee","get","pf","sf","ve","_e","gt","dt","ti","bo","yt","bt","xt","wu","jt","wt","ke","mt","oo","At","fo","Et","_u","kt","Sr","Me","St","Ot","mi","ai","It","Rt","zt","Wt","Ci","Lt","hr","Ve","Ut","Mt","se","vi","message","he","$t","Ft","ci","hi","Te","qt","$u","Jt","Ht","Zu","Vt","ze","Li","Kt","Gt","su","xe","We","Ie","zu","Yt","Le","hu","xu","Ou","Qt","Xt","ye","sort","w","Wr","tr","lr","er","xi","ur","xr","Ii","Ti","or","fr","xo","Be","pr","_r","vr","gr","dr","yr","ro","br","so","jr","wr","func","thisArg","args","mr","Ar","Er","kr","jo","Iu","Or","gi","copy","Br","Ui","Lr","Tr","$r","Oe","Fr","Nr","Zr","charAt","qr","Mu","Du","replace","Vr","arguments","eo","prototype","Kr","de","ue","Jr","placeholder","Gr","Hr","pe","thru","reverse","ge","ho","Re","plant","Yr","Bt","Qr","Xr","ne","Oi","te","re","Au","ee","Su","yo","Ue","ie","Yu","Eu","Wi","oe","C","E","fe","co","Pr","ce","ei","ae","le","Ze","Gi","iteratee","Fu","be","je","we","gu","di","ji","$e","Ce","Di","De","ii","clone","Ne","Pe","qe","Ke","Ge","$i","He","Je","Ye","Qe","nu","tu","io","ru","eu","uu","fu","Go","lo","leading","maxWait","trailing","cancel","cu","cache","Cache","au","pu","vu","bu","li","ju","mu","wi","next","done","Uu","ku","valueOf","Lu","Cu","$f","toLowerCase","Tu","Nu","chain","Pu","rr","qu","Vu","defaults","pick","Gu","Hu","Ju","Math","Xu","String","TypeError","ri","ui","toString","hasOwnProperty","fi","keys","IE_PROTO","si","pi","Buffer","_i","Symbol","Uint8Array","getPrototypeOf","yi","bi","propertyIsEnumerable","isConcatSpreadable","iterator","toStringTag","Ei","clearTimeout","ki","Si","setTimeout","ceil","floor","Ri","getOwnPropertySymbols","zi","isBuffer","isFinite","Bi","max","min","Mi","random","Fi","Ni","Pi","Zi","qi","Vi","Ki","Hi","Ji","Yi","Qi","Xi","no","templateSettings","escape","evaluate","interpolate","variable","imports","string","ao","ArrayBuffer","wo","mo","Ao","Eo","ko","So","Oo","Io","Ro","zo","Wo","Bo","Lo","Uo","Co","Do","Mo","To","$o","Fo","No","Po","Zo","qo","Vo","Ko","Ho","Jo","Yo","Qo","Xo","nf","tf","rf","ef","uf","isArray","cf","lf","hf","vf","gf","df","yf","bf","xf","jf","wf","mf","Of","Af","Ef","kf","Sf","If","Rf","nr","zf","Wf","Bf","Lf","Uf","Cf","Df","Mf","Tf","toUpperCase","Ff","Nf","Pf","Zf","qf","Vf","Kf","Gf","Hf","Jf","Yf","Qf","Xf","nc","tc","rc","ec","uc","after","ary","assignIn","assignInWith","assignWith","before","bindAll","bindKey","castArray","chunk","compact","concat","cond","conforms","vt","constant","countBy","curry","iu","curryRight","ou","debounce","defaultsDeep","defer","difference","differenceBy","differenceWith","drop","dropRight","dropRightWhile","dropWhile","fill","flatMap","flatMapDeep","flatMapDepth","flatten","flattenDeep","flattenDepth","flip","flow","flowRight","fromPairs","functions","functionsIn","groupBy","initial","intersection","intersectionBy","intersectionWith","invert","invertBy","invokeMap","keyBy","keysIn","mapKeys","mapValues","matches","matchesProperty","memoize","merge","mergeWith","method","methodOf","mixin","negate","nthArg","omit","omitBy","once","orderBy","over","overArgs","overEvery","overSome","partial","partialRight","partition","pickBy","property","propertyOf","pull","pullAll","pullAllBy","pullAllWith","pullAt","range","rangeRight","rearg","reject","remove","rest","sampleSize","setWith","shuffle","sortBy","sortedUniq","sortedUniqBy","spread","tail","take","takeRight","takeRightWhile","takeWhile","tap","throttle","toArray","toPairs","toPairsIn","toPath","toPlainObject","transform","unary","union","unionBy","unionWith","uniq","uniqBy","uniqWith","unset","unzip","unzipWith","updateWith","values","valuesIn","without","words","wrap","xor","xorBy","xorWith","zip","zipObject","zipObjectDeep","zipWith","entries","entriesIn","extend","extendWith","attempt","camelCase","capitalize","clamp","cloneDeep","cloneDeepWith","cloneWith","conformsTo","deburr","defaultTo","divide","endsWith","eq","escapeRegExp","every","find","findIndex","findKey","findLast","findLastIndex","findLastKey","forEachRight","forIn","forInRight","forOwn","forOwnRight","gte","hasIn","includes","inRange","invoke","isArguments","isArrayLike","isArrayLikeObject","isBoolean","isElement","isEmpty","isEqual","isEqualWith","isError","isFunction","isInteger","isLength","isMatch","isMatchWith","isNaN","isNative","isNil","isNull","isNumber","isObject","isObjectLike","isPlainObject","isSafeInteger","isString","isSymbol","isUndefined","isWeakMap","isWeakSet","kebabCase","last","lastIndexOf","lowerCase","lowerFirst","lte","maxBy","mean","meanBy","minBy","stubArray","stubFalse","stubObject","stubString","stubTrue","multiply","nth","noConflict","pad","padEnd","padStart","reduce","reduceRight","repeat","result","round","runInContext","sample","snakeCase","some","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","startCase","startsWith","subtract","sum","sumBy","template","sourceURL","times","toFinite","toInteger","toLength","toLower","toNumber","toSafeInteger","toUpper","trim","trimEnd","trimStart","truncate","separator","omission","search","unescape","uniqueId","upperCase","upperFirst","each","eachRight","first","VERSION","start","end","commit","toJSON","extendAll","extendAllWith","__","all","allPass","always","any","anyPass","assoc","assocPath","complement","compose","contains","dissoc","dissocPath","dropLast","dropLastWhile","equals","identical","indexBy","invertObj","juxt","omitAll","nAry","path","pathEq","pathOr","paths","pickAll","pipe","pluck","prop","propEq","propOr","symmetricDifference","symmetricDifferenceBy","symmetricDifferenceWith","takeLast","takeLastWhile","unapply","unnest","useWith","where","whereEq","zipObj","1","2","3","4","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","assignInAllWith","assignAllWith","getOr","mergeAllWith","padChars","padCharsEnd","padCharsStart","rangeStep","rangeStepRight","assignAll","assignInAll","defaultsAll","defaultsDeepAll","invokeArgs","invokeArgsMap","mergeAll","zipAll","array","object","aliasToReal","curryN","curryRightN","includesFrom","indexOfFrom","lastIndexOfFrom","restFrom","spreadFrom","trimChars","trimCharsEnd","trimCharsStart","baseAry","cloneArray","wrapImmutable","cloner","undefined","baseConvert","util","isLib","isObj","cap","fixed","immutable","defaultHolder","fallbackHolder","forceCurry","forceFixed","forceRearg","pristine","helpers","aryMethodKeys","mapping","aryMethod","wrappers","arity","pairs","pair","indexes","castCap","iterateeRearg","overArg","baseArity","iterateeAry","castFixed","skipFixed","methodSpread","otherArgs","flatSpread","castRearg","skipRearg","methodRearg","aryRearg","cloneByPath","nested","createConverter","realName","methodName","remap","oldOptions","newUtil","newFunc","newOptions","wrapped","wrapper","mutate","createCloner","aryKey","otherName","afterRearg","convert","realToAlias","alias","require$$0","require$$1","seed","alphabet","previousSeed","shuffled","nextValue","_seed_","ORIGINAL","setCharacters","_alphabet_","unique","item","ind","arr","getShuffled","characterIndex","sourceArray","targetArray","randomFromSeed","characters","lookup","crypto","msCrypto","getRandomValues","bytes","mask","log","LN2","id","byte","counter","previousSeconds","number","loopCounter","format","pow","REDUCE_TIME","version","clusterWorkerId","seconds","generate","build","seedValue","workerId","newCharacters","isValid","LARGE_ARRAY_SIZE","CORE_ERROR_TEXT","FUNC_ERROR_TEXT","HASH_UNDEFINED","MAX_MEMOIZE_SIZE","PLACEHOLDER","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","WRAP_BIND_FLAG","WRAP_BIND_KEY_FLAG","WRAP_CURRY_BOUND_FLAG","WRAP_CURRY_FLAG","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","WRAP_FLIP_FLAG","DEFAULT_TRUNC_LENGTH","DEFAULT_TRUNC_OMISSION","HOT_COUNT","HOT_SPAN","LAZY_FILTER_FLAG","LAZY_MAP_FLAG","INFINITY","MAX_SAFE_INTEGER","MAX_INTEGER","NAN","MAX_ARRAY_LENGTH","MAX_ARRAY_INDEX","HALF_MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","asyncTag","boolTag","dateTag","domExcTag","errorTag","funcTag","genTag","mapTag","numberTag","nullTag","objectTag","proxyTag","regexpTag","setTag","stringTag","symbolTag","undefinedTag","weakMapTag","weakSetTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrim","reTrimStart","reTrimEnd","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsComboRange","rsComboMarksRange","rsBreakRange","rsMathOpRange","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","reOptMod","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","freeParseInt","freeGlobal","freeSelf","root","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","require","nodeIsArrayBuffer","nodeIsDate","nodeIsMap","nodeIsRegExp","nodeIsSet","nodeIsTypedArray","arrayAggregator","setter","accumulator","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","arrayPush","offset","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","collection","eachFunc","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","current","baseTimes","baseUnary","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","mapToArray","arg","replaceHolders","setToArray","setToPairs","stringSize","unicodeSize","stringToArray","unicodeToArray","asciiToArray","unescapeHtmlChar","arrayProto","funcProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","nativeObjectToString","objectCtorString","oldDash","reIsNative","allocUnsafe","getPrototype","objectCreate","spreadableSymbol","symIterator","symToStringTag","defineProperty","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","DataView","WeakMap","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","lodash","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","proto","baseLodash","chainAll","Hash","entry","ListCache","MapCache","SetCache","Stack","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","baseAssignValue","assignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","skip","lower","upper","baseClone","bitmask","customizer","stack","isDeep","isFlat","isFull","initCloneArray","tag","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","baseAssignIn","getSymbols","copySymbols","symbol","regexp","Ctor","cloneArrayBuffer","dataView","cloneDataView","cloneTypedArray","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","baseDifference","isCommon","valuesLength","outer","computed","valuesIndex","getMapData","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","baseFilter","baseFlatten","depth","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGet","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseGt","other","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","maxLength","Infinity","seen","baseInvoke","parent","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","baseIsNative","baseIteratee","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","getMatchData","matchesStrictComparable","isKey","isStrictComparable","baseMerge","srcIndex","mergeFunc","safeGet","isTyped","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","comparer","baseSortBy","criteria","objCriteria","othCriteria","ordersLength","compareAscending","order","compareMultiple","basePickBy","baseSet","basePullAll","basePullAt","previous","baseUnset","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","baseSetData","baseSetToString","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","actions","action","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","iterable","createCaseFirst","createCompounder","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","getFuncName","funcName","getData","isLaziable","createHybrid","partialsRight","holdersRight","argPos","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","countHolders","newHolders","createRecurry","arrLength","oldArray","reorder","createInverter","toIteratee","baseInverter","createMathOperation","operator","defaultValue","createOver","arrayFunc","createPadding","chars","charsLength","createRange","baseRange","createRelationalOperation","wrapFunc","isCurry","newData","setData","setWrapToString","createRound","precision","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrValue","otherFunc","getValue","hasPath","hasFunc","ctorString","isMaskable","shortOut","reference","details","insertWrapDetails","updateWrapDetails","getWrapDetails","count","lastCalled","stamp","remaining","rand","memoizeCapped","quote","subString","mapped","interceptor","wrapperAt","lastArgs","lastThis","timerId","lastCallTime","lastInvokeTime","maxing","invokeFunc","time","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","resolver","memoized","transforms","funcsLength","iteratorToArray","remainder","isBinary","propsIndex","propsLength","basePick","word","pattern","hasUnicodeWord","unicodeWords","asciiWords","methodNames","basePropertyDeep","augend","addend","dividend","divisor","multiplier","multiplicand","minuend","subtrahend","baseConforms","properties","baseFill","limit","isArrLike","position","baseInRange","strictLastIndexOf","strLength","radix","floating","temp","settings","isEscaping","isEvaluating","importsKeys","importsValues","reDelimiters","escapeValue","interpolateValue","esTemplateValue","evaluateValue","substring","newEnd","prefix","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","dir","isRight","view","getView","iterLength","takeCount","iterIndex","commonPlus","extra","common","_events","recordApi","save","getContext","getNew","load","validate","uploadFile","downloadFile","indexApi","buildIndex","listItems","aggregates","collectionApi","getAllowedRecordTypes","initialise","authApi","authenticate","authenticateTemporaryAccess","createTemporaryAccess","createUser","enableUser","disableUser","loadAccessLevels","getNewAccessLevel","getNewUser","getNewUserAuth","getUsers","saveAccessLevels","isAuthorized","changeMyPassword","setPasswordFromTemporaryCode","scorePassword","isValidPassword","validateUser","validateAccessLevels","setUserAccessLevels","templateApi","saveApplicationHierarchy","saveActionsAndTriggers","actionsApi","execute","_eventsList","makeEvent","area","areaKey","methodKey","obj","events","eventsList","BadRequestError","httpStatusCode","UnauthorisedError","NotFoundError","apiWrapper","async","app","eventNamespace","eventContext","pushCallStack","handleNotAuthorized","startDate","elapsed","publish","onBegin","publishComplete","error","publishError","apiWrapperSync","err","seedCallId","callId","calls","threadCallId","createCallStack","namespace","popCallStack","onError","endcontext","onComplete","getLock","lockFile","timeoutMilliseconds","maxLockRetries","retryCount","lock","timeout","getEpochTime","totalTimeout","datastore","createFile","getLockFileContent","NO_LOCK","parseLockFileContent","loadFile","deleteFile","sleepForRetry","epochTime","content","parts","Number","releaseLock","isNolock","trimKeySep","joinKey","strs","paramsOrArray","safeKey","splitKey","getDirFomKey","getFileFromKey","fieldDefinitions","templateDefinitions","appDefinitionFile","dirIndex","folderPath","getIndexKeyFromFileKey","ifExists","val","exists","notExists","not","isDefined","isNonNull","isNotNaN","allTrue","funcArgs","conditionFunc","anyTrue","insensitiveEquals","str1","str2","isSomething","isNothing","isNothingOrEmpty","somethingOrGetDefault","getDefaultFunc","mapIfSomethingOrDefault","mapFunc","defaultVal","none","isNotEmpty","ob","isNonEmptyArray","isNonEmptyString","tryOr","failFunc","tryAwaitOr","defineError","errorPrefix","tryOrIgnore","tryAwaitOrIgnore","causesException","executesWithoutException","handleErrorWith","returnValInError","handleErrorWithUndefined","switchCase","cases","nextCase","nextResult","isOneOf","vals","defaultCase","getHashCode","char","toDateOrNull","toBoolOrNull","toNumberOrNull","isArrayOfString","opts","pause","res","retry","retries","getOrDefault","mapIfSomethingOrBlank","configFolder","StartsWith","searchFor","searchIn","keySep","somethingOrDefault","isValue","val1","val2","memberMatches","member","awEx","toDate","toBool","makerule","field","validationError","applyRuleSet","ruleSet","itemToValidate","applyRule","itemTovalidate","filters","limiters","compileRawExpression","compileRawCode","filterRegex","limiterRegex","argsRegex","expressionCache","codeCache","compileExpression","expression","tokens","filterTokens","filterName","effect","argExpressions","parseExpression","tempVars","list","evaluateArgExpression","compileCode","code","limiterTokens","limiterName","parseCode","state","limiter","argExpression","globalObj","hasHandler","allHandlers","globals","$nxCompileToSandbox","Proxy","$nxClearSandbox","indexTypes","ancestor","indexRuleSet","compileMap","compileFilter","isRecord","indexType","getFlattenedHierarchy","appHierarchy","useCached","flattenHierarchy","currentNode","flattened","children","aggregateGroups","unionIfAny","l2","l1","child","getExactNodeForPath","pathRegx","hasMatchingAncestor","ancestorPredicate","decendantNode","getNode","nodeKey","isCollectionRecord","collectionNodeKey","getNodeByKeyOrNodeKey","keyOrNodeKey","nodeByKey","isNode","isKeyAncestorOf","ancestorKey","isAncestor","decendant","isDecendant","getRecordNodeIdFromId","recordId","recordNodeIdIsAllowed","indexNode","nodeId","allowedRecordNodeIds","recordNodeIsAllowed","recordNode","getAllowedRecordNodesForIndex","recordNodes","isGlobalIndex","isAncestorIndex","isReferenceIndex","fieldReversesReferenceToIndex","fields","isSingle","isaggregateGroup","isRoot","isDecendantOfARecord","typeOptions","reverseIndexNodeKeys","getLastPartInKey","getNodesInPath","getActualKeyOfParent","parentNodeKey","actualChildKey","ks","getParentKey","hasNoMatchingAncestors","parentPredicate","findField","fieldName","getRecordNodeId","recordKey","getRecordNodeById","hierarchy","getNodeFromNodeKeyHash","isShardedIndex","getShardName","fieldReversesReferenceToNode","getSafeFieldParser","tryParse","defaultValueFunctions","record","getSafeValueParser","getUndefinedValue","parsed","success","default","getNewValue","getInitialValue","typeFunctions","specificFunctions","null","validateTypeConstraints","validationRules","fieldValue","validateRule","getMessage","errors","getDefaultOptions","parsedFailed","parsedSuccess","getDefaultExport","sampleValue","stringify","safeParseField","safeParseValue","optionDefinitions","getDefaultValue","stringFunctions","stringTryParse","requirementDescription","parse","allowDeclaredValuesOnly","typeConstraints","boolFunctions","boolTryParse","allowNulls","JSON","numberFunctions","numberTryParse","num","maxValue","minValue","decimalPlaces","splitDecimal","getDecimalPlaces","dateFunctions","isValidDate","dateTryParse","date","mapToParsedArrary","minLength","typeName","arrayTryParse","arrayFunctions","referenceNothing","referenceFunctions","isObjectWithKey","hasStringValue","tryParseFromString","asObj","indexNodeKey","displayValue","isEmptyString","referenceExists","fileNothing","relativePath","fileFunctions","fileName","filePath","isValidFile","isLegalFilename","basicTypes","datetime","bool","file","kvType","concreteArray","allTypes","getType","getSampleFieldValue","detectType","USERS_LIST_FILE","userAuthFile","username","USERS_LOCK_FILE","ACCESS_LEVELS_FILE","ACCESS_LEVELS_LOCK_FILE","permissionTypes","CREATE_RECORD","UPDATE_RECORD","READ_RECORD","DELETE_RECORD","READ_INDEX","MANAGE_INDEX","MANAGE_COLLECTION","WRITE_TEMPLATES","CREATE_USER","SET_PASSWORD","CREATE_TEMPORARY_ACCESS","ENABLE_DISABLE_USER","WRITE_ACCESS_LEVELS","LIST_USERS","LIST_ACCESS_LEVELS","EXECUTE_ACTION","SET_USER_ACCESS_LEVELS","getUserByName","users","stripUserOfSensitiveStuff","user","stripped","tempCode","parseTemporaryCode","fullCode","permissionType","resourceKey","alwaysAuthorized","_isAuthorized","permissions","userperm","nodePermission","accessLevel","staticPermission","createRecord","updateRecord","deleteRecord","readRecord","writeTemplates","setPassword","readIndex","manageIndex","manageCollection","enableDisableUser","writeAccessLevels","listUsers","listAccessLevels","executeAction","permission","step2list","step3list","re_mgr0","re_mgr1","re_meq1","re_s_v","re_1a","re2_1a","re_1b","re2_1b","re_1b_2","re2_1b_2","re3_1b_2","re4_1b_2","re_1c","re_2","re_3","re_4","re2_4","re_5","re_5_1","re3_5","porterStemmer","lunr","builder","Builder","pipeline","trimmer","stopWordFilter","stemmer","searchPipeline","utils","warn","console","asString","FieldRef","docRef","stringValue","_stringValue","joiner","fromString","fieldRef","elements","complete","intersect","idf","posting","documentCount","documentsWithTerm","abs","Token","metadata","tokenizer","len","sliceEnd","sliceStart","sliceLength","tokenMetadata","Pipeline","_stack","registeredFunctions","registerFunction","label","warnIfFunctionNotRegistered","serialised","fnName","existingFn","newFn","pos","stackLength","memo","runString","token","Vector","_magnitude","positionForIndex","pivotPoint","pivotIndex","insertIdx","upsert","magnitude","sumOfSquares","elementsLength","sqrt","dot","otherVector","dotProduct","aLen","bLen","aVal","bVal","similarity","output","ational","tional","enci","anci","izer","bli","alli","entli","eli","ousli","ization","ation","ator","alism","iveness","fulness","ousness","aliti","iviti","biliti","logi","icate","ative","alize","iciti","ical","ful","ness","stem","suffix","firstch","re2","re3","re4","substr","fp","generateStopWordFilter","stopWords","stopWord","TokenSet","final","edges","_nextId","fromArray","finish","fromClause","clause","fromFuzzyString","term","editDistance","editsRemaining","frame","noEditNode","insertionNode","substitutionNode","transposeNode","charA","charB","edge","_str","labels","qNode","qEdges","qLen","nEdges","nLen","qEdge","nEdge","previousWord","uncheckedNodes","minimizedNodes","commonPrefix","minimize","nextNode","downTo","childKey","Index","attrs","invertedIndex","fieldVectors","tokenSet","queryString","query","QueryParser","Query","matchingFields","queryVectors","termFieldCache","requiredMatches","prohibitedMatches","clauses","terms","clauseMatches","usePipeline","termTokenSet","expandedTerms","presence","REQUIRED","expandedTerm","termIndex","_index","fieldPosting","matchingDocumentRefs","termField","matchingDocumentsSet","PROHIBITED","boost","fieldMatch","matchingDocumentRef","matchingFieldRef","MatchData","allRequiredMatches","allProhibitedMatches","matchingFieldRefs","results","isNegated","docMatch","fieldVector","score","combine","ref","serializedIndex","serializedVectors","serializedInvertedIndex","tokenSetBuilder","tuple","_ref","_fields","_documents","fieldTermFrequencies","fieldLengths","_b","_k1","metadataWhitelist","attributes","RangeError","k1","doc","extractor","fieldTerms","metadataKey","calculateAverageFieldLengths","fieldRefs","numberOfFields","documentsWithField","averageFieldLength","createFieldVectors","fieldRefsLength","termIdfCache","fieldLength","termFrequencies","termsLength","fieldBoost","docBoost","scoreWithPrecision","createTokenSet","use","unshift","clonedMetadata","metadataKeys","otherMatchData","allFields","wildcard","NONE","LEADING","TRAILING","OPTIONAL","QueryParseError","QueryLexer","lexemes","escapeCharPositions","lexText","sliceString","subSlices","emit","escapeCharacter","EOS","width","ignore","backup","acceptDigitRun","charCode","more","FIELD","TERM","EDIT_DISTANCE","BOOST","PRESENCE","lexField","lexer","lexTerm","lexEditDistance","lexBoost","lexEOS","termSeparator","currentClause","lexemeIdx","parseClause","peekLexeme","consumeLexeme","lexeme","nextClause","completedClause","parser","parsePresence","parseField","parseTerm","errorMessage","nextLexeme","possibleFields","parseEditDistance","parseBoost","generateSchema","mappedRecords","compiledMap","mappedKeys","sortKey","getSortKey","mapRecord","createSampleRecord","schema","fieldsHas","setField","thisType","mappedRec","getFieldValue","collectionKey","constructRecord","revLookup","Arr","inited","encodeChunk","uint8","tmp","fromByteArray","extraBytes","len2","read","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","write","TYPED_ARRAY_SUPPORT","_kMaxLength","kMaxLength","createBuffer","that","__proto__","encodingOrOffset","fromArrayLike","fromArrayBuffer","encoding","isEncoding","actual","internalIsBuffer","checked","fromObject","assertSize","_isBuffer","isView","loweredCase","utf8ToBytes","base64ToBytes","swap","bidirectionalIndexOf","arrayIndexOf","indexSize","valLength","buf","readUInt16BE","foundIndex","found","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","utf16leToBytes","base64Slice","base64.fromByteArray","utf8Slice","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","poolSize","_augment","alloc","allocUnsafeSlow","compare","swap16","swap32","swap64","hexSlice","asciiSlice","latin1Slice","utf16leSlice","inspect","thisStart","thisEnd","thisCopy","targetCopy","_arr","out","toHex","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","ieee754.write","writeDouble","newBuf","subarray","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","ieee754.read","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","b64","placeHolders","base64.toByteArray","stringtrim","base64clean","dst","isFastBuffer","isSlowBuffer","copyProps","SafeBuffer","SlowBuffer","createNodeErrors","nodeKeyMaker","isSingleRecord","collectionName","construct","pathRegxMaker","collectionPathRegx","addToParent","defaultIndex","constructNode","getNodeId","findRoot","constructHierarchy","def","getNewRootLevel","pathMaps","_getNewRecordTemplate","createDefaultIndex","allidsShardFactor","getNewIndexTemplate","getNewRecordTemplate","getNewSingleRecordTemplate","getNewAggregateGroupTemplate","condition","getNewAggregateTemplate","aggregatedValue","fieldErrors","AddFieldValidationFailed","getNewField","fieldRules","allowedTypes","typeOptionsRules","optName","validateField","everySingleField","validateAllFields","addField","recordTemplate","validationMessages","getNewRecordValidationRule","invalidFields","messageWhenInvalid","expressionWhenValid","getStaticValue","commonRecordValidationRules","fieldNotEmpty","fieldBetween","fieldGreaterThan","addRecordValidationRule","createTrigger","actionName","eventName","optionsCreator","createAction","behaviourSource","behaviourName","initialOptions","aggregateRules","validateAggregate","aggregate","sets","commonRules","stringNotEmpty","recordRules","aggregateGroupRules","validateNode","getRuleSet","validateAll","duplicateNameRule","duplicateNodeKeyErrors","aggregateErrors","validateAllAggregates","actionRules","duplicateActionRule","validateAction","validateActions","allActions","duplicateActions","a2","validateTrigger","trigger","triggerRules","validateTriggers","triggers","getApplicationDefinition","appDefinition","loadJson","_saveApplicationHierarchy","validationErrors","updateJson","createFolder","createJson","_saveActionsAndTriggers","actionValidErrs","triggerValidErrs","getTemplateApi","getBehaviourSources","api","_getUsers","_loadAccessLevels","dummyHash","password","_authenticate","allUsers","userAuth","enabled","accessLevels","passwordHash","buildUserPermissions","verified","verify","isUser","tempAccessCode","temporaryAccessId","temporaryAccessHash","temporaryAccessExpiryEpoch","userAccessLevels","allAccessLevels","levels","ua","userName","_createTemporaryAccess","getTemporaryCode","tempId","allusers","u2","userRules","_getNewUser","_getNewUserAuth","_isValidPassword","currentPw","newpassword","_changeMyPassword","existingAuth","doSet","_setPasswordFromTemporaryCode","currentTime","auth","_scorePassword","letters","variations","digits","nonWords","variationCount","check","strengthText","_createUser","userErrors","getAccess","tempAccess","_enableUser","_disableUser","toggleUser","permissionRules","isAllowedType","isRecordOrIndexType","applyPermissionRules","applyLevelRules","allLevels","accessLevelRules","_validateAccessLevels","level","validateAccessLevel","_saveAccessLevels","errs","_setUserAccessLevels","actualAccessLevels","missing","getAuthApi","generateFullPermissions","allNodes","indexNodes","hierarchyFunctions","getPotentialReverseReferenceIndexes","refIndex","getPotentialReferenceIndexes","getDefaultTypeOptions","getNewAction","getNewTrigger","getIndexNodes","getRecordNodes","getIndexSchema","subscriber_queue","setState","pathParts","safeSetPath","currentPartIndex","currentKey","trimSlash","loadRecord","statePath","url","isSuccess","listRecords","indexKey","records","post","body","localStorage","setItem","getNewChildRecordToState","coreApi","childRecordType","errorHandler","rec","getNewChild","getNewRecordToState","EVENT_TYPE_MEMBER_NAME","eventHandlers","rootPath","parameters","setStateWithStore","getState","apiCall","notFound","badRequest","forbidden","fetch","headers","Content-Type","credentials","status","json","statusText","patch","del","apiOpts","createApi","fallback","safeGetPath","Set State","Load Record","List Records","Save Record","saveRecord","Get New Child Record","Get New Record","Authenticate","handlersObj","handlersArray","defaultDef","required","elementDefinition","propType","isOfType","defaultDefinition","expandSingleProp","propDef","expandPropsDefinition","propsDefinition","expandedProps","isComponent","isEvent","_component","asset","##bbstate","emptyState","normalString","isRootComponent","inherits","hasProp","getExactComponent","allComponents","s1","s2","stringEquals","getInstanceProps","componentInfo","finalProps","fullProps","getComponentInfo","comp","subComponentProps","cname","createProps","rootProps","inheritedProps","targetComponent","unsetProps","rootDefaultProps","rootComponent","componentName","derivedFromProps","propName","parsedPropDef","parsePropDef","createArrayElementProps","arrayPropName","buildPropsHierarchy","baseComponent","buildProps","propComponentInfo","subComponentInstanceProps","propsArray","newPropsArray","baseComponentInfo","rename","pages","oldname","newname","changedComponents","traverseProps","hasEdited","pageName","page","appBody","makeLibraryUrl","appName","lib","encodeURI","makeGeneratorLibraryUrl","appname","location","apps","hasAppPackage","pkg","libraries","appPackage","allLibraries","componentLibraries","libModule","import","loadLibs","generatorLibraries","allGeneratorLibs","generatorModule","loadGeneratorLibs","loadLibraryUrls","libUrl","libName","importPath","loadLibUrls","derivedComponents","generators","generatorsArray","rootComponents","combineComponents","components","shadowHierarchy","createShadowHierarchy","showSettings","show","useAnalytics","showBackend","isBackend","showFrontend","derived","newRecord","useRoot","currentNodeIsNew","selectExistingNode","activeNav","newIndex","saveCurrentNode","existingNode","cloned","currentIndex","savePackage","importAppDefinition","deleteCurrentNode","nodeToDelete","saveField","databaseStore","db","deleteField","saveAction","newAction","oldAction","existingAction","deleteAction","saveTrigger","newTrigger","oldTrigger","existingTrigger","deleteTrigger","incrementAccessLevelsVersion","saveLevel","newLevel","oldLevel","existingLevel","deleteLevel","setActiveNav","navName","saveDerivedComponent","derivedComponent","currentFrontEndItem","currentComponentInfo","currentComponentIsNew","createDerivedComponent","newComponentInfo","parentcomponent","description","tags","getNewComponentInfo","currentFrontEndType","createGeneratedComponents","doCreate","deleteDerivedComponent","renameDerivedComponent","changedComponent","saveAllChanged","savePage","currentPageName","addComponentLibrary","response","componentsArray","removeComponentLibrary","addStylesheet","stylesheets","removeStylesheet","refreshComponents","main","unauthenticated","setCurrentComponent","setCurrentPage","mainUi","unauthenticatedUi","stop","subscribers","new_value","run_queue","invalidate","subscriber","newChildRecord","newRootRecord","newChildIndex","newRootIndex","getStore","setupRouter","pushState","history","$store","factory","modules","installedModules","__webpack_require__","moduleId","getter","__esModule","./dist/icons.json","activity","airplay","alert-circle","alert-octagon","alert-triangle","align-center","align-justify","align-left","align-right","aperture","archive","arrow-down-circle","arrow-down-left","arrow-down-right","arrow-down","arrow-left-circle","arrow-left","arrow-right-circle","arrow-right","arrow-up-circle","arrow-up-left","arrow-up-right","arrow-up","at-sign","award","bar-chart-2","bar-chart","battery-charging","battery","bell-off","bell","bluetooth","bold","book-open","book","bookmark","box","briefcase","calendar","camera-off","camera","cast","check-circle","check-square","chevron-down","chevron-left","chevron-right","chevron-up","chevrons-down","chevrons-left","chevrons-right","chevrons-up","chrome","circle","clipboard","clock","cloud-drizzle","cloud-lightning","cloud-off","cloud-rain","cloud-snow","cloud","codepen","codesandbox","coffee","columns","command","compass","corner-down-left","corner-down-right","corner-left-down","corner-left-up","corner-right-down","corner-right-up","corner-up-left","corner-up-right","cpu","credit-card","crop","crosshair","database","disc","dollar-sign","download-cloud","download","droplet","edit-2","edit-3","edit","external-link","eye-off","eye","facebook","fast-forward","feather","figma","file-minus","file-plus","file-text","film","flag","folder-minus","folder-plus","folder","framer","frown","gift","git-branch","git-commit","git-merge","git-pull-request","github","gitlab","globe","grid","hard-drive","headphones","heart","help-circle","hexagon","home","image","inbox","info","instagram","italic","layers","layout","life-buoy","link-2","link","linkedin","loader","log-in","log-out","mail","map-pin","maximize-2","maximize","meh","menu","message-circle","message-square","mic-off","mic","minimize-2","minus-circle","minus-square","minus","monitor","moon","more-horizontal","more-vertical","mouse-pointer","move","music","navigation-2","navigation","octagon","package","paperclip","pause-circle","pen-tool","percent","phone-call","phone-forwarded","phone-incoming","phone-missed","phone-off","phone-outgoing","phone","pie-chart","play-circle","play","plus-circle","plus-square","plus","pocket","power","printer","radio","refresh-ccw","refresh-cw","rewind","rotate-ccw","rotate-cw","rss","scissors","send","server","share-2","share","shield-off","shield","shopping-bag","shopping-cart","sidebar","skip-back","skip-forward","slack","slash","sliders","smartphone","smile","speaker","square","star","stop-circle","sun","sunrise","sunset","tablet","terminal","thermometer","thumbs-down","thumbs-up","toggle-left","toggle-right","tool","trash-2","trash","trello","trending-down","trending-up","triangle","truck","tv","twitch","twitter","umbrella","underline","unlock","upload-cloud","upload","user-check","user-minus","user-plus","user-x","video-off","video","voicemail","volume-1","volume-2","volume-x","volume","watch","wifi-off","wifi","wind","x-circle","x-octagon","x-square","youtube","zap-off","zap","zoom-in","zoom-out","./node_modules/classnames/dedupe.js","__WEBPACK_AMD_DEFINE_RESULT__","classNames","StorageObject","_parseArray","resultSet","_parse","hasOwn","SPACE","argType","_parseString","_parseObject","_parseNumber","classSet","./node_modules/core-js/es/array/from.js","./node_modules/core-js/internals/a-function.js","./node_modules/core-js/internals/an-object.js","./node_modules/core-js/internals/array-from.js","toObject","callWithSafeIterationClosing","isArrayIteratorMethod","createProperty","getIteratorMethod","arrayLike","argumentsLength","mapfn","iteratorMethod","./node_modules/core-js/internals/array-includes.js","toIndexedObject","toAbsoluteIndex","IS_INCLUDES","$this","el","./node_modules/core-js/internals/bind-context.js","aFunction","./node_modules/core-js/internals/call-with-safe-iteration-closing.js","anObject","ENTRIES","returnMethod","./node_modules/core-js/internals/check-correctness-of-iteration.js","ITERATOR","wellKnownSymbol","SAFE_CLOSING","called","iteratorWithReturn","return","SKIP_CLOSING","ITERATION_SUPPORT","./node_modules/core-js/internals/classof-raw.js","./node_modules/core-js/internals/classof.js","classofRaw","TO_STRING_TAG","CORRECT_ARGUMENTS","tryGet","callee","./node_modules/core-js/internals/copy-constructor-properties.js","ownKeys","getOwnPropertyDescriptorModule","definePropertyModule","getOwnPropertyDescriptor","./node_modules/core-js/internals/correct-prototype-getter.js","fails","./node_modules/core-js/internals/create-iterator-constructor.js","IteratorPrototype","createPropertyDescriptor","setToStringTag","Iterators","returnThis","IteratorConstructor","NAME","./node_modules/core-js/internals/create-property-descriptor.js","bitmap","./node_modules/core-js/internals/create-property.js","toPrimitive","propertyKey","./node_modules/core-js/internals/define-iterator.js","createIteratorConstructor","setPrototypeOf","hide","redefine","IS_PURE","IteratorsCore","BUGGY_SAFARI_ITERATORS","Iterable","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","methods","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","forced","./node_modules/core-js/internals/descriptors.js","./node_modules/core-js/internals/document-create-element.js","exist","./node_modules/core-js/internals/enum-bug-keys.js","./node_modules/core-js/internals/export.js","setGlobal","copyConstructorProperties","isForced","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","noTargetGet","sham","./node_modules/core-js/internals/fails.js","./node_modules/core-js/internals/function-to-string.js","shared","./node_modules/core-js/internals/get-iterator-method.js","classof","./node_modules/core-js/internals/global.js","globalThis","./node_modules/core-js/internals/has.js","./node_modules/core-js/internals/hidden-keys.js","./node_modules/core-js/internals/hide.js","DESCRIPTORS","./node_modules/core-js/internals/html.js","documentElement","./node_modules/core-js/internals/ie8-dom-define.js","./node_modules/core-js/internals/indexed-object.js","./node_modules/core-js/internals/internal-state.js","NATIVE_WEAK_MAP","objectHas","sharedKey","hiddenKeys","wmget","wmhas","wmset","STATE","enforce","getterFor","TYPE","./node_modules/core-js/internals/is-array-iterator-method.js","ArrayPrototype","./node_modules/core-js/internals/is-forced.js","replacement","feature","detection","normalize","POLYFILL","NATIVE","./node_modules/core-js/internals/is-object.js","./node_modules/core-js/internals/is-pure.js","./node_modules/core-js/internals/iterators-core.js","PrototypeOfArrayIteratorPrototype","arrayIterator","./node_modules/core-js/internals/iterators.js","./node_modules/core-js/internals/native-symbol.js","./node_modules/core-js/internals/native-weak-map.js","nativeFunctionToString","./node_modules/core-js/internals/object-create.js","defineProperties","enumBugKeys","documentCreateElement","Empty","createDict","iframeDocument","iframe","display","contentWindow","open","close","Properties","./node_modules/core-js/internals/object-define-properties.js","objectKeys","./node_modules/core-js/internals/object-define-property.js","IE8_DOM_DEFINE","nativeDefineProperty","Attributes","./node_modules/core-js/internals/object-get-own-property-descriptor.js","propertyIsEnumerableModule","nativeGetOwnPropertyDescriptor","./node_modules/core-js/internals/object-get-own-property-names.js","internalObjectKeys","getOwnPropertyNames","./node_modules/core-js/internals/object-get-own-property-symbols.js","./node_modules/core-js/internals/object-get-prototype-of.js","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","./node_modules/core-js/internals/object-keys-internal.js","names","./node_modules/core-js/internals/object-keys.js","./node_modules/core-js/internals/object-property-is-enumerable.js","nativePropertyIsEnumerable","NASHORN_BUG","./node_modules/core-js/internals/object-set-prototype-of.js","validateSetPrototypeOfArguments","correctSetter","./node_modules/core-js/internals/own-keys.js","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","Reflect","./node_modules/core-js/internals/path.js","./node_modules/core-js/internals/redefine.js","InternalStateModule","getInternalState","enforceInternalState","TEMPLATE","unsafe","simple","./node_modules/core-js/internals/require-object-coercible.js","./node_modules/core-js/internals/set-global.js","./node_modules/core-js/internals/set-to-string-tag.js","TAG","./node_modules/core-js/internals/shared-key.js","./node_modules/core-js/internals/shared.js","copyright","./node_modules/core-js/internals/string-at.js","requireObjectCoercible","CONVERT_TO_STRING","second","./node_modules/core-js/internals/to-absolute-index.js","integer","./node_modules/core-js/internals/to-indexed-object.js","IndexedObject","./node_modules/core-js/internals/to-integer.js","argument","./node_modules/core-js/internals/to-length.js","./node_modules/core-js/internals/to-object.js","./node_modules/core-js/internals/to-primitive.js","./node_modules/core-js/internals/uid.js","postfix","./node_modules/core-js/internals/validate-set-prototype-of-arguments.js","./node_modules/core-js/internals/well-known-symbol.js","NATIVE_SYMBOL","./node_modules/core-js/modules/es.array.from.js","checkCorrectnessOfIteration","./node_modules/core-js/modules/es.string.iterator.js","codePointAt","defineIterator","setInternalState","iterated","point","./node_modules/webpack/buildin/global.js","eval","./src/default-attrs.json","xmlns","height","viewBox","stroke","stroke-width","stroke-linecap","stroke-linejoin","./src/icon.js","_extends","_createClass","Constructor","protoProps","staticProps","_dedupe2","_interopRequireDefault","_defaultAttrs2","Icon","contents","_classCallCheck","class","attrsToString","./src/icons.js","_icon2","_icons2","_tags2","icon","./src/index.js","_toSvg2","_replace2","icons","toSvg","./src/replace.js","elementsToReplace","querySelectorAll","elementAttrs","getAttrs","svgString","svgElement","DOMParser","parseFromString","querySelector","replaceChild","replaceElement","./src/tags.json","life-bouy","./src/to-svg.js","_icons","0","getIcon","hoverColor","currentAttributes","_attributes","subComponents","isExpanded","isInSubfolder","click_handler","title","isComponentSelected","click_handler_1","subfolders","componentsThisLevel","pathPartsThisLevel","thisLevel","expandedFolders","joinPath","normalizedName","isOnThisLevel","notOnThisLevel","subfolder","lastPartOfName","subFolder","folderName","expandFolder","expandedFolder","newFolders","f1","f2","infoText","disabled","hasError","margin","textMember","valueMember","multiple","selected_option","mozNow","msNow","oNow","webkitNow","isBinding","setBinding","getBinding","makeError","expandPropDef","validateProps","isFinal","isArrayElement","propDefName","propValue","arrayItem","arrayErrs","arrErr","splitName","fullname","generator","allowGenerators","click_handler_2","onComponentChosen","onGeneratorChosen","addRootComponent","isGenerator","newComponentLibraries","newDerivedComponents","objPrototype","hyphenateCache","hyphenateRe","hyphenate","camelizeRe","camelize","ucfirst","strPrototype","startsWithFn","endsWithFn","arrPrototype","includesFn","includesStr","includesArray","findIndexFn","arguments$1","isWindow","isDocument","isJQuery","jquery","Node","isNodeCollection","isNumeric","toBoolean","toFloat","toNode","toNodes","Boolean","toList","toMs","ref$1","propA","propB","uniqueBy","intersectRect","r1","r2","left","right","top","bottom","pointInRect","rect","Dimensions","ratio","dimensions","aProp","contain","maxDimensions","this$1","cover","getAttribute","removeAttr","hasAttr","hasAttribute","isIE","navigator","userAgent","isRtl","hasTouchEvents","hasPointerEvents","PointerEvent","hasTouch","DocumentTouch","maxTouchPoints","pointerDown","pointerMove","pointerUp","pointerEnter","pointerLeave","pointerCancel","selector","queryAll","nodes","findAll","isContextSelector","ownerDocument","_query","queryFn","removes","contextSanitizeRe","selectorRe","splitSelector","selectors","closest","selectors$1","prev","previousElementSibling","contextSelectorRe","elProto","Element","matchesFn","webkitMatchesSelector","msMatchesSelector","closestFn","parents","escapeFn","CSS","voidElements","base","col","embed","img","keygen","menuitem","meta","param","track","wbr","isVoidElement","tagName","isVisible","offsetWidth","offsetHeight","getClientRects","selInput","isInput","within","getArgs","targets","listener","useCapture","toEventTargets","delegates","delegate","currentTarget","selfFilter","useCaptureFilter","off","notCanceled","bubbles","cancelable","capture","isEventTarget","toEventTarget","isTouch","pointerType","touches","getEventPos","changedTouches","PromiseFn","Deferred","PENDING","setImmediate","executor","deferred","race","ajax","env","xhr","XMLHttpRequest","beforeSend","responseType","header","setRequestHeader","getImage","srcset","sizes","Image","onerror","onload","readyState","unbind","getIndex","finite","hasChildNodes","insertNodes","nextSibling","wrapAll","structure","firstChild","wrapInner","unwrap","notify","reason","onResolved","onRejected","catch","fragmentRe","singleTagRe","container","insertAdjacentHTML","textContent","firstElementChild","nextElementSibling","isHtml","addClass","apply$1","removeClass","removeClasses","cls","replaceClass","hasClass","toggleClass","force","getArgs$1","supports","Force","Multiple","_multiple","_force","cssNumber","animation-iteration-count","column-count","fill-opacity","flex-grow","flex-shrink","font-weight","line-height","opacity","orphans","stroke-dasharray","stroke-dashoffset","widows","z-index","zoom","getStyle","removeProperty","styles","getStyles","pseudoElt","defaultView","getComputedStyle","vars","getCssVar","docEl","getPropertyValue","cssProps","prefixedName","cssPrefixes","vendorPropName","transition","timing","timer","transition-property","transition-duration","transition-timing-function","Transition","inProgress","animationPrefix","clsCancelAnimation","animate","origin","hasReset","Animation","in","dirs","positionAt","elAttach","targetAttach","elOffset","targetOffset","boundary","getPos","flipped","dim","getDimensions","targetDim","moveTo","getOffsets","boundaries","getWindow","align","alignFlip","elemOffset","centerOffset","centerTargetOffset","newVal","coordinates","currentOffset","hidden","pageYOffset","pageXOffset","innerHeight","innerWidth","getBoundingClientRect","offsetParent","getDocument","getDocEl","parentOffset","dimension","boxModelAdjust","sizing","attach","factor","offsets","flipPosition","isInView","topOffset","leftOffset","win","client","bounding","scrolledOver","heightOffset","elHeight","offsetPosition","vp","vh","diff","scrollTop","scrollTo","offsetTop","offsetLeft","toPx","fastdom","reads","writes","scheduleFlush","remove$1","runTasks","scheduled","microtask","MouseTracker","slope","positions","ticking","pageX","pageY","movesTo","prevPos","points","strats","mergeFnData","parentVal","childVal","vm","concatStrat","mergeOptions","extends","mixins","mergeKey","key$1","parseOptions","created","beforeConnect","connected","beforeDisconnect","disconnected","destroy","Player","cmd","postMessage","isVideo","isYoutube","isVimeo","isHTML5","isIFrame","enableApi","poller","vimeo","setInterval","player_id","clearInterval","mute","muted","IntersectionObserver","IntersectionObserverClass","rootMargin","pending","takeRecords","passive","inView","isIntersecting","observe","disconnect","getComponentName","UIkit","_init","freeze","prepend","DATA","_connected","_callUpdate","plugin","installed","Sub","globalAPI","_callHook","hook","handlers","$options","_callConnected","_data","_computeds","_initProps","_initEvents","_initObserver","_callDisconnected","_observer","_unbindEvents","_callWatches","updates","_frames","hooksAPI","getProps","data$1","coerce","prop$1","registerComputed","$props","$el","registerEvent","notIn","normalizeData","_uid","_initData","_initMethods","_initComputeds","$mount","$name","exclude","MutationObserver","$reset","attributeFilter","stateAPI","argsArray","functional","getComponent","opt","install","_initialized","getComponents","connect","name$1","componentAPI","$emit","removeEl","$create","$update","$getComponent","$container","instanceAPI","Class","Togglable","queued","initProps","overflow","paddingTop","paddingBottom","marginTop","marginBottom","hideProps","hasAnimation","hasTransition","toggleElement","_toggleElement","toggled","isToggled","untoggled","scroll","toggleNow","updateAria","_toggle","inner","lastElementChild","currentHeight","endHeight","toggleAnimation","focus","blur","Accordion","collapsible","clsOpen","items","preventDefault","isItem","_wrapper","Alert","selClose","Core","x1","y1","x2","y2","Video","automute","autoplay","preload","player","visible","Cover","naturalWidth","videoWidth","clientWidth","naturalHeight","videoHeight","clientHeight","Position","clsPos","offset$1","axis","getAxis","Drop","boundaryAlign","delayShow","delayHide","clsDrop","hoverIdle","tracker","defaultPrevented","clearTimers","delayOn","isActive","tryShow","isDelaying","showTimer","isParentOf","hideTimer","isChildOf","alignTo","Dropdown","FormCustom","files","Gif","inview","Margin","firstColumn","rows","getRows","stacks","row","getOffset","leftDim","Grid","masonry","parallax","clsStack","transitionInProgress","translates","maxColumnHeight","padding","getPaddingBottom","height$1","scrolled","distance","column","maxScrolled","FlexBug","selMinHeight","forceHeight","HeightMatch","heights","getHeights","hasMinHeight","minHeight","hasShrunk","toFixed","HeightViewport","expand","offsetBottom","dataset","heightExpand","Svg","strokeAnimation","focusable","include","svg","getSvg","applyAttributes","svgEl","insertSVG","getMaxPathLength","svgs","decodeURIComponent","symbols","symbolRe","parseSymbols","parseSVG","getTotalLength","spinner","totop","marker","close-icon","close-large","navbar-toggle-icon","overlay-icon","pagination-next","pagination-previous","search-icon","search-large","search-navbar","slidenav-next","slidenav-next-large","slidenav-previous","slidenav-previous-large","added","cmp","isIcon","cloneNode","applyRtl","IconComponent","Slidenav","Search","Close","Spinner","Img","dataSrc","dataSrcset","cacheKey","dataWidth","dataHeight","dataSizes","isImg","storage","setSrcAttrs","sizesToPixel","observer","currentSrc","devicePixelRatio","bgSize","srcSize","descriptors","srcSetRe","change","backgroundImage","sizesRe","matchMedia","sizeRe","additionRe","sessionStorage","Media","media","toMedia","Leader","clsWrapper","clsHide","attrFill","Container","active$1","Modal","selPanel","escClose","bgClose","overlay","panel","transitionElement","modal","clsPage","keyCode","animate$1","_reject","Modal$1","dialog","alert","confirm","resolved","prompt","ok","Nav","Navbar","dropdown","dropbar","dropbarMode","dropbarAnchor","dropdowns","getDropdown","getActive","transitionTo","newHeight","oldHeight","clip","Offcanvas","clsContainer","clsFlip","clsContainerAnimation","clsSidebarAnimation","clsMode","clsOverlay","targetTouches","clientY","scrollHeight","getViewport","viewport","OverflowAuto","selContainer","selContent","Responsive","Scroll","docHeight","winHeight","startY","currentY","cos","PI","click","Scrollspy","inViewClass","_ukScrollspyState","ScrollspyNav","links","Sticky","clsActive","clsInactive","clsFixed","clsBelow","selTarget","widthElement","showOnUp","isFixed","elTop","bottomOffset","parseProp","inactive","lastScroll","margins","initTimestamp","lastDir","initScroll","propOffset","Switcher","swiping","attrItem","connects","toggles","hasPrev","Tab","Toggle","href","core","Countdown","days","hours","minutes","unit","total","timespan","digit","targetClass","Animate","propsFrom","oldScrollY","propsTo","getPositionWithMargin","zIndex","pointerEvents","Filter","selActive","updateState","old","listA","listB","actives","mergeState","stateFilter","ref_sort","stateSort","stateOrder","getFilter","matchFilter","getSelector","sorted","localeCompare","numeric","sortItems","filterBy","Animations","slide","translate","translated","scale3d","Animations$1","fade","scale","triggerUpdate","SliderAutoplay","autoplayInterval","pauseOnHover","startAutoplay","stopAutoplay","slides","interval","draggable","SliderDrag","threshold","selSlides","button","drag","_transitioner","getDistance","dragging","prevIndex","unbindMove","dis","nextIndex","_getDistance","itemShown","_translate","_show","dirChange","userSelect","Slider","selNav","nav","selNavItem","navItems","maxIndex","updateNav","getValidIndex","clsActivated","velocity","Transitioner","transitionOptions","speedUp","selList","itemshown","queueIndex","forward","getDirection","_getTransitioner","transitioner","Slideshow","linear","itemshow itemhide itemshown itemhidden","beforeitemshow","itemhidden","lightboxPanel","delayControls","videoAutoplay","selCaption","caption","showControls","hideControls","getItem","loadItem","alt","setError","poster","setIframe","getIframe","withCredentials","ref_response","controlsTimer","Lightbox","toItem","containers","Notification","clsClose","clsMsg","notification","closeAll","immediate","marginProp","startProps","removeFn","Parallax","bgPos","isColor","isCssProp","steps","getUnit","covers","down","bgProps","bg","backgroundSize","_image","dimEl","dimImage","span","posPercentage","backgroundRepeat","getCss","getStep","Parallax$1","getOffsetElement","ease$1","SliderReactive","getLeft","center","getElLeft","bounds","centerEl","getMax","getWidth","triggerUpdate$1","Slider$1","updateTranslates","getItemIn","getActives","slideLeft","avgWidth","leftCenter","slideWidth","slideRight","itemshow","slideIndex","SlideshowParallax","selItem","ref_detail","getCurrent","isIn","trackTimer","obj$1","Animations$2","Slideshow$1","maxHeight","Sortable","clsItem","clsPlaceholder","clsDrag","clsDragState","clsBase","clsNoDrag","clsEmpty","clsCustom","handle","scrollY","touchAction","trackScroll","scrollEl","elementFromPoint","getScrollingElement","parentElement","parents$1","overflowRe","touched","outerHTML","boxSizing","sortable","getSortable","classes","isPredecessor","scrollingElement","Tooltip","_hasTitle","aria-expanded","_unbind","tooltip","Upload","allow","clsDragover","concurrent","maxSize","mime","msgInvalidMime","msgInvalidName","msgInvalidSize","beforeAll","completeAll","fail","loadEnd","loadStart","progress","transfer","dataTransfer","dragenter","dragover","dragleave","match$1","chunks","FormData","mutations","applyMutation","childList","subtree","characterData","mutation","addedNodes","removedNodes","i$1","applyChildList","attributeName","applyAttribute","boot","componentChosen","hideDialog","confirmClearComponent","componentSelected","shortName","modalAction","CHOOSE_COMPONENT","CLEAR_COMPONENT","emptyProps","modalElement","onValueChanged","onEdit","chooseComponent","showDialog","clearComponent","setProp","fieldHasError","onEditComponent","____name","elementDefinitionArray","addElement","parentProps","onValidate","onEditComponentProp","elementErrors","elArray","elProp","newElement","newProps","elementProps","makeBinding","bindingPath","canOnlyBind","clearBinding","bindingFallbackValue","setBindingPath","setBindingFallback","setBindingSource","bindingSource","isBound","onChanged","forceIsBound","ev","onParameterChanged","onRemoved","eventTypeChanged","eventType","eventChanged","paramsAsObject","eType","emptyParameters","newparameters","onEventHandlerChanged","removeHandler","addHandler","newHandler","oldEvent","newEvent","newEvents","setComponentProp","inheritedExpanded","inheritedPropsDefinitions","propsDefinitions","shouldValidate","instanceProps","onPropsChanged","isInstance","isPropInherited","nowSet","arrayIndex","cubicOut","padding_top","padding_bottom","margin_top","margin_bottom","border_top_width","borderTopWidth","border_bottom_width","borderBottomWidth","propsChanged","onSubComponentPropsChanged","onSubComponentGoBack","editingSubComponentProps","editingSubComponentTitle","onGoBack","editingSubComponentName","editingSubComponentArrayIndex","editingSubComponentArrayPropName","subProps","componentDetailsExpanded","onPropsValidate","componentInstanceCancelEdit","editingComponentInstanceTitle","editingComponentInstance","componentInstancePropsChanged","nameInvalid","tagsString","confirmDeleteComponent","deleteComponent","editingComponentArrayIndex","editingComponentArrayPropName","propsValidationErrors","editingComponentInstancePropName","originalName","ignoreStore","updateComponent","doChange","newComponent","ukModal","isOpen","onClosed","listenerAdded","libraryDependencies","componentDependsOnLibrary","componentDependencies","dependsOn","dependantComponents","dependantPages","dependants","onSelectedChanged","onNameChanged","libs","existingComponents","_generator","generateParameter","allGeneratedComponents","onConfirmGenerate","selectedComponents","indexSchema","componentExists","componentsWithDependencies","sp","newselectedComponents","componentSelectorModal","generatorOptionsModal","stylesheetLinks","hasComponent","addLib","addNewLib","addNewStylesheet","removeLibrary","entryComponent","notSeletedComponent","newComponentPicker","settingsView","navActive","onclick","iconName","isDroppedDown","setActive","newChildActions","defaultNewChildActions","inputChanged","valuesText","hasErrors","__assign","HOOKS","_disable","_enable","allowInput","altFormat","altInput","altInputClass","ariaDateFormat","clickOpens","closeOnSelect","conjunction","dateFormat","defaultHour","defaultMinute","defaultSeconds","disable","disableMobile","enable","enableSeconds","enableTime","getWeek","givenDate","getTime","setHours","setDate","getDate","getDay","week1","getFullYear","hourIncrement","ignoredFocusElements","inline","locale","minuteIncrement","monthSelectorType","nextArrow","noCalendar","onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition","plugins","positionElement","prevArrow","shorthandCurrentMonth","showMonths","static","time_24hr","weekNumbers","english","weekdays","shorthand","longhand","months","daysInMonth","firstDayOfWeek","ordinal","rangeSeparator","weekAbbreviation","scrollTitle","toggleTitle","amPM","yearAriaLabel","hourAriaLabel","minuteAriaLabel","int","arrayify","elem","clearNode","createNumberInput","inputClassName","numInput","arrowUp","arrowDown","doNothing","monthToStr","monthNumber","revFormat","dateObj","monthName","setMonth","hour","day","getHours","shortMonth","setSeconds","unixSeconds","weekNum","weekNumber","year","setFullYear","ISODate","setMinutes","month","unixMillSeconds","tokenRegex","formats","toISOString","getMonth","getSeconds","getMinutes","createDateFormatter","_a","_c","l10n","frmt","overrideLocale","formatDate","createDateParser","givenFormat","timeless","customLocale","parsedDate","dateOrig","datestr","parseDate","matched","ops","matchIndex","regexStr","token_1","isBackSlash","escaped","compareDates","date1","date2","isBetween","ts","ts1","ts2","DAY","_loop_1","args_1","DEBOUNCED_CHANGE_MS","FlatpickrInstance","instanceConfig","flatpickr","defaultConfig","bindToInstance","setCalendarWidth","calendarContainer","visibility","daysContainer","daysWidth","weekWrapper","updateTime","selectedDates","setDefaultTime","isKeyDown","curValue","delta","which","isHourElem","hourElement","isMinuteElem","minuteElement","incrementNumInput","timeWrapper","prevValue","_input","setHoursFromInputs","updateValue","_debouncedChange","secondElement","limitMinHours","minTime","minDate","minDateHasTime","latestSelectedDateObj","limitMaxHours","maxTime","maxDate","maxDateHasTime","setHoursFromDate","setDefaultHours","minHr","minMinutes","maxHr","maxMinutes","isMobile","onYearInput","changeYear","_handlers","onClick","evt","triggerChange","triggerEvent","bindEvents","inputType","mobileInput","tabIndex","mobileFormatStr","setupMobile","debouncedResize","onResize","onMouseOver","ontouchstart","documentClick","monthNav","onMonthNavClick","selectDate","timeContainer","timeIncrement","jumpToDate","jumpDate","jumpTo","oldYear","currentYear","oldMonth","currentMonth","buildMonthSwitch","redraw","inputElem","createDocumentFragment","yearElements","monthElements","prevMonthNav","nextMonthNav","buildMonths","__hidePrevMonthArrow","__hideNextMonthArrow","currentYearElement","updateNavigationCurrentMonth","innerContainer","buildWeeks","rContainer","buildWeekdays","buildDays","hourInput","aria-label","getElementsByTagName","minuteInput","military2ampm","secondInput","buildTime","customAppend","appendTo","createDay","dayNumber","dateIsEnabled","isEnabled","dayElement","todayDateElem","isDateSelected","selectedDateElem","isDateInRange","focusOnDayElem","targetNode","getFirstAvailableDay","startMonth","endMonth","startIndex","endIndex","focusOnDay","dayFocused","activeElement","startElem","givenMonth","loopDelta","numMonthDays","changeMonth","getNextAvailableDay","buildMonthDays","firstOfMonth","prevMonthDays","getDaysInMonth","isMultiMonth","prevMonthDayClass","nextMonthDayClass","dayIndex","dayNum","dayContainer","frag","shouldBuildMonth","monthsDropdownContainer","buildMonth","monthElement","monthNavFragment","selectedMonth","yearInput","tabindex","yearElement","weekdayContainer","updateWeekdays","isOffset","_hidePrevMonthArrow","_hideNextMonthArrow","isCalendarElem","eventTarget_1","composedPath","getEventTarget","isCalendarElement","lostFocus","relatedTarget","isIgnored","newYear","newYearNum","isNewYear","dateToCheck","allowKeydown","allowInlineKeydown","isTimeObj","focusAndClose","delta_1","ctrlKey","elems","pluginElements","shiftKey","hoverDate","initialDate","rangeStartDate","rangeEndDate","containsDisabled","minRange","maxRange","dayElem","timestamp","outOfRange","positionCalendar","minMaxDateSetter","inverseDateObj","setupLocale","l10ns","userConfig","customPositionElement","_positionElement","calendarHeight","acc","calendarWidth","configPos","configPosVertical","configPosHorizontal","inputBounds","distanceFromBottom","showOnTop","rightMost","centerMost","styleSheets","bodyWidth","centerLeft","centerIndex","centerStyle","centerBefore","msMaxTouchPoints","findParent","selectedDate","shouldChangeMonth","selectedIndex","showTimeInput","single","loadedPlugins","_bind","_setHoursFromDate","_positionCalendar","triggerChangeEvent","toInitial","_initialDate","_createElement","lastChild","_type","wasOpen","CALLBACKS","setSelectedDate","inputDate","dates","parseDateRules","hooks","initEvent","getDateStr","dObj","isPrevMonth","isNextMonth","boolOpts","timeMode","defaultDateFormat","defaultAltFormat","_minDate","_maxDate","minMaxTimeSetter","_minTime","_maxTime","pluginConf","parseConfig","nodeName","preloadedDate","defaultDate","_showTimeInput","setupDates","isSafari","_flatpickr","nodeList","instances","HTMLCollection","NodeList","localize","setDefaults","jQuery","fp_incr","fpInstance","clonedField","possibleReferenceIndexes","func_1","possibleReverseReferenceIndexes","func_2","func_3","typeChanged","onFinished","selectedReverseRefIndex","getTypeOptions","editingField","fieldToEdit","onFinishedFieldEdit","getIndexAllowedRecords","newField","editField","editIndex","MIN_SAFE_INTEGER","getTypeOptionsValueText","isallowed","change_handler","indexableRecords","toggleAllowedRecord","openConfirmDelete","confirmDelete","hierarchyWidth","defaultNewIndexActions","defaultNewRecordActions","newIndexActions","newRecordActions","clonedAction","addNewOption","optKey","optValue","removeOption","newActionsList","actionsArray","getDefaultOptionsHtml","editingAction","actionEditingFinished","editingActionIsNew","isEditing","onActionEdit","onActionDelete","onActionSave","onActionCancel","defaultOptions","clonedTrigger","actionNames","allTriggers","newTriggersList","editingTrigger","triggerEditingFinished","editingTriggerIsNew","onTriggerEdit","onTriggerDelete","onTriggerSave","onTriggerCancel","getPermissionName","hasPermission","permissionChanged","clonedLevel","permissionMatrix","allPermissions","matchPermissions","p1","p2","hasPerm","perm","newLevels","createNewLevel","getPermissionsString","editingLevel","onEditingFinished","editingLevelIsNew","onLevelEdit","onLevelDelete","perms","navWidth","child_ctx","blocks","mount","et","ut","Tt","Ct","Nt","Dt","Pt","Zt","Xe","sr","ar","cr","getElementById"],"mappings":"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KAAKC,IAAO,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IACnfC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IACvfC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IACvfC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAA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"} |