1 line
No EOL
3.4 MiB
1 line
No EOL
3.4 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","../../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/getBehaviourSources.js","../../core/src/templateApi/index.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/getNewAccessLevel.js","../../core/src/authApi/validateAccessLevels.js","../../core/src/authApi/saveAccessLevels.js","../../core/src/authApi/generateFullPermissions.js","../../core/src/authApi/setUserAccessLevels.js","../../core/src/authApi/index.js","../../builder/src/common/core.js","../../builder/node_modules/svelte/store/index.mjs","../../builder/src/userInterface/pagesParsing/defaultPagesObject.js","../../builder/src/common/eventHandlers.js","../../builder/src/userInterface/pagesParsing/types.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/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/ComponentSearch.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/NewComponent.svelte","../../builder/src/userInterface/pagesParsing/splitRootComponentName.js","../../builder/src/userInterface/CurrentItemPreview.svelte","../../builder/src/userInterface/pagesParsing/findDependencies.js","../../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/Settings.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>\r\n\r\nexport let color = \"primary\";\r\nexport let className = \"\";\r\nexport let style = \"\";\r\nexport let groupPosition = \"\";\r\nexport let grouped = false;\r\n\r\n$: borderClass = grouped \r\n ? \"\"\r\n : \"border-normal\";\r\n\r\n</script>\r\n\r\n<button class=\"{color} {className} {borderClass} {grouped ? \"grouped\" : \"\"}\" \r\n style=\"{style}\"\r\n on:click >\r\n <slot/>\r\n</button>\r\n\r\n<style>\r\n\r\n.border-normal { border-radius: var(--borderradiusall); }\r\n.border-left { border-radius: var(--borderradius) 0 0 var(--borderradius); }\r\n.border-right { border-radius: 0 var(--borderradius) var(--borderradius) 0; }\r\n.border-middle { border-radius: 0; }\r\n\r\nbutton { \r\n border-style: solid; \r\n padding: 7.5px 15px;\r\n cursor:pointer;\r\n margin:5px;\r\n border-radius: 5px;\r\n}\r\n\r\n/* ---- PRIMARY ----*/\r\n.primary {\r\n background-color: var(--primary100);\r\n border-color: var(--primary100);\r\n color: var(--white);\r\n}\r\n\r\n.primary:hover {\r\n background-color: var(--primary75);\r\n border-color: var(--primary75);\r\n}\r\n\r\n.primary:active {\r\n background-color: var(--primarydark);\r\n border-color: var(--primarydark);\r\n}\r\n\r\n.primary-outline {\r\n background-color: var(--white);\r\n border-color: var(--primary100);\r\n color: var(--primary100);\r\n}\r\n\r\n.primary-outline:hover {\r\n background-color: var(--primary10);\r\n}\r\n\r\n.primary-outline:pressed {\r\n background-color: var(--primary25);\r\n}\r\n\r\n/* ---- secondary ----*/\r\n\r\n.secondary {\r\n background-color: var(--secondary100);\r\n border-color: var(--secondary100);\r\n color: var(--white);\r\n}\r\n\r\n.secondary:hover {\r\n background-color: var(--secondary75);\r\n border-color: var(--secondary75);\r\n}\r\n\r\n.secondary:pressed {\r\n background-color: var(--secondarydark);\r\n border-color: var(--secondarydark);\r\n}\r\n\r\n.secondary-outline {\r\n background-color: var(--white);\r\n border-color: var(--secondary100);\r\n color: var(--secondary100);\r\n}\r\n\r\n.secondary-outline:hover {\r\n background-color: var(--secondary10);\r\n}\r\n\r\n.secondary-outline:pressed {\r\n background-color: var(--secondary25);\r\n}\r\n\r\n\r\n/* ---- success ----*/\r\n.success {\r\n background-color: var(--success100);\r\n border-color: var(--success100);\r\n color: var(--white);\r\n}\r\n\r\n.success:hover {\r\n background-color: var(--success75);\r\n border-color: var(--success75);\r\n}\r\n\r\n.success:pressed {\r\n background-color: var(--successdark);\r\n border-color: var(--successdark);\r\n}\r\n\r\n.success-outline {\r\n background-color: var(--white);\r\n border-color: var(--success100);\r\n color: var(--success100);\r\n}\r\n\r\n.success-outline:hover {\r\n background-color: var(--success10);\r\n}\r\n\r\n.success-outline:pressed {\r\n background-color: var(--success25);\r\n}\r\n\r\n/* ---- deletion ----*/\r\n.deletion {\r\n background-color: var(--deletion100);\r\n border-color: var(--deletion100);\r\n color: var(--white);\r\n}\r\n\r\n.deletion:hover {\r\n background-color: var(--deletion75);\r\n border-color: var(--deletion75);\r\n}\r\n\r\n.deletion:pressed {\r\n background-color: var(--deletiondark);\r\n border-color: var(--deletiondark);\r\n}\r\n\r\n.deletion-outline {\r\n background-color: var(--white);\r\n border-color: var(--deletion100);\r\n color: var(--deletion100);\r\n}\r\n\r\n.deletion-outline:hover {\r\n background-color: var(--deletion10);\r\n}\r\n\r\n.deletion-outline:pressed {\r\n background-color: var(--deletion25);\r\n}\r\n\r\n\r\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';\r\n\r\nconst commonPlus = extra => union(['onBegin', 'onComplete', 'onError'])(extra);\r\n\r\nconst common = () => commonPlus([]);\r\n\r\nconst _events = {\r\n recordApi: {\r\n save: commonPlus([\r\n 'onInvalid',\r\n 'onRecordUpdated',\r\n 'onRecordCreated']),\r\n delete: common(),\r\n getContext: common(),\r\n getNew: common(),\r\n load: common(),\r\n validate: common(),\r\n uploadFile: common(),\r\n downloadFile: common(),\r\n },\r\n indexApi: {\r\n buildIndex: common(),\r\n listItems: common(),\r\n delete: common(),\r\n aggregates: common(),\r\n },\r\n collectionApi: {\r\n getAllowedRecordTypes: common(),\r\n initialise: common(),\r\n delete: common(),\r\n },\r\n authApi: {\r\n authenticate: common(),\r\n authenticateTemporaryAccess: common(),\r\n createTemporaryAccess: common(),\r\n createUser: common(),\r\n enableUser: common(),\r\n disableUser: common(),\r\n loadAccessLevels: common(),\r\n getNewAccessLevel: common(),\r\n getNewUser: common(),\r\n getNewUserAuth: common(),\r\n getUsers: common(),\r\n saveAccessLevels: common(),\r\n isAuthorized: common(),\r\n changeMyPassword: common(),\r\n setPasswordFromTemporaryCode: common(),\r\n scorePassword: common(),\r\n isValidPassword: common(),\r\n validateUser: common(),\r\n validateAccessLevels: common(),\r\n setUserAccessLevels: common(),\r\n },\r\n templateApi: {\r\n saveApplicationHierarchy: common(),\r\n saveActionsAndTriggers: common(),\r\n },\r\n actionsApi: {\r\n execute: common(),\r\n },\r\n};\r\n\r\nconst _eventsList = [];\r\n\r\nconst makeEvent = (area, method, name) => `${area}:${method}:${name}`;\r\n\r\nfor (const areaKey in _events) {\r\n for (const methodKey in _events[areaKey]) {\r\n _events[areaKey][methodKey] = reduce((obj, s) => {\r\n obj[s] = makeEvent(areaKey, methodKey, s);\r\n return obj;\r\n },\r\n {})(_events[areaKey][methodKey]);\r\n }\r\n}\r\n\r\n\r\nfor (const areaKey in _events) {\r\n for (const methodKey in _events[areaKey]) {\r\n for (const name in _events[areaKey][methodKey]) {\r\n _eventsList.push(\r\n _events[areaKey][methodKey][name],\r\n );\r\n }\r\n }\r\n}\r\n\r\n\r\nexport const events = _events;\r\n\r\nexport const eventsList = _eventsList;\r\n\r\nexport default { events: _events, eventsList: _eventsList };\r\n","export class BadRequestError extends Error {\r\n constructor(message) {\r\n super(message);\r\n this.httpStatusCode = 400;\r\n }\r\n}\r\n\r\nexport class UnauthorisedError extends Error {\r\n constructor(message) {\r\n super(message);\r\n this.httpStatusCode = 401;\r\n }\r\n}\r\n\r\nexport class ForbiddenError extends Error {\r\n constructor(message) {\r\n super(message);\r\n this.httpStatusCode = 403;\r\n }\r\n}\r\n\r\nexport class NotFoundError extends Error {\r\n constructor(message) {\r\n super(message);\r\n this.httpStatusCode = 404;\r\n }\r\n}\r\n\r\nexport class ConflictError extends Error {\r\n constructor(message) {\r\n super(message);\r\n this.httpStatusCode = 409;\r\n }\r\n}","import { cloneDeep, isUndefined } from 'lodash/fp';\r\nimport { generate } from 'shortid';\r\nimport { UnauthorisedError } from './errors';\r\n\r\nexport const apiWrapper = async (app, eventNamespace, isAuthorized, eventContext, func, ...params) => {\r\n pushCallStack(app, eventNamespace);\r\n\r\n if (!isAuthorized(app)) {\r\n handleNotAuthorized(app, eventContext, eventNamespace);\r\n return;\r\n }\r\n\r\n const startDate = Date.now();\r\n const elapsed = () => (Date.now() - startDate);\r\n\r\n try {\r\n await app.publish(\r\n eventNamespace.onBegin,\r\n eventContext,\r\n );\r\n\r\n const result = await func(...params);\r\n\r\n await publishComplete(app, eventContext, eventNamespace, elapsed, result);\r\n return result;\r\n } catch (error) {\r\n await publishError(app, eventContext, eventNamespace, elapsed, error);\r\n throw error;\r\n }\r\n};\r\n\r\nexport const apiWrapperSync = (app, eventNamespace, isAuthorized, eventContext, func, ...params) => {\r\n pushCallStack(app, eventNamespace);\r\n\r\n if (!isAuthorized(app)) {\r\n handleNotAuthorized(app, eventContext, eventNamespace);\r\n return;\r\n }\r\n\r\n const startDate = Date.now();\r\n const elapsed = () => (Date.now() - startDate);\r\n\r\n try {\r\n app.publish(\r\n eventNamespace.onBegin,\r\n eventContext,\r\n );\r\n\r\n const result = func(...params);\r\n\r\n publishComplete(app, eventContext, eventNamespace, elapsed, result);\r\n return result;\r\n } catch (error) {\r\n publishError(app, eventContext, eventNamespace, elapsed, error);\r\n throw error;\r\n }\r\n};\r\n\r\nconst handleNotAuthorized = (app, eventContext, eventNamespace) => {\r\n const err = new UnauthorisedError(`Unauthorized: ${eventNamespace}`);\r\n publishError(app, eventContext, eventNamespace, () => 0, err);\r\n throw err;\r\n};\r\n\r\nconst pushCallStack = (app, eventNamespace, seedCallId) => {\r\n const callId = generate();\r\n\r\n const createCallStack = () => ({\r\n seedCallId: !isUndefined(seedCallId)\r\n ? seedCallId\r\n : callId,\r\n threadCallId: callId,\r\n stack: [],\r\n });\r\n\r\n if (isUndefined(app.calls)) {\r\n app.calls = createCallStack();\r\n }\r\n\r\n app.calls.stack.push({\r\n namespace: eventNamespace,\r\n callId,\r\n });\r\n};\r\n\r\nconst popCallStack = (app) => {\r\n app.calls.stack.pop();\r\n if (app.calls.stack.length === 0) {\r\n delete app.calls;\r\n }\r\n};\r\n\r\nconst publishError = async (app, eventContext, eventNamespace, elapsed, err) => {\r\n const ctx = cloneDeep(eventContext);\r\n ctx.error = err;\r\n ctx.elapsed = elapsed();\r\n await app.publish(\r\n eventNamespace.onError,\r\n ctx,\r\n );\r\n popCallStack(app);\r\n};\r\n\r\nconst publishComplete = async (app, eventContext, eventNamespace, elapsed, result) => {\r\n const endcontext = cloneDeep(eventContext);\r\n endcontext.result = result;\r\n endcontext.elapsed = elapsed();\r\n await app.publish(\r\n eventNamespace.onComplete,\r\n endcontext,\r\n );\r\n popCallStack(app);\r\n return result;\r\n};\r\n\r\nexport default apiWrapper;\r\n","import { split } from 'lodash/fp';\r\nimport { $ } from './index';\r\n\r\nconst lockOverlapMilliseconds = 10;\r\n\r\nexport const getLock = async (app, lockFile, timeoutMilliseconds, maxLockRetries, retryCount = 0) => {\r\n try {\r\n const timeout = (await app.getEpochTime())\r\n + timeoutMilliseconds;\r\n\r\n const lock = {\r\n timeout,\r\n key: lockFile,\r\n totalTimeout: timeoutMilliseconds,\r\n };\r\n\r\n await app.datastore.createFile(\r\n lockFile,\r\n getLockFileContent(\r\n lock.totalTimeout,\r\n lock.timeout,\r\n ),\r\n );\r\n\r\n return lock;\r\n } catch (e) {\r\n if (retryCount == maxLockRetries) { return NO_LOCK; }\r\n\r\n const lock = parseLockFileContent(\r\n lockFile,\r\n await app.datastore.loadFile(lockFile),\r\n );\r\n\r\n const currentEpochTime = await app.getEpochTime();\r\n\r\n if (currentEpochTime < lock.timeout) {\r\n return NO_LOCK;\r\n }\r\n\r\n try {\r\n await app.datastore.deleteFile(lockFile);\r\n } catch (_) {\r\n //empty\r\n }\r\n\r\n await sleepForRetry();\r\n\r\n return await getLock(\r\n app, lockFile, timeoutMilliseconds,\r\n maxLockRetries, retryCount + 1,\r\n );\r\n }\r\n};\r\n\r\nexport const getLockFileContent = (totalTimeout, epochTime) => `${totalTimeout}:${epochTime.toString()}`;\r\n\r\nconst parseLockFileContent = (key, content) => $(content, [\r\n split(':'),\r\n parts => ({\r\n totalTimeout: new Number(parts[0]),\r\n timeout: new Number(parts[1]),\r\n key,\r\n }),\r\n]);\r\n\r\nexport const releaseLock = async (app, lock) => {\r\n const currentEpochTime = await app.getEpochTime();\r\n // only release if not timedout\r\n if (currentEpochTime < (lock.timeout - lockOverlapMilliseconds)) {\r\n try {\r\n await app.datastore.deleteFile(lock.key);\r\n } catch (_) {\r\n //empty\r\n }\r\n }\r\n};\r\n\r\nexport const extendLock = async (app, lock) => {\r\n const currentEpochTime = await app.getEpochTime();\r\n // only release if not timedout\r\n if (currentEpochTime < (lock.timeout - lockOverlapMilliseconds)) {\r\n try {\r\n lock.timeout = currentEpochTime + lock.timeoutMilliseconds;\r\n await app.datastore.updateFile(\r\n lock.key,\r\n getLockFileContent(lock.totalTimeout, lock.timeout),\r\n );\r\n return lock;\r\n } catch (_) {\r\n //empty\r\n }\r\n }\r\n return NO_LOCK;\r\n};\r\n\r\nexport const NO_LOCK = 'no lock';\r\nexport const isNolock = id => id === NO_LOCK;\r\n\r\nconst sleepForRetry = () => new Promise(resolve => setTimeout(resolve, lockOverlapMilliseconds));\r\n","import {\r\n isUndefined, isNaN, isNull,\r\n reduce, constant, head, isEmpty,\r\n tail, findIndex, startsWith, join,\r\n dropRight, flow, takeRight, trim,\r\n split, includes, replace, isArray,\r\n isString, isInteger, isDate, toNumber,\r\n} from 'lodash';\r\nimport { some } from 'lodash/fp';\r\nimport { events, eventsList } from './events';\r\nimport { apiWrapper } from './apiWrapper';\r\nimport {\r\n getLock, NO_LOCK,\r\n isNolock\r\n} from './lock';\r\n\r\n// this is the combinator function\r\nexport const $$ = (...funcs) => arg => flow(funcs)(arg);\r\n\r\n// this is the pipe function\r\nexport const $ = (arg, funcs) => $$(...funcs)(arg);\r\n\r\nexport const keySep = '/';\r\nconst trimKeySep = str => trim(str, keySep);\r\nconst splitByKeySep = str => split(str, keySep);\r\nexport const safeKey = key => replace(`${keySep}${trimKeySep(key)}`, `${keySep}${keySep}`, keySep);\r\nexport const joinKey = (...strs) => {\r\n const paramsOrArray = strs.length === 1 & isArray(strs[0])\r\n ? strs[0] : strs;\r\n return safeKey(join(paramsOrArray, keySep));\r\n};\r\nexport const splitKey = $$(trimKeySep, splitByKeySep);\r\nexport const getDirFomKey = $$(splitKey, dropRight, p => joinKey(...p));\r\nexport const getFileFromKey = $$(splitKey, takeRight, head);\r\n\r\nexport const configFolder = `${keySep}.config`;\r\nexport const fieldDefinitions = joinKey(configFolder, 'fields.json');\r\nexport const templateDefinitions = joinKey(configFolder, 'templates.json');\r\nexport const appDefinitionFile = joinKey(configFolder, 'appDefinition.json');\r\nexport const dirIndex = folderPath => joinKey(configFolder, 'dir', ...splitKey(folderPath), 'dir.idx');\r\nexport const getIndexKeyFromFileKey = $$(getDirFomKey, dirIndex);\r\n\r\nexport const ifExists = (val, exists, notExists) => (isUndefined(val)\r\n ? isUndefined(notExists) ? (() => { })() : notExists()\r\n : exists());\r\n\r\nexport const getOrDefault = (val, defaultVal) => ifExists(val, () => val, () => defaultVal);\r\n\r\nexport const not = func => val => !func(val);\r\nexport const isDefined = not(isUndefined);\r\nexport const isNonNull = not(isNull);\r\nexport const isNotNaN = not(isNaN);\r\n\r\nexport const allTrue = (...funcArgs) => val => reduce(funcArgs,\r\n (result, conditionFunc) => (isNull(result) || result == true) && conditionFunc(val),\r\n null);\r\n\r\nexport const anyTrue = (...funcArgs) => val => reduce(funcArgs,\r\n (result, conditionFunc) => result == true || conditionFunc(val),\r\n null);\r\n\r\nexport const insensitiveEquals = (str1, str2) => str1.trim().toLowerCase() === str2.trim().toLowerCase();\r\n\r\nexport const isSomething = allTrue(isDefined, isNonNull, isNotNaN);\r\nexport const isNothing = not(isSomething);\r\nexport const isNothingOrEmpty = v => isNothing(v) || isEmpty(v);\r\nexport const somethingOrGetDefault = getDefaultFunc => val => (isSomething(val) ? val : getDefaultFunc());\r\nexport const somethingOrDefault = (val, defaultVal) => somethingOrGetDefault(constant(defaultVal))(val);\r\n\r\nexport const mapIfSomethingOrDefault = (mapFunc, defaultVal) => val => (isSomething(val) ? mapFunc(val) : defaultVal);\r\n\r\nexport const mapIfSomethingOrBlank = mapFunc => mapIfSomethingOrDefault(mapFunc, '');\r\n\r\nexport const none = predicate => collection => !some(predicate)(collection);\r\n\r\nexport const all = predicate => collection => none(v => !predicate(v))(collection);\r\n\r\nexport const isNotEmpty = ob => !isEmpty(ob);\r\nexport const isAsync = fn => fn.constructor.name === 'AsyncFunction';\r\nexport const isNonEmptyArray = allTrue(isArray, isNotEmpty);\r\nexport const isNonEmptyString = allTrue(isString, isNotEmpty);\r\nexport const tryOr = failFunc => (func, ...args) => {\r\n try {\r\n return func.apply(null, ...args);\r\n } catch (_) {\r\n return failFunc();\r\n }\r\n};\r\n\r\nexport const tryAwaitOr = failFunc => async (func, ...args) => {\r\n try {\r\n return await func.apply(null, ...args);\r\n } catch (_) {\r\n return await failFunc();\r\n }\r\n};\r\n\r\nexport const defineError = (func, errorPrefix) => {\r\n try {\r\n return func();\r\n } catch (err) {\r\n err.message = `${errorPrefix} : ${err.message}`;\r\n throw err;\r\n }\r\n};\r\n\r\nexport const tryOrIgnore = tryOr(() => { });\r\nexport const tryAwaitOrIgnore = tryAwaitOr(async () => { });\r\nexport const causesException = (func) => {\r\n try {\r\n func();\r\n return false;\r\n } catch (e) {\r\n return true;\r\n }\r\n};\r\n\r\nexport const executesWithoutException = func => !causesException(func);\r\n\r\nexport const handleErrorWith = returnValInError => tryOr(constant(returnValInError));\r\n\r\nexport const handleErrorWithUndefined = handleErrorWith(undefined);\r\n\r\nexport const switchCase = (...cases) => (value) => {\r\n const nextCase = () => head(cases)[0](value);\r\n const nextResult = () => head(cases)[1](value);\r\n\r\n if (isEmpty(cases)) return; // undefined\r\n if (nextCase() === true) return nextResult();\r\n return switchCase(...tail(cases))(value);\r\n};\r\n\r\nexport const isValue = val1 => val2 => (val1 === val2);\r\nexport const isOneOf = (...vals) => val => includes(vals, val);\r\nexport const defaultCase = constant(true);\r\nexport const memberMatches = (member, match) => obj => match(obj[member]);\r\n\r\n\r\nexport const StartsWith = searchFor => searchIn => startsWith(searchIn, searchFor);\r\n\r\nexport const contains = val => array => (findIndex(array, v => v === val) > -1);\r\n\r\nexport const getHashCode = (s) => {\r\n let hash = 0; let i; let char; let\r\n l;\r\n if (s.length == 0) return hash;\r\n for (i = 0, l = s.length; i < l; i++) {\r\n char = s.charCodeAt(i);\r\n hash = ((hash << 5) - hash) + char;\r\n hash |= 0; // Convert to 32bit integer\r\n }\r\n\r\n // converting to string, but dont want a \"-\" prefixed\r\n if (hash < 0) { return `n${(hash * -1).toString()}`; }\r\n return hash.toString();\r\n};\r\n\r\n// thanks to https://blog.grossman.io/how-to-write-async-await-without-try-catch-blocks-in-javascript/\r\nexport const awEx = async (promise) => {\r\n try {\r\n const result = await promise;\r\n return [undefined, result];\r\n } catch (error) {\r\n return [error, undefined];\r\n }\r\n};\r\n\r\nexport const isSafeInteger = n => isInteger(n)\r\n && n <= Number.MAX_SAFE_INTEGER\r\n && n >= 0 - Number.MAX_SAFE_INTEGER;\r\n\r\nexport const toDateOrNull = s => (isNull(s) ? null\r\n : isDate(s) ? s : new Date(s));\r\nexport const toBoolOrNull = s => (isNull(s) ? null\r\n : s === 'true' || s === true);\r\nexport const toNumberOrNull = s => (isNull(s) ? null\r\n : toNumber(s));\r\n\r\nexport const isArrayOfString = opts => isArray(opts) && all(isString)(opts);\r\n\r\nexport const pause = async duration => new Promise(res => setTimeout(res, duration));\r\n\r\nexport const retry = async (fn, retries, delay, ...args) => {\r\n try {\r\n return await fn(...args);\r\n } catch (err) {\r\n if (retries > 1) {\r\n return await pause(delay).then(async () => await retry(fn, (retries - 1), delay, ...args));\r\n }\r\n throw err;\r\n }\r\n};\r\n\r\nexport { events } from './events';\r\nexport { apiWrapper, apiWrapperSync } from './apiWrapper';\r\nexport {\r\n getLock, NO_LOCK, releaseLock,\r\n extendLock, isNolock,\r\n} from './lock';\r\n\r\nexport default {\r\n ifExists,\r\n getOrDefault,\r\n isDefined,\r\n isNonNull,\r\n isNotNaN,\r\n allTrue,\r\n isSomething,\r\n mapIfSomethingOrDefault,\r\n mapIfSomethingOrBlank,\r\n configFolder,\r\n fieldDefinitions,\r\n isNothing,\r\n not,\r\n switchCase,\r\n defaultCase,\r\n StartsWith,\r\n contains,\r\n templateDefinitions,\r\n handleErrorWith,\r\n handleErrorWithUndefined,\r\n tryOr,\r\n tryOrIgnore,\r\n tryAwaitOr,\r\n tryAwaitOrIgnore,\r\n dirIndex,\r\n keySep,\r\n $,\r\n $$,\r\n getDirFomKey,\r\n getFileFromKey,\r\n splitKey,\r\n somethingOrDefault,\r\n getIndexKeyFromFileKey,\r\n joinKey,\r\n somethingOrGetDefault,\r\n appDefinitionFile,\r\n isValue,\r\n all,\r\n isOneOf,\r\n memberMatches,\r\n defineError,\r\n anyTrue,\r\n isNonEmptyArray,\r\n causesException,\r\n executesWithoutException,\r\n none,\r\n getHashCode,\r\n awEx,\r\n apiWrapper,\r\n events,\r\n eventsList,\r\n isNothingOrEmpty,\r\n isSafeInteger,\r\n toNumber,\r\n toDate: toDateOrNull,\r\n toBool: toBoolOrNull,\r\n isArrayOfString,\r\n getLock,\r\n NO_LOCK,\r\n isNolock,\r\n insensitiveEquals,\r\n pause,\r\n retry,\r\n};\r\n","import { filter, map } from 'lodash/fp';\r\nimport { $, isSomething } from './index';\r\n\r\nexport const stringNotEmpty = s => isSomething(s) && s.trim().length > 0;\r\n\r\nexport const makerule = (field, error, isValid) => ({ field, error, isValid });\r\n\r\nexport const validationError = (rule, item) => ({ ...rule, item });\r\n\r\nexport const applyRuleSet = ruleSet => itemToValidate => $(ruleSet, [\r\n map(applyRule(itemToValidate)),\r\n filter(isSomething),\r\n]);\r\n\r\nexport const applyRule = itemTovalidate => rule => (rule.isValid(itemTovalidate)\r\n ? null\r\n : validationError(rule, itemTovalidate));\r\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';\r\nimport {\r\n isUndefined, keys, \r\n cloneDeep, isFunction,\r\n} from 'lodash';\r\nimport { defineError } from '../common';\r\n\r\nexport const filterEval = 'FILTER_EVALUATE';\r\nexport const filterCompile = 'FILTER_COMPILE';\r\nexport const mapEval = 'MAP_EVALUATE';\r\nexport const mapCompile = 'MAP_COMPILE';\r\nexport const removeUndeclaredFields = 'REMOVE_UNDECLARED_FIELDS';\r\nexport const addUnMappedFields = 'ADD_UNMAPPED_FIELDS';\r\nexport const addTheKey = 'ADD_KEY';\r\n\r\n\r\nconst getEvaluateResult = () => ({\r\n isError: false,\r\n passedFilter: true,\r\n result: null,\r\n});\r\n\r\nexport const compileFilter = index => compileExpression(index.filter);\r\n\r\nexport const compileMap = index => compileCode(index.map);\r\n\r\nexport const passesFilter = (record, index) => {\r\n const context = { record };\r\n if (!index.filter) return true;\r\n\r\n const compiledFilter = defineError(\r\n () => compileFilter(index),\r\n filterCompile,\r\n );\r\n\r\n return defineError(\r\n () => compiledFilter(context),\r\n filterEval,\r\n );\r\n};\r\n\r\nexport const mapRecord = (record, index) => {\r\n const recordClone = cloneDeep(record);\r\n const context = { record: recordClone };\r\n\r\n const map = index.map ? index.map : 'return {...record};';\r\n\r\n const compiledMap = defineError(\r\n () => compileCode(map),\r\n mapCompile,\r\n );\r\n\r\n const mapped = defineError(\r\n () => compiledMap(context),\r\n mapEval,\r\n );\r\n\r\n const mappedKeys = keys(mapped);\r\n for (let i = 0; i < mappedKeys.length; i++) {\r\n const key = mappedKeys[i];\r\n mapped[key] = isUndefined(mapped[key]) ? null : mapped[key];\r\n if (isFunction(mapped[key])) {\r\n delete mapped[key];\r\n }\r\n }\r\n\r\n mapped.key = record.key;\r\n mapped.sortKey = index.getSortKey\r\n ? compileCode(index.getSortKey)(context)\r\n : record.id;\r\n\r\n return mapped;\r\n};\r\n\r\nexport const evaluate = record => (index) => {\r\n const result = getEvaluateResult();\r\n\r\n try {\r\n result.passedFilter = passesFilter(record, index);\r\n } catch (err) {\r\n result.isError = true;\r\n result.passedFilter = false;\r\n result.result = err.message;\r\n }\r\n\r\n if (!result.passedFilter) return result;\r\n\r\n try {\r\n result.result = mapRecord(record, index);\r\n } catch (err) {\r\n result.isError = true;\r\n result.result = err.message;\r\n }\r\n\r\n return result;\r\n};\r\n\r\nexport default evaluate;\r\n","import {\r\n map, isEmpty, countBy, flatten, includes,\r\n} from 'lodash/fp';\r\nimport { join, keys } from 'lodash';\r\nimport { applyRuleSet, makerule } from '../common/validationCommon';\r\nimport { compileFilter, compileMap } from '../indexing/evaluate';\r\nimport { isNonEmptyString, executesWithoutException, $ } from '../common';\r\nimport { isRecord } from './hierarchy';\r\n\r\nexport const indexTypes = { reference: 'reference', ancestor: 'ancestor' };\r\n\r\nexport const indexRuleSet = [\r\n makerule('map', 'index has no map function',\r\n index => isNonEmptyString(index.map)),\r\n makerule('map', \"index's map function does not compile\",\r\n index => !isNonEmptyString(index.map)\r\n || executesWithoutException(() => compileMap(index))),\r\n makerule('filter', \"index's filter function does not compile\",\r\n index => !isNonEmptyString(index.filter)\r\n || executesWithoutException(() => compileFilter(index))),\r\n makerule('name', 'must declare a name for index',\r\n index => isNonEmptyString(index.name)),\r\n makerule('name', 'there is a duplicate named index on this node',\r\n index => isEmpty(index.name)\r\n || countBy('name')(index.parent().indexes)[index.name] === 1),\r\n makerule('indexType', 'reference index may only exist on a record node',\r\n index => isRecord(index.parent())\r\n || index.indexType !== indexTypes.reference),\r\n makerule('indexType', `index type must be one of: ${join(', ', keys(indexTypes))}`,\r\n index => includes(index.indexType)(keys(indexTypes))),\r\n];\r\n\r\nexport const validateIndex = (index, allReferenceIndexesOnNode) => applyRuleSet(indexRuleSet(allReferenceIndexesOnNode))(index);\r\n\r\nexport const validateAllIndexes = node => $(node.indexes, [\r\n map(i => validateIndex(i, node.indexes)),\r\n flatten,\r\n]);\r\n","import {\r\n find, constant, map, last,\r\n first, split, intersection, take,\r\n union, includes, filter, some,\r\n} from 'lodash/fp';\r\nimport {\r\n $, switchCase, isNothing, isSomething,\r\n defaultCase, splitKey, isNonEmptyString,\r\n joinKey, getHashCode,\r\n} from '../common';\r\nimport { indexTypes } from './indexes';\r\n\r\nexport const getFlattenedHierarchy = (appHierarchy, useCached = true) => {\r\n if (isSomething(appHierarchy.getFlattenedHierarchy) && useCached) { return appHierarchy.getFlattenedHierarchy(); }\r\n\r\n const flattenHierarchy = (currentNode, flattened) => {\r\n flattened.push(currentNode);\r\n if ((!currentNode.children\r\n || currentNode.children.length === 0)\r\n && (!currentNode.indexes\r\n || currentNode.indexes.length === 0)\r\n && (!currentNode.aggregateGroups\r\n || currentNode.aggregateGroups.length === 0)) {\r\n return flattened;\r\n }\r\n\r\n const unionIfAny = l2 => l1 => union(l1)(!l2 ? [] : l2);\r\n\r\n const children = $([], [\r\n unionIfAny(currentNode.children),\r\n unionIfAny(currentNode.indexes),\r\n unionIfAny(currentNode.aggregateGroups),\r\n ]);\r\n\r\n for (const child of children) {\r\n flattenHierarchy(child, flattened);\r\n }\r\n return flattened;\r\n };\r\n\r\n appHierarchy.getFlattenedHierarchy = () => flattenHierarchy(appHierarchy, []);\r\n return appHierarchy.getFlattenedHierarchy();\r\n};\r\n\r\nexport const getLastPartInKey = key => last(splitKey(key));\r\n\r\nexport const getNodesInPath = appHierarchy => key => $(appHierarchy, [\r\n getFlattenedHierarchy,\r\n filter(n => new RegExp(`${n.pathRegx()}`).test(key)),\r\n]);\r\n\r\nexport const getExactNodeForPath = appHierarchy => key => $(appHierarchy, [\r\n getFlattenedHierarchy,\r\n find(n => new RegExp(`${n.pathRegx()}$`).test(key)),\r\n]);\r\n\r\nexport const getNodeForCollectionPath = appHierarchy => collectionKey => $(appHierarchy, [\r\n getFlattenedHierarchy,\r\n find(n => (isCollectionRecord(n)\r\n && new RegExp(`${n.collectionPathRegx()}$`).test(collectionKey))),\r\n]);\r\n\r\nexport const hasMatchingAncestor = ancestorPredicate => decendantNode => switchCase(\r\n\r\n [node => isNothing(node.parent()),\r\n constant(false)],\r\n\r\n [node => ancestorPredicate(node.parent()),\r\n constant(true)],\r\n\r\n [defaultCase,\r\n node => hasMatchingAncestor(ancestorPredicate)(node.parent())],\r\n\r\n)(decendantNode);\r\n\r\nexport const getNode = (appHierarchy, nodeKey) => $(appHierarchy, [\r\n getFlattenedHierarchy,\r\n find(n => n.nodeKey() === nodeKey\r\n || (isCollectionRecord(n)\r\n && n.collectionNodeKey() === nodeKey)),\r\n]);\r\n\r\nexport const getCollectionNode = (appHierarchy, nodeKey) => $(appHierarchy, [\r\n getFlattenedHierarchy,\r\n find(n => (isCollectionRecord(n)\r\n && n.collectionNodeKey() === nodeKey)),\r\n]);\r\n\r\nexport const getNodeByKeyOrNodeKey = (appHierarchy, keyOrNodeKey) => {\r\n const nodeByKey = getExactNodeForPath(appHierarchy)(keyOrNodeKey);\r\n return isNothing(nodeByKey)\r\n ? getNode(appHierarchy, keyOrNodeKey)\r\n : nodeByKey;\r\n};\r\n\r\nexport const getCollectionNodeByKeyOrNodeKey = (appHierarchy, keyOrNodeKey) => {\r\n const nodeByKey = getNodeForCollectionPath(appHierarchy)(keyOrNodeKey);\r\n return isNothing(nodeByKey)\r\n ? getCollectionNode(appHierarchy, keyOrNodeKey)\r\n : nodeByKey;\r\n};\r\n\r\nexport const isNode = (appHierarchy, key) => isSomething(getExactNodeForPath(appHierarchy)(key));\r\n\r\nexport const getActualKeyOfParent = (parentNodeKey, actualChildKey) => $(actualChildKey, [\r\n splitKey,\r\n take(splitKey(parentNodeKey).length),\r\n ks => joinKey(...ks),\r\n]);\r\n\r\nexport const getParentKey = (key) => {\r\n return $(key, [\r\n splitKey,\r\n take(splitKey(key).length - 1),\r\n joinKey,\r\n ]);\r\n};\r\n\r\nexport const isKeyAncestorOf = ancestorKey => decendantNode => hasMatchingAncestor(p => p.nodeKey() === ancestorKey)(decendantNode);\r\n\r\nexport const hasNoMatchingAncestors = parentPredicate => node => !hasMatchingAncestor(parentPredicate)(node);\r\n\r\nexport const findField = (recordNode, fieldName) => find(f => f.name == fieldName)(recordNode.fields);\r\n\r\nexport const isAncestor = decendant => ancestor => isKeyAncestorOf(ancestor.nodeKey())(decendant);\r\n\r\nexport const isDecendant = ancestor => decendant => isAncestor(decendant)(ancestor);\r\n\r\nexport const getRecordNodeId = recordKey => $(recordKey, [\r\n splitKey,\r\n last,\r\n getRecordNodeIdFromId,\r\n]);\r\n\r\nexport const getRecordNodeIdFromId = recordId => $(recordId, [split('-'), first, parseInt]);\r\n\r\nexport const getRecordNodeById = (hierarchy, recordId) => $(hierarchy, [\r\n getFlattenedHierarchy,\r\n find(n => isRecord(n)\r\n && n.nodeId === getRecordNodeIdFromId(recordId)),\r\n]);\r\n\r\nexport const recordNodeIdIsAllowed = indexNode => nodeId => indexNode.allowedRecordNodeIds.length === 0\r\n || includes(nodeId)(indexNode.allowedRecordNodeIds);\r\n\r\nexport const recordNodeIsAllowed = indexNode => recordNode => recordNodeIdIsAllowed(indexNode)(recordNode.nodeId);\r\n\r\nexport const getAllowedRecordNodesForIndex = (appHierarchy, indexNode) => {\r\n const recordNodes = $(appHierarchy, [\r\n getFlattenedHierarchy,\r\n filter(isRecord),\r\n ]);\r\n\r\n if (isGlobalIndex(indexNode)) {\r\n return $(recordNodes, [\r\n filter(recordNodeIsAllowed(indexNode)),\r\n ]);\r\n }\r\n\r\n if (isAncestorIndex(indexNode)) {\r\n return $(recordNodes, [\r\n filter(isDecendant(indexNode.parent())),\r\n filter(recordNodeIsAllowed(indexNode)),\r\n ]);\r\n }\r\n\r\n if (isReferenceIndex(indexNode)) {\r\n return $(recordNodes, [\r\n filter(n => some(fieldReversesReferenceToIndex(indexNode))(n.fields)),\r\n ]);\r\n }\r\n};\r\n\r\nexport const getNodeFromNodeKeyHash = hierarchy => hash => $(hierarchy, [\r\n getFlattenedHierarchy,\r\n find(n => getHashCode(n.nodeKey()) === hash),\r\n]);\r\n\r\nexport const isRecord = node => isSomething(node) && node.type === 'record';\r\nexport const isSingleRecord = node => isRecord(node) && node.isSingle;\r\nexport const isCollectionRecord = node => isRecord(node) && !node.isSingle;\r\nexport const isIndex = node => isSomething(node) && node.type === 'index';\r\nexport const isaggregateGroup = node => isSomething(node) && node.type === 'aggregateGroup';\r\nexport const isShardedIndex = node => isIndex(node) && isNonEmptyString(node.getShardName);\r\nexport const isRoot = node => isSomething(node) && node.isRoot();\r\nexport const isDecendantOfARecord = hasMatchingAncestor(isRecord);\r\nexport const isGlobalIndex = node => isIndex(node) && isRoot(node.parent());\r\nexport const isReferenceIndex = node => isIndex(node) && node.indexType === indexTypes.reference;\r\nexport const isAncestorIndex = node => isIndex(node) && node.indexType === indexTypes.ancestor;\r\n\r\nexport const fieldReversesReferenceToNode = node => field => field.type === 'reference'\r\n && intersection(field.typeOptions.reverseIndexNodeKeys)(map(i => i.nodeKey())(node.indexes))\r\n .length > 0;\r\n\r\nexport const fieldReversesReferenceToIndex = indexNode => field => field.type === 'reference'\r\n && intersection(field.typeOptions.reverseIndexNodeKeys)([indexNode.nodeKey()])\r\n .length > 0;\r\n\r\nexport default {\r\n getLastPartInKey,\r\n getNodesInPath,\r\n getExactNodeForPath,\r\n hasMatchingAncestor,\r\n getNode,\r\n getNodeByKeyOrNodeKey,\r\n isNode,\r\n getActualKeyOfParent,\r\n getParentKey,\r\n isKeyAncestorOf,\r\n hasNoMatchingAncestors,\r\n findField,\r\n isAncestor,\r\n isDecendant,\r\n getRecordNodeId,\r\n getRecordNodeIdFromId,\r\n getRecordNodeById,\r\n recordNodeIdIsAllowed,\r\n recordNodeIsAllowed,\r\n getAllowedRecordNodesForIndex,\r\n getNodeFromNodeKeyHash,\r\n isRecord,\r\n isCollectionRecord,\r\n isIndex,\r\n isaggregateGroup,\r\n isShardedIndex,\r\n isRoot,\r\n isDecendantOfARecord,\r\n isGlobalIndex,\r\n isReferenceIndex,\r\n isAncestorIndex,\r\n fieldReversesReferenceToNode,\r\n fieldReversesReferenceToIndex,\r\n getFlattenedHierarchy,\r\n};\r\n","import { merge, has } from 'lodash';\r\nimport {\r\n constant, isUndefined, \r\n mapValues, cloneDeep,\r\n} from 'lodash/fp';\r\nimport { isNotEmpty } from '../common';\r\n\r\nexport const getSafeFieldParser = (tryParse, defaultValueFunctions) => (field, record) => {\r\n if (has(record, field.name)) {\r\n return getSafeValueParser(tryParse, defaultValueFunctions)(record[field.name]);\r\n }\r\n return defaultValueFunctions[field.getUndefinedValue]();\r\n};\r\n\r\nexport const getSafeValueParser = (tryParse, defaultValueFunctions) => (value) => {\r\n const parsed = tryParse(value);\r\n if (parsed.success) {\r\n return parsed.value;\r\n }\r\n return defaultValueFunctions.default();\r\n};\r\n\r\nexport const getNewValue = (tryParse, defaultValueFunctions) => (field) => {\r\n const getInitialValue = isUndefined(field) || isUndefined(field.getInitialValue)\r\n ? 'default'\r\n : field.getInitialValue;\r\n\r\n return has(defaultValueFunctions, getInitialValue)\r\n ? defaultValueFunctions[getInitialValue]()\r\n : getSafeValueParser(tryParse, defaultValueFunctions)(getInitialValue);\r\n};\r\n\r\nexport const typeFunctions = specificFunctions => merge({\r\n value: constant,\r\n null: constant(null),\r\n}, specificFunctions);\r\n\r\nexport const validateTypeConstraints = validationRules => async (field, record, context) => {\r\n const fieldValue = record[field.name];\r\n const validateRule = async r => (!await r.isValid(fieldValue, field.typeOptions, context)\r\n ? r.getMessage(fieldValue, field.typeOptions)\r\n : '');\r\n\r\n const errors = [];\r\n for (const r of validationRules) {\r\n const err = await validateRule(r);\r\n if (isNotEmpty(err)) errors.push(err);\r\n }\r\n\r\n return errors;\r\n};\r\n\r\nconst getDefaultOptions = mapValues(v => v.defaultValue);\r\n\r\nexport const makerule = (isValid, getMessage) => ({ isValid, getMessage });\r\nexport const parsedFailed = val => ({ success: false, value: val });\r\nexport const parsedSuccess = val => ({ success: true, value: val });\r\nexport const getDefaultExport = (name, tryParse, functions, options, validationRules, sampleValue, stringify) => ({\r\n getNew: getNewValue(tryParse, functions),\r\n safeParseField: getSafeFieldParser(tryParse, functions),\r\n safeParseValue: getSafeValueParser(tryParse, functions),\r\n tryParse,\r\n name,\r\n getDefaultOptions: () => getDefaultOptions(cloneDeep(options)),\r\n optionDefinitions: options,\r\n validateTypeConstraints: validateTypeConstraints(validationRules),\r\n sampleValue,\r\n stringify: val => (val === null || val === undefined\r\n ? '' : stringify(val)),\r\n getDefaultValue: functions.default,\r\n});\r\n","import {\r\n constant, isString,\r\n isNull, includes, isBoolean,\r\n} from 'lodash';\r\nimport {\r\n typeFunctions,\r\n makerule, parsedSuccess, getDefaultExport,\r\n} from './typeHelpers';\r\nimport {\r\n switchCase, defaultCase, toBoolOrNull, toNumberOrNull,\r\n isSafeInteger, isArrayOfString,\r\n} from '../common';\r\n\r\nconst stringFunctions = typeFunctions({\r\n default: constant(null),\r\n});\r\n\r\nconst stringTryParse = switchCase(\r\n [isString, parsedSuccess],\r\n [isNull, parsedSuccess],\r\n [defaultCase, v => parsedSuccess(v.toString())],\r\n);\r\n\r\nconst options = {\r\n maxLength: {\r\n defaultValue: null,\r\n isValid: n => n === null || isSafeInteger(n) && n > 0,\r\n requirementDescription: 'max length must be null (no limit) or a greater than zero integer',\r\n parse: toNumberOrNull,\r\n },\r\n values: {\r\n defaultValue: null,\r\n isValid: v => v === null || (isArrayOfString(v) && v.length > 0 && v.length < 10000),\r\n requirementDescription: \"'values' must be null (no values) or an arry of at least one string\",\r\n parse: s => s,\r\n },\r\n allowDeclaredValuesOnly: {\r\n defaultValue: false,\r\n isValid: isBoolean,\r\n requirementDescription: 'allowDeclaredValuesOnly must be true or false',\r\n parse: toBoolOrNull,\r\n },\r\n};\r\n\r\nconst typeConstraints = [\r\n makerule(async (val, opts) => val === null || opts.maxLength === null || val.length <= opts.maxLength,\r\n (val, opts) => `value exceeds maximum length of ${opts.maxLength}`),\r\n makerule(async (val, opts) => val === null\r\n || opts.allowDeclaredValuesOnly === false\r\n || includes(opts.values, val),\r\n (val) => `\"${val}\" does not exist in the list of allowed values`),\r\n];\r\n\r\nexport default getDefaultExport(\r\n 'string',\r\n stringTryParse,\r\n stringFunctions,\r\n options,\r\n typeConstraints,\r\n 'abcde',\r\n str => str,\r\n);\r\n","import { constant, isBoolean, isNull } from 'lodash';\r\nimport {\r\n typeFunctions,\r\n makerule, parsedFailed, parsedSuccess,\r\n getDefaultExport,\r\n} from './typeHelpers';\r\nimport {\r\n switchCase, defaultCase, isOneOf, toBoolOrNull,\r\n} from '../common';\r\n\r\nconst boolFunctions = typeFunctions({\r\n default: constant(null),\r\n});\r\n\r\nconst boolTryParse = switchCase(\r\n [isBoolean, parsedSuccess],\r\n [isNull, parsedSuccess],\r\n [isOneOf('true', '1', 'yes', 'on'), () => parsedSuccess(true)],\r\n [isOneOf('false', '0', 'no', 'off'), () => parsedSuccess(false)],\r\n [defaultCase, parsedFailed],\r\n);\r\n\r\nconst options = {\r\n allowNulls: {\r\n defaultValue: true,\r\n isValid: isBoolean,\r\n requirementDescription: 'must be a true or false',\r\n parse: toBoolOrNull,\r\n },\r\n};\r\n\r\nconst typeConstraints = [\r\n makerule(async (val, opts) => opts.allowNulls === true || val !== null,\r\n () => 'field cannot be null'),\r\n];\r\n\r\nexport default getDefaultExport(\r\n 'bool', boolTryParse, boolFunctions,\r\n options, typeConstraints, true, JSON.stringify,\r\n);\r\n","import {\r\n constant, isNumber, isString, isNull,\r\n} from 'lodash';\r\nimport {\r\n makerule, typeFunctions,\r\n parsedFailed, parsedSuccess, getDefaultExport,\r\n} from './typeHelpers';\r\nimport {\r\n switchCase, defaultCase, toNumberOrNull,\r\n isSafeInteger,\r\n} from '../common';\r\n\r\nconst numberFunctions = typeFunctions({\r\n default: constant(null),\r\n});\r\n\r\nconst parseStringtoNumberOrNull = (s) => {\r\n const num = Number(s);\r\n return isNaN(num) ? parsedFailed(s) : parsedSuccess(num);\r\n};\r\n\r\nconst numberTryParse = switchCase(\r\n [isNumber, parsedSuccess],\r\n [isString, parseStringtoNumberOrNull],\r\n [isNull, parsedSuccess],\r\n [defaultCase, parsedFailed],\r\n);\r\n\r\nconst options = {\r\n maxValue: {\r\n defaultValue: Number.MAX_SAFE_INTEGER,\r\n isValid: isSafeInteger,\r\n requirementDescription: 'must be a valid integer',\r\n parse: toNumberOrNull,\r\n },\r\n minValue: {\r\n defaultValue: 0 - Number.MAX_SAFE_INTEGER,\r\n isValid: isSafeInteger,\r\n requirementDescription: 'must be a valid integer',\r\n parse: toNumberOrNull,\r\n },\r\n decimalPlaces: {\r\n defaultValue: 0,\r\n isValid: n => isSafeInteger(n) && n >= 0,\r\n requirementDescription: 'must be a positive integer',\r\n parse: toNumberOrNull,\r\n },\r\n};\r\n\r\nconst getDecimalPlaces = (val) => {\r\n const splitDecimal = val.toString().split('.');\r\n if (splitDecimal.length === 1) return 0;\r\n return splitDecimal[1].length;\r\n};\r\n\r\nconst typeConstraints = [\r\n makerule(async (val, opts) => val === null || opts.minValue === null || val >= opts.minValue,\r\n (val, opts) => `value (${val.toString()}) must be greater than or equal to ${opts.minValue}`),\r\n makerule(async (val, opts) => val === null || opts.maxValue === null || val <= opts.maxValue,\r\n (val, opts) => `value (${val.toString()}) must be less than or equal to ${opts.minValue} options`),\r\n makerule(async (val, opts) => val === null || opts.decimalPlaces >= getDecimalPlaces(val),\r\n (val, opts) => `value (${val.toString()}) must have ${opts.decimalPlaces} decimal places or less`),\r\n];\r\n\r\nexport default getDefaultExport(\r\n 'number',\r\n numberTryParse,\r\n numberFunctions,\r\n options,\r\n typeConstraints,\r\n 1,\r\n num => num.toString(),\r\n);\r\n","import {\r\n constant, isDate, isString, isNull,\r\n} from 'lodash';\r\nimport {\r\n makerule, typeFunctions,\r\n parsedFailed, parsedSuccess, getDefaultExport,\r\n} from './typeHelpers';\r\nimport {\r\n switchCase, defaultCase, toDateOrNull,\r\n} from '../common';\r\n\r\nconst dateFunctions = typeFunctions({\r\n default: constant(null),\r\n now: () => new Date(),\r\n});\r\n\r\nconst isValidDate = d => d instanceof Date && !isNaN(d);\r\n\r\nconst parseStringToDate = s => switchCase(\r\n [isValidDate, parsedSuccess],\r\n [defaultCase, parsedFailed],\r\n)(new Date(s));\r\n\r\n\r\nconst dateTryParse = switchCase(\r\n [isDate, parsedSuccess],\r\n [isString, parseStringToDate],\r\n [isNull, parsedSuccess],\r\n [defaultCase, parsedFailed],\r\n);\r\n\r\nconst options = {\r\n maxValue: {\r\n defaultValue: new Date(32503680000000),\r\n isValid: isDate,\r\n requirementDescription: 'must be a valid date',\r\n parse: toDateOrNull,\r\n },\r\n minValue: {\r\n defaultValue: new Date(-8520336000000),\r\n isValid: isDate,\r\n requirementDescription: 'must be a valid date',\r\n parse: toDateOrNull,\r\n },\r\n};\r\n\r\nconst typeConstraints = [\r\n makerule(async (val, opts) => val === null || opts.minValue === null || val >= opts.minValue,\r\n (val, opts) => `value (${val.toString()}) must be greater than or equal to ${opts.minValue}`),\r\n makerule(async (val, opts) => val === null || opts.maxValue === null || val <= opts.maxValue,\r\n (val, opts) => `value (${val.toString()}) must be less than or equal to ${opts.minValue} options`),\r\n];\r\n\r\nexport default getDefaultExport(\r\n 'datetime',\r\n dateTryParse,\r\n dateFunctions,\r\n options,\r\n typeConstraints,\r\n new Date(1984, 4, 1),\r\n date => JSON.stringify(date).replace(new RegExp('\"', 'g'), ''),\r\n);\r\n","import { constant, isArray } from 'lodash';\r\nimport { map } from 'lodash/fp';\r\nimport {\r\n typeFunctions, makerule,\r\n parsedFailed, getDefaultExport, parsedSuccess,\r\n} from './typeHelpers';\r\nimport {\r\n switchCase, defaultCase, toNumberOrNull,\r\n $$, isSafeInteger,\r\n} from '../common';\r\n\r\nconst arrayFunctions = () => typeFunctions({\r\n default: constant([]),\r\n});\r\n\r\nconst mapToParsedArrary = type => $$(\r\n map(i => type.safeParseValue(i)),\r\n parsedSuccess,\r\n);\r\n\r\nconst arrayTryParse = type => switchCase(\r\n [isArray, mapToParsedArrary(type)],\r\n [defaultCase, parsedFailed],\r\n);\r\n\r\nconst typeName = type => `array<${type}>`;\r\n\r\n\r\nconst options = {\r\n maxLength: {\r\n defaultValue: 10000,\r\n isValid: isSafeInteger,\r\n requirementDescription: 'must be a positive integer',\r\n parse: toNumberOrNull,\r\n },\r\n minLength: {\r\n defaultValue: 0,\r\n isValid: n => isSafeInteger(n) && n >= 0,\r\n requirementDescription: 'must be a positive integer',\r\n parse: toNumberOrNull,\r\n },\r\n};\r\n\r\nconst typeConstraints = [\r\n makerule(async (val, opts) => val === null || val.length >= opts.minLength,\r\n (val, opts) => `must choose ${opts.minLength} or more options`),\r\n makerule(async (val, opts) => val === null || val.length <= opts.maxLength,\r\n (val, opts) => `cannot choose more than ${opts.maxLength} options`),\r\n];\r\n\r\nexport default type => getDefaultExport(\r\n typeName(type.name),\r\n arrayTryParse(type),\r\n arrayFunctions(type),\r\n options,\r\n typeConstraints,\r\n [type.sampleValue],\r\n JSON.stringify,\r\n);\r\n","import {\r\n isString, isObjectLike,\r\n isNull, has, isEmpty,\r\n} from 'lodash';\r\nimport {\r\n typeFunctions, makerule,\r\n parsedSuccess, getDefaultExport,\r\n parsedFailed,\r\n} from './typeHelpers';\r\nimport {\r\n switchCase, defaultCase,\r\n isNonEmptyString, isArrayOfString,\r\n} from '../common';\r\n\r\nconst referenceNothing = () => ({ key: '' });\r\n\r\nconst referenceFunctions = typeFunctions({\r\n default: referenceNothing,\r\n});\r\n\r\nconst hasStringValue = (ob, path) => has(ob, path)\r\n && isString(ob[path]);\r\n\r\nconst isObjectWithKey = v => isObjectLike(v)\r\n && hasStringValue(v, 'key');\r\n\r\nconst tryParseFromString = s => {\r\n\r\n try {\r\n const asObj = JSON.parse(s);\r\n if(isObjectWithKey) {\r\n return parsedSuccess(asObj);\r\n }\r\n }\r\n catch(_) {\r\n // EMPTY\r\n }\r\n\r\n return parsedFailed(s);\r\n}\r\n\r\nconst referenceTryParse = v => switchCase(\r\n [isObjectWithKey, parsedSuccess],\r\n [isString, tryParseFromString],\r\n [isNull, () => parsedSuccess(referenceNothing())],\r\n [defaultCase, parsedFailed],\r\n)(v);\r\n\r\nconst options = {\r\n indexNodeKey: {\r\n defaultValue: null,\r\n isValid: isNonEmptyString,\r\n requirementDescription: 'must be a non-empty string',\r\n parse: s => s,\r\n },\r\n displayValue: {\r\n defaultValue: '',\r\n isValid: isNonEmptyString,\r\n requirementDescription: 'must be a non-empty string',\r\n parse: s => s,\r\n },\r\n reverseIndexNodeKeys: {\r\n defaultValue: null,\r\n isValid: v => isArrayOfString(v) && v.length > 0,\r\n requirementDescription: 'must be a non-empty array of strings',\r\n parse: s => s,\r\n },\r\n};\r\n\r\nconst isEmptyString = s => isString(s) && isEmpty(s);\r\n\r\nconst ensureReferenceExists = async (val, opts, context) => isEmptyString(val.key)\r\n || await context.referenceExists(opts, val.key);\r\n\r\nconst typeConstraints = [\r\n makerule(\r\n ensureReferenceExists,\r\n (val, opts) => `\"${val[opts.displayValue]}\" does not exist in options list (key: ${val.key})`,\r\n ),\r\n];\r\n\r\nexport default getDefaultExport(\r\n 'reference',\r\n referenceTryParse,\r\n referenceFunctions,\r\n options,\r\n typeConstraints,\r\n { key: 'key', value: 'value' },\r\n JSON.stringify,\r\n);\r\n","import {\r\n last, has, isString, intersection,\r\n isNull, isNumber,\r\n} from 'lodash/fp';\r\nimport {\r\n typeFunctions, parsedFailed,\r\n parsedSuccess, getDefaultExport,\r\n} from './typeHelpers';\r\nimport {\r\n switchCase, defaultCase, none,\r\n $, splitKey,\r\n} from '../common';\r\n\r\nconst illegalCharacters = '*?\\\\/:<>|\\0\\b\\f\\v';\r\n\r\nexport const isLegalFilename = (filePath) => {\r\n const fn = fileName(filePath);\r\n return fn.length <= 255\r\n && intersection(fn.split(''))(illegalCharacters.split('')).length === 0\r\n && none(f => f === '..')(splitKey(filePath));\r\n};\r\n\r\nconst fileNothing = () => ({ relativePath: '', size: 0 });\r\n\r\nconst fileFunctions = typeFunctions({\r\n default: fileNothing,\r\n});\r\n\r\nconst fileTryParse = v => switchCase(\r\n [isValidFile, parsedSuccess],\r\n [isNull, () => parsedSuccess(fileNothing())],\r\n [defaultCase, parsedFailed],\r\n)(v);\r\n\r\nconst fileName = filePath => $(filePath, [\r\n splitKey,\r\n last,\r\n]);\r\n\r\nconst isValidFile = f => !isNull(f)\r\n && has('relativePath')(f) && has('size')(f)\r\n && isNumber(f.size)\r\n && isString(f.relativePath)\r\n && isLegalFilename(f.relativePath);\r\n\r\nconst options = {};\r\n\r\nconst typeConstraints = [];\r\n\r\nexport default getDefaultExport(\r\n 'file',\r\n fileTryParse,\r\n fileFunctions,\r\n options,\r\n typeConstraints,\r\n { relativePath: 'some_file.jpg', size: 1000 },\r\n JSON.stringify,\r\n);\r\n","import {\r\n assign, keys, merge, has,\r\n} from 'lodash';\r\nimport {\r\n map, isString, isNumber,\r\n isBoolean, isDate,\r\n isObject, isArray,\r\n} from 'lodash/fp';\r\nimport { $ } from '../common';\r\nimport { parsedSuccess } from './typeHelpers';\r\nimport string from './string';\r\nimport bool from './bool';\r\nimport number from './number';\r\nimport datetime from './datetime';\r\nimport array from './array';\r\nimport reference from './reference';\r\nimport file from './file';\r\nimport { BadRequestError } from '../common/errors';\r\n\r\nconst allTypes = () => {\r\n const basicTypes = {\r\n string, number, datetime, bool, reference, file,\r\n };\r\n\r\n const arrays = $(basicTypes, [\r\n keys,\r\n map((k) => {\r\n const kvType = {};\r\n const concreteArray = array(basicTypes[k]);\r\n kvType[concreteArray.name] = concreteArray;\r\n return kvType;\r\n }),\r\n types => assign({}, ...types),\r\n ]);\r\n\r\n return merge({}, basicTypes, arrays);\r\n};\r\n\r\n\r\nexport const all = allTypes();\r\n\r\nexport const getType = (typeName) => {\r\n if (!has(all, typeName)) throw new BadRequestError(`Do not recognise type ${typeName}`);\r\n return all[typeName];\r\n};\r\n\r\nexport const getSampleFieldValue = field => getType(field.type).sampleValue;\r\n\r\nexport const getNewFieldValue = field => getType(field.type).getNew(field);\r\n\r\nexport const safeParseField = (field, record) => getType(field.type).safeParseField(field, record);\r\n\r\nexport const validateFieldParse = (field, record) => (has(record, field.name)\r\n ? getType(field.type).tryParse(record[field.name])\r\n : parsedSuccess(undefined)); // fields may be undefined by default\r\n\r\nexport const getDefaultOptions = type => getType(type).getDefaultOptions();\r\n\r\nexport const validateTypeConstraints = async (field, record, context) => await getType(field.type).validateTypeConstraints(field, record, context);\r\n\r\nexport const detectType = (value) => {\r\n if (isString(value)) return string;\r\n if (isBoolean(value)) return bool;\r\n if (isNumber(value)) return number;\r\n if (isDate(value)) return datetime;\r\n if (isArray(value)) return array(detectType(value[0]));\r\n if (isObject(value)\r\n && has(value, 'key')\r\n && has(value, 'value')) return reference;\r\n if (isObject(value)\r\n && has(value, 'relativePath')\r\n && has(value, 'size')) return file;\r\n\r\n throw new BadRequestError(`cannot determine type: ${JSON.stringify(value)}`);\r\n};\r\n","import { clone, find, split } from 'lodash/fp';\r\nimport { joinKey, $ } from '../common';\r\n// 5 minutes\r\nexport const tempCodeExpiryLength = 5 * 60 * 1000;\r\n\r\nexport const AUTH_FOLDER = '/.auth';\r\nexport const USERS_LIST_FILE = joinKey(AUTH_FOLDER, 'users.json');\r\nexport const userAuthFile = username => joinKey(AUTH_FOLDER, `auth_${username}.json`);\r\nexport const USERS_LOCK_FILE = joinKey(AUTH_FOLDER, 'users_lock');\r\nexport const ACCESS_LEVELS_FILE = joinKey(AUTH_FOLDER, 'access_levels.json');\r\nexport const ACCESS_LEVELS_LOCK_FILE = joinKey(AUTH_FOLDER, 'access_levels_lock');\r\n\r\nexport const permissionTypes = {\r\n CREATE_RECORD: 'create record',\r\n UPDATE_RECORD: 'update record',\r\n READ_RECORD: 'read record',\r\n DELETE_RECORD: 'delete record',\r\n READ_INDEX: 'read index',\r\n MANAGE_INDEX: 'manage index',\r\n MANAGE_COLLECTION: 'manage collection',\r\n WRITE_TEMPLATES: 'write templates',\r\n CREATE_USER: 'create user',\r\n SET_PASSWORD: 'set password',\r\n CREATE_TEMPORARY_ACCESS: 'create temporary access',\r\n ENABLE_DISABLE_USER: 'enable or disable user',\r\n WRITE_ACCESS_LEVELS: 'write access levels',\r\n LIST_USERS: 'list users',\r\n LIST_ACCESS_LEVELS: 'list access levels',\r\n EXECUTE_ACTION: 'execute action',\r\n SET_USER_ACCESS_LEVELS: 'set user access levels',\r\n};\r\n\r\nexport const getUserByName = (users, name) => $(users, [\r\n find(u => u.name.toLowerCase() === name.toLowerCase()),\r\n]);\r\n\r\nexport const stripUserOfSensitiveStuff = (user) => {\r\n const stripped = clone(user);\r\n delete stripped.tempCode;\r\n return stripped;\r\n};\r\n\r\nexport const parseTemporaryCode = fullCode => $(fullCode, [\r\n split(':'),\r\n parts => ({\r\n id: parts[1],\r\n code: parts[2],\r\n }),\r\n]);\r\n","import { values, includes, some } from 'lodash/fp';\r\nimport { permissionTypes } from './authCommon';\r\nimport {\r\n $, isNothing, apiWrapperSync, events,\r\n} from '../common';\r\nimport { getNodeByKeyOrNodeKey, isNode } from '../templateApi/hierarchy';\r\nimport { alwaysAuthorized } from './permissions';\r\n\r\nexport const isAuthorized = app => (permissionType, resourceKey) => apiWrapperSync(\r\n app,\r\n events.authApi.isAuthorized,\r\n alwaysAuthorized,\r\n { resourceKey, permissionType },\r\n _isAuthorized, app, permissionType, resourceKey,\r\n);\r\n\r\nexport const _isAuthorized = (app, permissionType, resourceKey) => {\r\n if (!app.user) {\r\n return false;\r\n }\r\n\r\n const validType = $(permissionTypes, [\r\n values,\r\n includes(permissionType),\r\n ]);\r\n\r\n if (!validType) {\r\n return false;\r\n }\r\n\r\n const permMatchesResource = (userperm) => {\r\n const nodeKey = isNothing(resourceKey)\r\n ? null\r\n : isNode(app.hierarchy, resourceKey)\r\n ? getNodeByKeyOrNodeKey(\r\n app.hierarchy, resourceKey,\r\n ).nodeKey()\r\n : resourceKey;\r\n\r\n return (userperm.type === permissionType)\r\n && (\r\n isNothing(resourceKey)\r\n || nodeKey === userperm.nodeKey\r\n );\r\n };\r\n\r\n return $(app.user.permissions, [\r\n some(permMatchesResource),\r\n ]);\r\n};\r\n","import { permissionTypes } from './authCommon';\r\nimport { isAuthorized } from './isAuthorized';\r\n\r\nexport const temporaryAccessPermissions = () => ([{ type: permissionTypes.SET_PASSWORD }]);\r\n\r\nconst nodePermission = type => ({\r\n add: (nodeKey, accessLevel) => accessLevel.permissions.push({ type, nodeKey }),\r\n isAuthorized: resourceKey => app => isAuthorized(app)(type, resourceKey),\r\n isNode: true,\r\n get: nodeKey => ({ type, nodeKey }),\r\n});\r\n\r\nconst staticPermission = type => ({\r\n add: accessLevel => accessLevel.permissions.push({ type }),\r\n isAuthorized: app => isAuthorized(app)(type),\r\n isNode: false,\r\n get: () => ({ type }),\r\n});\r\n\r\nconst createRecord = nodePermission(permissionTypes.CREATE_RECORD);\r\n\r\nconst updateRecord = nodePermission(permissionTypes.UPDATE_RECORD);\r\n\r\nconst deleteRecord = nodePermission(permissionTypes.DELETE_RECORD);\r\n\r\nconst readRecord = nodePermission(permissionTypes.READ_RECORD);\r\n\r\nconst writeTemplates = staticPermission(permissionTypes.WRITE_TEMPLATES);\r\n\r\nconst createUser = staticPermission(permissionTypes.CREATE_USER);\r\n\r\nconst setPassword = staticPermission(permissionTypes.SET_PASSWORD);\r\n\r\nconst readIndex = nodePermission(permissionTypes.READ_INDEX);\r\n\r\nconst manageIndex = staticPermission(permissionTypes.MANAGE_INDEX);\r\n\r\nconst manageCollection = staticPermission(permissionTypes.MANAGE_COLLECTION);\r\n\r\nconst createTemporaryAccess = staticPermission(permissionTypes.CREATE_TEMPORARY_ACCESS);\r\n\r\nconst enableDisableUser = staticPermission(permissionTypes.ENABLE_DISABLE_USER);\r\n\r\nconst writeAccessLevels = staticPermission(permissionTypes.WRITE_ACCESS_LEVELS);\r\n\r\nconst listUsers = staticPermission(permissionTypes.LIST_USERS);\r\n\r\nconst listAccessLevels = staticPermission(permissionTypes.LIST_ACCESS_LEVELS);\r\n\r\nconst setUserAccessLevels = staticPermission(permissionTypes.SET_USER_ACCESS_LEVELS);\r\n\r\nconst executeAction = nodePermission(permissionTypes.EXECUTE_ACTION);\r\n\r\nexport const alwaysAuthorized = () => true;\r\n\r\nexport const permission = {\r\n createRecord,\r\n updateRecord,\r\n deleteRecord,\r\n readRecord,\r\n writeTemplates,\r\n createUser,\r\n setPassword,\r\n readIndex,\r\n createTemporaryAccess,\r\n enableDisableUser,\r\n writeAccessLevels,\r\n listUsers,\r\n listAccessLevels,\r\n manageIndex,\r\n manageCollection,\r\n executeAction,\r\n setUserAccessLevels,\r\n};\r\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","\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 {\r\n joinKey, keySep, getHashCode,\r\n} from '../common';\r\nimport { getLastPartInKey } from '../templateApi/hierarchy';\r\n\r\nexport const TRANSACTIONS_FOLDER = `${keySep}.transactions`;\r\nexport const LOCK_FILENAME = 'lock';\r\nexport const LOCK_FILE_KEY = joinKey(\r\n TRANSACTIONS_FOLDER, LOCK_FILENAME,\r\n);\r\nexport const idSep = '$';\r\n\r\nconst isOfType = typ => trans => trans.transactionType === typ;\r\n\r\nexport const CREATE_RECORD_TRANSACTION = 'create';\r\nexport const UPDATE_RECORD_TRANSACTION = 'update';\r\nexport const DELETE_RECORD_TRANSACTION = 'delete';\r\nexport const BUILD_INDEX_TRANSACTION = 'build';\r\n\r\nexport const isUpdate = isOfType(UPDATE_RECORD_TRANSACTION);\r\nexport const isDelete = isOfType(DELETE_RECORD_TRANSACTION);\r\nexport const isCreate = isOfType(CREATE_RECORD_TRANSACTION);\r\nexport const isBuildIndex = isOfType(BUILD_INDEX_TRANSACTION);\r\n\r\nexport const keyToFolderName = nodeKey => getHashCode(nodeKey);\r\n\r\nexport const getTransactionId = (recordId, transactionType, uniqueId) => \r\n `${recordId}${idSep}${transactionType}${idSep}${uniqueId}`;\r\n\r\nexport const buildIndexFolder = '.BUILD-';\r\nexport const nodeKeyHashFromBuildFolder = folder => folder.replace(buildIndexFolder, '');\r\n\r\nexport const isBuildIndexFolder = key => getLastPartInKey(key).startsWith(buildIndexFolder);\r\n\r\nexport const IndexNodeKeyFolder = indexNodeKey => joinKey(\r\n TRANSACTIONS_FOLDER,\r\n buildIndexFolder + keyToFolderName(indexNodeKey),\r\n);\r\n\r\nexport const IndexNodeKeyBatchFolder = (indexNodeKey, count) => \r\n joinKey(IndexNodeKeyFolder(indexNodeKey), Math.floor(count / BUILDINDEX_BATCH_COUNT).toString());\r\n\r\nexport const IndexShardKeyFolder = (indexNodeKey, indexShardKey) => \r\n joinKey(IndexNodeKeyFolder(indexNodeKey), indexShardKey);\r\n\r\nexport const BUILDINDEX_BATCH_COUNT = 1000;\r\nexport const timeoutMilliseconds = 30 * 1000; // 30 secs\r\nexport const maxLockRetries = 1;\r\n","import { each, constant, find } from 'lodash';\r\nimport { map, max } from 'lodash/fp';\r\nimport {\r\n switchCase, defaultCase, joinKey,\r\n $, isNothing, isSomething,\r\n} from '../common';\r\nimport {\r\n isIndex, isRoot, isSingleRecord, isCollectionRecord,\r\n isRecord, isaggregateGroup,\r\n getFlattenedHierarchy,\r\n} from './hierarchy';\r\nimport { all } from '../types';\r\nimport { BadRequestError } from '../common/errors';\r\n\r\nexport const createNodeErrors = {\r\n indexCannotBeParent: 'Index template cannot be a parent',\r\n allNonRootNodesMustHaveParent: 'Only the root node may have no parent',\r\n indexParentMustBeRecordOrRoot: 'An index may only have a record or root as a parent',\r\n aggregateParentMustBeAnIndex: 'aggregateGroup parent must be an index',\r\n};\r\n\r\nconst pathRegxMaker = node => () => node.nodeKey().replace(/{id}/g, '[a-zA-Z0-9_-]+');\r\n\r\nconst nodeKeyMaker = node => () => switchCase(\r\n\r\n [n => isRecord(n) && !isSingleRecord(n),\r\n n => joinKey(\r\n node.parent().nodeKey(),\r\n node.collectionName,\r\n `${n.nodeId}-{id}`,\r\n )],\r\n\r\n [isRoot,\r\n constant('/')],\r\n\r\n [defaultCase,\r\n n => joinKey(node.parent().nodeKey(), n.name)],\r\n\r\n)(node);\r\n\r\n\r\nconst validate = parent => (node) => {\r\n if (isIndex(node)\r\n && isSomething(parent)\r\n && !isRoot(parent)\r\n && !isRecord(parent)) {\r\n throw new BadRequestError(createNodeErrors.indexParentMustBeRecordOrRoot);\r\n }\r\n\r\n if (isaggregateGroup(node)\r\n && isSomething(parent)\r\n && !isIndex(parent)) {\r\n throw new BadRequestError(createNodeErrors.aggregateParentMustBeAnIndex);\r\n }\r\n\r\n if (isNothing(parent) && !isRoot(node)) { throw new BadRequestError(createNodeErrors.allNonRootNodesMustHaveParent); }\r\n\r\n return node;\r\n};\r\n\r\nconst construct = parent => (node) => {\r\n node.nodeKey = nodeKeyMaker(node);\r\n node.pathRegx = pathRegxMaker(node);\r\n node.parent = constant(parent);\r\n node.isRoot = () => isNothing(parent)\r\n && node.name === 'root'\r\n && node.type === 'root';\r\n if (isCollectionRecord(node)) {\r\n node.collectionNodeKey = () => joinKey(\r\n parent.nodeKey(), node.collectionName,\r\n );\r\n node.collectionPathRegx = () => joinKey(\r\n parent.pathRegx(), node.collectionName,\r\n );\r\n }\r\n return node;\r\n};\r\n\r\nconst addToParent = (obj) => {\r\n const parent = obj.parent();\r\n if (isSomething(parent)) {\r\n if (isIndex(obj))\r\n // Q: why are indexes not children ?\r\n // A: because they cannot have children of their own.\r\n { parent.indexes.push(obj); } else if (isaggregateGroup(obj)) { parent.aggregateGroups.push(obj); } else { parent.children.push(obj); }\r\n\r\n if (isRecord(obj)) {\r\n const defaultIndex = find(\r\n parent.indexes,\r\n i => i.name === `${parent.name}_index`,\r\n );\r\n if (defaultIndex) {\r\n defaultIndex.allowedRecordNodeIds.push(obj.nodeId);\r\n }\r\n }\r\n }\r\n return obj;\r\n};\r\n\r\nexport const constructNode = (parent, obj) => $(obj, [\r\n construct(parent),\r\n validate(parent),\r\n addToParent,\r\n]);\r\n\r\nconst getNodeId = (parentNode) => {\r\n // this case is handled better elsewhere\r\n if (!parentNode) return null;\r\n const findRoot = n => (isRoot(n) ? n : findRoot(n.parent()));\r\n const root = findRoot(parentNode);\r\n\r\n return ($(root, [\r\n getFlattenedHierarchy,\r\n map(n => n.nodeId),\r\n max]) + 1);\r\n};\r\n\r\nexport const constructHierarchy = (node, parent) => {\r\n construct(parent)(node);\r\n if (node.indexes) {\r\n each(node.indexes,\r\n child => constructHierarchy(child, node));\r\n }\r\n if (node.aggregateGroups) {\r\n each(node.aggregateGroups,\r\n child => constructHierarchy(child, node));\r\n }\r\n if (node.children && node.children.length > 0) {\r\n each(node.children,\r\n child => constructHierarchy(child, node));\r\n }\r\n if (node.fields) {\r\n each(node.fields,\r\n f => each(f.typeOptions, (val, key) => {\r\n const def = all[f.type].optionDefinitions[key];\r\n if (!def) {\r\n // unknown typeOption\r\n delete f.typeOptions[key];\r\n } else {\r\n f.typeOptions[key] = def.parse(val);\r\n }\r\n }));\r\n }\r\n return node;\r\n};\r\n\r\n\r\nexport const getNewRootLevel = () => construct()({\r\n name: 'root',\r\n type: 'root',\r\n children: [],\r\n pathMaps: [],\r\n indexes: [],\r\n nodeId: 0,\r\n});\r\n\r\nconst _getNewRecordTemplate = (parent, name, createDefaultIndex, isSingle) => {\r\n const node = constructNode(parent, {\r\n name,\r\n type: 'record',\r\n fields: [],\r\n children: [],\r\n validationRules: [],\r\n nodeId: getNodeId(parent),\r\n indexes: [],\r\n allidsShardFactor: isRecord(parent) ? 1 : 64,\r\n collectionName: '',\r\n isSingle,\r\n });\r\n\r\n if (createDefaultIndex) {\r\n const defaultIndex = getNewIndexTemplate(parent);\r\n defaultIndex.name = `${name}_index`;\r\n defaultIndex.allowedRecordNodeIds.push(node.nodeId);\r\n }\r\n\r\n return node;\r\n};\r\n\r\nexport const getNewRecordTemplate = (parent, name = '', createDefaultIndex = true) => _getNewRecordTemplate(parent, name, createDefaultIndex, false);\r\n\r\nexport const getNewSingleRecordTemplate = parent => _getNewRecordTemplate(parent, '', false, true);\r\n\r\nexport const getNewIndexTemplate = (parent, type = 'ancestor') => constructNode(parent, {\r\n name: '',\r\n type: 'index',\r\n map: 'return {...record};',\r\n filter: '',\r\n indexType: type,\r\n getShardName: '',\r\n getSortKey: 'record.id',\r\n aggregateGroups: [],\r\n allowedRecordNodeIds: [],\r\n nodeId: getNodeId(parent),\r\n});\r\n\r\nexport const getNewAggregateGroupTemplate = index => constructNode(index, {\r\n name: '',\r\n type: 'aggregateGroup',\r\n groupBy: '',\r\n aggregates: [],\r\n condition: '',\r\n nodeId: getNodeId(index),\r\n});\r\n\r\nexport const getNewAggregateTemplate = (set) => {\r\n const aggregatedValue = {\r\n name: '',\r\n aggregatedValue: '',\r\n };\r\n set.aggregates.push(aggregatedValue);\r\n return aggregatedValue;\r\n};\r\n\r\nexport default {\r\n getNewRootLevel,\r\n getNewRecordTemplate,\r\n getNewIndexTemplate,\r\n createNodeErrors,\r\n constructHierarchy,\r\n getNewAggregateGroupTemplate,\r\n getNewAggregateTemplate,\r\n};\r\n","import {\r\n some, map, filter, keys, includes,\r\n countBy, flatten,\r\n} from 'lodash/fp';\r\nimport {\r\n isSomething, $,\r\n isNonEmptyString,\r\n isNothingOrEmpty,\r\n isNothing,\r\n} from '../common';\r\nimport { all, getDefaultOptions } from '../types';\r\nimport { applyRuleSet, makerule } from '../common/validationCommon';\r\nimport { BadRequestError } from '../common/errors';\r\n\r\nexport const fieldErrors = {\r\n AddFieldValidationFailed: 'Add field validation: ',\r\n};\r\n\r\nexport const allowedTypes = () => keys(all);\r\n\r\nexport const getNewField = type => ({\r\n name: '', // how field is referenced internally\r\n type,\r\n typeOptions: getDefaultOptions(type),\r\n label: '', // how field is displayed\r\n getInitialValue: 'default', // function that gets value when initially created\r\n getUndefinedValue: 'default', // function that gets value when field undefined on record\r\n});\r\n\r\nconst fieldRules = allFields => [\r\n makerule('name', 'field name is not set',\r\n f => isNonEmptyString(f.name)),\r\n makerule('type', 'field type is not set',\r\n f => isNonEmptyString(f.type)),\r\n makerule('label', 'field label is not set',\r\n f => isNonEmptyString(f.label)),\r\n makerule('getInitialValue', 'getInitialValue function is not set',\r\n f => isNonEmptyString(f.getInitialValue)),\r\n makerule('getUndefinedValue', 'getUndefinedValue function is not set',\r\n f => isNonEmptyString(f.getUndefinedValue)),\r\n makerule('name', 'field name is duplicated',\r\n f => isNothingOrEmpty(f.name)\r\n || countBy('name')(allFields)[f.name] === 1),\r\n makerule('type', 'type is unknown',\r\n f => isNothingOrEmpty(f.type)\r\n || some(t => f.type === t)(allowedTypes())),\r\n];\r\n\r\nconst typeOptionsRules = (field) => {\r\n const type = all[field.type];\r\n if (isNothing(type)) return [];\r\n\r\n const def = optName => type.optionDefinitions[optName];\r\n\r\n return $(field.typeOptions, [\r\n keys,\r\n filter(o => isSomething(def(o))\r\n && isSomething(def(o).isValid)),\r\n map(o => makerule(\r\n `typeOptions.${o}`,\r\n `${def(o).requirementDescription}`,\r\n field => def(o).isValid(field.typeOptions[o]),\r\n )),\r\n ]);\r\n};\r\n\r\nexport const validateField = allFields => (field) => {\r\n const everySingleField = includes(field)(allFields) ? allFields : [...allFields, field];\r\n return applyRuleSet([...fieldRules(everySingleField), ...typeOptionsRules(field)])(field);\r\n};\r\n\r\nexport const validateAllFields = recordNode => $(recordNode.fields, [\r\n map(validateField(recordNode.fields)),\r\n flatten,\r\n]);\r\n\r\nexport const addField = (recordTemplate, field) => {\r\n if (isNothingOrEmpty(field.label)) {\r\n field.label = field.name;\r\n }\r\n const validationMessages = validateField([...recordTemplate.fields, field])(field);\r\n if (validationMessages.length > 0) {\r\n const errors = map(m => m.error)(validationMessages);\r\n throw new BadRequestError(`${fieldErrors.AddFieldValidationFailed} ${errors.join(', ')}`);\r\n }\r\n recordTemplate.fields.push(field);\r\n};\r\n","import { isNumber, isBoolean, defaultCase } from 'lodash/fp';\r\nimport { switchCase } from '../common';\r\n\r\nexport const getNewRecordValidationRule = (invalidFields,\r\n messageWhenInvalid,\r\n expressionWhenValid) => ({\r\n invalidFields, messageWhenInvalid, expressionWhenValid,\r\n});\r\n\r\nconst getStaticValue = switchCase(\r\n [isNumber, v => v.toString()],\r\n [isBoolean, v => v.toString()],\r\n [defaultCase, v => `'${v}'`],\r\n);\r\n\r\nexport const commonRecordValidationRules = ({\r\n\r\n fieldNotEmpty: fieldName => getNewRecordValidationRule(\r\n [fieldName],\r\n `${fieldName} is empty`,\r\n `!_.isEmpty(record['${fieldName}'])`,\r\n ),\r\n\r\n fieldBetween: (fieldName, min, max) => getNewRecordValidationRule(\r\n [fieldName],\r\n `${fieldName} must be between ${min.toString()} and ${max.toString()}`,\r\n `record['${fieldName}'] >= ${getStaticValue(min)} && record['${fieldName}'] <= ${getStaticValue(max)} `,\r\n ),\r\n\r\n fieldGreaterThan: (fieldName, min, max) => getNewRecordValidationRule(\r\n [fieldName],\r\n `${fieldName} must be greater than ${min.toString()} and ${max.toString()}`,\r\n `record['${fieldName}'] >= ${getStaticValue(min)} `,\r\n ),\r\n});\r\n\r\nexport const addRecordValidationRule = recordNode => rule => recordNode.validationRules.push(rule);\r\n","\r\nexport const createTrigger = () => ({\r\n actionName: '',\r\n eventName: '',\r\n // function, has access to event context,\r\n // returns object that is used as parameter to action\r\n // only used if triggered by event\r\n optionsCreator: '',\r\n // action runs if true,\r\n // has access to event context\r\n condition: '',\r\n});\r\n\r\nexport const createAction = () => ({\r\n name: '',\r\n behaviourSource: '',\r\n // name of function in actionSource\r\n behaviourName: '',\r\n // parameter passed into behaviour.\r\n // any other parms passed at runtime e.g.\r\n // by trigger, or manually, will be merged into this\r\n initialOptions: {},\r\n});\r\n","import { flatten, map } from 'lodash/fp';\r\nimport { isEmpty } from 'lodash';\r\nimport { compileCode } from '@nx-js/compiler-util';\r\nimport {\r\n isNonEmptyString, \r\n executesWithoutException, $, \r\n} from '../common';\r\nimport { applyRuleSet, makerule } from '../common/validationCommon';\r\n\r\nconst aggregateRules = [\r\n makerule('name', 'choose a name for the aggregate',\r\n a => isNonEmptyString(a.name)),\r\n makerule('aggregatedValue', 'aggregatedValue does not compile',\r\n a => isEmpty(a.aggregatedValue)\r\n || executesWithoutException(\r\n () => compileCode(a.aggregatedValue),\r\n )),\r\n];\r\n\r\nexport const validateAggregate = aggregate => applyRuleSet(aggregateRules)(aggregate);\r\n\r\nexport const validateAllAggregates = all => $(all, [\r\n map(validateAggregate),\r\n flatten,\r\n]);\r\n","import {\r\n filter, union, constant,\r\n map, flatten, every, uniqBy,\r\n some, includes, isEmpty,\r\n} from 'lodash/fp';\r\nimport { has } from 'lodash';\r\nimport { compileExpression, compileCode } from '@nx-js/compiler-util';\r\nimport {\r\n $, isSomething, switchCase,\r\n anyTrue, isNonEmptyArray, executesWithoutException,\r\n isNonEmptyString, defaultCase,\r\n} from '../common';\r\nimport {\r\n isRecord, isRoot, isaggregateGroup,\r\n isIndex, getFlattenedHierarchy,\r\n} from './hierarchy';\r\nimport { eventsList } from '../common/events';\r\nimport { validateAllFields } from './fields';\r\nimport {\r\n applyRuleSet, makerule, stringNotEmpty,\r\n validationError,\r\n} from '../common/validationCommon';\r\nimport { indexRuleSet } from './indexes';\r\nimport { validateAllAggregates } from './validateAggregate';\r\n\r\nexport const ruleSet = (...sets) => constant(flatten([...sets]));\r\n\r\nconst commonRules = [\r\n makerule('name', 'node name is not set',\r\n node => stringNotEmpty(node.name)),\r\n makerule('type', 'node type not recognised',\r\n anyTrue(isRecord, isRoot, isIndex, isaggregateGroup)),\r\n];\r\n\r\nconst recordRules = [\r\n makerule('fields', 'no fields have been added to the record',\r\n node => isNonEmptyArray(node.fields)),\r\n makerule('validationRules', \"validation rule is missing a 'messageWhenValid' member\",\r\n node => every(r => has(r, 'messageWhenInvalid'))(node.validationRules)),\r\n makerule('validationRules', \"validation rule is missing a 'expressionWhenValid' member\",\r\n node => every(r => has(r, 'expressionWhenValid'))(node.validationRules)),\r\n];\r\n\r\n\r\nconst aggregateGroupRules = [\r\n makerule('condition', 'condition does not compile',\r\n a => isEmpty(a.condition)\r\n || executesWithoutException(\r\n () => compileExpression(a.condition),\r\n )),\r\n];\r\n\r\nconst getRuleSet = node => switchCase(\r\n\r\n [isRecord, ruleSet(\r\n commonRules,\r\n recordRules,\r\n )],\r\n\r\n [isIndex, ruleSet(\r\n commonRules,\r\n indexRuleSet,\r\n )],\r\n\r\n [isaggregateGroup, ruleSet(\r\n commonRules,\r\n aggregateGroupRules,\r\n )],\r\n\r\n [defaultCase, ruleSet(commonRules, [])],\r\n)(node);\r\n\r\nexport const validateNode = node => applyRuleSet(getRuleSet(node))(node);\r\n\r\nexport const validateAll = (appHierarchy) => {\r\n const flattened = getFlattenedHierarchy(\r\n appHierarchy,\r\n );\r\n\r\n const duplicateNameRule = makerule(\r\n 'name', 'node names must be unique under shared parent',\r\n n => filter(f => f.parent() === n.parent()\r\n && f.name === n.name)(flattened).length === 1,\r\n );\r\n\r\n const duplicateNodeKeyErrors = $(flattened, [\r\n map(n => applyRuleSet([duplicateNameRule])(n)),\r\n filter(isSomething),\r\n flatten,\r\n ]);\r\n\r\n const fieldErrors = $(flattened, [\r\n filter(isRecord),\r\n map(validateAllFields),\r\n flatten,\r\n ]);\r\n\r\n const aggregateErrors = $(flattened, [\r\n filter(isaggregateGroup),\r\n map(s => validateAllAggregates(\r\n s.aggregates,\r\n )),\r\n flatten,\r\n ]);\r\n\r\n return $(flattened, [\r\n map(validateNode),\r\n flatten,\r\n union(duplicateNodeKeyErrors),\r\n union(fieldErrors),\r\n union(aggregateErrors),\r\n ]);\r\n};\r\n\r\nconst actionRules = [\r\n makerule('name', 'action must have a name',\r\n a => isNonEmptyString(a.name)),\r\n makerule('behaviourName', 'must supply a behaviour name to the action',\r\n a => isNonEmptyString(a.behaviourName)),\r\n makerule('behaviourSource', 'must supply a behaviour source for the action',\r\n a => isNonEmptyString(a.behaviourSource)),\r\n];\r\n\r\nconst duplicateActionRule = makerule('', 'action name must be unique', () => {});\r\n\r\nconst validateAction = action => applyRuleSet(actionRules)(action);\r\n\r\n\r\nexport const validateActions = (allActions) => {\r\n const duplicateActions = $(allActions, [\r\n filter(a => filter(a2 => a2.name === a.name)(allActions).length > 1),\r\n map(a => validationError(duplicateActionRule, a)),\r\n ]);\r\n\r\n const errors = $(allActions, [\r\n map(validateAction),\r\n flatten,\r\n union(duplicateActions),\r\n uniqBy('name'),\r\n ]);\r\n\r\n return errors;\r\n};\r\n\r\nconst triggerRules = actions => ([\r\n makerule('actionName', 'must specify an action',\r\n t => isNonEmptyString(t.actionName)),\r\n makerule('eventName', 'must specify and event',\r\n t => isNonEmptyString(t.eventName)),\r\n makerule('actionName', 'specified action not supplied',\r\n t => !t.actionName\r\n || some(a => a.name === t.actionName)(actions)),\r\n makerule('eventName', 'invalid Event Name',\r\n t => !t.eventName\r\n || includes(t.eventName)(eventsList)),\r\n makerule('optionsCreator', 'Options Creator does not compile - check your expression',\r\n (t) => {\r\n if (!t.optionsCreator) return true;\r\n try {\r\n compileCode(t.optionsCreator);\r\n return true;\r\n } catch (_) { return false; }\r\n }),\r\n makerule('condition', 'Trigger condition does not compile - check your expression',\r\n (t) => {\r\n if (!t.condition) return true;\r\n try {\r\n compileExpression(t.condition);\r\n return true;\r\n } catch (_) { return false; }\r\n }),\r\n]);\r\n\r\nexport const validateTrigger = (trigger, allActions) => {\r\n const errors = applyRuleSet(triggerRules(allActions))(trigger);\r\n\r\n return errors;\r\n};\r\n\r\nexport const validateTriggers = (triggers, allActions) => $(triggers, [\r\n map(t => validateTrigger(t, allActions)),\r\n flatten,\r\n]);\r\n","import { appDefinitionFile } from '../common';\r\nimport { constructHierarchy } from './createNodes';\r\n\r\nexport const getApplicationDefinition = datastore => async () => {\r\n const exists = await datastore.exists(appDefinitionFile);\r\n\r\n if (!exists) throw new Error('Application definition does not exist');\r\n\r\n const appDefinition = await datastore.loadJson(appDefinitionFile);\r\n appDefinition.hierarchy = constructHierarchy(\r\n appDefinition.hierarchy,\r\n );\r\n return appDefinition;\r\n};\r\n","import { join } from 'lodash';\r\nimport { permission } from '../authApi/permissions';\r\nimport { appDefinitionFile } from '../common';\r\nimport { validateAll } from './validate';\r\nimport { apiWrapper } from '../common/apiWrapper';\r\nimport { events } from '../common/events';\r\n\r\nexport const saveApplicationHierarchy = app => async hierarchy => apiWrapper(\r\n app,\r\n events.templateApi.saveApplicationHierarchy,\r\n permission.writeTemplates.isAuthorized,\r\n { hierarchy },\r\n _saveApplicationHierarchy, app.datastore, hierarchy,\r\n);\r\n\r\n\r\nexport const _saveApplicationHierarchy = async (datastore, hierarchy) => {\r\n const validationErrors = await validateAll(hierarchy);\r\n if (validationErrors.length > 0) {\r\n throw new Error(`Hierarchy is invalid: ${join(\r\n validationErrors.map(e => `${e.item.nodeKey ? e.item.nodeKey() : ''} : ${e.error}`),\r\n ',',\r\n )}`);\r\n }\r\n\r\n if (await datastore.exists(appDefinitionFile)) {\r\n const appDefinition = await datastore.loadJson(appDefinitionFile);\r\n appDefinition.hierarchy = hierarchy;\r\n await datastore.updateJson(appDefinitionFile, appDefinition);\r\n } else {\r\n await datastore.createFolder('/.config');\r\n const appDefinition = { actions: [], triggers: [], hierarchy };\r\n await datastore.createJson(appDefinitionFile, appDefinition);\r\n }\r\n};\r\n","import { join } from 'lodash';\r\nimport { map } from 'lodash/fp';\r\nimport { appDefinitionFile } from '../common';\r\nimport { validateTriggers, validateActions } from './validate';\r\nimport { apiWrapper } from '../common/apiWrapper';\r\nimport { events } from '../common/events';\r\nimport { permission } from '../authApi/permissions';\r\nimport { BadRequestError } from '../common/errors';\r\n\r\nexport const saveActionsAndTriggers = app => async (actions, triggers) => apiWrapper(\r\n app,\r\n events.templateApi.saveActionsAndTriggers,\r\n permission.writeTemplates.isAuthorized,\r\n { actions, triggers },\r\n _saveActionsAndTriggers, app.datastore, actions, triggers,\r\n);\r\n\r\nexport const _saveActionsAndTriggers = async (datastore, actions, triggers) => {\r\n if (await datastore.exists(appDefinitionFile)) {\r\n const appDefinition = await datastore.loadJson(appDefinitionFile);\r\n appDefinition.actions = actions;\r\n appDefinition.triggers = triggers;\r\n\r\n const actionValidErrs = map(e => e.error)(validateActions(actions));\r\n\r\n if (actionValidErrs.length > 0) {\r\n throw new BadRequestError(`Actions are invalid: ${join(actionValidErrs, ', ')}`);\r\n }\r\n\r\n const triggerValidErrs = map(e => e.error)(validateTriggers(triggers, actions));\r\n\r\n if (triggerValidErrs.length > 0) {\r\n throw new BadRequestError(`Triggers are invalid: ${join(triggerValidErrs, ', ')}`);\r\n }\r\n\r\n await datastore.updateJson(appDefinitionFile, appDefinition);\r\n } else {\r\n throw new BadRequestError('Cannot save actions: Application definition does not exist');\r\n }\r\n};\r\n","\r\nexport const getBehaviourSources = async (datastore) => {\r\n await datastore.loadFile('/.config/behaviourSources.js');\r\n};\r\n","import {\r\n getNewRootLevel,\r\n getNewRecordTemplate, getNewIndexTemplate,\r\n createNodeErrors, constructHierarchy,\r\n getNewAggregateGroupTemplate, getNewSingleRecordTemplate,\r\n getNewAggregateTemplate, constructNode,\r\n}\r\n from './createNodes';\r\nimport {\r\n getNewField, validateField,\r\n addField, fieldErrors,\r\n} from './fields';\r\nimport {\r\n getNewRecordValidationRule, commonRecordValidationRules,\r\n addRecordValidationRule,\r\n} from './recordValidationRules';\r\nimport { createAction, createTrigger } from './createActions';\r\nimport {\r\n validateTriggers, validateTrigger, validateNode,\r\n validateActions, validateAll,\r\n} from './validate';\r\nimport { getApplicationDefinition } from './getApplicationDefinition';\r\nimport { saveApplicationHierarchy } from './saveApplicationHierarchy';\r\nimport { saveActionsAndTriggers } from './saveActionsAndTriggers';\r\nimport { all } from '../types';\r\nimport { getBehaviourSources } from \"./getBehaviourSources\";\r\n\r\nconst api = app => ({\r\n\r\n getApplicationDefinition: getApplicationDefinition(app.datastore),\r\n saveApplicationHierarchy: saveApplicationHierarchy(app),\r\n saveActionsAndTriggers: saveActionsAndTriggers(app),\r\n getBehaviourSources: () => getBehaviourSources(app.datastore),\r\n getNewRootLevel,\r\n constructNode,\r\n getNewIndexTemplate,\r\n getNewRecordTemplate,\r\n getNewField,\r\n validateField,\r\n addField,\r\n fieldErrors,\r\n getNewRecordValidationRule,\r\n commonRecordValidationRules,\r\n addRecordValidationRule,\r\n createAction,\r\n createTrigger,\r\n validateActions,\r\n validateTrigger,\r\n getNewAggregateGroupTemplate,\r\n getNewAggregateTemplate,\r\n constructHierarchy,\r\n getNewSingleRecordTemplate,\r\n allTypes: all,\r\n validateNode,\r\n validateAll,\r\n validateTriggers,\r\n});\r\n\r\n\r\nexport const getTemplateApi = app => api(app);\r\n\r\nexport const errors = createNodeErrors;\r\n\r\nexport default getTemplateApi;\r\n","import { map } from 'lodash/fp';\r\nimport {\r\n USERS_LIST_FILE,\r\n stripUserOfSensitiveStuff,\r\n} from './authCommon';\r\nimport { $, apiWrapper, events } from '../common';\r\nimport { permission } from './permissions';\r\n\r\nexport const getUsers = app => async () => apiWrapper(\r\n app,\r\n events.authApi.getUsers,\r\n permission.listUsers.isAuthorized,\r\n {},\r\n _getUsers, app,\r\n);\r\n\r\nexport const _getUsers = async app => $(await app.datastore.loadJson(USERS_LIST_FILE), [\r\n map(stripUserOfSensitiveStuff),\r\n]);\r\n","import { ACCESS_LEVELS_FILE } from './authCommon';\r\nimport { apiWrapper, events } from '../common';\r\nimport { permission } from './permissions';\r\n\r\nexport const loadAccessLevels = app => async () => apiWrapper(\r\n app,\r\n events.authApi.loadAccessLevels,\r\n permission.listAccessLevels.isAuthorized,\r\n {},\r\n _loadAccessLevels, app,\r\n);\r\n\r\nexport const _loadAccessLevels = async app => await app.datastore.loadJson(ACCESS_LEVELS_FILE);\r\n","import {\r\n find, filter, some,\r\n map, flatten,\r\n} from 'lodash/fp';\r\nimport { generate } from 'shortid';\r\nimport { _getUsers } from './getUsers';\r\nimport {\r\n getUserByName, userAuthFile,\r\n parseTemporaryCode,\r\n} from './authCommon';\r\nimport { _loadAccessLevels } from './loadAccessLevels';\r\nimport {\r\n isNothingOrEmpty, $, apiWrapper, events,\r\n} from '../common';\r\nimport { alwaysAuthorized } from './permissions';\r\n\r\nconst dummyHash = '$argon2i$v=19$m=4096,t=3,p=1$UZRo409UYBGjHJS3CV6Uxw$rU84qUqPeORFzKYmYY0ceBLDaPO+JWSH4PfNiKXfIKk';\r\n\r\nexport const authenticate = app => async (username, password) => apiWrapper(\r\n app,\r\n events.authApi.authenticate,\r\n alwaysAuthorized,\r\n { username, password },\r\n _authenticate, app, username, password,\r\n);\r\n\r\nexport const _authenticate = async (app, username, password) => {\r\n if (isNothingOrEmpty(username) || isNothingOrEmpty(password)) { return null; }\r\n\r\n const allUsers = await _getUsers(app);\r\n let user = getUserByName(\r\n allUsers,\r\n username,\r\n );\r\n\r\n const notAUser = 'not-a-user';\r\n // continue with non-user - so time to verify remains consistent\r\n // with verification of a valid user\r\n if (!user || !user.enabled) { user = notAUser; }\r\n\r\n let userAuth;\r\n try {\r\n userAuth = await app.datastore.loadJson(\r\n userAuthFile(username),\r\n );\r\n } catch (_) {\r\n userAuth = { accessLevels: [], passwordHash: dummyHash };\r\n }\r\n\r\n const permissions = await buildUserPermissions(app, user.accessLevels);\r\n\r\n const verified = await app.crypto.verify(\r\n userAuth.passwordHash,\r\n password,\r\n );\r\n\r\n if (user === notAUser) { return null; }\r\n\r\n return verified\r\n ? {\r\n ...user, permissions, temp: false, isUser: true,\r\n }\r\n : null;\r\n};\r\n\r\nexport const authenticateTemporaryAccess = app => async (tempAccessCode) => {\r\n if (isNothingOrEmpty(tempAccessCode)) { return null; }\r\n\r\n const temp = parseTemporaryCode(tempAccessCode);\r\n let user = $(await _getUsers(app), [\r\n find(u => u.temporaryAccessId === temp.id),\r\n ]);\r\n\r\n const notAUser = 'not-a-user';\r\n if (!user || !user.enabled) { user = notAUser; }\r\n\r\n let userAuth;\r\n try {\r\n userAuth = await app.datastore.loadJson(\r\n userAuthFile(user.name),\r\n );\r\n } catch (e) {\r\n userAuth = {\r\n temporaryAccessHash: dummyHash,\r\n temporaryAccessExpiryEpoch: (await app.getEpochTime() + 10000),\r\n };\r\n }\r\n\r\n if (userAuth.temporaryAccessExpiryEpoch < await app.getEpochTime()) { user = notAUser; }\r\n\r\n const tempCode = !temp.code ? generate() : temp.code;\r\n const verified = await app.crypto.verify(\r\n userAuth.temporaryAccessHash,\r\n tempCode,\r\n );\r\n\r\n if (user === notAUser) { return null; }\r\n\r\n return verified\r\n ? {\r\n ...user,\r\n permissions: [],\r\n temp: true,\r\n isUser: true,\r\n }\r\n : null;\r\n};\r\n\r\nexport const buildUserPermissions = async (app, userAccessLevels) => {\r\n const allAccessLevels = await _loadAccessLevels(app);\r\n\r\n return $(allAccessLevels.levels, [\r\n filter(l => some(ua => l.name === ua)(userAccessLevels)),\r\n map(l => l.permissions),\r\n flatten,\r\n ]);\r\n};\r\n","import { generate } from 'shortid';\r\nimport {\r\n tempCodeExpiryLength, USERS_LOCK_FILE,\r\n USERS_LIST_FILE, userAuthFile,\r\n getUserByName,\r\n} from './authCommon';\r\nimport {\r\n getLock, isNolock,\r\n releaseLock,\r\n} from '../common/lock';\r\nimport { apiWrapper, events } from '../common';\r\nimport { alwaysAuthorized } from './permissions';\r\n\r\nexport const createTemporaryAccess = app => async userName => apiWrapper(\r\n app,\r\n events.authApi.createTemporaryAccess,\r\n alwaysAuthorized,\r\n { userName },\r\n _createTemporaryAccess, app, userName,\r\n);\r\n\r\nexport const _createTemporaryAccess = async (app, userName) => {\r\n const tempCode = await getTemporaryCode(app);\r\n\r\n const lock = await getLock(\r\n app, USERS_LOCK_FILE, 1000, 2,\r\n );\r\n\r\n if (isNolock(lock)) { throw new Error('Unable to create temporary access, could not get lock - try again'); }\r\n\r\n try {\r\n const users = await app.datastore.loadJson(USERS_LIST_FILE);\r\n\r\n const user = getUserByName(users, userName);\r\n user.temporaryAccessId = tempCode.temporaryAccessId;\r\n\r\n await app.datastore.updateJson(\r\n USERS_LIST_FILE,\r\n users,\r\n );\r\n } finally {\r\n await releaseLock(app, lock);\r\n }\r\n\r\n const userAuth = await app.datastore.loadJson(\r\n userAuthFile(userName),\r\n );\r\n userAuth.temporaryAccessHash = tempCode.temporaryAccessHash;\r\n\r\n userAuth.temporaryAccessExpiryEpoch = tempCode.temporaryAccessExpiryEpoch;\r\n\r\n await app.datastore.updateJson(\r\n userAuthFile(userName),\r\n userAuth,\r\n );\r\n\r\n return tempCode.tempCode;\r\n};\r\n\r\nexport const getTemporaryCode = async (app) => {\r\n const tempCode = generate()\r\n + generate()\r\n + generate()\r\n + generate();\r\n\r\n const tempId = generate();\r\n\r\n return {\r\n temporaryAccessHash: await app.crypto.hash(\r\n tempCode,\r\n ),\r\n temporaryAccessExpiryEpoch:\r\n (await app.getEpochTime()) + tempCodeExpiryLength,\r\n tempCode: `tmp:${tempId}:${tempCode}`,\r\n temporaryAccessId: tempId,\r\n };\r\n};\r\n\r\nexport const looksLikeTemporaryCode = code => code.startsWith('tmp:');\r\n","import {\r\n map, uniqWith,\r\n flatten, filter,\r\n} from 'lodash/fp';\r\nimport { applyRuleSet, makerule } from '../common/validationCommon';\r\nimport {\r\n $, insensitiveEquals, apiWrapper, events,\r\n isNonEmptyString, all,\r\n} from '../common';\r\nimport { alwaysAuthorized } from './permissions';\r\n\r\nconst userRules = allUsers => [\r\n makerule('name', 'username must be set',\r\n u => isNonEmptyString(u.name)),\r\n makerule('accessLevels', 'user must have at least one access level',\r\n u => u.accessLevels.length > 0),\r\n makerule('name', 'username must be unique',\r\n u => filter(u2 => insensitiveEquals(u2.name, u.name))(allUsers).length === 1),\r\n makerule('accessLevels', 'access levels must only contain stings',\r\n u => all(isNonEmptyString)(u.accessLevels)),\r\n];\r\n\r\nexport const validateUser = () => (allusers, user) => applyRuleSet(userRules(allusers))(user);\r\n\r\nexport const validateUsers = app => allUsers => apiWrapper(\r\n app,\r\n events.authApi.validateUsers,\r\n alwaysAuthorized,\r\n { allUsers },\r\n _validateUsers, app, allUsers,\r\n);\r\n\r\nexport const _validateUsers = (app, allUsers) => $(allUsers, [\r\n map(l => validateUser(app)(allUsers, l)),\r\n flatten,\r\n uniqWith((x, y) => x.field === y.field\r\n && x.item === y.item\r\n && x.error === y.error),\r\n]);\r\n","import { apiWrapperSync, events } from '../common';\r\nimport { permission } from './permissions';\r\n\r\nexport const getNewUser = app => () => apiWrapperSync(\r\n app,\r\n events.authApi.getNewUser,\r\n permission.createUser.isAuthorized,\r\n {},\r\n _getNewUser, app,\r\n);\r\n\r\nexport const _getNewUser = () => ({\r\n name: '',\r\n accessLevels: [],\r\n enabled: true,\r\n temporaryAccessId: '',\r\n});\r\n\r\nexport const getNewUserAuth = app => () => apiWrapperSync(\r\n app,\r\n events.authApi.getNewUserAuth,\r\n permission.createUser.isAuthorized,\r\n {},\r\n _getNewUserAuth, app,\r\n);\r\n\r\nexport const _getNewUserAuth = () => ({\r\n passwordHash: '',\r\n temporaryAccessHash: '',\r\n temporaryAccessExpiryEpoch: 0,\r\n});\r\n","import { find } from 'lodash/fp';\r\nimport { userAuthFile, parseTemporaryCode } from './authCommon';\r\nimport {\r\n isSomething, $, apiWrapper, apiWrapperSync, events,\r\n} from '../common';\r\nimport { _getUsers } from './getUsers';\r\nimport { alwaysAuthorized } from './permissions';\r\n\r\nexport const isValidPassword = app => password => apiWrapperSync(\r\n app,\r\n events.authApi.isValidPassword,\r\n alwaysAuthorized,\r\n { password },\r\n _isValidPassword, app, password,\r\n);\r\n\r\nexport const _isValidPassword = (app, password) => scorePassword(password).score > 30;\r\n\r\nexport const changeMyPassword = app => async (currentPw, newpassword) => apiWrapper(\r\n app,\r\n events.authApi.changeMyPassword,\r\n alwaysAuthorized,\r\n { currentPw, newpassword },\r\n _changeMyPassword, app, currentPw, newpassword,\r\n);\r\n\r\nexport const _changeMyPassword = async (app, currentPw, newpassword) => {\r\n const existingAuth = await app.datastore.loadJson(\r\n userAuthFile(app.user.name),\r\n );\r\n\r\n if (isSomething(existingAuth.passwordHash)) {\r\n const verified = await app.crypto.verify(\r\n existingAuth.passwordHash,\r\n currentPw,\r\n );\r\n\r\n if (verified) {\r\n await await doSet(\r\n app, existingAuth,\r\n app.user.name, newpassword,\r\n );\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n};\r\n\r\nexport const setPasswordFromTemporaryCode = app => async (tempCode, newpassword) => apiWrapper(\r\n app,\r\n events.authApi.setPasswordFromTemporaryCode,\r\n alwaysAuthorized,\r\n { tempCode, newpassword },\r\n _setPasswordFromTemporaryCode, app, tempCode, newpassword,\r\n);\r\n\r\n\r\nexport const _setPasswordFromTemporaryCode = async (app, tempCode, newpassword) => {\r\n const currentTime = await app.getEpochTime();\r\n\r\n const temp = parseTemporaryCode(tempCode);\r\n\r\n const user = $(await _getUsers(app), [\r\n find(u => u.temporaryAccessId === temp.id),\r\n ]);\r\n\r\n if (!user) { return false; }\r\n\r\n const existingAuth = await app.datastore.loadJson(\r\n userAuthFile(user.name),\r\n );\r\n\r\n if (isSomething(existingAuth.temporaryAccessHash)\r\n && existingAuth.temporaryAccessExpiryEpoch > currentTime) {\r\n const verified = await app.crypto.verify(\r\n existingAuth.temporaryAccessHash,\r\n temp.code,\r\n );\r\n\r\n if (verified) {\r\n await doSet(\r\n app, existingAuth,\r\n user.name, newpassword,\r\n );\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n};\r\n\r\nconst doSet = async (app, auth, username, newpassword) => {\r\n auth.temporaryAccessHash = '';\r\n auth.temporaryAccessExpiryEpoch = 0;\r\n auth.passwordHash = await app.crypto.hash(\r\n newpassword,\r\n );\r\n await app.datastore.updateJson(\r\n userAuthFile(username),\r\n auth,\r\n );\r\n};\r\n\r\nexport const scorePassword = app => password => apiWrapperSync(\r\n app,\r\n events.authApi.scorePassword,\r\n alwaysAuthorized,\r\n { password },\r\n _scorePassword, password,\r\n);\r\n\r\nexport const _scorePassword = (password) => {\r\n // from https://stackoverflow.com/questions/948172/password-strength-meter\r\n // thank you https://stackoverflow.com/users/46617/tm-lv\r\n\r\n let score = 0;\r\n if (!password) { return score; }\r\n\r\n // award every unique letter until 5 repetitions\r\n const letters = new Object();\r\n for (let i = 0; i < password.length; i++) {\r\n letters[password[i]] = (letters[password[i]] || 0) + 1;\r\n score += 5.0 / letters[password[i]];\r\n }\r\n\r\n // bonus points for mixing it up\r\n const variations = {\r\n digits: /\\d/.test(password),\r\n lower: /[a-z]/.test(password),\r\n upper: /[A-Z]/.test(password),\r\n nonWords: /\\W/.test(password),\r\n };\r\n\r\n let variationCount = 0;\r\n for (const check in variations) {\r\n variationCount += (variations[check] == true) ? 1 : 0;\r\n }\r\n score += (variationCount - 1) * 10;\r\n\r\n const strengthText = score > 80\r\n ? 'strong'\r\n : score > 60\r\n ? 'good'\r\n : score >= 30\r\n ? 'weak'\r\n : 'very weak';\r\n\r\n return {\r\n score: parseInt(score),\r\n strengthText,\r\n };\r\n};\r\n","import { join, some } from 'lodash/fp';\r\nimport { validateUser } from './validateUser';\r\nimport { getNewUserAuth } from './getNewUser';\r\nimport {\r\n getLock, isNolock, releaseLock, apiWrapper, events,\r\n insensitiveEquals, isNonEmptyString,\r\n} from '../common';\r\nimport {\r\n USERS_LOCK_FILE, stripUserOfSensitiveStuff,\r\n USERS_LIST_FILE, userAuthFile,\r\n} from './authCommon';\r\nimport { getTemporaryCode } from './createTemporaryAccess';\r\nimport { isValidPassword } from './setPassword';\r\nimport { permission } from './permissions';\r\nimport { BadRequestError } from '../common/errors';\r\n\r\nexport const createUser = app => async (user, password = null) => apiWrapper(\r\n app,\r\n events.authApi.createUser,\r\n permission.createUser.isAuthorized,\r\n { user, password },\r\n _createUser, app, user, password,\r\n);\r\n\r\nexport const _createUser = async (app, user, password = null) => {\r\n const lock = await getLock(\r\n app, USERS_LOCK_FILE, 1000, 2,\r\n );\r\n\r\n if (isNolock(lock)) { throw new Error('Unable to create user, could not get lock - try again'); }\r\n\r\n const users = await app.datastore.loadJson(USERS_LIST_FILE);\r\n\r\n const userErrors = validateUser(app)([...users, user], user);\r\n if (userErrors.length > 0) { throw new BadRequestError(`User is invalid. ${join('; ')(userErrors)}`); }\r\n\r\n const { auth, tempCode, temporaryAccessId } = await getAccess(\r\n app, password,\r\n );\r\n user.tempCode = tempCode;\r\n user.temporaryAccessId = temporaryAccessId;\r\n\r\n if (some(u => insensitiveEquals(u.name, user.name))(users)) { \r\n throw new BadRequestError('User already exists'); \r\n }\r\n\r\n users.push(\r\n stripUserOfSensitiveStuff(user),\r\n );\r\n\r\n await app.datastore.updateJson(\r\n USERS_LIST_FILE,\r\n users,\r\n );\r\n\r\n try {\r\n await app.datastore.createJson(\r\n userAuthFile(user.name),\r\n auth,\r\n );\r\n } catch (_) {\r\n await app.datastore.updateJson(\r\n userAuthFile(user.name),\r\n auth,\r\n );\r\n }\r\n\r\n await releaseLock(app, lock);\r\n\r\n return user;\r\n};\r\n\r\nconst getAccess = async (app, password) => {\r\n const auth = getNewUserAuth(app)();\r\n\r\n if (isNonEmptyString(password)) {\r\n if (isValidPassword(password)) {\r\n auth.passwordHash = await app.crypto.hash(password);\r\n auth.temporaryAccessHash = '';\r\n auth.temporaryAccessId = '';\r\n auth.temporaryAccessExpiryEpoch = 0;\r\n return { auth };\r\n }\r\n throw new BadRequestError('Password does not meet requirements');\r\n } else {\r\n const tempAccess = await getTemporaryCode(app);\r\n auth.temporaryAccessHash = tempAccess.temporaryAccessHash;\r\n auth.temporaryAccessExpiryEpoch = tempAccess.temporaryAccessExpiryEpoch;\r\n auth.passwordHash = '';\r\n return ({\r\n auth,\r\n tempCode: tempAccess.tempCode,\r\n temporaryAccessId: tempAccess.temporaryAccessId,\r\n });\r\n }\r\n};\r\n","import {\r\n getLock,\r\n isNolock, releaseLock,\r\n} from '../common/lock';\r\nimport { USERS_LOCK_FILE, USERS_LIST_FILE, getUserByName } from './authCommon';\r\nimport { apiWrapper, events } from '../common';\r\nimport { permission } from './permissions';\r\nimport { NotFoundError } from '../common/errors';\r\n\r\nexport const enableUser = app => async username => apiWrapper(\r\n app,\r\n events.authApi.enableUser,\r\n permission.enableDisableUser.isAuthorized,\r\n { username },\r\n _enableUser, app, username,\r\n);\r\n\r\nexport const disableUser = app => async username => apiWrapper(\r\n app,\r\n events.authApi.disableUser,\r\n permission.enableDisableUser.isAuthorized,\r\n { username },\r\n _disableUser, app, username,\r\n);\r\n\r\nexport const _enableUser = async (app, username) => await toggleUser(app, username, true);\r\n\r\nexport const _disableUser = async (app, username) => await toggleUser(app, username, false);\r\n\r\nconst toggleUser = async (app, username, enabled) => {\r\n const lock = await getLock(app, USERS_LOCK_FILE, 1000, 1, 0);\r\n\r\n const actionName = enabled ? 'enable' : 'disable';\r\n\r\n if (isNolock(lock)) { throw new Error(`Could not ${actionName} user - cannot get lock`); }\r\n\r\n try {\r\n const users = await app.datastore.loadJson(USERS_LIST_FILE);\r\n const user = getUserByName(users, username);\r\n if (!user) { throw new NotFoundError(`Could not find user to ${actionName}`); }\r\n\r\n if (user.enabled === !enabled) {\r\n user.enabled = enabled;\r\n await app.datastore.updateJson(USERS_LIST_FILE, users);\r\n }\r\n } finally {\r\n releaseLock(app, lock);\r\n }\r\n};\r\n","export const getNewAccessLevel = () => () => ({\r\n name: '',\r\n permissions: [],\r\n default:false\r\n});\r\n","import {\r\n values, includes, map, concat, isEmpty, uniqWith, some,\r\n flatten, filter,\r\n} from 'lodash/fp';\r\nimport { applyRuleSet, makerule } from '../common/validationCommon';\r\nimport { permissionTypes } from './authCommon';\r\nimport {\r\n $, isSomething, insensitiveEquals,\r\n isNonEmptyString, apiWrapperSync, events,\r\n} from '../common';\r\nimport { getNode } from '../templateApi/hierarchy';\r\nimport { alwaysAuthorized } from './permissions';\r\n\r\nconst isAllowedType = t => $(permissionTypes, [\r\n values,\r\n includes(t),\r\n]);\r\n\r\nconst isRecordOrIndexType = t => some(p => p === t)([\r\n permissionTypes.CREATE_RECORD,\r\n permissionTypes.UPDATE_RECORD,\r\n permissionTypes.DELETE_RECORD,\r\n permissionTypes.READ_RECORD,\r\n permissionTypes.READ_INDEX,\r\n permissionTypes.EXECUTE_ACTION,\r\n]);\r\n\r\n\r\nconst permissionRules = app => ([\r\n makerule('type', 'type must be one of allowed types',\r\n p => isAllowedType(p.type)),\r\n makerule('nodeKey', 'record and index permissions must include a valid nodeKey',\r\n p => (!isRecordOrIndexType(p.type))\r\n || isSomething(getNode(app.hierarchy, p.nodeKey))),\r\n]);\r\n\r\nconst applyPermissionRules = app => applyRuleSet(permissionRules(app));\r\n\r\nconst accessLevelRules = allLevels => ([\r\n makerule('name', 'name must be set',\r\n l => isNonEmptyString(l.name)),\r\n makerule('name', 'access level names must be unique',\r\n l => isEmpty(l.name)\r\n || filter(a => insensitiveEquals(l.name, a.name))(allLevels).length === 1),\r\n]);\r\n\r\nconst applyLevelRules = allLevels => applyRuleSet(accessLevelRules(allLevels));\r\n\r\nexport const validateAccessLevel = app => (allLevels, level) => {\r\n const errs = $(level.permissions, [\r\n map(applyPermissionRules(app)),\r\n flatten,\r\n concat(\r\n applyLevelRules(allLevels)(level),\r\n ),\r\n ]);\r\n\r\n return errs;\r\n};\r\n\r\nexport const validateAccessLevels = app => allLevels => apiWrapperSync(\r\n app,\r\n events.authApi.validateAccessLevels,\r\n alwaysAuthorized,\r\n { allLevels },\r\n _validateAccessLevels, app, allLevels,\r\n);\r\n\r\nexport const _validateAccessLevels = (app, allLevels) => $(allLevels, [\r\n map(l => validateAccessLevel(app)(allLevels, l)),\r\n flatten,\r\n uniqWith((x, y) => x.field === y.field\r\n && x.item === y.item\r\n && x.error === y.error),\r\n]);\r\n","import { join, map } from 'lodash/fp';\r\nimport {\r\n getLock, releaseLock, $,\r\n isNolock, apiWrapper, events,\r\n} from '../common';\r\nimport {\r\n ACCESS_LEVELS_LOCK_FILE,\r\n ACCESS_LEVELS_FILE,\r\n} from './authCommon';\r\nimport { validateAccessLevels } from './validateAccessLevels';\r\nimport { permission } from './permissions';\r\n\r\nexport const saveAccessLevels = app => async accessLevels => apiWrapper(\r\n app,\r\n events.authApi.saveAccessLevels,\r\n permission.writeAccessLevels.isAuthorized,\r\n { accessLevels },\r\n _saveAccessLevels, app, accessLevels,\r\n);\r\n\r\nexport const _saveAccessLevels = async (app, accessLevels) => {\r\n const validationErrors = validateAccessLevels(app)(accessLevels.levels);\r\n if (validationErrors.length > 0) {\r\n const errs = $(validationErrors, [\r\n map(e => e.error),\r\n join(', '),\r\n ]);\r\n throw new Error(\r\n `Access Levels Invalid: ${errs}`,\r\n );\r\n }\r\n\r\n const lock = await getLock(\r\n app, ACCESS_LEVELS_LOCK_FILE, 2000, 2,\r\n );\r\n\r\n if (isNolock(lock)) { throw new Error('Could not get lock to save access levels'); }\r\n\r\n try {\r\n const existing = await app.datastore.loadJson(ACCESS_LEVELS_FILE);\r\n if (existing.version !== accessLevels.version) { throw new Error('Access levels have already been updated, since you loaded'); }\r\n\r\n accessLevels.version++;\r\n\r\n app.datastore.updateJson(ACCESS_LEVELS_FILE, accessLevels);\r\n } finally {\r\n await releaseLock(app, lock);\r\n }\r\n};\r\n","import {\r\n filter, values, each, keys,\r\n} from 'lodash/fp';\r\nimport { permission } from './permissions';\r\nimport {\r\n getFlattenedHierarchy,\r\n isIndex, isRecord,\r\n} from '../templateApi/hierarchy';\r\nimport { $ } from '../common';\r\n\r\nexport const generateFullPermissions = (app) => {\r\n const allNodes = getFlattenedHierarchy(app.hierarchy);\r\n const accessLevel = { permissions: [] };\r\n\r\n const recordNodes = $(allNodes, [\r\n filter(isRecord),\r\n ]);\r\n\r\n for (const n of recordNodes) {\r\n permission.createRecord.add(n.nodeKey(), accessLevel);\r\n permission.updateRecord.add(n.nodeKey(), accessLevel);\r\n permission.deleteRecord.add(n.nodeKey(), accessLevel);\r\n permission.readRecord.add(n.nodeKey(), accessLevel);\r\n }\r\n\r\n const indexNodes = $(allNodes, [\r\n filter(isIndex),\r\n ]);\r\n\r\n for (const n of indexNodes) {\r\n permission.readIndex.add(n.nodeKey(), accessLevel);\r\n }\r\n\r\n for (const a of keys(app.actions)) {\r\n permission.executeAction.add(a, accessLevel);\r\n }\r\n\r\n $(permission, [\r\n values,\r\n filter(p => !p.isNode),\r\n each(p => p.add(accessLevel)),\r\n ]);\r\n\r\n return accessLevel.permissions;\r\n};\r\n","import { difference, map, join } from 'lodash/fp';\r\nimport {\r\n getLock, isNolock, releaseLock, $,\r\n apiWrapper, events,\r\n} from '../common';\r\nimport {\r\n USERS_LOCK_FILE, ACCESS_LEVELS_FILE,\r\n getUserByName, USERS_LIST_FILE,\r\n} from './authCommon';\r\nimport { permission } from './permissions';\r\nimport { NotFoundError } from '../common/errors';\r\n\r\nexport const setUserAccessLevels = app => async (userName, accessLevels) => apiWrapper(\r\n app,\r\n events.authApi.setUserAccessLevels,\r\n permission.setUserAccessLevels.isAuthorized,\r\n { userName, accessLevels },\r\n _setUserAccessLevels, app, userName, accessLevels,\r\n);\r\n\r\nexport const _setUserAccessLevels = async (app, username, accessLevels) => {\r\n const lock = await getLock(app, USERS_LOCK_FILE, 1000, 1, 0);\r\n\r\n const actualAccessLevels = $(\r\n await app.datastore.loadJson(ACCESS_LEVELS_FILE),\r\n [\r\n l => l.levels,\r\n map(l => l.name),\r\n ],\r\n );\r\n\r\n const missing = difference(accessLevels)(actualAccessLevels);\r\n if (missing.length > 0) {\r\n throw new Error(`Invalid access levels supplied: ${join(', ', missing)}`);\r\n }\r\n\r\n if (isNolock(lock)) { throw new Error('Could set user access levels cannot get lock'); }\r\n\r\n try {\r\n const users = await app.datastore.loadJson(USERS_LIST_FILE);\r\n const user = getUserByName(users, username);\r\n if (!user) { throw new NotFoundError(`Could not find user with ${username}`); }\r\n\r\n user.accessLevels = accessLevels;\r\n await app.datastore.updateJson(USERS_LIST_FILE, users);\r\n } finally {\r\n releaseLock(app, lock);\r\n }\r\n};\r\n","import {\r\n authenticate,\r\n authenticateTemporaryAccess,\r\n} from './authenticate';\r\nimport { createTemporaryAccess } from './createTemporaryAccess';\r\nimport { createUser } from './createUser';\r\nimport { enableUser, disableUser } from './enableUser';\r\nimport { loadAccessLevels } from './loadAccessLevels';\r\nimport { getNewAccessLevel } from './getNewAccessLevel';\r\nimport { getNewUser, getNewUserAuth } from './getNewUser';\r\nimport { getUsers } from './getUsers';\r\nimport { isAuthorized } from './isAuthorized';\r\nimport { saveAccessLevels } from './saveAccessLevels';\r\nimport {\r\n changeMyPassword,\r\n scorePassword, setPasswordFromTemporaryCode,\r\n isValidPassword,\r\n} from './setPassword';\r\nimport { validateUser } from './validateUser';\r\nimport { validateAccessLevels } from './validateAccessLevels';\r\nimport { generateFullPermissions } from './generateFullPermissions';\r\nimport { setUserAccessLevels } from './setUserAccessLevels';\r\n\r\nexport const getAuthApi = app => ({\r\n authenticate: authenticate(app),\r\n authenticateTemporaryAccess: authenticateTemporaryAccess(app),\r\n createTemporaryAccess: createTemporaryAccess(app),\r\n createUser: createUser(app),\r\n loadAccessLevels: loadAccessLevels(app),\r\n enableUser: enableUser(app),\r\n disableUser: disableUser(app),\r\n getNewAccessLevel: getNewAccessLevel(app),\r\n getNewUser: getNewUser(app),\r\n getNewUserAuth: getNewUserAuth(app),\r\n getUsers: getUsers(app),\r\n saveAccessLevels: saveAccessLevels(app),\r\n isAuthorized: isAuthorized(app),\r\n changeMyPassword: changeMyPassword(app),\r\n setPasswordFromTemporaryCode: setPasswordFromTemporaryCode(app),\r\n scorePassword,\r\n isValidPassword: isValidPassword(app),\r\n validateUser: validateUser(app),\r\n validateAccessLevels: validateAccessLevels(app),\r\n generateFullPermissions: () => generateFullPermissions(app),\r\n setUserAccessLevels: setUserAccessLevels(app),\r\n});\r\n\r\nexport default getAuthApi;\r\n","import {hierarchy as hierarchyFunctions, \r\n common, getTemplateApi, getAuthApi } from \"../../../core/src\"; \r\nimport {find, filter, includes, keyBy, some,\r\n flatten, map} from \"lodash/fp\";\r\n\r\nexport const pipe = common.$;\r\n\r\nexport const events = common.eventsList;\r\n\r\nexport const getNode = (hierarchy, nodeId) => \r\n pipe(hierarchy, [\r\n hierarchyFunctions.getFlattenedHierarchy,\r\n find(n => n.nodeId === nodeId || n.nodeKey() === nodeId)\r\n ]);\r\n\r\nexport const constructHierarchy = node => {\r\n if(!node) return node;\r\n return templateApi(node).constructHierarchy(node);\r\n}\r\n\r\nexport const createNewHierarchy = () => {\r\n return templateApi().getNewRootLevel();\r\n}\r\n\r\nexport const templateApi = hierarchy => getTemplateApi({hierarchy})\r\nexport const authApi = (hierarchy, actions) => getAuthApi({\r\n hierarchy, actions: keyBy(\"name\")(actions), publish:()=>{}})\r\n\r\nexport const allTypes = templateApi({}).allTypes;\r\n\r\nexport const validate = {\r\n all: templateApi({}).validateAll,\r\n node: templateApi({}).validateNode,\r\n field: templateApi({}).validateField\r\n};\r\n\r\nexport const getPotentialReverseReferenceIndexes = (hierarchy, refIndex) => {\r\n const res = pipe(hierarchy, [\r\n hierarchyFunctions.getFlattenedHierarchy,\r\n filter(n => hierarchyFunctions.isAncestor(refIndex)(n)\r\n || hierarchyFunctions.isAncestor(refIndex)(n.parent())),\r\n map(n => n.indexes),\r\n flatten,\r\n filter(hierarchyFunctions.isReferenceIndex)\r\n ]);\r\n\r\n return res;\r\n}\r\n\r\nexport const getPotentialReferenceIndexes = (hierarchy, record) =>\r\n pipe(hierarchy, [\r\n hierarchyFunctions.getFlattenedHierarchy,\r\n filter(hierarchyFunctions.isAncestorIndex),\r\n filter(i => hierarchyFunctions.isAncestor(record)(i.parent())\r\n || i.parent().nodeId === record.parent().nodeId\r\n || hierarchyFunctions.isRoot(i.parent()))\r\n ]);\r\n\r\nexport const getDefaultTypeOptions = type => \r\n !type ? {} : allTypes[type].getDefaultOptions();\r\n\r\nexport const getNewAction = () => templateApi({}).createAction();\r\nexport const getNewTrigger = () => templateApi({}).createTrigger();\r\n\r\nexport const validateActions = actions => templateApi({}).validateActions(actions);\r\nexport const validateTriggers = (triggers, actions) => templateApi({}).validateTriggers(triggers, actions);\r\n\r\nexport const generateFullPermissions = (hierarchy, actions) => \r\n authApi(hierarchy,actions).generateFullPermissions();\r\n\r\nexport const getNewAccessLevel = () => \r\n authApi().getNewAccessLevel();\r\n\r\nexport const validateAccessLevels = (hierarchy, actions, accessLevels) => \r\n authApi(hierarchy, actions).validateAccessLevels(accessLevels);","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 = () => ({\r\n main: {\r\n index: {\r\n _component : \"./components/indexHtml\"\r\n },\r\n appBody: \"bbapp.main.json\"\r\n },\r\n unauthenticated: {\r\n index: {\r\n _component : \"./components/indexHtml\"\r\n },\r\n appBody: \"bbapp.unauthenticated.json\"\r\n },\r\n componentLibraries: [],\r\n stylesheets: []\r\n\r\n});","export const EVENT_TYPE_MEMBER_NAME = \"##eventHandlerType\";","import {\r\n isString, \r\n isBoolean, \r\n isNumber,\r\n isArray,\r\n isObjectLike,\r\n isPlainObject,\r\n every\r\n} from \"lodash/fp\";\r\n\r\nimport {\r\n EVENT_TYPE_MEMBER_NAME\r\n} from \"../../common/eventHandlers\";\r\n\r\nconst defaultDef = typeName => () => ({\r\n type: typeName,\r\n required:false,\r\n default:types[typeName].default(),\r\n options: typeName === \"options\" ? [] : undefined,\r\n elementDefinition: typeName === \"array\" ? {} : undefined\r\n});\r\n\r\nconst propType = (defaultValue, isOfType, defaultDefinition) => ({\r\n isOfType, default:defaultValue, defaultDefinition\r\n});\r\n\r\nconst expandSingleProp = propDef => {\r\n const p = isString(propDef)\r\n ? types[propDef].defaultDefinition()\r\n : propDef;\r\n \r\n if(!isString(propDef)) {\r\n const def = types[propDef.type].defaultDefinition();\r\n for(let p in def) {\r\n if(propDef[p] === undefined) {\r\n propDef[p] = def[p];\r\n }\r\n }\r\n }\r\n\r\n if(p.type === \"array\") {\r\n p.elementDefinition = expandPropsDefinition(p.elementDefinition);\r\n }\r\n return p;\r\n}\r\n\r\nexport const expandPropsDefinition = propsDefinition => {\r\n const expandedProps = {};\r\n for(let p in propsDefinition) {\r\n expandedProps[p] = expandSingleProp(propsDefinition[p]);\r\n }\r\n return expandedProps;\r\n}\r\n\r\nconst isComponent = isObjectLike;\r\nconst isEvent = e => \r\n isPlainObject(e) \r\n && isString(e[EVENT_TYPE_MEMBER_NAME])\r\n && isPlainObject(e.parameters);\r\n\r\nconst isEventList = e => \r\n isArray(e) && every(isEvent)(e);\r\n\r\n\r\nexport const types = {\r\n string: propType(() => \"\", isString, defaultDef(\"string\")),\r\n bool: propType(() => false, isBoolean, defaultDef(\"bool\")),\r\n number: propType(() => 0, isNumber, defaultDef(\"number\")),\r\n array: propType(() => [], isArray, defaultDef(\"array\")),\r\n options: propType(() => \"\", isString, defaultDef(\"options\")),\r\n component: propType(() => ({_component:\"\"}), isComponent, defaultDef(\"component\")),\r\n asset: propType(() => \"\", isString, defaultDef(\"asset\")),\r\n event: propType(() => [], isEventList, defaultDef(\"event\"))\r\n};","import {pipe} from \"../../common/core\";\r\n\r\nimport {\r\n find,\r\n isUndefined,\r\n filter,\r\n some,\r\n includes,\r\n has\r\n} from \"lodash/fp\";\r\n\r\nconst normalString = s => (s||\"\").trim().toLowerCase();\r\n\r\nexport const isRootComponent = c => isComponent(c) && isUndefined(c.inherits);\r\n\r\nexport const isComponent = c => {\r\n const hasProp = (n) => !isUndefined(c[n]);\r\n return hasProp(\"name\") && hasProp(\"props\");\r\n}\r\n\r\nexport const searchAllComponents = (allComponents, phrase) => {\r\n\r\n const hasPhrase = (...vals) => \r\n pipe(vals, [\r\n some(v => includes(normalString(phrase))(normalString(v)))\r\n ]);\r\n\r\n const componentMatches = c => {\r\n if(hasPhrase(c.name, ...(c.tags || []))) return true;\r\n\r\n if(isRootComponent(c)) return false;\r\n \r\n const parent = getExactComponent(\r\n allComponents,\r\n c.inherits);\r\n\r\n return componentMatches(parent);\r\n }\r\n\r\n return filter(componentMatches)(allComponents);\r\n} \r\n\r\nexport const getExactComponent = (allComponents, name) => {\r\n \r\n const stringEquals = (s1, s2) => \r\n normalString(s1) === normalString(s2);\r\n \r\n return pipe(allComponents,[\r\n find(c => stringEquals(c.name, name))\r\n ]);\r\n}\r\n\r\nexport const getAncestorProps = (allComponents, name, found=[]) => {\r\n const thisComponent = getExactComponent(\r\n allComponents, name);\r\n\r\n if(isRootComponent(thisComponent)) \r\n return [thisComponent.props, ...found];\r\n\r\n return getAncestorProps(\r\n allComponents, \r\n thisComponent.inherits,\r\n [{...thisComponent.props}, \r\n ...found]);\r\n\r\n}\r\n","import {\r\n isString, \r\n isUndefined,\r\n find,\r\n keys,\r\n uniq,\r\n some,\r\n filter,\r\n reduce,\r\n cloneDeep,\r\n includes,\r\n last\r\n} from \"lodash/fp\";\r\nimport { types, expandPropsDefinition } from \"./types\";\r\nimport { assign } from \"lodash\";\r\nimport { pipe } from \"../../common/core\";\r\nimport { isRootComponent } from \"./searchComponents\";\r\n\r\nexport const createPropDefinitionForDerived = (allComponents, componentName) => {\r\n \r\n\r\n const {propDef, derivedProps} = getComponentInfo(allComponents, componentName);\r\n\r\n const hasDerivedProp = k => pipe(derivedProps, [\r\n keys,\r\n uniq,\r\n some(key => key === k)\r\n ]);\r\n\r\n return pipe(propDef, [\r\n keys,\r\n filter(k => !hasDerivedProp(k)),\r\n reduce((obj, k) => {\r\n obj[k] = propDef[k];\r\n return obj;\r\n }, {}),\r\n expandPropsDefinition\r\n ])\r\n}\r\n\r\nexport const traverseForProps = getComponentInfo;\r\n\r\nexport const getInstanceProps = (componentInfo, props) => {\r\n const finalProps = cloneDeep(componentInfo.fullProps);\r\n\r\n for(let p in props) {\r\n finalProps[p] = props[p];\r\n }\r\n\r\n return finalProps;\r\n}\r\n\r\nexport const getNewComponentInfo = (allComponents, inherits) => {\r\n const parentcomponent = find(c => c.name === inherits)(allComponents);\r\n const component = {\r\n name:\"\", \r\n description:\"\", \r\n inherits, \r\n props:{}, \r\n tags:parentcomponent.tags\r\n };\r\n return getComponentInfo(\r\n allComponents,\r\n inherits,\r\n [component],\r\n {});\r\n}\r\n\r\n\r\nexport const getComponentInfo = (allComponents, comp, stack=[], subComponentProps=null) => {\r\n const component = isString(comp) \r\n ? find(c => c.name === comp)(allComponents)\r\n : comp;\r\n const cname = isString(comp) ? comp : comp.name;\r\n if(isRootComponent(component)) {\r\n subComponentProps = subComponentProps||{};\r\n const p = createProps(cname, component.props, subComponentProps);\r\n const rootProps = createProps(cname, component.props);\r\n const inheritedProps = [];\r\n const targetComponent = stack.length > 0\r\n ? last(stack)\r\n : component;\r\n if(stack.length > 0) {\r\n \r\n for(let prop in subComponentProps) {\r\n const hasProp = pipe(targetComponent.props, [\r\n keys,\r\n includes(prop)]);\r\n\r\n if(!hasProp)\r\n inheritedProps.push(prop);\r\n }\r\n }\r\n const unsetProps = pipe(p.props, [\r\n keys,\r\n filter(k => !includes(k)(keys(subComponentProps)) && k !== \"_component\")\r\n ]);\r\n\r\n const fullProps = cloneDeep(p.props);\r\n fullProps._component = targetComponent.name;\r\n\r\n return ({\r\n propsDefinition:expandPropsDefinition(component.props), \r\n inheritedProps,\r\n rootDefaultProps: rootProps.props,\r\n unsetProps,\r\n fullProps: fullProps,\r\n errors: p.errors,\r\n component: targetComponent,\r\n rootComponent: component\r\n });\r\n }\r\n return getComponentInfo(\r\n allComponents, \r\n component.inherits, \r\n [component, ...stack],\r\n {...component.props, ...subComponentProps});\r\n}\r\n\r\nexport const createProps = (componentName, propsDefinition, derivedFromProps) => {\r\n\r\n const error = (propName, error) =>\r\n errors.push({propName, error});\r\n\r\n const props = {\r\n _component: componentName\r\n };\r\n\r\n const errors = [];\r\n\r\n if(!componentName)\r\n error(\"_component\", \"Component name not supplied\");\r\n\r\n for(let propDef in propsDefinition) {\r\n const parsedPropDef = parsePropDef(propsDefinition[propDef]);\r\n if(parsedPropDef.error)\r\n error(propDef, parsedPropDef.error); \r\n else \r\n props[propDef] = parsedPropDef;\r\n }\r\n\r\n if(derivedFromProps) {\r\n assign(props, derivedFromProps);\r\n }\r\n\r\n return ({\r\n props, errors\r\n });\r\n}\r\n\r\nexport const createArrayElementProps = (arrayPropName, elementDefinition) => \r\n createProps(\r\n `#${arrayPropName}#array_element`,\r\n elementDefinition);\r\n\r\nconst parsePropDef = propDef => {\r\n const error = message => ({error:message, propDef});\r\n\r\n if(isString(propDef)) {\r\n if(!types[propDef])\r\n return error(`Do not recognise type ${propDef}`);\r\n \r\n return types[propDef].default();\r\n }\r\n\r\n if(!propDef.type)\r\n return error(\"Property Definition must declare a type\");\r\n \r\n const type = types[propDef.type];\r\n if(!type)\r\n return error(`Do not recognise type ${propDef.type}`);\r\n\r\n if(isUndefined(propDef.default))\r\n return type.default(propDef);\r\n\r\n if(!type.isOfType(propDef.default))\r\n return error(`${propDef.default} is not of type ${type}`);\r\n\r\n return propDef.default;\r\n}\r\n\r\nexport const arrayElementComponentName = (parentComponentName, arrayPropName) => \r\n `${parentComponentName}:${arrayPropName}`;\r\n\r\n/*\r\nAllowed propDefOptions\r\n- type: string, bool, number, array\r\n- default: default value, when undefined\r\n- required: field is required \r\n*/","import { \r\n getComponentInfo, createProps, getInstanceProps \r\n} from \"./createProps\";\r\n\r\nexport const buildPropsHierarchy = (allComponents, baseComponent) => {\r\n\r\n const buildProps = (componentName, propsDefinition, derivedFromProps) => {\r\n\r\n const {props} = createProps(componentName, propsDefinition, derivedFromProps);\r\n props._component = componentName;\r\n for(let propName in props) {\r\n if(propName === \"_component\") continue;\r\n\r\n const propDef = propsDefinition[propName];\r\n if(propDef.type === \"component\") {\r\n\r\n const subComponentProps = props[propName];\r\n \r\n if(!subComponentProps._component) continue;\r\n\r\n const propComponentInfo = getComponentInfo(\r\n allComponents, subComponentProps._component);\r\n\r\n const subComponentInstanceProps = getInstanceProps(\r\n propComponentInfo,\r\n subComponentProps\r\n );\r\n\r\n props[propName] = buildProps(\r\n propComponentInfo.rootComponent.name,\r\n propComponentInfo.propsDefinition,\r\n subComponentInstanceProps);\r\n\r\n } else if(propDef.type === \"array\") {\r\n const propsArray = props[propName];\r\n const newPropsArray = [];\r\n let index = 0;\r\n for(let element of propsArray) {\r\n newPropsArray.push(\r\n buildProps(\r\n `${propName}#array_element#`,\r\n propDef.elementDefinition,\r\n element));\r\n index++;\r\n }\r\n\r\n props[propName] = newPropsArray;\r\n }\r\n }\r\n\r\n return props;\r\n\r\n }\r\n\r\n if(!baseComponent) return {};\r\n\r\n const baseComponentInfo = getComponentInfo(allComponents, baseComponent);\r\n\r\n return buildProps(\r\n baseComponentInfo.rootComponent.name,\r\n baseComponentInfo.propsDefinition,\r\n baseComponentInfo.fullProps);\r\n\r\n}","const apiCall = (method) => (url, body) => \r\n fetch(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 });\r\n\r\nconst post = apiCall(\"POST\");\r\nconst get = apiCall(\"GET\");\r\nconst patch = apiCall(\"PATCH\");\r\nconst del = apiCall(\"DELETE\");\r\n\r\nexport default {\r\n post, get, patch, delete:del\r\n};","import { map } from \"lodash/fp\";\r\n\r\nexport const loadLibs = async (appName, appPackage) => {\r\n\r\n const allLibraries = {};\r\n for(let lib of appPackage.pages.componentLibraries) {\r\n const libModule = await import(makeLibraryUrl(appName, lib));\r\n allLibraries[lib] = libModule;\r\n }\r\n\r\n return allLibraries;\r\n}\r\n\r\nexport const loadLibUrls = (appName, appPackage) => {\r\n\r\n const allLibraries = [];\r\n for(let lib of appPackage.pages.componentLibraries) {\r\n const libUrl = makeLibraryUrl(appName, lib);\r\n allLibraries.push({libName:lib, importPath:libUrl});\r\n }\r\n\r\n return allLibraries;\r\n}\r\n\r\nexport const loadLib = async (appName, lib, allLibs) => {\r\n allLibs[lib] = await import(makeLibraryUrl(appName, lib));\r\n return allLibs;\r\n}\r\n\r\nexport const makeLibraryUrl = (appName, lib) => \r\n `/_builder/${appName}/componentlibrary?lib=${encodeURI(lib)}`","import {\r\n hierarchy as hierarchyFunctions, \r\n} from \"../../../core/src\";\r\nimport {\r\n filter, cloneDeep, sortBy, \r\n map, last, keys, concat,\r\n find, isEmpty, reduce\r\n} from \"lodash/fp\";\r\nimport {\r\n pipe, getNode, validate,\r\n constructHierarchy, templateApi\r\n} from \"../common/core\";\r\nimport {writable} from \"svelte/store\";\r\nimport { defaultPagesObject } from \"../userInterface/pagesParsing/defaultPagesObject\"\r\nimport { buildPropsHierarchy } from \"../userInterface/pagesParsing/buildPropsHierarchy\"\r\nimport api from \"./api\";\r\nimport { isRootComponent } from \"../userInterface/pagesParsing/searchComponents\";\r\nimport { \r\n getComponentInfo, getNewComponentInfo \r\n} from \"../userInterface/pagesParsing/createProps\";\r\nimport { loadLibs, loadLibUrls } from \"./loadComponentLibraries\";\r\n\r\nlet appname = \"\";\r\n\r\nexport const getStore = () => {\r\n\r\n const initial = {\r\n apps:[],\r\n appname:\"\",\r\n hierarchy: {},\r\n actions: [],\r\n triggers: [],\r\n pages:defaultPagesObject(),\r\n mainUi:{},\r\n unauthenticatedUi:{},\r\n allComponents:[],\r\n currentFrontEndItem:null,\r\n currentComponentInfo:null,\r\n currentComponentIsNew:false,\r\n currentPageName: \"\",\r\n currentNodeIsNew: false,\r\n errors: [],\r\n activeNav: \"database\",\r\n isBackend:true,\r\n hasAppPackage: false,\r\n accessLevels: [],\r\n currentNode: null,\r\n libraries:null,\r\n showSettings:false,\r\n useAnalytics:true,\r\n };\r\n\r\n const store = writable(initial);\r\n\r\n store.initialise = initialise(store, initial);\r\n store.newChildRecord = newRecord(store, false);\r\n store.newRootRecord = newRecord(store, true);\r\n store.selectExistingNode = selectExistingNode(store);\r\n store.newChildIndex = newIndex(store, false);\r\n store.newRootIndex = newIndex(store, true);\r\n store.saveCurrentNode = saveCurrentNode(store);\r\n store.importAppDefinition = importAppDefinition(store);\r\n store.deleteCurrentNode = deleteCurrentNode(store);\r\n store.saveField = saveField(store);\r\n store.deleteField = deleteField(store);\r\n store.saveAction = saveAction(store);\r\n store.deleteAction = deleteAction(store);\r\n store.saveTrigger = saveTrigger(store);\r\n store.deleteTrigger = deleteTrigger(store);\r\n store.saveLevel = saveLevel(store);\r\n store.deleteLevel = deleteLevel(store);\r\n store.setActiveNav = setActiveNav(store);\r\n store.saveDerivedComponent = saveDerivedComponent(store);\r\n store.refreshComponents = refreshComponents(store);\r\n store.addComponentLibrary = addComponentLibrary(store);\r\n store.renameDerivedComponent = renameDerivedComponent(store);\r\n store.deleteDerivedComponent = deleteDerivedComponent(store);\r\n store.setCurrentComponent = setCurrentComponent(store);\r\n store.setCurrentPage = setCurrentPage(store);\r\n store.createDerivedComponent = createDerivedComponent(store);\r\n store.removeComponentLibrary =removeComponentLibrary(store);\r\n store.addStylesheet = addStylesheet(store);\r\n store.removeStylesheet = removeStylesheet(store);\r\n store.savePage = savePage(store);\r\n store.showFrontend = showFrontend(store);\r\n store.showBackend = showBackend(store);\r\n store.showSettings = showSettings(store);\r\n store.useAnalytics = useAnalytics(store);\r\n return store;\r\n} \r\n\r\nexport default getStore;\r\n\r\nconst initialise = (store, initial) => async () => {\r\n\r\n appname = window.location.hash \r\n ? last(window.location.hash.substr(1).split(\"/\"))\r\n : \"\";\r\n\r\n if(!appname) {\r\n initial.apps = await api.get(`/_builder/api/apps`).then(r => r.json());\r\n initial.hasAppPackage = false;\r\n store.set(initial);\r\n return initial;\r\n }\r\n\r\n const pkg = await api.get(`/_builder/api/${appname}/appPackage`)\r\n .then(r => r.json());\r\n\r\n initial.libraries = await loadLibs(appname, pkg);\r\n initial.loadLibraryUrls = () => loadLibUrls(appname, pkg);\r\n initial.appname = appname;\r\n initial.pages = pkg.pages;\r\n initial.hasAppPackage = true;\r\n initial.hierarchy = pkg.appDefinition.hierarchy;\r\n initial.accessLevels = pkg.accessLevels;\r\n initial.derivedComponents = pkg.derivedComponents;\r\n initial.allComponents = combineComponents(\r\n pkg.derivedComponents, pkg.rootComponents);\r\n initial.actions = reduce((arr, action) => {\r\n arr.push(action);\r\n return arr;\r\n })(pkg.appDefinition.actions, []);\r\n initial.triggers = pkg.appDefinition.triggers;\r\n\r\n if(!!initial.hierarchy && !isEmpty(initial.hierarchy)) {\r\n initial.hierarchy = constructHierarchy(initial.hierarchy);\r\n const shadowHierarchy = createShadowHierarchy(initial.hierarchy);\r\n if(initial.currentNode !== null)\r\n initial.currentNode = getNode(\r\n shadowHierarchy, initial.currentNode.nodeId\r\n );\r\n }\r\n store.set(initial);\r\n return initial;\r\n}\r\n\r\nconst showSettings = store => show => {\r\n store.update(s => {\r\n s.showSettings = !s.showSettings;\r\n return s;\r\n });\r\n}\r\n\r\nconst useAnalytics = store => useAnalytics => {\r\n store.update(s => {\r\n s.useAnalytics = !s.useAnalytics;\r\n return s;\r\n });\r\n}\r\n\r\nconst showBackend = store => () => {\r\n store.update(s => {\r\n s.isBackend = true;\r\n return s;\r\n })\r\n}\r\n\r\nconst showFrontend = store => () => {\r\n store.update(s => {\r\n s.isBackend = false;\r\n return s;\r\n })\r\n}\r\n\r\nconst combineComponents = (root, derived) => {\r\n const all = []\r\n for(let r in root) {\r\n all.push(root[r]);\r\n }\r\n for(let d in derived) {\r\n all.push(derived[d]);\r\n }\r\n return all;\r\n}\r\n\r\nconst newRecord = (store, useRoot) => () => {\r\n store.update(s => {\r\n s.currentNodeIsNew = true;\r\n const shadowHierarchy = createShadowHierarchy(s.hierarchy);\r\n parent = useRoot ? shadowHierarchy\r\n : getNode(\r\n shadowHierarchy, \r\n s.currentNode.nodeId);\r\n s.errors = [];\r\n s.currentNode = templateApi(shadowHierarchy)\r\n .getNewRecordTemplate(parent, \"\", true);\r\n return s;\r\n });\r\n}\r\n\r\n\r\nconst selectExistingNode = (store) => (nodeId) => {\r\n store.update(s => {\r\n const shadowHierarchy = createShadowHierarchy(s.hierarchy);\r\n s.currentNode = getNode(\r\n shadowHierarchy, nodeId\r\n );\r\n s.currentNodeIsNew = false;\r\n s.errors = [];\r\n s.activeNav = \"database\";\r\n return s;\r\n })\r\n}\r\n\r\nconst newIndex = (store, useRoot) => () => {\r\n store.update(s => {\r\n s.currentNodeIsNew = true;\r\n s.errors = [];\r\n const shadowHierarchy = createShadowHierarchy(s.hierarchy);\r\n parent = useRoot ? shadowHierarchy\r\n : getNode(\r\n shadowHierarchy, \r\n s.currentNode.nodeId);\r\n\r\n s.currentNode = templateApi(shadowHierarchy)\r\n .getNewIndexTemplate(parent);\r\n return s;\r\n });\r\n}\r\n\r\nconst saveCurrentNode = (store) => () => {\r\n store.update(s => {\r\n\r\n const errors = validate.node(s.currentNode);\r\n s.errors = errors;\r\n if(errors.length > 0) {\r\n return s;\r\n }\r\n\r\n const parentNode = getNode(\r\n s.hierarchy, s.currentNode.parent().nodeId);\r\n\r\n const existingNode = getNode(\r\n s.hierarchy, s.currentNode.nodeId);\r\n\r\n let index = parentNode.children.length;\r\n if(!!existingNode) {\r\n // remove existing\r\n index = existingNode.parent().children.indexOf(existingNode);\r\n existingNode.parent().children = pipe(existingNode.parent().children, [\r\n filter(c => c.nodeId !== existingNode.nodeId)\r\n ]);\r\n }\r\n\r\n // should add node into existing hierarchy\r\n const cloned = cloneDeep(s.currentNode);\r\n templateApi(s.hierarchy).constructNode(\r\n parentNode, \r\n cloned\r\n );\r\n\r\n const newIndexOfchild = child => {\r\n if(child === cloned) return index;\r\n const currentIndex = parentNode.children.indexOf(child);\r\n return currentIndex >= index ? currentIndex + 1 : currentIndex;\r\n }\r\n\r\n parentNode.children = pipe(parentNode.children, [\r\n sortBy(newIndexOfchild)\r\n ]);\r\n\r\n s.currentNodeIsNew = false;\r\n \r\n savePackage(store, s);\r\n\r\n return s;\r\n });\r\n}\r\n\r\nconst importAppDefinition = store => appDefinition => {\r\n store.update(s => {\r\n s.hierarchy = appDefinition.hierarchy;\r\n s.currentNode = appDefinition.hierarchy.children.length > 0\r\n ? appDefinition.hierarchy.children[0] \r\n : null;\r\n s.actions = appDefinition.actions;\r\n s.triggers = appDefinition.triggers;\r\n s.currentNodeIsNew = false; \r\n return s;\r\n });\r\n} \r\n\r\nconst deleteCurrentNode = store => () => {\r\n store.update(s => {\r\n const nodeToDelete = getNode(s.hierarchy, s.currentNode.nodeId);\r\n s.currentNode = hierarchyFunctions.isRoot(nodeToDelete.parent())\r\n ? find(n => n != s.currentNode)\r\n (s.hierarchy.children)\r\n : nodeToDelete.parent();\r\n if(hierarchyFunctions.isRecord(nodeToDelete)) {\r\n nodeToDelete.parent().children = filter(c => c.nodeId !== nodeToDelete.nodeId)\r\n (nodeToDelete.parent().children);\r\n } else {\r\n nodeToDelete.parent().indexes = filter(c => c.nodeId !== nodeToDelete.nodeId)\r\n (nodeToDelete.parent().indexes);\r\n }\r\n s.errors = [];\r\n savePackage(store, s);\r\n return s;\r\n });\r\n}\r\n\r\nconst saveField = databaseStore => (field) => {\r\n databaseStore.update(db => {\r\n db.currentNode.fields = filter(f => f.name !== field.name)\r\n (db.currentNode.fields);\r\n \r\n templateApi(db.hierarchy).addField(db.currentNode, field);\r\n return db;\r\n });\r\n}\r\n\r\n\r\nconst deleteField = databaseStore => field => {\r\n databaseStore.update(db => {\r\n db.currentNode.fields = filter(f => f.name !== field.name)\r\n (db.currentNode.fields);\r\n\r\n return db;\r\n });\r\n}\r\n\r\n\r\nconst saveAction = store => (newAction, isNew, oldAction=null) => {\r\n store.update(s => {\r\n\r\n const existingAction = isNew \r\n ? null\r\n : find(a => a.name === oldAction.name)(s.actions);\r\n \r\n if(existingAction) {\r\n s.actions = pipe(s.actions, [\r\n map(a => a === existingAction ? newAction : a)\r\n ]);\r\n } else {\r\n s.actions.push(newAction);\r\n }\r\n savePackage(store, s);\r\n return s;\r\n });\r\n}\r\n\r\nconst deleteAction = store => action => {\r\n store.update(s => {\r\n s.actions = filter(a => a.name !== action.name)(s.actions);\r\n savePackage(store, s);\r\n return s;\r\n });\r\n}\r\n\r\nconst saveTrigger = store => (newTrigger, isNew, oldTrigger=null) => {\r\n store.update(s => {\r\n\r\n const existingTrigger = isNew \r\n ? null\r\n : find(a => a.name === oldTrigger.name)(s.triggers);\r\n \r\n if(existingTrigger) {\r\n s.triggers = pipe(s.triggers, [\r\n map(a => a === existingTrigger ? newTrigger : a)\r\n ]);\r\n } else {\r\n s.triggers.push(newTrigger);\r\n }\r\n savePackage(store, s);\r\n return s;\r\n });\r\n}\r\n\r\nconst deleteTrigger = store => trigger => {\r\n store.update(s => {\r\n s.triggers = filter(t => t.name !== trigger.name)(s.triggers);\r\n return s;\r\n });\r\n}\r\n\r\nconst saveLevel = store => (newLevel, isNew, oldLevel=null) => {\r\n store.update(s => {\r\n\r\n const existingLevel = isNew \r\n ? null\r\n : find(a => a.name === oldLevel.name)(s.accessLevels);\r\n \r\n if(existingLevel) {\r\n s.accessLevels = pipe(s.accessLevels, [\r\n map(a => a === existingLevel ? newLevel : a)\r\n ]);\r\n } else {\r\n s.accessLevels.push(newLevel);\r\n }\r\n savePackage(store, s);\r\n return s;\r\n });\r\n}\r\n\r\nconst deleteLevel = store => level => {\r\n store.update(s => {\r\n s.accessLevels = filter(t => t.name !== level.name)(s.accessLevels);\r\n savePackage(store, s);\r\n return s;\r\n });\r\n}\r\n\r\nconst setActiveNav = store => navName => {\r\n store.update(s => {\r\n s.activeNav = navName;\r\n return s;\r\n });\r\n}\r\n\r\nconst createShadowHierarchy = hierarchy => \r\n constructHierarchy(JSON.parse(JSON.stringify(hierarchy)));\r\n\r\nconst saveDerivedComponent = store => (derivedComponent) => {\r\n\r\n store.update(s => {\r\n\r\n const components = pipe(s.allComponents, [\r\n filter(c => c.name !== derivedComponent.name),\r\n concat([derivedComponent])\r\n ]);\r\n\r\n const derivedComponents = pipe(s.derivedComponents, [\r\n filter(c => c.name !== derivedComponent.name),\r\n concat([derivedComponent])\r\n ]);\r\n\r\n s.allComponents = components;\r\n s.derivedComponents = derivedComponents;\r\n s.currentFrontEndItem = derivedComponent;\r\n s.currentComponentInfo = getNewComponentInfo(\r\n s.allComponents, derivedComponent.name);\r\n s.currentComponentIsNew = false;\r\n \r\n api.post(`/_builder/api/${s.appname}/derivedcomponent`, derivedComponent);\r\n\r\n return s;\r\n })\r\n};\r\n\r\nconst createDerivedComponent = store => (componentName) => {\r\n store.update(s => {\r\n const newComponentInfo = getNewComponentInfo(\r\n s.allComponents, componentName);\r\n\r\n s.currentFrontEndItem = newComponentInfo.component;\r\n s.currentComponentInfo = newComponentInfo;\r\n s.currentComponentIsNew = true;\r\n return s;\r\n });\r\n}\r\n\r\nconst deleteDerivedComponent = store => name => {\r\n store.update(s => {\r\n\r\n const allComponents = pipe(s.allComponents, [\r\n filter(c => c.name !== name)\r\n ]);\r\n\r\n const derivedComponents = pipe(s.derivedComponents, [\r\n filter(c => c.name !== name)\r\n ]);\r\n\r\n s.allComponents = allComponents;\r\n s.derivedComponents = derivedComponents;\r\n if(s.currentFrontEndItem.name === name) {\r\n s.currentFrontEndItem = null;\r\n }\r\n\r\n api.delete(`/_builder/api/${s.appname}/derivedcomponent/${name}`);\r\n\r\n return s;\r\n })\r\n}\r\n\r\nconst renameDerivedComponent = store => (oldname, newname) => {\r\n store.update(s => {\r\n\r\n const component = pipe(s.allComponents, [\r\n find(c => c.name === name)\r\n ]);\r\n\r\n component.name = newname;\r\n\r\n const allComponents = pipe(s.allComponents, [\r\n filter(c => c.name !== name),\r\n concat([component])\r\n ]);\r\n\r\n s.allComponents = allComponents;\r\n\r\n api.patch(`/_builder/api/${s.appname}/derivedcomponent`, {\r\n oldname, newname\r\n });\r\n\r\n return s;\r\n })\r\n}\r\n\r\nconst savePage = store => async page => {\r\n store.update(s => {\r\n if(s.currentFrontEndIsComponent || !s.currentFrontEndItem) {\r\n return;\r\n }\r\n\r\n s.pages[s.currentPageName] = page;\r\n s.currentFrontEndItem = page;\r\n savePackage(store, s);\r\n return s;\r\n });\r\n}\r\n\r\nconst addComponentLibrary = store => async lib => {\r\n\r\n const response = \r\n await api.get(`/_builder/api/${appname}/componentlibrary?lib=${encodeURI(lib)}`,undefined, false);\r\n\r\n const success = response.status === 200;\r\n\r\n const error = response.status === 404 \r\n ? `Could not find library ${lib}`\r\n : success\r\n ? \"\"\r\n : response.statusText;\r\n \r\n const components = success\r\n ? await response.json()\r\n : [];\r\n\r\n store.update(s => {\r\n if(success) {\r\n \r\n const componentsArray = [];\r\n for(let c in components) {\r\n componentsArray.push(components[c]);\r\n }\r\n\r\n s.allComponents = pipe(s.allComponents, [\r\n filter(c => !c.name.startsWith(`${lib}/`)),\r\n concat(componentsArray)\r\n ]);\r\n\r\n s.pages.componentLibraries.push(lib);\r\n savePackage(store, s);\r\n }\r\n\r\n return s;\r\n })\r\n \r\n\r\n}\r\n\r\nconst removeComponentLibrary = store => lib => {\r\n store.update(s => {\r\n \r\n \r\n s.pages.componentLibraries = filter(l => l !== lib)(\r\n s.pages.componentLibraries);\r\n savePackage(store, s);\r\n \r\n\r\n return s;\r\n })\r\n}\r\n\r\nconst addStylesheet = store => stylesheet => {\r\n store.update(s => {\r\n s.pages.stylesheets.push(stylesheet);\r\n savePackage(store, s);\r\n return s;\r\n })\r\n}\r\n\r\nconst removeStylesheet = store => stylesheet => {\r\n store.update(s => {\r\n s.pages.stylesheets = filter(s => s !== stylesheet)(s.pages.stylesheets);\r\n savePackage(store, s);\r\n return s;\r\n });\r\n}\r\n\r\nconst refreshComponents = store => async () => {\r\n\r\n const components = \r\n await api.get(`/_builder/api/${db.appname}/components`).then(r => r.json());\r\n\r\n const rootComponents = pipe(components, [\r\n keys,\r\n map(k => ({...components[k], name:k}))\r\n ]);\r\n\r\n store.update(s => {\r\n s.allComponents = pipe(s.allComponents, [\r\n filter(c => !isRootComponent(c)),\r\n concat(rootComponents)\r\n ]);\r\n return s;\r\n });\r\n};\r\n\r\nconst savePackage = (store, s) => {\r\n\r\n const appDefinition = {\r\n hierarchy:s.hierarchy,\r\n triggers:s.triggers,\r\n actions: s.actions,\r\n props: {\r\n main: buildPropsHierarchy(s.allComponents, s.pages.main.appBody),\r\n unauthenticated: buildPropsHierarchy(s.allComponents, s.pages.unauthenticated.appBody)\r\n }\r\n };\r\n\r\n const data = {\r\n appDefinition,\r\n accessLevels:s.accessLevels,\r\n pages:s.pages,\r\n }\r\n\r\n api.post(`/_builder/api/${s.appname}/appPackage`, data);\r\n}\r\n\r\nconst setCurrentComponent = store => component => {\r\n store.update(s => {\r\n s.currentFrontEndItem = component;\r\n s.currentFrontEndIsComponent = true;\r\n s.currentComponentIsNew = false;\r\n s.currentComponentInfo = getComponentInfo(s.allComponents, component.name);\r\n return s;\r\n })\r\n}\r\n\r\nconst setCurrentPage = store => pageName => {\r\n store.update(s => {\r\n s.currentFrontEndItem = s.pages[pageName];\r\n s.currentFrontEndIsComponent = false;\r\n s.currentPageName = pageName;\r\n return s;\r\n })\r\n}\r\n","import {createPackage} from \"./createPackage\";\r\nimport getStore from \"./store\";\r\n\r\nexport const store = getStore();\r\n\r\nexport const createNewPackage = () =>\r\n createPackage(packageInfo, store);\r\n\r\nexport const initialise = async () => {\r\n try {\r\n setupRouter(store);\r\n await store.initialise();\r\n } catch(err) {\r\n console.log(err);\r\n }\r\n\r\n} \r\n\r\nconst setupRouter = (writable) => {\r\n const pushState = history.pushState;\r\n history.pushState = () => {\r\n pushState.apply(history, arguments);\r\n //fireEvents('pushState', arguments); \r\n writable.initialise();\r\n }\r\n window.addEventListener('hashchange',()=>{\r\n writable.initialise();\r\n })\r\n}\r\n","<script>\r\n\r\nimport Button from \"./common/Button.svelte\"\r\nimport { store } from \"./builderStore\";\r\n\r\nlet errors = [];\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n <div class=\"inner\">\r\n <img src=\"/_builder/assets/budibase-logo.png\" class=\"logo\" alt=\"budibase logo\"/>\r\n <div>\r\n \r\n <div>\r\n <h4 style=\"margin-bottom: 20px\">Choose an Application</h4>\r\n {#each $store.apps as app}\r\n <a href={`#/${app}`} class=\"app-link\">{app}</a>\r\n {/each}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<style>\r\n\r\n.root {\r\n position: fixed;\r\n margin: 0 auto;\r\n text-align: center;\r\n top: 20%;\r\n /*color: #333333;\r\n background-color: #fdfdfd;*/\r\n width:100%;\r\n}\r\n\r\n.inner {\r\n display:inline-block;\r\n margin: auto;\r\n}\r\n\r\n.logo {\r\n width: 300px;\r\n margin-bottom: 40px;\r\n}\r\n\r\n.root :global(.option) {\r\n width:250px;\r\n}\r\n\r\n.app-link {\r\n margin-top: 10px;\r\n display: block;\r\n}\r\n\r\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\";\r\nconst getIcon = (icon, size) => feather.icons[icon].toSvg({height:size||\"16\", width:size||\"16\"});\r\nexport default getIcon;","<script>\r\nimport getIcon from \"./icon\";\r\n\r\nexport let size = 18;\r\nexport let icon = \"\";\r\nexport let style = \"\";\r\nexport let color = \"var(--secondary100)\";\r\nexport let hoverColor = \"var(--secondary75)\";\r\nexport let attributes = {};\r\n\r\nlet currentAttributes = [];\r\nconst addAttributes = (node, attributes) => {\r\n\r\n const add = (_attributes) => {\r\n const attrs = [];\r\n for(let attr in _attributes) {\r\n node.setAttribute(attr, _attributes[attr]);\r\n attrs.push(\"uk-toggle\")\r\n }\r\n currentAttributes = attrs;\r\n }\r\n\r\n add(attributes);\r\n\r\n return {\r\n // should implement update method\r\n update(attributes) {\r\n for(let attr of currentAttributes) {\r\n node.removeAttribute(attr)\r\n }\r\n add(attributes);\r\n },\r\n destroy() {}\r\n }\r\n}\r\n\r\n</script>\r\n\r\n<button style=\"{style}{style ? \";\" : \"\"} color:{color}; --hovercolor:{hoverColor}\"\r\n on:click\r\n use:addAttributes={attributes}>\r\n {@html getIcon(icon, size)}\r\n</button>\r\n\r\n\r\n<style>\r\n\r\nbutton {\r\n border-style: none;\r\n background-color: rgba(0,0,0,0);\r\n cursor: pointer;\r\n outline:none;\r\n}\r\n\r\nbutton:hover {\r\n color: var(--hovercolor);\r\n}\r\n\r\nbutton:active {\r\n outline:none;\r\n}\r\n\r\n</style>","<script>\r\n\r\nimport { \r\n last, \r\n sortBy, \r\n filter, \r\n map,\r\n uniqWith,\r\n isEqual,\r\n trimCharsStart,\r\n trimChars,\r\n join,\r\n includes\r\n} from \"lodash/fp\";\r\n\r\nimport { pipe } from \"../common/core\";\r\nimport getIcon from \"../common/icon\";\r\nimport { store } from \"../builderStore\";\r\n\r\nexport let components = []\r\nexport let thisLevel = \"\";\r\n\r\nlet pathPartsThisLevel;\r\nlet componentsThisLevel;\r\nlet subfolders;\r\n\r\nlet expandedFolders = [];\r\n\r\nconst joinPath = join(\"/\");\r\n\r\nconst normalizedName = name => pipe(name, [\r\n trimCharsStart(\"./\"),\r\n trimCharsStart(\"~/\"),\r\n trimCharsStart(\"../\"),\r\n trimChars(\" \")\r\n ]);\r\n\r\n\r\nconst isOnThisLevel = (c) => \r\n normalizedName(c.name).split(\"/\").length === pathPartsThisLevel\r\n &&\r\n (!thisLevel || normalizedName(c.name).startsWith(normalizedName(thisLevel)));\r\n\r\nconst notOnThisLevel = (c) => !isOnThisLevel(c);\r\n\r\nconst isInSubfolder = (subfolder, c) => \r\n normalizedName(c.name).startsWith(\r\n trimCharsStart(\"/\")(\r\n joinPath([thisLevel, subfolder])));\r\n\r\nconst isOnNextLevel = (c) => \r\n normalizedName(c.name).split(\"/\").length === pathPartsThisLevel + 1\r\n\r\nconst lastPartOfName = (c) => \r\n last(c.name.split(\"/\"))\r\n\r\nconst subFolder = (c) => {\r\n const cname = normalizedName(c.name);\r\n const folderName = cname.substring(thisLevel.length, cname.length).split(\"/\")[0];\r\n\r\n return ({\r\n name: folderName,\r\n isExpanded: includes(folderName)(expandedFolders),\r\n path: thisLevel + \"/\" + folderName\r\n });\r\n}\r\n\r\nconst subComponents = (subfolder) => pipe(components, [\r\n filter(c => isInSubfolder(subfolder, c))\r\n ]);\r\n\r\nconst expandFolder = folder => {\r\n const expandedFolder = {...folder};\r\n if(expandedFolder.isExpanded) {\r\n expandedFolder.isExpanded = false;\r\n expandedFolders = filter(f => f.name !== folder.name)(expandedFolders);\r\n } else {\r\n expandedFolder.isExpanded = true;\r\n expandedFolders.push(folder.name);\r\n }\r\n const newFolders = [...subfolders];\r\n newFolders.splice(\r\n newFolders.indexOf(folder),\r\n 1,\r\n expandedFolder);\r\n subfolders = newFolders;\r\n \r\n}\r\n\r\nconst isComponentSelected = (current,c) =>\r\n current \r\n && current.name === c.name\r\n\r\nconst isFolderSelected = (current, folder) => \r\n isInSubfolder(current, folder)\r\n\r\n\r\n\r\n$: {\r\n pathPartsThisLevel = !thisLevel \r\n ? 1\r\n : normalizedName(thisLevel).split(\"/\").length + 1;\r\n\r\n componentsThisLevel = \r\n pipe(components, [\r\n filter(isOnThisLevel),\r\n map(c => ({component:c, title:lastPartOfName(c)})),\r\n sortBy(\"title\")\r\n ]);\r\n\r\n subfolders = \r\n pipe(components, [\r\n filter(notOnThisLevel),\r\n sortBy(\"name\"),\r\n map(subFolder),\r\n uniqWith((f1,f2) => f1.path === f2.path)\r\n ]);\r\n}\r\n\r\n</script>\r\n\r\n<div class=\"root\" style={`padding-left: calc(10px * ${pathPartsThisLevel})`}>\r\n \r\n {#each subfolders as folder}\r\n <div class=\"hierarchy-item folder\"\r\n on:click|stopPropagation={() => expandFolder(folder)}>\r\n <span>{@html getIcon(folder.isExpanded ? \"chevron-down\" : \"chevron-right\", \"16\")}</span>\r\n <span class=\"title\" class:currentfolder={$store.currentFrontEndItem && isInSubfolder(folder.name, $store.currentFrontEndItem)}>{folder.name}</span>\r\n {#if folder.isExpanded}\r\n <svelte:self components={subComponents(folder.name)} \r\n thisLevel={folder.path} />\r\n {/if}\r\n </div>\r\n {/each}\r\n\r\n {#each componentsThisLevel as component}\r\n <div class=\"hierarchy-item component\" class:selected={isComponentSelected($store.currentFrontEndItem, component.component)}\r\n on:click|stopPropagation={() => store.setCurrentComponent(component.component)}>\r\n <span>{@html getIcon(\"circle\", \"7\")}</span>\r\n <span class=\"title\">{component.title}</span>\r\n </div>\r\n {/each}\r\n\r\n</div>\r\n\r\n<style>\r\n\r\n.root {\r\n color: var(--secondary50);\r\n font-size: .9rem;\r\n font-weight: 500;\r\n}\r\n\r\n.hierarchy-item {\r\n cursor: pointer;\r\n padding: 5px 0px;\r\n}\r\n\r\n.hierarchy-item:hover {\r\n color: var(--secondary);\r\n}\r\n\r\n.component {\r\n margin-left: 5px;\r\n}\r\n\r\n.currentfolder {\r\n color: var(--secondary100);\r\n}\r\n\r\n.selected {\r\n color: var(--primary100);\r\n font-weight: bold;\r\n}\r\n\r\n.title {\r\n margin-left: 10px;\r\n}\r\n\r\n\r\n</style>","<script>\r\nimport { store } from \"../builderStore\";\r\nimport getIcon from \"../common/icon\";\r\n\r\nconst getPage = (s, name) => {\r\n const props = s.pages[name];\r\n return ({name, props});\r\n}\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n <div class=\"hierarchy-item component\" class:selected={$store.currentFrontEndItem && $store.currentPageName === \"main\"}\r\n on:click|stopPropagation={() => store.setCurrentPage(\"main\")}>\r\n <span>{@html getIcon(\"circle\", \"7\")}</span>\r\n <span class=\"title\">Main</span>\r\n </div>\r\n\r\n <div class=\"hierarchy-item component\" class:selected={$store.currentFrontEndItem && $store.currentPageName === \"unauthenticated\"}\r\n on:click|stopPropagation={() => store.setCurrentPage(\"unauthenticated\")}>\r\n <span>{@html getIcon(\"circle\", \"7\")}</span>\r\n <span class=\"title\">Login</span>\r\n </div>\r\n\r\n</div>\r\n\r\n<style>\r\n\r\n.root {\r\n padding-bottom: 10px;\r\n padding-left: 10px;\r\n font-size: .9rem;\r\n color: var(--secondary50);\r\n font-weight: 500;\r\n}\r\n\r\n.hierarchy-item {\r\n cursor: pointer;\r\n padding: 5px 0px;\r\n}\r\n\r\n.hierarchy-item:hover {\r\n color: var(--secondary100);\r\n}\r\n\r\n.component {\r\n margin-left: 5px;\r\n}\r\n\r\n.selected {\r\n color: var(--primary100);\r\n font-weight: bold;\r\n}\r\n\r\n\r\n.title {\r\n margin-left: 10px;\r\n}\r\n\r\n</style>","<script>\r\n\r\nexport let checked=false;\r\nexport let label=\"\";\r\n\r\n</script>\r\n\r\n<input class=\"uk-checkbox\" type=\"checkbox\" bind:checked on:change />{label}\r\n\r\n<style>\r\n\r\ninput {\r\n margin-right:7px;\r\n}\r\n\r\n</style>","<script>\r\nexport let text = \"\";\r\nexport let label = \"\";\r\nexport let width = \"medium\";\r\nexport let size = \"small\";\r\nexport let margin = true;\r\nexport let infoText = \"\";\r\nexport let hasError = false;\r\nexport let disabled = false;\r\n</script>\r\n\r\n<div class:uk-margin={margin}>\r\n <label class=\"uk-form-label\">{label}</label>\r\n <div class=\"uk-form-controls\">\r\n <input class=\"uk-input uk-form-width-{width} uk-form-{size}\"\r\n class:uk-form-danger={hasError}\r\n on:change\r\n bind:value={text} \r\n {disabled}>\r\n </div>\r\n {#if infoText}\r\n <div class=\"info-text\">{infoText}</div>\r\n {/if}\r\n</div>\r\n\r\n<style>\r\n.info-text {\r\n font-size: 0.8em;\r\n color: var(--slate);\r\n}\r\n</style>\r\n\r\n","<script>\r\nimport {createEventDispatcher} from \"svelte\";\r\n\r\nexport let selected;\r\nexport let label;\r\nexport let options;\r\nexport let valueMember;\r\nexport let textMember;\r\nexport let multiple=false;\r\nexport let width = \"medium\";\r\nexport let size = \"small\";\r\n\r\nconst dispatch =createEventDispatcher();\r\n\r\n\r\n</script>\r\n\r\n\r\n<div class=\"uk-margin\">\r\n <label class=\"uk-form-label\">{label}</label>\r\n <div class=\"uk-form-controls\">\r\n {#if multiple}\r\n \r\n <select class=\"uk-select uk-form-width-{width} uk-form-{size}\" multiple bind:value={selected} on:change>\r\n {#each options as option}\r\n <option value={!valueMember ? option : valueMember(option)}>{!textMember ? option : textMember(option)}</option>\r\n {/each}\r\n </select>\r\n\r\n {:else}\r\n\r\n <select class=\"uk-select uk-form-width-{width} uk-form-{size}\" bind:value={selected} on:change>\r\n {#each options as option}\r\n <option value={!valueMember ? option : valueMember(option)}>{!textMember ? option : textMember(option)}</option>\r\n {/each}\r\n </select>\r\n {/if}\r\n </div>\r\n</div>\r\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\nexport const BB_STATE_BINDINGPATH = \"##bbstate\";\r\nexport const BB_STATE_FALLBACK = \"##bbstatefallback\";\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}, binding={} ) => {\r\n if(isNonEmptyString(path)) binding[BB_STATE_BINDINGPATH] = path;\r\n if(isNonEmptyString(fallback)) binding[BB_STATE_FALLBACK] = fallback;\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});\r\n\r\nconst isNonEmptyString = s => isString(s) && s.length > 0;","import { types } from \"./types\";\r\nimport { \r\n createProps, arrayElementComponentName \r\n} from \"./createProps\";\r\nimport { isString } from \"util\";\r\nimport { \r\n includes, filter, map, keys, \r\n flatten, flattenDeep, each,\r\n indexOf, isUndefined\r\n} from \"lodash/fp\";\r\nimport { common } from \"../../../../core/src\";\r\nimport {\r\n isBinding\r\n} from \"../../common/binding\";\r\n\r\nconst pipe = common.$;\r\n\r\nconst makeError = (errors, propName, stack) => (message) =>\r\n errors.push({\r\n stack,\r\n propName, \r\n error:message});\r\n\r\nexport const recursivelyValidate = (rootProps, getComponent, stack=[]) => {\r\n\r\n const getComponentPropsDefinition = componentName => {\r\n if(componentName.includes(\":\")) {\r\n const [parentComponent, arrayProp] = componentName.split(\":\");\r\n return getComponent(parentComponent)[arrayProp].elementDefinition;\r\n }\r\n return getComponent(componentName);\r\n }\r\n\r\n if(!rootProps._component) {\r\n const errs = [];\r\n makeError(errs, \"_component\", stack)(\"Component is not set\");\r\n return errs;\r\n // this would break everything else anyway\r\n }\r\n\r\n const propsDef = getComponentPropsDefinition(\r\n rootProps._component);\r\n\r\n const getPropsDefArray = (def) => pipe(def, [\r\n keys,\r\n map(k => def[k].name \r\n ? expandPropDef(def[k])\r\n : ({\r\n ...expandPropDef(def[k]), \r\n name:k }))\r\n ]);\r\n\r\n const propsDefArray = getPropsDefArray(propsDef);\r\n\r\n const errors = validateProps(\r\n propsDef,\r\n rootProps,\r\n stack,\r\n true);\r\n\r\n const validateChildren = (_defArray, _props, _stack) => pipe(_defArray, [\r\n filter(d => d.type === \"component\"),\r\n map(d => recursivelyValidate(\r\n _props[d.name], \r\n getComponentPropsDefinition, \r\n [..._stack, d.name])),\r\n flatten\r\n ]);\r\n\r\n const childErrors = validateChildren(\r\n propsDefArray, rootProps, stack);\r\n\r\n const childArrayErrors = pipe(propsDefArray, [\r\n filter(d => d.type === \"array\"),\r\n map(d => pipe(rootProps[d.name], [ \r\n map(elementProps => pipe(elementProps._component, [\r\n getComponentPropsDefinition,\r\n getPropsDefArray,\r\n arr => validateChildren(\r\n arr, \r\n elementProps,\r\n [...stack, \r\n `${d.name}[${indexOf(elementProps)(rootProps[d.name])}]`]) \r\n ])) \r\n ]))\r\n ]);\r\n\r\n return flattenDeep([errors, ...childErrors, ...childArrayErrors]);\r\n}\r\n\r\nconst expandPropDef = propDef => {\r\n const p = isString(propDef)\r\n ? types[propDef].defaultDefinition()\r\n : propDef;\r\n if(p.type === \"array\" && isString(p.elementDefinition)) {\r\n p.elementDefinition = types[p.elementDefinition].defaultDefinition()\r\n }\r\n return p;\r\n}\r\n\r\n\r\nexport const validateProps = (propsDefinition, props, stack=[], isFinal=true) => {\r\n\r\n const errors = [];\r\n\r\n if(isFinal && !props._component) {\r\n makeError(errors, \"_component\", stack)(\"Component is not set\");\r\n return errors;\r\n // this would break everything else anyway\r\n }\r\n\r\n for(let propDefName in propsDefinition) {\r\n \r\n if(propDefName === \"_component\") continue;\r\n\r\n const propDef = expandPropDef(propsDefinition[propDefName]);\r\n\r\n const type = types[propDef.type];\r\n\r\n const error = makeError(errors, propDefName, stack); \r\n\r\n const propValue = props[propDefName];\r\n\r\n // component declarations dont need to define al props.\r\n if(!isFinal && isUndefined(propValue)) continue;\r\n\r\n if(isFinal && propDef.required && propValue) {\r\n error(`Property ${propDefName} is required`);\r\n continue;\r\n } \r\n\r\n if(isBinding(propValue)) {\r\n if(propDef.type === \"array\" \r\n || propDef.type === \"component\"\r\n || propDef.type === \"event\") {\r\n error(`Cannot apply binding to type ${propDef.type}`);\r\n continue;\r\n }\r\n }\r\n else if(!type.isOfType(propValue)) {\r\n error(`Property ${propDefName} is not of type ${propDef.type}. Actual value ${propValue}`)\r\n continue;\r\n }\r\n\r\n if(propDef.type === \"array\") {\r\n let index = 0;\r\n for(let arrayItem of propValue) {\r\n const arrayErrs = validateProps(\r\n propDef.elementDefinition,\r\n arrayItem,\r\n [...stack, `${propDefName}[${index}]`],\r\n isFinal\r\n )\r\n for(let arrErr of arrayErrs) {\r\n errors.push(arrErr);\r\n }\r\n index++;\r\n } \r\n }\r\n\r\n if(propDef.type === \"options\" \r\n && propValue\r\n && !isBinding(propValue)\r\n && !includes(propValue)(propDef.options)) {\r\n error(`Property ${propDefName} is not one of allowed options. Acutal value is ${propValue}`);\r\n }\r\n\r\n }\r\n\r\n return errors;\r\n}\r\n\r\nexport const validatePropsDefinition = (propsDefinition) => {\r\n const { errors } = createProps(\"dummy_component_name\", propsDefinition);\r\n \r\n\r\n // arrar props without elementDefinition\r\n pipe(propsDefinition, [\r\n keys,\r\n map(k => ({\r\n propDef:propsDefinition[k],\r\n propName:k\r\n })),\r\n filter(d => d.propDef.type === \"array\" && !d.propDef.elementDefinition),\r\n each(d => makeError(errors, d.propName)(`${d.propName} does not have a definition for it's item props`))\r\n ]);\r\n\r\n const arrayPropValidationErrors = pipe(propsDefinition, [\r\n keys,\r\n map(k => propsDefinition[k]),\r\n filter(d => d.type === \"array\" && d.elementDefinition),\r\n map(d => validatePropsDefinition(d.elementDefinition)),\r\n flatten\r\n ]);\r\n\r\n pipe(propsDefinition, [\r\n keys,\r\n map(k => ({\r\n propDef:propsDefinition[k],\r\n propName:k\r\n })),\r\n filter(d => d.propDef.type === \"options\"\r\n && (!d.propDef.options || d.propDef.options.length === 0)),\r\n each(d => makeError(errors, d.propName)(`${d.propName} does not have any options`))\r\n ]);\r\n\r\n return [...errors, ...arrayPropValidationErrors] \r\n\r\n}\r\n\r\n","<script>\r\n\r\nimport { searchAllComponents } from \"./pagesParsing/searchComponents\";\r\nimport { store } from \"../builderStore\";\r\n\r\nexport let onComponentChosen = () => {};\r\n\r\nlet allComponents = [];\r\nlet phrase = \"\";\r\n\r\nstore.subscribe(s => {\r\n allComponents = s.allComponents;\r\n});\r\n\r\n$: filteredComponents = \r\n !phrase \r\n ? [] \r\n : searchAllComponents(allComponents, phrase);\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n\r\n <form class=\"uk-search uk-search-large\">\r\n <span uk-search-icon></span>\r\n <input class=\"uk-search-input\" \r\n type=\"search\" \r\n placeholder=\"Based on component...\" \r\n bind:value={phrase}>\r\n </form>\r\n\r\n <div>\r\n {#each filteredComponents as component}\r\n <div class=\"component\" on:click={() => onComponentChosen(component)}>\r\n <div class=\"title\">{component.name}</div>\r\n <div class=\"description\">{component.description}</div>\r\n </div>\r\n {/each}\r\n </div>\r\n\r\n</div>\r\n\r\n<style>\r\n\r\n.component {\r\n padding:5px;\r\n border-style: solid;\r\n border-width: 0 0 1px 0;\r\n border-color: var(--lightslate);\r\n cursor: pointer;\r\n}\r\n\r\n.component:hover {\r\n background-color: var(--primary10);\r\n}\r\n\r\n.component > .title {\r\n font-size: 13pt;\r\n color: var(--secondary100);\r\n}\r\n\r\n.component > .description {\r\n font-size: 10pt;\r\n color: var(--primary75);\r\n font-style: italic;\r\n}\r\n\r\n</style>","<script>\r\nexport let style=\"\";\r\n</script>\r\n\r\n<div class=\"root\" style={style}>\r\n <slot />\r\n</div>\r\n\r\n<style>\r\n\r\n.root {\r\n display: flex;\r\n}\r\n\r\n.root:last-child {\r\n border-radius: 0 var(--borderradius) var(--borderradius) 0;\r\n}\r\n\r\n.root:first-child {\r\n border-radius: var(--borderradius) 0 0 var(--borderradius); \r\n}\r\n\r\n.root:not(:first-child):not(:last-child) {\r\n border-radius: 0;\r\n}\r\n\r\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>\r\nimport {\r\n last\r\n} from \"lodash/fp\";\r\nimport IconButton from \"../common/IconButton.svelte\";\r\nimport ComponentSearch from \"./ComponentSearch.svelte\";\r\nimport Button from \"../common/Button.svelte\";\r\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\r\nimport UIkit from \"uikit\";\r\nimport {\r\n getComponentInfo\r\n} from \"./pagesParsing/createProps\";\r\nimport { store } from \"../builderStore\";\r\n\r\nconst emptyProps = () => ({_component:\"\"})\r\n\r\nexport let props = emptyProps();\r\nexport let onValueChanged = () => {};\r\nexport let onComponentChosen = () => {};\r\nexport let onEdit = () => {};\r\nexport let disabled = false;\r\n\r\nconst CHOOSE_COMPONENT = \"choose_component\";\r\nconst CLEAR_COMPONENT = \"clear_component\";\r\n\r\nlet allComponents;\r\nlet modalElement;\r\nlet modalAction;\r\n\r\nstore.subscribe(s => {\r\n allComponents = s.allComponents;\r\n});\r\n\r\n$: componentSelected = props._component.length > 0;\r\n$: shortName = last(props._component.split(\"/\"));\r\n\r\nconst chooseComponent = () => {\r\n modalAction = CHOOSE_COMPONENT;\r\n showDialog();\r\n}\r\n\r\nconst clearComponent = () => {\r\n modalAction = CLEAR_COMPONENT;\r\n showDialog();\r\n}\r\n\r\nconst componentChosen = (component) => {\r\n const componentInfo = getComponentInfo(allComponents, component.name);\r\n props = componentInfo.fullProps;\r\n onValueChanged(props);\r\n onComponentChosen();\r\n hideDialog();\r\n}\r\n\r\nconst hideDialog = () => {\r\n UIkit.modal(modalElement).hide();\r\n}\r\n\r\nconst showDialog = () => {\r\n UIkit.modal(modalElement).show();\r\n}\r\n\r\nconst confirmClearComponent = () => {\r\n props = emptyProps();\r\n onValueChanged(emptyProps());\r\n hideDialog();\r\n}\r\n\r\n</script>\r\n\r\n\r\n<div class=\"root uk-form-controls\">\r\n <div class:selectedname={componentSelected}>\r\n {componentSelected ? shortName : \"(none)\"}\r\n </div>\r\n <div>\r\n {#if !disabled && componentSelected}\r\n <IconButton icon=\"edit\" \r\n on:click={onEdit}/>\r\n\r\n <IconButton icon=\"trash\" \r\n on:click={clearComponent} />\r\n {:else if !disabled && !componentSelected}\r\n <IconButton icon=\"plus\" \r\n on:click={chooseComponent} />\r\n {/if}\r\n \r\n </div>\r\n</div>\r\n\r\n<div bind:this={modalElement} uk-modal>\r\n <div class=\"uk-modal-dialog\">\r\n\r\n {#if modalAction === CHOOSE_COMPONENT}\r\n <div class=\"uk-modal-body\">\r\n <ComponentSearch onComponentChosen={componentChosen} />\r\n </div>\r\n {:else if modalAction === CLEAR_COMPONENT}\r\n <div class=\"uk-modal-body\">\r\n Clear this component ?\r\n </div>\r\n <div class=\"uk-modal-footer\">\r\n <ButtonGroup>\r\n <Button grouped \r\n on:click={hideDialog} \r\n color=\"secondary\" >Cancel</Button>\r\n <Button grouped \r\n on:click={confirmClearComponent}>OK</Button>\r\n </ButtonGroup>\r\n </div>\r\n {/if}\r\n\r\n </div>\r\n\r\n</div>\r\n\r\n<style>\r\n\r\n.root {\r\n display: grid;\r\n grid-template-columns: [name] 1fr [actions] auto;\r\n}\r\n\r\n.root > div:nth-child(1) {\r\n grid-column-start: name;\r\n color: var(--secondary50);\r\n}\r\n\r\n.root > div:nth-child(2) {\r\n grid-column-start: actions;\r\n}\r\n\r\n.selectedname {\r\n font-weight: bold;\r\n color: var(--secondary);\r\n}\r\n\r\n</style>","<script>\r\nimport IconButton from \"../common/IconButton.svelte\";\r\nimport {\r\n createArrayElementProps\r\n} from \"./pagesParsing/createProps\";\r\nimport PropControl from \"./PropControl.svelte\";\r\nimport {\r\n some,\r\n cloneDeep,\r\n} from \"lodash/fp\";\r\nimport { validateProps } from \"./pagesParsing/validateProps\";\r\n\r\nexport let parentProps;\r\nexport let propDef;\r\nexport let onValueChanged;\r\nexport let onValidate = () => {};\r\nexport let onEditComponentProp = () => {};\r\n\r\nlet value = [];\r\nlet elementDefinitionArray;\r\nlet elementErrors = {};\r\n\r\n$: {\r\n const elArray = [];\r\n for(let elProp in propDef.elementDefinition) {\r\n if(elProp === \"_component\") continue;\r\n elArray.push({\r\n ...propDef.elementDefinition[elProp],\r\n ____name: elProp\r\n });\r\n }\r\n elementDefinitionArray = elArray;\r\n value = parentProps[propDef.____name];\r\n}\r\n\r\nconst addElement = () => {\r\n const newElement = createArrayElementProps(\r\n propDef.____name, \r\n propDef.elementDefinition).props;\r\n\r\n value = [...value, newElement];\r\n onValueChanged(value);\r\n}\r\n\r\nconst validate = (index, elementProps) => {\r\n elementErrors[index] = validateProps(\r\n propDef.elementDefinition, elementProps, [], true);\r\n onValidate(elementErrors[index]);\r\n return elementErrors[index].length === 0;\r\n}\r\n\r\nconst setProp = (index) => (name, propValue) => {\r\n const newValue = cloneDeep(value);\r\n const newProps = cloneDeep(newValue[index]);\r\n newProps[name] = propValue;\r\n newValue[index] = newProps;\r\n value = newValue;\r\n\r\n if(validate(index, newProps))\r\n onValueChanged(newValue);\r\n \r\n}\r\n\r\nlet fieldHasError = index => propName => \r\n some(e => e.propName === propName)(elementErrors[index]);\r\n\r\nconst onEditComponent = (index, propName) => () => {\r\n onEditComponentProp(index, propName);\r\n}\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n\r\n\r\n <div class=\"item-container\">\r\n {#each value as item, index}\r\n \r\n <div class=\"item-inner-container\">\r\n {#each elementDefinitionArray as propDef}\r\n <PropControl setProp={setProp(index)}\r\n fieldHasError={fieldHasError(index)}\r\n {propDef}\r\n props={item}\r\n {index}\r\n onEditComponent={onEditComponent(index, propDef.____name)}\r\n disabled={false} />\r\n {/each}\r\n </div>\r\n \r\n {/each}\r\n\r\n <div class=\"addelement-container\"\r\n on:click={addElement}>\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.addelement-container:hover {\r\n background-color: var(--primary25);\r\n}\r\n\r\n\r\n.item-container {\r\n padding-left: 3px;\r\n background: var(--secondary10);\r\n}\r\n\r\n</style>","<script>\r\nimport {\r\n isString\r\n} from \"lodash/fp\";\r\nimport IconButton from \"../common/IconButton.svelte\";\r\nimport {\r\n isBinding, getBinding, setBinding\r\n} from \"../common/binding\";\r\n\r\nexport let value=\"\";\r\nexport let onChanged= () => {};\r\nexport let type=\"\";\r\nexport let options=[];\r\n\r\nlet isBound=false;\r\nlet bindingPath=\"\";\r\nlet bindingFallbackValue=\"\";\r\nlet isExpanded = false;\r\nlet forceIsBound = false;\r\n\r\n$: {\r\n isBound= forceIsBound || isBinding(value);\r\n\r\n if(isBound) {\r\n const binding = getBinding(value);\r\n bindingPath= binding.path;\r\n bindingFallbackValue= binding.fallback;\r\n } else {\r\n bindingPath=\"\";\r\n bindingFallbackValue=\"\";\r\n }\r\n}\r\n\r\nconst clearBinding = () => {\r\n forceIsBound = false;\r\n onChanged(\"\");\r\n}\r\n\r\nconst bind = (path, fallback) => {\r\n if(!path) {\r\n clearBinding(\"\");\r\n return;\r\n }\r\n const binding = setBinding({path, fallback});\r\n onChanged(binding);\r\n}\r\n\r\nconst setBindingPath = ev => {\r\n forceIsBound = false;\r\n bind(ev.target.value, bindingFallbackValue)\r\n}\r\n\r\nconst setBindingFallback = ev => {\r\n bind(bindingPath, ev.target.value);\r\n}\r\n\r\n\r\nconst makeBinding = () => {\r\n forceIsBound=true;\r\n isExpanded=true;\r\n}\r\n\r\n</script>\r\n\r\n{#if isBound}\r\n<div>\r\n <div class=\"bound-header\">\r\n <div>{isExpanded ? \"\" : bindingPath}</div>\r\n <IconButton icon={isExpanded ? \"chevron-up\" : \"chevron-down\"} \r\n size=\"12\"\r\n on:click={() => isExpanded=!isExpanded}/>\r\n <IconButton icon=\"trash\" \r\n size=\"12\"\r\n on:click={clearBinding}/>\r\n </div>\r\n {#if isExpanded}\r\n <div>\r\n <div class=\"binding-prop-label\">Binding Path</div>\r\n <input class=\"uk-input uk-form-small\"\r\n value={bindingPath}\r\n on:change={setBindingPath} >\r\n <div class=\"binding-prop-label\">Fallback Value</div>\r\n <input class=\"uk-input uk-form-small\"\r\n value={bindingFallbackValue}\r\n on:change={setBindingFallback} >\r\n </div>\r\n {/if}\r\n\r\n</div>\r\n{:else}\r\n<div class=\"unbound-container\">\r\n\r\n {#if type === \"bool\"}\r\n\r\n <div>\r\n <IconButton icon={value == true ? \"check-square\" : \"square\"}\r\n size=\"19\"\r\n on:click={() => value = !value}/>\r\n </div>\r\n\r\n {:else if type === \"options\"}\r\n\r\n <select class=\"uk-select uk-form-small\" \r\n value={value} \r\n on:change={ev => onChanged(ev.target.checked)}>\r\n {#each options as option}\r\n <option value={option}>{option}</option>\r\n {/each}\r\n </select>\r\n\r\n {:else}\r\n\r\n <input class=\"uk-input uk-form-small\"\r\n on:change={ev => onChanged(ev.target.value)}\r\n bind:value={value}\r\n style=\"flex: 1 0 auto;\" > \r\n\r\n\r\n {/if}\r\n <IconButton icon=\"link\" \r\n size=\"12\"\r\n on:click={makeBinding} />\r\n</div>\r\n{/if}\r\n\r\n\r\n<style>\r\n\r\n.unbound-container {\r\n display:flex;\r\n}\r\n\r\n.unbound-container > *:nth-child(1) {\r\n width:auto;\r\n flex: 1 0 auto;\r\n}\r\n\r\n.bound-header {\r\n display: flex;\r\n}\r\n\r\n.bound-header > div:nth-child(1) {\r\n flex: 1 0 auto;\r\n width: 30px;\r\n color: var(--darkslate);\r\n padding-left: 5px;\r\n font-style: italic;\r\n}\r\n\r\n.binding-prop-label {\r\n color: var(--darkslate);\r\n}\r\n\r\n\r\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 } from \"../common/eventHandlers\";\r\n\r\nexport let event;\r\nexport let onChanged;\r\nexport let onRemoved;\r\n\r\nconst events = [\r\n {name:\"\", parameters: []},\r\n {name:\"Set State\", parameters: [\"path\", \"value\"]},\r\n {name:\"Load Record\", parameters: [\"recordKey\", \"statePath\"]},\r\n];\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>\r\n\r\nimport Checkbox from \"../common/Checkbox.svelte\";\r\nimport Textbox from \"../common/Textbox.svelte\";\r\nimport Dropdown from \"../common/Dropdown.svelte\";\r\nimport ComponentPropSelector from \"./ComponentPropSelector.svelte\";\r\nimport PropArraySelector from \"./PropArraySelector.svelte\";\r\nimport EventListSelector from \"./EventListSelector.svelte\";\r\nimport StateBindingControl from \"./StateBindingControl.svelte\";\r\n\r\nexport let errors = [];\r\nexport let setProp = () => {};\r\nexport let fieldHasError =() => {};\r\nexport let propDef = {};\r\nexport let props = {};\r\nexport let disabled;\r\nexport let index;\r\nexport let onEditComponent = () => {};\r\n\r\n$: isOdd = (index % 2 !== 0);\r\n\r\nconst setComponentProp = (props) => {\r\n setProp(propDef.____name, props);\r\n}\r\n\r\n</script>\r\n\r\n\r\n<div class=\"root\" >\r\n\r\n {#if propDef.type === \"component\"}\r\n\r\n <div class=\"prop-label\">{propDef.____name}</div>\r\n <ComponentPropSelector label={propDef.____name}\r\n props={props[propDef.____name]}\r\n {disabled}\r\n onEdit={onEditComponent}\r\n onComponentChosen={onEditComponent}\r\n onValueChanged={setComponentProp}/>\r\n\r\n {:else if propDef.type === \"array\"}\r\n\r\n <div class=\"prop-label\">{propDef.____name}</div>\r\n <PropArraySelector parentProps={props}\r\n {propDef}\r\n onValueChanged={setComponentProp}\r\n onEditComponentProp={onEditComponent} />\r\n\r\n {:else if propDef.type === \"event\"}\r\n\r\n <div class=\"prop-label\">{propDef.____name}</div>\r\n <EventListSelector parentProps={props}\r\n {propDef}\r\n onValueChanged={setComponentProp} />\r\n\r\n {:else}\r\n\r\n <div class=\"prop-label\">{propDef.____name}</div>\r\n <StateBindingControl value={props[propDef.____name]}\r\n type={propDef.type}\r\n options={propDef.options}\r\n onChanged={v => setProp(propDef.____name, v)}/>\r\n\r\n {/if} \r\n\r\n</div>\r\n\r\n<style>\r\n\r\n.root {\r\n padding: 3px 5px 7px 10px;\r\n border-style: dotted;\r\n border-width: 0 0 1px 0;\r\n border-color: var(--primary25);\r\n}\r\n\r\n.prop-label {\r\n font-size: 0.9em;\r\n color: var(--primary100);\r\n font-weight: bold;\r\n}\r\n\r\n</style>","<script>\r\n\r\nimport {\r\n keys,\r\n map,\r\n some,\r\n includes,\r\n cloneDeep,\r\n isEqual,\r\n sortBy,\r\n filter,\r\n difference\r\n} from \"lodash/fp\";\r\nimport { pipe } from \"../common/core\";\r\nimport { \r\n getComponentInfo ,\r\n getInstanceProps\r\n} from \"./pagesParsing/createProps\";\r\nimport { getExactComponent } from \"./pagesParsing/searchComponents\";\r\nimport Checkbox from \"../common/Checkbox.svelte\";\r\nimport Textbox from \"../common/Textbox.svelte\";\r\nimport Dropdown from \"../common/Dropdown.svelte\";\r\nimport { validateProps } from \"./pagesParsing/validateProps\";\r\nimport ComponentPropSelector from \"./ComponentPropSelector.svelte\";\r\nimport PropControl from \"./PropControl.svelte\";\r\nimport IconButton from \"../common/IconButton.svelte\";\r\n\r\nexport let shouldValidate = true;\r\nexport let onValidate = () => {};\r\nexport let componentInfo;\r\nexport let instanceProps = null;\r\nexport let onPropsChanged = () => {};\r\nexport let onEditComponentProp = () => {};\r\n\r\nlet errors = [];\r\nlet props = {};\r\nlet propsDefinitions = [];\r\nlet inheritedPropsDefinitions = [];\r\nlet inheritedExpanded = false;\r\nlet isInstance = false;\r\n\r\nconst isPropInherited = name => \r\n includes(name)(componentInfo.inheritedProps);\r\n\r\n$: {\r\n if(componentInfo)\r\n {\r\n isInstance = !!instanceProps;\r\n props = isInstance \r\n ? getInstanceProps(componentInfo, instanceProps)\r\n : cloneDeep(componentInfo.fullProps);\r\n\r\n propsDefinitions = pipe(componentInfo.propsDefinition, [\r\n keys,\r\n filter(k => !isPropInherited(k)),\r\n map(k => ({...componentInfo.propsDefinition[k], ____name:k})),\r\n sortBy(\"____name\")\r\n ]);\r\n\r\n inheritedPropsDefinitions = pipe(componentInfo.propsDefinition, [\r\n keys,\r\n filter(k => isPropInherited(k)),\r\n map(k => ({...componentInfo.propsDefinition[k], ____name:k})),\r\n sortBy(\"____name\")\r\n ]);\r\n }\r\n}\r\n\r\n\r\nlet setProp = (name, value) => {\r\n const newProps = cloneDeep(props);\r\n\r\n let finalProps = isInstance ? newProps : cloneDeep(componentInfo.component.props);\r\n\r\n if(!isInstance) {\r\n const nowSet = [];\r\n for(let p of componentInfo.unsetProps) {\r\n if(!isEqual(newProps[p])(componentInfo.rootDefaultProps[p])) {\r\n finalProps[p] = newProps[p];\r\n nowSet.push(p);\r\n }\r\n }\r\n componentInfo.unsetProps = difference(nowSet)(componentInfo.unsetProps);\r\n }\r\n\r\n newProps[name] = value;\r\n finalProps[name] = value;\r\n props = newProps;\r\n if(validate(finalProps))\r\n onPropsChanged(finalProps);\r\n \r\n}\r\n \r\nconst validate = (finalProps) => {\r\n errors = validateProps(componentInfo.propsDefinition, finalProps, [], false);\r\n onValidate(errors);\r\n return errors.length === 0;\r\n}\r\n\r\nconst fieldHasError = (propName) => \r\n some(e => e.propName === propName)(errors);\r\n\r\nconst onEditComponent = (propName) => (arrayIndex, arrayPropName) => {\r\n onEditComponentProp(propName, arrayIndex, arrayPropName);\r\n}\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n\r\n <form class=\"uk-form-stacked\">\r\n {#each propsDefinitions as propDef, index}\r\n \r\n <PropControl {setProp}\r\n {fieldHasError}\r\n {propDef}\r\n {props}\r\n {index}\r\n onEditComponent={onEditComponent(propDef.____name)}\r\n disabled={false} />\r\n \r\n {/each}\r\n\r\n {#if inheritedPropsDefinitions.length > 0}\r\n <div class=\"inherited-title padding\">\r\n <div>Inherited</div>\r\n <div>\r\n <IconButton icon={inheritedExpanded ? \"chevron-down\" : \"chevron-right\"}\r\n on:click={() => inheritedExpanded = !inheritedExpanded}/>\r\n </div>\r\n </div>\r\n {/if}\r\n\r\n {#if inheritedExpanded}\r\n {#each inheritedPropsDefinitions as propDef, index}\r\n \r\n <PropControl {setProp}\r\n {fieldHasError}\r\n {propDef}\r\n {props}\r\n {index}\r\n disabled={true} />\r\n \r\n {/each}\r\n {/if}\r\n </form>\r\n\r\n\r\n \r\n\r\n</div>\r\n\r\n\r\n<style>\r\n\r\n.root {\r\n font-size:10pt;\r\n}\r\n\r\n.padding {\r\n padding: 0 10px;\r\n}\r\n\r\n.inherited-title {\r\n margin-top: 40px;\r\n display: grid;\r\n grid-template-columns: [name] 1fr [actions] auto;\r\n border-style: solid;\r\n border-width: 0px 0px 1px 0px;\r\n border-color: var(--lightslate);\r\n font-style: italic;\r\n}\r\n\r\n.inherited-title > div:nth-child(1) {\r\n grid-column-start: name;\r\n color: var(--slate);\r\n}\r\n\r\n.inherited-title > div:nth-child(2) {\r\n grid-column-start: actions;\r\n color: var(--secondary100);\r\n}\r\n\r\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>\r\n\r\nimport PropsView from \"./PropsView.svelte\";\r\nimport IconButton from \"../common/IconButton.svelte\";\r\nimport { getComponentInfo } from \"./pagesParsing/createProps\";\r\nimport { store } from \"../builderStore\";\r\nimport { \r\n cloneDeep,\r\n isUndefined\r\n} from \"lodash/fp\";\r\nimport { fade, slide } from 'svelte/transition';\r\n\r\nexport let title = \"\";\r\nexport let onGoBack = () => {};\r\nexport let instanceProps = {};\r\nexport let onPropsChanged = () => {};\r\n\r\n\r\nlet editingSubComponentName;\r\nlet editingSubComponentProps;\r\nlet editingSubComponentArrayIndex;\r\nlet editingSubComponentArrayPropName;\r\nlet editingSubComponentTitle;\r\nlet allComponents;\r\n\r\nstore.subscribe(s => {\r\n allComponents = s.allComponents;\r\n})\r\n\r\n$: componentInfo = getComponentInfo(\r\n allComponents, instanceProps._component);\r\n\r\nconst onSubComponentGoBack = () => {\r\n editingSubComponentName = null;\r\n editingSubComponentProps = null;\r\n}\r\n\r\nconst onEditComponentProp = (propName, arrayIndex, arrayPropName) => {\r\n editingSubComponentName = propName;\r\n editingSubComponentTitle = isUndefined(arrayIndex)\r\n ? propName\r\n : `${propName}[${arrayIndex}].${arrayPropName}`;\r\n editingSubComponentProps = isUndefined(arrayIndex)\r\n ? instanceProps[propName]\r\n : instanceProps[propName][arrayIndex][arrayPropName];\r\n editingSubComponentArrayIndex = arrayIndex;\r\n editingSubComponentArrayPropName = arrayPropName;\r\n};\r\n\r\n\r\nconst onSubComponentPropsChanged = (subProps) => {\r\n const newProps = cloneDeep(instanceProps);\r\n if(isUndefined(editingSubComponentArrayIndex)) {\r\n newProps[editingSubComponentName] = subProps;\r\n } else {\r\n newProps[editingSubComponentName]\r\n [editingSubComponentArrayIndex]\r\n [editingSubComponentArrayPropName] = subProps;\r\n }\r\n \r\n instanceProps = newProps;\r\n onPropsChanged(newProps);\r\n}\r\n\r\n\r\nconst propsChanged = newProps => {\r\n instanceProps = newProps;\r\n onPropsChanged(newProps);\r\n}\r\n\r\n</script>\r\n\r\n<div>\r\n\r\n <div class=\"title\">\r\n <IconButton icon=\"chevron-left\"\r\n on:click={onGoBack}/>\r\n <span>{title}</span>\r\n </div>\r\n\r\n {#if editingSubComponentName}\r\n <div in:slide={{delay: 250, duration: 300}}\r\n out:fade>\r\n <svelte:self onPropsChanged={onSubComponentPropsChanged}\r\n onGoBack={onSubComponentGoBack}\r\n instanceProps={editingSubComponentProps}\r\n title={editingSubComponentTitle} />\r\n </div>\r\n {:else}\r\n <PropsView {instanceProps}\r\n {componentInfo}\r\n onPropsChanged={propsChanged}\r\n {onEditComponentProp} />\r\n {/if}\r\n \r\n\r\n \r\n\r\n</div>\r\n\r\n<style>\r\n.title {\r\n padding:3px;\r\n background-color: white;\r\n color: var(--secondary100);\r\n border-style:solid;\r\n border-width: 1px 0 0 0;\r\n border-color: var(--lightslate);\r\n}\r\n\r\n.title > span {\r\n margin-left: 10px;\r\n }\r\n</style>","<script>\r\n\r\nimport PropsView from \"./PropsView.svelte\";\r\nimport { store } from \"../builderStore\";\r\nimport { isRootComponent } from \"./pagesParsing/searchComponents\";\r\nimport IconButton from \"../common/IconButton.svelte\";\r\nimport Textbox from \"../common/Textbox.svelte\";\r\nimport UIkit from \"uikit\";\r\nimport { pipe } from \"../common/core\";\r\nimport {\r\n getComponentInfo\r\n} from \"./pagesParsing/createProps\";\r\nimport Button from \"../common/Button.svelte\";\r\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\r\nimport ComponentInstanceEditor from \"./ComponentInstanceEditor.svelte\";\r\n\r\nimport { \r\n cloneDeep, \r\n join,\r\n split,\r\n map,\r\n keys,\r\n isUndefined,\r\n last\r\n} from \"lodash/fp\";\r\nimport { assign } from \"lodash\";\r\n\r\nlet component;\r\nlet name = \"\";\r\nlet description = \"\";\r\nlet tagsString = \"\";\r\nlet nameInvalid = \"\";\r\nlet componentDetailsExpanded = false;\r\nlet componentInfo;\r\nlet modalElement\r\nlet propsValidationErrors = [];\r\nlet editingComponentInstance;\r\nlet editingComponentInstancePropName=\"\";\r\nlet editingComponentArrayIndex;\r\nlet editingComponentArrayPropName;\r\nlet editingComponentInstanceTitle;\r\n\r\nlet allComponents;\r\n\r\n$: shortName = last(name.split(\"/\"));\r\n\r\nstore.subscribe(s => {\r\n component = s.currentFrontEndItem;\r\n if(!component) return;\r\n name = component.name;\r\n description = component.description;\r\n tagsString = join(\", \")(component.tags);\r\n componentInfo = s.currentComponentInfo;\r\n componentDetailsExpanded = s.currentComponentIsNew;\r\n allComponents = s.allComponents;\r\n});\r\n\r\nconst save = () => {\r\n\r\n if(!validate()) return;\r\n\r\n component.name = name;\r\n component.description = description;\r\n component.tags = pipe(tagsString, [\r\n split(\",\"),\r\n map(s => s.trim())\r\n ]);\r\n\r\n store.saveDerivedComponent(component);\r\n}\r\n\r\nconst deleteComponent = () => {\r\n showDialog();\r\n}\r\n\r\nconst confirmDeleteComponent = () => {\r\n store.deleteDerivedComponent(component.name);\r\n hideDialog();\r\n}\r\n\r\nconst onPropsValidate = result => {\r\n propsValidationErrors = result;\r\n}\r\n\r\nconst updateComponent = doChange => {\r\n const newComponent = cloneDeep(component);\r\n doChange(newComponent);\r\n component = newComponent;\r\n componentInfo = getComponentInfo(allComponents, newComponent);\r\n}\r\n\r\nconst onPropsChanged = newProps => {\r\n updateComponent(newComponent => \r\n assign(newComponent.props, newProps));\r\n \r\n}\r\n\r\nconst validate = () => {\r\n const fieldInvalid = (field, err) => \r\n errors[field] = err;\r\n const fieldValid = field => \r\n errors[field] && delete errors[field];\r\n\r\n if(!name) nameInvalid = \"component name i not supplied\";\r\n else nameInvalid = \"\";\r\n\r\n return (!nameInvalid && propsValidationErrors.length === 0);\r\n}\r\n\r\nconst hideDialog = () => {\r\n UIkit.modal(modalElement).hide();\r\n}\r\n\r\nconst showDialog = () => {\r\n UIkit.modal(modalElement).show();\r\n}\r\n\r\nconst onEditComponentProp = (propName, arrayIndex, arrayPropName) => {\r\n\r\n editingComponentInstance = isUndefined(arrayIndex) \r\n ? component.props[propName]\r\n : component.props[propName][arrayIndex][arrayPropName];\r\n editingComponentInstancePropName = propName;\r\n editingComponentInstanceTitle = isUndefined(arrayIndex)\r\n ? propName\r\n : `${propName}[${arrayIndex}].${arrayPropName}`;\r\n \r\n editingComponentArrayIndex = arrayIndex;\r\n editingComponentArrayPropName = arrayPropName;\r\n}\r\n\r\nconst componentInstanceCancelEdit = () => {\r\n editingComponentInstance = null;\r\n editingComponentInstancePropName = \"\";\r\n}\r\n\r\nconst componentInstancePropsChanged = (instanceProps) => {\r\n updateComponent(newComponent => {\r\n if(isUndefined(editingComponentArrayIndex)) {\r\n newComponent.props[editingComponentInstancePropName] = instanceProps;\r\n } else {\r\n newComponent.props[editingComponentInstancePropName]\r\n [editingComponentArrayIndex]\r\n [editingComponentArrayPropName] = instanceProps;\r\n }\r\n });\r\n}\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n\r\n <div class=\"title\">\r\n <div>{shortName}</div>\r\n <div>\r\n <IconButton icon=\"save\" \r\n on:click={save} \r\n color=\"var(--primary100)\"\r\n hoverColor=\"red\"/>\r\n <IconButton icon=\"trash\" \r\n on:click={deleteComponent} \r\n color=\"var(--primary100)\"\r\n hoverColor=\"red\"/>\r\n </div>\r\n </div>\r\n\r\n {#if editingComponentInstance}\r\n <ComponentInstanceEditor onGoBack={componentInstanceCancelEdit}\r\n title={editingComponentInstanceTitle}\r\n instanceProps={editingComponentInstance}\r\n onPropsChanged={componentInstancePropsChanged}/>\r\n {:else}\r\n <div class=\"component-props-container\">\r\n\r\n <div class=\"section-header padding\" on:click={() => componentDetailsExpanded = !componentDetailsExpanded}>\r\n <span style=\"margin-right: 7px\">Component Details</span>\r\n <IconButton icon={componentDetailsExpanded ? \"chevron-down\" : \"chevron-right\"}/>\r\n </div>\r\n\r\n {#if componentDetailsExpanded}\r\n <div class=\"padding\">\r\n <Textbox label=\"Name\" \r\n infoText=\"use forward slash to store in subfolders\"\r\n bind:text={name}\r\n disabled={!$store.currentComponentIsNew}\r\n hasError={!!nameInvalid}/>\r\n <div class=\"info-text\"></div>\r\n <Textbox label=\"Description\"\r\n bind:text={description}/>\r\n <Textbox label=\"Tags\" \r\n infoText=\"comma separated\"\r\n bind:text={tagsString}/>\r\n \r\n </div>\r\n {/if}\r\n\r\n <div class=\"section-header padding\">\r\n <span>Properties</span>\r\n </div>\r\n\r\n \r\n <PropsView onValidate={onPropsValidate}\r\n {componentInfo}\r\n {onPropsChanged}\r\n {onEditComponentProp}/>\r\n \r\n\r\n </div>\r\n {/if}\r\n\r\n</div>\r\n\r\n\r\n<div bind:this={modalElement} uk-modal>\r\n <div class=\"uk-modal-dialog\">\r\n\r\n <div class=\"uk-modal-header\">\r\n Delete {component.name} ? \r\n </div>\r\n\r\n <div class=\"uk-modal-body\">\r\n Are you sure you want to delete this component ?\r\n </div>\r\n\r\n <div class=\"uk-modal-footer\">\r\n <ButtonGroup>\r\n <Button grouped \r\n on:click={confirmDeleteComponent}>\r\n OK\r\n </Button>\r\n <Button grouped \r\n on:click={hideDialog} \r\n color=\"secondary\" >\r\n Cancel\r\n </Button>\r\n </ButtonGroup>\r\n </div>\r\n\r\n </div>\r\n\r\n</div>\r\n\r\n<style>\r\n\r\n.root {\r\n height: 100%;\r\n border-style: solid;\r\n border-color: var(--lightslate);\r\n border-width: 0px 0px 0px 1px;\r\n display:flex;\r\n flex-direction: column;\r\n}\r\n\r\n.padding {\r\n padding: 0px 5px 0px 10px;\r\n}\r\n\r\n.title {\r\n background-color: white;\r\n padding: 3px;\r\n display: grid;\r\n grid-template-columns: [name] 1fr [actions] auto;\r\n}\r\n\r\n.title > div:nth-child(1) {\r\n grid-column-start: name;\r\n color: var(--secondary100);\r\n}\r\n\r\n.title > div:nth-child(2) {\r\n grid-column-start: actions;\r\n}\r\n\r\n.section-header {\r\n font-style: italic; \r\n color: var(--slate);\r\n border-style: solid;\r\n border-color: var(--lightslate);\r\n border-width: 0px 0px 1px 0px;\r\n}\r\n\r\n.section-header {\r\n vertical-align: middle;\r\n margin-top: 20px;\r\n}\r\n\r\n.component-props-container {\r\n flex: 1 1 auto;\r\n overflow-y: auto;\r\n}\r\n</style>","<script>\r\nimport UIkit from \"uikit\";\r\n\r\nexport let isOpen = false;\r\nexport let onClosed = () => {};\r\nexport let id = \"\";\r\n\r\nlet ukModal;\r\nlet listenerAdded = false;\r\n\r\n$: if(ukModal && !listenerAdded) {\r\n listenerAdded = true;\r\n ukModal.addEventListener(\"hide\", onClosed);\r\n}\r\n\r\n$: {\r\n if(ukModal) {\r\n if(isOpen) {\r\n UIkit.modal(ukModal).show();\r\n } else {\r\n UIkit.modal(ukModal).hide();\r\n }\r\n }\r\n}\r\n\r\n</script>\r\n\r\n<div bind:this={ukModal} uk-modal {id}>\r\n <div class=\"uk-modal-dialog uk-modal-body\" uk-overflow-auto>\r\n <slot />\r\n </div>\r\n</div>\r\n\r\n\r\n<style>\r\n\r\n.uk-modal-dialog {\r\n border-radius: .3rem;\r\n}\r\n\r\n</style>","<script>\r\n\r\nimport ComponentSearch from \"./ComponentSearch.svelte\";\r\nimport { store } from \"../builderStore\";\r\nimport PropsView from \"./PropsView.svelte\";\r\nimport Textbox from \"../common/Textbox.svelte\";\r\nimport Button from \"../common/Button.svelte\";\r\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\r\nimport { pipe } from \"../common/core\";\r\nimport UIkit from \"uikit\";\r\nimport {\r\n getNewComponentInfo\r\n} from \"./pagesParsing/createProps\";\r\nimport { isRootComponent } from \"./pagesParsing/searchComponents\";\r\n\r\nimport { \r\n cloneDeep, \r\n join,\r\n split,\r\n map,\r\n keys,\r\n isUndefined\r\n} from \"lodash/fp\";\r\nimport { assign } from \"lodash\";\r\n\r\n\r\n\r\nlet modalElement;\r\nlet allComponents;\r\n\r\nstore.subscribe(s => {\r\n allComponents = s.allComponents;\r\n})\r\n\r\nexport const close = () => {\r\n UIkit.modal(modalElement).hide();\r\n}\r\n\r\nexport const show = () => {\r\n UIkit.modal(modalElement).show();\r\n}\r\n\r\nconst onComponentChosen = (c) => {\r\n store.createDerivedComponent(c.name);\r\n close();\r\n}\r\n\r\n</script>\r\n\r\n<div bind:this={modalElement} id=\"new-component-modal\" uk-modal>\r\n <div class=\"uk-modal-dialog\">\r\n\r\n <div class=\"uk-modal-header\">\r\n <h1>New Component</h1>\r\n </div>\r\n\r\n <div class=\"uk-modal-body\">\r\n <ComponentSearch onComponentChosen={onComponentChosen} />\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<style>\r\nh1 {\r\n font-size:1.2em;\r\n}\r\n\r\n</style>","import {\r\n split,\r\n last\r\n} from \"lodash/fp\";\r\n\r\nimport { pipe } from \"../../common/core\";\r\n\r\nexport const splitName = fullname => {\r\n const componentName = pipe(fullname, [\r\n split(\"/\"),\r\n last\r\n ]);\r\n\r\n const libName =fullname.substring(\r\n 0, fullname.length - componentName.length - 1);\r\n\r\n return {libName, componentName}; \r\n}","<script>\r\nimport { store } from \"../builderStore\";\r\nimport { makeLibraryUrl } from \"../builderStore/loadComponentLibraries\";\r\nimport {\r\n last, split, map, join\r\n} from \"lodash/fp\";\r\nimport { pipe } from \"../common/core\";\r\nimport { splitName } from \"./pagesParsing/splitRootComponentName\"\r\nimport { afterUpdate } from 'svelte';\r\nimport { getRootComponent } from \"./pagesParsing/getRootComponent\";\r\nimport { buildPropsHierarchy } from \"./pagesParsing/buildPropsHierarchy\";\r\n\r\n\r\nlet component;\r\nlet stylesheetLinks = \"\";\r\nlet rootComponentName = \"\";\r\nlet libraries;\r\nlet allComponents;\r\nlet appDefinition = {};\r\n\r\nstore.subscribe(s => {\r\n const {componentName, libName} = splitName(\r\n s.currentComponentInfo.rootComponent.name);\r\n\r\n rootComponentName = componentName;\r\n component = s.libraries[libName][componentName];\r\n stylesheetLinks = pipe(s.pages.stylesheets, [\r\n map(s => `<link rel=\"stylesheet\" href=\"${s}\"/>`),\r\n join(\"\\n\")\r\n ]);\r\n appDefinition = {\r\n componentLibraries: s.loadLibraryUrls(),\r\n props: buildPropsHierarchy(s.allComponents, s.currentFrontEndItem)\r\n };\r\n libraries = s.libraries;\r\n allComponents = s.allComponents;\r\n});\r\n\r\n\r\n\r\n</script>\r\n\r\n<div class=\"component-preview\" >\r\n <div class=\"component-container\">\r\n <iframe style=\"height: 100%; width: 100%\"\r\n title=\"componentPreview\"\r\n srcdoc={\r\n`<html>\r\n \r\n<head>\r\n ${stylesheetLinks}\r\n <script>\r\n window[\"##BUDIBASE_APPDEFINITION##\"] = ${JSON.stringify(appDefinition)};\r\n import('./budibase-client.esm.mjs')\r\n .then(module => {\r\n module.loadBudibase();\r\n }) \r\n </script>\r\n</head>\r\n<body>\r\n</body>\r\n</html>`}>\r\n </iframe>\r\n </div>\r\n</div>\r\n\r\n<style>\r\n.component-preview {\r\n display: grid;\r\n grid-template-rows: [top] 1fr [middle] auto [bottom] 1fr;\r\n grid-template-columns: [left] 1fr [middle] auto [right] 1fr;\r\n grid-column-start: preview;\r\n height:100%;\r\n}\r\n\r\n.component-container {\r\n grid-row-start: middle;\r\n grid-column-start: middle;\r\n}\r\n\r\n</style>","import { splitName } from \"./splitRootComponentName\";\r\nimport {\r\n find,\r\n filter\r\n} from \"lodash/fp\";\r\nimport { isRootComponent } from \"./searchComponents\";\r\n\r\nexport const libraryDependencies = (allComponents, lib) => {\r\n\r\n const componentDependsOnLibrary = comp => {\r\n if(isRootComponent(comp)) {\r\n const {libName} = splitName(component.name);\r\n return (libName === lib);\r\n }\r\n return componentDependsOnLibrary(\r\n find(c => c.name === comp.inherits)(allComponents)\r\n );\r\n }\r\n\r\n return filter(c => !isRootComponent(c) \r\n && componentDependsOnLibrary(c))(\r\n allComponents\r\n );\r\n}","<script>\r\n\r\nimport { store } from \"../builderStore\";\r\nimport Textbox from \"../common/Textbox.svelte\";\r\nimport Button from \"../common/Button.svelte\";\r\nimport IconButton from \"../common/IconButton.svelte\";\r\nimport { libraryDependencies } from \"./pagesParsing/findDependencies\";\r\nimport UIkit from \"uikit\";\r\n\r\nlet addNewLib = \"\";\r\nlet addNewStylesheet = \"\";\r\nlet addComponentError = \"\";\r\nlet modalElement;\r\nlet allComponents;\r\n\r\nstore.subscribe(s => {\r\n allComponents = s.allComponents;\r\n})\r\n\r\nconst removeLibrary = lib => {\r\n const dependencies = libraryDependencies(allComponents, lib);\r\n if(dependencies.length > 0) return;\r\n store.removeComponentLibrary(lib);\r\n}\r\n\r\nconst addLib = () => {\r\n store.addComponentLibrary(addNewLib)\r\n .then(() => {\r\n addNewLib = \"\";\r\n }); \r\n}\r\n\r\nconst removeStylesheet = stylesheet => {\r\n store.removeStylesheet(stylesheet);\r\n}\r\n\r\nconst addStylesheet = () => {\r\n if(addNewStylesheet)\r\n store.addStylesheet(addNewStylesheet);\r\n}\r\n\r\nexport const close = () => {\r\n UIkit.modal(modalElement).hide();\r\n}\r\n\r\nexport const show = () => {\r\n UIkit.modal(modalElement).show();\r\n}\r\n\r\n</script>\r\n\r\n<div bind:this={modalElement} id=\"new-component-modal\" uk-modal>\r\n <div class=\"uk-modal-dialog\">\r\n\r\n <div class=\"uk-modal-header header\">\r\n <div>Settings</div>\r\n <div>\r\n <IconButton icon=\"x\"\r\n on:click={close}/>\r\n </div>\r\n </div>\r\n\r\n <div class=\"uk-modal-body uk-form-horizontal\">\r\n\r\n <div class=\"section-container\">\r\n <p>Component Libraries\r\n <span>\r\n <input bind:value={addNewLib} /> \r\n <Button color=\"primary-outline\"\r\n on:click={addLib}>Add</Button>\r\n </span>\r\n </p>\r\n {#each $store.pages.componentLibraries as lib}\r\n <div>\r\n <span class=\"row-text\">{lib}</span>\r\n <IconButton icon=\"x\" \r\n on:click={() => removeLibrary(lib)}/>\r\n </div>\r\n {/each}\r\n </div>\r\n \r\n\r\n <div class=\"section-container\">\r\n <p>Stylesheets\r\n <span>\r\n <input bind:value={addNewStylesheet} /> \r\n <Button color=\"primary-outline\"\r\n on:click={addStylesheet} >Add</Button>\r\n </span>\r\n </p>\r\n {#each $store.pages.stylesheets as stylesheet}\r\n <div>\r\n <span class=\"row-text\">{stylesheet}</span>\r\n <IconButton icon=\"x\" \r\n on:click={() => removeStylesheet(stylesheet)}/>\r\n </div>\r\n {/each}\r\n </div>\r\n\r\n \r\n </div>\r\n </div>\r\n</div>\r\n\r\n<style>\r\n\r\n.section-container {\r\n padding: 15px;\r\n border-style: dotted;\r\n border-width: 1px;\r\n border-color: var(--lightslate);\r\n border-radius: 2px;\r\n}\r\n\r\n.section-container:nth-child(1) {\r\n margin-bottom: 15px;\r\n}\r\n\r\n.row-text {\r\n margin-right: 15px;\r\n color: var(--primary100);\r\n}\r\n\r\ninput {\r\n margin-right: 15px;\r\n}\r\n\r\np > span {\r\n margin-left: 30px;\r\n}\r\n\r\n.header {\r\n display: grid;\r\n grid-template-columns: [title] 1fr [icon] auto;\r\n}\r\n\r\n.header > div:nth-child(1) {\r\n grid-column-start: title;\r\n}\r\n\r\n.header > div:nth-child(2) {\r\n grid-column-start: icon;\r\n}\r\n\r\n</style>","<script>\r\n\r\nimport Textbox from \"../common/Textbox.svelte\";\r\nimport Dropdown from \"../common/Dropdown.svelte\";\r\nimport Button from \"../common/Button.svelte\";\r\nimport { store } from \"../builderStore\";\r\nimport { isRootComponent } from \"./pagesParsing/searchComponents\";\r\nimport { pipe } from \"../common/core\";\r\nimport {\r\n filter, find, concat\r\n} from \"lodash/fp\";\r\n\r\nlet entryComponent;\r\nlet title = \"\";\r\nlet components = [];\r\n\r\nconst notSeletedComponent = {name:\"(none selected)\"};\r\n\r\nstore.subscribe(s => {\r\n title = s.currentFrontEndItem.index.title;\r\n components = pipe(s.allComponents, [\r\n filter(s => !isRootComponent(s)),\r\n concat([notSeletedComponent])\r\n ]);\r\n entryComponent = find(c => c.name === s.currentFrontEndItem.appBody)(components);\r\n if(!entryComponent) entryComponent = notSeletedComponent;\r\n});\r\n\r\nconst save = () => {\r\n if(!title || !entryComponent || entryComponent === notSeletedComponent) return;\r\n const page = {\r\n index: {\r\n title\r\n },\r\n appBody: entryComponent.name,\r\n }\r\n store.savePage(page);\r\n}\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n\r\n <h3>{$store.currentPageName}</h3>\r\n\r\n <form class=\"uk-form-horizontal\">\r\n <Textbox bind:text={title} label=\"Title\" hasError={!title}/>\r\n <div class=\"help-text\">The title of your page, displayed in the bowser tab</div>\r\n <Dropdown label=\"App Entry Component\"\r\n options={components}\r\n bind:selected={entryComponent}\r\n textMember={(v) => v.name} />\r\n\r\n <div class=\"help-text\">The component that will be loaded into the body of the page</div>\r\n <div style=\"margin-top: 20px\"></div>\r\n <Button on:click={save}>Save</Button>\r\n </form>\r\n\r\n</div>\r\n\r\n<style>\r\n.root {\r\n padding: 15px;\r\n}\r\n.help-text {\r\n color: var(--slate);\r\n font-size: 10pt;\r\n}\r\n</style>","<script>\r\n\r\nimport ComponentsHierarchy from \"./ComponentsHierarchy.svelte\";\r\nimport PagesList from \"./PagesList.svelte\"\r\nimport EditComponent from \"./EditComponent.svelte\";\r\nimport { store } from \"../builderStore\";\r\nimport getIcon from \"../common/icon\";\r\nimport { isComponent } from \"./pagesParsing/searchComponents\";\r\nimport IconButton from \"../common/IconButton.svelte\";\r\nimport Modal from \"../common/Modal.svelte\";\r\nimport NewComponent from \"./NewComponent.svelte\";\r\nimport CurrentItemPreview from \"./CurrentItemPreview.svelte\";\r\nimport SettingsView from \"./SettingsView.svelte\";\r\nimport PageView from \"./PageView.svelte\";\r\n\r\nlet newComponentPicker; \r\nconst newComponent = () => {\r\n newComponentPicker.show();\r\n}\r\n\r\nlet settingsView;\r\nconst settings = () => {\r\n settingsView.show();\r\n}\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n \r\n <div class=\"ui-nav\">\r\n\r\n <div class=\"components-list-container\">\r\n <div class=\"nav-group-header\">\r\n <div>{@html getIcon(\"sidebar\",\"18\")}</div>\r\n <span class=\"components-nav-header\">Components</span>\r\n <div>\r\n <IconButton icon=\"settings\" \r\n size=\"14px\"\r\n on:click={settings}/>\r\n <IconButton icon=\"plus\" \r\n on:click={newComponent}/>\r\n </div>\r\n </div>\r\n <div class=\"nav-items-container\">\r\n <ComponentsHierarchy components={$store.derivedComponents}/>\r\n </div>\r\n </div>\r\n\r\n <div class=\"pages-list-container\">\r\n <div class=\"nav-group-header\">\r\n <div>{@html getIcon(\"grid\",\"18\")}</div>\r\n <span>Pages</span>\r\n </div>\r\n <div class=\"nav-items-container\">\r\n <PagesList />\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div>\r\n {#if $store.currentFrontEndItem}\r\n {#if isComponent($store.currentFrontEndItem)}\r\n <CurrentItemPreview />\r\n {:else}\r\n <PageView />\r\n {/if}\r\n {/if} \r\n </div>\r\n\r\n {#if $store.currentFrontEndItem && isComponent($store.currentFrontEndItem)}\r\n <div class=\"properties-pane\">\r\n <EditComponent />\r\n </div>\r\n {/if}\r\n\r\n</div>\r\n\r\n\r\n<NewComponent bind:this={newComponentPicker}/>\r\n<SettingsView bind:this={settingsView} />\r\n\r\n\r\n<style>\r\n\r\n.root {\r\n display: grid;\r\n grid-template-columns: [uiNav] 250px [preview] auto [properties] 300px;\r\n height: 100%;\r\n width: 100%;\r\n overflow-y: auto;\r\n}\r\n\r\n.ui-nav {\r\n grid-column-start: uiNav;\r\n background-color: var(--secondary5);\r\n height: 100%;\r\n}\r\n\r\n.properties-pane {\r\n grid-column-start: properties;\r\n background-color: var(--secondary5);\r\n height: 100%;\r\n overflow-y: hidden;\r\n}\r\n\r\n.pages-list-container {\r\n padding-top: 2rem;\r\n}\r\n\r\n.components-nav-header {\r\n font-size: .9rem;\r\n}\r\n\r\n.nav-group-header {\r\n font-size: .9rem;\r\n padding-left: 1rem;\r\n}\r\n\r\n.nav-items-container {\r\n padding: 1rem 1rem 0rem 1rem;\r\n}\r\n\r\n.nav-group-header {\r\n display:grid;\r\n grid-template-columns: [icon] auto [title] 1fr [button] auto;\r\n padding: 2rem 1rem 0rem 1rem;\r\n font-size: .9rem;\r\n font-weight: bold;\r\n}\r\n\r\n.nav-group-header>div:nth-child(1) {\r\n padding: 0rem .5rem 0rem 0rem;\r\n vertical-align: bottom;\r\n grid-column-start: icon;\r\n margin-right: 5px;\r\n}\r\n\r\n.nav-group-header>span:nth-child(2) {\r\n margin-left:5px;\r\n vertical-align: bottom;\r\n grid-column-start: title;\r\n margin-top:auto;\r\n}\r\n\r\n.nav-group-header>div:nth-child(3) {\r\n vertical-align: bottom;\r\n grid-column-start: button;\r\n cursor: pointer;\r\n color: var(--primary75);\r\n}\r\n\r\n.nav-group-header>div:nth-child(3):hover {\r\n color: var(--primary75); \r\n}\r\n\r\n</style>","<script>\r\n\r\nimport {store} from \"../builderStore\";\r\nimport {cloneDeep} from \"lodash\";\r\nimport getIcon from \"../common/icon\";\r\nexport let level = 0;\r\nexport let node;\r\nexport let type;\r\n\r\nlet navActive = \"\";\r\n$:icon = type===\"index\" ? \"list\" : \"file\";\r\n\r\nstore.subscribe(s => {\r\n if(s.currentNode)\r\n navActive = (s.activeNav === \"database\" && node.nodeId === s.currentNode.nodeId \r\n ? \"active\" : \"\")\r\n});\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n <div class=\"title {navActive}\" on:click={() => store.selectExistingNode(node.nodeId)} style=\"padding-left: {20 + (level * 20)}px\">\r\n {@html getIcon(icon, 12)} <span style=\"margin-left: 1rem\">{node.name}</span>\r\n </div>\r\n {#if node.children}\r\n {#each node.children as child}\r\n <svelte:self node={child} \r\n level={level+1}\r\n type=\"record\"/>\r\n {/each}\r\n {/if}\r\n {#if node.indexes}\r\n {#each node.indexes as index}\r\n <svelte:self node={index} \r\n level={level+1}\r\n type=\"index\"/>\r\n {/each}\r\n {/if}\r\n</div>\r\n\r\n\r\n<style>\r\n\r\n.root { \r\n display: block;\r\n font-size: .9rem;\r\n width: 100%;\r\n cursor: pointer;\r\n color: var(--secondary50);\r\n font-weight: 500;\r\n}\r\n\r\n.title {\r\n padding-top: .5rem;\r\n padding-right: .5rem;\r\n}\r\n\r\n.title:hover {\r\n background-color: var(--secondary10);\r\n}\r\n\r\n.active {\r\n background-color: var(--primary10);\r\n}\r\n\r\n</style>","<script>\r\n\r\nimport getIcon from \"./icon\";\r\nexport let iconName;\r\nexport let actions = []; // [ {label: \"Action Name\", onclick: () => {...} } ]\r\nlet isDroppedDown = false;\r\n\r\n</script>\r\n\r\n\r\n<div class=\"root\" on:click={() => isDroppedDown = !isDroppedDown}>\r\n {@html getIcon(iconName)}\r\n \r\n <div class=\"dropdown-background\" on:click|stopPropagation={() => isDroppedDown = false} style=\"display: {isDroppedDown ? 'block' : 'none'}\"></div>\r\n\r\n <div class=\"dropdown-content\" style=\"display: {isDroppedDown ? 'inline-block' : 'none'}\">\r\n {#each actions as action}\r\n <div class=\"action-row\" on:click={action.onclick}>\r\n {action.label}\r\n </div>\r\n {/each}\r\n </div>\r\n \r\n</div>\r\n\r\n\r\n<style>\r\n\r\n.dropdown-background {\r\n position: fixed;\r\n top:0;\r\n left:0;\r\n width:100vw;\r\n height:100vh;\r\n}\r\n\r\n.root {\r\n cursor: pointer;\r\n z-index: 1;\r\n}\r\n\r\n.dropdown-content {\r\n position: absolute;\r\n background-color: var(--white);\r\n min-width: 160px;\r\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\r\n z-index: 1;\r\n font-weight: normal;\r\n border-style: solid;\r\n border-width: 1px;\r\n border-color: var(--secondary10);\r\n}\r\n\r\n.dropdown-content:not(:focus) {\r\n display: none;\r\n}\r\n\r\n.action-row {\r\n padding: 7px 10px;\r\n cursor:pointer;\r\n}\r\n\r\n.action-row:hover {\r\n background-color: var(--primary100);\r\n color:var(--white);\r\n}\r\n\r\n</style>","<script>\r\n\r\nimport {store} from \"../builderStore\";\r\nimport getIcon from \"../common/icon\";\r\n\r\nexport let name = \"\";\r\nexport let label = \"\";\r\n\r\nlet navActive = \"\";\r\n\r\nstore.subscribe(db => {\r\n navActive = (db.activeNav === name ? \"active\" : \"\")\r\n});\r\n\r\nconst setActive = () => \r\n store.setActiveNav(name);\r\n\r\n</script>\r\n\r\n<div class=\"nav-item {navActive}\" on:click={setActive}>\r\n {label}\r\n</div>\r\n\r\n\r\n<style>\r\n\r\n.nav-item {\r\n padding: 1.5rem 1rem 0rem 1rem;\r\n font-size: .9rem;\r\n font-weight: bold;\r\n cursor: pointer;\r\n flex: 0 0 auto;\r\n}\r\n\r\n.nav-item:hover {\r\n background-color: var(--primary10);\r\n}\r\n\r\n.active {\r\n background-color: var(--primary10);\r\n}\r\n\r\n</style>","<script>\r\n\r\nimport { store } from \"../builderStore\";\r\nimport HierarchyRow from \"./HierarchyRow.svelte\";\r\nimport DropdownButton from \"../common/DropdownButton.svelte\";\r\nimport {hierarchy as hierarchyFunctions} from \"../../../core/src\";\r\nimport NavItem from \"./NavItem.svelte\";\r\nimport getIcon from \"../common/icon\";\r\n\r\n\r\nconst defaultNewChildActions = [\r\n {\r\n label:\"New Root Index\", \r\n onclick: store.newRootIndex\r\n }, \r\n {\r\n label:\"New Root Record\", \r\n onclick: store.newRootRecord\r\n }\r\n];\r\n\r\nlet newChildActions = defaultNewChildActions;\r\n\r\nconst setActiveNav = (name) => () => {\r\n store.setActiveNav(name);\r\n}\r\n\r\n\r\nstore.subscribe(db => {\r\n if(!db.currentNode || hierarchyFunctions.isIndex(db.currentNode)) {\r\n newChildActions = defaultNewChildActions;\r\n } else {\r\n newChildActions = [\r\n {label:\"New Root Record\", \r\n onclick: store.newRootRecord},\r\n {label: `New Child Record of ${db.currentNode.name}`, \r\n onclick: store.newChildRecord},\r\n {label:\"New Root Index\", \r\n onclick: store.newRootIndex},\r\n {label: `New Index on ${db.currentNode.name}`, \r\n onclick: store.newChildIndex}\r\n ];\r\n }\r\n});\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n <div class=\"items-root\">\r\n <div class=\"hierarchy\">\r\n <div class=\"components-list-container\">\r\n <div class=\"nav-group-header\">\r\n <div>{@html getIcon(\"database\",\"18\")}</div>\r\n <div class=\"hierarchy-title\">Database</div>\r\n <DropdownButton iconName=\"plus\" actions={newChildActions} />\r\n </div>\r\n </div>\r\n\r\n {#each $store.hierarchy.children as record}\r\n <HierarchyRow node={record}\r\n type=\"record\" />\r\n {/each}\r\n\r\n {#each $store.hierarchy.indexes as index}\r\n <HierarchyRow node={index}\r\n type=\"index\" />\r\n {/each}\r\n\r\n </div>\r\n\r\n <NavItem name=\"actions\" label=\"Actions & Triggers\"/>\r\n <NavItem name=\"access levels\" label=\"User Levels\"/>\r\n <div class=\"space-filler\"></div>\r\n </div>\r\n</div>\r\n\r\n<style>\r\n\r\n.root {\r\n height: 100%;\r\n background-color: var(--secondary5);\r\n}\r\n\r\n.items-root {\r\n display: flex;\r\n flex-direction: column;\r\n max-height: 100%;\r\n height: 1rem;\r\n}\r\n\r\n\r\n\r\n.nav-items-container {\r\n padding: 2rem 1rem 0rem 1rem;\r\n}\r\n\r\n.nav-group-header {\r\n display:grid;\r\n grid-template-columns: [icon] auto [title] 1fr [button] auto;\r\n padding: 2rem 1rem 0rem 1rem;\r\n font-size: .9rem;\r\n font-weight: bold;\r\n}\r\n\r\n.nav-group-header>div:nth-child(1) {\r\n padding: 0rem .7rem 0rem 0rem;\r\n vertical-align: bottom;\r\n grid-column-start: icon;\r\n margin-right: 5px;\r\n}\r\n\r\n.nav-group-header>span:nth-child(2) {\r\n margin-left:5px;\r\n vertical-align: bottom;\r\n grid-column-start: title;\r\n margin-top:auto;\r\n}\r\n\r\n.nav-group-header>div:nth-child(3) {\r\n vertical-align: bottom;\r\n grid-column-start: button;\r\n cursor: pointer;\r\n color: var(--primary75);\r\n}\r\n\r\n.nav-group-header>div:nth-child(3):hover {\r\n color: var(--primary75); \r\n}\r\n\r\n\r\n.hierarchy-title-row {\r\n padding: 2rem 1rem 0rem 1rem;\r\n font-size: 1rem;\r\n font-weight: bold;\r\n}\r\n\r\n.hierarchy-title {\r\n flex: auto 1 1;\r\n}\r\n\r\n\r\n\r\n.space-filler {\r\n flex: 1 1 auto;\r\n}\r\n\r\n\r\n</style>","<script>\r\n\r\nexport let value;\r\nexport let label;\r\n\r\nconst inputChanged = ev => {\r\n try {\r\n value = Number(ev.target.value);\r\n } catch(_) {\r\n value = null;\r\n }\r\n}\r\n\r\nlet numberText = value === null || value === undefined\r\n ? \"\" : value.toString();\r\n\r\n\r\n</script>\r\n\r\n<div class=\"uk-margin\">\r\n <label class=\"uk-form-label\">{label}</label>\r\n <div class=\"uk-form-controls\">\r\n <input class=\"uk-input\" value={value} on:change={inputChanged} >\r\n </div>\r\n</div>\r\n\r\n","<script>\r\nimport {join} from \"lodash/fp\";\r\n\r\nexport let values;\r\nexport let label;\r\n\r\nconst inputChanged = ev => {\r\n try {\r\n values = ev.target.value.split(\"\\n\");\r\n } catch(_) {\r\n values = [];\r\n }\r\n}\r\n\r\n$: valuesText = join(\"\\n\")(values);\r\n\r\n\r\n</script>\r\n\r\n\r\n<div class=\"uk-margin\">\r\n <label class=\"uk-form-label\">{label}</label>\r\n <div class=\"uk-form-controls\">\r\n <textarea value={valuesText} on:change={inputChanged} ></textarea>\r\n </div>\r\n</div>\r\n\r\n<style>\r\n\r\ntextarea {\r\n width:300px;\r\n height:200px;\r\n}\r\n\r\n</style>","<script>\r\nexport let errors = [];\r\n\r\n$:hasErrors = errors.length > 0;\r\n</script>\r\n\r\n{#if hasErrors}\r\n<div class=\"error-container\">\r\n {#each errors as error}\r\n <div class=\"error-row\">{error.field ? `${error.field}: ` : \"\"}{error.error}</div>\r\n {/each}\r\n</div>\r\n{/if}\r\n\r\n<style>\r\n\r\n.error-container {\r\n padding:10px;\r\n border-style: solid;\r\n border-color: var(--deletion100);\r\n border-radius: var(--borderradiusall);\r\n background: var(--deletion75);\r\n}\r\n\r\n.error-row {\r\n padding: 5px 0px;\r\n}\r\n\r\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>\r\n\r\nimport flatpickr from \"flatpickr\";\r\nimport \"flatpickr/dist/flatpickr.css\";\r\nimport { onMount } from 'svelte';\r\n\r\nexport let value;\r\nexport let label;\r\nexport let width = \"medium\";\r\nexport let size = \"small\";\r\n\r\nlet input;\r\nlet fpInstance;\r\n\r\n$: if (fpInstance) fpInstance.setDate(value);\r\n\r\nonMount(() => {\r\n fpInstance = flatpickr(input, {});\r\n\r\n fpInstance.config.onChange.push(selectedDates => {\r\n if(selectedDates.length > 0)\r\n value = new Date(selectedDates[0]);\r\n });\r\n\r\n return fpInstance;\r\n})\r\n\r\n</script>\r\n\r\n<div class=\"uk-margin\">\r\n <label class=\"uk-form-label\">{label}</label>\r\n <div class=\"uk-form-controls\">\r\n <input class=\"uk-input uk-form-width-{width} uk-form-{size}\" bind:this={input} >\r\n </div>\r\n</div>\r\n\r\n","<script>\r\nimport Dropdown from \"../common/Dropdown.svelte\";\r\nimport Textbox from \"../common/Textbox.svelte\";\r\nimport Button from \"../common/Button.svelte\";\r\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\r\nimport NumberBox from \"../common/NumberBox.svelte\";\r\nimport ValuesList from \"../common/ValuesList.svelte\";\r\nimport ErrorsBox from \"../common/ErrorsBox.svelte\";\r\nimport Checkbox from \"../common/Checkbox.svelte\";\r\nimport DatePicker from \"../common/DatePicker.svelte\";\r\nimport {cloneDeep, assign, keys, \r\n isNumber, includes, map, isBoolean} from \"lodash/fp\";\r\nimport {allTypes, validate, getPotentialReferenceIndexes,\r\n getDefaultTypeOptions, getNode,\r\n getPotentialReverseReferenceIndexes} from \"../common/core\";\r\n\r\nexport let field;\r\nexport let allFields;\r\nexport let onFinished = () => {};\r\nexport let store;\r\n\r\nlet errors = [];\r\nlet clonedField = cloneDeep(field);\r\n\r\n$: isNew = !!field && field.name.length === 0;\r\n\r\n$: possibleReferenceIndexes = getPotentialReferenceIndexes(\r\n store.hierarchy, store.currentNode\r\n);\r\n\r\n$: selectedReverseRefIndex = \r\n !clonedField.typeOptions.indexNodeKey \r\n ? \"\"\r\n : getNode(store.hierarchy, clonedField.typeOptions.indexNodeKey);\r\n\r\n$: possibleReverseReferenceIndexes = \r\n !selectedReverseRefIndex \r\n ? []\r\n : getPotentialReverseReferenceIndexes(\r\n store.hierarchy, selectedReverseRefIndex);\r\n\r\nconst typeChanged = (ev) => \r\n clonedField.typeOptions = getDefaultTypeOptions(ev.detail);\r\n\r\n\r\nconst save = () => {\r\n\r\n errors = validate.field(allFields)(clonedField);\r\n if(errors.length > 0) return;\r\n field.typeOptions = cloneDeep(clonedField.typeOptions);\r\n onFinished(\r\n assign(field)(clonedField)\r\n );\r\n}\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n\r\n <ErrorsBox errors={errors} />\r\n\r\n <form class=\"uk-form-horizontal\">\r\n\r\n <Dropdown label=\"Type\" bind:selected={clonedField.type} options={keys(allTypes)} on:change={typeChanged} />\r\n\r\n {#if isNew}\r\n <Textbox label=\"Field Name\" bind:text={clonedField.name} />\r\n {:else}\r\n <div style=\"font-weight: bold\">{clonedField.name}</div>\r\n {/if}\r\n\r\n <Textbox label=\"Label\" bind:text={clonedField.label} />\r\n \r\n {#if clonedField.type === \"string\"}\r\n <NumberBox label=\"Max Length\" bind:value={clonedField.typeOptions.maxLength} />\r\n <ValuesList label=\"Values (options)\" bind:values={clonedField.typeOptions.values} />\r\n <Checkbox label=\"Declared Values Only\" bind:checked={clonedField.typeOptions.allowDeclaredValuesOnly} />\r\n {:else if clonedField.type === \"bool\"}\r\n <Checkbox label=\"Allow Null\" bind:checked={clonedField.typeOptions.allowNulls} />\r\n {:else if clonedField.type === \"datetime\"}\r\n <DatePicker label=\"Min Value\" bind:value={clonedField.typeOptions.minValue} />\r\n <DatePicker label=\"Max Value\" bind:value={clonedField.typeOptions.maxValue} />\r\n {:else if clonedField.type === \"number\"}\r\n <NumberBox label=\"Min Value\" bind:value={clonedField.typeOptions.minValue} />\r\n <NumberBox label=\"Max Value\" bind:value={clonedField.typeOptions.maxValue} />\r\n <NumberBox label=\"Decimal Places\" bind:value={clonedField.typeOptions.decimalPlaces} />\r\n {:else if clonedField.type === \"reference\"}\r\n <Dropdown label=\"Lookup Index\" \r\n options={possibleReferenceIndexes} \r\n valueMember={n => n.nodeKey()}\r\n textMember={n => n.name}\r\n bind:selected={clonedField.typeOptions.indexNodeKey} />\r\n\r\n <Dropdown label=\"Reverse Reference Index\" \r\n options={possibleReverseReferenceIndexes} \r\n multiple=true\r\n valueMember={n => n.nodeKey()}\r\n textMember={n => n.name}\r\n bind:selected={clonedField.typeOptions.reverseIndexNodeKeys} />\r\n\r\n <Textbox label=\"Display Value\" bind:text={clonedField.typeOptions.displayValue} />\r\n\r\n {:else if clonedField.type.startsWith(\"array\")}\r\n <NumberBox label=\"Min Length\" bind:value={clonedField.typeOptions.minLength} />\r\n <NumberBox label=\"Max Length\" bind:value={clonedField.typeOptions.maxLength} />\r\n {/if}\r\n\r\n </form>\r\n\r\n <ButtonGroup style=\"float: right;\">\r\n <Button color=\"primary\" grouped on:click={save}>Save</Button>\r\n <Button color=\"tertiary\" grouped on:click={() => onFinished(false)}>Cancel</Button>\r\n </ButtonGroup>\r\n\r\n</div>\r\n\r\n<style>\r\n\r\n\r\n\r\n</style>","<script>\r\n\r\nimport Textbox from \"../common/Textbox.svelte\";\r\nimport Button from \"../common/Button.svelte\";\r\nimport getIcon from \"../common/icon\";\r\nimport FieldView from \"./FieldView.svelte\";\r\nimport Modal from \"../common/Modal.svelte\";\r\nimport {map, join, filter, some, \r\n find, keys, isDate} from \"lodash/fp\";\r\nimport { store } from \"../builderStore\";\r\nimport {common, hierarchy as h} from \"../../../core/src\";\r\nimport {templateApi, pipe, validate} from \"../common/core\";\r\n\r\nlet record;\r\nlet getIndexAllowedRecords;\r\nlet editingField = false;\r\nlet fieldToEdit;\r\nlet isNewField = false;\r\nlet newField;\r\nlet editField;\r\nlet deleteField;\r\nlet onFinishedFieldEdit;\r\nlet editIndex;\r\n\r\nstore.subscribe($store => {\r\n record = $store.currentNode;\r\n const flattened = h.getFlattenedHierarchy($store.hierarchy);\r\n getIndexAllowedRecords = index => \r\n pipe(index.allowedRecordNodeIds, [\r\n filter(id => some(n => n.nodeId === id)(flattened)),\r\n map(id => find(n => n.nodeId === id)\r\n (flattened).name),\r\n join(\", \")\r\n ]);\r\n\r\n newField = () => {\r\n isNewField = true;\r\n fieldToEdit = templateApi($store.hierarchy).getNewField(\"string\");\r\n editingField = true;\r\n }\r\n\r\n onFinishedFieldEdit = (field) => {\r\n if(field) {\r\n store.saveField(field);\r\n }\r\n editingField = false;\r\n }\r\n\r\n editField = (field) => {\r\n isNewField = false;\r\n fieldToEdit = field;\r\n editingField = true;\r\n }\r\n\r\n deleteField = (field) => {\r\n store.deleteField(field);\r\n }\r\n\r\n editIndex = index => {\r\n store.selectExistingNode(index.nodeId);\r\n }\r\n\r\n})\r\n\r\nlet getTypeOptionsValueText = value => {\r\n if(value === Number.MAX_SAFE_INTEGER\r\n || value === Number.MIN_SAFE_INTEGER\r\n || new Date(value).getTime() === new Date(8640000000000000).getTime()\r\n || new Date(value).getTime() === new Date(-8640000000000000).getTime()) return \"(any)\";\r\n \r\n if(value === null) return \"(not set)\";\r\n return value;\r\n}\r\n\r\nlet getTypeOptions = typeOptions => \r\n pipe(typeOptions, [\r\n keys,\r\n map(k => `<span style=\"color:var(--slate)\">${k}: </span>${getTypeOptionsValueText(typeOptions[k])}`),\r\n join(\"<br>\")\r\n ]);\r\n\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n\r\n <form class=\"uk-form-horizontal\">\r\n <h3 class=\"settings-title\">\r\n Settings \r\n </h3>\r\n \r\n <Textbox label=\"Name:\" bind:text={record.name} />\r\n {#if !record.isSingle}\r\n <Textbox label=\"Collection Name:\" bind:text={record.collectionName} />\r\n <Textbox label=\"Shard Factor:\" bind:text={record.allidsShardFactor} />\r\n {/if}\r\n <div class=\"recordkey\">{record.nodeKey()}</div>\r\n\r\n </form>\r\n <h3 class=\"title\">\r\n Fields <span class=\"add-field-button\" on:click={newField}>{@html getIcon(\"plus\")}</span>\r\n </h3>\r\n\r\n {#if record.fields.length > 0}\r\n <table class=\"fields-table uk-table\">\r\n <thead>\r\n <tr>\r\n <th>Name</th>\r\n <th>Type</th>\r\n <th>Options</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {#each record.fields as field}\r\n <tr>\r\n <td >\r\n <div class=\"field-label\">{field.label}</div>\r\n <div style=\"font-size: 0.8em; color: var(--slate)\">{field.name}</div>\r\n </td>\r\n <td >{field.type}</td>\r\n <td >{@html getTypeOptions(field.typeOptions)}</td>\r\n <td>\r\n <span class=\"edit-button\" on:click={() => editField(field)}>{@html getIcon(\"edit\")}</span>\r\n <span class=\"edit-button\" on:click={() => deleteField(field)}>{@html getIcon(\"trash\")}</span>\r\n </td>\r\n </tr>\r\n {/each}\r\n </tbody>\r\n </table>\r\n {:else}\r\n (no fields added)\r\n {/if}\r\n\r\n {#if editingField}\r\n <Modal bind:isOpen={editingField}>\r\n <FieldView field={fieldToEdit} \r\n onFinished={onFinishedFieldEdit}\r\n allFields={record.fields} \r\n store={$store}/>\r\n </Modal>\r\n {/if}\r\n\r\n <h3 class=\"title\">\r\n Indexes \r\n </h3>\r\n\r\n {#each record.indexes as index}\r\n <div class=\"index-container\">\r\n <div class=\"index-name\">\r\n {index.name}\r\n <span style=\"margin-left: 7px\" on:click={() => editIndex(index)}>{@html getIcon(\"edit\")}</span>\r\n </div>\r\n <div class=\"index-field-row\">\r\n <span class=\"index-label\">records indexed: </span> \r\n <span>{getIndexAllowedRecords(index)}</span>\r\n <span class=\"index-label\" style=\"margin-left: 15px\">type:</span> \r\n <span>{index.indexType}</span>\r\n </div>\r\n <div class=\"index-field-row\">\r\n <span class=\"index-label\">map:</span>\r\n <code class=\"index-mapfilter\">{index.map}</code>\r\n </div>\r\n {#if index.filter}\r\n <div class=\"index-field-row\">\r\n <span class=\"index-label\">filter:</span>\r\n <code class=\"index-mapfilter\">{index.filter}</code>\r\n </div>\r\n {/if}\r\n </div>\r\n {:else}\r\n <div class=\"no-indexes\">\r\n No indexes added.\r\n </div>\r\n {/each}\r\n\r\n</div>\r\n\r\n\r\n<style>\r\n\r\n.root {\r\n height: 100%;\r\n padding: 2rem;\r\n}\r\n\r\n.settings-title {\r\n font-weight: 700;\r\n}\r\n\r\n.title {\r\n margin: 3rem 0rem 0rem 0rem;\r\n font-weight: 700;\r\n}\r\n\r\n.recordkey {\r\n font-size: 14px;\r\n font-weight: 600;\r\n color: var(--primary100);\r\n}\r\n\r\n.fields-table {\r\n margin: 1rem 1rem 0rem 0rem;\r\n border-collapse:collapse;\r\n}\r\n\r\n.add-field-button {\r\n cursor:pointer;\r\n}\r\n\r\n.edit-button {\r\n cursor:pointer;\r\n color: var(--secondary25);\r\n}\r\n\r\n.edit-button:hover {\r\n cursor:pointer;\r\n color: var(--secondary75);\r\n}\r\n\r\nth {\r\n text-align: left; \r\n}\r\n\r\ntd {\r\n padding: 1rem 5rem 1rem 0rem;\r\n margin:0;\r\n font-size: 14px;\r\n font-weight: 500;\r\n\r\n}\r\n\r\n.field-label {\r\n font-size: 14px;\r\n font-weight: 500;\r\n}\r\n\r\nthead > tr {\r\n border-width: 0px 0px 1px 0px;\r\n border-style: solid;\r\n border-color: var(--secondary75);\r\n margin-bottom: 20px;\r\n}\r\n\r\ntbody > tr {\r\n border-width: 0px 0px 1px 0px;\r\n border-style: solid;\r\n border-color: var(--primary10);\r\n}\r\n\r\ntbody > tr:hover {\r\n background-color: var(--primary10);\r\n}\r\n\r\ntbody > tr:hover .edit-button {\r\n color: var(--secondary75);\r\n}\r\n\r\n.index-container {\r\n border-style: solid;\r\n border-width: 0 0 1px 0;\r\n border-color: var(--secondary25);\r\n padding: 10px;\r\n margin-bottom: 5px;\r\n}\r\n\r\n.index-label {\r\n color: var(--slate);\r\n}\r\n\r\n.index-name {\r\n font-weight: bold;\r\n color: var(--primary100);\r\n}\r\n\r\n.index-container code {\r\n margin: 0;\r\n display: inline;\r\n background-color: var(--primary10);\r\n color: var(--secondary100);\r\n padding:3px;\r\n}\r\n\r\n.index-field-row {\r\n margin: 1rem 0rem 0rem 0rem;\r\n}\r\n\r\n.no-indexes {\r\n margin: 1rem 0rem 0rem 0rem;\r\n font-family: var(--fontnormal);\r\n font-size: 14px;\r\n}\r\n</style>","<script>\r\n// todo: use https://ace.c9.io\r\nexport let text = \"\";\r\nexport let label = \"\";\r\n</script>\r\n\r\n<div>{label}</div>\r\n<textarea class=\"uk-textarea\" bind:value={text}></textarea>\r\n\r\n<style>\r\n\r\ntextarea {\r\n padding:3px;\r\n margin-top:5px;\r\n margin-bottom:10px;\r\n background: var(--lightslate);\r\n color: var(--white);\r\n font-family: 'Courier New', Courier, monospace;\r\n width:95%;\r\n height:100px;\r\n border-radius: 5px;\r\n}\r\n\r\n</style>","<script>\r\n\r\nimport Textbox from \"../common/Textbox.svelte\";\r\nimport CodeArea from \"../common/CodeArea.svelte\";\r\nimport Button from \"../common/Button.svelte\";\r\nimport Dropdown from \"../common/Dropdown.svelte\";\r\nimport {store} from \"../builderStore\";\r\nimport {filter, some, map} from \"lodash/fp\";\r\nimport {hierarchy as hierarchyFunctions, common} from \"../../../core/src\";\r\n\r\nconst pipe = common.$;\r\n\r\nlet index;\r\nlet indexableRecords = [];\r\n\r\nstore.subscribe($store => {\r\n index = $store.currentNode;\r\n indexableRecords = pipe($store.hierarchy,[\r\n hierarchyFunctions.getFlattenedHierarchy,\r\n filter(hierarchyFunctions.isDecendant(index.parent())),\r\n filter(hierarchyFunctions.isRecord),\r\n map(n => ({\r\n node:n,\r\n isallowed: some(id => n.nodeId === id)(index.allowedRecordNodeIds)\r\n }))\r\n ]);\r\n});\r\n\r\nconst toggleAllowedRecord = record => {\r\n if(record.isallowed) {\r\n index.allowedRecordNodeIds = filter(id => id !== record.node.nodeId)\r\n (index.allowedRecordNodeIds);\r\n } else {\r\n index.allowedRecordNodeIds.push(record.node.nodeId);\r\n }\r\n};\r\n\r\n</script>\r\n\r\n<form class=\"uk-form-horizontal root\">\r\n <Textbox bind:text={index.name} label=\"Name\"/>\r\n \r\n <div class=\"allowed-records\">\r\n <div>Records to Index</div>\r\n {#each indexableRecords as rec}\r\n <input type=\"checkbox\" checked={rec.isallowed} on:change={() => toggleAllowedRecord(rec)}/>\r\n <span>{rec.node.name}</span>\r\n {/each}\r\n </div>\r\n\r\n\r\n <Dropdown label=\"Index Type\" bind:selected={index.indexType} options={[\"ancestor\", \"reference\"]} />\r\n\r\n <CodeArea bind:text={index.map} label=\"Map (javascript)\"/>\r\n <CodeArea bind:text={index.filter} label=\"Filter (javascript expression)\"/>\r\n <CodeArea bind:text={index.getShardName} label=\"Shard Name (javascript expression)\"/>\r\n\r\n \r\n</form>\r\n\r\n<style>\r\n\r\n.root {\r\n height: 100%;\r\n padding: 15px;\r\n}\r\n\r\n.allowed-records {\r\n margin: 20px 0px;\r\n}\r\n\r\n.allowed-records > span {\r\n margin-right:30px;\r\n}\r\n\r\n</style>","<script>\r\nimport Button from \"../common/Button.svelte\";\r\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\r\nimport {store} from \"../builderStore\";\r\nimport Modal from \"../common/Modal.svelte\";\r\nimport ErrorsBox from \"../common/ErrorsBox.svelte\";\r\n\r\nexport let left;\r\nlet confirmDelete = false;\r\nconst openConfirmDelete = () => {\r\n confirmDelete = true;\r\n}\r\n\r\nconst deleteCurrentNode = () => {\r\n confirmDelete = false;\r\n store.deleteCurrentNode();\r\n}\r\n\r\n</script>\r\n\r\n<div class=\"root\" style=\"left: {left}\">\r\n\r\n <ButtonGroup>\r\n <Button color=\"secondary\" grouped on:click={store.saveCurrentNode}>\r\n {#if $store.currentNodeIsNew}\r\n Create\r\n {:else}\r\n Update\r\n {/if}\r\n </Button>\r\n\r\n {#if !$store.currentNodeIsNew}\r\n <Button color=\"tertiary\" grouped on:click={openConfirmDelete}>\r\n Delete\r\n </Button>\r\n {/if}\r\n </ButtonGroup>\r\n\r\n {#if !!$store.errors && $store.errors.length > 0}\r\n <div style=\"width: 500px\">\r\n <ErrorsBox errors={$store.errors}/>\r\n </div>\r\n {/if}\r\n \r\n <Modal bind:isOpen={confirmDelete}>\r\n <div style=\"margin: 10px 0px 20px 0px\">Are you sure you want to delete {$store.currentNode.name} ?</div>\r\n <div style=\"float:right\">\r\n <Button color=\"primary\" on:click={deleteCurrentNode}>Yes</Button>\r\n <Button color=\"secondary\" on:click={() => confirmDelete = false}>No</Button>\r\n </div>\r\n </Modal>\r\n</div>\r\n\r\n<style>\r\n\r\n.root {\r\n padding: 1.5rem;\r\n width: 100%;\r\n align-items: right;\r\n }\r\n\r\n</style>","<script>\r\n\r\nimport HierarchyRow from \"./HierarchyRow.svelte\";\r\nimport RecordView from \"./RecordView.svelte\";\r\nimport IndexView from \"./IndexView.svelte\";\r\nimport ActionsHeader from \"./ActionsHeader.svelte\";\r\nimport {store} from \"../builderStore\";\r\nimport getIcon from \"../common/icon\";\r\nimport DropdownButton from \"../common/DropdownButton.svelte\";\r\nimport {hierarchy as hierarchyFunctions} from \"../../../core/src\";\r\n\r\nconst hierarchyWidth = \"200px\";\r\n\r\nconst defaultNewIndexActions = [{\r\n label:\"New Root Index\", \r\n onclick: store.newRootIndex\r\n}];\r\n\r\nconst defaultNewRecordActions = [{\r\n label:\"New Root Record\", \r\n onclick: store.newRootRecord\r\n}];\r\n\r\nlet newIndexActions = defaultNewIndexActions;\r\nlet newRecordActions = defaultNewRecordActions;\r\n\r\nstore.subscribe(db => {\r\n if(!db.currentNode || hierarchyFunctions.isIndex(db.currentNode)) {\r\n newRecordActions = defaultNewRecordActions;\r\n newIndexActions = defaultNewIndexActions;\r\n } else {\r\n newRecordActions = [\r\n ...defaultNewRecordActions,\r\n {label: `New Child Record of ${db.currentNode.name}`, \r\n onclick: store.newChildRecord}\r\n ];\r\n\r\n newIndexActions = [\r\n ...defaultNewIndexActions,\r\n {label: `New Index on ${db.currentNode.name}`, \r\n onclick: store.newChildIndex}\r\n ];\r\n }\r\n});\r\n\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n <div class=\"actions-header\">\r\n {#if $store.currentNode}\r\n <ActionsHeader left={hierarchyWidth}/>\r\n {/if}\r\n </div>\r\n <div class=\"node-view\">\r\n {#if !$store.currentNode}\r\n <h1 style=\"margin-left: 100px\">:)</h1>\r\n {:else if $store.currentNode.type === \"record\"}\r\n <RecordView />\r\n {:else}\r\n <IndexView />\r\n {/if}\r\n </div>\r\n</div>\r\n\r\n\r\n<style>\r\n.root {\r\n height: 100%;\r\n position: relative;\r\n}\r\n\r\n.actions-header {\r\n flex: 0 1 auto;\r\n}\r\n\r\n.node-view {\r\n overflow-y: auto;\r\n flex: 1 1 auto;\r\n}\r\n\r\n</style>","<script>\r\n\r\nimport Textbox from \"../common/Textbox.svelte\";\r\nimport Button from \"../common/Button.svelte\";\r\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\r\nimport {cloneDeep, filter, keys,\r\nmap, isUndefined} from \"lodash/fp\";\r\nimport ErrorsBox from \"../common/ErrorsBox.svelte\";\r\nimport {validateActions, pipe} from \"../common/core\";\r\nimport getIcon from \"../common/icon\";\r\n\r\nexport let action;\r\nexport let onFinished = (action) => {};\r\nexport let allActions;\r\nexport let isNew = true;\r\n\r\nlet optKey = \"\";\r\nlet optValue = \"\";\r\n\r\nlet clonedAction = cloneDeep(action); \r\nlet initialOptions = pipe(action.initialOptions, [\r\n keys,\r\n map(k => ({key:k, value:action.initialOptions[k]}))\r\n]);\r\nlet errors = [];\r\n\r\nconst addNewOption = () => {\r\n\r\n if(optKey && optValue && isUndefined(clonedAction.initialOptions[optKey])) {\r\n clonedAction.initialOptions[optKey] = optValue;\r\n initialOptions = [...initialOptions, {\r\n key:optKey, value: optValue\r\n }];\r\n optKey = \"\";\r\n optValue = \"\";\r\n }\r\n}\r\n\r\nconst removeOption = (opt) => {\r\n if(opt) {\r\n delete clonedAction.initialOptions[opt.key]\r\n initialOptions = pipe(initialOptions, [\r\n filter(o => o.key !== opt.key)\r\n ]);\r\n }\r\n}\r\n\r\nconst save = () => {\r\n\r\n const newActionsList = [\r\n ...pipe(allActions ,[filter(a => a !== action)]),\r\n clonedAction]\r\n\r\n errors = pipe(newActionsList ,[\r\n validateActions,\r\n map(e => e.error)\r\n ]);\r\n\r\n if(errors.length === 0)\r\n onFinished(clonedAction);\r\n}\r\n\r\nconst cancel = () => {\r\n onFinished();\r\n}\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n\r\n <ErrorsBox {errors} />\r\n\r\n <form class=\"uk-form-horizontal\">\r\n\r\n <Textbox label=\"Name\" bind:text={clonedAction.name} />\r\n <Textbox label=\"Behaviour Source\" bind:text={clonedAction.behaviourSource} />\r\n <Textbox label=\"Behaviour\" bind:text={clonedAction.behaviourName} />\r\n\r\n </form>\r\n\r\n <div class=\" uk-form-stacked\" style=\"margin-bottom: 20px\">\r\n <label class=\"uk-form-label\">Default Options</label>\r\n <div class=\"uk-grid-small\" uk-grid>\r\n <input class=\"uk-input uk-width-1-4 uk-margin-right\" placeholder=\"key\" bind:value={optKey} > \r\n <input class=\"uk-input uk-width-1-4 uk-margin-right\" placeholder=\"value\" bind:value={optValue} > \r\n <Button color=\"primary-outline uk-width-1-4\" on:click={addNewOption}>Add</Button>\r\n </div>\r\n <div style=\"margin-top: 10px\">\r\n {#each initialOptions as option}\r\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>\r\n {/each}\r\n </div>\r\n </div>\r\n\r\n <ButtonGroup>\r\n <Button color=\"secondary\" grouped on:click={save}>Save</Button>\r\n <Button color=\"tertiary\" grouped on:click={cancel}>Cancel</Button>\r\n </ButtonGroup>\r\n\r\n \r\n</div>\r\n\r\n\r\n<style>\r\n\r\n.root {\r\n padding: 2rem;\r\n border-radius: 2rem;\r\n}\r\n\r\n.uk-grid-small {\r\n padding: 1rem;\r\n}\r\n\r\n.option-container {\r\n border-style: dotted;\r\n border-width: 1px;\r\n border-color: var(--primary75);\r\n padding: 3px;\r\n margin-right: 5px;\r\n}\r\n\r\n</style>","<script>\r\n\r\nimport getIcon from \"../common/icon\";\r\nimport {store} from \"../builderStore\";\r\nimport Button from \"../common/Button.svelte\";\r\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\r\nimport ActionView from \"./ActionView.svelte\";\r\nimport Modal from \"../common/Modal.svelte\";\r\nimport {pipe} from \"../common/core\";\r\nimport {keys, map, join} from \"lodash/fp\";\r\n\r\nexport let editingActionIsNew = false;\r\nexport let editingAction = null;\r\nexport let onActionEdit = (action) => {};\r\nexport let onActionDelete = (action) => {};\r\nexport let onActionSave = (action) => {};\r\nexport let onActionCancel = () => {};\r\n\r\n$: isEditing = (editingAction !== null); \r\n\r\nlet actionsArray = [];\r\nstore.subscribe(s => {\r\n actionsArray = pipe(s.actions, [\r\n keys,\r\n map(k => s.actions[k])\r\n ]);\r\n});\r\n\r\nlet getDefaultOptionsHtml = defaultOptions => \r\n pipe(defaultOptions, [\r\n keys,\r\n map(k => `<span style=\"color:var(--slate)\">${k}: </span>${JSON.stringify(defaultOptions[k])}`),\r\n join(\"<br>\")\r\n ]);\r\n\r\n\r\nlet actionEditingFinished = (action) => {\r\n \r\n if(action) {\r\n onActionSave(action)\r\n } else {\r\n onActionCancel();\r\n }\r\n}\r\n\r\n</script>\r\n\r\n<h3 class=\"title\">Actions</h3>\r\n\r\n{#if actionsArray}\r\n<table class=\"fields-table uk-table uk-table-small uk-table-striped\">\r\n <thead>\r\n <tr>\r\n <th >Description</th>\r\n <th>Behaviour Source</th>\r\n <th>Behaviour Name</th>\r\n <th>Default Options</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {#each actionsArray as action}\r\n <tr>\r\n <td class=\"table-content\">{action.name}</td>\r\n <td class=\"table-content\">{action.behaviourSource}</td>\r\n <td class=\"table-content\">{action.behaviourName}</td>\r\n <td class=\"table-content\">{@html getDefaultOptionsHtml(action.initialOptions)}</td>\r\n <td class=\"edit-button\">\r\n <span on:click={() => onActionEdit(action)}>{@html getIcon(\"edit\")}</span>\r\n <span on:click={() => onActionDelete(action)}>{@html getIcon(\"trash\")}</span>\r\n </td>\r\n </tr>\r\n {/each}\r\n </tbody>\r\n</table>\r\n{:else}\r\n(no actions added)\r\n{/if}\r\n\r\n\r\n<Modal bind:isOpen={isEditing}>\r\n {#if isEditing}\r\n <ActionView action={editingAction}\r\n allActions={$store.actions}\r\n onFinished={actionEditingFinished}\r\n isNew={editingActionIsNew}/>\r\n {/if} \r\n</Modal>\r\n\r\n\r\n<style>\r\n\r\n.edit-button {\r\n cursor:pointer;\r\n color: var(--secondary25);\r\n}\r\n\r\ntr:hover .edit-button {\r\n color: var(--secondary75);\r\n}\r\n\r\n.title {\r\n margin: 3rem 0rem 0rem 0rem;\r\n font-weight: 700;\r\n}\r\n\r\n.table-content {\r\n font-weight: 500;\r\n font-size: .9rem;\r\n}\r\n\r\n</style>","<script>\r\n\r\nimport Textbox from \"../common/Textbox.svelte\";\r\nimport Button from \"../common/Button.svelte\";\r\nimport Dropdown from \"../common/Dropdown.svelte\";\r\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\r\nimport CodeArea from \"../common/CodeArea.svelte\";\r\nimport {cloneDeep, filter, keys, some,\r\nmap, isUndefined} from \"lodash/fp\";\r\nimport ErrorsBox from \"../common/ErrorsBox.svelte\";\r\nimport {validateTriggers, pipe, events} from \"../common/core\";\r\nimport getIcon from \"../common/icon\";\r\n\r\nexport let trigger;\r\nexport let onFinished = (action) => {};\r\nexport let allTriggers;\r\nexport let allActions;\r\nexport let isNew = true;\r\n\r\nlet clonedTrigger = cloneDeep(trigger); \r\nlet errors = [];\r\n$: actionNames = map(a => a.name)(allActions);\r\n\r\nlet cancel = () => onFinished();\r\nlet save = () => {\r\n const newTriggersList = [\r\n ...pipe(allTriggers ,[filter(t => t !== trigger)]),\r\n clonedTrigger]\r\n\r\n errors = validateTriggers(newTriggersList, allActions);\r\n\r\n const test = map(t =>(!t.actionName || some(a => a.name === t.actionName)(allActions)))(newTriggersList)\r\n\r\n if(errors.length === 0)\r\n onFinished(clonedTrigger);\r\n}\r\n\r\n</script>\r\n\r\n<div>\r\n\r\n <ErrorsBox {errors} style=\"margin-bottom:20px\"/>\r\n\r\n <form class=\"uk-form-horizontal\">\r\n \r\n <Dropdown label=\"Event\" \r\n options={[\"\",...events]}\r\n bind:selected={clonedTrigger.eventName} />\r\n <Dropdown label=\"Action\" \r\n options={[\"\",...actionNames]}\r\n bind:selected={clonedTrigger.actionName} />\r\n <CodeArea label=\"Condition (javascript)\"\r\n bind:text={clonedTrigger.condition} />\r\n <CodeArea label=\"Action Options Creator (javascript)\"\r\n bind:text={clonedTrigger.optionsCreator} />\r\n\r\n </form>\r\n\r\n <ButtonGroup>\r\n <Button color=\"primary\" grouped on:click={save}>Save</Button>\r\n <Button color=\"tertiary\" grouped on:click={cancel}>Cancel</Button>\r\n </ButtonGroup>\r\n\r\n</div>\r\n\r\n<style>\r\n\r\n</style>","<script>\r\n\r\nimport {store} from \"../builderStore\";\r\nimport getIcon from \"../common/icon\";\r\nimport Button from \"../common/Button.svelte\";\r\nimport Modal from \"../common/Modal.svelte\";\r\nimport TriggerView from \"./TriggerView.svelte\";\r\n\r\n\r\nexport let editingTrigger = null;\r\nexport let editingTriggerIsNew = true;\r\nexport let onTriggerEdit = (trigger) => {};\r\nexport let onTriggerDelete = (trigger) => {};\r\nexport let onTriggerSave = (trigger) => {};\r\nexport let onTriggerCancel = () => {};\r\n\r\n$: isEditing = (editingTrigger !== null); \r\n\r\nlet triggerEditingFinished = (trigger) => {\r\n \r\n if(trigger) {\r\n onTriggerSave(trigger)\r\n } else {\r\n onTriggerCancel();\r\n }\r\n}\r\n\r\n</script>\r\n\r\n<h3 class=\"title\">Triggers</h3>\r\n\r\n{#if $store.triggers}\r\n<table class=\"fields-table uk-table uk-table-small uk-table-striped\">\r\n <thead>\r\n <tr>\r\n <th>Event</th>\r\n <th>Action</th>\r\n <th>Condition</th>\r\n <th>Create Options</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {#each $store.triggers as trigger}\r\n <tr>\r\n <td class=\"table-content\">{trigger.eventName}</td>\r\n <td class=\"table-content\">{trigger.actionName}</td>\r\n <td class=\"table-content\">{trigger.condition}</td>\r\n <td class=\"table-content\">{trigger.optionsCreator}</td>\r\n <td class=\"edit-button\">\r\n <span on:click={() => onTriggerEdit(trigger)}>{@html getIcon(\"edit\")}</span>\r\n <span on:click={() => onTriggerDelete(trigger)}>{@html getIcon(\"trash\")}</span>\r\n </td>\r\n </tr>\r\n {/each}\r\n </tbody>\r\n</table>\r\n{:else}\r\n(no triggers added)\r\n{/if}\r\n\r\n\r\n<Modal bind:isOpen={isEditing}>\r\n {#if isEditing}\r\n <TriggerView trigger={editingTrigger}\r\n allActions={$store.actions}\r\n allTriggers={$store.triggers}\r\n onFinished={triggerEditingFinished}\r\n isNew={editingTriggerIsNew}/>\r\n {/if} \r\n</Modal>\r\n\r\n<style>\r\n\r\n.edit-button {\r\n cursor:pointer;\r\n color: var(--secondary25);\r\n}\r\n\r\n.title {\r\n margin: 3rem 0rem 0rem 0rem;\r\n font-weight: 700;\r\n}\r\n\r\n.table-content {\r\n font-weight: 500;\r\n font-size: .9rem;\r\n}\r\n\r\ntr:hover .edit-button {\r\n color: var(--secondary75);\r\n}\r\n\r\n</style>","<script>\r\n\r\nimport getIcon from \"../common/icon\";\r\nimport {store} from \"../builderStore\";\r\nimport Button from \"../common/Button.svelte\";\r\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\r\nimport Actions from \"./Actions.svelte\";\r\nimport Triggers from \"./Triggers.svelte\";\r\nimport {getNewAction, getNewTrigger} from \"../common/core\";\r\n\r\nlet editingAction = null;\r\nlet editingActionIsNew = true;\r\nlet editingTrigger = null;\r\nlet editingTriggerIsNew = true;\r\n\r\nlet getDefaultOptionsHtml = defaultOptions => \r\n pipe(defaultOptions, [\r\n keys,\r\n map(k => `<span style=\"color:var(--slate)\">${k}: </span>${JSON.parse(typeOptions[k])}`),\r\n join(\"<br>\")\r\n ]);\r\n\r\nlet onActionEdit = (action) => {\r\n editingAction = action;\r\n editingActionIsNew = false;\r\n}\r\n\r\nlet newAction = () => {\r\n editingAction = getNewAction();\r\n editingActionIsNew = true;\r\n}\r\n\r\nlet onActionDelete = (action) => {\r\n store.deleteAction(action);\r\n}\r\n\r\nlet deleteTrigger = () => {}\r\n\r\nlet editTrigger = (trigger) => {\r\n editingTrigger = trigger;\r\n editingTriggerIsNew = false;\r\n}\r\n\r\nlet newTrigger = () => {\r\n editingTrigger = getNewTrigger();\r\n editingTriggerIsNew = true;\r\n}\r\n\r\nlet onActionSave = action => {\r\n store.saveAction(\r\n action, \r\n editingActionIsNew, \r\n editingAction);\r\n\r\n editingAction = null;\r\n}\r\n\r\nlet onActionCancel = () => {\r\n editingAction = null;\r\n}\r\n\r\nlet onTriggerSave = trigger => {\r\n store.saveTrigger(\r\n trigger, \r\n editingTriggerIsNew, \r\n editingTrigger);\r\n\r\n editingTrigger = null;\r\n}\r\n\r\nlet onTriggerCancel = () => {\r\n editingTrigger = null;\r\n}\r\n\r\nlet onTriggerEdit = (trigger) => {\r\n editingTrigger = trigger;\r\n editingTriggerIsNew = false;\r\n}\r\n\r\n\r\nlet onTriggerDelete = (trigger) => {\r\n store.deleteTrigger(trigger);\r\n}\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n <div class=\"actions-header\">\r\n <ButtonGroup>\r\n <Button color=\"secondary\" \r\n grouped\r\n on:click={newAction}>Create New Action</Button>\r\n <Button color=\"tertiary\" \r\n grouped\r\n on:click={newTrigger}>Create New Trigger</Button>\r\n </ButtonGroup>\r\n </div>\r\n\r\n <div class=\"node-view\">\r\n <Actions {editingActionIsNew} {editingAction} \r\n {onActionEdit} {onActionDelete} {onActionSave}\r\n {onActionCancel} />\r\n\r\n <Triggers {editingTriggerIsNew} {editingTrigger} \r\n {onTriggerEdit} {onTriggerDelete} {onTriggerSave}\r\n {onTriggerCancel} />\r\n </div>\r\n\r\n</div>\r\n\r\n<style>\r\n\r\n.root {\r\n height: 100%;\r\n position: relative;\r\n padding: 1.5rem;\r\n\r\n}\r\n\r\n.actions-header {\r\n flex: 0 1 auto;\r\n}\r\n\r\n.node-view {\r\n overflow-y: auto;\r\n flex: 1 1 auto;\r\n}\r\n\r\n</style>","<script>\r\n\r\nimport {cloneDeep, map, some, filter} from \"lodash/fp\";\r\nimport Textbox from \"../common/Textbox.svelte\";\r\nimport Checkbox from \"../common/Checkbox.svelte\";\r\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\r\nimport Button from \"../common/Button.svelte\";\r\nimport {validateAccessLevels} from \"../common/core\";\r\nimport ErrorsBox from \"../common/ErrorsBox.svelte\";\r\n\r\nexport let level;\r\nexport let allPermissions;\r\nexport let onFinished;\r\nexport let isNew;\r\nexport let allLevels;\r\nexport let hierarchy;\r\nexport let actions;\r\n\r\nlet errors = [];\r\nlet clonedLevel = cloneDeep(level);\r\n\r\nconst matchPermissions = (p1, p2) => \r\n p1.type === p2.type\r\n && \r\n ((!p2.nodeKey && !p1.nodeKey)\r\n || p2.nodeKey === p1.nodeKey);\r\n\r\nconst hasPermission = hasPerm => \r\n some(p => matchPermissions(p, hasPerm))\r\n (clonedLevel.permissions);\r\n\r\n$: permissionMatrix = \r\n map(p => ({permission:p, hasPermission: hasPermission(p)}))\r\n (allPermissions)\r\n\r\nconst getPermissionName = perm => \r\n perm.nodeKey\r\n ? `${perm.type} - ${perm.nodeKey}`\r\n : perm.type;\r\n\r\nconst save = () => {\r\n\r\n const newLevels = \r\n isNew \r\n ? [...allLevels, clonedLevel]\r\n : [...filter(l => l.name !== level.name)(allLevels), clonedLevel];\r\n\r\n errors = validateAccessLevels(\r\n hierarchy,\r\n actions,\r\n newLevels\r\n );\r\n\r\n if(errors.length > 0) return;\r\n\r\n onFinished(clonedLevel);\r\n}\r\n\r\nconst permissionChanged = perm => ev => {\r\n const hasPermission = ev.target.checked;\r\n\r\n if(hasPermission) {\r\n clonedLevel.permissions.push(perm);\r\n } else {\r\n clonedLevel.permissions = filter(p => !matchPermissions(p, perm));\r\n }\r\n}\r\n\r\n</script>\r\n\r\n<div>\r\n\r\n <ErrorsBox {errors} />\r\n\r\n <form class=\"uk-form-horizontal\">\r\n\r\n <Textbox label=\"Name\" bind:text={clonedLevel.name} />\r\n\r\n {#each permissionMatrix as permission}\r\n <div>\r\n <Checkbox label={getPermissionName(permission.permission)} \r\n checked={permission.hasPermission} \r\n on:change={permissionChanged(permission.permission)} />\r\n </div>\r\n {/each}\r\n\r\n </form>\r\n\r\n <ButtonGroup style=\"margin-top: 10px\">\r\n <Button color=\"primary\" grouped on:click={save}>Save</Button>\r\n <Button color=\"secondary\" grouped on:click={() => onFinished()}>Cancel</Button>\r\n </ButtonGroup>\r\n\r\n\r\n</div>\r\n\r\n<style>\r\n\r\n</style>","<script>\r\n\r\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\r\nimport Button from \"../common/Button.svelte\";\r\nimport {store} from \"../builderStore\";\r\nimport {generateFullPermissions, getNewAccessLevel} from \"../common/core\";\r\nimport getIcon from \"../common/icon\";\r\nimport AccessLevelView from \"./AccessLevelView.svelte\";\r\nimport Modal from \"../common/Modal.svelte\";\r\n\r\nlet editingLevel = null;\r\nlet editingLevelIsNew = false;\r\n$: isEditing = (editingLevel !== null); \r\n\r\nlet allPermissions = [];\r\nstore.subscribe(db => {\r\n allPermissions = generateFullPermissions(db.hierarchy, db.actions);\r\n})\r\n\r\nlet onLevelEdit = (level) => {\r\n editingLevel = level;\r\n editingLevelIsNew = false;\r\n};\r\n\r\nlet onLevelCancel = () => {\r\n editingAction = null;\r\n};\r\n\r\nlet onLevelDelete = (level) => {\r\n store.deleteLevel(level);\r\n};\r\n\r\n\r\nlet createNewLevel = () => {\r\n editingLevelIsNew = true;\r\n editingLevel = getNewAccessLevel();\r\n}\r\n\r\nlet onEditingFinished = (level) => {\r\n if(level) {\r\n store.saveLevel(level, editingLevelIsNew, editingLevel);\r\n }\r\n editingLevel = null;\r\n}\r\n\r\nconst getPermissionsString = perms => {\r\n return `${perms.length} / ${allPermissions.length}`;\r\n}\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n\r\n<ButtonGroup>\r\n <Button grouped color=\"secondary\" on:click={createNewLevel}>Create New Access Level</Button>\r\n</ButtonGroup>\r\n\r\n{#if $store.accessLevels}\r\n<table class=\"fields-table uk-table uk-table-small\">\r\n <thead>\r\n <tr>\r\n <th>Name</th>\r\n <th>Permissions</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {#each $store.accessLevels as level}\r\n <tr>\r\n <td >{level.name}</td>\r\n <td >{getPermissionsString(level.permissions)}</td>\r\n <td class=\"edit-button\">\r\n <span on:click={() => onLevelEdit(level)}>{@html getIcon(\"edit\")}</span>\r\n <span on:click={() => onLevelDelete(level)}>{@html getIcon(\"trash\")}</span>\r\n </td>\r\n </tr>\r\n {/each}\r\n </tbody>\r\n</table>\r\n{:else}\r\n(no actions added)\r\n{/if}\r\n\r\n\r\n<Modal bind:isOpen={isEditing}>\r\n {#if isEditing}\r\n <AccessLevelView level={editingLevel}\r\n allPermissions={allPermissions}\r\n onFinished={onEditingFinished}\r\n isNew={editingLevelIsNew}\r\n allLevels={$store.accessLevels}\r\n hierarchy={$store.hierarchy}\r\n actions={$store.actions} />\r\n {/if} \r\n</Modal>\r\n\r\n\r\n</div>\r\n\r\n<style>\r\n\r\n.root {\r\n height: 100%;\r\n position: relative;\r\n padding: 1.5rem;\r\n\r\n}\r\n\r\n.actions-header {\r\n flex: 0 1 auto;\r\n}\r\n\r\n.node-view {\r\n overflow-y: auto;\r\n flex: 1 1 auto;\r\n}\r\n\r\n\r\n</style>","<script>\r\n\r\nimport BackendNav from \"./nav/BackendNav.svelte\";\r\nimport Database from \"./database/DatabaseRoot.svelte\" ;\r\nimport UserInterface from \"./userInterface/UserInterfaceRoot.svelte\" ;\r\nimport ActionsAndTriggers from \"./actionsAndTriggers/ActionsAndTriggersRoot.svelte\" ;\r\nimport AccessLevels from \"./accessLevels/AccessLevelsRoot.svelte\" ;\r\nimport ComingSoon from \"./common/ComingSoon.svelte\";\r\n\r\nimport {store} from \"./builderStore\";\r\n\r\nexport let navWidth = \"50px\";\r\n\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n <div class=\"nav\">\r\n <BackendNav />\r\n </div>\r\n <div class=\"content\" \r\n style=\"width: calc(100% - {navWidth}); left: {navWidth}\"> \r\n {#if $store.activeNav === \"database\"}\r\n <Database />\r\n {:else if $store.activeNav === \"actions\"}\r\n <ActionsAndTriggers />\r\n {:else if $store.activeNav === \"access levels\"}\r\n <AccessLevels />\r\n {/if}\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n<style>\r\n\r\n.root {\r\n height: 100%;\r\n display: flex;\r\n}\r\n\r\n\r\n.content {\r\n flex: 1 1 auto;\r\n height: 100%;\r\n background-color: var(--white);\r\n margin:0;\r\n}\r\n\r\n.nav {\r\n flex: 0 1 auto;\r\n width: 300px;\r\n height: 100%;\r\n}\r\n\r\n</style>","<script>\r\n\r\nimport IconButton from \"./common/IconButton.svelte\";\r\nimport { store } from \"./builderStore\";\r\nimport UserInterfaceRoot from \"./userInterface/UserInterfaceRoot.svelte\";\r\nimport BackendRoot from \"./BackendRoot.svelte\";\r\nimport { fade } from \"svelte/transition\";\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n\r\n <div class=\"top-nav\">\r\n <IconButton icon=\"home\" \r\n color=\"var(--slate)\"\r\n hoverColor=\"var(--secondary75)\"/>\r\n <span class:active={$store.isBackend}\r\n class=\"topnavitem\"\r\n on:click={store.showBackend}>\r\n Backend\r\n </span>\r\n <span class:active={!$store.isBackend}\r\n class=\"topnavitem\"\r\n on:click={store.showFrontend}>\r\n Frontend\r\n </span>\r\n </div>\r\n\r\n <div class=\"content\">\r\n {#if $store.isBackend}\r\n <div in:fade out:fade>\r\n <BackendRoot />\r\n </div>\r\n {:else}\r\n <div in:fade out:fade>\r\n <UserInterfaceRoot />\r\n </div>\r\n {/if}\r\n </div>\r\n \r\n</div>\r\n\r\n<style>\r\n\r\n.root {\r\n height:100%;\r\n width:100%;\r\n display: flex;\r\n flex-direction: column;\r\n}\r\n\r\n.top-nav {\r\n flex: 0 0 auto;\r\n height: 25px;\r\n background: white;\r\n border-style:solid;\r\n border-width: 0px 0px 1px 0px;\r\n border-color: var(--lightslate);\r\n padding: 5px;\r\n width: 100%;\r\n}\r\n\r\n.content {\r\n flex: 1 1 auto;\r\n width: 100%;\r\n height: 100px;\r\n}\r\n\r\n.content > div {\r\n height:100%;\r\n width:100%;\r\n}\r\n\r\n.topnavitem {\r\n cursor: pointer;\r\n color: var(--secondary50);\r\n padding: 0px 15px;\r\n font-weight: 600;\r\n font-size: .9rem;\r\n}\r\n\r\n.topnavitem:hover {\r\n color: var(--secondary75);\r\n font-weight: 600;\r\n\r\n}\r\n\r\n.active {\r\n color: var(--primary100);\r\n font-weight: 900;\r\n}\r\n\r\n\r\n</style>","<script>\r\n\r\nimport IconButton from \"./common/IconButton.svelte\";\r\nimport { store } from \"./builderStore\";\r\nimport UserInterfaceRoot from \"./userInterface/UserInterfaceRoot.svelte\";\r\nimport { fade } from \"svelte/transition\";\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n <div class=\"content uk-container\">\r\n\r\n <h1>Settings</h1>\r\n\r\n <label>\r\n <input type=\"checkbox\" \r\n class=\"uk-checkbox\"\r\n bind:checked={$store.useAnalytics}>\r\n Send analytics\r\n </label>\r\n\r\n </div>\r\n</div>\r\n\r\n<style>\r\n\r\n</style>","<script>\r\n\t\r\n\timport NoPackage from \"./NoPackage.svelte\";\r\n\timport PackageRoot from \"./PackageRoot.svelte\";\r\n\timport Settings from \"./Settings.svelte\";\r\n\timport {store, initialise} from \"./builderStore\";\r\n\timport { onMount } from 'svelte';\r\n\timport IconButton from \"./common/IconButton.svelte\";\r\n\r\n\tlet init = initialise();\r\n\r\n</script>\r\n\r\n<main>\r\n\r\n\t{#await init}\r\n\t\r\n\t\t<h1>loading</h1>\r\n\r\n\t{:then result}\r\n\t\t{#if $store.showSettings}\r\n\t\t\t<Settings />\r\n\t\t{:else}\r\n\t\t\t{#if $store.hasAppPackage}\r\n\t\t\t<PackageRoot />\r\n\r\n\t\t\t{:else}\r\n\r\n\t\t\t<NoPackage />\r\n\t\t\t{/if}\r\n\t\t{/if}\r\n\r\n\t{:catch err}\r\n\t\t<h1 style=\"color:red\">{err}</h1>\r\n\t{/await}\r\n\r\n\t<div class=\"settings\">\r\n\t\t<IconButton icon=\"settings\"\r\n on:click={store.showSettings}/>\r\n\t</div>\r\n\r\n\t{#if $store.useAnalytics}\r\n\t\t<iframe src=\"https://marblekirby.github.io/bb-analytics.html\" width=\"0\" height=\"0\" style=\"visibility:hidden;display:none\"/>\r\n\t{/if}\r\n</main>\r\n\r\n<style>\r\n\tmain {\r\n\t\theight: 100%;\r\n\t\twidth: 100%;\r\n\t\tfont-family: \"Roboto\", Helvetica, Arial, sans-serif;\r\n\t}\r\n\r\n\t.settings {\r\n\t\tposition: absolute;\r\n\t\tbottom: 25px;\r\n\t\tright: 25px;\r\n\t}\r\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\";\r\nimport \"./global.css\";\r\nimport \"./fonts.css\";\r\nimport \"/assets/roboto-v20-latin-ext_latin-300\";\r\nimport \"/assets/roboto-v20-latin-ext_latin-400\";\r\nimport \"/assets/roboto-v20-latin-ext_latin-500\";\r\nimport \"/assets/roboto-v20-latin-ext_latin-700\";\r\nimport \"/assets/roboto-v20-latin-ext_latin-900\";\r\nimport \"/assets/budibase-logo.png\";\r\nimport \"/assets/budibase-logo-only.png\";\r\nimport \"uikit/dist/css/uikit.min.css\";\r\nimport \"uikit/dist/js/uikit.min.js\";\r\n\r\nconst app = new App({\r\n\ttarget: document.getElementById(\"app\")\r\n});\r\n\r\n\r\n"],"names":["global","this","fallbackHolder","mapping","require$$0","require$$1","setSeed","random","alphabet","generate","build","undefined","union","reduce","isUndefined","cloneDeep","split","flow","trim","replace","isArray","join","dropRight","takeRight","head","isNull","isNaN","isEmpty","constant","some","isString","tail","includes","startsWith","findIndex","isInteger","isDate","toNumber","map","filter","get","countBy","keys","last","find","take","first","intersection","has","merge","mapValues","makerule","isBoolean","options","typeConstraints","isNumber","isObjectLike","file","assign","all","getDefaultOptions","clone","values","lookup","init","base64.fromByteArray","ieee754.read","ieee754.write","base64.toByteArray","buffer","max","each","flatten","defaultCase","every","uniqBy","createTemporaryAccess","createUser","concat","uniqWith","setUserAccessLevels","difference","pipe","common","events","getNode","constructHierarchy","keyBy","allTypes","validate","validateActions","validateTriggers","generateFullPermissions","getNewAccessLevel","validateAccessLevels","isPlainObject","isComponent","api","sortBy","initialise","feather","trimCharsStart","trimChars","performance","isNonEmptyString","UIkit","isEqual","func","h"],"mappings":"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CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7hB,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAA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M,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG;IAC7f,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG;IACtf,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG;IAC1f,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG;IAC1f,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC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,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACviB,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,EA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C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAClgB,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,sBAAsB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;IACniB,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC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AAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;IACpf,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,EAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM;IAClgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7f,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxf,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrf,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAA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CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5f,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACrgB,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjgB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,OAAM,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,MAAM;IAChgB,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAA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,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC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CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAChgB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAA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C,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7gB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC9f,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,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C,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;IACniB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrgB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC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EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzgB,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7f,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CA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AC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACphB,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,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AC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7f,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,C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E,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;QAC1E,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;QAC3D,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;QAC3D,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;QAC3D,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;QAC1E,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;QAC1E,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG;QAC7B,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;QAC5C,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;QAC1E,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;QAC1E,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;QAC3D,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;QAC3D,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;QAC5C,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;QAC5C,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;QAC5C,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAA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,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC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KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,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C,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAA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MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,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,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC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C,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAA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MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,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"} |