diff --git a/.eslintignore b/.eslintignore index 1d650e3ee..28703bae5 100644 --- a/.eslintignore +++ b/.eslintignore @@ -3,3 +3,5 @@ node_modules/**/* webpack.config.js webpack.config.dev.js webpack.config.build.js +# TODO: remove this when POC phase is over +src/js/hds-web-component-lib/**/* diff --git a/dist/js/Accordion-c73b97d8.min.js b/dist/js/Accordion-c73b97d8.min.js new file mode 100644 index 000000000..cd8f423bf --- /dev/null +++ b/dist/js/Accordion-c73b97d8.min.js @@ -0,0 +1,1201 @@ +!function(){"use strict";var t={9907:function(t,r,n){function e(t,r,n,e){var o,i=arguments.length,a=i<3?r:null===e?e=Object.getOwnPropertyDescriptor(r,n):e;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,r,n,e);else for(var u=t.length-1;u>=0;u--)(o=t[u])&&(a=(i<3?o(a):i>3?o(r,n,a):o(r,n))||a);return i>3&&a&&Object.defineProperty(r,n,a),a}n.d(r,{_:function(){return e},c:function(){return ut},e:function(){return it},i:function(){return s},s:function(){return et},x:function(){return N},y:function(){return B}});const o=window,i=o.ShadowRoot&&(void 0===o.ShadyCSS||o.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,a=Symbol(),u=new WeakMap;class c{constructor(t,r,n){if(this._$cssResult$=!0,n!==a)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=r}get styleSheet(){let t=this.o;const r=this.t;if(i&&void 0===t){const n=void 0!==r&&1===r.length;n&&(t=u.get(r)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),n&&u.set(r,t))}return t}toString(){return this.cssText}}const s=function(t){for(var r=arguments.length,n=new Array(r>1?r-1:0),e=1;er+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(n)+t[e+1]),t[0]);return new c(o,t,a)},l=i?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let r="";for(const n of t.cssRules)r+=n.cssText;return(t=>new c("string"==typeof t?t:t+"",void 0,a))(r)})(t):t;var f;const h=window,d=h.trustedTypes,p=d?d.emptyScript:"",v=h.reactiveElementPolyfillSupport,g={toAttribute(t,r){switch(r){case Boolean:t=t?p:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,r){let n=t;switch(r){case Boolean:n=null!==t;break;case Number:n=null===t?null:Number(t);break;case Object:case Array:try{n=JSON.parse(t)}catch(t){n=null}}return n}},b=(t,r)=>r!==t&&(r==r||t==t),_={attribute:!0,type:String,converter:g,reflect:!1,hasChanged:b};class m extends HTMLElement{constructor(){super(),this._$Ei=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$El=null,this.u()}static addInitializer(t){var r;this.finalize(),(null!==(r=this.h)&&void 0!==r?r:this.h=[]).push(t)}static get observedAttributes(){this.finalize();const t=[];return this.elementProperties.forEach(((r,n)=>{const e=this._$Ep(n,r);void 0!==e&&(this._$Ev.set(e,n),t.push(e))})),t}static createProperty(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:_;if(r.state&&(r.attribute=!1),this.finalize(),this.elementProperties.set(t,r),!r.noAccessor&&!this.prototype.hasOwnProperty(t)){const n="symbol"==typeof t?Symbol():"__"+t,e=this.getPropertyDescriptor(t,n,r);void 0!==e&&Object.defineProperty(this.prototype,t,e)}}static getPropertyDescriptor(t,r,n){return{get(){return this[r]},set(e){const o=this[t];this[r]=e,this.requestUpdate(t,o,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)||_}static finalize(){if(this.hasOwnProperty("finalized"))return!1;this.finalized=!0;const t=Object.getPrototypeOf(this);if(t.finalize(),void 0!==t.h&&(this.h=[...t.h]),this.elementProperties=new Map(t.elementProperties),this._$Ev=new Map,this.hasOwnProperty("properties")){const t=this.properties,r=[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)];for(const n of r)this.createProperty(n,t[n])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(t){const r=[];if(Array.isArray(t)){const n=new Set(t.flat(1/0).reverse());for(const t of n)r.unshift(l(t))}else void 0!==t&&r.push(l(t));return r}static _$Ep(t,r){const n=r.attribute;return!1===n?void 0:"string"==typeof n?n:"string"==typeof t?t.toLowerCase():void 0}u(){var t;this._$E_=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$Eg(),this.requestUpdate(),null===(t=this.constructor.h)||void 0===t||t.forEach((t=>t(this)))}addController(t){var r,n;(null!==(r=this._$ES)&&void 0!==r?r:this._$ES=[]).push(t),void 0!==this.renderRoot&&this.isConnected&&(null===(n=t.hostConnected)||void 0===n||n.call(t))}removeController(t){var r;null===(r=this._$ES)||void 0===r||r.splice(this._$ES.indexOf(t)>>>0,1)}_$Eg(){this.constructor.elementProperties.forEach(((t,r)=>{this.hasOwnProperty(r)&&(this._$Ei.set(r,this[r]),delete this[r])}))}createRenderRoot(){var t;const r=null!==(t=this.shadowRoot)&&void 0!==t?t:this.attachShadow(this.constructor.shadowRootOptions);return((t,r)=>{i?t.adoptedStyleSheets=r.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet)):r.forEach((r=>{const n=document.createElement("style"),e=o.litNonce;void 0!==e&&n.setAttribute("nonce",e),n.textContent=r.cssText,t.appendChild(n)}))})(r,this.constructor.elementStyles),r}connectedCallback(){var t;void 0===this.renderRoot&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var r;return null===(r=t.hostConnected)||void 0===r?void 0:r.call(t)}))}enableUpdating(t){}disconnectedCallback(){var t;null===(t=this._$ES)||void 0===t||t.forEach((t=>{var r;return null===(r=t.hostDisconnected)||void 0===r?void 0:r.call(t)}))}attributeChangedCallback(t,r,n){this._$AK(t,n)}_$EO(t,r){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:_;var e;const o=this.constructor._$Ep(t,n);if(void 0!==o&&!0===n.reflect){const i=(void 0!==(null===(e=n.converter)||void 0===e?void 0:e.toAttribute)?n.converter:g).toAttribute(r,n.type);this._$El=t,null==i?this.removeAttribute(o):this.setAttribute(o,i),this._$El=null}}_$AK(t,r){var n;const e=this.constructor,o=e._$Ev.get(t);if(void 0!==o&&this._$El!==o){const t=e.getPropertyOptions(o),i="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==(null===(n=t.converter)||void 0===n?void 0:n.fromAttribute)?t.converter:g;this._$El=o,this[o]=i.fromAttribute(r,t.type),this._$El=null}}requestUpdate(t,r,n){let e=!0;void 0!==t&&(((n=n||this.constructor.getPropertyOptions(t)).hasChanged||b)(this[t],r)?(this._$AL.has(t)||this._$AL.set(t,r),!0===n.reflect&&this._$El!==t&&(void 0===this._$EC&&(this._$EC=new Map),this._$EC.set(t,n))):e=!1),!this.isUpdatePending&&e&&(this._$E_=this._$Ej())}async _$Ej(){this.isUpdatePending=!0;try{await this._$E_}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;this.hasUpdated,this._$Ei&&(this._$Ei.forEach(((t,r)=>this[r]=t)),this._$Ei=void 0);let r=!1;const n=this._$AL;try{r=this.shouldUpdate(n),r?(this.willUpdate(n),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var r;return null===(r=t.hostUpdate)||void 0===r?void 0:r.call(t)})),this.update(n)):this._$Ek()}catch(t){throw r=!1,this._$Ek(),t}r&&this._$AE(n)}willUpdate(t){}_$AE(t){var r;null===(r=this._$ES)||void 0===r||r.forEach((t=>{var r;return null===(r=t.hostUpdated)||void 0===r?void 0:r.call(t)})),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$Ek(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$E_}shouldUpdate(t){return!0}update(t){void 0!==this._$EC&&(this._$EC.forEach(((t,r)=>this._$EO(r,this[r],t))),this._$EC=void 0),this._$Ek()}updated(t){}firstUpdated(t){}}var y;m.finalized=!0,m.elementProperties=new Map,m.elementStyles=[],m.shadowRootOptions={mode:"open"},null==v||v({ReactiveElement:m}),(null!==(f=h.reactiveElementVersions)&&void 0!==f?f:h.reactiveElementVersions=[]).push("1.6.1");const w=window,x=w.trustedTypes,k=x?x.createPolicy("lit-html",{createHTML:t=>t}):void 0,$=`lit$${(Math.random()+"").slice(9)}$`,A="?"+$,z=`<${A}>`,E=document,S=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return E.createComment(t)},C=t=>null===t||"object"!=typeof t&&"function"!=typeof t,O=Array.isArray,j=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,R=/-->/g,I=/>/g,U=RegExp(">|[ \t\n\f\r](?:([^\\s\"'>=/]+)([ \t\n\f\r]*=[ \t\n\f\r]*(?:[^ \t\n\f\r\"'`<>=]|(\"|')|))|$)","g"),T=/'/g,P=/"/g,L=/^(?:script|style|textarea|title)$/i,B=(t=>function(r){for(var n=arguments.length,e=new Array(n>1?n-1:0),o=1;o{const n=t.length-1,e=[];let o,i=2===r?"":"",a=j;for(let r=0;r"===c[0]?(a=null!=o?o:j,s=-1):void 0===c[1]?s=-2:(s=a.lastIndex-c[2].length,u=c[1],a=void 0===c[3]?U:'"'===c[3]?P:T):a===P||a===T?a=U:a===R||a===I?a=j:(a=U,o=void 0);const f=a===U&&t[r+1].startsWith("/>")?" ":"";i+=a===j?n+z:s>=0?(e.push(u),n.slice(0,s)+"$lit$"+n.slice(s)+$+f):n+$+(-2===s?(e.push(void 0),r):f)}const u=i+(t[n]||"")+(2===r?"":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[void 0!==k?k.createHTML(u):u,e]};class F{constructor(t,r){let n,{strings:e,_$litType$:o}=t;this.parts=[];let i=0,a=0;const u=e.length-1,c=this.parts,[s,l]=D(e,o);if(this.el=F.createElement(s,r),W.currentNode=this.el.content,2===o){const t=this.el.content,r=t.firstChild;r.remove(),t.append(...r.childNodes)}for(;null!==(n=W.nextNode())&&c.length0){n.textContent=x?x.emptyScript:"";for(let e=0;e2&&void 0!==arguments[2]?arguments[2]:t,e=arguments.length>3?arguments[3]:void 0;var o,i,a,u;if(r===N)return r;let c=void 0!==e?null===(o=n._$Co)||void 0===o?void 0:o[e]:n._$Cl;const s=C(r)?void 0:r._$litDirective$;return(null==c?void 0:c.constructor)!==s&&(null===(i=null==c?void 0:c._$AO)||void 0===i||i.call(c,!1),void 0===s?c=void 0:(c=new s(t),c._$AT(t,n,e)),void 0!==e?(null!==(a=(u=n)._$Co)&&void 0!==a?a:u._$Co=[])[e]=c:n._$Cl=c),void 0!==c&&(r=q(t,c._$AS(t,r.values),c,e)),r}class V{constructor(t,r){this.u=[],this._$AN=void 0,this._$AD=t,this._$AM=r}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}v(t){var r;const{el:{content:n},parts:e}=this._$AD,o=(null!==(r=null==t?void 0:t.creationScope)&&void 0!==r?r:E).importNode(n,!0);W.currentNode=o;let i=W.nextNode(),a=0,u=0,c=e[0];for(;void 0!==c;){if(a===c.index){let r;2===c.type?r=new Z(i,i.nextSibling,this,t):1===c.type?r=new c.ctor(i,c.name,c.strings,this,t):6===c.type&&(r=new X(i,this,t)),this.u.push(r),c=e[++u]}a!==(null==c?void 0:c.index)&&(i=W.nextNode(),a++)}return o}p(t){let r=0;for(const n of this.u)void 0!==n&&(void 0!==n.strings?(n._$AI(t,n,r),r+=n.strings.length-2):n._$AI(t[r])),r++}}class Z{constructor(t,r,n,e){var o;this.type=2,this._$AH=M,this._$AN=void 0,this._$AA=t,this._$AB=r,this._$AM=n,this.options=e,this._$Cm=null===(o=null==e?void 0:e.isConnected)||void 0===o||o}get _$AU(){var t,r;return null!==(r=null===(t=this._$AM)||void 0===t?void 0:t._$AU)&&void 0!==r?r:this._$Cm}get parentNode(){let t=this._$AA.parentNode;const r=this._$AM;return void 0!==r&&11===t.nodeType&&(t=r.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t){t=q(this,t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:this),C(t)?t===M||null==t||""===t?(this._$AH!==M&&this._$AR(),this._$AH=M):t!==this._$AH&&t!==N&&this.g(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):(t=>O(t)||"function"==typeof(null==t?void 0:t[Symbol.iterator]))(t)?this.k(t):this.g(t)}O(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._$AB;return this._$AA.parentNode.insertBefore(t,r)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}g(t){this._$AH!==M&&C(this._$AH)?this._$AA.nextSibling.data=t:this.T(E.createTextNode(t)),this._$AH=t}$(t){var r;const{values:n,_$litType$:e}=t,o="number"==typeof e?this._$AC(t):(void 0===e.el&&(e.el=F.createElement(e.h,this.options)),e);if((null===(r=this._$AH)||void 0===r?void 0:r._$AD)===o)this._$AH.p(n);else{const t=new V(o,this),r=t.v(this.options);t.p(n),this.T(r),this._$AH=t}}_$AC(t){let r=H.get(t.strings);return void 0===r&&H.set(t.strings,r=new F(t)),r}k(t){O(this._$AH)||(this._$AH=[],this._$AR());const r=this._$AH;let n,e=0;for(const o of t)e===r.length?r.push(n=new Z(this.O(S()),this.O(S()),this,this.options)):n=r[e],n._$AI(o),e++;e0&&void 0!==arguments[0]?arguments[0]:this._$AA.nextSibling,r=arguments.length>1?arguments[1]:void 0;var n;for(null===(n=this._$AP)||void 0===n||n.call(this,!1,!0,r);t&&t!==this._$AB;){const r=t.nextSibling;t.remove(),t=r}}setConnected(t){var r;void 0===this._$AM&&(this._$Cm=t,null===(r=this._$AP)||void 0===r||r.call(this,t))}}class G{constructor(t,r,n,e,o){this.type=1,this._$AH=M,this._$AN=void 0,this.element=t,this.name=r,this._$AM=e,this.options=o,n.length>2||""!==n[0]||""!==n[1]?(this._$AH=Array(n.length-1).fill(new String),this.strings=n):this._$AH=M}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this,n=arguments.length>2?arguments[2]:void 0,e=arguments.length>3?arguments[3]:void 0;const o=this.strings;let i=!1;if(void 0===o)t=q(this,t,r,0),i=!C(t)||t!==this._$AH&&t!==N,i&&(this._$AH=t);else{const e=t;let a,u;for(t=o[0],a=0;a1&&void 0!==arguments[1]?arguments[1]:this,0))&&void 0!==r?r:M)===N)return;const n=this._$AH,e=t===M&&n!==M||t.capture!==n.capture||t.once!==n.once||t.passive!==n.passive,o=t!==M&&(n===M||e);e&&this.element.removeEventListener(this.name,this,n),o&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var r,n;"function"==typeof this._$AH?this._$AH.call(null!==(n=null===(r=this.options)||void 0===r?void 0:r.host)&&void 0!==n?n:this.element,t):this._$AH.handleEvent(t)}}class X{constructor(t,r,n){this.element=t,this.type=6,this._$AN=void 0,this._$AM=r,this.options=n}get _$AU(){return this._$AM._$AU}_$AI(t){q(this,t)}}const tt=w.litHtmlPolyfillSupport;null==tt||tt(F,Z),(null!==(y=w.litHtmlVersions)&&void 0!==y?y:w.litHtmlVersions=[]).push("2.6.1");var rt,nt;class et extends m{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var t,r;const n=super.createRenderRoot();return null!==(t=(r=this.renderOptions).renderBefore)&&void 0!==t||(r.renderBefore=n.firstChild),n}update(t){const r=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=((t,r,n)=>{var e,o;const i=null!==(e=null==n?void 0:n.renderBefore)&&void 0!==e?e:r;let a=i._$litPart$;if(void 0===a){const t=null!==(o=null==n?void 0:n.renderBefore)&&void 0!==o?o:null;i._$litPart$=a=new Z(r.insertBefore(S(),t),t,void 0,null!=n?n:{})}return a._$AI(t),a})(r,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!1)}render(){return N}}et.finalized=!0,et._$litElement$=!0,null===(rt=globalThis.litElementHydrateSupport)||void 0===rt||rt.call(globalThis,{LitElement:et});const ot=globalThis.litElementPolyfillSupport;null==ot||ot({LitElement:et}),(null!==(nt=globalThis.litElementVersions)&&void 0!==nt?nt:globalThis.litElementVersions=[]).push("3.2.2");const it=t=>r=>"function"==typeof r?((t,r)=>(customElements.define(t,r),r))(t,r):((t,r)=>{const{kind:n,elements:e}=r;return{kind:n,elements:e,finisher(r){customElements.define(t,r)}}})(t,r);var at;null===(at=window.HTMLSlotElement)||void 0===at||at.prototype.assignedElements;var ut=function(){for(var t=arguments.length,r=new Array(t),n=0;n + + + + + + `}};st.styles=[s` + ${ct} + `],st=e([it("hds-icon-angle-up")],st)}},r={};function n(e){var o=r[e];if(void 0!==o)return o.exports;var i=r[e]={exports:{}};return t[e](i,i.exports,n),i.exports}n.d=function(t,r){for(var e in r)n.o(r,e)&&!n.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:r[e]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),n.o=function(t,r){return Object.prototype.hasOwnProperty.call(t,r)},function(){var t=n(9907);const r=1;const e=(t=>function(){for(var r=arguments.length,n=new Array(r),e=0;e2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(t){return Object.keys(t).reduce(((r,n)=>{const e=t[n];return null==e?r:r+`${n=n.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${e};`}),"")}update(r,n){let[e]=n;const{style:o}=r.element;if(void 0===this.vt){this.vt=new Set;for(const t in e)this.vt.add(t);return this.render(e)}this.vt.forEach((t=>{null==e[t]&&(this.vt.delete(t),t.includes("-")?o.removeProperty(t):o[t]="")}));for(const t in e){const r=e[t];null!=r&&(this.vt.add(t),t.includes("-")?o.setProperty(t,r):o[t]=r)}return t.x}});var o="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:"undefined"!=typeof self?self:{};var i,a,u,c=(i=function(t,r){(function(){var n,e="Expected a function",i="__lodash_hash_undefined__",a="__lodash_placeholder__",u=16,c=32,s=64,l=128,f=256,h=1/0,d=9007199254740991,p=NaN,v=4294967295,g=[["ary",l],["bind",1],["bindKey",2],["curry",8],["curryRight",u],["flip",512],["partial",c],["partialRight",s],["rearg",f]],b="[object Arguments]",_="[object Array]",m="[object Boolean]",y="[object Date]",w="[object Error]",x="[object Function]",k="[object GeneratorFunction]",$="[object Map]",A="[object Number]",z="[object Object]",E="[object Promise]",S="[object RegExp]",C="[object Set]",O="[object String]",j="[object Symbol]",R="[object WeakMap]",I="[object ArrayBuffer]",U="[object DataView]",T="[object Float32Array]",P="[object Float64Array]",L="[object Int8Array]",B="[object Int16Array]",N="[object Int32Array]",M="[object Uint8Array]",H="[object Uint8ClampedArray]",W="[object Uint16Array]",D="[object Uint32Array]",F=/\b__p \+= '';/g,q=/\b(__p \+=) '' \+/g,V=/(__e\(.*?\)|\b__t\)) \+\n'';/g,Z=/&(?:amp|lt|gt|quot|#39);/g,G=/[&<>"']/g,K=RegExp(Z.source),Y=RegExp(G.source),J=/<%-([\s\S]+?)%>/g,Q=/<%([\s\S]+?)%>/g,X=/<%=([\s\S]+?)%>/g,tt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,rt=/^\w*$/,nt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,et=/[\\^$.*+?()[\]{}|]/g,ot=RegExp(et.source),it=/^\s+/,at=/\s/,ut=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,ct=/\{\n\/\* \[wrapped with (.+)\] \*/,st=/,? & /,lt=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,ft=/[()=,{}\[\]\/\s]/,ht=/\\(\\)?/g,dt=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,pt=/\w*$/,vt=/^[-+]0x[0-9a-f]+$/i,gt=/^0b[01]+$/i,bt=/^\[object .+?Constructor\]$/,_t=/^0o[0-7]+$/i,mt=/^(?:0|[1-9]\d*)$/,yt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,wt=/($^)/,xt=/['\n\r\u2028\u2029\\]/g,kt="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",$t="\\u2700-\\u27bf",At="a-z\\xdf-\\xf6\\xf8-\\xff",zt="A-Z\\xc0-\\xd6\\xd8-\\xde",Et="\\ufe0e\\ufe0f",St="\\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",Ct="['’]",Ot="[\\ud800-\\udfff]",jt="["+St+"]",Rt="["+kt+"]",It="\\d+",Ut="[\\u2700-\\u27bf]",Tt="["+At+"]",Pt="[^\\ud800-\\udfff"+St+It+$t+At+zt+"]",Lt="\\ud83c[\\udffb-\\udfff]",Bt="[^\\ud800-\\udfff]",Nt="(?:\\ud83c[\\udde6-\\uddff]){2}",Mt="[\\ud800-\\udbff][\\udc00-\\udfff]",Ht="["+zt+"]",Wt="(?:"+Tt+"|"+Pt+")",Dt="(?:"+Ht+"|"+Pt+")",Ft="(?:['’](?:d|ll|m|re|s|t|ve))?",qt="(?:['’](?:D|LL|M|RE|S|T|VE))?",Vt="(?:"+Rt+"|"+Lt+")?",Zt="[\\ufe0e\\ufe0f]?",Gt=Zt+Vt+"(?:\\u200d(?:"+[Bt,Nt,Mt].join("|")+")"+Zt+Vt+")*",Kt="(?:"+[Ut,Nt,Mt].join("|")+")"+Gt,Yt="(?:"+[Bt+Rt+"?",Rt,Nt,Mt,Ot].join("|")+")",Jt=RegExp(Ct,"g"),Qt=RegExp(Rt,"g"),Xt=RegExp(Lt+"(?="+Lt+")|"+Yt+Gt,"g"),tr=RegExp([Ht+"?"+Tt+"+"+Ft+"(?="+[jt,Ht,"$"].join("|")+")",Dt+"+"+qt+"(?="+[jt,Ht+Wt,"$"].join("|")+")",Ht+"?"+Wt+"+"+Ft,Ht+"+"+qt,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",It,Kt].join("|"),"g"),rr=RegExp("[\\u200d\\ud800-\\udfff"+kt+Et+"]"),nr=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,er=["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"],or=-1,ir={};ir[T]=ir[P]=ir[L]=ir[B]=ir[N]=ir[M]=ir[H]=ir[W]=ir[D]=!0,ir[b]=ir[_]=ir[I]=ir[m]=ir[U]=ir[y]=ir[w]=ir[x]=ir[$]=ir[A]=ir[z]=ir[S]=ir[C]=ir[O]=ir[R]=!1;var ar={};ar[b]=ar[_]=ar[I]=ar[U]=ar[m]=ar[y]=ar[T]=ar[P]=ar[L]=ar[B]=ar[N]=ar[$]=ar[A]=ar[z]=ar[S]=ar[C]=ar[O]=ar[j]=ar[M]=ar[H]=ar[W]=ar[D]=!0,ar[w]=ar[x]=ar[R]=!1;var ur={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},cr=parseFloat,sr=parseInt,lr="object"==typeof o&&o&&o.Object===Object&&o,fr="object"==typeof self&&self&&self.Object===Object&&self,hr=lr||fr||Function("return this")(),dr=r&&!r.nodeType&&r,pr=dr&&t&&!t.nodeType&&t,vr=pr&&pr.exports===dr,gr=vr&&lr.process,br=function(){try{var t=pr&&pr.require&&pr.require("util").types;return t||gr&&gr.binding&&gr.binding("util")}catch(t){}}(),_r=br&&br.isArrayBuffer,mr=br&&br.isDate,yr=br&&br.isMap,wr=br&&br.isRegExp,xr=br&&br.isSet,kr=br&&br.isTypedArray;function $r(t,r,n){switch(n.length){case 0:return t.call(r);case 1:return t.call(r,n[0]);case 2:return t.call(r,n[0],n[1]);case 3:return t.call(r,n[0],n[1],n[2])}return t.apply(r,n)}function Ar(t,r,n,e){for(var o=-1,i=null==t?0:t.length;++o-1}function jr(t,r,n){for(var e=-1,o=null==t?0:t.length;++e-1;);return n}function tn(t,r){for(var n=t.length;n--&&Mr(r,t[n],0)>-1;);return n}function rn(t,r){for(var n=t.length,e=0;n--;)t[n]===r&&++e;return e}var nn=qr({À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"}),en=qr({"&":"&","<":"<",">":">",'"':""","'":"'"});function on(t){return"\\"+ur[t]}function an(t){return rr.test(t)}function un(t){var r=-1,n=Array(t.size);return t.forEach((function(t,e){n[++r]=[e,t]})),n}function cn(t,r){return function(n){return t(r(n))}}function sn(t,r){for(var n=-1,e=t.length,o=0,i=[];++n",""":'"',"'":"'"}),gn=function t(r){var o,at=(r=null==r?hr:gn.defaults(hr.Object(),r,gn.pick(hr,er))).Array,kt=r.Date,$t=r.Error,At=r.Function,zt=r.Math,Et=r.Object,St=r.RegExp,Ct=r.String,Ot=r.TypeError,jt=at.prototype,Rt=At.prototype,It=Et.prototype,Ut=r["__core-js_shared__"],Tt=Rt.toString,Pt=It.hasOwnProperty,Lt=0,Bt=(o=/[^.]+$/.exec(Ut&&Ut.keys&&Ut.keys.IE_PROTO||""))?"Symbol(src)_1."+o:"",Nt=It.toString,Mt=Tt.call(Et),Ht=hr._,Wt=St("^"+Tt.call(Pt).replace(et,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Dt=vr?r.Buffer:n,Ft=r.Symbol,qt=r.Uint8Array,Vt=Dt?Dt.allocUnsafe:n,Zt=cn(Et.getPrototypeOf,Et),Gt=Et.create,Kt=It.propertyIsEnumerable,Yt=jt.splice,Xt=Ft?Ft.isConcatSpreadable:n,rr=Ft?Ft.iterator:n,ur=Ft?Ft.toStringTag:n,lr=function(){try{var t=pi(Et,"defineProperty");return t({},"",{}),t}catch(t){}}(),fr=r.clearTimeout!==hr.clearTimeout&&r.clearTimeout,dr=kt&&kt.now!==hr.Date.now&&kt.now,pr=r.setTimeout!==hr.setTimeout&&r.setTimeout,gr=zt.ceil,br=zt.floor,Lr=Et.getOwnPropertySymbols,qr=Dt?Dt.isBuffer:n,bn=r.isFinite,_n=jt.join,mn=cn(Et.keys,Et),yn=zt.max,wn=zt.min,xn=kt.now,kn=r.parseInt,$n=zt.random,An=jt.reverse,zn=pi(r,"DataView"),En=pi(r,"Map"),Sn=pi(r,"Promise"),Cn=pi(r,"Set"),On=pi(r,"WeakMap"),jn=pi(Et,"create"),Rn=On&&new On,In={},Un=Hi(zn),Tn=Hi(En),Pn=Hi(Sn),Ln=Hi(Cn),Bn=Hi(On),Nn=Ft?Ft.prototype:n,Mn=Nn?Nn.valueOf:n,Hn=Nn?Nn.toString:n;function Wn(t){if(ou(t)&&!Za(t)&&!(t instanceof Vn)){if(t instanceof qn)return t;if(Pt.call(t,"__wrapped__"))return Wi(t)}return new qn(t)}var Dn=function(){function t(){}return function(r){if(!eu(r))return{};if(Gt)return Gt(r);t.prototype=r;var e=new t;return t.prototype=n,e}}();function Fn(){}function qn(t,r){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!r,this.__index__=0,this.__values__=n}function Vn(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=v,this.__views__=[]}function Zn(t){var r=-1,n=null==t?0:t.length;for(this.clear();++r=r?t:r)),t}function le(t,r,e,o,i,a){var u,c=1&r,s=2&r,l=4&r;if(e&&(u=i?e(t,o,i,a):e(t)),u!==n)return u;if(!eu(t))return t;var f=Za(t);if(f){if(u=function(t){var r=t.length,n=new t.constructor(r);return r&&"string"==typeof t[0]&&Pt.call(t,"index")&&(n.index=t.index,n.input=t.input),n}(t),!c)return Ro(t,u)}else{var h=bi(t),d=h==x||h==k;if(Ja(t))return zo(t,c);if(h==z||h==b||d&&!i){if(u=s||d?{}:mi(t),!c)return s?function(t,r){return Io(t,gi(t),r)}(t,function(t,r){return t&&Io(r,Tu(r),t)}(u,t)):function(t,r){return Io(t,vi(t),r)}(t,ae(u,t))}else{if(!ar[h])return i?t:{};u=function(t,r,n){var e,o=t.constructor;switch(r){case I:return Eo(t);case m:case y:return new o(+t);case U:return function(t,r){var n=r?Eo(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case T:case P:case L:case B:case N:case M:case H:case W:case D:return So(t,n);case $:return new o;case A:case O:return new o(t);case S:return function(t){var r=new t.constructor(t.source,pt.exec(t));return r.lastIndex=t.lastIndex,r}(t);case C:return new o;case j:return e=t,Mn?Et(Mn.call(e)):{}}}(t,h,c)}}a||(a=new Jn);var p=a.get(t);if(p)return p;a.set(t,u),su(t)?t.forEach((function(n){u.add(le(n,r,e,n,t,a))})):iu(t)&&t.forEach((function(n,o){u.set(o,le(n,r,e,o,t,a))}));var v=f?n:(l?s?ui:ai:s?Tu:Uu)(t);return zr(v||t,(function(n,o){v&&(n=t[o=n]),ee(u,o,le(n,r,e,o,t,a))})),u}function fe(t,r,e){var o=e.length;if(null==t)return!o;for(t=Et(t);o--;){var i=e[o],a=r[i],u=t[i];if(u===n&&!(i in t)||!a(u))return!1}return!0}function he(t,r,o){if("function"!=typeof t)throw new Ot(e);return Ui((function(){t.apply(n,o)}),r)}function de(t,r,n,e){var o=-1,i=Or,a=!0,u=t.length,c=[],s=r.length;if(!u)return c;n&&(r=Rr(r,Yr(n))),e?(i=jr,a=!1):r.length>=200&&(i=Qr,a=!1,r=new Yn(r));t:for(;++o-1},Gn.prototype.set=function(t,r){var n=this.__data__,e=oe(n,t);return e<0?(++this.size,n.push([t,r])):n[e][1]=r,this},Kn.prototype.clear=function(){this.size=0,this.__data__={hash:new Zn,map:new(En||Gn),string:new Zn}},Kn.prototype.delete=function(t){var r=hi(this,t).delete(t);return this.size-=r?1:0,r},Kn.prototype.get=function(t){return hi(this,t).get(t)},Kn.prototype.has=function(t){return hi(this,t).has(t)},Kn.prototype.set=function(t,r){var n=hi(this,t),e=n.size;return n.set(t,r),this.size+=n.size==e?0:1,this},Yn.prototype.add=Yn.prototype.push=function(t){return this.__data__.set(t,i),this},Yn.prototype.has=function(t){return this.__data__.has(t)},Jn.prototype.clear=function(){this.__data__=new Gn,this.size=0},Jn.prototype.delete=function(t){var r=this.__data__,n=r.delete(t);return this.size=r.size,n},Jn.prototype.get=function(t){return this.__data__.get(t)},Jn.prototype.has=function(t){return this.__data__.has(t)},Jn.prototype.set=function(t,r){var n=this.__data__;if(n instanceof Gn){var e=n.__data__;if(!En||e.length<199)return e.push([t,r]),this.size=++n.size,this;n=this.__data__=new Kn(e)}return n.set(t,r),this.size=n.size,this};var pe=Po(xe),ve=Po(ke,!0);function ge(t,r){var n=!0;return pe(t,(function(t,e,o){return n=!!r(t,e,o)})),n}function be(t,r,e){for(var o=-1,i=t.length;++o0&&n(u)?r>1?me(u,r-1,n,e,o):Ir(o,u):e||(o[o.length]=u)}return o}var ye=Lo(),we=Lo(!0);function xe(t,r){return t&&ye(t,r,Uu)}function ke(t,r){return t&&we(t,r,Uu)}function $e(t,r){return Cr(r,(function(r){return tu(t[r])}))}function Ae(t,r){for(var e=0,o=(r=xo(r,t)).length;null!=t&&er}function Ce(t,r){return null!=t&&Pt.call(t,r)}function Oe(t,r){return null!=t&&r in Et(t)}function je(t,r,e){for(var o=e?jr:Or,i=t[0].length,a=t.length,u=a,c=at(a),s=1/0,l=[];u--;){var f=t[u];u&&r&&(f=Rr(f,Yr(r))),s=wn(f.length,s),c[u]=!e&&(r||i>=120&&f.length>=120)?new Yn(u&&f):n}f=t[0];var h=-1,d=c[0];t:for(;++h=u?c:c*("desc"==n[e]?-1:1)}return t.index-r.index}(t,r,n)}))}function Ze(t,r,n){for(var e=-1,o=r.length,i={};++e-1;)u!==t&&Yt.call(u,c,1),Yt.call(t,c,1);return t}function Ke(t,r){for(var n=t?r.length:0,e=n-1;n--;){var o=r[n];if(n==e||o!==i){var i=o;wi(o)?Yt.call(t,o,1):po(t,o)}}return t}function Ye(t,r){return t+br($n()*(r-t+1))}function Je(t,r){var n="";if(!t||r<1||r>d)return n;do{r%2&&(n+=t),(r=br(r/2))&&(t+=t)}while(r);return n}function Qe(t,r){return Ti(Ci(t,r,ac),t+"")}function Xe(t){return Xn(Du(t))}function to(t,r){var n=Du(t);return Bi(n,se(r,0,n.length))}function ro(t,r,e,o){if(!eu(t))return t;for(var i=-1,a=(r=xo(r,t)).length,u=a-1,c=t;null!=c&&++io?0:o+r),(n=n>o?o:n)<0&&(n+=o),o=r>n?0:n-r>>>0,r>>>=0;for(var i=at(o);++e>>1,a=t[i];null!==a&&!fu(a)&&(n?a<=r:a=200){var s=r?null:Qo(t);if(s)return ln(s);a=!1,o=Qr,c=new Yn}else c=r?[]:u;t:for(;++e=o?t:io(t,r,e)}var Ao=fr||function(t){return hr.clearTimeout(t)};function zo(t,r){if(r)return t.slice();var n=t.length,e=Vt?Vt(n):new t.constructor(n);return t.copy(e),e}function Eo(t){var r=new t.constructor(t.byteLength);return new qt(r).set(new qt(t)),r}function So(t,r){var n=r?Eo(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function Co(t,r){if(t!==r){var e=t!==n,o=null===t,i=t==t,a=fu(t),u=r!==n,c=null===r,s=r==r,l=fu(r);if(!c&&!l&&!a&&t>r||a&&u&&s&&!c&&!l||o&&u&&s||!e&&s||!i)return 1;if(!o&&!a&&!l&&t1?e[i-1]:n,u=i>2?e[2]:n;for(a=t.length>3&&"function"==typeof a?(i--,a):n,u&&xi(e[0],e[1],u)&&(a=i<3?n:a,i=1),r=Et(r);++o-1?i[a?r[u]:u]:n}}function Wo(t){return ii((function(r){var o=r.length,i=o,a=qn.prototype.thru;for(t&&r.reverse();i--;){var u=r[i];if("function"!=typeof u)throw new Ot(e);if(a&&!c&&"wrapper"==si(u))var c=new qn([],!0)}for(i=c?i:o;++i1&&_.reverse(),h&&sc))return!1;var l=a.get(t),f=a.get(r);if(l&&f)return l==r&&f==t;var h=-1,d=!0,p=2&e?new Yn:n;for(a.set(t,r),a.set(r,t);++h-1&&t%1==0&&t1?"& ":"")+r[e],r=r.join(n>2?", ":" "),t.replace(ut,"{\n/* [wrapped with "+r+"] */\n")}(e,function(t,r){return zr(g,(function(n){var e="_."+n[0];r&n[1]&&!Or(t,e)&&t.push(e)})),t.sort()}(function(t){var r=t.match(ct);return r?r[1].split(st):[]}(e),n)))}function Li(t){var r=0,e=0;return function(){var o=xn(),i=16-(o-e);if(e=o,i>0){if(++r>=800)return arguments[0]}else r=0;return t.apply(n,arguments)}}function Bi(t,r){var e=-1,o=t.length,i=o-1;for(r=r===n?o:r;++e1?t[r-1]:n;return e="function"==typeof e?(t.pop(),e):n,ca(t,e)}));function va(t){var r=Wn(t);return r.__chain__=!0,r}function ga(t,r){return r(t)}var ba=ii((function(t){var r=t.length,e=r?t[0]:0,o=this.__wrapped__,i=function(r){return ce(r,t)};return!(r>1||this.__actions__.length)&&o instanceof Vn&&wi(e)?((o=o.slice(e,+e+(r?1:0))).__actions__.push({func:ga,args:[i],thisArg:n}),new qn(o,this.__chain__).thru((function(t){return r&&!t.length&&t.push(n),t}))):this.thru(i)})),_a=Uo((function(t,r,n){Pt.call(t,n)?++t[n]:ue(t,n,1)})),ma=Ho(Vi),ya=Ho(Zi);function wa(t,r){return(Za(t)?zr:pe)(t,fi(r,3))}function xa(t,r){return(Za(t)?Er:ve)(t,fi(r,3))}var ka=Uo((function(t,r,n){Pt.call(t,n)?t[n].push(r):ue(t,n,[r])})),$a=Qe((function(t,r,n){var e=-1,o="function"==typeof r,i=Ka(t)?at(t.length):[];return pe(t,(function(t){i[++e]=o?$r(r,t,n):Re(t,r,n)})),i})),Aa=Uo((function(t,r,n){ue(t,n,r)}));function za(t,r){return(Za(t)?Rr:He)(t,fi(r,3))}var Ea=Uo((function(t,r,n){t[n?0:1].push(r)}),(function(){return[[],[]]})),Sa=Qe((function(t,r){if(null==t)return[];var n=r.length;return n>1&&xi(t,r[0],r[1])?r=[]:n>2&&xi(r[0],r[1],r[2])&&(r=[r[0]]),Ve(t,me(r,1),[])})),Ca=dr||function(){return hr.Date.now()};function Oa(t,r,e){return r=e?n:r,r=t&&null==r?t.length:r,ti(t,l,n,n,n,n,r)}function ja(t,r){var o;if("function"!=typeof r)throw new Ot(e);return t=bu(t),function(){return--t>0&&(o=r.apply(this,arguments)),t<=1&&(r=n),o}}var Ra=Qe((function(t,r,n){var e=1;if(n.length){var o=sn(n,li(Ra));e|=c}return ti(t,e,r,n,o)})),Ia=Qe((function(t,r,n){var e=3;if(n.length){var o=sn(n,li(Ia));e|=c}return ti(r,e,t,n,o)}));function Ua(t,r,o){var i,a,u,c,s,l,f=0,h=!1,d=!1,p=!0;if("function"!=typeof t)throw new Ot(e);function v(r){var e=i,o=a;return i=a=n,f=r,c=t.apply(o,e)}function g(t){return f=t,s=Ui(_,r),h?v(t):c}function b(t){var e=t-l;return l===n||e>=r||e<0||d&&t-f>=u}function _(){var t=Ca();if(b(t))return m(t);s=Ui(_,function(t){var n=r-(t-l);return d?wn(n,u-(t-f)):n}(t))}function m(t){return s=n,p&&i?v(t):(i=a=n,c)}function y(){var t=Ca(),e=b(t);if(i=arguments,a=this,l=t,e){if(s===n)return g(l);if(d)return Ao(s),s=Ui(_,r),v(l)}return s===n&&(s=Ui(_,r)),c}return r=mu(r)||0,eu(o)&&(h=!!o.leading,u=(d="maxWait"in o)?yn(mu(o.maxWait)||0,r):u,p="trailing"in o?!!o.trailing:p),y.cancel=function(){s!==n&&Ao(s),f=0,i=l=a=s=n},y.flush=function(){return s===n?c:m(Ca())},y}var Ta=Qe((function(t,r){return he(t,1,r)})),Pa=Qe((function(t,r,n){return he(t,mu(r)||0,n)}));function La(t,r){if("function"!=typeof t||null!=r&&"function"!=typeof r)throw new Ot(e);var n=function(){var e=arguments,o=r?r.apply(this,e):e[0],i=n.cache;if(i.has(o))return i.get(o);var a=t.apply(this,e);return n.cache=i.set(o,a)||i,a};return n.cache=new(La.Cache||Kn),n}function Ba(t){if("function"!=typeof t)throw new Ot(e);return function(){var r=arguments;switch(r.length){case 0:return!t.call(this);case 1:return!t.call(this,r[0]);case 2:return!t.call(this,r[0],r[1]);case 3:return!t.call(this,r[0],r[1],r[2])}return!t.apply(this,r)}}La.Cache=Kn;var Na=ko((function(t,r){var n=(r=1==r.length&&Za(r[0])?Rr(r[0],Yr(fi())):Rr(me(r,1),Yr(fi()))).length;return Qe((function(e){for(var o=-1,i=wn(e.length,n);++o=r})),Va=Ie(function(){return arguments}())?Ie:function(t){return ou(t)&&Pt.call(t,"callee")&&!Kt.call(t,"callee")},Za=at.isArray,Ga=_r?Yr(_r):function(t){return ou(t)&&Ee(t)==I};function Ka(t){return null!=t&&nu(t.length)&&!tu(t)}function Ya(t){return ou(t)&&Ka(t)}var Ja=qr||mc,Qa=mr?Yr(mr):function(t){return ou(t)&&Ee(t)==y};function Xa(t){if(!ou(t))return!1;var r=Ee(t);return r==w||"[object DOMException]"==r||"string"==typeof t.message&&"string"==typeof t.name&&!uu(t)}function tu(t){if(!eu(t))return!1;var r=Ee(t);return r==x||r==k||"[object AsyncFunction]"==r||"[object Proxy]"==r}function ru(t){return"number"==typeof t&&t==bu(t)}function nu(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=d}function eu(t){var r=typeof t;return null!=t&&("object"==r||"function"==r)}function ou(t){return null!=t&&"object"==typeof t}var iu=yr?Yr(yr):function(t){return ou(t)&&bi(t)==$};function au(t){return"number"==typeof t||ou(t)&&Ee(t)==A}function uu(t){if(!ou(t)||Ee(t)!=z)return!1;var r=Zt(t);if(null===r)return!0;var n=Pt.call(r,"constructor")&&r.constructor;return"function"==typeof n&&n instanceof n&&Tt.call(n)==Mt}var cu=wr?Yr(wr):function(t){return ou(t)&&Ee(t)==S},su=xr?Yr(xr):function(t){return ou(t)&&bi(t)==C};function lu(t){return"string"==typeof t||!Za(t)&&ou(t)&&Ee(t)==O}function fu(t){return"symbol"==typeof t||ou(t)&&Ee(t)==j}var hu=kr?Yr(kr):function(t){return ou(t)&&nu(t.length)&&!!ir[Ee(t)]},du=Ko(Me),pu=Ko((function(t,r){return t<=r}));function vu(t){if(!t)return[];if(Ka(t))return lu(t)?dn(t):Ro(t);if(rr&&t[rr])return function(t){for(var r,n=[];!(r=t.next()).done;)n.push(r.value);return n}(t[rr]());var r=bi(t);return(r==$?un:r==C?ln:Du)(t)}function gu(t){return t?(t=mu(t))===h||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}function bu(t){var r=gu(t),n=r%1;return r==r?n?r-n:r:0}function _u(t){return t?se(bu(t),0,v):0}function mu(t){if("number"==typeof t)return t;if(fu(t))return p;if(eu(t)){var r="function"==typeof t.valueOf?t.valueOf():t;t=eu(r)?r+"":r}if("string"!=typeof t)return 0===t?t:+t;t=Kr(t);var n=gt.test(t);return n||_t.test(t)?sr(t.slice(2),n?2:8):vt.test(t)?p:+t}function yu(t){return Io(t,Tu(t))}function wu(t){return null==t?"":fo(t)}var xu=To((function(t,r){if(zi(r)||Ka(r))Io(r,Uu(r),t);else for(var n in r)Pt.call(r,n)&&ee(t,n,r[n])})),ku=To((function(t,r){Io(r,Tu(r),t)})),$u=To((function(t,r,n,e){Io(r,Tu(r),t,e)})),Au=To((function(t,r,n,e){Io(r,Uu(r),t,e)})),zu=ii(ce),Eu=Qe((function(t,r){t=Et(t);var e=-1,o=r.length,i=o>2?r[2]:n;for(i&&xi(r[0],r[1],i)&&(o=1);++e1),r})),Io(t,ui(t),n),e&&(n=le(n,7,ei));for(var o=r.length;o--;)po(n,r[o]);return n})),Nu=ii((function(t,r){return null==t?{}:function(t,r){return Ze(t,r,(function(r,n){return Ou(t,n)}))}(t,r)}));function Mu(t,r){if(null==t)return{};var n=Rr(ui(t),(function(t){return[t]}));return r=fi(r),Ze(t,n,(function(t,n){return r(t,n[0])}))}var Hu=Xo(Uu),Wu=Xo(Tu);function Du(t){return null==t?[]:Jr(t,Uu(t))}var Fu=No((function(t,r,n){return r=r.toLowerCase(),t+(n?qu(r):r)}));function qu(t){return Xu(wu(t).toLowerCase())}function Vu(t){return(t=wu(t))&&t.replace(yt,nn).replace(Qt,"")}var Zu=No((function(t,r,n){return t+(n?"-":"")+r.toLowerCase()})),Gu=No((function(t,r,n){return t+(n?" ":"")+r.toLowerCase()})),Ku=Bo("toLowerCase"),Yu=No((function(t,r,n){return t+(n?"_":"")+r.toLowerCase()})),Ju=No((function(t,r,n){return t+(n?" ":"")+Xu(r)})),Qu=No((function(t,r,n){return t+(n?" ":"")+r.toUpperCase()})),Xu=Bo("toUpperCase");function tc(t,r,e){return t=wu(t),(r=e?n:r)===n?function(t){return nr.test(t)}(t)?function(t){return t.match(tr)||[]}(t):function(t){return t.match(lt)||[]}(t):t.match(r)||[]}var rc=Qe((function(t,r){try{return $r(t,n,r)}catch(t){return Xa(t)?t:new $t(t)}})),nc=ii((function(t,r){return zr(r,(function(r){r=Mi(r),ue(t,r,Ra(t[r],t))})),t}));function ec(t){return function(){return t}}var oc=Wo(),ic=Wo(!0);function ac(t){return t}function uc(t){return Le("function"==typeof t?t:le(t,1))}var cc=Qe((function(t,r){return function(n){return Re(n,t,r)}})),sc=Qe((function(t,r){return function(n){return Re(t,n,r)}}));function lc(t,r,n){var e=Uu(r),o=$e(r,e);null!=n||eu(r)&&(o.length||!e.length)||(n=r,r=t,t=this,o=$e(r,Uu(r)));var i=!(eu(n)&&"chain"in n&&!n.chain),a=tu(t);return zr(o,(function(n){var e=r[n];t[n]=e,a&&(t.prototype[n]=function(){var r=this.__chain__;if(i||r){var n=t(this.__wrapped__),o=n.__actions__=Ro(this.__actions__);return o.push({func:e,args:arguments,thisArg:t}),n.__chain__=r,n}return e.apply(t,Ir([this.value()],arguments))})})),t}function fc(){}var hc=Vo(Rr),dc=Vo(Sr),pc=Vo(Pr);function vc(t){return ki(t)?Fr(Mi(t)):function(t){return function(r){return Ae(r,t)}}(t)}var gc=Go(),bc=Go(!0);function _c(){return[]}function mc(){return!1}var yc,wc=qo((function(t,r){return t+r}),0),xc=Jo("ceil"),kc=qo((function(t,r){return t/r}),1),$c=Jo("floor"),Ac=qo((function(t,r){return t*r}),1),zc=Jo("round"),Ec=qo((function(t,r){return t-r}),0);return Wn.after=function(t,r){if("function"!=typeof r)throw new Ot(e);return t=bu(t),function(){if(--t<1)return r.apply(this,arguments)}},Wn.ary=Oa,Wn.assign=xu,Wn.assignIn=ku,Wn.assignInWith=$u,Wn.assignWith=Au,Wn.at=zu,Wn.before=ja,Wn.bind=Ra,Wn.bindAll=nc,Wn.bindKey=Ia,Wn.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Za(t)?t:[t]},Wn.chain=va,Wn.chunk=function(t,r,e){r=(e?xi(t,r,e):r===n)?1:yn(bu(r),0);var o=null==t?0:t.length;if(!o||r<1)return[];for(var i=0,a=0,u=at(gr(o/r));ii?0:i+e),(o=o===n||o>i?i:bu(o))<0&&(o+=i),o=e>o?0:_u(o);e>>0)?(t=wu(t))&&("string"==typeof r||null!=r&&!cu(r))&&!(r=fo(r))&&an(t)?$o(dn(t),0,e):t.split(r,e):[]},Wn.spread=function(t,r){if("function"!=typeof t)throw new Ot(e);return r=null==r?0:yn(bu(r),0),Qe((function(n){var e=n[r],o=$o(n,0,r);return e&&Ir(o,e),$r(t,this,o)}))},Wn.tail=function(t){var r=null==t?0:t.length;return r?io(t,1,r):[]},Wn.take=function(t,r,e){return t&&t.length?io(t,0,(r=e||r===n?1:bu(r))<0?0:r):[]},Wn.takeRight=function(t,r,e){var o=null==t?0:t.length;return o?io(t,(r=o-(r=e||r===n?1:bu(r)))<0?0:r,o):[]},Wn.takeRightWhile=function(t,r){return t&&t.length?go(t,fi(r,3),!1,!0):[]},Wn.takeWhile=function(t,r){return t&&t.length?go(t,fi(r,3)):[]},Wn.tap=function(t,r){return r(t),t},Wn.throttle=function(t,r,n){var o=!0,i=!0;if("function"!=typeof t)throw new Ot(e);return eu(n)&&(o="leading"in n?!!n.leading:o,i="trailing"in n?!!n.trailing:i),Ua(t,r,{leading:o,maxWait:r,trailing:i})},Wn.thru=ga,Wn.toArray=vu,Wn.toPairs=Hu,Wn.toPairsIn=Wu,Wn.toPath=function(t){return Za(t)?Rr(t,Mi):fu(t)?[t]:Ro(Ni(wu(t)))},Wn.toPlainObject=yu,Wn.transform=function(t,r,n){var e=Za(t),o=e||Ja(t)||hu(t);if(r=fi(r,4),null==n){var i=t&&t.constructor;n=o?e?new i:[]:eu(t)&&tu(i)?Dn(Zt(t)):{}}return(o?zr:xe)(t,(function(t,e,o){return r(n,t,e,o)})),n},Wn.unary=function(t){return Oa(t,1)},Wn.union=oa,Wn.unionBy=ia,Wn.unionWith=aa,Wn.uniq=function(t){return t&&t.length?ho(t):[]},Wn.uniqBy=function(t,r){return t&&t.length?ho(t,fi(r,2)):[]},Wn.uniqWith=function(t,r){return r="function"==typeof r?r:n,t&&t.length?ho(t,n,r):[]},Wn.unset=function(t,r){return null==t||po(t,r)},Wn.unzip=ua,Wn.unzipWith=ca,Wn.update=function(t,r,n){return null==t?t:vo(t,r,wo(n))},Wn.updateWith=function(t,r,e,o){return o="function"==typeof o?o:n,null==t?t:vo(t,r,wo(e),o)},Wn.values=Du,Wn.valuesIn=function(t){return null==t?[]:Jr(t,Tu(t))},Wn.without=sa,Wn.words=tc,Wn.wrap=function(t,r){return Ma(wo(r),t)},Wn.xor=la,Wn.xorBy=fa,Wn.xorWith=ha,Wn.zip=da,Wn.zipObject=function(t,r){return mo(t||[],r||[],ee)},Wn.zipObjectDeep=function(t,r){return mo(t||[],r||[],ro)},Wn.zipWith=pa,Wn.entries=Hu,Wn.entriesIn=Wu,Wn.extend=ku,Wn.extendWith=$u,lc(Wn,Wn),Wn.add=wc,Wn.attempt=rc,Wn.camelCase=Fu,Wn.capitalize=qu,Wn.ceil=xc,Wn.clamp=function(t,r,e){return e===n&&(e=r,r=n),e!==n&&(e=(e=mu(e))==e?e:0),r!==n&&(r=(r=mu(r))==r?r:0),se(mu(t),r,e)},Wn.clone=function(t){return le(t,4)},Wn.cloneDeep=function(t){return le(t,5)},Wn.cloneDeepWith=function(t,r){return le(t,5,r="function"==typeof r?r:n)},Wn.cloneWith=function(t,r){return le(t,4,r="function"==typeof r?r:n)},Wn.conformsTo=function(t,r){return null==r||fe(t,r,Uu(r))},Wn.deburr=Vu,Wn.defaultTo=function(t,r){return null==t||t!=t?r:t},Wn.divide=kc,Wn.endsWith=function(t,r,e){t=wu(t),r=fo(r);var o=t.length,i=e=e===n?o:se(bu(e),0,o);return(e-=r.length)>=0&&t.slice(e,i)==r},Wn.eq=Da,Wn.escape=function(t){return(t=wu(t))&&Y.test(t)?t.replace(G,en):t},Wn.escapeRegExp=function(t){return(t=wu(t))&&ot.test(t)?t.replace(et,"\\$&"):t},Wn.every=function(t,r,e){var o=Za(t)?Sr:ge;return e&&xi(t,r,e)&&(r=n),o(t,fi(r,3))},Wn.find=ma,Wn.findIndex=Vi,Wn.findKey=function(t,r){return Br(t,fi(r,3),xe)},Wn.findLast=ya,Wn.findLastIndex=Zi,Wn.findLastKey=function(t,r){return Br(t,fi(r,3),ke)},Wn.floor=$c,Wn.forEach=wa,Wn.forEachRight=xa,Wn.forIn=function(t,r){return null==t?t:ye(t,fi(r,3),Tu)},Wn.forInRight=function(t,r){return null==t?t:we(t,fi(r,3),Tu)},Wn.forOwn=function(t,r){return t&&xe(t,fi(r,3))},Wn.forOwnRight=function(t,r){return t&&ke(t,fi(r,3))},Wn.get=Cu,Wn.gt=Fa,Wn.gte=qa,Wn.has=function(t,r){return null!=t&&_i(t,r,Ce)},Wn.hasIn=Ou,Wn.head=Ki,Wn.identity=ac,Wn.includes=function(t,r,n,e){t=Ka(t)?t:Du(t),n=n&&!e?bu(n):0;var o=t.length;return n<0&&(n=yn(o+n,0)),lu(t)?n<=o&&t.indexOf(r,n)>-1:!!o&&Mr(t,r,n)>-1},Wn.indexOf=function(t,r,n){var e=null==t?0:t.length;if(!e)return-1;var o=null==n?0:bu(n);return o<0&&(o=yn(e+o,0)),Mr(t,r,o)},Wn.inRange=function(t,r,e){return r=gu(r),e===n?(e=r,r=0):e=gu(e),function(t,r,n){return t>=wn(r,n)&&t=-9007199254740991&&t<=d},Wn.isSet=su,Wn.isString=lu,Wn.isSymbol=fu,Wn.isTypedArray=hu,Wn.isUndefined=function(t){return t===n},Wn.isWeakMap=function(t){return ou(t)&&bi(t)==R},Wn.isWeakSet=function(t){return ou(t)&&"[object WeakSet]"==Ee(t)},Wn.join=function(t,r){return null==t?"":_n.call(t,r)},Wn.kebabCase=Zu,Wn.last=Xi,Wn.lastIndexOf=function(t,r,e){var o=null==t?0:t.length;if(!o)return-1;var i=o;return e!==n&&(i=(i=bu(e))<0?yn(o+i,0):wn(i,o-1)),r==r?function(t,r,n){for(var e=n+1;e--;)if(t[e]===r)return e;return e}(t,r,i):Nr(t,Wr,i,!0)},Wn.lowerCase=Gu,Wn.lowerFirst=Ku,Wn.lt=du,Wn.lte=pu,Wn.max=function(t){return t&&t.length?be(t,ac,Se):n},Wn.maxBy=function(t,r){return t&&t.length?be(t,fi(r,2),Se):n},Wn.mean=function(t){return Dr(t,ac)},Wn.meanBy=function(t,r){return Dr(t,fi(r,2))},Wn.min=function(t){return t&&t.length?be(t,ac,Me):n},Wn.minBy=function(t,r){return t&&t.length?be(t,fi(r,2),Me):n},Wn.stubArray=_c,Wn.stubFalse=mc,Wn.stubObject=function(){return{}},Wn.stubString=function(){return""},Wn.stubTrue=function(){return!0},Wn.multiply=Ac,Wn.nth=function(t,r){return t&&t.length?qe(t,bu(r)):n},Wn.noConflict=function(){return hr._===this&&(hr._=Ht),this},Wn.noop=fc,Wn.now=Ca,Wn.pad=function(t,r,n){t=wu(t);var e=(r=bu(r))?hn(t):0;if(!r||e>=r)return t;var o=(r-e)/2;return Zo(br(o),n)+t+Zo(gr(o),n)},Wn.padEnd=function(t,r,n){t=wu(t);var e=(r=bu(r))?hn(t):0;return r&&er){var o=t;t=r,r=o}if(e||t%1||r%1){var i=$n();return wn(t+i*(r-t+cr("1e-"+((i+"").length-1))),r)}return Ye(t,r)},Wn.reduce=function(t,r,n){var e=Za(t)?Ur:Vr,o=arguments.length<3;return e(t,fi(r,4),n,o,pe)},Wn.reduceRight=function(t,r,n){var e=Za(t)?Tr:Vr,o=arguments.length<3;return e(t,fi(r,4),n,o,ve)},Wn.repeat=function(t,r,e){return r=(e?xi(t,r,e):r===n)?1:bu(r),Je(wu(t),r)},Wn.replace=function(){var t=arguments,r=wu(t[0]);return t.length<3?r:r.replace(t[1],t[2])},Wn.result=function(t,r,e){var o=-1,i=(r=xo(r,t)).length;for(i||(i=1,t=n);++od)return[];var n=v,e=wn(t,v);r=fi(r),t-=v;for(var o=Gr(e,r);++n=a)return t;var c=e-hn(o);if(c<1)return o;var s=u?$o(u,0,c).join(""):t.slice(0,c);if(i===n)return s+o;if(u&&(c+=s.length-c),cu(i)){if(t.slice(c).search(i)){var l,f=s;for(i.global||(i=St(i.source,wu(pt.exec(i))+"g")),i.lastIndex=0;l=i.exec(f);)var h=l.index;s=s.slice(0,h===n?c:h)}}else if(t.indexOf(fo(i),c)!=c){var d=s.lastIndexOf(i);d>-1&&(s=s.slice(0,d))}return s+o},Wn.unescape=function(t){return(t=wu(t))&&K.test(t)?t.replace(Z,vn):t},Wn.uniqueId=function(t){var r=++Lt;return wu(t)+r},Wn.upperCase=Qu,Wn.upperFirst=Xu,Wn.each=wa,Wn.eachRight=xa,Wn.first=Ki,lc(Wn,(yc={},xe(Wn,(function(t,r){Pt.call(Wn.prototype,r)||(yc[r]=t)})),yc),{chain:!1}),Wn.VERSION="4.17.21",zr(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){Wn[t].placeholder=Wn})),zr(["drop","take"],(function(t,r){Vn.prototype[t]=function(e){e=e===n?1:yn(bu(e),0);var o=this.__filtered__&&!r?new Vn(this):this.clone();return o.__filtered__?o.__takeCount__=wn(e,o.__takeCount__):o.__views__.push({size:wn(e,v),type:t+(o.__dir__<0?"Right":"")}),o},Vn.prototype[t+"Right"]=function(r){return this.reverse()[t](r).reverse()}})),zr(["filter","map","takeWhile"],(function(t,r){var n=r+1,e=1==n||3==n;Vn.prototype[t]=function(t){var r=this.clone();return r.__iteratees__.push({iteratee:fi(t,3),type:n}),r.__filtered__=r.__filtered__||e,r}})),zr(["head","last"],(function(t,r){var n="take"+(r?"Right":"");Vn.prototype[t]=function(){return this[n](1).value()[0]}})),zr(["initial","tail"],(function(t,r){var n="drop"+(r?"":"Right");Vn.prototype[t]=function(){return this.__filtered__?new Vn(this):this[n](1)}})),Vn.prototype.compact=function(){return this.filter(ac)},Vn.prototype.find=function(t){return this.filter(t).head()},Vn.prototype.findLast=function(t){return this.reverse().find(t)},Vn.prototype.invokeMap=Qe((function(t,r){return"function"==typeof t?new Vn(this):this.map((function(n){return Re(n,t,r)}))})),Vn.prototype.reject=function(t){return this.filter(Ba(fi(t)))},Vn.prototype.slice=function(t,r){t=bu(t);var e=this;return e.__filtered__&&(t>0||r<0)?new Vn(e):(t<0?e=e.takeRight(-t):t&&(e=e.drop(t)),r!==n&&(e=(r=bu(r))<0?e.dropRight(-r):e.take(r-t)),e)},Vn.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},Vn.prototype.toArray=function(){return this.take(v)},xe(Vn.prototype,(function(t,r){var e=/^(?:filter|find|map|reject)|While$/.test(r),o=/^(?:head|last)$/.test(r),i=Wn[o?"take"+("last"==r?"Right":""):r],a=o||/^find/.test(r);i&&(Wn.prototype[r]=function(){var r=this.__wrapped__,u=o?[1]:arguments,c=r instanceof Vn,s=u[0],l=c||Za(r),f=function(t){var r=i.apply(Wn,Ir([t],u));return o&&h?r[0]:r};l&&e&&"function"==typeof s&&1!=s.length&&(c=l=!1);var h=this.__chain__,d=!!this.__actions__.length,p=a&&!h,v=c&&!d;if(!a&&l){r=v?r:new Vn(this);var g=t.apply(r,u);return g.__actions__.push({func:ga,args:[f],thisArg:n}),new qn(g,h)}return p&&v?t.apply(this,u):(g=this.thru(f),p?o?g.value()[0]:g.value():g)})})),zr(["pop","push","shift","sort","splice","unshift"],(function(t){var r=jt[t],n=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",e=/^(?:pop|shift)$/.test(t);Wn.prototype[t]=function(){var t=arguments;if(e&&!this.__chain__){var o=this.value();return r.apply(Za(o)?o:[],t)}return this[n]((function(n){return r.apply(Za(n)?n:[],t)}))}})),xe(Vn.prototype,(function(t,r){var n=Wn[r];if(n){var e=n.name+"";Pt.call(In,e)||(In[e]=[]),In[e].push({name:r,func:n})}})),In[Do(n,2).name]=[{name:"wrapper",func:n}],Vn.prototype.clone=function(){var t=new Vn(this.__wrapped__);return t.__actions__=Ro(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Ro(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Ro(this.__views__),t},Vn.prototype.reverse=function(){if(this.__filtered__){var t=new Vn(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},Vn.prototype.value=function(){var t=this.__wrapped__.value(),r=this.__dir__,n=Za(t),e=r<0,o=n?t.length:0,i=function(t,r,n){for(var e=-1,o=n.length;++e=this.__values__.length;return{done:t,value:t?n:this.__values__[this.__index__++]}},Wn.prototype.plant=function(t){for(var r,e=this;e instanceof Fn;){var o=Wi(e);o.__index__=0,o.__values__=n,r?i.__wrapped__=o:r=o;var i=o;e=e.__wrapped__}return i.__wrapped__=t,r},Wn.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof Vn){var r=t;return this.__actions__.length&&(r=new Vn(this)),(r=r.reverse()).__actions__.push({func:ga,args:[ea],thisArg:n}),new qn(r,this.__chain__)}return this.thru(ea)},Wn.prototype.toJSON=Wn.prototype.valueOf=Wn.prototype.value=function(){return bo(this.__wrapped__,this.__actions__)},Wn.prototype.first=Wn.prototype.head,rr&&(Wn.prototype[rr]=function(){return this}),Wn}();pr?((pr.exports=gn)._=gn,dr._=gn):hr._=gn}).call(o)},i(u={path:a,exports:{},require:function(t,r){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(r??u.path)}},u.exports),u.exports);t.i`/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + +html { + line-height: 1.15; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers. + */ + +body { + margin: 0; +} + +/** + * Render the \`main\` element consistently in IE. + */ + +main { + display: block; +} + +/** + * Correct the font size and margin on \`h1\` elements within \`section\` and + * \`article\` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd \`em\` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Remove the gray background on active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd \`em\` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent \`sub\` and \`sup\` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove the border on images inside links in IE 10. + */ + +img { + border-style: none; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { /* 1 */ + text-transform: none; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from \`fieldset\` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * \`fieldset\` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to \`inherit\` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ + +details { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ + +/** + * Add the correct display in IE 10+. + */ + +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ + +[hidden] { + display: none; +} + +:root { + --breakpoint-xs: 320px; + --breakpoint-s: 576px; + --breakpoint-m: 768px; + --breakpoint-l: 992px; + --breakpoint-xl: 1248px; + --container-width-xs: 288px; + --container-width-s: 544px; + --container-width-m: 720px; + --container-width-l: 944px; + --container-width-xl: 1200px; + --color-brick: #bd2719; + --color-brick-light: #ffeeed; + --color-brick-medium-light: #facbc8; + --color-brick-dark: #800e04; + --color-bus: #0000bf; + --color-bus-light: #f0f0ff; + --color-bus-medium-light: #ccccff; + --color-bus-dark: #00005e; + --color-coat-of-arms: #0072c6; + --color-coat-of-arms-light: #e6f4ff; + --color-coat-of-arms-medium-light: #b5daf7; + --color-coat-of-arms-dark: #005799; + --color-copper: #00d7a7; + --color-copper-light: #cffaf1; + --color-copper-medium-light: #9ef0de; + --color-copper-dark: #00a17d; + --color-engel: #ffe977; + --color-engel-light: #fff9db; + --color-engel-medium-light: #fff3b8; + --color-engel-dark: #dbc030; + --color-fog: #9fc9eb; + --color-fog-light: #e8f3fc; + --color-fog-medium-light: #d0e6f7; + --color-fog-dark: #72a5cf; + --color-gold: #c2a251; + --color-gold-light: #f7f2e4; + --color-gold-medium-light: #e8d7a7; + --color-gold-dark: #9e823c; + --color-metro: #fd4f00; + --color-metro-light: #ffeee6; + --color-metro-medium-light: #ffcab3; + --color-metro-dark: #bd2f00; + --color-silver: #dedfe1; + --color-silver-light: #f7f7f8; + --color-silver-medium-light: #efeff0; + --color-silver-dark: #b0b8bf; + --color-summer: #ffc61e; + --color-summer-light: #fff4d4; + --color-summer-medium-light: #ffe49c; + --color-summer-dark: #cc9200; + --color-suomenlinna: #f5a3c7; + --color-suomenlinna-light: #fff0f7; + --color-suomenlinna-medium-light: #ffdbeb; + --color-suomenlinna-dark: #e673a5; + --color-tram: #008741; + --color-tram-light: #dff7eb; + --color-tram-medium-light: #a3e3c2; + --color-tram-dark: #006631; + --color-black: #000000; + --color-white: #ffffff; + --color-black-5: #f2f2f2; + --color-black-10: #e6e6e6; + --color-black-20: #cccccc; + --color-black-30: #b3b3b3; + --color-black-40: #999999; + --color-black-50: #808080; + --color-black-60: #666666; + --color-black-70: #4d4d4d; + --color-black-80: #333333; + --color-black-90: #1a1a1a; + --color-error: #b01038; + --color-error-light: #f6e2e6; + --color-error-dark: #8d0d2d; + --color-success: #007a64; + --color-success-light: #e2f5f3; + --color-success-dark: #006250; + --color-alert: #ffda07; + --color-alert-light: #fff4b4; + --color-alert-dark: #d18200; + --color-info: #0062b9; + --color-info-light: #e5eff8; + --color-info-dark: #004f94; + --box-shadow-s: 0px 2px 10px 0px rgba(0, 0, 0, 0.07); + --box-shadow-m: 0px 2px 10px 0px rgba(0, 0, 0, 0.1); + --box-shadow-l: 0px 2px 20px 0px rgba(0, 0, 0, 0.2); + --spacing-layout-2-xs: 1rem; /* 16px */ + --spacing-layout-xs: 1.5rem; /* 24px */ + --spacing-layout-s: 2rem; /* 32px */ + --spacing-layout-m: 3rem; /* 48px */ + --spacing-layout-l: 4rem; /* 64px */ + --spacing-layout-xl: 6rem; /* 96px */ + --spacing-layout-2-xl: 8rem; /* 128px */ + --spacing-4-xs: 0.125rem; /* 2px */ + --spacing-3-xs: 0.25rem; /* 4px */ + --spacing-2-xs: 0.5rem; /* 8px */ + --spacing-xs: 0.75rem; /* 12px */ + --spacing-s: 1rem; /* 16px */ + --spacing-m: 1.5rem; /* 24px */ + --spacing-l: 2rem; /* 32px */ + --spacing-xl: 2.5rem; /* 40px */ + --spacing-2-xl: 3.0rem; /* 48px */ + --spacing-3-xl: 3.5rem; /* 56px */ + --spacing-4-xl: 4rem; /* 64px */ + --spacing-5-xl: 4.5rem; /* 72px */ + --fontsize-heading-xxl: 4rem; /* 64px */ + --fontsize-heading-xl: 3rem; /* 48px */ + --fontsize-heading-xl-mobile: 2.5rem; /* 40px */ + --fontsize-heading-l: 2rem; /* 32px */ + --fontsize-heading-m: 1.5rem; /* 24px */ + --fontsize-heading-s: 1.25rem; /* 20px */ + --fontsize-heading-xs: 1.125rem; /* 18px */ + --fontsize-heading-xxs: 1rem; /* 16px */ + --fontsize-body-s: 0.875rem; /* 14px */ + --fontsize-body-m: 1rem; /* 16px */ + --fontsize-body-l: 1.125rem; /* 18px */ + --fontsize-body-xl: 1.25rem; /* 20px */ + --font-default: HelsinkiGrotesk, Arial, sans-serif; + --lineheight-s: 1; + --lineheight-m: 1.2; + --lineheight-l: 1.5; + --lineheight-xl: 1.75; +} + +@keyframes fadeIn { + from { + opacity: 0; + } + to { + opacity: 1; + } +} + +.hiddenFromScreen { + border: 0; + clip: "rect(0 0 0 0)"; + height: 1px; + width: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + position: absolute; +} + +.button-reset { + background: none; + border: none; + color: inherit; + cursor: pointer; + font: inherit; + padding: 0; +} + +.text-body { + font-family: HelsinkiGrotesk, Arial, sans-serif; + font-family: var(--font-default); + font-size: 1rem; + font-size: var(--fontsize-body-m); + color: #1a1a1a; + color: var(--color-black-90); + line-height: 1.5; + line-height: var(--lineheight-l); +} + +.text-medium { + font-family: HelsinkiGrotesk, Arial, sans-serif; + font-family: var(--font-default); + font-weight: 500; +} + +.text-bold { + font-family: HelsinkiGrotesk, Arial, sans-serif; + font-family: var(--font-default); + font-weight: bold; +} + +.text-xl { + font-size: 1.5rem; + font-size: var(--fontsize-heading-m); +} + +.text-lg { + font-size: 1.25rem; + font-size: var(--fontsize-heading-s); +} + +.text-md { + font-size: 1.125rem; + font-size: var(--fontsize-heading-xs); +} + +.subtitle { + font-size: 1rem; + font-size: var(--fontsize-body-m); +} + +.text-sm { + font-size: 0.875rem; + font-size: var(--fontsize-body-s); + line-height: 1.75; + line-height: var(--lineheight-xl); +} + +/* HEADINGS */ + +.heading-xxl { + font-size: 4rem; + font-size: var(--fontsize-heading-xxl); + font-weight: 400; + line-height: 1; + line-height: var(--lineheight-s); + letter-spacing: -1.2px; +} + +.heading-xl { + font-size: 3rem; + font-size: var(--fontsize-heading-xl); + font-weight: 400; + line-height: 1; + line-height: var(--lineheight-s); + letter-spacing: -1.0px; +} + +.heading-xl-mobile { + font-size: 2.5rem; + font-size: var(--fontsize-heading-xl-mobile); + font-weight: 400; + line-height: 1; + line-height: var(--lineheight-s); + letter-spacing: -0.8px; +} + +.heading-l { + font-size: 2rem; + font-size: var(--fontsize-heading-l); + font-weight: 400; + line-height: 1; + line-height: var(--lineheight-s); + letter-spacing: -0.4px; +} + +.heading-m { + font-size: 1.5rem; + font-size: var(--fontsize-heading-m); + font-weight: 500; + line-height: 32px; + letter-spacing: -0.2px; +} + +.heading-s { + font-size: 1.25rem; + font-size: var(--fontsize-heading-s); + font-weight: 500; + line-height: 1.4; + letter-spacing: 0.2px; +} + +.heading-xs { + font-size: 1.125rem; + font-size: var(--fontsize-heading-xs); + font-weight: 700; + line-height: 1.33; + letter-spacing: 0.4px; +} + +.heading-xxs { + font-size: 1rem; + font-size: var(--fontsize-heading-xxs); + font-weight: 700; + line-height: 1.5; + line-height: var(--lineheight-l); + letter-spacing: 0.4px; +} +`;const s=t.i`.hds-button { + --border-width: 2px; + --color: inherit; + --min-size: 44px; + --outline-gutter: 2px; + --outline-width: 3px; + + align-content: flex-start; + align-items: center; + background-color: transparent; + background-color: var(--background-color, transparent); + border: var(--border-width) solid transparent; + border: var(--border-width) solid var(--border-color, transparent); + border-radius: 0; + color: var(--color); + cursor: pointer; + display: inline-flex; + font-weight: 500; + justify-content: center; + min-height: var(--min-size); + min-width: var(--min-size); + padding: 0 var(--spacing-2-xs); + position: relative; + vertical-align: top; +}.hds-button, +.hds-button::before, +.hds-button::after, +.hds-button *, +.hds-button *::before, +.hds-button *::after { + box-sizing: border-box; +}/* button transitions */.hds-button:hover, +.hds-button.focus-visible { + transition-property: background-color, border-color, color; + transition-duration: 85ms; + transition-timing-function: ease-out; +}.hds-button:hover, +.hds-button:focus-visible { + transition-property: background-color, border-color, color; + transition-duration: 85ms; + transition-timing-function: ease-out; +}.hds-button:hover { + background-color: transparent; + background-color: var(--background-color-hover, transparent); + color: var(--color-hover); +}.hds-button.focus-visible { + background-color: transparent; + background-color: var(--background-color-focus, transparent); + color: var(--color-focus); + outline: none; +}.hds-button:focus-visible { + background-color: transparent; + background-color: var(--background-color-focus, transparent); + color: var(--color-focus); + outline: none; +}.hds-button:active { + background-color: transparent; + background-color: var(--background-color-focus, transparent); + color: var(--color-focus); + outline: none; +}.hds-button.focus-visible:hover { + background-color: transparent; + background-color: var(--background-color-hover-focus, transparent); +}.hds-button:focus-visible:hover { + background-color: transparent; + background-color: var(--background-color-hover-focus, transparent); +}.hds-button:active:hover { + background-color: transparent; + background-color: var(--background-color-hover-focus, transparent); +}.hds-button:disabled { + background-color: transparent; + background-color: var(--background-color-disabled, transparent); + border-color: transparent; + border-color: var(--border-color-disabled, transparent); + color: var(--color-disabled); + cursor: not-allowed; +}.hds-button:not(:disabled) { + border-color: transparent; + border-color: var(--border-color, transparent); +}.hds-button:not(:disabled):hover { + border-color: transparent; + border-color: var(--border-color-hover, transparent); +}.hds-button:not(:disabled).focus-visible { + border-color: transparent; + border-color: var(--border-color-focus, transparent); +}.hds-button:not(:disabled):focus-visible { + border-color: transparent; + border-color: var(--border-color-focus, transparent); +}.hds-button:not(:disabled):active { + border-color: transparent; + border-color: var(--border-color-focus, transparent); +}.hds-button:not(:disabled).focus-visible:hover { + border-color: transparent; + border-color: var(--border-color-hover-focus, transparent); + color: var(--color-hover-focus); +}.hds-button:not(:disabled):focus-visible:hover { + border-color: transparent; + border-color: var(--border-color-hover-focus, transparent); + color: var(--color-hover-focus); +}.hds-button:not(:disabled):active:hover { + border-color: transparent; + border-color: var(--border-color-hover-focus, transparent); + color: var(--color-hover-focus); +}/* FOCUS OUTLINE */.hds-button::after { + --size: 100%; + + border: var(--outline-width) solid transparent; + content: ''; + height: var(--size); + position: absolute; + width: var(--size); +}.hds-button.focus-visible::after { + --size: calc(100% + calc(var(--outline-width) * 2 + var(--border-width) * 2 + var(--outline-gutter) * 2)); + border-color: var(--focus-outline-color); +}.hds-button:focus-visible::after { + --size: calc(100% + calc(var(--outline-width) * 2 + var(--border-width) * 2 + var(--outline-gutter) * 2)); + border-color: var(--focus-outline-color); +}.hds-button:active::after { + --size: calc(100% + calc(var(--outline-width) * 2 + var(--border-width) * 2 + var(--outline-gutter) * 2)); + border-color: var(--focus-outline-color); +}/* submit input */input[type="submit"].hds-button.focus-visible { + box-shadow: 0 0 0 var(--outline-gutter) var(--submit-input-focus-gutter-color), 0 0 0 calc(var(--outline-gutter) + var(--outline-width)) var(--focus-outline-color); +}input[type="submit"].hds-button:focus-visible { + box-shadow: 0 0 0 var(--outline-gutter) var(--submit-input-focus-gutter-color), 0 0 0 calc(var(--outline-gutter) + var(--outline-width)) var(--focus-outline-color); +}/* LABEL */input[type="submit"].hds-button, +.hds-button__label { + font-weight: inherit; + line-height: 1.25em; + padding: var(--spacing-s); +}input[type="submit"].hds-button { + cursor: pointer; + padding: var(--spacing-s) var(--spacing-l); +}/* no icons */.hds-button__label:only-child { + margin: 0 var(--spacing-2-xs); +}/* supplementary with right icon */.hds-button--supplementary .hds-button__label:first-child { + padding-right: var(--spacing-2-xs); +}/* supplementary with left icon */.hds-button--supplementary .hds-icon + .hds-button__label:last-child { + padding-left: var(--spacing-2-xs); +}/* supplementary with both icons */.hds-button--supplementary .hds-icon + .hds-button__label:not(:last-child) { + padding-left: var(--spacing-2-xs); + padding-right: var(--spacing-2-xs); +}/* SMALL */.hds-button--small { + padding: 0; +}input[type="submit"].hds-button--small, +.hds-button--small .hds-button__label { + line-height: var(--lineheight-s); + padding: var(--spacing-2-xs) var(--spacing-xs); +}input[type="submit"].hds-button--small { + padding: var(--spacing-2-xs) var(--spacing-m); +}/* no icons */.hds-button--small .hds-button__label:only-child { + margin: 0 var(--spacing-xs); +}/* both icons */.hds-button--small .hds-button__label:not(:first-of-type):not(:last-of-type) { + padding: var(--spacing-2-xs) var(--spacing-2-xs); +}/* FULL WIDTH */.hds-button--fullwidth { + width: 100%; +}/* ICONS *//* left */.hds-button .hds-icon { + height: var(--spacing-m); + margin-left: var(--spacing-s); + width: var(--spacing-m); +}/* right */.hds-button__label ~ .hds-icon { + margin: 0 var(--spacing-s) 0 0; +}/* left - small */.hds-button--small .hds-icon { + margin-left: var(--spacing-2-xs); +}/* right - small */.hds-button .hds-button--small .hds-button__label ~ .hds-icon { + margin: 0 var(--spacing-2-xs) 0 0; +}/* both icons - left */.hds-button .hds-icon:first-of-type:not(:last-of-type) { + margin: 0 0 0 var(--spacing-2-xs); +}/* both icons - right */.hds-button .hds-icon:last-of-type:not(:first-of-type) { + margin: 0 var(--spacing-2-xs) 0 0; +}/* both icons - left - small */.hds-button--small .hds-icon:first-child:not(:last-of-type) { + margin: 0 0 0 var(--spacing-2-xs); +}/* both icons - right - small */.hds-button--small .hds-icon:last-child:not(:first-of-type) { + margin: 0 var(--spacing-2-xs) 0 0; +}/* PRIMARY *//* default (bus) */.hds-button--primary { + --background-color: var(--color-bus); + --background-color-hover: var(--color-bus-dark); + --background-color-focus: var(--color-bus); + --background-color-hover-focus: var(--color-bus-dark); + --background-color-disabled: var(--color-black-20); + + --border-color: var(--color-bus); + --border-color-hover: var(--color-bus-dark); + --border-color-focus: var(--color-bus); + --border-color-hover-focus: var(--color-bus-dark); + --border-color-disabled: var(--color-black-20); + + --color: var(--color-white); + --color-hover: var(--color-white); + --color-focus: var(--color-white); + --color-hover-focus: var(--color-white); + --color-disabled: var(--color-white); + + --focus-outline-color: var(--color-coat-of-arms); + --submit-input-focus-gutter-color: var(--color-white); +}/* SECONDARY *//* default (bus) */.hds-button--secondary { + --background-color: transparent; + --background-color-hover: var(--color-bus-light); + --background-color-focus: transparent; + --background-color-hover-focus: var(--color-bus-light); + --background-color-disabled: transparent; + + --border-color: var(--color-bus); + --border-color-hover: var(--color-bus-dark); + --border-color-focus: var(--color-bus); + --border-color-hover-focus: var(--color-bus-dark); + --border-color-disabled: var(--color-black-50); + + --color: var(--color-bus); + --color-hover: var(--color-bus-dark); + --color-focus: var(--color-bus); + --color-hover-focus: var(--color-bus-dark); + --color-disabled: var(--color-black-40); + + --focus-outline-color: var(--color-coat-of-arms); + --submit-input-focus-gutter-color: var(--color-white); +}/* SUPPLEMENTARY */.hds-button--supplementary { + --background-color: transparent; + --background-color-hover: var(--color-bus-light); + --background-color-focus: transparent; + --background-color-hover-focus: var(--color-bus-light); + --background-color-disabled: transparent; + + --border-color: transparent; + --border-color-hover: transparent; + --border-color-focus: var(--color-coat-of-arms); + --border-color-hover-focus: var(--color-coat-of-arms); + --border-color-disabled: transparent; + + --color: var(--color-bus); + --color-hover: var(--color-bus-dark); + --color-focus: var(--color-bus); + --color-hover-focus: var(--color-bus-dark); + --color-disabled: var(--color-black-40); + + --focus-outline-color: transparent; + --submit-input-focus-gutter-color: transparent; +}/* LOADING */.hds-button--loading { + --background-color: transparent; + --background-color-hover: transparent; + --background-color-focus: transparent; + --background-color-hover-focus: transparent; + --background-color-disabled: transparent; + + --border-color: transparent; + --border-color-hover: transparent; + --border-color-focus: transparent; + --border-color-hover-focus: transparent; + --border-color-disabled: transparent; + + --color: var(--color-black-90); + --color-hover: var(--color-black-90); + --color-focus: var(--color-black-90); + --color-hover-focus: var(--color-black-90); + --color-disabled: var(--color-black-90); + + cursor: wait; +}/* UTILITY *//* success */.hds-button--success { + --background-color: var(--color-success); + --background-color-hover: var(--color-success-dark); + --background-color-focus: var(--color-success); + --background-color-hover-focus: var(--color-success-dark); + + --border-color: var(--color-success); + --border-color-hover: var(--color-success-dark); + --border-color-focus: var(--color-success); + --border-color-hover-focus: var(--color-success-dark); + + --color: var(--color-white); + --color-hover: var(--color-white); + --color-focus: var(--color-white); + --color-hover-focus: var(--color-white); + + --focus-outline-color: var(--color-coat-of-arms); +}/* danger */.hds-button--danger { + --background-color: var(--color-error); + --background-color-hover: var(--color-error-dark); + --background-color-focus: var(--color-error); + --background-color-hover-focus: var(--color-error-dark); + + --border-color: var(--color-error); + --border-color-hover: var(--color-error-dark); + --border-color-focus: var(--color-error); + --border-color-hover-focus: var(--color-error-dark); + + --color: var(--color-white); + --color-hover: var(--color-white); + --color-focus: var(--color-white); + --color-hover-focus: var(--color-white); + + --focus-outline-color: var(--color-coat-of-arms); +}/* THEMES *//* coat */.hds-button--primary.hds-button--theme-coat { + --background-color: var(--color-coat-of-arms); + --background-color-hover: var(--color-coat-of-arms-dark); + --background-color-focus: var(--color-coat-of-arms); + --background-color-hover-focus: var(--color-coat-of-arms-dark); + + --border-color: var(--color-coat-of-arms); + --border-color-hover: var(--color-coat-of-arms-dark); + --border-color-focus: var(--color-coat-of-arms); + --border-color-hover-focus: var(--color-coat-of-arms-dark); + + --color: var(--color-white); + --color-hover: var(--color-white); + --color-focus: var(--color-white); + --color-hover-focus: var(--color-white); +}.hds-button--secondary.hds-button--theme-coat { + --background-color: transparent; + --background-color-hover: var(--color-coat-of-arms-light); + --background-color-focus: transparent; + --background-color-hover-focus: var(--color-coat-of-arms-light); + + --border-color: var(--color-coat-of-arms); + --border-color-hover: var(--color-coat-of-arms-dark); + --border-color-focus: var(--color-coat-of-arms); + --border-color-hover-focus: var(--color-coat-of-arms-dark); + + --color: var(--color-coat-of-arms); + --color-hover: var(--color-coat-of-arms); + --color-focus: var(--color-coat-of-arms); + --color-hover-focus: var(--color-coat-of-arms); +}.hds-button--supplementary.hds-button--theme-coat { + --background-color: transparent; + --background-color-hover: var(--color-coat-of-arms-light); + --background-color-focus: transparent; + --background-color-hover-focus: var(--color-coat-of-arms-light); + + --border-color: transparent; + --border-color-hover: transparent; + --border-color-focus: var(--color-coat-of-arms); + --border-color-hover-focus: var(--color-coat-of-arms); + + --color: var(--color-coat-of-arms); + --color-hover: var(--color-coat-of-arms); + --color-focus: var(--color-coat-of-arms); + --color-hover-focus: var(--color-coat-of-arms); +}/* black */.hds-button--primary.hds-button--theme-black { + --background-color: var(--color-black); + --background-color-hover: var(--color-black); + --background-color-focus: var(--color-black); + --background-color-hover-focus: var(--color-black); + + --border-color: var(--color-black); + --border-color-hover: var(--color-black); + --border-color-focus: var(--color-black); + --border-color-hover-focus: var(--color-black); + + --color: var(--color-white); + --color-hover: var(--color-white); + --color-focus: var(--color-white); + --color-hover-focus: var(--color-white); +}.hds-button--secondary.hds-button--theme-black { + --background-color: transparent; + --background-color-hover: var(--color-black-5); + --background-color-focus: transparent; + --background-color-hover-focus: var(--color-black-5); + + --border-color: var(--color-black); + --border-color-hover: var(--color-black); + --border-color-focus: var(--color-black); + --border-color-hover-focus: var(--color-black); + + --color: var(--color-black); + --color-hover: var(--color-black); + --color-focus: var(--color-black); + --color-hover-focus: var(--color-black); +}.hds-button--supplementary.hds-button--theme-black { + --background-color: transparent; + --background-color-hover: var(--color-black-5); + --background-color-focus: transparent; + --background-color-hover-focus: var(--color-black-5); + + --border-color: transparent; + --border-color-hover: transparent; + --border-color-focus: var(--color-coat-of-arms); + --border-color-hover-focus: var(--color-coat-of-arms-dark); + + --color: var(--color-black); + --color-hover: var(--color-black); + --color-focus: var(--color-black); + --color-hover-focus: var(--color-black); +} + +:host { + display: block; + --background-color: var(--color-white); + --border-color: var(--color-black-60); + --header-font-color: var(--color-black-90); + --header-focus-outline-color: var(--color-coat-of-arms); + --content-font-color: var(--color-black-90); + --content-font-size: var(--fontsize-body-m); + --content-line-height: var(--lineheight-l); + border-bottom: 1px solid var(--border-color, currentColor); +} + +:host(:not(.card)) { + border-bottom: 1px solid var(--border-color, currentColor); +} + +:host(.card) { + background-color: var(--background-color); + padding-left: var(--padding-horizontal); + padding-right: var(--padding-horizontal); +} + +:host(.border) { + border: 2px solid var(--border-color); +} + +:host(.s) { + --header-font-size: var(--fontsize-heading-s); + --padding-vertical: var(--spacing-s); + --header-font-weight: 700; + --header-letter-spacing: 0.2px; + --header-line-height: 1.4; + --button-size: 28px; + --padding-horizontal: var(--spacing-2-xs); +} + +:host(.m) { + --header-font-size: var(--fontsize-heading-m); + --padding-vertical: var(--spacing-m); + --header-font-weight: 500; + --header-letter-spacing: -0.2px; + --header-line-height: 32px; + --button-size: 36px; + --padding-horizontal: var(--spacing-m); +} + +:host(.m) .closeButton div { + margin-right: 6px; +} + +:host(.l) { + --header-font-size: var(--fontsize-heading-l); + --padding-vertical: var(--spacing-l); + --header-font-weight: 400; + --header-letter-spacing: -0.4px; + --header-line-height: var(--lineheight-s); + --button-size: 52px; + --padding-horizontal: var(--spacing-l); +} + +.accordionHeader { + position: relative; + color: var(--header-font-color); + font-size: var(--header-font-size); + letter-spacing: var(--header-letter-spacing); + font-weight: var(--header-font-weight); + line-height: var(--header-line-height); + padding-top: var(--padding-vertical); + padding-bottom: var(--padding-vertical); + display: flex; + justify-content: space-between; + align-items: center; +} + +.accordionHeader > div { + flex: 1 1 auto; +} + +.accordionHeaderIconWrapper { + align-items: center; + display: flex; + justify-content: center; + line-height: 1; +} + +.accordionContent { + position: relative; + font-size: var(--content-font-size); + line-height: var(--content-line-height); + padding-bottom: var(--spacing-m); + color: var(--content-font-color); +} + +.closeButton { + + position: absolute; + bottom: 0; + right: 0; +} + +.contentWithCloseButton { + padding-bottom: 44px; +} + +.headingContainer { + cursor: pointer; + width: 100%; + display: grid; + grid-template-columns: auto calc(var(--button-size)); + box-sizing: border-box; + align-items: center; +} + +.headingContainer:focus { + outline: 2px solid var(--header-focus-outline-color, transparent); +} +`,l={fromAttribute:t=>"true"===t,toAttribute:t=>c.toString(t)};let f=class extends t.s{constructor(){super(...arguments),this.card=!1,this.border=!1,this.language="fi",this.headingLevel=2,this.isOpen=!1,this.closeButton=!0,this.toggleOpen=()=>{this.isOpen=!this.isOpen},this.hasCloseButton=()=>!!this.closeButton}static get properties(){return{id:{type:String},card:{type:Boolean,converter:l},border:{type:Boolean,converter:l},children:{type:HTMLCollection},language:{type:String},heading:{type:String},headingLevel:{type:Number},isOpen:{type:Boolean,converter:l},closeButton:{type:Boolean,converter:l},closeButtonClassName:{type:String},size:{type:String}}}get identifiers(){this.identifierPrefix||(this.identifierPrefix=this.id||c.uniqueId("accordion-"));return{heading:`${this.identifierPrefix}-heading`,content:`${this.identifierPrefix}-content`,closeButton:`${this.identifierPrefix}-closeButton`}}willUpdate(r){const n=this.card&&"card",e=this.card&&this.border&&"border",o=this.isOpen&&"isOpen";return this.className=(0,t.c)("accordion",n,e,o,this.size),super.willUpdate(r)}render(){return t.y` +
+
+ +
{"Enter"!==t.key&&" "!==t.key||this.toggleOpen()}} + @click=${this.toggleOpen}> + ${this.heading} +
+ +
+
+
+
+ +
+ + ${this.renderCloseButton()} +
+ + `}renderCloseButton(){if(!this.hasCloseButton)return"";const r={en:"Close",fi:"Sulje",sv:"Stäng"}[this.language];const n=(0,t.c)(r,this.heading),e=(0,t.c)("hds-button","hds-button--supplementary","hds-button--theme-black","closeButton",this.closeButtonClassName);return t.y` + + `}};f.styles=[t.i` + ${s} + `],f=(0,t._)([(0,t.e)("hds-accordion")],f)}()}(); \ No newline at end of file diff --git a/dist/js/IconAngleUp-2e1d15ac.min.js b/dist/js/IconAngleUp-2e1d15ac.min.js new file mode 100644 index 000000000..58434dc72 --- /dev/null +++ b/dist/js/IconAngleUp-2e1d15ac.min.js @@ -0,0 +1,40 @@ +!function(){"use strict";var t={};t.d=function(e,i){for(var s in i)t.o(i,s)&&!t.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:i[s]})},t.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)};const e=window,i=e.ShadowRoot&&(void 0===e.ShadyCSS||e.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,s=Symbol(),n=new WeakMap;class o{constructor(t,e,i){if(this._$cssResult$=!0,i!==s)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const e=this.t;if(i&&void 0===t){const i=void 0!==e&&1===e.length;i&&(t=n.get(e)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),i&&n.set(e,t))}return t}toString(){return this.cssText}}const r=function(t){for(var e=arguments.length,i=new Array(e>1?e-1:0),n=1;ne+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+t[s+1]),t[0]);return new o(r,t,s)},l=i?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e="";for(const i of t.cssRules)e+=i.cssText;return(t=>new o("string"==typeof t?t:t+"",void 0,s))(e)})(t):t;var h;const a=window,c=a.trustedTypes,d=c?c.emptyScript:"",u=a.reactiveElementPolyfillSupport,p={toAttribute(t,e){switch(e){case Boolean:t=t?d:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){let i=t;switch(e){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},v=(t,e)=>e!==t&&(e==e||t==t),$={attribute:!0,type:String,converter:p,reflect:!1,hasChanged:v};class _ extends HTMLElement{constructor(){super(),this._$Ei=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$El=null,this.u()}static addInitializer(t){var e;this.finalize(),(null!==(e=this.h)&&void 0!==e?e:this.h=[]).push(t)}static get observedAttributes(){this.finalize();const t=[];return this.elementProperties.forEach(((e,i)=>{const s=this._$Ep(i,e);void 0!==s&&(this._$Ev.set(s,i),t.push(s))})),t}static createProperty(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:$;if(e.state&&(e.attribute=!1),this.finalize(),this.elementProperties.set(t,e),!e.noAccessor&&!this.prototype.hasOwnProperty(t)){const i="symbol"==typeof t?Symbol():"__"+t,s=this.getPropertyDescriptor(t,i,e);void 0!==s&&Object.defineProperty(this.prototype,t,s)}}static getPropertyDescriptor(t,e,i){return{get(){return this[e]},set(s){const n=this[t];this[e]=s,this.requestUpdate(t,n,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)||$}static finalize(){if(this.hasOwnProperty("finalized"))return!1;this.finalized=!0;const t=Object.getPrototypeOf(this);if(t.finalize(),void 0!==t.h&&(this.h=[...t.h]),this.elementProperties=new Map(t.elementProperties),this._$Ev=new Map,this.hasOwnProperty("properties")){const t=this.properties,e=[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)];for(const i of e)this.createProperty(i,t[i])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(t){const e=[];if(Array.isArray(t)){const i=new Set(t.flat(1/0).reverse());for(const t of i)e.unshift(l(t))}else void 0!==t&&e.push(l(t));return e}static _$Ep(t,e){const i=e.attribute;return!1===i?void 0:"string"==typeof i?i:"string"==typeof t?t.toLowerCase():void 0}u(){var t;this._$E_=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$Eg(),this.requestUpdate(),null===(t=this.constructor.h)||void 0===t||t.forEach((t=>t(this)))}addController(t){var e,i;(null!==(e=this._$ES)&&void 0!==e?e:this._$ES=[]).push(t),void 0!==this.renderRoot&&this.isConnected&&(null===(i=t.hostConnected)||void 0===i||i.call(t))}removeController(t){var e;null===(e=this._$ES)||void 0===e||e.splice(this._$ES.indexOf(t)>>>0,1)}_$Eg(){this.constructor.elementProperties.forEach(((t,e)=>{this.hasOwnProperty(e)&&(this._$Ei.set(e,this[e]),delete this[e])}))}createRenderRoot(){var t;const s=null!==(t=this.shadowRoot)&&void 0!==t?t:this.attachShadow(this.constructor.shadowRootOptions);return((t,s)=>{i?t.adoptedStyleSheets=s.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet)):s.forEach((i=>{const s=document.createElement("style"),n=e.litNonce;void 0!==n&&s.setAttribute("nonce",n),s.textContent=i.cssText,t.appendChild(s)}))})(s,this.constructor.elementStyles),s}connectedCallback(){var t;void 0===this.renderRoot&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostConnected)||void 0===e?void 0:e.call(t)}))}enableUpdating(t){}disconnectedCallback(){var t;null===(t=this._$ES)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostDisconnected)||void 0===e?void 0:e.call(t)}))}attributeChangedCallback(t,e,i){this._$AK(t,i)}_$EO(t,e){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:$;var s;const n=this.constructor._$Ep(t,i);if(void 0!==n&&!0===i.reflect){const o=(void 0!==(null===(s=i.converter)||void 0===s?void 0:s.toAttribute)?i.converter:p).toAttribute(e,i.type);this._$El=t,null==o?this.removeAttribute(n):this.setAttribute(n,o),this._$El=null}}_$AK(t,e){var i;const s=this.constructor,n=s._$Ev.get(t);if(void 0!==n&&this._$El!==n){const t=s.getPropertyOptions(n),o="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==(null===(i=t.converter)||void 0===i?void 0:i.fromAttribute)?t.converter:p;this._$El=n,this[n]=o.fromAttribute(e,t.type),this._$El=null}}requestUpdate(t,e,i){let s=!0;void 0!==t&&(((i=i||this.constructor.getPropertyOptions(t)).hasChanged||v)(this[t],e)?(this._$AL.has(t)||this._$AL.set(t,e),!0===i.reflect&&this._$El!==t&&(void 0===this._$EC&&(this._$EC=new Map),this._$EC.set(t,i))):s=!1),!this.isUpdatePending&&s&&(this._$E_=this._$Ej())}async _$Ej(){this.isUpdatePending=!0;try{await this._$E_}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;this.hasUpdated,this._$Ei&&(this._$Ei.forEach(((t,e)=>this[e]=t)),this._$Ei=void 0);let e=!1;const i=this._$AL;try{e=this.shouldUpdate(i),e?(this.willUpdate(i),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostUpdate)||void 0===e?void 0:e.call(t)})),this.update(i)):this._$Ek()}catch(t){throw e=!1,this._$Ek(),t}e&&this._$AE(i)}willUpdate(t){}_$AE(t){var e;null===(e=this._$ES)||void 0===e||e.forEach((t=>{var e;return null===(e=t.hostUpdated)||void 0===e?void 0:e.call(t)})),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$Ek(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$E_}shouldUpdate(t){return!0}update(t){void 0!==this._$EC&&(this._$EC.forEach(((t,e)=>this._$EO(e,this[e],t))),this._$EC=void 0),this._$Ek()}updated(t){}firstUpdated(t){}}var f;_.finalized=!0,_.elementProperties=new Map,_.elementStyles=[],_.shadowRootOptions={mode:"open"},null==u||u({ReactiveElement:_}),(null!==(h=a.reactiveElementVersions)&&void 0!==h?h:a.reactiveElementVersions=[]).push("1.6.1");const g=window,A=g.trustedTypes,y=A?A.createPolicy("lit-html",{createHTML:t=>t}):void 0,m=`lit$${(Math.random()+"").slice(9)}$`,E="?"+m,b=`<${E}>`,S=document,w=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return S.createComment(t)},C=t=>null===t||"object"!=typeof t&&"function"!=typeof t,x=Array.isArray,P=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,U=/-->/g,O=/>/g,H=RegExp(">|[ \t\n\f\r](?:([^\\s\"'>=/]+)([ \t\n\f\r]*=[ \t\n\f\r]*(?:[^ \t\n\f\r\"'`<>=]|(\"|')|))|$)","g"),k=/'/g,z=/"/g,T=/^(?:script|style|textarea|title)$/i,N=(t=>function(e){for(var i=arguments.length,s=new Array(i>1?i-1:0),n=1;n{const i=t.length-1,s=[];let n,o=2===e?"":"",r=P;for(let e=0;e"===h[0]?(r=null!=n?n:P,a=-1):void 0===h[1]?a=-2:(a=r.lastIndex-h[2].length,l=h[1],r=void 0===h[3]?H:'"'===h[3]?z:k):r===z||r===k?r=H:r===U||r===O?r=P:(r=H,n=void 0);const d=r===H&&t[e+1].startsWith("/>")?" ":"";o+=r===P?i+b:a>=0?(s.push(l),i.slice(0,a)+"$lit$"+i.slice(a)+m+d):i+m+(-2===a?(s.push(void 0),e):d)}const l=o+(t[i]||"")+(2===e?"":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[void 0!==y?y.createHTML(l):l,s]};class D{constructor(t,e){let i,{strings:s,_$litType$:n}=t;this.parts=[];let o=0,r=0;const l=s.length-1,h=this.parts,[a,c]=B(s,n);if(this.el=D.createElement(a,e),L.currentNode=this.el.content,2===n){const t=this.el.content,e=t.firstChild;e.remove(),t.append(...e.childNodes)}for(;null!==(i=L.nextNode())&&h.length0){i.textContent=A?A.emptyScript:"";for(let s=0;s2&&void 0!==arguments[2]?arguments[2]:t,s=arguments.length>3?arguments[3]:void 0;var n,o,r,l;if(e===R)return e;let h=void 0!==s?null===(n=i._$Co)||void 0===n?void 0:n[s]:i._$Cl;const a=C(e)?void 0:e._$litDirective$;return(null==h?void 0:h.constructor)!==a&&(null===(o=null==h?void 0:h._$AO)||void 0===o||o.call(h,!1),void 0===a?h=void 0:(h=new a(t),h._$AT(t,i,s)),void 0!==s?(null!==(r=(l=i)._$Co)&&void 0!==r?r:l._$Co=[])[s]=h:i._$Cl=h),void 0!==h&&(e=I(t,h._$AS(t,e.values),h,s)),e}class V{constructor(t,e){this.u=[],this._$AN=void 0,this._$AD=t,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}v(t){var e;const{el:{content:i},parts:s}=this._$AD,n=(null!==(e=null==t?void 0:t.creationScope)&&void 0!==e?e:S).importNode(i,!0);L.currentNode=n;let o=L.nextNode(),r=0,l=0,h=s[0];for(;void 0!==h;){if(r===h.index){let e;2===h.type?e=new W(o,o.nextSibling,this,t):1===h.type?e=new h.ctor(o,h.name,h.strings,this,t):6===h.type&&(e=new G(o,this,t)),this.u.push(e),h=s[++l]}r!==(null==h?void 0:h.index)&&(o=L.nextNode(),r++)}return n}p(t){let e=0;for(const i of this.u)void 0!==i&&(void 0!==i.strings?(i._$AI(t,i,e),e+=i.strings.length-2):i._$AI(t[e])),e++}}class W{constructor(t,e,i,s){var n;this.type=2,this._$AH=M,this._$AN=void 0,this._$AA=t,this._$AB=e,this._$AM=i,this.options=s,this._$Cm=null===(n=null==s?void 0:s.isConnected)||void 0===n||n}get _$AU(){var t,e;return null!==(e=null===(t=this._$AM)||void 0===t?void 0:t._$AU)&&void 0!==e?e:this._$Cm}get parentNode(){let t=this._$AA.parentNode;const e=this._$AM;return void 0!==e&&11===t.nodeType&&(t=e.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t){t=I(this,t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:this),C(t)?t===M||null==t||""===t?(this._$AH!==M&&this._$AR(),this._$AH=M):t!==this._$AH&&t!==R&&this.g(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):(t=>x(t)||"function"==typeof(null==t?void 0:t[Symbol.iterator]))(t)?this.k(t):this.g(t)}O(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._$AB;return this._$AA.parentNode.insertBefore(t,e)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}g(t){this._$AH!==M&&C(this._$AH)?this._$AA.nextSibling.data=t:this.T(S.createTextNode(t)),this._$AH=t}$(t){var e;const{values:i,_$litType$:s}=t,n="number"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=D.createElement(s.h,this.options)),s);if((null===(e=this._$AH)||void 0===e?void 0:e._$AD)===n)this._$AH.p(i);else{const t=new V(n,this),e=t.v(this.options);t.p(i),this.T(e),this._$AH=t}}_$AC(t){let e=j.get(t.strings);return void 0===e&&j.set(t.strings,e=new D(t)),e}k(t){x(this._$AH)||(this._$AH=[],this._$AR());const e=this._$AH;let i,s=0;for(const n of t)s===e.length?e.push(i=new W(this.O(w()),this.O(w()),this,this.options)):i=e[s],i._$AI(n),s++;s0&&void 0!==arguments[0]?arguments[0]:this._$AA.nextSibling,e=arguments.length>1?arguments[1]:void 0;var i;for(null===(i=this._$AP)||void 0===i||i.call(this,!1,!0,e);t&&t!==this._$AB;){const e=t.nextSibling;t.remove(),t=e}}setConnected(t){var e;void 0===this._$AM&&(this._$Cm=t,null===(e=this._$AP)||void 0===e||e.call(this,t))}}class q{constructor(t,e,i,s,n){this.type=1,this._$AH=M,this._$AN=void 0,this.element=t,this.name=e,this._$AM=s,this.options=n,i.length>2||""!==i[0]||""!==i[1]?(this._$AH=Array(i.length-1).fill(new String),this.strings=i):this._$AH=M}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this,i=arguments.length>2?arguments[2]:void 0,s=arguments.length>3?arguments[3]:void 0;const n=this.strings;let o=!1;if(void 0===n)t=I(this,t,e,0),o=!C(t)||t!==this._$AH&&t!==R,o&&(this._$AH=t);else{const s=t;let r,l;for(t=n[0],r=0;r1&&void 0!==arguments[1]?arguments[1]:this,0))&&void 0!==e?e:M)===R)return;const i=this._$AH,s=t===M&&i!==M||t.capture!==i.capture||t.once!==i.once||t.passive!==i.passive,n=t!==M&&(i===M||s);s&&this.element.removeEventListener(this.name,this,i),n&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var e,i;"function"==typeof this._$AH?this._$AH.call(null!==(i=null===(e=this.options)||void 0===e?void 0:e.host)&&void 0!==i?i:this.element,t):this._$AH.handleEvent(t)}}class G{constructor(t,e,i){this.element=t,this.type=6,this._$AN=void 0,this._$AM=e,this.options=i}get _$AU(){return this._$AM._$AU}_$AI(t){I(this,t)}}const Q=g.litHtmlPolyfillSupport;null==Q||Q(D,W),(null!==(f=g.litHtmlVersions)&&void 0!==f?f:g.litHtmlVersions=[]).push("2.6.1");var X,Y;class tt extends _{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var t,e;const i=super.createRenderRoot();return null!==(t=(e=this.renderOptions).renderBefore)&&void 0!==t||(e.renderBefore=i.firstChild),i}update(t){const e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=((t,e,i)=>{var s,n;const o=null!==(s=null==i?void 0:i.renderBefore)&&void 0!==s?s:e;let r=o._$litPart$;if(void 0===r){const t=null!==(n=null==i?void 0:i.renderBefore)&&void 0!==n?n:null;o._$litPart$=r=new W(e.insertBefore(w(),t),t,void 0,null!=i?i:{})}return r._$AI(t),r})(e,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!1)}render(){return R}}tt.finalized=!0,tt._$litElement$=!0,null===(X=globalThis.litElementHydrateSupport)||void 0===X||X.call(globalThis,{LitElement:tt});const et=globalThis.litElementPolyfillSupport;null==et||et({LitElement:tt}),(null!==(Y=globalThis.litElementVersions)&&void 0!==Y?Y:globalThis.litElementVersions=[]).push("3.2.2");var it;null===(it=window.HTMLSlotElement)||void 0===it||it.prototype.assignedElements;const st=r`.hds-icon { + --icon-size: 100%; + display: inline-block; + background-color: currentColor; + width: var(--icon-size); + height: var(--icon-size); + mask-repeat: no-repeat; + mask-position: center; + mask-size: auto; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + -webkit-mask-size: auto; +}.hds-icon.hds-icon--size-xs { + --icon-size: var(--spacing-layout-2-xs); +}.hds-icon.hds-icon--size-s { + --icon-size: var(--spacing-layout-xs); +}.hds-icon.hds-icon--size-m { + --icon-size: var(--spacing-layout-s); +}.hds-icon.hds-icon--size-l { + --icon-size: var(--spacing-layout-m); +}.hds-icon.hds-icon--size-xl { + --icon-size: var(--spacing-layout-l); +}.icon { + background-color: transparent !important; +} +`;let nt=class extends tt{static get properties(){return{size:{type:String}}}render(){return N` + + + + + + + `}};nt.styles=[r` + ${st} + `],nt=function(t,e,i,s){var n,o=arguments.length,r=o<3?e:null===s?s=Object.getOwnPropertyDescriptor(e,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(t,e,i,s);else for(var l=t.length-1;l>=0;l--)(n=t[l])&&(r=(o<3?n(r):o>3?n(e,i,r):n(e,i))||r);return o>3&&r&&Object.defineProperty(e,i,r),r}([(t=>e=>"function"==typeof e?((t,e)=>(customElements.define(t,e),e))(t,e):((t,e)=>{const{kind:i,elements:s}=e;return{kind:i,elements:s,finisher(e){customElements.define(t,e)}}})(t,e))("hds-icon-angle-up")],nt)}(); \ No newline at end of file diff --git a/dist/js/hds-accordion.min.js b/dist/js/hds-accordion.min.js new file mode 100644 index 000000000..d1fffdf3c --- /dev/null +++ b/dist/js/hds-accordion.min.js @@ -0,0 +1,1201 @@ +!function(){"use strict";var t={7226:function(t,r,n){var e=n(9907);const o=1;const i=(t=>function(){for(var r=arguments.length,n=new Array(r),e=0;e2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(t){return Object.keys(t).reduce(((r,n)=>{const e=t[n];return null==e?r:r+`${n=n.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${e};`}),"")}update(t,r){let[n]=r;const{style:o}=t.element;if(void 0===this.vt){this.vt=new Set;for(const t in n)this.vt.add(t);return this.render(n)}this.vt.forEach((t=>{null==n[t]&&(this.vt.delete(t),t.includes("-")?o.removeProperty(t):o[t]="")}));for(const t in n){const r=n[t];null!=r&&(this.vt.add(t),t.includes("-")?o.setProperty(t,r):o[t]=r)}return e.x}});var a="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:"undefined"!=typeof self?self:{};var u,c,s,l=(u=function(t,r){(function(){var n,e="Expected a function",o="__lodash_hash_undefined__",i="__lodash_placeholder__",u=16,c=32,s=64,l=128,f=256,h=1/0,d=9007199254740991,p=NaN,v=4294967295,g=[["ary",l],["bind",1],["bindKey",2],["curry",8],["curryRight",u],["flip",512],["partial",c],["partialRight",s],["rearg",f]],b="[object Arguments]",_="[object Array]",m="[object Boolean]",y="[object Date]",w="[object Error]",x="[object Function]",k="[object GeneratorFunction]",$="[object Map]",A="[object Number]",z="[object Object]",E="[object Promise]",S="[object RegExp]",C="[object Set]",O="[object String]",j="[object Symbol]",R="[object WeakMap]",I="[object ArrayBuffer]",U="[object DataView]",T="[object Float32Array]",P="[object Float64Array]",L="[object Int8Array]",B="[object Int16Array]",N="[object Int32Array]",M="[object Uint8Array]",H="[object Uint8ClampedArray]",W="[object Uint16Array]",D="[object Uint32Array]",F=/\b__p \+= '';/g,q=/\b(__p \+=) '' \+/g,V=/(__e\(.*?\)|\b__t\)) \+\n'';/g,Z=/&(?:amp|lt|gt|quot|#39);/g,G=/[&<>"']/g,K=RegExp(Z.source),Y=RegExp(G.source),J=/<%-([\s\S]+?)%>/g,Q=/<%([\s\S]+?)%>/g,X=/<%=([\s\S]+?)%>/g,tt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,rt=/^\w*$/,nt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,et=/[\\^$.*+?()[\]{}|]/g,ot=RegExp(et.source),it=/^\s+/,at=/\s/,ut=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,ct=/\{\n\/\* \[wrapped with (.+)\] \*/,st=/,? & /,lt=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,ft=/[()=,{}\[\]\/\s]/,ht=/\\(\\)?/g,dt=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,pt=/\w*$/,vt=/^[-+]0x[0-9a-f]+$/i,gt=/^0b[01]+$/i,bt=/^\[object .+?Constructor\]$/,_t=/^0o[0-7]+$/i,mt=/^(?:0|[1-9]\d*)$/,yt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,wt=/($^)/,xt=/['\n\r\u2028\u2029\\]/g,kt="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",$t="\\u2700-\\u27bf",At="a-z\\xdf-\\xf6\\xf8-\\xff",zt="A-Z\\xc0-\\xd6\\xd8-\\xde",Et="\\ufe0e\\ufe0f",St="\\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",Ct="['’]",Ot="[\\ud800-\\udfff]",jt="["+St+"]",Rt="["+kt+"]",It="\\d+",Ut="[\\u2700-\\u27bf]",Tt="["+At+"]",Pt="[^\\ud800-\\udfff"+St+It+$t+At+zt+"]",Lt="\\ud83c[\\udffb-\\udfff]",Bt="[^\\ud800-\\udfff]",Nt="(?:\\ud83c[\\udde6-\\uddff]){2}",Mt="[\\ud800-\\udbff][\\udc00-\\udfff]",Ht="["+zt+"]",Wt="(?:"+Tt+"|"+Pt+")",Dt="(?:"+Ht+"|"+Pt+")",Ft="(?:['’](?:d|ll|m|re|s|t|ve))?",qt="(?:['’](?:D|LL|M|RE|S|T|VE))?",Vt="(?:"+Rt+"|"+Lt+")?",Zt="[\\ufe0e\\ufe0f]?",Gt=Zt+Vt+"(?:\\u200d(?:"+[Bt,Nt,Mt].join("|")+")"+Zt+Vt+")*",Kt="(?:"+[Ut,Nt,Mt].join("|")+")"+Gt,Yt="(?:"+[Bt+Rt+"?",Rt,Nt,Mt,Ot].join("|")+")",Jt=RegExp(Ct,"g"),Qt=RegExp(Rt,"g"),Xt=RegExp(Lt+"(?="+Lt+")|"+Yt+Gt,"g"),tr=RegExp([Ht+"?"+Tt+"+"+Ft+"(?="+[jt,Ht,"$"].join("|")+")",Dt+"+"+qt+"(?="+[jt,Ht+Wt,"$"].join("|")+")",Ht+"?"+Wt+"+"+Ft,Ht+"+"+qt,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",It,Kt].join("|"),"g"),rr=RegExp("[\\u200d\\ud800-\\udfff"+kt+Et+"]"),nr=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,er=["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"],or=-1,ir={};ir[T]=ir[P]=ir[L]=ir[B]=ir[N]=ir[M]=ir[H]=ir[W]=ir[D]=!0,ir[b]=ir[_]=ir[I]=ir[m]=ir[U]=ir[y]=ir[w]=ir[x]=ir[$]=ir[A]=ir[z]=ir[S]=ir[C]=ir[O]=ir[R]=!1;var ar={};ar[b]=ar[_]=ar[I]=ar[U]=ar[m]=ar[y]=ar[T]=ar[P]=ar[L]=ar[B]=ar[N]=ar[$]=ar[A]=ar[z]=ar[S]=ar[C]=ar[O]=ar[j]=ar[M]=ar[H]=ar[W]=ar[D]=!0,ar[w]=ar[x]=ar[R]=!1;var ur={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},cr=parseFloat,sr=parseInt,lr="object"==typeof a&&a&&a.Object===Object&&a,fr="object"==typeof self&&self&&self.Object===Object&&self,hr=lr||fr||Function("return this")(),dr=r&&!r.nodeType&&r,pr=dr&&t&&!t.nodeType&&t,vr=pr&&pr.exports===dr,gr=vr&&lr.process,br=function(){try{var t=pr&&pr.require&&pr.require("util").types;return t||gr&&gr.binding&&gr.binding("util")}catch(t){}}(),_r=br&&br.isArrayBuffer,mr=br&&br.isDate,yr=br&&br.isMap,wr=br&&br.isRegExp,xr=br&&br.isSet,kr=br&&br.isTypedArray;function $r(t,r,n){switch(n.length){case 0:return t.call(r);case 1:return t.call(r,n[0]);case 2:return t.call(r,n[0],n[1]);case 3:return t.call(r,n[0],n[1],n[2])}return t.apply(r,n)}function Ar(t,r,n,e){for(var o=-1,i=null==t?0:t.length;++o-1}function jr(t,r,n){for(var e=-1,o=null==t?0:t.length;++e-1;);return n}function tn(t,r){for(var n=t.length;n--&&Mr(r,t[n],0)>-1;);return n}function rn(t,r){for(var n=t.length,e=0;n--;)t[n]===r&&++e;return e}var nn=qr({À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"}),en=qr({"&":"&","<":"<",">":">",'"':""","'":"'"});function on(t){return"\\"+ur[t]}function an(t){return rr.test(t)}function un(t){var r=-1,n=Array(t.size);return t.forEach((function(t,e){n[++r]=[e,t]})),n}function cn(t,r){return function(n){return t(r(n))}}function sn(t,r){for(var n=-1,e=t.length,o=0,a=[];++n",""":'"',"'":"'"}),gn=function t(r){var a,at=(r=null==r?hr:gn.defaults(hr.Object(),r,gn.pick(hr,er))).Array,kt=r.Date,$t=r.Error,At=r.Function,zt=r.Math,Et=r.Object,St=r.RegExp,Ct=r.String,Ot=r.TypeError,jt=at.prototype,Rt=At.prototype,It=Et.prototype,Ut=r["__core-js_shared__"],Tt=Rt.toString,Pt=It.hasOwnProperty,Lt=0,Bt=(a=/[^.]+$/.exec(Ut&&Ut.keys&&Ut.keys.IE_PROTO||""))?"Symbol(src)_1."+a:"",Nt=It.toString,Mt=Tt.call(Et),Ht=hr._,Wt=St("^"+Tt.call(Pt).replace(et,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Dt=vr?r.Buffer:n,Ft=r.Symbol,qt=r.Uint8Array,Vt=Dt?Dt.allocUnsafe:n,Zt=cn(Et.getPrototypeOf,Et),Gt=Et.create,Kt=It.propertyIsEnumerable,Yt=jt.splice,Xt=Ft?Ft.isConcatSpreadable:n,rr=Ft?Ft.iterator:n,ur=Ft?Ft.toStringTag:n,lr=function(){try{var t=pi(Et,"defineProperty");return t({},"",{}),t}catch(t){}}(),fr=r.clearTimeout!==hr.clearTimeout&&r.clearTimeout,dr=kt&&kt.now!==hr.Date.now&&kt.now,pr=r.setTimeout!==hr.setTimeout&&r.setTimeout,gr=zt.ceil,br=zt.floor,Lr=Et.getOwnPropertySymbols,qr=Dt?Dt.isBuffer:n,bn=r.isFinite,_n=jt.join,mn=cn(Et.keys,Et),yn=zt.max,wn=zt.min,xn=kt.now,kn=r.parseInt,$n=zt.random,An=jt.reverse,zn=pi(r,"DataView"),En=pi(r,"Map"),Sn=pi(r,"Promise"),Cn=pi(r,"Set"),On=pi(r,"WeakMap"),jn=pi(Et,"create"),Rn=On&&new On,In={},Un=Hi(zn),Tn=Hi(En),Pn=Hi(Sn),Ln=Hi(Cn),Bn=Hi(On),Nn=Ft?Ft.prototype:n,Mn=Nn?Nn.valueOf:n,Hn=Nn?Nn.toString:n;function Wn(t){if(ou(t)&&!Za(t)&&!(t instanceof Vn)){if(t instanceof qn)return t;if(Pt.call(t,"__wrapped__"))return Wi(t)}return new qn(t)}var Dn=function(){function t(){}return function(r){if(!eu(r))return{};if(Gt)return Gt(r);t.prototype=r;var e=new t;return t.prototype=n,e}}();function Fn(){}function qn(t,r){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!r,this.__index__=0,this.__values__=n}function Vn(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=v,this.__views__=[]}function Zn(t){var r=-1,n=null==t?0:t.length;for(this.clear();++r=r?t:r)),t}function le(t,r,e,o,i,a){var u,c=1&r,s=2&r,l=4&r;if(e&&(u=i?e(t,o,i,a):e(t)),u!==n)return u;if(!eu(t))return t;var f=Za(t);if(f){if(u=function(t){var r=t.length,n=new t.constructor(r);return r&&"string"==typeof t[0]&&Pt.call(t,"index")&&(n.index=t.index,n.input=t.input),n}(t),!c)return Ro(t,u)}else{var h=bi(t),d=h==x||h==k;if(Ja(t))return zo(t,c);if(h==z||h==b||d&&!i){if(u=s||d?{}:mi(t),!c)return s?function(t,r){return Io(t,gi(t),r)}(t,function(t,r){return t&&Io(r,Tu(r),t)}(u,t)):function(t,r){return Io(t,vi(t),r)}(t,ae(u,t))}else{if(!ar[h])return i?t:{};u=function(t,r,n){var e,o=t.constructor;switch(r){case I:return Eo(t);case m:case y:return new o(+t);case U:return function(t,r){var n=r?Eo(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case T:case P:case L:case B:case N:case M:case H:case W:case D:return So(t,n);case $:return new o;case A:case O:return new o(t);case S:return function(t){var r=new t.constructor(t.source,pt.exec(t));return r.lastIndex=t.lastIndex,r}(t);case C:return new o;case j:return e=t,Mn?Et(Mn.call(e)):{}}}(t,h,c)}}a||(a=new Jn);var p=a.get(t);if(p)return p;a.set(t,u),su(t)?t.forEach((function(n){u.add(le(n,r,e,n,t,a))})):iu(t)&&t.forEach((function(n,o){u.set(o,le(n,r,e,o,t,a))}));var v=f?n:(l?s?ui:ai:s?Tu:Uu)(t);return zr(v||t,(function(n,o){v&&(n=t[o=n]),ee(u,o,le(n,r,e,o,t,a))})),u}function fe(t,r,e){var o=e.length;if(null==t)return!o;for(t=Et(t);o--;){var i=e[o],a=r[i],u=t[i];if(u===n&&!(i in t)||!a(u))return!1}return!0}function he(t,r,o){if("function"!=typeof t)throw new Ot(e);return Ui((function(){t.apply(n,o)}),r)}function de(t,r,n,e){var o=-1,i=Or,a=!0,u=t.length,c=[],s=r.length;if(!u)return c;n&&(r=Rr(r,Yr(n))),e?(i=jr,a=!1):r.length>=200&&(i=Qr,a=!1,r=new Yn(r));t:for(;++o-1},Gn.prototype.set=function(t,r){var n=this.__data__,e=oe(n,t);return e<0?(++this.size,n.push([t,r])):n[e][1]=r,this},Kn.prototype.clear=function(){this.size=0,this.__data__={hash:new Zn,map:new(En||Gn),string:new Zn}},Kn.prototype.delete=function(t){var r=hi(this,t).delete(t);return this.size-=r?1:0,r},Kn.prototype.get=function(t){return hi(this,t).get(t)},Kn.prototype.has=function(t){return hi(this,t).has(t)},Kn.prototype.set=function(t,r){var n=hi(this,t),e=n.size;return n.set(t,r),this.size+=n.size==e?0:1,this},Yn.prototype.add=Yn.prototype.push=function(t){return this.__data__.set(t,o),this},Yn.prototype.has=function(t){return this.__data__.has(t)},Jn.prototype.clear=function(){this.__data__=new Gn,this.size=0},Jn.prototype.delete=function(t){var r=this.__data__,n=r.delete(t);return this.size=r.size,n},Jn.prototype.get=function(t){return this.__data__.get(t)},Jn.prototype.has=function(t){return this.__data__.has(t)},Jn.prototype.set=function(t,r){var n=this.__data__;if(n instanceof Gn){var e=n.__data__;if(!En||e.length<199)return e.push([t,r]),this.size=++n.size,this;n=this.__data__=new Kn(e)}return n.set(t,r),this.size=n.size,this};var pe=Po(xe),ve=Po(ke,!0);function ge(t,r){var n=!0;return pe(t,(function(t,e,o){return n=!!r(t,e,o)})),n}function be(t,r,e){for(var o=-1,i=t.length;++o0&&n(u)?r>1?me(u,r-1,n,e,o):Ir(o,u):e||(o[o.length]=u)}return o}var ye=Lo(),we=Lo(!0);function xe(t,r){return t&&ye(t,r,Uu)}function ke(t,r){return t&&we(t,r,Uu)}function $e(t,r){return Cr(r,(function(r){return tu(t[r])}))}function Ae(t,r){for(var e=0,o=(r=xo(r,t)).length;null!=t&&er}function Ce(t,r){return null!=t&&Pt.call(t,r)}function Oe(t,r){return null!=t&&r in Et(t)}function je(t,r,e){for(var o=e?jr:Or,i=t[0].length,a=t.length,u=a,c=at(a),s=1/0,l=[];u--;){var f=t[u];u&&r&&(f=Rr(f,Yr(r))),s=wn(f.length,s),c[u]=!e&&(r||i>=120&&f.length>=120)?new Yn(u&&f):n}f=t[0];var h=-1,d=c[0];t:for(;++h=u?c:c*("desc"==n[e]?-1:1)}return t.index-r.index}(t,r,n)}))}function Ze(t,r,n){for(var e=-1,o=r.length,i={};++e-1;)u!==t&&Yt.call(u,c,1),Yt.call(t,c,1);return t}function Ke(t,r){for(var n=t?r.length:0,e=n-1;n--;){var o=r[n];if(n==e||o!==i){var i=o;wi(o)?Yt.call(t,o,1):po(t,o)}}return t}function Ye(t,r){return t+br($n()*(r-t+1))}function Je(t,r){var n="";if(!t||r<1||r>d)return n;do{r%2&&(n+=t),(r=br(r/2))&&(t+=t)}while(r);return n}function Qe(t,r){return Ti(Ci(t,r,ac),t+"")}function Xe(t){return Xn(Du(t))}function to(t,r){var n=Du(t);return Bi(n,se(r,0,n.length))}function ro(t,r,e,o){if(!eu(t))return t;for(var i=-1,a=(r=xo(r,t)).length,u=a-1,c=t;null!=c&&++io?0:o+r),(n=n>o?o:n)<0&&(n+=o),o=r>n?0:n-r>>>0,r>>>=0;for(var i=at(o);++e>>1,a=t[i];null!==a&&!fu(a)&&(n?a<=r:a=200){var s=r?null:Qo(t);if(s)return ln(s);a=!1,o=Qr,c=new Yn}else c=r?[]:u;t:for(;++e=o?t:io(t,r,e)}var Ao=fr||function(t){return hr.clearTimeout(t)};function zo(t,r){if(r)return t.slice();var n=t.length,e=Vt?Vt(n):new t.constructor(n);return t.copy(e),e}function Eo(t){var r=new t.constructor(t.byteLength);return new qt(r).set(new qt(t)),r}function So(t,r){var n=r?Eo(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function Co(t,r){if(t!==r){var e=t!==n,o=null===t,i=t==t,a=fu(t),u=r!==n,c=null===r,s=r==r,l=fu(r);if(!c&&!l&&!a&&t>r||a&&u&&s&&!c&&!l||o&&u&&s||!e&&s||!i)return 1;if(!o&&!a&&!l&&t1?e[i-1]:n,u=i>2?e[2]:n;for(a=t.length>3&&"function"==typeof a?(i--,a):n,u&&xi(e[0],e[1],u)&&(a=i<3?n:a,i=1),r=Et(r);++o-1?i[a?r[u]:u]:n}}function Wo(t){return ii((function(r){var o=r.length,i=o,a=qn.prototype.thru;for(t&&r.reverse();i--;){var u=r[i];if("function"!=typeof u)throw new Ot(e);if(a&&!c&&"wrapper"==si(u))var c=new qn([],!0)}for(i=c?i:o;++i1&&_.reverse(),h&&sc))return!1;var l=a.get(t),f=a.get(r);if(l&&f)return l==r&&f==t;var h=-1,d=!0,p=2&e?new Yn:n;for(a.set(t,r),a.set(r,t);++h-1&&t%1==0&&t1?"& ":"")+r[e],r=r.join(n>2?", ":" "),t.replace(ut,"{\n/* [wrapped with "+r+"] */\n")}(e,function(t,r){return zr(g,(function(n){var e="_."+n[0];r&n[1]&&!Or(t,e)&&t.push(e)})),t.sort()}(function(t){var r=t.match(ct);return r?r[1].split(st):[]}(e),n)))}function Li(t){var r=0,e=0;return function(){var o=xn(),i=16-(o-e);if(e=o,i>0){if(++r>=800)return arguments[0]}else r=0;return t.apply(n,arguments)}}function Bi(t,r){var e=-1,o=t.length,i=o-1;for(r=r===n?o:r;++e1?t[r-1]:n;return e="function"==typeof e?(t.pop(),e):n,ca(t,e)}));function va(t){var r=Wn(t);return r.__chain__=!0,r}function ga(t,r){return r(t)}var ba=ii((function(t){var r=t.length,e=r?t[0]:0,o=this.__wrapped__,i=function(r){return ce(r,t)};return!(r>1||this.__actions__.length)&&o instanceof Vn&&wi(e)?((o=o.slice(e,+e+(r?1:0))).__actions__.push({func:ga,args:[i],thisArg:n}),new qn(o,this.__chain__).thru((function(t){return r&&!t.length&&t.push(n),t}))):this.thru(i)})),_a=Uo((function(t,r,n){Pt.call(t,n)?++t[n]:ue(t,n,1)})),ma=Ho(Vi),ya=Ho(Zi);function wa(t,r){return(Za(t)?zr:pe)(t,fi(r,3))}function xa(t,r){return(Za(t)?Er:ve)(t,fi(r,3))}var ka=Uo((function(t,r,n){Pt.call(t,n)?t[n].push(r):ue(t,n,[r])})),$a=Qe((function(t,r,n){var e=-1,o="function"==typeof r,i=Ka(t)?at(t.length):[];return pe(t,(function(t){i[++e]=o?$r(r,t,n):Re(t,r,n)})),i})),Aa=Uo((function(t,r,n){ue(t,n,r)}));function za(t,r){return(Za(t)?Rr:He)(t,fi(r,3))}var Ea=Uo((function(t,r,n){t[n?0:1].push(r)}),(function(){return[[],[]]})),Sa=Qe((function(t,r){if(null==t)return[];var n=r.length;return n>1&&xi(t,r[0],r[1])?r=[]:n>2&&xi(r[0],r[1],r[2])&&(r=[r[0]]),Ve(t,me(r,1),[])})),Ca=dr||function(){return hr.Date.now()};function Oa(t,r,e){return r=e?n:r,r=t&&null==r?t.length:r,ti(t,l,n,n,n,n,r)}function ja(t,r){var o;if("function"!=typeof r)throw new Ot(e);return t=bu(t),function(){return--t>0&&(o=r.apply(this,arguments)),t<=1&&(r=n),o}}var Ra=Qe((function(t,r,n){var e=1;if(n.length){var o=sn(n,li(Ra));e|=c}return ti(t,e,r,n,o)})),Ia=Qe((function(t,r,n){var e=3;if(n.length){var o=sn(n,li(Ia));e|=c}return ti(r,e,t,n,o)}));function Ua(t,r,o){var i,a,u,c,s,l,f=0,h=!1,d=!1,p=!0;if("function"!=typeof t)throw new Ot(e);function v(r){var e=i,o=a;return i=a=n,f=r,c=t.apply(o,e)}function g(t){return f=t,s=Ui(_,r),h?v(t):c}function b(t){var e=t-l;return l===n||e>=r||e<0||d&&t-f>=u}function _(){var t=Ca();if(b(t))return m(t);s=Ui(_,function(t){var n=r-(t-l);return d?wn(n,u-(t-f)):n}(t))}function m(t){return s=n,p&&i?v(t):(i=a=n,c)}function y(){var t=Ca(),e=b(t);if(i=arguments,a=this,l=t,e){if(s===n)return g(l);if(d)return Ao(s),s=Ui(_,r),v(l)}return s===n&&(s=Ui(_,r)),c}return r=mu(r)||0,eu(o)&&(h=!!o.leading,u=(d="maxWait"in o)?yn(mu(o.maxWait)||0,r):u,p="trailing"in o?!!o.trailing:p),y.cancel=function(){s!==n&&Ao(s),f=0,i=l=a=s=n},y.flush=function(){return s===n?c:m(Ca())},y}var Ta=Qe((function(t,r){return he(t,1,r)})),Pa=Qe((function(t,r,n){return he(t,mu(r)||0,n)}));function La(t,r){if("function"!=typeof t||null!=r&&"function"!=typeof r)throw new Ot(e);var n=function(){var e=arguments,o=r?r.apply(this,e):e[0],i=n.cache;if(i.has(o))return i.get(o);var a=t.apply(this,e);return n.cache=i.set(o,a)||i,a};return n.cache=new(La.Cache||Kn),n}function Ba(t){if("function"!=typeof t)throw new Ot(e);return function(){var r=arguments;switch(r.length){case 0:return!t.call(this);case 1:return!t.call(this,r[0]);case 2:return!t.call(this,r[0],r[1]);case 3:return!t.call(this,r[0],r[1],r[2])}return!t.apply(this,r)}}La.Cache=Kn;var Na=ko((function(t,r){var n=(r=1==r.length&&Za(r[0])?Rr(r[0],Yr(fi())):Rr(me(r,1),Yr(fi()))).length;return Qe((function(e){for(var o=-1,i=wn(e.length,n);++o=r})),Va=Ie(function(){return arguments}())?Ie:function(t){return ou(t)&&Pt.call(t,"callee")&&!Kt.call(t,"callee")},Za=at.isArray,Ga=_r?Yr(_r):function(t){return ou(t)&&Ee(t)==I};function Ka(t){return null!=t&&nu(t.length)&&!tu(t)}function Ya(t){return ou(t)&&Ka(t)}var Ja=qr||mc,Qa=mr?Yr(mr):function(t){return ou(t)&&Ee(t)==y};function Xa(t){if(!ou(t))return!1;var r=Ee(t);return r==w||"[object DOMException]"==r||"string"==typeof t.message&&"string"==typeof t.name&&!uu(t)}function tu(t){if(!eu(t))return!1;var r=Ee(t);return r==x||r==k||"[object AsyncFunction]"==r||"[object Proxy]"==r}function ru(t){return"number"==typeof t&&t==bu(t)}function nu(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=d}function eu(t){var r=typeof t;return null!=t&&("object"==r||"function"==r)}function ou(t){return null!=t&&"object"==typeof t}var iu=yr?Yr(yr):function(t){return ou(t)&&bi(t)==$};function au(t){return"number"==typeof t||ou(t)&&Ee(t)==A}function uu(t){if(!ou(t)||Ee(t)!=z)return!1;var r=Zt(t);if(null===r)return!0;var n=Pt.call(r,"constructor")&&r.constructor;return"function"==typeof n&&n instanceof n&&Tt.call(n)==Mt}var cu=wr?Yr(wr):function(t){return ou(t)&&Ee(t)==S},su=xr?Yr(xr):function(t){return ou(t)&&bi(t)==C};function lu(t){return"string"==typeof t||!Za(t)&&ou(t)&&Ee(t)==O}function fu(t){return"symbol"==typeof t||ou(t)&&Ee(t)==j}var hu=kr?Yr(kr):function(t){return ou(t)&&nu(t.length)&&!!ir[Ee(t)]},du=Ko(Me),pu=Ko((function(t,r){return t<=r}));function vu(t){if(!t)return[];if(Ka(t))return lu(t)?dn(t):Ro(t);if(rr&&t[rr])return function(t){for(var r,n=[];!(r=t.next()).done;)n.push(r.value);return n}(t[rr]());var r=bi(t);return(r==$?un:r==C?ln:Du)(t)}function gu(t){return t?(t=mu(t))===h||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}function bu(t){var r=gu(t),n=r%1;return r==r?n?r-n:r:0}function _u(t){return t?se(bu(t),0,v):0}function mu(t){if("number"==typeof t)return t;if(fu(t))return p;if(eu(t)){var r="function"==typeof t.valueOf?t.valueOf():t;t=eu(r)?r+"":r}if("string"!=typeof t)return 0===t?t:+t;t=Kr(t);var n=gt.test(t);return n||_t.test(t)?sr(t.slice(2),n?2:8):vt.test(t)?p:+t}function yu(t){return Io(t,Tu(t))}function wu(t){return null==t?"":fo(t)}var xu=To((function(t,r){if(zi(r)||Ka(r))Io(r,Uu(r),t);else for(var n in r)Pt.call(r,n)&&ee(t,n,r[n])})),ku=To((function(t,r){Io(r,Tu(r),t)})),$u=To((function(t,r,n,e){Io(r,Tu(r),t,e)})),Au=To((function(t,r,n,e){Io(r,Uu(r),t,e)})),zu=ii(ce),Eu=Qe((function(t,r){t=Et(t);var e=-1,o=r.length,i=o>2?r[2]:n;for(i&&xi(r[0],r[1],i)&&(o=1);++e1),r})),Io(t,ui(t),n),e&&(n=le(n,7,ei));for(var o=r.length;o--;)po(n,r[o]);return n})),Nu=ii((function(t,r){return null==t?{}:function(t,r){return Ze(t,r,(function(r,n){return Ou(t,n)}))}(t,r)}));function Mu(t,r){if(null==t)return{};var n=Rr(ui(t),(function(t){return[t]}));return r=fi(r),Ze(t,n,(function(t,n){return r(t,n[0])}))}var Hu=Xo(Uu),Wu=Xo(Tu);function Du(t){return null==t?[]:Jr(t,Uu(t))}var Fu=No((function(t,r,n){return r=r.toLowerCase(),t+(n?qu(r):r)}));function qu(t){return Xu(wu(t).toLowerCase())}function Vu(t){return(t=wu(t))&&t.replace(yt,nn).replace(Qt,"")}var Zu=No((function(t,r,n){return t+(n?"-":"")+r.toLowerCase()})),Gu=No((function(t,r,n){return t+(n?" ":"")+r.toLowerCase()})),Ku=Bo("toLowerCase"),Yu=No((function(t,r,n){return t+(n?"_":"")+r.toLowerCase()})),Ju=No((function(t,r,n){return t+(n?" ":"")+Xu(r)})),Qu=No((function(t,r,n){return t+(n?" ":"")+r.toUpperCase()})),Xu=Bo("toUpperCase");function tc(t,r,e){return t=wu(t),(r=e?n:r)===n?function(t){return nr.test(t)}(t)?function(t){return t.match(tr)||[]}(t):function(t){return t.match(lt)||[]}(t):t.match(r)||[]}var rc=Qe((function(t,r){try{return $r(t,n,r)}catch(t){return Xa(t)?t:new $t(t)}})),nc=ii((function(t,r){return zr(r,(function(r){r=Mi(r),ue(t,r,Ra(t[r],t))})),t}));function ec(t){return function(){return t}}var oc=Wo(),ic=Wo(!0);function ac(t){return t}function uc(t){return Le("function"==typeof t?t:le(t,1))}var cc=Qe((function(t,r){return function(n){return Re(n,t,r)}})),sc=Qe((function(t,r){return function(n){return Re(t,n,r)}}));function lc(t,r,n){var e=Uu(r),o=$e(r,e);null!=n||eu(r)&&(o.length||!e.length)||(n=r,r=t,t=this,o=$e(r,Uu(r)));var i=!(eu(n)&&"chain"in n&&!n.chain),a=tu(t);return zr(o,(function(n){var e=r[n];t[n]=e,a&&(t.prototype[n]=function(){var r=this.__chain__;if(i||r){var n=t(this.__wrapped__),o=n.__actions__=Ro(this.__actions__);return o.push({func:e,args:arguments,thisArg:t}),n.__chain__=r,n}return e.apply(t,Ir([this.value()],arguments))})})),t}function fc(){}var hc=Vo(Rr),dc=Vo(Sr),pc=Vo(Pr);function vc(t){return ki(t)?Fr(Mi(t)):function(t){return function(r){return Ae(r,t)}}(t)}var gc=Go(),bc=Go(!0);function _c(){return[]}function mc(){return!1}var yc,wc=qo((function(t,r){return t+r}),0),xc=Jo("ceil"),kc=qo((function(t,r){return t/r}),1),$c=Jo("floor"),Ac=qo((function(t,r){return t*r}),1),zc=Jo("round"),Ec=qo((function(t,r){return t-r}),0);return Wn.after=function(t,r){if("function"!=typeof r)throw new Ot(e);return t=bu(t),function(){if(--t<1)return r.apply(this,arguments)}},Wn.ary=Oa,Wn.assign=xu,Wn.assignIn=ku,Wn.assignInWith=$u,Wn.assignWith=Au,Wn.at=zu,Wn.before=ja,Wn.bind=Ra,Wn.bindAll=nc,Wn.bindKey=Ia,Wn.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Za(t)?t:[t]},Wn.chain=va,Wn.chunk=function(t,r,e){r=(e?xi(t,r,e):r===n)?1:yn(bu(r),0);var o=null==t?0:t.length;if(!o||r<1)return[];for(var i=0,a=0,u=at(gr(o/r));ii?0:i+e),(o=o===n||o>i?i:bu(o))<0&&(o+=i),o=e>o?0:_u(o);e>>0)?(t=wu(t))&&("string"==typeof r||null!=r&&!cu(r))&&!(r=fo(r))&&an(t)?$o(dn(t),0,e):t.split(r,e):[]},Wn.spread=function(t,r){if("function"!=typeof t)throw new Ot(e);return r=null==r?0:yn(bu(r),0),Qe((function(n){var e=n[r],o=$o(n,0,r);return e&&Ir(o,e),$r(t,this,o)}))},Wn.tail=function(t){var r=null==t?0:t.length;return r?io(t,1,r):[]},Wn.take=function(t,r,e){return t&&t.length?io(t,0,(r=e||r===n?1:bu(r))<0?0:r):[]},Wn.takeRight=function(t,r,e){var o=null==t?0:t.length;return o?io(t,(r=o-(r=e||r===n?1:bu(r)))<0?0:r,o):[]},Wn.takeRightWhile=function(t,r){return t&&t.length?go(t,fi(r,3),!1,!0):[]},Wn.takeWhile=function(t,r){return t&&t.length?go(t,fi(r,3)):[]},Wn.tap=function(t,r){return r(t),t},Wn.throttle=function(t,r,n){var o=!0,i=!0;if("function"!=typeof t)throw new Ot(e);return eu(n)&&(o="leading"in n?!!n.leading:o,i="trailing"in n?!!n.trailing:i),Ua(t,r,{leading:o,maxWait:r,trailing:i})},Wn.thru=ga,Wn.toArray=vu,Wn.toPairs=Hu,Wn.toPairsIn=Wu,Wn.toPath=function(t){return Za(t)?Rr(t,Mi):fu(t)?[t]:Ro(Ni(wu(t)))},Wn.toPlainObject=yu,Wn.transform=function(t,r,n){var e=Za(t),o=e||Ja(t)||hu(t);if(r=fi(r,4),null==n){var i=t&&t.constructor;n=o?e?new i:[]:eu(t)&&tu(i)?Dn(Zt(t)):{}}return(o?zr:xe)(t,(function(t,e,o){return r(n,t,e,o)})),n},Wn.unary=function(t){return Oa(t,1)},Wn.union=oa,Wn.unionBy=ia,Wn.unionWith=aa,Wn.uniq=function(t){return t&&t.length?ho(t):[]},Wn.uniqBy=function(t,r){return t&&t.length?ho(t,fi(r,2)):[]},Wn.uniqWith=function(t,r){return r="function"==typeof r?r:n,t&&t.length?ho(t,n,r):[]},Wn.unset=function(t,r){return null==t||po(t,r)},Wn.unzip=ua,Wn.unzipWith=ca,Wn.update=function(t,r,n){return null==t?t:vo(t,r,wo(n))},Wn.updateWith=function(t,r,e,o){return o="function"==typeof o?o:n,null==t?t:vo(t,r,wo(e),o)},Wn.values=Du,Wn.valuesIn=function(t){return null==t?[]:Jr(t,Tu(t))},Wn.without=sa,Wn.words=tc,Wn.wrap=function(t,r){return Ma(wo(r),t)},Wn.xor=la,Wn.xorBy=fa,Wn.xorWith=ha,Wn.zip=da,Wn.zipObject=function(t,r){return mo(t||[],r||[],ee)},Wn.zipObjectDeep=function(t,r){return mo(t||[],r||[],ro)},Wn.zipWith=pa,Wn.entries=Hu,Wn.entriesIn=Wu,Wn.extend=ku,Wn.extendWith=$u,lc(Wn,Wn),Wn.add=wc,Wn.attempt=rc,Wn.camelCase=Fu,Wn.capitalize=qu,Wn.ceil=xc,Wn.clamp=function(t,r,e){return e===n&&(e=r,r=n),e!==n&&(e=(e=mu(e))==e?e:0),r!==n&&(r=(r=mu(r))==r?r:0),se(mu(t),r,e)},Wn.clone=function(t){return le(t,4)},Wn.cloneDeep=function(t){return le(t,5)},Wn.cloneDeepWith=function(t,r){return le(t,5,r="function"==typeof r?r:n)},Wn.cloneWith=function(t,r){return le(t,4,r="function"==typeof r?r:n)},Wn.conformsTo=function(t,r){return null==r||fe(t,r,Uu(r))},Wn.deburr=Vu,Wn.defaultTo=function(t,r){return null==t||t!=t?r:t},Wn.divide=kc,Wn.endsWith=function(t,r,e){t=wu(t),r=fo(r);var o=t.length,i=e=e===n?o:se(bu(e),0,o);return(e-=r.length)>=0&&t.slice(e,i)==r},Wn.eq=Da,Wn.escape=function(t){return(t=wu(t))&&Y.test(t)?t.replace(G,en):t},Wn.escapeRegExp=function(t){return(t=wu(t))&&ot.test(t)?t.replace(et,"\\$&"):t},Wn.every=function(t,r,e){var o=Za(t)?Sr:ge;return e&&xi(t,r,e)&&(r=n),o(t,fi(r,3))},Wn.find=ma,Wn.findIndex=Vi,Wn.findKey=function(t,r){return Br(t,fi(r,3),xe)},Wn.findLast=ya,Wn.findLastIndex=Zi,Wn.findLastKey=function(t,r){return Br(t,fi(r,3),ke)},Wn.floor=$c,Wn.forEach=wa,Wn.forEachRight=xa,Wn.forIn=function(t,r){return null==t?t:ye(t,fi(r,3),Tu)},Wn.forInRight=function(t,r){return null==t?t:we(t,fi(r,3),Tu)},Wn.forOwn=function(t,r){return t&&xe(t,fi(r,3))},Wn.forOwnRight=function(t,r){return t&&ke(t,fi(r,3))},Wn.get=Cu,Wn.gt=Fa,Wn.gte=qa,Wn.has=function(t,r){return null!=t&&_i(t,r,Ce)},Wn.hasIn=Ou,Wn.head=Ki,Wn.identity=ac,Wn.includes=function(t,r,n,e){t=Ka(t)?t:Du(t),n=n&&!e?bu(n):0;var o=t.length;return n<0&&(n=yn(o+n,0)),lu(t)?n<=o&&t.indexOf(r,n)>-1:!!o&&Mr(t,r,n)>-1},Wn.indexOf=function(t,r,n){var e=null==t?0:t.length;if(!e)return-1;var o=null==n?0:bu(n);return o<0&&(o=yn(e+o,0)),Mr(t,r,o)},Wn.inRange=function(t,r,e){return r=gu(r),e===n?(e=r,r=0):e=gu(e),function(t,r,n){return t>=wn(r,n)&&t=-9007199254740991&&t<=d},Wn.isSet=su,Wn.isString=lu,Wn.isSymbol=fu,Wn.isTypedArray=hu,Wn.isUndefined=function(t){return t===n},Wn.isWeakMap=function(t){return ou(t)&&bi(t)==R},Wn.isWeakSet=function(t){return ou(t)&&"[object WeakSet]"==Ee(t)},Wn.join=function(t,r){return null==t?"":_n.call(t,r)},Wn.kebabCase=Zu,Wn.last=Xi,Wn.lastIndexOf=function(t,r,e){var o=null==t?0:t.length;if(!o)return-1;var i=o;return e!==n&&(i=(i=bu(e))<0?yn(o+i,0):wn(i,o-1)),r==r?function(t,r,n){for(var e=n+1;e--;)if(t[e]===r)return e;return e}(t,r,i):Nr(t,Wr,i,!0)},Wn.lowerCase=Gu,Wn.lowerFirst=Ku,Wn.lt=du,Wn.lte=pu,Wn.max=function(t){return t&&t.length?be(t,ac,Se):n},Wn.maxBy=function(t,r){return t&&t.length?be(t,fi(r,2),Se):n},Wn.mean=function(t){return Dr(t,ac)},Wn.meanBy=function(t,r){return Dr(t,fi(r,2))},Wn.min=function(t){return t&&t.length?be(t,ac,Me):n},Wn.minBy=function(t,r){return t&&t.length?be(t,fi(r,2),Me):n},Wn.stubArray=_c,Wn.stubFalse=mc,Wn.stubObject=function(){return{}},Wn.stubString=function(){return""},Wn.stubTrue=function(){return!0},Wn.multiply=Ac,Wn.nth=function(t,r){return t&&t.length?qe(t,bu(r)):n},Wn.noConflict=function(){return hr._===this&&(hr._=Ht),this},Wn.noop=fc,Wn.now=Ca,Wn.pad=function(t,r,n){t=wu(t);var e=(r=bu(r))?hn(t):0;if(!r||e>=r)return t;var o=(r-e)/2;return Zo(br(o),n)+t+Zo(gr(o),n)},Wn.padEnd=function(t,r,n){t=wu(t);var e=(r=bu(r))?hn(t):0;return r&&er){var o=t;t=r,r=o}if(e||t%1||r%1){var i=$n();return wn(t+i*(r-t+cr("1e-"+((i+"").length-1))),r)}return Ye(t,r)},Wn.reduce=function(t,r,n){var e=Za(t)?Ur:Vr,o=arguments.length<3;return e(t,fi(r,4),n,o,pe)},Wn.reduceRight=function(t,r,n){var e=Za(t)?Tr:Vr,o=arguments.length<3;return e(t,fi(r,4),n,o,ve)},Wn.repeat=function(t,r,e){return r=(e?xi(t,r,e):r===n)?1:bu(r),Je(wu(t),r)},Wn.replace=function(){var t=arguments,r=wu(t[0]);return t.length<3?r:r.replace(t[1],t[2])},Wn.result=function(t,r,e){var o=-1,i=(r=xo(r,t)).length;for(i||(i=1,t=n);++od)return[];var n=v,e=wn(t,v);r=fi(r),t-=v;for(var o=Gr(e,r);++n=a)return t;var c=e-hn(o);if(c<1)return o;var s=u?$o(u,0,c).join(""):t.slice(0,c);if(i===n)return s+o;if(u&&(c+=s.length-c),cu(i)){if(t.slice(c).search(i)){var l,f=s;for(i.global||(i=St(i.source,wu(pt.exec(i))+"g")),i.lastIndex=0;l=i.exec(f);)var h=l.index;s=s.slice(0,h===n?c:h)}}else if(t.indexOf(fo(i),c)!=c){var d=s.lastIndexOf(i);d>-1&&(s=s.slice(0,d))}return s+o},Wn.unescape=function(t){return(t=wu(t))&&K.test(t)?t.replace(Z,vn):t},Wn.uniqueId=function(t){var r=++Lt;return wu(t)+r},Wn.upperCase=Qu,Wn.upperFirst=Xu,Wn.each=wa,Wn.eachRight=xa,Wn.first=Ki,lc(Wn,(yc={},xe(Wn,(function(t,r){Pt.call(Wn.prototype,r)||(yc[r]=t)})),yc),{chain:!1}),Wn.VERSION="4.17.21",zr(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){Wn[t].placeholder=Wn})),zr(["drop","take"],(function(t,r){Vn.prototype[t]=function(e){e=e===n?1:yn(bu(e),0);var o=this.__filtered__&&!r?new Vn(this):this.clone();return o.__filtered__?o.__takeCount__=wn(e,o.__takeCount__):o.__views__.push({size:wn(e,v),type:t+(o.__dir__<0?"Right":"")}),o},Vn.prototype[t+"Right"]=function(r){return this.reverse()[t](r).reverse()}})),zr(["filter","map","takeWhile"],(function(t,r){var n=r+1,e=1==n||3==n;Vn.prototype[t]=function(t){var r=this.clone();return r.__iteratees__.push({iteratee:fi(t,3),type:n}),r.__filtered__=r.__filtered__||e,r}})),zr(["head","last"],(function(t,r){var n="take"+(r?"Right":"");Vn.prototype[t]=function(){return this[n](1).value()[0]}})),zr(["initial","tail"],(function(t,r){var n="drop"+(r?"":"Right");Vn.prototype[t]=function(){return this.__filtered__?new Vn(this):this[n](1)}})),Vn.prototype.compact=function(){return this.filter(ac)},Vn.prototype.find=function(t){return this.filter(t).head()},Vn.prototype.findLast=function(t){return this.reverse().find(t)},Vn.prototype.invokeMap=Qe((function(t,r){return"function"==typeof t?new Vn(this):this.map((function(n){return Re(n,t,r)}))})),Vn.prototype.reject=function(t){return this.filter(Ba(fi(t)))},Vn.prototype.slice=function(t,r){t=bu(t);var e=this;return e.__filtered__&&(t>0||r<0)?new Vn(e):(t<0?e=e.takeRight(-t):t&&(e=e.drop(t)),r!==n&&(e=(r=bu(r))<0?e.dropRight(-r):e.take(r-t)),e)},Vn.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},Vn.prototype.toArray=function(){return this.take(v)},xe(Vn.prototype,(function(t,r){var e=/^(?:filter|find|map|reject)|While$/.test(r),o=/^(?:head|last)$/.test(r),i=Wn[o?"take"+("last"==r?"Right":""):r],a=o||/^find/.test(r);i&&(Wn.prototype[r]=function(){var r=this.__wrapped__,u=o?[1]:arguments,c=r instanceof Vn,s=u[0],l=c||Za(r),f=function(t){var r=i.apply(Wn,Ir([t],u));return o&&h?r[0]:r};l&&e&&"function"==typeof s&&1!=s.length&&(c=l=!1);var h=this.__chain__,d=!!this.__actions__.length,p=a&&!h,v=c&&!d;if(!a&&l){r=v?r:new Vn(this);var g=t.apply(r,u);return g.__actions__.push({func:ga,args:[f],thisArg:n}),new qn(g,h)}return p&&v?t.apply(this,u):(g=this.thru(f),p?o?g.value()[0]:g.value():g)})})),zr(["pop","push","shift","sort","splice","unshift"],(function(t){var r=jt[t],n=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",e=/^(?:pop|shift)$/.test(t);Wn.prototype[t]=function(){var t=arguments;if(e&&!this.__chain__){var o=this.value();return r.apply(Za(o)?o:[],t)}return this[n]((function(n){return r.apply(Za(n)?n:[],t)}))}})),xe(Vn.prototype,(function(t,r){var n=Wn[r];if(n){var e=n.name+"";Pt.call(In,e)||(In[e]=[]),In[e].push({name:r,func:n})}})),In[Do(n,2).name]=[{name:"wrapper",func:n}],Vn.prototype.clone=function(){var t=new Vn(this.__wrapped__);return t.__actions__=Ro(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Ro(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Ro(this.__views__),t},Vn.prototype.reverse=function(){if(this.__filtered__){var t=new Vn(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},Vn.prototype.value=function(){var t=this.__wrapped__.value(),r=this.__dir__,n=Za(t),e=r<0,o=n?t.length:0,i=function(t,r,n){for(var e=-1,o=n.length;++e=this.__values__.length;return{done:t,value:t?n:this.__values__[this.__index__++]}},Wn.prototype.plant=function(t){for(var r,e=this;e instanceof Fn;){var o=Wi(e);o.__index__=0,o.__values__=n,r?i.__wrapped__=o:r=o;var i=o;e=e.__wrapped__}return i.__wrapped__=t,r},Wn.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof Vn){var r=t;return this.__actions__.length&&(r=new Vn(this)),(r=r.reverse()).__actions__.push({func:ga,args:[ea],thisArg:n}),new qn(r,this.__chain__)}return this.thru(ea)},Wn.prototype.toJSON=Wn.prototype.valueOf=Wn.prototype.value=function(){return bo(this.__wrapped__,this.__actions__)},Wn.prototype.first=Wn.prototype.head,rr&&(Wn.prototype[rr]=function(){return this}),Wn}();pr?((pr.exports=gn)._=gn,dr._=gn):hr._=gn}).call(a)},u(s={path:c,exports:{},require:function(t,r){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(r??s.path)}},s.exports),s.exports);e.i`/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + +html { + line-height: 1.15; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers. + */ + +body { + margin: 0; +} + +/** + * Render the \`main\` element consistently in IE. + */ + +main { + display: block; +} + +/** + * Correct the font size and margin on \`h1\` elements within \`section\` and + * \`article\` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd \`em\` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Remove the gray background on active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd \`em\` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent \`sub\` and \`sup\` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove the border on images inside links in IE 10. + */ + +img { + border-style: none; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { /* 1 */ + text-transform: none; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from \`fieldset\` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * \`fieldset\` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to \`inherit\` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ + +details { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ + +/** + * Add the correct display in IE 10+. + */ + +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ + +[hidden] { + display: none; +} + +:root { + --breakpoint-xs: 320px; + --breakpoint-s: 576px; + --breakpoint-m: 768px; + --breakpoint-l: 992px; + --breakpoint-xl: 1248px; + --container-width-xs: 288px; + --container-width-s: 544px; + --container-width-m: 720px; + --container-width-l: 944px; + --container-width-xl: 1200px; + --color-brick: #bd2719; + --color-brick-light: #ffeeed; + --color-brick-medium-light: #facbc8; + --color-brick-dark: #800e04; + --color-bus: #0000bf; + --color-bus-light: #f0f0ff; + --color-bus-medium-light: #ccccff; + --color-bus-dark: #00005e; + --color-coat-of-arms: #0072c6; + --color-coat-of-arms-light: #e6f4ff; + --color-coat-of-arms-medium-light: #b5daf7; + --color-coat-of-arms-dark: #005799; + --color-copper: #00d7a7; + --color-copper-light: #cffaf1; + --color-copper-medium-light: #9ef0de; + --color-copper-dark: #00a17d; + --color-engel: #ffe977; + --color-engel-light: #fff9db; + --color-engel-medium-light: #fff3b8; + --color-engel-dark: #dbc030; + --color-fog: #9fc9eb; + --color-fog-light: #e8f3fc; + --color-fog-medium-light: #d0e6f7; + --color-fog-dark: #72a5cf; + --color-gold: #c2a251; + --color-gold-light: #f7f2e4; + --color-gold-medium-light: #e8d7a7; + --color-gold-dark: #9e823c; + --color-metro: #fd4f00; + --color-metro-light: #ffeee6; + --color-metro-medium-light: #ffcab3; + --color-metro-dark: #bd2f00; + --color-silver: #dedfe1; + --color-silver-light: #f7f7f8; + --color-silver-medium-light: #efeff0; + --color-silver-dark: #b0b8bf; + --color-summer: #ffc61e; + --color-summer-light: #fff4d4; + --color-summer-medium-light: #ffe49c; + --color-summer-dark: #cc9200; + --color-suomenlinna: #f5a3c7; + --color-suomenlinna-light: #fff0f7; + --color-suomenlinna-medium-light: #ffdbeb; + --color-suomenlinna-dark: #e673a5; + --color-tram: #008741; + --color-tram-light: #dff7eb; + --color-tram-medium-light: #a3e3c2; + --color-tram-dark: #006631; + --color-black: #000000; + --color-white: #ffffff; + --color-black-5: #f2f2f2; + --color-black-10: #e6e6e6; + --color-black-20: #cccccc; + --color-black-30: #b3b3b3; + --color-black-40: #999999; + --color-black-50: #808080; + --color-black-60: #666666; + --color-black-70: #4d4d4d; + --color-black-80: #333333; + --color-black-90: #1a1a1a; + --color-error: #b01038; + --color-error-light: #f6e2e6; + --color-error-dark: #8d0d2d; + --color-success: #007a64; + --color-success-light: #e2f5f3; + --color-success-dark: #006250; + --color-alert: #ffda07; + --color-alert-light: #fff4b4; + --color-alert-dark: #d18200; + --color-info: #0062b9; + --color-info-light: #e5eff8; + --color-info-dark: #004f94; + --box-shadow-s: 0px 2px 10px 0px rgba(0, 0, 0, 0.07); + --box-shadow-m: 0px 2px 10px 0px rgba(0, 0, 0, 0.1); + --box-shadow-l: 0px 2px 20px 0px rgba(0, 0, 0, 0.2); + --spacing-layout-2-xs: 1rem; /* 16px */ + --spacing-layout-xs: 1.5rem; /* 24px */ + --spacing-layout-s: 2rem; /* 32px */ + --spacing-layout-m: 3rem; /* 48px */ + --spacing-layout-l: 4rem; /* 64px */ + --spacing-layout-xl: 6rem; /* 96px */ + --spacing-layout-2-xl: 8rem; /* 128px */ + --spacing-4-xs: 0.125rem; /* 2px */ + --spacing-3-xs: 0.25rem; /* 4px */ + --spacing-2-xs: 0.5rem; /* 8px */ + --spacing-xs: 0.75rem; /* 12px */ + --spacing-s: 1rem; /* 16px */ + --spacing-m: 1.5rem; /* 24px */ + --spacing-l: 2rem; /* 32px */ + --spacing-xl: 2.5rem; /* 40px */ + --spacing-2-xl: 3.0rem; /* 48px */ + --spacing-3-xl: 3.5rem; /* 56px */ + --spacing-4-xl: 4rem; /* 64px */ + --spacing-5-xl: 4.5rem; /* 72px */ + --fontsize-heading-xxl: 4rem; /* 64px */ + --fontsize-heading-xl: 3rem; /* 48px */ + --fontsize-heading-xl-mobile: 2.5rem; /* 40px */ + --fontsize-heading-l: 2rem; /* 32px */ + --fontsize-heading-m: 1.5rem; /* 24px */ + --fontsize-heading-s: 1.25rem; /* 20px */ + --fontsize-heading-xs: 1.125rem; /* 18px */ + --fontsize-heading-xxs: 1rem; /* 16px */ + --fontsize-body-s: 0.875rem; /* 14px */ + --fontsize-body-m: 1rem; /* 16px */ + --fontsize-body-l: 1.125rem; /* 18px */ + --fontsize-body-xl: 1.25rem; /* 20px */ + --font-default: HelsinkiGrotesk, Arial, sans-serif; + --lineheight-s: 1; + --lineheight-m: 1.2; + --lineheight-l: 1.5; + --lineheight-xl: 1.75; +} + +@keyframes fadeIn { + from { + opacity: 0; + } + to { + opacity: 1; + } +} + +.hiddenFromScreen { + border: 0; + clip: "rect(0 0 0 0)"; + height: 1px; + width: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + position: absolute; +} + +.button-reset { + background: none; + border: none; + color: inherit; + cursor: pointer; + font: inherit; + padding: 0; +} + +.text-body { + font-family: HelsinkiGrotesk, Arial, sans-serif; + font-family: var(--font-default); + font-size: 1rem; + font-size: var(--fontsize-body-m); + color: #1a1a1a; + color: var(--color-black-90); + line-height: 1.5; + line-height: var(--lineheight-l); +} + +.text-medium { + font-family: HelsinkiGrotesk, Arial, sans-serif; + font-family: var(--font-default); + font-weight: 500; +} + +.text-bold { + font-family: HelsinkiGrotesk, Arial, sans-serif; + font-family: var(--font-default); + font-weight: bold; +} + +.text-xl { + font-size: 1.5rem; + font-size: var(--fontsize-heading-m); +} + +.text-lg { + font-size: 1.25rem; + font-size: var(--fontsize-heading-s); +} + +.text-md { + font-size: 1.125rem; + font-size: var(--fontsize-heading-xs); +} + +.subtitle { + font-size: 1rem; + font-size: var(--fontsize-body-m); +} + +.text-sm { + font-size: 0.875rem; + font-size: var(--fontsize-body-s); + line-height: 1.75; + line-height: var(--lineheight-xl); +} + +/* HEADINGS */ + +.heading-xxl { + font-size: 4rem; + font-size: var(--fontsize-heading-xxl); + font-weight: 400; + line-height: 1; + line-height: var(--lineheight-s); + letter-spacing: -1.2px; +} + +.heading-xl { + font-size: 3rem; + font-size: var(--fontsize-heading-xl); + font-weight: 400; + line-height: 1; + line-height: var(--lineheight-s); + letter-spacing: -1.0px; +} + +.heading-xl-mobile { + font-size: 2.5rem; + font-size: var(--fontsize-heading-xl-mobile); + font-weight: 400; + line-height: 1; + line-height: var(--lineheight-s); + letter-spacing: -0.8px; +} + +.heading-l { + font-size: 2rem; + font-size: var(--fontsize-heading-l); + font-weight: 400; + line-height: 1; + line-height: var(--lineheight-s); + letter-spacing: -0.4px; +} + +.heading-m { + font-size: 1.5rem; + font-size: var(--fontsize-heading-m); + font-weight: 500; + line-height: 32px; + letter-spacing: -0.2px; +} + +.heading-s { + font-size: 1.25rem; + font-size: var(--fontsize-heading-s); + font-weight: 500; + line-height: 1.4; + letter-spacing: 0.2px; +} + +.heading-xs { + font-size: 1.125rem; + font-size: var(--fontsize-heading-xs); + font-weight: 700; + line-height: 1.33; + letter-spacing: 0.4px; +} + +.heading-xxs { + font-size: 1rem; + font-size: var(--fontsize-heading-xxs); + font-weight: 700; + line-height: 1.5; + line-height: var(--lineheight-l); + letter-spacing: 0.4px; +} +`;const f=e.i`.hds-button { + --border-width: 2px; + --color: inherit; + --min-size: 44px; + --outline-gutter: 2px; + --outline-width: 3px; + + align-content: flex-start; + align-items: center; + background-color: transparent; + background-color: var(--background-color, transparent); + border: var(--border-width) solid transparent; + border: var(--border-width) solid var(--border-color, transparent); + border-radius: 0; + color: var(--color); + cursor: pointer; + display: inline-flex; + font-weight: 500; + justify-content: center; + min-height: var(--min-size); + min-width: var(--min-size); + padding: 0 var(--spacing-2-xs); + position: relative; + vertical-align: top; +}.hds-button, +.hds-button::before, +.hds-button::after, +.hds-button *, +.hds-button *::before, +.hds-button *::after { + box-sizing: border-box; +}/* button transitions */.hds-button:hover, +.hds-button.focus-visible { + transition-property: background-color, border-color, color; + transition-duration: 85ms; + transition-timing-function: ease-out; +}.hds-button:hover, +.hds-button:focus-visible { + transition-property: background-color, border-color, color; + transition-duration: 85ms; + transition-timing-function: ease-out; +}.hds-button:hover { + background-color: transparent; + background-color: var(--background-color-hover, transparent); + color: var(--color-hover); +}.hds-button.focus-visible { + background-color: transparent; + background-color: var(--background-color-focus, transparent); + color: var(--color-focus); + outline: none; +}.hds-button:focus-visible { + background-color: transparent; + background-color: var(--background-color-focus, transparent); + color: var(--color-focus); + outline: none; +}.hds-button:active { + background-color: transparent; + background-color: var(--background-color-focus, transparent); + color: var(--color-focus); + outline: none; +}.hds-button.focus-visible:hover { + background-color: transparent; + background-color: var(--background-color-hover-focus, transparent); +}.hds-button:focus-visible:hover { + background-color: transparent; + background-color: var(--background-color-hover-focus, transparent); +}.hds-button:active:hover { + background-color: transparent; + background-color: var(--background-color-hover-focus, transparent); +}.hds-button:disabled { + background-color: transparent; + background-color: var(--background-color-disabled, transparent); + border-color: transparent; + border-color: var(--border-color-disabled, transparent); + color: var(--color-disabled); + cursor: not-allowed; +}.hds-button:not(:disabled) { + border-color: transparent; + border-color: var(--border-color, transparent); +}.hds-button:not(:disabled):hover { + border-color: transparent; + border-color: var(--border-color-hover, transparent); +}.hds-button:not(:disabled).focus-visible { + border-color: transparent; + border-color: var(--border-color-focus, transparent); +}.hds-button:not(:disabled):focus-visible { + border-color: transparent; + border-color: var(--border-color-focus, transparent); +}.hds-button:not(:disabled):active { + border-color: transparent; + border-color: var(--border-color-focus, transparent); +}.hds-button:not(:disabled).focus-visible:hover { + border-color: transparent; + border-color: var(--border-color-hover-focus, transparent); + color: var(--color-hover-focus); +}.hds-button:not(:disabled):focus-visible:hover { + border-color: transparent; + border-color: var(--border-color-hover-focus, transparent); + color: var(--color-hover-focus); +}.hds-button:not(:disabled):active:hover { + border-color: transparent; + border-color: var(--border-color-hover-focus, transparent); + color: var(--color-hover-focus); +}/* FOCUS OUTLINE */.hds-button::after { + --size: 100%; + + border: var(--outline-width) solid transparent; + content: ''; + height: var(--size); + position: absolute; + width: var(--size); +}.hds-button.focus-visible::after { + --size: calc(100% + calc(var(--outline-width) * 2 + var(--border-width) * 2 + var(--outline-gutter) * 2)); + border-color: var(--focus-outline-color); +}.hds-button:focus-visible::after { + --size: calc(100% + calc(var(--outline-width) * 2 + var(--border-width) * 2 + var(--outline-gutter) * 2)); + border-color: var(--focus-outline-color); +}.hds-button:active::after { + --size: calc(100% + calc(var(--outline-width) * 2 + var(--border-width) * 2 + var(--outline-gutter) * 2)); + border-color: var(--focus-outline-color); +}/* submit input */input[type="submit"].hds-button.focus-visible { + box-shadow: 0 0 0 var(--outline-gutter) var(--submit-input-focus-gutter-color), 0 0 0 calc(var(--outline-gutter) + var(--outline-width)) var(--focus-outline-color); +}input[type="submit"].hds-button:focus-visible { + box-shadow: 0 0 0 var(--outline-gutter) var(--submit-input-focus-gutter-color), 0 0 0 calc(var(--outline-gutter) + var(--outline-width)) var(--focus-outline-color); +}/* LABEL */input[type="submit"].hds-button, +.hds-button__label { + font-weight: inherit; + line-height: 1.25em; + padding: var(--spacing-s); +}input[type="submit"].hds-button { + cursor: pointer; + padding: var(--spacing-s) var(--spacing-l); +}/* no icons */.hds-button__label:only-child { + margin: 0 var(--spacing-2-xs); +}/* supplementary with right icon */.hds-button--supplementary .hds-button__label:first-child { + padding-right: var(--spacing-2-xs); +}/* supplementary with left icon */.hds-button--supplementary .hds-icon + .hds-button__label:last-child { + padding-left: var(--spacing-2-xs); +}/* supplementary with both icons */.hds-button--supplementary .hds-icon + .hds-button__label:not(:last-child) { + padding-left: var(--spacing-2-xs); + padding-right: var(--spacing-2-xs); +}/* SMALL */.hds-button--small { + padding: 0; +}input[type="submit"].hds-button--small, +.hds-button--small .hds-button__label { + line-height: var(--lineheight-s); + padding: var(--spacing-2-xs) var(--spacing-xs); +}input[type="submit"].hds-button--small { + padding: var(--spacing-2-xs) var(--spacing-m); +}/* no icons */.hds-button--small .hds-button__label:only-child { + margin: 0 var(--spacing-xs); +}/* both icons */.hds-button--small .hds-button__label:not(:first-of-type):not(:last-of-type) { + padding: var(--spacing-2-xs) var(--spacing-2-xs); +}/* FULL WIDTH */.hds-button--fullwidth { + width: 100%; +}/* ICONS *//* left */.hds-button .hds-icon { + height: var(--spacing-m); + margin-left: var(--spacing-s); + width: var(--spacing-m); +}/* right */.hds-button__label ~ .hds-icon { + margin: 0 var(--spacing-s) 0 0; +}/* left - small */.hds-button--small .hds-icon { + margin-left: var(--spacing-2-xs); +}/* right - small */.hds-button .hds-button--small .hds-button__label ~ .hds-icon { + margin: 0 var(--spacing-2-xs) 0 0; +}/* both icons - left */.hds-button .hds-icon:first-of-type:not(:last-of-type) { + margin: 0 0 0 var(--spacing-2-xs); +}/* both icons - right */.hds-button .hds-icon:last-of-type:not(:first-of-type) { + margin: 0 var(--spacing-2-xs) 0 0; +}/* both icons - left - small */.hds-button--small .hds-icon:first-child:not(:last-of-type) { + margin: 0 0 0 var(--spacing-2-xs); +}/* both icons - right - small */.hds-button--small .hds-icon:last-child:not(:first-of-type) { + margin: 0 var(--spacing-2-xs) 0 0; +}/* PRIMARY *//* default (bus) */.hds-button--primary { + --background-color: var(--color-bus); + --background-color-hover: var(--color-bus-dark); + --background-color-focus: var(--color-bus); + --background-color-hover-focus: var(--color-bus-dark); + --background-color-disabled: var(--color-black-20); + + --border-color: var(--color-bus); + --border-color-hover: var(--color-bus-dark); + --border-color-focus: var(--color-bus); + --border-color-hover-focus: var(--color-bus-dark); + --border-color-disabled: var(--color-black-20); + + --color: var(--color-white); + --color-hover: var(--color-white); + --color-focus: var(--color-white); + --color-hover-focus: var(--color-white); + --color-disabled: var(--color-white); + + --focus-outline-color: var(--color-coat-of-arms); + --submit-input-focus-gutter-color: var(--color-white); +}/* SECONDARY *//* default (bus) */.hds-button--secondary { + --background-color: transparent; + --background-color-hover: var(--color-bus-light); + --background-color-focus: transparent; + --background-color-hover-focus: var(--color-bus-light); + --background-color-disabled: transparent; + + --border-color: var(--color-bus); + --border-color-hover: var(--color-bus-dark); + --border-color-focus: var(--color-bus); + --border-color-hover-focus: var(--color-bus-dark); + --border-color-disabled: var(--color-black-50); + + --color: var(--color-bus); + --color-hover: var(--color-bus-dark); + --color-focus: var(--color-bus); + --color-hover-focus: var(--color-bus-dark); + --color-disabled: var(--color-black-40); + + --focus-outline-color: var(--color-coat-of-arms); + --submit-input-focus-gutter-color: var(--color-white); +}/* SUPPLEMENTARY */.hds-button--supplementary { + --background-color: transparent; + --background-color-hover: var(--color-bus-light); + --background-color-focus: transparent; + --background-color-hover-focus: var(--color-bus-light); + --background-color-disabled: transparent; + + --border-color: transparent; + --border-color-hover: transparent; + --border-color-focus: var(--color-coat-of-arms); + --border-color-hover-focus: var(--color-coat-of-arms); + --border-color-disabled: transparent; + + --color: var(--color-bus); + --color-hover: var(--color-bus-dark); + --color-focus: var(--color-bus); + --color-hover-focus: var(--color-bus-dark); + --color-disabled: var(--color-black-40); + + --focus-outline-color: transparent; + --submit-input-focus-gutter-color: transparent; +}/* LOADING */.hds-button--loading { + --background-color: transparent; + --background-color-hover: transparent; + --background-color-focus: transparent; + --background-color-hover-focus: transparent; + --background-color-disabled: transparent; + + --border-color: transparent; + --border-color-hover: transparent; + --border-color-focus: transparent; + --border-color-hover-focus: transparent; + --border-color-disabled: transparent; + + --color: var(--color-black-90); + --color-hover: var(--color-black-90); + --color-focus: var(--color-black-90); + --color-hover-focus: var(--color-black-90); + --color-disabled: var(--color-black-90); + + cursor: wait; +}/* UTILITY *//* success */.hds-button--success { + --background-color: var(--color-success); + --background-color-hover: var(--color-success-dark); + --background-color-focus: var(--color-success); + --background-color-hover-focus: var(--color-success-dark); + + --border-color: var(--color-success); + --border-color-hover: var(--color-success-dark); + --border-color-focus: var(--color-success); + --border-color-hover-focus: var(--color-success-dark); + + --color: var(--color-white); + --color-hover: var(--color-white); + --color-focus: var(--color-white); + --color-hover-focus: var(--color-white); + + --focus-outline-color: var(--color-coat-of-arms); +}/* danger */.hds-button--danger { + --background-color: var(--color-error); + --background-color-hover: var(--color-error-dark); + --background-color-focus: var(--color-error); + --background-color-hover-focus: var(--color-error-dark); + + --border-color: var(--color-error); + --border-color-hover: var(--color-error-dark); + --border-color-focus: var(--color-error); + --border-color-hover-focus: var(--color-error-dark); + + --color: var(--color-white); + --color-hover: var(--color-white); + --color-focus: var(--color-white); + --color-hover-focus: var(--color-white); + + --focus-outline-color: var(--color-coat-of-arms); +}/* THEMES *//* coat */.hds-button--primary.hds-button--theme-coat { + --background-color: var(--color-coat-of-arms); + --background-color-hover: var(--color-coat-of-arms-dark); + --background-color-focus: var(--color-coat-of-arms); + --background-color-hover-focus: var(--color-coat-of-arms-dark); + + --border-color: var(--color-coat-of-arms); + --border-color-hover: var(--color-coat-of-arms-dark); + --border-color-focus: var(--color-coat-of-arms); + --border-color-hover-focus: var(--color-coat-of-arms-dark); + + --color: var(--color-white); + --color-hover: var(--color-white); + --color-focus: var(--color-white); + --color-hover-focus: var(--color-white); +}.hds-button--secondary.hds-button--theme-coat { + --background-color: transparent; + --background-color-hover: var(--color-coat-of-arms-light); + --background-color-focus: transparent; + --background-color-hover-focus: var(--color-coat-of-arms-light); + + --border-color: var(--color-coat-of-arms); + --border-color-hover: var(--color-coat-of-arms-dark); + --border-color-focus: var(--color-coat-of-arms); + --border-color-hover-focus: var(--color-coat-of-arms-dark); + + --color: var(--color-coat-of-arms); + --color-hover: var(--color-coat-of-arms); + --color-focus: var(--color-coat-of-arms); + --color-hover-focus: var(--color-coat-of-arms); +}.hds-button--supplementary.hds-button--theme-coat { + --background-color: transparent; + --background-color-hover: var(--color-coat-of-arms-light); + --background-color-focus: transparent; + --background-color-hover-focus: var(--color-coat-of-arms-light); + + --border-color: transparent; + --border-color-hover: transparent; + --border-color-focus: var(--color-coat-of-arms); + --border-color-hover-focus: var(--color-coat-of-arms); + + --color: var(--color-coat-of-arms); + --color-hover: var(--color-coat-of-arms); + --color-focus: var(--color-coat-of-arms); + --color-hover-focus: var(--color-coat-of-arms); +}/* black */.hds-button--primary.hds-button--theme-black { + --background-color: var(--color-black); + --background-color-hover: var(--color-black); + --background-color-focus: var(--color-black); + --background-color-hover-focus: var(--color-black); + + --border-color: var(--color-black); + --border-color-hover: var(--color-black); + --border-color-focus: var(--color-black); + --border-color-hover-focus: var(--color-black); + + --color: var(--color-white); + --color-hover: var(--color-white); + --color-focus: var(--color-white); + --color-hover-focus: var(--color-white); +}.hds-button--secondary.hds-button--theme-black { + --background-color: transparent; + --background-color-hover: var(--color-black-5); + --background-color-focus: transparent; + --background-color-hover-focus: var(--color-black-5); + + --border-color: var(--color-black); + --border-color-hover: var(--color-black); + --border-color-focus: var(--color-black); + --border-color-hover-focus: var(--color-black); + + --color: var(--color-black); + --color-hover: var(--color-black); + --color-focus: var(--color-black); + --color-hover-focus: var(--color-black); +}.hds-button--supplementary.hds-button--theme-black { + --background-color: transparent; + --background-color-hover: var(--color-black-5); + --background-color-focus: transparent; + --background-color-hover-focus: var(--color-black-5); + + --border-color: transparent; + --border-color-hover: transparent; + --border-color-focus: var(--color-coat-of-arms); + --border-color-hover-focus: var(--color-coat-of-arms-dark); + + --color: var(--color-black); + --color-hover: var(--color-black); + --color-focus: var(--color-black); + --color-hover-focus: var(--color-black); +} + +:host { + display: block; + --background-color: var(--color-white); + --border-color: var(--color-black-60); + --header-font-color: var(--color-black-90); + --header-focus-outline-color: var(--color-coat-of-arms); + --content-font-color: var(--color-black-90); + --content-font-size: var(--fontsize-body-m); + --content-line-height: var(--lineheight-l); + border-bottom: 1px solid var(--border-color, currentColor); +} + +:host(:not(.card)) { + border-bottom: 1px solid var(--border-color, currentColor); +} + +:host(.card) { + background-color: var(--background-color); + padding-left: var(--padding-horizontal); + padding-right: var(--padding-horizontal); +} + +:host(.border) { + border: 2px solid var(--border-color); +} + +:host(.s) { + --header-font-size: var(--fontsize-heading-s); + --padding-vertical: var(--spacing-s); + --header-font-weight: 700; + --header-letter-spacing: 0.2px; + --header-line-height: 1.4; + --button-size: 28px; + --padding-horizontal: var(--spacing-2-xs); +} + +:host(.m) { + --header-font-size: var(--fontsize-heading-m); + --padding-vertical: var(--spacing-m); + --header-font-weight: 500; + --header-letter-spacing: -0.2px; + --header-line-height: 32px; + --button-size: 36px; + --padding-horizontal: var(--spacing-m); +} + +:host(.m) .closeButton div { + margin-right: 6px; +} + +:host(.l) { + --header-font-size: var(--fontsize-heading-l); + --padding-vertical: var(--spacing-l); + --header-font-weight: 400; + --header-letter-spacing: -0.4px; + --header-line-height: var(--lineheight-s); + --button-size: 52px; + --padding-horizontal: var(--spacing-l); +} + +.accordionHeader { + position: relative; + color: var(--header-font-color); + font-size: var(--header-font-size); + letter-spacing: var(--header-letter-spacing); + font-weight: var(--header-font-weight); + line-height: var(--header-line-height); + padding-top: var(--padding-vertical); + padding-bottom: var(--padding-vertical); + display: flex; + justify-content: space-between; + align-items: center; +} + +.accordionHeader > div { + flex: 1 1 auto; +} + +.accordionHeaderIconWrapper { + align-items: center; + display: flex; + justify-content: center; + line-height: 1; +} + +.accordionContent { + position: relative; + font-size: var(--content-font-size); + line-height: var(--content-line-height); + padding-bottom: var(--spacing-m); + color: var(--content-font-color); +} + +.closeButton { + + position: absolute; + bottom: 0; + right: 0; +} + +.contentWithCloseButton { + padding-bottom: 44px; +} + +.headingContainer { + cursor: pointer; + width: 100%; + display: grid; + grid-template-columns: auto calc(var(--button-size)); + box-sizing: border-box; + align-items: center; +} + +.headingContainer:focus { + outline: 2px solid var(--header-focus-outline-color, transparent); +} +`,h={fromAttribute:t=>"true"===t,toAttribute:t=>l.toString(t)};let d=class extends e.s{constructor(){super(...arguments),this.card=!1,this.border=!1,this.language="fi",this.headingLevel=2,this.isOpen=!1,this.closeButton=!0,this.toggleOpen=()=>{this.isOpen=!this.isOpen},this.hasCloseButton=()=>!!this.closeButton}static get properties(){return{id:{type:String},card:{type:Boolean,converter:h},border:{type:Boolean,converter:h},children:{type:HTMLCollection},language:{type:String},heading:{type:String},headingLevel:{type:Number},isOpen:{type:Boolean,converter:h},closeButton:{type:Boolean,converter:h},closeButtonClassName:{type:String},size:{type:String}}}get identifiers(){this.identifierPrefix||(this.identifierPrefix=this.id||l.uniqueId("accordion-"));return{heading:`${this.identifierPrefix}-heading`,content:`${this.identifierPrefix}-content`,closeButton:`${this.identifierPrefix}-closeButton`}}willUpdate(t){const r=this.card&&"card",n=this.card&&this.border&&"border",o=this.isOpen&&"isOpen";return this.className=(0,e.c)("accordion",r,n,o,this.size),super.willUpdate(t)}render(){return e.y` +
+
+ +
{"Enter"!==t.key&&" "!==t.key||this.toggleOpen()}} + @click=${this.toggleOpen}> + ${this.heading} +
+ +
+
+
+
+ +
+ + ${this.renderCloseButton()} +
+ + `}renderCloseButton(){if(!this.hasCloseButton)return"";const t={en:"Close",fi:"Sulje",sv:"Stäng"}[this.language];const r=(0,e.c)(t,this.heading),n=(0,e.c)("hds-button","hds-button--supplementary","hds-button--theme-black","closeButton",this.closeButtonClassName);return e.y` + + `}};d.styles=[e.i` + ${f} + `],d=(0,e._)([(0,e.e)("hds-accordion")],d)},9907:function(t,r,n){function e(t,r,n,e){var o,i=arguments.length,a=i<3?r:null===e?e=Object.getOwnPropertyDescriptor(r,n):e;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,r,n,e);else for(var u=t.length-1;u>=0;u--)(o=t[u])&&(a=(i<3?o(a):i>3?o(r,n,a):o(r,n))||a);return i>3&&a&&Object.defineProperty(r,n,a),a}n.d(r,{_:function(){return e},c:function(){return ut},e:function(){return it},i:function(){return s},s:function(){return et},x:function(){return N},y:function(){return B}});const o=window,i=o.ShadowRoot&&(void 0===o.ShadyCSS||o.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,a=Symbol(),u=new WeakMap;class c{constructor(t,r,n){if(this._$cssResult$=!0,n!==a)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=r}get styleSheet(){let t=this.o;const r=this.t;if(i&&void 0===t){const n=void 0!==r&&1===r.length;n&&(t=u.get(r)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),n&&u.set(r,t))}return t}toString(){return this.cssText}}const s=function(t){for(var r=arguments.length,n=new Array(r>1?r-1:0),e=1;er+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(n)+t[e+1]),t[0]);return new c(o,t,a)},l=i?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let r="";for(const n of t.cssRules)r+=n.cssText;return(t=>new c("string"==typeof t?t:t+"",void 0,a))(r)})(t):t;var f;const h=window,d=h.trustedTypes,p=d?d.emptyScript:"",v=h.reactiveElementPolyfillSupport,g={toAttribute(t,r){switch(r){case Boolean:t=t?p:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,r){let n=t;switch(r){case Boolean:n=null!==t;break;case Number:n=null===t?null:Number(t);break;case Object:case Array:try{n=JSON.parse(t)}catch(t){n=null}}return n}},b=(t,r)=>r!==t&&(r==r||t==t),_={attribute:!0,type:String,converter:g,reflect:!1,hasChanged:b};class m extends HTMLElement{constructor(){super(),this._$Ei=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$El=null,this.u()}static addInitializer(t){var r;this.finalize(),(null!==(r=this.h)&&void 0!==r?r:this.h=[]).push(t)}static get observedAttributes(){this.finalize();const t=[];return this.elementProperties.forEach(((r,n)=>{const e=this._$Ep(n,r);void 0!==e&&(this._$Ev.set(e,n),t.push(e))})),t}static createProperty(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:_;if(r.state&&(r.attribute=!1),this.finalize(),this.elementProperties.set(t,r),!r.noAccessor&&!this.prototype.hasOwnProperty(t)){const n="symbol"==typeof t?Symbol():"__"+t,e=this.getPropertyDescriptor(t,n,r);void 0!==e&&Object.defineProperty(this.prototype,t,e)}}static getPropertyDescriptor(t,r,n){return{get(){return this[r]},set(e){const o=this[t];this[r]=e,this.requestUpdate(t,o,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)||_}static finalize(){if(this.hasOwnProperty("finalized"))return!1;this.finalized=!0;const t=Object.getPrototypeOf(this);if(t.finalize(),void 0!==t.h&&(this.h=[...t.h]),this.elementProperties=new Map(t.elementProperties),this._$Ev=new Map,this.hasOwnProperty("properties")){const t=this.properties,r=[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)];for(const n of r)this.createProperty(n,t[n])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(t){const r=[];if(Array.isArray(t)){const n=new Set(t.flat(1/0).reverse());for(const t of n)r.unshift(l(t))}else void 0!==t&&r.push(l(t));return r}static _$Ep(t,r){const n=r.attribute;return!1===n?void 0:"string"==typeof n?n:"string"==typeof t?t.toLowerCase():void 0}u(){var t;this._$E_=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$Eg(),this.requestUpdate(),null===(t=this.constructor.h)||void 0===t||t.forEach((t=>t(this)))}addController(t){var r,n;(null!==(r=this._$ES)&&void 0!==r?r:this._$ES=[]).push(t),void 0!==this.renderRoot&&this.isConnected&&(null===(n=t.hostConnected)||void 0===n||n.call(t))}removeController(t){var r;null===(r=this._$ES)||void 0===r||r.splice(this._$ES.indexOf(t)>>>0,1)}_$Eg(){this.constructor.elementProperties.forEach(((t,r)=>{this.hasOwnProperty(r)&&(this._$Ei.set(r,this[r]),delete this[r])}))}createRenderRoot(){var t;const r=null!==(t=this.shadowRoot)&&void 0!==t?t:this.attachShadow(this.constructor.shadowRootOptions);return((t,r)=>{i?t.adoptedStyleSheets=r.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet)):r.forEach((r=>{const n=document.createElement("style"),e=o.litNonce;void 0!==e&&n.setAttribute("nonce",e),n.textContent=r.cssText,t.appendChild(n)}))})(r,this.constructor.elementStyles),r}connectedCallback(){var t;void 0===this.renderRoot&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var r;return null===(r=t.hostConnected)||void 0===r?void 0:r.call(t)}))}enableUpdating(t){}disconnectedCallback(){var t;null===(t=this._$ES)||void 0===t||t.forEach((t=>{var r;return null===(r=t.hostDisconnected)||void 0===r?void 0:r.call(t)}))}attributeChangedCallback(t,r,n){this._$AK(t,n)}_$EO(t,r){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:_;var e;const o=this.constructor._$Ep(t,n);if(void 0!==o&&!0===n.reflect){const i=(void 0!==(null===(e=n.converter)||void 0===e?void 0:e.toAttribute)?n.converter:g).toAttribute(r,n.type);this._$El=t,null==i?this.removeAttribute(o):this.setAttribute(o,i),this._$El=null}}_$AK(t,r){var n;const e=this.constructor,o=e._$Ev.get(t);if(void 0!==o&&this._$El!==o){const t=e.getPropertyOptions(o),i="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==(null===(n=t.converter)||void 0===n?void 0:n.fromAttribute)?t.converter:g;this._$El=o,this[o]=i.fromAttribute(r,t.type),this._$El=null}}requestUpdate(t,r,n){let e=!0;void 0!==t&&(((n=n||this.constructor.getPropertyOptions(t)).hasChanged||b)(this[t],r)?(this._$AL.has(t)||this._$AL.set(t,r),!0===n.reflect&&this._$El!==t&&(void 0===this._$EC&&(this._$EC=new Map),this._$EC.set(t,n))):e=!1),!this.isUpdatePending&&e&&(this._$E_=this._$Ej())}async _$Ej(){this.isUpdatePending=!0;try{await this._$E_}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;this.hasUpdated,this._$Ei&&(this._$Ei.forEach(((t,r)=>this[r]=t)),this._$Ei=void 0);let r=!1;const n=this._$AL;try{r=this.shouldUpdate(n),r?(this.willUpdate(n),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var r;return null===(r=t.hostUpdate)||void 0===r?void 0:r.call(t)})),this.update(n)):this._$Ek()}catch(t){throw r=!1,this._$Ek(),t}r&&this._$AE(n)}willUpdate(t){}_$AE(t){var r;null===(r=this._$ES)||void 0===r||r.forEach((t=>{var r;return null===(r=t.hostUpdated)||void 0===r?void 0:r.call(t)})),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$Ek(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$E_}shouldUpdate(t){return!0}update(t){void 0!==this._$EC&&(this._$EC.forEach(((t,r)=>this._$EO(r,this[r],t))),this._$EC=void 0),this._$Ek()}updated(t){}firstUpdated(t){}}var y;m.finalized=!0,m.elementProperties=new Map,m.elementStyles=[],m.shadowRootOptions={mode:"open"},null==v||v({ReactiveElement:m}),(null!==(f=h.reactiveElementVersions)&&void 0!==f?f:h.reactiveElementVersions=[]).push("1.6.1");const w=window,x=w.trustedTypes,k=x?x.createPolicy("lit-html",{createHTML:t=>t}):void 0,$=`lit$${(Math.random()+"").slice(9)}$`,A="?"+$,z=`<${A}>`,E=document,S=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return E.createComment(t)},C=t=>null===t||"object"!=typeof t&&"function"!=typeof t,O=Array.isArray,j=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,R=/-->/g,I=/>/g,U=RegExp(">|[ \t\n\f\r](?:([^\\s\"'>=/]+)([ \t\n\f\r]*=[ \t\n\f\r]*(?:[^ \t\n\f\r\"'`<>=]|(\"|')|))|$)","g"),T=/'/g,P=/"/g,L=/^(?:script|style|textarea|title)$/i,B=(t=>function(r){for(var n=arguments.length,e=new Array(n>1?n-1:0),o=1;o{const n=t.length-1,e=[];let o,i=2===r?"":"",a=j;for(let r=0;r"===c[0]?(a=null!=o?o:j,s=-1):void 0===c[1]?s=-2:(s=a.lastIndex-c[2].length,u=c[1],a=void 0===c[3]?U:'"'===c[3]?P:T):a===P||a===T?a=U:a===R||a===I?a=j:(a=U,o=void 0);const f=a===U&&t[r+1].startsWith("/>")?" ":"";i+=a===j?n+z:s>=0?(e.push(u),n.slice(0,s)+"$lit$"+n.slice(s)+$+f):n+$+(-2===s?(e.push(void 0),r):f)}const u=i+(t[n]||"")+(2===r?"":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[void 0!==k?k.createHTML(u):u,e]};class F{constructor(t,r){let n,{strings:e,_$litType$:o}=t;this.parts=[];let i=0,a=0;const u=e.length-1,c=this.parts,[s,l]=D(e,o);if(this.el=F.createElement(s,r),W.currentNode=this.el.content,2===o){const t=this.el.content,r=t.firstChild;r.remove(),t.append(...r.childNodes)}for(;null!==(n=W.nextNode())&&c.length0){n.textContent=x?x.emptyScript:"";for(let e=0;e2&&void 0!==arguments[2]?arguments[2]:t,e=arguments.length>3?arguments[3]:void 0;var o,i,a,u;if(r===N)return r;let c=void 0!==e?null===(o=n._$Co)||void 0===o?void 0:o[e]:n._$Cl;const s=C(r)?void 0:r._$litDirective$;return(null==c?void 0:c.constructor)!==s&&(null===(i=null==c?void 0:c._$AO)||void 0===i||i.call(c,!1),void 0===s?c=void 0:(c=new s(t),c._$AT(t,n,e)),void 0!==e?(null!==(a=(u=n)._$Co)&&void 0!==a?a:u._$Co=[])[e]=c:n._$Cl=c),void 0!==c&&(r=q(t,c._$AS(t,r.values),c,e)),r}class V{constructor(t,r){this.u=[],this._$AN=void 0,this._$AD=t,this._$AM=r}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}v(t){var r;const{el:{content:n},parts:e}=this._$AD,o=(null!==(r=null==t?void 0:t.creationScope)&&void 0!==r?r:E).importNode(n,!0);W.currentNode=o;let i=W.nextNode(),a=0,u=0,c=e[0];for(;void 0!==c;){if(a===c.index){let r;2===c.type?r=new Z(i,i.nextSibling,this,t):1===c.type?r=new c.ctor(i,c.name,c.strings,this,t):6===c.type&&(r=new X(i,this,t)),this.u.push(r),c=e[++u]}a!==(null==c?void 0:c.index)&&(i=W.nextNode(),a++)}return o}p(t){let r=0;for(const n of this.u)void 0!==n&&(void 0!==n.strings?(n._$AI(t,n,r),r+=n.strings.length-2):n._$AI(t[r])),r++}}class Z{constructor(t,r,n,e){var o;this.type=2,this._$AH=M,this._$AN=void 0,this._$AA=t,this._$AB=r,this._$AM=n,this.options=e,this._$Cm=null===(o=null==e?void 0:e.isConnected)||void 0===o||o}get _$AU(){var t,r;return null!==(r=null===(t=this._$AM)||void 0===t?void 0:t._$AU)&&void 0!==r?r:this._$Cm}get parentNode(){let t=this._$AA.parentNode;const r=this._$AM;return void 0!==r&&11===t.nodeType&&(t=r.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t){t=q(this,t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:this),C(t)?t===M||null==t||""===t?(this._$AH!==M&&this._$AR(),this._$AH=M):t!==this._$AH&&t!==N&&this.g(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):(t=>O(t)||"function"==typeof(null==t?void 0:t[Symbol.iterator]))(t)?this.k(t):this.g(t)}O(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._$AB;return this._$AA.parentNode.insertBefore(t,r)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}g(t){this._$AH!==M&&C(this._$AH)?this._$AA.nextSibling.data=t:this.T(E.createTextNode(t)),this._$AH=t}$(t){var r;const{values:n,_$litType$:e}=t,o="number"==typeof e?this._$AC(t):(void 0===e.el&&(e.el=F.createElement(e.h,this.options)),e);if((null===(r=this._$AH)||void 0===r?void 0:r._$AD)===o)this._$AH.p(n);else{const t=new V(o,this),r=t.v(this.options);t.p(n),this.T(r),this._$AH=t}}_$AC(t){let r=H.get(t.strings);return void 0===r&&H.set(t.strings,r=new F(t)),r}k(t){O(this._$AH)||(this._$AH=[],this._$AR());const r=this._$AH;let n,e=0;for(const o of t)e===r.length?r.push(n=new Z(this.O(S()),this.O(S()),this,this.options)):n=r[e],n._$AI(o),e++;e0&&void 0!==arguments[0]?arguments[0]:this._$AA.nextSibling,r=arguments.length>1?arguments[1]:void 0;var n;for(null===(n=this._$AP)||void 0===n||n.call(this,!1,!0,r);t&&t!==this._$AB;){const r=t.nextSibling;t.remove(),t=r}}setConnected(t){var r;void 0===this._$AM&&(this._$Cm=t,null===(r=this._$AP)||void 0===r||r.call(this,t))}}class G{constructor(t,r,n,e,o){this.type=1,this._$AH=M,this._$AN=void 0,this.element=t,this.name=r,this._$AM=e,this.options=o,n.length>2||""!==n[0]||""!==n[1]?(this._$AH=Array(n.length-1).fill(new String),this.strings=n):this._$AH=M}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this,n=arguments.length>2?arguments[2]:void 0,e=arguments.length>3?arguments[3]:void 0;const o=this.strings;let i=!1;if(void 0===o)t=q(this,t,r,0),i=!C(t)||t!==this._$AH&&t!==N,i&&(this._$AH=t);else{const e=t;let a,u;for(t=o[0],a=0;a1&&void 0!==arguments[1]?arguments[1]:this,0))&&void 0!==r?r:M)===N)return;const n=this._$AH,e=t===M&&n!==M||t.capture!==n.capture||t.once!==n.once||t.passive!==n.passive,o=t!==M&&(n===M||e);e&&this.element.removeEventListener(this.name,this,n),o&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var r,n;"function"==typeof this._$AH?this._$AH.call(null!==(n=null===(r=this.options)||void 0===r?void 0:r.host)&&void 0!==n?n:this.element,t):this._$AH.handleEvent(t)}}class X{constructor(t,r,n){this.element=t,this.type=6,this._$AN=void 0,this._$AM=r,this.options=n}get _$AU(){return this._$AM._$AU}_$AI(t){q(this,t)}}const tt=w.litHtmlPolyfillSupport;null==tt||tt(F,Z),(null!==(y=w.litHtmlVersions)&&void 0!==y?y:w.litHtmlVersions=[]).push("2.6.1");var rt,nt;class et extends m{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var t,r;const n=super.createRenderRoot();return null!==(t=(r=this.renderOptions).renderBefore)&&void 0!==t||(r.renderBefore=n.firstChild),n}update(t){const r=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=((t,r,n)=>{var e,o;const i=null!==(e=null==n?void 0:n.renderBefore)&&void 0!==e?e:r;let a=i._$litPart$;if(void 0===a){const t=null!==(o=null==n?void 0:n.renderBefore)&&void 0!==o?o:null;i._$litPart$=a=new Z(r.insertBefore(S(),t),t,void 0,null!=n?n:{})}return a._$AI(t),a})(r,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!1)}render(){return N}}et.finalized=!0,et._$litElement$=!0,null===(rt=globalThis.litElementHydrateSupport)||void 0===rt||rt.call(globalThis,{LitElement:et});const ot=globalThis.litElementPolyfillSupport;null==ot||ot({LitElement:et}),(null!==(nt=globalThis.litElementVersions)&&void 0!==nt?nt:globalThis.litElementVersions=[]).push("3.2.2");const it=t=>r=>"function"==typeof r?((t,r)=>(customElements.define(t,r),r))(t,r):((t,r)=>{const{kind:n,elements:e}=r;return{kind:n,elements:e,finisher(r){customElements.define(t,r)}}})(t,r);var at;null===(at=window.HTMLSlotElement)||void 0===at||at.prototype.assignedElements;var ut=function(){for(var t=arguments.length,r=new Array(t),n=0;n + + + + + + `}};st.styles=[s` + ${ct} + `],st=e([it("hds-icon-angle-up")],st)}},r={};function n(e){var o=r[e];if(void 0!==o)return o.exports;var i=r[e]={exports:{}};return t[e](i,i.exports,n),i.exports}n.d=function(t,r){for(var e in r)n.o(r,e)&&!n.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:r[e]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),n.o=function(t,r){return Object.prototype.hasOwnProperty.call(t,r)},n(7226),n(9907)}(); \ No newline at end of file diff --git a/dist/js/index.min.js b/dist/js/index.min.js new file mode 100644 index 000000000..d1fffdf3c --- /dev/null +++ b/dist/js/index.min.js @@ -0,0 +1,1201 @@ +!function(){"use strict";var t={7226:function(t,r,n){var e=n(9907);const o=1;const i=(t=>function(){for(var r=arguments.length,n=new Array(r),e=0;e2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(t){return Object.keys(t).reduce(((r,n)=>{const e=t[n];return null==e?r:r+`${n=n.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${e};`}),"")}update(t,r){let[n]=r;const{style:o}=t.element;if(void 0===this.vt){this.vt=new Set;for(const t in n)this.vt.add(t);return this.render(n)}this.vt.forEach((t=>{null==n[t]&&(this.vt.delete(t),t.includes("-")?o.removeProperty(t):o[t]="")}));for(const t in n){const r=n[t];null!=r&&(this.vt.add(t),t.includes("-")?o.setProperty(t,r):o[t]=r)}return e.x}});var a="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:"undefined"!=typeof self?self:{};var u,c,s,l=(u=function(t,r){(function(){var n,e="Expected a function",o="__lodash_hash_undefined__",i="__lodash_placeholder__",u=16,c=32,s=64,l=128,f=256,h=1/0,d=9007199254740991,p=NaN,v=4294967295,g=[["ary",l],["bind",1],["bindKey",2],["curry",8],["curryRight",u],["flip",512],["partial",c],["partialRight",s],["rearg",f]],b="[object Arguments]",_="[object Array]",m="[object Boolean]",y="[object Date]",w="[object Error]",x="[object Function]",k="[object GeneratorFunction]",$="[object Map]",A="[object Number]",z="[object Object]",E="[object Promise]",S="[object RegExp]",C="[object Set]",O="[object String]",j="[object Symbol]",R="[object WeakMap]",I="[object ArrayBuffer]",U="[object DataView]",T="[object Float32Array]",P="[object Float64Array]",L="[object Int8Array]",B="[object Int16Array]",N="[object Int32Array]",M="[object Uint8Array]",H="[object Uint8ClampedArray]",W="[object Uint16Array]",D="[object Uint32Array]",F=/\b__p \+= '';/g,q=/\b(__p \+=) '' \+/g,V=/(__e\(.*?\)|\b__t\)) \+\n'';/g,Z=/&(?:amp|lt|gt|quot|#39);/g,G=/[&<>"']/g,K=RegExp(Z.source),Y=RegExp(G.source),J=/<%-([\s\S]+?)%>/g,Q=/<%([\s\S]+?)%>/g,X=/<%=([\s\S]+?)%>/g,tt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,rt=/^\w*$/,nt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,et=/[\\^$.*+?()[\]{}|]/g,ot=RegExp(et.source),it=/^\s+/,at=/\s/,ut=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,ct=/\{\n\/\* \[wrapped with (.+)\] \*/,st=/,? & /,lt=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,ft=/[()=,{}\[\]\/\s]/,ht=/\\(\\)?/g,dt=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,pt=/\w*$/,vt=/^[-+]0x[0-9a-f]+$/i,gt=/^0b[01]+$/i,bt=/^\[object .+?Constructor\]$/,_t=/^0o[0-7]+$/i,mt=/^(?:0|[1-9]\d*)$/,yt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,wt=/($^)/,xt=/['\n\r\u2028\u2029\\]/g,kt="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",$t="\\u2700-\\u27bf",At="a-z\\xdf-\\xf6\\xf8-\\xff",zt="A-Z\\xc0-\\xd6\\xd8-\\xde",Et="\\ufe0e\\ufe0f",St="\\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",Ct="['’]",Ot="[\\ud800-\\udfff]",jt="["+St+"]",Rt="["+kt+"]",It="\\d+",Ut="[\\u2700-\\u27bf]",Tt="["+At+"]",Pt="[^\\ud800-\\udfff"+St+It+$t+At+zt+"]",Lt="\\ud83c[\\udffb-\\udfff]",Bt="[^\\ud800-\\udfff]",Nt="(?:\\ud83c[\\udde6-\\uddff]){2}",Mt="[\\ud800-\\udbff][\\udc00-\\udfff]",Ht="["+zt+"]",Wt="(?:"+Tt+"|"+Pt+")",Dt="(?:"+Ht+"|"+Pt+")",Ft="(?:['’](?:d|ll|m|re|s|t|ve))?",qt="(?:['’](?:D|LL|M|RE|S|T|VE))?",Vt="(?:"+Rt+"|"+Lt+")?",Zt="[\\ufe0e\\ufe0f]?",Gt=Zt+Vt+"(?:\\u200d(?:"+[Bt,Nt,Mt].join("|")+")"+Zt+Vt+")*",Kt="(?:"+[Ut,Nt,Mt].join("|")+")"+Gt,Yt="(?:"+[Bt+Rt+"?",Rt,Nt,Mt,Ot].join("|")+")",Jt=RegExp(Ct,"g"),Qt=RegExp(Rt,"g"),Xt=RegExp(Lt+"(?="+Lt+")|"+Yt+Gt,"g"),tr=RegExp([Ht+"?"+Tt+"+"+Ft+"(?="+[jt,Ht,"$"].join("|")+")",Dt+"+"+qt+"(?="+[jt,Ht+Wt,"$"].join("|")+")",Ht+"?"+Wt+"+"+Ft,Ht+"+"+qt,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",It,Kt].join("|"),"g"),rr=RegExp("[\\u200d\\ud800-\\udfff"+kt+Et+"]"),nr=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,er=["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"],or=-1,ir={};ir[T]=ir[P]=ir[L]=ir[B]=ir[N]=ir[M]=ir[H]=ir[W]=ir[D]=!0,ir[b]=ir[_]=ir[I]=ir[m]=ir[U]=ir[y]=ir[w]=ir[x]=ir[$]=ir[A]=ir[z]=ir[S]=ir[C]=ir[O]=ir[R]=!1;var ar={};ar[b]=ar[_]=ar[I]=ar[U]=ar[m]=ar[y]=ar[T]=ar[P]=ar[L]=ar[B]=ar[N]=ar[$]=ar[A]=ar[z]=ar[S]=ar[C]=ar[O]=ar[j]=ar[M]=ar[H]=ar[W]=ar[D]=!0,ar[w]=ar[x]=ar[R]=!1;var ur={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},cr=parseFloat,sr=parseInt,lr="object"==typeof a&&a&&a.Object===Object&&a,fr="object"==typeof self&&self&&self.Object===Object&&self,hr=lr||fr||Function("return this")(),dr=r&&!r.nodeType&&r,pr=dr&&t&&!t.nodeType&&t,vr=pr&&pr.exports===dr,gr=vr&&lr.process,br=function(){try{var t=pr&&pr.require&&pr.require("util").types;return t||gr&&gr.binding&&gr.binding("util")}catch(t){}}(),_r=br&&br.isArrayBuffer,mr=br&&br.isDate,yr=br&&br.isMap,wr=br&&br.isRegExp,xr=br&&br.isSet,kr=br&&br.isTypedArray;function $r(t,r,n){switch(n.length){case 0:return t.call(r);case 1:return t.call(r,n[0]);case 2:return t.call(r,n[0],n[1]);case 3:return t.call(r,n[0],n[1],n[2])}return t.apply(r,n)}function Ar(t,r,n,e){for(var o=-1,i=null==t?0:t.length;++o-1}function jr(t,r,n){for(var e=-1,o=null==t?0:t.length;++e-1;);return n}function tn(t,r){for(var n=t.length;n--&&Mr(r,t[n],0)>-1;);return n}function rn(t,r){for(var n=t.length,e=0;n--;)t[n]===r&&++e;return e}var nn=qr({À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"}),en=qr({"&":"&","<":"<",">":">",'"':""","'":"'"});function on(t){return"\\"+ur[t]}function an(t){return rr.test(t)}function un(t){var r=-1,n=Array(t.size);return t.forEach((function(t,e){n[++r]=[e,t]})),n}function cn(t,r){return function(n){return t(r(n))}}function sn(t,r){for(var n=-1,e=t.length,o=0,a=[];++n",""":'"',"'":"'"}),gn=function t(r){var a,at=(r=null==r?hr:gn.defaults(hr.Object(),r,gn.pick(hr,er))).Array,kt=r.Date,$t=r.Error,At=r.Function,zt=r.Math,Et=r.Object,St=r.RegExp,Ct=r.String,Ot=r.TypeError,jt=at.prototype,Rt=At.prototype,It=Et.prototype,Ut=r["__core-js_shared__"],Tt=Rt.toString,Pt=It.hasOwnProperty,Lt=0,Bt=(a=/[^.]+$/.exec(Ut&&Ut.keys&&Ut.keys.IE_PROTO||""))?"Symbol(src)_1."+a:"",Nt=It.toString,Mt=Tt.call(Et),Ht=hr._,Wt=St("^"+Tt.call(Pt).replace(et,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Dt=vr?r.Buffer:n,Ft=r.Symbol,qt=r.Uint8Array,Vt=Dt?Dt.allocUnsafe:n,Zt=cn(Et.getPrototypeOf,Et),Gt=Et.create,Kt=It.propertyIsEnumerable,Yt=jt.splice,Xt=Ft?Ft.isConcatSpreadable:n,rr=Ft?Ft.iterator:n,ur=Ft?Ft.toStringTag:n,lr=function(){try{var t=pi(Et,"defineProperty");return t({},"",{}),t}catch(t){}}(),fr=r.clearTimeout!==hr.clearTimeout&&r.clearTimeout,dr=kt&&kt.now!==hr.Date.now&&kt.now,pr=r.setTimeout!==hr.setTimeout&&r.setTimeout,gr=zt.ceil,br=zt.floor,Lr=Et.getOwnPropertySymbols,qr=Dt?Dt.isBuffer:n,bn=r.isFinite,_n=jt.join,mn=cn(Et.keys,Et),yn=zt.max,wn=zt.min,xn=kt.now,kn=r.parseInt,$n=zt.random,An=jt.reverse,zn=pi(r,"DataView"),En=pi(r,"Map"),Sn=pi(r,"Promise"),Cn=pi(r,"Set"),On=pi(r,"WeakMap"),jn=pi(Et,"create"),Rn=On&&new On,In={},Un=Hi(zn),Tn=Hi(En),Pn=Hi(Sn),Ln=Hi(Cn),Bn=Hi(On),Nn=Ft?Ft.prototype:n,Mn=Nn?Nn.valueOf:n,Hn=Nn?Nn.toString:n;function Wn(t){if(ou(t)&&!Za(t)&&!(t instanceof Vn)){if(t instanceof qn)return t;if(Pt.call(t,"__wrapped__"))return Wi(t)}return new qn(t)}var Dn=function(){function t(){}return function(r){if(!eu(r))return{};if(Gt)return Gt(r);t.prototype=r;var e=new t;return t.prototype=n,e}}();function Fn(){}function qn(t,r){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!r,this.__index__=0,this.__values__=n}function Vn(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=v,this.__views__=[]}function Zn(t){var r=-1,n=null==t?0:t.length;for(this.clear();++r=r?t:r)),t}function le(t,r,e,o,i,a){var u,c=1&r,s=2&r,l=4&r;if(e&&(u=i?e(t,o,i,a):e(t)),u!==n)return u;if(!eu(t))return t;var f=Za(t);if(f){if(u=function(t){var r=t.length,n=new t.constructor(r);return r&&"string"==typeof t[0]&&Pt.call(t,"index")&&(n.index=t.index,n.input=t.input),n}(t),!c)return Ro(t,u)}else{var h=bi(t),d=h==x||h==k;if(Ja(t))return zo(t,c);if(h==z||h==b||d&&!i){if(u=s||d?{}:mi(t),!c)return s?function(t,r){return Io(t,gi(t),r)}(t,function(t,r){return t&&Io(r,Tu(r),t)}(u,t)):function(t,r){return Io(t,vi(t),r)}(t,ae(u,t))}else{if(!ar[h])return i?t:{};u=function(t,r,n){var e,o=t.constructor;switch(r){case I:return Eo(t);case m:case y:return new o(+t);case U:return function(t,r){var n=r?Eo(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case T:case P:case L:case B:case N:case M:case H:case W:case D:return So(t,n);case $:return new o;case A:case O:return new o(t);case S:return function(t){var r=new t.constructor(t.source,pt.exec(t));return r.lastIndex=t.lastIndex,r}(t);case C:return new o;case j:return e=t,Mn?Et(Mn.call(e)):{}}}(t,h,c)}}a||(a=new Jn);var p=a.get(t);if(p)return p;a.set(t,u),su(t)?t.forEach((function(n){u.add(le(n,r,e,n,t,a))})):iu(t)&&t.forEach((function(n,o){u.set(o,le(n,r,e,o,t,a))}));var v=f?n:(l?s?ui:ai:s?Tu:Uu)(t);return zr(v||t,(function(n,o){v&&(n=t[o=n]),ee(u,o,le(n,r,e,o,t,a))})),u}function fe(t,r,e){var o=e.length;if(null==t)return!o;for(t=Et(t);o--;){var i=e[o],a=r[i],u=t[i];if(u===n&&!(i in t)||!a(u))return!1}return!0}function he(t,r,o){if("function"!=typeof t)throw new Ot(e);return Ui((function(){t.apply(n,o)}),r)}function de(t,r,n,e){var o=-1,i=Or,a=!0,u=t.length,c=[],s=r.length;if(!u)return c;n&&(r=Rr(r,Yr(n))),e?(i=jr,a=!1):r.length>=200&&(i=Qr,a=!1,r=new Yn(r));t:for(;++o-1},Gn.prototype.set=function(t,r){var n=this.__data__,e=oe(n,t);return e<0?(++this.size,n.push([t,r])):n[e][1]=r,this},Kn.prototype.clear=function(){this.size=0,this.__data__={hash:new Zn,map:new(En||Gn),string:new Zn}},Kn.prototype.delete=function(t){var r=hi(this,t).delete(t);return this.size-=r?1:0,r},Kn.prototype.get=function(t){return hi(this,t).get(t)},Kn.prototype.has=function(t){return hi(this,t).has(t)},Kn.prototype.set=function(t,r){var n=hi(this,t),e=n.size;return n.set(t,r),this.size+=n.size==e?0:1,this},Yn.prototype.add=Yn.prototype.push=function(t){return this.__data__.set(t,o),this},Yn.prototype.has=function(t){return this.__data__.has(t)},Jn.prototype.clear=function(){this.__data__=new Gn,this.size=0},Jn.prototype.delete=function(t){var r=this.__data__,n=r.delete(t);return this.size=r.size,n},Jn.prototype.get=function(t){return this.__data__.get(t)},Jn.prototype.has=function(t){return this.__data__.has(t)},Jn.prototype.set=function(t,r){var n=this.__data__;if(n instanceof Gn){var e=n.__data__;if(!En||e.length<199)return e.push([t,r]),this.size=++n.size,this;n=this.__data__=new Kn(e)}return n.set(t,r),this.size=n.size,this};var pe=Po(xe),ve=Po(ke,!0);function ge(t,r){var n=!0;return pe(t,(function(t,e,o){return n=!!r(t,e,o)})),n}function be(t,r,e){for(var o=-1,i=t.length;++o0&&n(u)?r>1?me(u,r-1,n,e,o):Ir(o,u):e||(o[o.length]=u)}return o}var ye=Lo(),we=Lo(!0);function xe(t,r){return t&&ye(t,r,Uu)}function ke(t,r){return t&&we(t,r,Uu)}function $e(t,r){return Cr(r,(function(r){return tu(t[r])}))}function Ae(t,r){for(var e=0,o=(r=xo(r,t)).length;null!=t&&er}function Ce(t,r){return null!=t&&Pt.call(t,r)}function Oe(t,r){return null!=t&&r in Et(t)}function je(t,r,e){for(var o=e?jr:Or,i=t[0].length,a=t.length,u=a,c=at(a),s=1/0,l=[];u--;){var f=t[u];u&&r&&(f=Rr(f,Yr(r))),s=wn(f.length,s),c[u]=!e&&(r||i>=120&&f.length>=120)?new Yn(u&&f):n}f=t[0];var h=-1,d=c[0];t:for(;++h=u?c:c*("desc"==n[e]?-1:1)}return t.index-r.index}(t,r,n)}))}function Ze(t,r,n){for(var e=-1,o=r.length,i={};++e-1;)u!==t&&Yt.call(u,c,1),Yt.call(t,c,1);return t}function Ke(t,r){for(var n=t?r.length:0,e=n-1;n--;){var o=r[n];if(n==e||o!==i){var i=o;wi(o)?Yt.call(t,o,1):po(t,o)}}return t}function Ye(t,r){return t+br($n()*(r-t+1))}function Je(t,r){var n="";if(!t||r<1||r>d)return n;do{r%2&&(n+=t),(r=br(r/2))&&(t+=t)}while(r);return n}function Qe(t,r){return Ti(Ci(t,r,ac),t+"")}function Xe(t){return Xn(Du(t))}function to(t,r){var n=Du(t);return Bi(n,se(r,0,n.length))}function ro(t,r,e,o){if(!eu(t))return t;for(var i=-1,a=(r=xo(r,t)).length,u=a-1,c=t;null!=c&&++io?0:o+r),(n=n>o?o:n)<0&&(n+=o),o=r>n?0:n-r>>>0,r>>>=0;for(var i=at(o);++e>>1,a=t[i];null!==a&&!fu(a)&&(n?a<=r:a=200){var s=r?null:Qo(t);if(s)return ln(s);a=!1,o=Qr,c=new Yn}else c=r?[]:u;t:for(;++e=o?t:io(t,r,e)}var Ao=fr||function(t){return hr.clearTimeout(t)};function zo(t,r){if(r)return t.slice();var n=t.length,e=Vt?Vt(n):new t.constructor(n);return t.copy(e),e}function Eo(t){var r=new t.constructor(t.byteLength);return new qt(r).set(new qt(t)),r}function So(t,r){var n=r?Eo(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function Co(t,r){if(t!==r){var e=t!==n,o=null===t,i=t==t,a=fu(t),u=r!==n,c=null===r,s=r==r,l=fu(r);if(!c&&!l&&!a&&t>r||a&&u&&s&&!c&&!l||o&&u&&s||!e&&s||!i)return 1;if(!o&&!a&&!l&&t1?e[i-1]:n,u=i>2?e[2]:n;for(a=t.length>3&&"function"==typeof a?(i--,a):n,u&&xi(e[0],e[1],u)&&(a=i<3?n:a,i=1),r=Et(r);++o-1?i[a?r[u]:u]:n}}function Wo(t){return ii((function(r){var o=r.length,i=o,a=qn.prototype.thru;for(t&&r.reverse();i--;){var u=r[i];if("function"!=typeof u)throw new Ot(e);if(a&&!c&&"wrapper"==si(u))var c=new qn([],!0)}for(i=c?i:o;++i1&&_.reverse(),h&&sc))return!1;var l=a.get(t),f=a.get(r);if(l&&f)return l==r&&f==t;var h=-1,d=!0,p=2&e?new Yn:n;for(a.set(t,r),a.set(r,t);++h-1&&t%1==0&&t1?"& ":"")+r[e],r=r.join(n>2?", ":" "),t.replace(ut,"{\n/* [wrapped with "+r+"] */\n")}(e,function(t,r){return zr(g,(function(n){var e="_."+n[0];r&n[1]&&!Or(t,e)&&t.push(e)})),t.sort()}(function(t){var r=t.match(ct);return r?r[1].split(st):[]}(e),n)))}function Li(t){var r=0,e=0;return function(){var o=xn(),i=16-(o-e);if(e=o,i>0){if(++r>=800)return arguments[0]}else r=0;return t.apply(n,arguments)}}function Bi(t,r){var e=-1,o=t.length,i=o-1;for(r=r===n?o:r;++e1?t[r-1]:n;return e="function"==typeof e?(t.pop(),e):n,ca(t,e)}));function va(t){var r=Wn(t);return r.__chain__=!0,r}function ga(t,r){return r(t)}var ba=ii((function(t){var r=t.length,e=r?t[0]:0,o=this.__wrapped__,i=function(r){return ce(r,t)};return!(r>1||this.__actions__.length)&&o instanceof Vn&&wi(e)?((o=o.slice(e,+e+(r?1:0))).__actions__.push({func:ga,args:[i],thisArg:n}),new qn(o,this.__chain__).thru((function(t){return r&&!t.length&&t.push(n),t}))):this.thru(i)})),_a=Uo((function(t,r,n){Pt.call(t,n)?++t[n]:ue(t,n,1)})),ma=Ho(Vi),ya=Ho(Zi);function wa(t,r){return(Za(t)?zr:pe)(t,fi(r,3))}function xa(t,r){return(Za(t)?Er:ve)(t,fi(r,3))}var ka=Uo((function(t,r,n){Pt.call(t,n)?t[n].push(r):ue(t,n,[r])})),$a=Qe((function(t,r,n){var e=-1,o="function"==typeof r,i=Ka(t)?at(t.length):[];return pe(t,(function(t){i[++e]=o?$r(r,t,n):Re(t,r,n)})),i})),Aa=Uo((function(t,r,n){ue(t,n,r)}));function za(t,r){return(Za(t)?Rr:He)(t,fi(r,3))}var Ea=Uo((function(t,r,n){t[n?0:1].push(r)}),(function(){return[[],[]]})),Sa=Qe((function(t,r){if(null==t)return[];var n=r.length;return n>1&&xi(t,r[0],r[1])?r=[]:n>2&&xi(r[0],r[1],r[2])&&(r=[r[0]]),Ve(t,me(r,1),[])})),Ca=dr||function(){return hr.Date.now()};function Oa(t,r,e){return r=e?n:r,r=t&&null==r?t.length:r,ti(t,l,n,n,n,n,r)}function ja(t,r){var o;if("function"!=typeof r)throw new Ot(e);return t=bu(t),function(){return--t>0&&(o=r.apply(this,arguments)),t<=1&&(r=n),o}}var Ra=Qe((function(t,r,n){var e=1;if(n.length){var o=sn(n,li(Ra));e|=c}return ti(t,e,r,n,o)})),Ia=Qe((function(t,r,n){var e=3;if(n.length){var o=sn(n,li(Ia));e|=c}return ti(r,e,t,n,o)}));function Ua(t,r,o){var i,a,u,c,s,l,f=0,h=!1,d=!1,p=!0;if("function"!=typeof t)throw new Ot(e);function v(r){var e=i,o=a;return i=a=n,f=r,c=t.apply(o,e)}function g(t){return f=t,s=Ui(_,r),h?v(t):c}function b(t){var e=t-l;return l===n||e>=r||e<0||d&&t-f>=u}function _(){var t=Ca();if(b(t))return m(t);s=Ui(_,function(t){var n=r-(t-l);return d?wn(n,u-(t-f)):n}(t))}function m(t){return s=n,p&&i?v(t):(i=a=n,c)}function y(){var t=Ca(),e=b(t);if(i=arguments,a=this,l=t,e){if(s===n)return g(l);if(d)return Ao(s),s=Ui(_,r),v(l)}return s===n&&(s=Ui(_,r)),c}return r=mu(r)||0,eu(o)&&(h=!!o.leading,u=(d="maxWait"in o)?yn(mu(o.maxWait)||0,r):u,p="trailing"in o?!!o.trailing:p),y.cancel=function(){s!==n&&Ao(s),f=0,i=l=a=s=n},y.flush=function(){return s===n?c:m(Ca())},y}var Ta=Qe((function(t,r){return he(t,1,r)})),Pa=Qe((function(t,r,n){return he(t,mu(r)||0,n)}));function La(t,r){if("function"!=typeof t||null!=r&&"function"!=typeof r)throw new Ot(e);var n=function(){var e=arguments,o=r?r.apply(this,e):e[0],i=n.cache;if(i.has(o))return i.get(o);var a=t.apply(this,e);return n.cache=i.set(o,a)||i,a};return n.cache=new(La.Cache||Kn),n}function Ba(t){if("function"!=typeof t)throw new Ot(e);return function(){var r=arguments;switch(r.length){case 0:return!t.call(this);case 1:return!t.call(this,r[0]);case 2:return!t.call(this,r[0],r[1]);case 3:return!t.call(this,r[0],r[1],r[2])}return!t.apply(this,r)}}La.Cache=Kn;var Na=ko((function(t,r){var n=(r=1==r.length&&Za(r[0])?Rr(r[0],Yr(fi())):Rr(me(r,1),Yr(fi()))).length;return Qe((function(e){for(var o=-1,i=wn(e.length,n);++o=r})),Va=Ie(function(){return arguments}())?Ie:function(t){return ou(t)&&Pt.call(t,"callee")&&!Kt.call(t,"callee")},Za=at.isArray,Ga=_r?Yr(_r):function(t){return ou(t)&&Ee(t)==I};function Ka(t){return null!=t&&nu(t.length)&&!tu(t)}function Ya(t){return ou(t)&&Ka(t)}var Ja=qr||mc,Qa=mr?Yr(mr):function(t){return ou(t)&&Ee(t)==y};function Xa(t){if(!ou(t))return!1;var r=Ee(t);return r==w||"[object DOMException]"==r||"string"==typeof t.message&&"string"==typeof t.name&&!uu(t)}function tu(t){if(!eu(t))return!1;var r=Ee(t);return r==x||r==k||"[object AsyncFunction]"==r||"[object Proxy]"==r}function ru(t){return"number"==typeof t&&t==bu(t)}function nu(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=d}function eu(t){var r=typeof t;return null!=t&&("object"==r||"function"==r)}function ou(t){return null!=t&&"object"==typeof t}var iu=yr?Yr(yr):function(t){return ou(t)&&bi(t)==$};function au(t){return"number"==typeof t||ou(t)&&Ee(t)==A}function uu(t){if(!ou(t)||Ee(t)!=z)return!1;var r=Zt(t);if(null===r)return!0;var n=Pt.call(r,"constructor")&&r.constructor;return"function"==typeof n&&n instanceof n&&Tt.call(n)==Mt}var cu=wr?Yr(wr):function(t){return ou(t)&&Ee(t)==S},su=xr?Yr(xr):function(t){return ou(t)&&bi(t)==C};function lu(t){return"string"==typeof t||!Za(t)&&ou(t)&&Ee(t)==O}function fu(t){return"symbol"==typeof t||ou(t)&&Ee(t)==j}var hu=kr?Yr(kr):function(t){return ou(t)&&nu(t.length)&&!!ir[Ee(t)]},du=Ko(Me),pu=Ko((function(t,r){return t<=r}));function vu(t){if(!t)return[];if(Ka(t))return lu(t)?dn(t):Ro(t);if(rr&&t[rr])return function(t){for(var r,n=[];!(r=t.next()).done;)n.push(r.value);return n}(t[rr]());var r=bi(t);return(r==$?un:r==C?ln:Du)(t)}function gu(t){return t?(t=mu(t))===h||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}function bu(t){var r=gu(t),n=r%1;return r==r?n?r-n:r:0}function _u(t){return t?se(bu(t),0,v):0}function mu(t){if("number"==typeof t)return t;if(fu(t))return p;if(eu(t)){var r="function"==typeof t.valueOf?t.valueOf():t;t=eu(r)?r+"":r}if("string"!=typeof t)return 0===t?t:+t;t=Kr(t);var n=gt.test(t);return n||_t.test(t)?sr(t.slice(2),n?2:8):vt.test(t)?p:+t}function yu(t){return Io(t,Tu(t))}function wu(t){return null==t?"":fo(t)}var xu=To((function(t,r){if(zi(r)||Ka(r))Io(r,Uu(r),t);else for(var n in r)Pt.call(r,n)&&ee(t,n,r[n])})),ku=To((function(t,r){Io(r,Tu(r),t)})),$u=To((function(t,r,n,e){Io(r,Tu(r),t,e)})),Au=To((function(t,r,n,e){Io(r,Uu(r),t,e)})),zu=ii(ce),Eu=Qe((function(t,r){t=Et(t);var e=-1,o=r.length,i=o>2?r[2]:n;for(i&&xi(r[0],r[1],i)&&(o=1);++e1),r})),Io(t,ui(t),n),e&&(n=le(n,7,ei));for(var o=r.length;o--;)po(n,r[o]);return n})),Nu=ii((function(t,r){return null==t?{}:function(t,r){return Ze(t,r,(function(r,n){return Ou(t,n)}))}(t,r)}));function Mu(t,r){if(null==t)return{};var n=Rr(ui(t),(function(t){return[t]}));return r=fi(r),Ze(t,n,(function(t,n){return r(t,n[0])}))}var Hu=Xo(Uu),Wu=Xo(Tu);function Du(t){return null==t?[]:Jr(t,Uu(t))}var Fu=No((function(t,r,n){return r=r.toLowerCase(),t+(n?qu(r):r)}));function qu(t){return Xu(wu(t).toLowerCase())}function Vu(t){return(t=wu(t))&&t.replace(yt,nn).replace(Qt,"")}var Zu=No((function(t,r,n){return t+(n?"-":"")+r.toLowerCase()})),Gu=No((function(t,r,n){return t+(n?" ":"")+r.toLowerCase()})),Ku=Bo("toLowerCase"),Yu=No((function(t,r,n){return t+(n?"_":"")+r.toLowerCase()})),Ju=No((function(t,r,n){return t+(n?" ":"")+Xu(r)})),Qu=No((function(t,r,n){return t+(n?" ":"")+r.toUpperCase()})),Xu=Bo("toUpperCase");function tc(t,r,e){return t=wu(t),(r=e?n:r)===n?function(t){return nr.test(t)}(t)?function(t){return t.match(tr)||[]}(t):function(t){return t.match(lt)||[]}(t):t.match(r)||[]}var rc=Qe((function(t,r){try{return $r(t,n,r)}catch(t){return Xa(t)?t:new $t(t)}})),nc=ii((function(t,r){return zr(r,(function(r){r=Mi(r),ue(t,r,Ra(t[r],t))})),t}));function ec(t){return function(){return t}}var oc=Wo(),ic=Wo(!0);function ac(t){return t}function uc(t){return Le("function"==typeof t?t:le(t,1))}var cc=Qe((function(t,r){return function(n){return Re(n,t,r)}})),sc=Qe((function(t,r){return function(n){return Re(t,n,r)}}));function lc(t,r,n){var e=Uu(r),o=$e(r,e);null!=n||eu(r)&&(o.length||!e.length)||(n=r,r=t,t=this,o=$e(r,Uu(r)));var i=!(eu(n)&&"chain"in n&&!n.chain),a=tu(t);return zr(o,(function(n){var e=r[n];t[n]=e,a&&(t.prototype[n]=function(){var r=this.__chain__;if(i||r){var n=t(this.__wrapped__),o=n.__actions__=Ro(this.__actions__);return o.push({func:e,args:arguments,thisArg:t}),n.__chain__=r,n}return e.apply(t,Ir([this.value()],arguments))})})),t}function fc(){}var hc=Vo(Rr),dc=Vo(Sr),pc=Vo(Pr);function vc(t){return ki(t)?Fr(Mi(t)):function(t){return function(r){return Ae(r,t)}}(t)}var gc=Go(),bc=Go(!0);function _c(){return[]}function mc(){return!1}var yc,wc=qo((function(t,r){return t+r}),0),xc=Jo("ceil"),kc=qo((function(t,r){return t/r}),1),$c=Jo("floor"),Ac=qo((function(t,r){return t*r}),1),zc=Jo("round"),Ec=qo((function(t,r){return t-r}),0);return Wn.after=function(t,r){if("function"!=typeof r)throw new Ot(e);return t=bu(t),function(){if(--t<1)return r.apply(this,arguments)}},Wn.ary=Oa,Wn.assign=xu,Wn.assignIn=ku,Wn.assignInWith=$u,Wn.assignWith=Au,Wn.at=zu,Wn.before=ja,Wn.bind=Ra,Wn.bindAll=nc,Wn.bindKey=Ia,Wn.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Za(t)?t:[t]},Wn.chain=va,Wn.chunk=function(t,r,e){r=(e?xi(t,r,e):r===n)?1:yn(bu(r),0);var o=null==t?0:t.length;if(!o||r<1)return[];for(var i=0,a=0,u=at(gr(o/r));ii?0:i+e),(o=o===n||o>i?i:bu(o))<0&&(o+=i),o=e>o?0:_u(o);e>>0)?(t=wu(t))&&("string"==typeof r||null!=r&&!cu(r))&&!(r=fo(r))&&an(t)?$o(dn(t),0,e):t.split(r,e):[]},Wn.spread=function(t,r){if("function"!=typeof t)throw new Ot(e);return r=null==r?0:yn(bu(r),0),Qe((function(n){var e=n[r],o=$o(n,0,r);return e&&Ir(o,e),$r(t,this,o)}))},Wn.tail=function(t){var r=null==t?0:t.length;return r?io(t,1,r):[]},Wn.take=function(t,r,e){return t&&t.length?io(t,0,(r=e||r===n?1:bu(r))<0?0:r):[]},Wn.takeRight=function(t,r,e){var o=null==t?0:t.length;return o?io(t,(r=o-(r=e||r===n?1:bu(r)))<0?0:r,o):[]},Wn.takeRightWhile=function(t,r){return t&&t.length?go(t,fi(r,3),!1,!0):[]},Wn.takeWhile=function(t,r){return t&&t.length?go(t,fi(r,3)):[]},Wn.tap=function(t,r){return r(t),t},Wn.throttle=function(t,r,n){var o=!0,i=!0;if("function"!=typeof t)throw new Ot(e);return eu(n)&&(o="leading"in n?!!n.leading:o,i="trailing"in n?!!n.trailing:i),Ua(t,r,{leading:o,maxWait:r,trailing:i})},Wn.thru=ga,Wn.toArray=vu,Wn.toPairs=Hu,Wn.toPairsIn=Wu,Wn.toPath=function(t){return Za(t)?Rr(t,Mi):fu(t)?[t]:Ro(Ni(wu(t)))},Wn.toPlainObject=yu,Wn.transform=function(t,r,n){var e=Za(t),o=e||Ja(t)||hu(t);if(r=fi(r,4),null==n){var i=t&&t.constructor;n=o?e?new i:[]:eu(t)&&tu(i)?Dn(Zt(t)):{}}return(o?zr:xe)(t,(function(t,e,o){return r(n,t,e,o)})),n},Wn.unary=function(t){return Oa(t,1)},Wn.union=oa,Wn.unionBy=ia,Wn.unionWith=aa,Wn.uniq=function(t){return t&&t.length?ho(t):[]},Wn.uniqBy=function(t,r){return t&&t.length?ho(t,fi(r,2)):[]},Wn.uniqWith=function(t,r){return r="function"==typeof r?r:n,t&&t.length?ho(t,n,r):[]},Wn.unset=function(t,r){return null==t||po(t,r)},Wn.unzip=ua,Wn.unzipWith=ca,Wn.update=function(t,r,n){return null==t?t:vo(t,r,wo(n))},Wn.updateWith=function(t,r,e,o){return o="function"==typeof o?o:n,null==t?t:vo(t,r,wo(e),o)},Wn.values=Du,Wn.valuesIn=function(t){return null==t?[]:Jr(t,Tu(t))},Wn.without=sa,Wn.words=tc,Wn.wrap=function(t,r){return Ma(wo(r),t)},Wn.xor=la,Wn.xorBy=fa,Wn.xorWith=ha,Wn.zip=da,Wn.zipObject=function(t,r){return mo(t||[],r||[],ee)},Wn.zipObjectDeep=function(t,r){return mo(t||[],r||[],ro)},Wn.zipWith=pa,Wn.entries=Hu,Wn.entriesIn=Wu,Wn.extend=ku,Wn.extendWith=$u,lc(Wn,Wn),Wn.add=wc,Wn.attempt=rc,Wn.camelCase=Fu,Wn.capitalize=qu,Wn.ceil=xc,Wn.clamp=function(t,r,e){return e===n&&(e=r,r=n),e!==n&&(e=(e=mu(e))==e?e:0),r!==n&&(r=(r=mu(r))==r?r:0),se(mu(t),r,e)},Wn.clone=function(t){return le(t,4)},Wn.cloneDeep=function(t){return le(t,5)},Wn.cloneDeepWith=function(t,r){return le(t,5,r="function"==typeof r?r:n)},Wn.cloneWith=function(t,r){return le(t,4,r="function"==typeof r?r:n)},Wn.conformsTo=function(t,r){return null==r||fe(t,r,Uu(r))},Wn.deburr=Vu,Wn.defaultTo=function(t,r){return null==t||t!=t?r:t},Wn.divide=kc,Wn.endsWith=function(t,r,e){t=wu(t),r=fo(r);var o=t.length,i=e=e===n?o:se(bu(e),0,o);return(e-=r.length)>=0&&t.slice(e,i)==r},Wn.eq=Da,Wn.escape=function(t){return(t=wu(t))&&Y.test(t)?t.replace(G,en):t},Wn.escapeRegExp=function(t){return(t=wu(t))&&ot.test(t)?t.replace(et,"\\$&"):t},Wn.every=function(t,r,e){var o=Za(t)?Sr:ge;return e&&xi(t,r,e)&&(r=n),o(t,fi(r,3))},Wn.find=ma,Wn.findIndex=Vi,Wn.findKey=function(t,r){return Br(t,fi(r,3),xe)},Wn.findLast=ya,Wn.findLastIndex=Zi,Wn.findLastKey=function(t,r){return Br(t,fi(r,3),ke)},Wn.floor=$c,Wn.forEach=wa,Wn.forEachRight=xa,Wn.forIn=function(t,r){return null==t?t:ye(t,fi(r,3),Tu)},Wn.forInRight=function(t,r){return null==t?t:we(t,fi(r,3),Tu)},Wn.forOwn=function(t,r){return t&&xe(t,fi(r,3))},Wn.forOwnRight=function(t,r){return t&&ke(t,fi(r,3))},Wn.get=Cu,Wn.gt=Fa,Wn.gte=qa,Wn.has=function(t,r){return null!=t&&_i(t,r,Ce)},Wn.hasIn=Ou,Wn.head=Ki,Wn.identity=ac,Wn.includes=function(t,r,n,e){t=Ka(t)?t:Du(t),n=n&&!e?bu(n):0;var o=t.length;return n<0&&(n=yn(o+n,0)),lu(t)?n<=o&&t.indexOf(r,n)>-1:!!o&&Mr(t,r,n)>-1},Wn.indexOf=function(t,r,n){var e=null==t?0:t.length;if(!e)return-1;var o=null==n?0:bu(n);return o<0&&(o=yn(e+o,0)),Mr(t,r,o)},Wn.inRange=function(t,r,e){return r=gu(r),e===n?(e=r,r=0):e=gu(e),function(t,r,n){return t>=wn(r,n)&&t=-9007199254740991&&t<=d},Wn.isSet=su,Wn.isString=lu,Wn.isSymbol=fu,Wn.isTypedArray=hu,Wn.isUndefined=function(t){return t===n},Wn.isWeakMap=function(t){return ou(t)&&bi(t)==R},Wn.isWeakSet=function(t){return ou(t)&&"[object WeakSet]"==Ee(t)},Wn.join=function(t,r){return null==t?"":_n.call(t,r)},Wn.kebabCase=Zu,Wn.last=Xi,Wn.lastIndexOf=function(t,r,e){var o=null==t?0:t.length;if(!o)return-1;var i=o;return e!==n&&(i=(i=bu(e))<0?yn(o+i,0):wn(i,o-1)),r==r?function(t,r,n){for(var e=n+1;e--;)if(t[e]===r)return e;return e}(t,r,i):Nr(t,Wr,i,!0)},Wn.lowerCase=Gu,Wn.lowerFirst=Ku,Wn.lt=du,Wn.lte=pu,Wn.max=function(t){return t&&t.length?be(t,ac,Se):n},Wn.maxBy=function(t,r){return t&&t.length?be(t,fi(r,2),Se):n},Wn.mean=function(t){return Dr(t,ac)},Wn.meanBy=function(t,r){return Dr(t,fi(r,2))},Wn.min=function(t){return t&&t.length?be(t,ac,Me):n},Wn.minBy=function(t,r){return t&&t.length?be(t,fi(r,2),Me):n},Wn.stubArray=_c,Wn.stubFalse=mc,Wn.stubObject=function(){return{}},Wn.stubString=function(){return""},Wn.stubTrue=function(){return!0},Wn.multiply=Ac,Wn.nth=function(t,r){return t&&t.length?qe(t,bu(r)):n},Wn.noConflict=function(){return hr._===this&&(hr._=Ht),this},Wn.noop=fc,Wn.now=Ca,Wn.pad=function(t,r,n){t=wu(t);var e=(r=bu(r))?hn(t):0;if(!r||e>=r)return t;var o=(r-e)/2;return Zo(br(o),n)+t+Zo(gr(o),n)},Wn.padEnd=function(t,r,n){t=wu(t);var e=(r=bu(r))?hn(t):0;return r&&er){var o=t;t=r,r=o}if(e||t%1||r%1){var i=$n();return wn(t+i*(r-t+cr("1e-"+((i+"").length-1))),r)}return Ye(t,r)},Wn.reduce=function(t,r,n){var e=Za(t)?Ur:Vr,o=arguments.length<3;return e(t,fi(r,4),n,o,pe)},Wn.reduceRight=function(t,r,n){var e=Za(t)?Tr:Vr,o=arguments.length<3;return e(t,fi(r,4),n,o,ve)},Wn.repeat=function(t,r,e){return r=(e?xi(t,r,e):r===n)?1:bu(r),Je(wu(t),r)},Wn.replace=function(){var t=arguments,r=wu(t[0]);return t.length<3?r:r.replace(t[1],t[2])},Wn.result=function(t,r,e){var o=-1,i=(r=xo(r,t)).length;for(i||(i=1,t=n);++od)return[];var n=v,e=wn(t,v);r=fi(r),t-=v;for(var o=Gr(e,r);++n=a)return t;var c=e-hn(o);if(c<1)return o;var s=u?$o(u,0,c).join(""):t.slice(0,c);if(i===n)return s+o;if(u&&(c+=s.length-c),cu(i)){if(t.slice(c).search(i)){var l,f=s;for(i.global||(i=St(i.source,wu(pt.exec(i))+"g")),i.lastIndex=0;l=i.exec(f);)var h=l.index;s=s.slice(0,h===n?c:h)}}else if(t.indexOf(fo(i),c)!=c){var d=s.lastIndexOf(i);d>-1&&(s=s.slice(0,d))}return s+o},Wn.unescape=function(t){return(t=wu(t))&&K.test(t)?t.replace(Z,vn):t},Wn.uniqueId=function(t){var r=++Lt;return wu(t)+r},Wn.upperCase=Qu,Wn.upperFirst=Xu,Wn.each=wa,Wn.eachRight=xa,Wn.first=Ki,lc(Wn,(yc={},xe(Wn,(function(t,r){Pt.call(Wn.prototype,r)||(yc[r]=t)})),yc),{chain:!1}),Wn.VERSION="4.17.21",zr(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){Wn[t].placeholder=Wn})),zr(["drop","take"],(function(t,r){Vn.prototype[t]=function(e){e=e===n?1:yn(bu(e),0);var o=this.__filtered__&&!r?new Vn(this):this.clone();return o.__filtered__?o.__takeCount__=wn(e,o.__takeCount__):o.__views__.push({size:wn(e,v),type:t+(o.__dir__<0?"Right":"")}),o},Vn.prototype[t+"Right"]=function(r){return this.reverse()[t](r).reverse()}})),zr(["filter","map","takeWhile"],(function(t,r){var n=r+1,e=1==n||3==n;Vn.prototype[t]=function(t){var r=this.clone();return r.__iteratees__.push({iteratee:fi(t,3),type:n}),r.__filtered__=r.__filtered__||e,r}})),zr(["head","last"],(function(t,r){var n="take"+(r?"Right":"");Vn.prototype[t]=function(){return this[n](1).value()[0]}})),zr(["initial","tail"],(function(t,r){var n="drop"+(r?"":"Right");Vn.prototype[t]=function(){return this.__filtered__?new Vn(this):this[n](1)}})),Vn.prototype.compact=function(){return this.filter(ac)},Vn.prototype.find=function(t){return this.filter(t).head()},Vn.prototype.findLast=function(t){return this.reverse().find(t)},Vn.prototype.invokeMap=Qe((function(t,r){return"function"==typeof t?new Vn(this):this.map((function(n){return Re(n,t,r)}))})),Vn.prototype.reject=function(t){return this.filter(Ba(fi(t)))},Vn.prototype.slice=function(t,r){t=bu(t);var e=this;return e.__filtered__&&(t>0||r<0)?new Vn(e):(t<0?e=e.takeRight(-t):t&&(e=e.drop(t)),r!==n&&(e=(r=bu(r))<0?e.dropRight(-r):e.take(r-t)),e)},Vn.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},Vn.prototype.toArray=function(){return this.take(v)},xe(Vn.prototype,(function(t,r){var e=/^(?:filter|find|map|reject)|While$/.test(r),o=/^(?:head|last)$/.test(r),i=Wn[o?"take"+("last"==r?"Right":""):r],a=o||/^find/.test(r);i&&(Wn.prototype[r]=function(){var r=this.__wrapped__,u=o?[1]:arguments,c=r instanceof Vn,s=u[0],l=c||Za(r),f=function(t){var r=i.apply(Wn,Ir([t],u));return o&&h?r[0]:r};l&&e&&"function"==typeof s&&1!=s.length&&(c=l=!1);var h=this.__chain__,d=!!this.__actions__.length,p=a&&!h,v=c&&!d;if(!a&&l){r=v?r:new Vn(this);var g=t.apply(r,u);return g.__actions__.push({func:ga,args:[f],thisArg:n}),new qn(g,h)}return p&&v?t.apply(this,u):(g=this.thru(f),p?o?g.value()[0]:g.value():g)})})),zr(["pop","push","shift","sort","splice","unshift"],(function(t){var r=jt[t],n=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",e=/^(?:pop|shift)$/.test(t);Wn.prototype[t]=function(){var t=arguments;if(e&&!this.__chain__){var o=this.value();return r.apply(Za(o)?o:[],t)}return this[n]((function(n){return r.apply(Za(n)?n:[],t)}))}})),xe(Vn.prototype,(function(t,r){var n=Wn[r];if(n){var e=n.name+"";Pt.call(In,e)||(In[e]=[]),In[e].push({name:r,func:n})}})),In[Do(n,2).name]=[{name:"wrapper",func:n}],Vn.prototype.clone=function(){var t=new Vn(this.__wrapped__);return t.__actions__=Ro(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Ro(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Ro(this.__views__),t},Vn.prototype.reverse=function(){if(this.__filtered__){var t=new Vn(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},Vn.prototype.value=function(){var t=this.__wrapped__.value(),r=this.__dir__,n=Za(t),e=r<0,o=n?t.length:0,i=function(t,r,n){for(var e=-1,o=n.length;++e=this.__values__.length;return{done:t,value:t?n:this.__values__[this.__index__++]}},Wn.prototype.plant=function(t){for(var r,e=this;e instanceof Fn;){var o=Wi(e);o.__index__=0,o.__values__=n,r?i.__wrapped__=o:r=o;var i=o;e=e.__wrapped__}return i.__wrapped__=t,r},Wn.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof Vn){var r=t;return this.__actions__.length&&(r=new Vn(this)),(r=r.reverse()).__actions__.push({func:ga,args:[ea],thisArg:n}),new qn(r,this.__chain__)}return this.thru(ea)},Wn.prototype.toJSON=Wn.prototype.valueOf=Wn.prototype.value=function(){return bo(this.__wrapped__,this.__actions__)},Wn.prototype.first=Wn.prototype.head,rr&&(Wn.prototype[rr]=function(){return this}),Wn}();pr?((pr.exports=gn)._=gn,dr._=gn):hr._=gn}).call(a)},u(s={path:c,exports:{},require:function(t,r){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(r??s.path)}},s.exports),s.exports);e.i`/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + +html { + line-height: 1.15; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers. + */ + +body { + margin: 0; +} + +/** + * Render the \`main\` element consistently in IE. + */ + +main { + display: block; +} + +/** + * Correct the font size and margin on \`h1\` elements within \`section\` and + * \`article\` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd \`em\` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Remove the gray background on active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd \`em\` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent \`sub\` and \`sup\` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove the border on images inside links in IE 10. + */ + +img { + border-style: none; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { /* 1 */ + text-transform: none; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from \`fieldset\` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * \`fieldset\` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to \`inherit\` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ + +details { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ + +/** + * Add the correct display in IE 10+. + */ + +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ + +[hidden] { + display: none; +} + +:root { + --breakpoint-xs: 320px; + --breakpoint-s: 576px; + --breakpoint-m: 768px; + --breakpoint-l: 992px; + --breakpoint-xl: 1248px; + --container-width-xs: 288px; + --container-width-s: 544px; + --container-width-m: 720px; + --container-width-l: 944px; + --container-width-xl: 1200px; + --color-brick: #bd2719; + --color-brick-light: #ffeeed; + --color-brick-medium-light: #facbc8; + --color-brick-dark: #800e04; + --color-bus: #0000bf; + --color-bus-light: #f0f0ff; + --color-bus-medium-light: #ccccff; + --color-bus-dark: #00005e; + --color-coat-of-arms: #0072c6; + --color-coat-of-arms-light: #e6f4ff; + --color-coat-of-arms-medium-light: #b5daf7; + --color-coat-of-arms-dark: #005799; + --color-copper: #00d7a7; + --color-copper-light: #cffaf1; + --color-copper-medium-light: #9ef0de; + --color-copper-dark: #00a17d; + --color-engel: #ffe977; + --color-engel-light: #fff9db; + --color-engel-medium-light: #fff3b8; + --color-engel-dark: #dbc030; + --color-fog: #9fc9eb; + --color-fog-light: #e8f3fc; + --color-fog-medium-light: #d0e6f7; + --color-fog-dark: #72a5cf; + --color-gold: #c2a251; + --color-gold-light: #f7f2e4; + --color-gold-medium-light: #e8d7a7; + --color-gold-dark: #9e823c; + --color-metro: #fd4f00; + --color-metro-light: #ffeee6; + --color-metro-medium-light: #ffcab3; + --color-metro-dark: #bd2f00; + --color-silver: #dedfe1; + --color-silver-light: #f7f7f8; + --color-silver-medium-light: #efeff0; + --color-silver-dark: #b0b8bf; + --color-summer: #ffc61e; + --color-summer-light: #fff4d4; + --color-summer-medium-light: #ffe49c; + --color-summer-dark: #cc9200; + --color-suomenlinna: #f5a3c7; + --color-suomenlinna-light: #fff0f7; + --color-suomenlinna-medium-light: #ffdbeb; + --color-suomenlinna-dark: #e673a5; + --color-tram: #008741; + --color-tram-light: #dff7eb; + --color-tram-medium-light: #a3e3c2; + --color-tram-dark: #006631; + --color-black: #000000; + --color-white: #ffffff; + --color-black-5: #f2f2f2; + --color-black-10: #e6e6e6; + --color-black-20: #cccccc; + --color-black-30: #b3b3b3; + --color-black-40: #999999; + --color-black-50: #808080; + --color-black-60: #666666; + --color-black-70: #4d4d4d; + --color-black-80: #333333; + --color-black-90: #1a1a1a; + --color-error: #b01038; + --color-error-light: #f6e2e6; + --color-error-dark: #8d0d2d; + --color-success: #007a64; + --color-success-light: #e2f5f3; + --color-success-dark: #006250; + --color-alert: #ffda07; + --color-alert-light: #fff4b4; + --color-alert-dark: #d18200; + --color-info: #0062b9; + --color-info-light: #e5eff8; + --color-info-dark: #004f94; + --box-shadow-s: 0px 2px 10px 0px rgba(0, 0, 0, 0.07); + --box-shadow-m: 0px 2px 10px 0px rgba(0, 0, 0, 0.1); + --box-shadow-l: 0px 2px 20px 0px rgba(0, 0, 0, 0.2); + --spacing-layout-2-xs: 1rem; /* 16px */ + --spacing-layout-xs: 1.5rem; /* 24px */ + --spacing-layout-s: 2rem; /* 32px */ + --spacing-layout-m: 3rem; /* 48px */ + --spacing-layout-l: 4rem; /* 64px */ + --spacing-layout-xl: 6rem; /* 96px */ + --spacing-layout-2-xl: 8rem; /* 128px */ + --spacing-4-xs: 0.125rem; /* 2px */ + --spacing-3-xs: 0.25rem; /* 4px */ + --spacing-2-xs: 0.5rem; /* 8px */ + --spacing-xs: 0.75rem; /* 12px */ + --spacing-s: 1rem; /* 16px */ + --spacing-m: 1.5rem; /* 24px */ + --spacing-l: 2rem; /* 32px */ + --spacing-xl: 2.5rem; /* 40px */ + --spacing-2-xl: 3.0rem; /* 48px */ + --spacing-3-xl: 3.5rem; /* 56px */ + --spacing-4-xl: 4rem; /* 64px */ + --spacing-5-xl: 4.5rem; /* 72px */ + --fontsize-heading-xxl: 4rem; /* 64px */ + --fontsize-heading-xl: 3rem; /* 48px */ + --fontsize-heading-xl-mobile: 2.5rem; /* 40px */ + --fontsize-heading-l: 2rem; /* 32px */ + --fontsize-heading-m: 1.5rem; /* 24px */ + --fontsize-heading-s: 1.25rem; /* 20px */ + --fontsize-heading-xs: 1.125rem; /* 18px */ + --fontsize-heading-xxs: 1rem; /* 16px */ + --fontsize-body-s: 0.875rem; /* 14px */ + --fontsize-body-m: 1rem; /* 16px */ + --fontsize-body-l: 1.125rem; /* 18px */ + --fontsize-body-xl: 1.25rem; /* 20px */ + --font-default: HelsinkiGrotesk, Arial, sans-serif; + --lineheight-s: 1; + --lineheight-m: 1.2; + --lineheight-l: 1.5; + --lineheight-xl: 1.75; +} + +@keyframes fadeIn { + from { + opacity: 0; + } + to { + opacity: 1; + } +} + +.hiddenFromScreen { + border: 0; + clip: "rect(0 0 0 0)"; + height: 1px; + width: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + position: absolute; +} + +.button-reset { + background: none; + border: none; + color: inherit; + cursor: pointer; + font: inherit; + padding: 0; +} + +.text-body { + font-family: HelsinkiGrotesk, Arial, sans-serif; + font-family: var(--font-default); + font-size: 1rem; + font-size: var(--fontsize-body-m); + color: #1a1a1a; + color: var(--color-black-90); + line-height: 1.5; + line-height: var(--lineheight-l); +} + +.text-medium { + font-family: HelsinkiGrotesk, Arial, sans-serif; + font-family: var(--font-default); + font-weight: 500; +} + +.text-bold { + font-family: HelsinkiGrotesk, Arial, sans-serif; + font-family: var(--font-default); + font-weight: bold; +} + +.text-xl { + font-size: 1.5rem; + font-size: var(--fontsize-heading-m); +} + +.text-lg { + font-size: 1.25rem; + font-size: var(--fontsize-heading-s); +} + +.text-md { + font-size: 1.125rem; + font-size: var(--fontsize-heading-xs); +} + +.subtitle { + font-size: 1rem; + font-size: var(--fontsize-body-m); +} + +.text-sm { + font-size: 0.875rem; + font-size: var(--fontsize-body-s); + line-height: 1.75; + line-height: var(--lineheight-xl); +} + +/* HEADINGS */ + +.heading-xxl { + font-size: 4rem; + font-size: var(--fontsize-heading-xxl); + font-weight: 400; + line-height: 1; + line-height: var(--lineheight-s); + letter-spacing: -1.2px; +} + +.heading-xl { + font-size: 3rem; + font-size: var(--fontsize-heading-xl); + font-weight: 400; + line-height: 1; + line-height: var(--lineheight-s); + letter-spacing: -1.0px; +} + +.heading-xl-mobile { + font-size: 2.5rem; + font-size: var(--fontsize-heading-xl-mobile); + font-weight: 400; + line-height: 1; + line-height: var(--lineheight-s); + letter-spacing: -0.8px; +} + +.heading-l { + font-size: 2rem; + font-size: var(--fontsize-heading-l); + font-weight: 400; + line-height: 1; + line-height: var(--lineheight-s); + letter-spacing: -0.4px; +} + +.heading-m { + font-size: 1.5rem; + font-size: var(--fontsize-heading-m); + font-weight: 500; + line-height: 32px; + letter-spacing: -0.2px; +} + +.heading-s { + font-size: 1.25rem; + font-size: var(--fontsize-heading-s); + font-weight: 500; + line-height: 1.4; + letter-spacing: 0.2px; +} + +.heading-xs { + font-size: 1.125rem; + font-size: var(--fontsize-heading-xs); + font-weight: 700; + line-height: 1.33; + letter-spacing: 0.4px; +} + +.heading-xxs { + font-size: 1rem; + font-size: var(--fontsize-heading-xxs); + font-weight: 700; + line-height: 1.5; + line-height: var(--lineheight-l); + letter-spacing: 0.4px; +} +`;const f=e.i`.hds-button { + --border-width: 2px; + --color: inherit; + --min-size: 44px; + --outline-gutter: 2px; + --outline-width: 3px; + + align-content: flex-start; + align-items: center; + background-color: transparent; + background-color: var(--background-color, transparent); + border: var(--border-width) solid transparent; + border: var(--border-width) solid var(--border-color, transparent); + border-radius: 0; + color: var(--color); + cursor: pointer; + display: inline-flex; + font-weight: 500; + justify-content: center; + min-height: var(--min-size); + min-width: var(--min-size); + padding: 0 var(--spacing-2-xs); + position: relative; + vertical-align: top; +}.hds-button, +.hds-button::before, +.hds-button::after, +.hds-button *, +.hds-button *::before, +.hds-button *::after { + box-sizing: border-box; +}/* button transitions */.hds-button:hover, +.hds-button.focus-visible { + transition-property: background-color, border-color, color; + transition-duration: 85ms; + transition-timing-function: ease-out; +}.hds-button:hover, +.hds-button:focus-visible { + transition-property: background-color, border-color, color; + transition-duration: 85ms; + transition-timing-function: ease-out; +}.hds-button:hover { + background-color: transparent; + background-color: var(--background-color-hover, transparent); + color: var(--color-hover); +}.hds-button.focus-visible { + background-color: transparent; + background-color: var(--background-color-focus, transparent); + color: var(--color-focus); + outline: none; +}.hds-button:focus-visible { + background-color: transparent; + background-color: var(--background-color-focus, transparent); + color: var(--color-focus); + outline: none; +}.hds-button:active { + background-color: transparent; + background-color: var(--background-color-focus, transparent); + color: var(--color-focus); + outline: none; +}.hds-button.focus-visible:hover { + background-color: transparent; + background-color: var(--background-color-hover-focus, transparent); +}.hds-button:focus-visible:hover { + background-color: transparent; + background-color: var(--background-color-hover-focus, transparent); +}.hds-button:active:hover { + background-color: transparent; + background-color: var(--background-color-hover-focus, transparent); +}.hds-button:disabled { + background-color: transparent; + background-color: var(--background-color-disabled, transparent); + border-color: transparent; + border-color: var(--border-color-disabled, transparent); + color: var(--color-disabled); + cursor: not-allowed; +}.hds-button:not(:disabled) { + border-color: transparent; + border-color: var(--border-color, transparent); +}.hds-button:not(:disabled):hover { + border-color: transparent; + border-color: var(--border-color-hover, transparent); +}.hds-button:not(:disabled).focus-visible { + border-color: transparent; + border-color: var(--border-color-focus, transparent); +}.hds-button:not(:disabled):focus-visible { + border-color: transparent; + border-color: var(--border-color-focus, transparent); +}.hds-button:not(:disabled):active { + border-color: transparent; + border-color: var(--border-color-focus, transparent); +}.hds-button:not(:disabled).focus-visible:hover { + border-color: transparent; + border-color: var(--border-color-hover-focus, transparent); + color: var(--color-hover-focus); +}.hds-button:not(:disabled):focus-visible:hover { + border-color: transparent; + border-color: var(--border-color-hover-focus, transparent); + color: var(--color-hover-focus); +}.hds-button:not(:disabled):active:hover { + border-color: transparent; + border-color: var(--border-color-hover-focus, transparent); + color: var(--color-hover-focus); +}/* FOCUS OUTLINE */.hds-button::after { + --size: 100%; + + border: var(--outline-width) solid transparent; + content: ''; + height: var(--size); + position: absolute; + width: var(--size); +}.hds-button.focus-visible::after { + --size: calc(100% + calc(var(--outline-width) * 2 + var(--border-width) * 2 + var(--outline-gutter) * 2)); + border-color: var(--focus-outline-color); +}.hds-button:focus-visible::after { + --size: calc(100% + calc(var(--outline-width) * 2 + var(--border-width) * 2 + var(--outline-gutter) * 2)); + border-color: var(--focus-outline-color); +}.hds-button:active::after { + --size: calc(100% + calc(var(--outline-width) * 2 + var(--border-width) * 2 + var(--outline-gutter) * 2)); + border-color: var(--focus-outline-color); +}/* submit input */input[type="submit"].hds-button.focus-visible { + box-shadow: 0 0 0 var(--outline-gutter) var(--submit-input-focus-gutter-color), 0 0 0 calc(var(--outline-gutter) + var(--outline-width)) var(--focus-outline-color); +}input[type="submit"].hds-button:focus-visible { + box-shadow: 0 0 0 var(--outline-gutter) var(--submit-input-focus-gutter-color), 0 0 0 calc(var(--outline-gutter) + var(--outline-width)) var(--focus-outline-color); +}/* LABEL */input[type="submit"].hds-button, +.hds-button__label { + font-weight: inherit; + line-height: 1.25em; + padding: var(--spacing-s); +}input[type="submit"].hds-button { + cursor: pointer; + padding: var(--spacing-s) var(--spacing-l); +}/* no icons */.hds-button__label:only-child { + margin: 0 var(--spacing-2-xs); +}/* supplementary with right icon */.hds-button--supplementary .hds-button__label:first-child { + padding-right: var(--spacing-2-xs); +}/* supplementary with left icon */.hds-button--supplementary .hds-icon + .hds-button__label:last-child { + padding-left: var(--spacing-2-xs); +}/* supplementary with both icons */.hds-button--supplementary .hds-icon + .hds-button__label:not(:last-child) { + padding-left: var(--spacing-2-xs); + padding-right: var(--spacing-2-xs); +}/* SMALL */.hds-button--small { + padding: 0; +}input[type="submit"].hds-button--small, +.hds-button--small .hds-button__label { + line-height: var(--lineheight-s); + padding: var(--spacing-2-xs) var(--spacing-xs); +}input[type="submit"].hds-button--small { + padding: var(--spacing-2-xs) var(--spacing-m); +}/* no icons */.hds-button--small .hds-button__label:only-child { + margin: 0 var(--spacing-xs); +}/* both icons */.hds-button--small .hds-button__label:not(:first-of-type):not(:last-of-type) { + padding: var(--spacing-2-xs) var(--spacing-2-xs); +}/* FULL WIDTH */.hds-button--fullwidth { + width: 100%; +}/* ICONS *//* left */.hds-button .hds-icon { + height: var(--spacing-m); + margin-left: var(--spacing-s); + width: var(--spacing-m); +}/* right */.hds-button__label ~ .hds-icon { + margin: 0 var(--spacing-s) 0 0; +}/* left - small */.hds-button--small .hds-icon { + margin-left: var(--spacing-2-xs); +}/* right - small */.hds-button .hds-button--small .hds-button__label ~ .hds-icon { + margin: 0 var(--spacing-2-xs) 0 0; +}/* both icons - left */.hds-button .hds-icon:first-of-type:not(:last-of-type) { + margin: 0 0 0 var(--spacing-2-xs); +}/* both icons - right */.hds-button .hds-icon:last-of-type:not(:first-of-type) { + margin: 0 var(--spacing-2-xs) 0 0; +}/* both icons - left - small */.hds-button--small .hds-icon:first-child:not(:last-of-type) { + margin: 0 0 0 var(--spacing-2-xs); +}/* both icons - right - small */.hds-button--small .hds-icon:last-child:not(:first-of-type) { + margin: 0 var(--spacing-2-xs) 0 0; +}/* PRIMARY *//* default (bus) */.hds-button--primary { + --background-color: var(--color-bus); + --background-color-hover: var(--color-bus-dark); + --background-color-focus: var(--color-bus); + --background-color-hover-focus: var(--color-bus-dark); + --background-color-disabled: var(--color-black-20); + + --border-color: var(--color-bus); + --border-color-hover: var(--color-bus-dark); + --border-color-focus: var(--color-bus); + --border-color-hover-focus: var(--color-bus-dark); + --border-color-disabled: var(--color-black-20); + + --color: var(--color-white); + --color-hover: var(--color-white); + --color-focus: var(--color-white); + --color-hover-focus: var(--color-white); + --color-disabled: var(--color-white); + + --focus-outline-color: var(--color-coat-of-arms); + --submit-input-focus-gutter-color: var(--color-white); +}/* SECONDARY *//* default (bus) */.hds-button--secondary { + --background-color: transparent; + --background-color-hover: var(--color-bus-light); + --background-color-focus: transparent; + --background-color-hover-focus: var(--color-bus-light); + --background-color-disabled: transparent; + + --border-color: var(--color-bus); + --border-color-hover: var(--color-bus-dark); + --border-color-focus: var(--color-bus); + --border-color-hover-focus: var(--color-bus-dark); + --border-color-disabled: var(--color-black-50); + + --color: var(--color-bus); + --color-hover: var(--color-bus-dark); + --color-focus: var(--color-bus); + --color-hover-focus: var(--color-bus-dark); + --color-disabled: var(--color-black-40); + + --focus-outline-color: var(--color-coat-of-arms); + --submit-input-focus-gutter-color: var(--color-white); +}/* SUPPLEMENTARY */.hds-button--supplementary { + --background-color: transparent; + --background-color-hover: var(--color-bus-light); + --background-color-focus: transparent; + --background-color-hover-focus: var(--color-bus-light); + --background-color-disabled: transparent; + + --border-color: transparent; + --border-color-hover: transparent; + --border-color-focus: var(--color-coat-of-arms); + --border-color-hover-focus: var(--color-coat-of-arms); + --border-color-disabled: transparent; + + --color: var(--color-bus); + --color-hover: var(--color-bus-dark); + --color-focus: var(--color-bus); + --color-hover-focus: var(--color-bus-dark); + --color-disabled: var(--color-black-40); + + --focus-outline-color: transparent; + --submit-input-focus-gutter-color: transparent; +}/* LOADING */.hds-button--loading { + --background-color: transparent; + --background-color-hover: transparent; + --background-color-focus: transparent; + --background-color-hover-focus: transparent; + --background-color-disabled: transparent; + + --border-color: transparent; + --border-color-hover: transparent; + --border-color-focus: transparent; + --border-color-hover-focus: transparent; + --border-color-disabled: transparent; + + --color: var(--color-black-90); + --color-hover: var(--color-black-90); + --color-focus: var(--color-black-90); + --color-hover-focus: var(--color-black-90); + --color-disabled: var(--color-black-90); + + cursor: wait; +}/* UTILITY *//* success */.hds-button--success { + --background-color: var(--color-success); + --background-color-hover: var(--color-success-dark); + --background-color-focus: var(--color-success); + --background-color-hover-focus: var(--color-success-dark); + + --border-color: var(--color-success); + --border-color-hover: var(--color-success-dark); + --border-color-focus: var(--color-success); + --border-color-hover-focus: var(--color-success-dark); + + --color: var(--color-white); + --color-hover: var(--color-white); + --color-focus: var(--color-white); + --color-hover-focus: var(--color-white); + + --focus-outline-color: var(--color-coat-of-arms); +}/* danger */.hds-button--danger { + --background-color: var(--color-error); + --background-color-hover: var(--color-error-dark); + --background-color-focus: var(--color-error); + --background-color-hover-focus: var(--color-error-dark); + + --border-color: var(--color-error); + --border-color-hover: var(--color-error-dark); + --border-color-focus: var(--color-error); + --border-color-hover-focus: var(--color-error-dark); + + --color: var(--color-white); + --color-hover: var(--color-white); + --color-focus: var(--color-white); + --color-hover-focus: var(--color-white); + + --focus-outline-color: var(--color-coat-of-arms); +}/* THEMES *//* coat */.hds-button--primary.hds-button--theme-coat { + --background-color: var(--color-coat-of-arms); + --background-color-hover: var(--color-coat-of-arms-dark); + --background-color-focus: var(--color-coat-of-arms); + --background-color-hover-focus: var(--color-coat-of-arms-dark); + + --border-color: var(--color-coat-of-arms); + --border-color-hover: var(--color-coat-of-arms-dark); + --border-color-focus: var(--color-coat-of-arms); + --border-color-hover-focus: var(--color-coat-of-arms-dark); + + --color: var(--color-white); + --color-hover: var(--color-white); + --color-focus: var(--color-white); + --color-hover-focus: var(--color-white); +}.hds-button--secondary.hds-button--theme-coat { + --background-color: transparent; + --background-color-hover: var(--color-coat-of-arms-light); + --background-color-focus: transparent; + --background-color-hover-focus: var(--color-coat-of-arms-light); + + --border-color: var(--color-coat-of-arms); + --border-color-hover: var(--color-coat-of-arms-dark); + --border-color-focus: var(--color-coat-of-arms); + --border-color-hover-focus: var(--color-coat-of-arms-dark); + + --color: var(--color-coat-of-arms); + --color-hover: var(--color-coat-of-arms); + --color-focus: var(--color-coat-of-arms); + --color-hover-focus: var(--color-coat-of-arms); +}.hds-button--supplementary.hds-button--theme-coat { + --background-color: transparent; + --background-color-hover: var(--color-coat-of-arms-light); + --background-color-focus: transparent; + --background-color-hover-focus: var(--color-coat-of-arms-light); + + --border-color: transparent; + --border-color-hover: transparent; + --border-color-focus: var(--color-coat-of-arms); + --border-color-hover-focus: var(--color-coat-of-arms); + + --color: var(--color-coat-of-arms); + --color-hover: var(--color-coat-of-arms); + --color-focus: var(--color-coat-of-arms); + --color-hover-focus: var(--color-coat-of-arms); +}/* black */.hds-button--primary.hds-button--theme-black { + --background-color: var(--color-black); + --background-color-hover: var(--color-black); + --background-color-focus: var(--color-black); + --background-color-hover-focus: var(--color-black); + + --border-color: var(--color-black); + --border-color-hover: var(--color-black); + --border-color-focus: var(--color-black); + --border-color-hover-focus: var(--color-black); + + --color: var(--color-white); + --color-hover: var(--color-white); + --color-focus: var(--color-white); + --color-hover-focus: var(--color-white); +}.hds-button--secondary.hds-button--theme-black { + --background-color: transparent; + --background-color-hover: var(--color-black-5); + --background-color-focus: transparent; + --background-color-hover-focus: var(--color-black-5); + + --border-color: var(--color-black); + --border-color-hover: var(--color-black); + --border-color-focus: var(--color-black); + --border-color-hover-focus: var(--color-black); + + --color: var(--color-black); + --color-hover: var(--color-black); + --color-focus: var(--color-black); + --color-hover-focus: var(--color-black); +}.hds-button--supplementary.hds-button--theme-black { + --background-color: transparent; + --background-color-hover: var(--color-black-5); + --background-color-focus: transparent; + --background-color-hover-focus: var(--color-black-5); + + --border-color: transparent; + --border-color-hover: transparent; + --border-color-focus: var(--color-coat-of-arms); + --border-color-hover-focus: var(--color-coat-of-arms-dark); + + --color: var(--color-black); + --color-hover: var(--color-black); + --color-focus: var(--color-black); + --color-hover-focus: var(--color-black); +} + +:host { + display: block; + --background-color: var(--color-white); + --border-color: var(--color-black-60); + --header-font-color: var(--color-black-90); + --header-focus-outline-color: var(--color-coat-of-arms); + --content-font-color: var(--color-black-90); + --content-font-size: var(--fontsize-body-m); + --content-line-height: var(--lineheight-l); + border-bottom: 1px solid var(--border-color, currentColor); +} + +:host(:not(.card)) { + border-bottom: 1px solid var(--border-color, currentColor); +} + +:host(.card) { + background-color: var(--background-color); + padding-left: var(--padding-horizontal); + padding-right: var(--padding-horizontal); +} + +:host(.border) { + border: 2px solid var(--border-color); +} + +:host(.s) { + --header-font-size: var(--fontsize-heading-s); + --padding-vertical: var(--spacing-s); + --header-font-weight: 700; + --header-letter-spacing: 0.2px; + --header-line-height: 1.4; + --button-size: 28px; + --padding-horizontal: var(--spacing-2-xs); +} + +:host(.m) { + --header-font-size: var(--fontsize-heading-m); + --padding-vertical: var(--spacing-m); + --header-font-weight: 500; + --header-letter-spacing: -0.2px; + --header-line-height: 32px; + --button-size: 36px; + --padding-horizontal: var(--spacing-m); +} + +:host(.m) .closeButton div { + margin-right: 6px; +} + +:host(.l) { + --header-font-size: var(--fontsize-heading-l); + --padding-vertical: var(--spacing-l); + --header-font-weight: 400; + --header-letter-spacing: -0.4px; + --header-line-height: var(--lineheight-s); + --button-size: 52px; + --padding-horizontal: var(--spacing-l); +} + +.accordionHeader { + position: relative; + color: var(--header-font-color); + font-size: var(--header-font-size); + letter-spacing: var(--header-letter-spacing); + font-weight: var(--header-font-weight); + line-height: var(--header-line-height); + padding-top: var(--padding-vertical); + padding-bottom: var(--padding-vertical); + display: flex; + justify-content: space-between; + align-items: center; +} + +.accordionHeader > div { + flex: 1 1 auto; +} + +.accordionHeaderIconWrapper { + align-items: center; + display: flex; + justify-content: center; + line-height: 1; +} + +.accordionContent { + position: relative; + font-size: var(--content-font-size); + line-height: var(--content-line-height); + padding-bottom: var(--spacing-m); + color: var(--content-font-color); +} + +.closeButton { + + position: absolute; + bottom: 0; + right: 0; +} + +.contentWithCloseButton { + padding-bottom: 44px; +} + +.headingContainer { + cursor: pointer; + width: 100%; + display: grid; + grid-template-columns: auto calc(var(--button-size)); + box-sizing: border-box; + align-items: center; +} + +.headingContainer:focus { + outline: 2px solid var(--header-focus-outline-color, transparent); +} +`,h={fromAttribute:t=>"true"===t,toAttribute:t=>l.toString(t)};let d=class extends e.s{constructor(){super(...arguments),this.card=!1,this.border=!1,this.language="fi",this.headingLevel=2,this.isOpen=!1,this.closeButton=!0,this.toggleOpen=()=>{this.isOpen=!this.isOpen},this.hasCloseButton=()=>!!this.closeButton}static get properties(){return{id:{type:String},card:{type:Boolean,converter:h},border:{type:Boolean,converter:h},children:{type:HTMLCollection},language:{type:String},heading:{type:String},headingLevel:{type:Number},isOpen:{type:Boolean,converter:h},closeButton:{type:Boolean,converter:h},closeButtonClassName:{type:String},size:{type:String}}}get identifiers(){this.identifierPrefix||(this.identifierPrefix=this.id||l.uniqueId("accordion-"));return{heading:`${this.identifierPrefix}-heading`,content:`${this.identifierPrefix}-content`,closeButton:`${this.identifierPrefix}-closeButton`}}willUpdate(t){const r=this.card&&"card",n=this.card&&this.border&&"border",o=this.isOpen&&"isOpen";return this.className=(0,e.c)("accordion",r,n,o,this.size),super.willUpdate(t)}render(){return e.y` +
+
+ +
{"Enter"!==t.key&&" "!==t.key||this.toggleOpen()}} + @click=${this.toggleOpen}> + ${this.heading} +
+ +
+
+
+
+ +
+ + ${this.renderCloseButton()} +
+ + `}renderCloseButton(){if(!this.hasCloseButton)return"";const t={en:"Close",fi:"Sulje",sv:"Stäng"}[this.language];const r=(0,e.c)(t,this.heading),n=(0,e.c)("hds-button","hds-button--supplementary","hds-button--theme-black","closeButton",this.closeButtonClassName);return e.y` + + `}};d.styles=[e.i` + ${f} + `],d=(0,e._)([(0,e.e)("hds-accordion")],d)},9907:function(t,r,n){function e(t,r,n,e){var o,i=arguments.length,a=i<3?r:null===e?e=Object.getOwnPropertyDescriptor(r,n):e;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,r,n,e);else for(var u=t.length-1;u>=0;u--)(o=t[u])&&(a=(i<3?o(a):i>3?o(r,n,a):o(r,n))||a);return i>3&&a&&Object.defineProperty(r,n,a),a}n.d(r,{_:function(){return e},c:function(){return ut},e:function(){return it},i:function(){return s},s:function(){return et},x:function(){return N},y:function(){return B}});const o=window,i=o.ShadowRoot&&(void 0===o.ShadyCSS||o.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,a=Symbol(),u=new WeakMap;class c{constructor(t,r,n){if(this._$cssResult$=!0,n!==a)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=r}get styleSheet(){let t=this.o;const r=this.t;if(i&&void 0===t){const n=void 0!==r&&1===r.length;n&&(t=u.get(r)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),n&&u.set(r,t))}return t}toString(){return this.cssText}}const s=function(t){for(var r=arguments.length,n=new Array(r>1?r-1:0),e=1;er+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(n)+t[e+1]),t[0]);return new c(o,t,a)},l=i?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let r="";for(const n of t.cssRules)r+=n.cssText;return(t=>new c("string"==typeof t?t:t+"",void 0,a))(r)})(t):t;var f;const h=window,d=h.trustedTypes,p=d?d.emptyScript:"",v=h.reactiveElementPolyfillSupport,g={toAttribute(t,r){switch(r){case Boolean:t=t?p:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,r){let n=t;switch(r){case Boolean:n=null!==t;break;case Number:n=null===t?null:Number(t);break;case Object:case Array:try{n=JSON.parse(t)}catch(t){n=null}}return n}},b=(t,r)=>r!==t&&(r==r||t==t),_={attribute:!0,type:String,converter:g,reflect:!1,hasChanged:b};class m extends HTMLElement{constructor(){super(),this._$Ei=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$El=null,this.u()}static addInitializer(t){var r;this.finalize(),(null!==(r=this.h)&&void 0!==r?r:this.h=[]).push(t)}static get observedAttributes(){this.finalize();const t=[];return this.elementProperties.forEach(((r,n)=>{const e=this._$Ep(n,r);void 0!==e&&(this._$Ev.set(e,n),t.push(e))})),t}static createProperty(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:_;if(r.state&&(r.attribute=!1),this.finalize(),this.elementProperties.set(t,r),!r.noAccessor&&!this.prototype.hasOwnProperty(t)){const n="symbol"==typeof t?Symbol():"__"+t,e=this.getPropertyDescriptor(t,n,r);void 0!==e&&Object.defineProperty(this.prototype,t,e)}}static getPropertyDescriptor(t,r,n){return{get(){return this[r]},set(e){const o=this[t];this[r]=e,this.requestUpdate(t,o,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)||_}static finalize(){if(this.hasOwnProperty("finalized"))return!1;this.finalized=!0;const t=Object.getPrototypeOf(this);if(t.finalize(),void 0!==t.h&&(this.h=[...t.h]),this.elementProperties=new Map(t.elementProperties),this._$Ev=new Map,this.hasOwnProperty("properties")){const t=this.properties,r=[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)];for(const n of r)this.createProperty(n,t[n])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(t){const r=[];if(Array.isArray(t)){const n=new Set(t.flat(1/0).reverse());for(const t of n)r.unshift(l(t))}else void 0!==t&&r.push(l(t));return r}static _$Ep(t,r){const n=r.attribute;return!1===n?void 0:"string"==typeof n?n:"string"==typeof t?t.toLowerCase():void 0}u(){var t;this._$E_=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$Eg(),this.requestUpdate(),null===(t=this.constructor.h)||void 0===t||t.forEach((t=>t(this)))}addController(t){var r,n;(null!==(r=this._$ES)&&void 0!==r?r:this._$ES=[]).push(t),void 0!==this.renderRoot&&this.isConnected&&(null===(n=t.hostConnected)||void 0===n||n.call(t))}removeController(t){var r;null===(r=this._$ES)||void 0===r||r.splice(this._$ES.indexOf(t)>>>0,1)}_$Eg(){this.constructor.elementProperties.forEach(((t,r)=>{this.hasOwnProperty(r)&&(this._$Ei.set(r,this[r]),delete this[r])}))}createRenderRoot(){var t;const r=null!==(t=this.shadowRoot)&&void 0!==t?t:this.attachShadow(this.constructor.shadowRootOptions);return((t,r)=>{i?t.adoptedStyleSheets=r.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet)):r.forEach((r=>{const n=document.createElement("style"),e=o.litNonce;void 0!==e&&n.setAttribute("nonce",e),n.textContent=r.cssText,t.appendChild(n)}))})(r,this.constructor.elementStyles),r}connectedCallback(){var t;void 0===this.renderRoot&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var r;return null===(r=t.hostConnected)||void 0===r?void 0:r.call(t)}))}enableUpdating(t){}disconnectedCallback(){var t;null===(t=this._$ES)||void 0===t||t.forEach((t=>{var r;return null===(r=t.hostDisconnected)||void 0===r?void 0:r.call(t)}))}attributeChangedCallback(t,r,n){this._$AK(t,n)}_$EO(t,r){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:_;var e;const o=this.constructor._$Ep(t,n);if(void 0!==o&&!0===n.reflect){const i=(void 0!==(null===(e=n.converter)||void 0===e?void 0:e.toAttribute)?n.converter:g).toAttribute(r,n.type);this._$El=t,null==i?this.removeAttribute(o):this.setAttribute(o,i),this._$El=null}}_$AK(t,r){var n;const e=this.constructor,o=e._$Ev.get(t);if(void 0!==o&&this._$El!==o){const t=e.getPropertyOptions(o),i="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==(null===(n=t.converter)||void 0===n?void 0:n.fromAttribute)?t.converter:g;this._$El=o,this[o]=i.fromAttribute(r,t.type),this._$El=null}}requestUpdate(t,r,n){let e=!0;void 0!==t&&(((n=n||this.constructor.getPropertyOptions(t)).hasChanged||b)(this[t],r)?(this._$AL.has(t)||this._$AL.set(t,r),!0===n.reflect&&this._$El!==t&&(void 0===this._$EC&&(this._$EC=new Map),this._$EC.set(t,n))):e=!1),!this.isUpdatePending&&e&&(this._$E_=this._$Ej())}async _$Ej(){this.isUpdatePending=!0;try{await this._$E_}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;this.hasUpdated,this._$Ei&&(this._$Ei.forEach(((t,r)=>this[r]=t)),this._$Ei=void 0);let r=!1;const n=this._$AL;try{r=this.shouldUpdate(n),r?(this.willUpdate(n),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var r;return null===(r=t.hostUpdate)||void 0===r?void 0:r.call(t)})),this.update(n)):this._$Ek()}catch(t){throw r=!1,this._$Ek(),t}r&&this._$AE(n)}willUpdate(t){}_$AE(t){var r;null===(r=this._$ES)||void 0===r||r.forEach((t=>{var r;return null===(r=t.hostUpdated)||void 0===r?void 0:r.call(t)})),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$Ek(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$E_}shouldUpdate(t){return!0}update(t){void 0!==this._$EC&&(this._$EC.forEach(((t,r)=>this._$EO(r,this[r],t))),this._$EC=void 0),this._$Ek()}updated(t){}firstUpdated(t){}}var y;m.finalized=!0,m.elementProperties=new Map,m.elementStyles=[],m.shadowRootOptions={mode:"open"},null==v||v({ReactiveElement:m}),(null!==(f=h.reactiveElementVersions)&&void 0!==f?f:h.reactiveElementVersions=[]).push("1.6.1");const w=window,x=w.trustedTypes,k=x?x.createPolicy("lit-html",{createHTML:t=>t}):void 0,$=`lit$${(Math.random()+"").slice(9)}$`,A="?"+$,z=`<${A}>`,E=document,S=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return E.createComment(t)},C=t=>null===t||"object"!=typeof t&&"function"!=typeof t,O=Array.isArray,j=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,R=/-->/g,I=/>/g,U=RegExp(">|[ \t\n\f\r](?:([^\\s\"'>=/]+)([ \t\n\f\r]*=[ \t\n\f\r]*(?:[^ \t\n\f\r\"'`<>=]|(\"|')|))|$)","g"),T=/'/g,P=/"/g,L=/^(?:script|style|textarea|title)$/i,B=(t=>function(r){for(var n=arguments.length,e=new Array(n>1?n-1:0),o=1;o{const n=t.length-1,e=[];let o,i=2===r?"":"",a=j;for(let r=0;r"===c[0]?(a=null!=o?o:j,s=-1):void 0===c[1]?s=-2:(s=a.lastIndex-c[2].length,u=c[1],a=void 0===c[3]?U:'"'===c[3]?P:T):a===P||a===T?a=U:a===R||a===I?a=j:(a=U,o=void 0);const f=a===U&&t[r+1].startsWith("/>")?" ":"";i+=a===j?n+z:s>=0?(e.push(u),n.slice(0,s)+"$lit$"+n.slice(s)+$+f):n+$+(-2===s?(e.push(void 0),r):f)}const u=i+(t[n]||"")+(2===r?"":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[void 0!==k?k.createHTML(u):u,e]};class F{constructor(t,r){let n,{strings:e,_$litType$:o}=t;this.parts=[];let i=0,a=0;const u=e.length-1,c=this.parts,[s,l]=D(e,o);if(this.el=F.createElement(s,r),W.currentNode=this.el.content,2===o){const t=this.el.content,r=t.firstChild;r.remove(),t.append(...r.childNodes)}for(;null!==(n=W.nextNode())&&c.length0){n.textContent=x?x.emptyScript:"";for(let e=0;e2&&void 0!==arguments[2]?arguments[2]:t,e=arguments.length>3?arguments[3]:void 0;var o,i,a,u;if(r===N)return r;let c=void 0!==e?null===(o=n._$Co)||void 0===o?void 0:o[e]:n._$Cl;const s=C(r)?void 0:r._$litDirective$;return(null==c?void 0:c.constructor)!==s&&(null===(i=null==c?void 0:c._$AO)||void 0===i||i.call(c,!1),void 0===s?c=void 0:(c=new s(t),c._$AT(t,n,e)),void 0!==e?(null!==(a=(u=n)._$Co)&&void 0!==a?a:u._$Co=[])[e]=c:n._$Cl=c),void 0!==c&&(r=q(t,c._$AS(t,r.values),c,e)),r}class V{constructor(t,r){this.u=[],this._$AN=void 0,this._$AD=t,this._$AM=r}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}v(t){var r;const{el:{content:n},parts:e}=this._$AD,o=(null!==(r=null==t?void 0:t.creationScope)&&void 0!==r?r:E).importNode(n,!0);W.currentNode=o;let i=W.nextNode(),a=0,u=0,c=e[0];for(;void 0!==c;){if(a===c.index){let r;2===c.type?r=new Z(i,i.nextSibling,this,t):1===c.type?r=new c.ctor(i,c.name,c.strings,this,t):6===c.type&&(r=new X(i,this,t)),this.u.push(r),c=e[++u]}a!==(null==c?void 0:c.index)&&(i=W.nextNode(),a++)}return o}p(t){let r=0;for(const n of this.u)void 0!==n&&(void 0!==n.strings?(n._$AI(t,n,r),r+=n.strings.length-2):n._$AI(t[r])),r++}}class Z{constructor(t,r,n,e){var o;this.type=2,this._$AH=M,this._$AN=void 0,this._$AA=t,this._$AB=r,this._$AM=n,this.options=e,this._$Cm=null===(o=null==e?void 0:e.isConnected)||void 0===o||o}get _$AU(){var t,r;return null!==(r=null===(t=this._$AM)||void 0===t?void 0:t._$AU)&&void 0!==r?r:this._$Cm}get parentNode(){let t=this._$AA.parentNode;const r=this._$AM;return void 0!==r&&11===t.nodeType&&(t=r.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t){t=q(this,t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:this),C(t)?t===M||null==t||""===t?(this._$AH!==M&&this._$AR(),this._$AH=M):t!==this._$AH&&t!==N&&this.g(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):(t=>O(t)||"function"==typeof(null==t?void 0:t[Symbol.iterator]))(t)?this.k(t):this.g(t)}O(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._$AB;return this._$AA.parentNode.insertBefore(t,r)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}g(t){this._$AH!==M&&C(this._$AH)?this._$AA.nextSibling.data=t:this.T(E.createTextNode(t)),this._$AH=t}$(t){var r;const{values:n,_$litType$:e}=t,o="number"==typeof e?this._$AC(t):(void 0===e.el&&(e.el=F.createElement(e.h,this.options)),e);if((null===(r=this._$AH)||void 0===r?void 0:r._$AD)===o)this._$AH.p(n);else{const t=new V(o,this),r=t.v(this.options);t.p(n),this.T(r),this._$AH=t}}_$AC(t){let r=H.get(t.strings);return void 0===r&&H.set(t.strings,r=new F(t)),r}k(t){O(this._$AH)||(this._$AH=[],this._$AR());const r=this._$AH;let n,e=0;for(const o of t)e===r.length?r.push(n=new Z(this.O(S()),this.O(S()),this,this.options)):n=r[e],n._$AI(o),e++;e0&&void 0!==arguments[0]?arguments[0]:this._$AA.nextSibling,r=arguments.length>1?arguments[1]:void 0;var n;for(null===(n=this._$AP)||void 0===n||n.call(this,!1,!0,r);t&&t!==this._$AB;){const r=t.nextSibling;t.remove(),t=r}}setConnected(t){var r;void 0===this._$AM&&(this._$Cm=t,null===(r=this._$AP)||void 0===r||r.call(this,t))}}class G{constructor(t,r,n,e,o){this.type=1,this._$AH=M,this._$AN=void 0,this.element=t,this.name=r,this._$AM=e,this.options=o,n.length>2||""!==n[0]||""!==n[1]?(this._$AH=Array(n.length-1).fill(new String),this.strings=n):this._$AH=M}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this,n=arguments.length>2?arguments[2]:void 0,e=arguments.length>3?arguments[3]:void 0;const o=this.strings;let i=!1;if(void 0===o)t=q(this,t,r,0),i=!C(t)||t!==this._$AH&&t!==N,i&&(this._$AH=t);else{const e=t;let a,u;for(t=o[0],a=0;a1&&void 0!==arguments[1]?arguments[1]:this,0))&&void 0!==r?r:M)===N)return;const n=this._$AH,e=t===M&&n!==M||t.capture!==n.capture||t.once!==n.once||t.passive!==n.passive,o=t!==M&&(n===M||e);e&&this.element.removeEventListener(this.name,this,n),o&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var r,n;"function"==typeof this._$AH?this._$AH.call(null!==(n=null===(r=this.options)||void 0===r?void 0:r.host)&&void 0!==n?n:this.element,t):this._$AH.handleEvent(t)}}class X{constructor(t,r,n){this.element=t,this.type=6,this._$AN=void 0,this._$AM=r,this.options=n}get _$AU(){return this._$AM._$AU}_$AI(t){q(this,t)}}const tt=w.litHtmlPolyfillSupport;null==tt||tt(F,Z),(null!==(y=w.litHtmlVersions)&&void 0!==y?y:w.litHtmlVersions=[]).push("2.6.1");var rt,nt;class et extends m{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var t,r;const n=super.createRenderRoot();return null!==(t=(r=this.renderOptions).renderBefore)&&void 0!==t||(r.renderBefore=n.firstChild),n}update(t){const r=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=((t,r,n)=>{var e,o;const i=null!==(e=null==n?void 0:n.renderBefore)&&void 0!==e?e:r;let a=i._$litPart$;if(void 0===a){const t=null!==(o=null==n?void 0:n.renderBefore)&&void 0!==o?o:null;i._$litPart$=a=new Z(r.insertBefore(S(),t),t,void 0,null!=n?n:{})}return a._$AI(t),a})(r,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!1)}render(){return N}}et.finalized=!0,et._$litElement$=!0,null===(rt=globalThis.litElementHydrateSupport)||void 0===rt||rt.call(globalThis,{LitElement:et});const ot=globalThis.litElementPolyfillSupport;null==ot||ot({LitElement:et}),(null!==(nt=globalThis.litElementVersions)&&void 0!==nt?nt:globalThis.litElementVersions=[]).push("3.2.2");const it=t=>r=>"function"==typeof r?((t,r)=>(customElements.define(t,r),r))(t,r):((t,r)=>{const{kind:n,elements:e}=r;return{kind:n,elements:e,finisher(r){customElements.define(t,r)}}})(t,r);var at;null===(at=window.HTMLSlotElement)||void 0===at||at.prototype.assignedElements;var ut=function(){for(var t=arguments.length,r=new Array(t),n=0;n + + + + + + `}};st.styles=[s` + ${ct} + `],st=e([it("hds-icon-angle-up")],st)}},r={};function n(e){var o=r[e];if(void 0!==o)return o.exports;var i=r[e]={exports:{}};return t[e](i,i.exports,n),i.exports}n.d=function(t,r){for(var e in r)n.o(r,e)&&!n.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:r[e]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),n.o=function(t,r){return Object.prototype.hasOwnProperty.call(t,r)},n(7226),n(9907)}(); \ No newline at end of file diff --git a/hdbt.libraries.yml b/hdbt.libraries.yml index a1a68da74..da611decd 100644 --- a/hdbt.libraries.yml +++ b/hdbt.libraries.yml @@ -167,3 +167,8 @@ hyphenopoly: dist/js/hyphenopoly/Hyphenopoly_Loader.js: { preprocess: false } + +hds-accordion: + version: 1.x + js: + dist/js/hds-accordion.min.js: {} diff --git a/src/js/hds-web-component-lib/Accordion-c73b97d8.d.ts b/src/js/hds-web-component-lib/Accordion-c73b97d8.d.ts new file mode 100644 index 000000000..c550e82cc --- /dev/null +++ b/src/js/hds-web-component-lib/Accordion-c73b97d8.d.ts @@ -0,0 +1,170 @@ +/// +import { LitElement, PropertyValueMap } from 'lit'; +// FIXME: This is just a copy of the file in packages/react/src/components/accordion +type Language = "en" | "fi" | "sv"; +interface AccordionCustomTheme { + "--background-color"?: string; + "--border-color"?: string; + "--padding-horizontal"?: string; + "--padding-vertical"?: string; + "--header-font-color"?: string; + "--header-font-size"?: string; + "--header-line-height"?: string; + "--button-size"?: string; + "--header-focus-outline-color"?: string; + "--content-font-size"?: string; + "--content-line-height"?: string; +} +type CommonAccordionProps = React.PropsWithChildren<{ + /** + * If `true` border will be drawn around the accordion card. + */ + border?: false; + /** + * Use the card variant if `true` + */ + card?: false; + /** + * Additional class names for accordion + */ + className?: string; + /** + * Boolean indicating whether there is a close button at the bottom of the accordion or not. + * @Default true + */ + closeButton?: boolean; + /** + * className for close button to enable custom styling + */ + closeButtonClassName?: string; + /** + * Heading text. + */ + heading?: string; + /** + * Heading level + * @default 2 + */ + headingLevel?: number; + /** + * The id for the accordion element + */ + id?: string; + /** + * Boolean indicating whether the accordion is initially opened. + * @default false + */ + initiallyOpen?: boolean; + /** + * The language of the component. It affects which language is used for the close button text. + * + * @default "fi" + */ + language?: Language; + /** + * Size + * @default m + */ + size?: "s" | "m" | "l"; + /** + * Additional styles + */ + style?: React.CSSProperties; + /** + * Custom theme styles + */ + theme?: AccordionCustomTheme; +}>; +type CardAccordionProps = Omit & { + /** + * If `true` border will be drawn around the accordion card. + */ + border?: boolean; + /** + * Use the card variant if `true` + */ + card: true; +}; +type AccordionProps = CommonAccordionProps | CardAccordionProps; +declare class AccordionHTMLElement extends LitElement { + id: string; + card: boolean; + border: boolean; + children: HTMLCollection; + language: Language; + heading: string; + headingLevel: number; + isOpen: boolean; + closeButton: boolean; + closeButtonClassName: string; + size: string; + theme?: AccordionCustomTheme; + static readonly styles: import("lit").CSSResult[]; + static get properties(): { + id: { + type: StringConstructor; + }; + card: { + type: BooleanConstructor; + converter: { + fromAttribute: (value: any) => boolean; + toAttribute: (value: any) => string; + }; + }; + border: { + type: BooleanConstructor; + converter: { + fromAttribute: (value: any) => boolean; + toAttribute: (value: any) => string; + }; + }; + children: { + type: { + new (): HTMLCollection; + prototype: HTMLCollection; + }; + }; + language: { + type: StringConstructor; + }; + heading: { + type: StringConstructor; + }; + headingLevel: { + type: NumberConstructor; + }; + isOpen: { + type: BooleanConstructor; + converter: { + fromAttribute: (value: any) => boolean; + toAttribute: (value: any) => string; + }; + }; + closeButton: { + type: BooleanConstructor; + converter: { + fromAttribute: (value: any) => boolean; + toAttribute: (value: any) => string; + }; + }; + closeButtonClassName: { + type: StringConstructor; + }; + size: { + type: StringConstructor; + }; + }; + identifierPrefix: string; + private get identifiers(); + toggleOpen: () => void; + hasCloseButton: () => boolean; + protected willUpdate(_changedProperties: PropertyValueMap | Map): void; + render(): import("lit-html").TemplateResult<1>; + private renderCloseButton; +} +declare global { + interface HTMLElementTagNameMap { + 'hds-accordion': AccordionHTMLElement; + } +} +export { Language, AccordionCustomTheme, CommonAccordionProps, CardAccordionProps, AccordionProps, AccordionHTMLElement as default }; diff --git a/src/js/hds-web-component-lib/Accordion-c73b97d8.js b/src/js/hds-web-component-lib/Accordion-c73b97d8.js new file mode 100644 index 000000000..87b789b19 --- /dev/null +++ b/src/js/hds-web-component-lib/Accordion-c73b97d8.js @@ -0,0 +1,10839 @@ +import { x, i as i$2, _ as __decorate, e as e$1, s, c as classNames, y } from './IconAngleUp-2e1d15ac.js'; + +/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */ +const t = { + ATTRIBUTE: 1, + CHILD: 2, + PROPERTY: 3, + BOOLEAN_ATTRIBUTE: 4, + EVENT: 5, + ELEMENT: 6 + }, + e = t => function () { + for (var _len = arguments.length, e = new Array(_len), _key = 0; _key < _len; _key++) { + e[_key] = arguments[_key]; + } + return { + _$litDirective$: t, + values: e + }; + }; +class i$1 { + constructor(t) {} + get _$AU() { + return this._$AM._$AU; + } + _$AT(t, e, i) { + this._$Ct = t, this._$AM = e, this._$Ci = i; + } + _$AS(t, e) { + return this.update(t, e); + } + update(t, e) { + return this.render(...e); + } +} + +/** + * @license + * Copyright 2018 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */ +const i = e(class extends i$1 { + constructor(t$1) { + var e; + if (super(t$1), t$1.type !== t.ATTRIBUTE || "style" !== t$1.name || (null === (e = t$1.strings) || void 0 === e ? void 0 : e.length) > 2) throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute."); + } + render(t) { + return Object.keys(t).reduce((e, r) => { + const s = t[r]; + return null == s ? e : e + `${r = r.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g, "-$&").toLowerCase()}:${s};`; + }, ""); + } + update(e, _ref) { + let [r] = _ref; + const { + style: s + } = e.element; + if (void 0 === this.vt) { + this.vt = new Set(); + for (const t in r) this.vt.add(t); + return this.render(r); + } + this.vt.forEach(t => { + null == r[t] && (this.vt.delete(t), t.includes("-") ? s.removeProperty(t) : s[t] = ""); + }); + for (const t in r) { + const e = r[t]; + null != e && (this.vt.add(t), t.includes("-") ? s.setProperty(t, e) : s[t] = e); + } + return x; + } +}); + +var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function createCommonjsModule(fn, basedir, module) { + return module = { + path: basedir, + exports: {}, + require: function (path, base) { + return commonjsRequire(path, (base === undefined || base === null) ? module.path : base); + } + }, fn(module, module.exports), module.exports; +} + +function commonjsRequire () { + throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs'); +} + +var lodash = createCommonjsModule(function (module, exports) { +(function(){/** Used as a safe reference for `undefined` in pre-ES5 environments. */var undefined$1;/** Used as the semantic version number. */var VERSION='4.17.21';/** Used as the size to enable large array optimizations. */var LARGE_ARRAY_SIZE=200;/** Error message constants. */var CORE_ERROR_TEXT='Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',FUNC_ERROR_TEXT='Expected a function',INVALID_TEMPL_VAR_ERROR_TEXT='Invalid `variable` option passed into `_.template`';/** Used to stand-in for `undefined` hash values. */var HASH_UNDEFINED='__lodash_hash_undefined__';/** Used as the maximum memoize cache size. */var MAX_MEMOIZE_SIZE=500;/** Used as the internal argument placeholder. */var PLACEHOLDER='__lodash_placeholder__';/** Used to compose bitmasks for cloning. */var CLONE_DEEP_FLAG=1,CLONE_FLAT_FLAG=2,CLONE_SYMBOLS_FLAG=4;/** Used to compose bitmasks for value comparisons. */var COMPARE_PARTIAL_FLAG=1,COMPARE_UNORDERED_FLAG=2;/** Used to compose bitmasks for function metadata. */var WRAP_BIND_FLAG=1,WRAP_BIND_KEY_FLAG=2,WRAP_CURRY_BOUND_FLAG=4,WRAP_CURRY_FLAG=8,WRAP_CURRY_RIGHT_FLAG=16,WRAP_PARTIAL_FLAG=32,WRAP_PARTIAL_RIGHT_FLAG=64,WRAP_ARY_FLAG=128,WRAP_REARG_FLAG=256,WRAP_FLIP_FLAG=512;/** Used as default options for `_.truncate`. */var DEFAULT_TRUNC_LENGTH=30,DEFAULT_TRUNC_OMISSION='...';/** Used to detect hot functions by number of calls within a span of milliseconds. */var HOT_COUNT=800,HOT_SPAN=16;/** Used to indicate the type of lazy iteratees. */var LAZY_FILTER_FLAG=1,LAZY_MAP_FLAG=2,LAZY_WHILE_FLAG=3;/** Used as references for various `Number` constants. */var INFINITY=1/0,MAX_SAFE_INTEGER=9007199254740991,MAX_INTEGER=1.7976931348623157e+308,NAN=0/0;/** Used as references for the maximum length and index of an array. */var MAX_ARRAY_LENGTH=4294967295,MAX_ARRAY_INDEX=MAX_ARRAY_LENGTH-1,HALF_MAX_ARRAY_LENGTH=MAX_ARRAY_LENGTH>>>1;/** Used to associate wrap methods with their bit flags. */var wrapFlags=[['ary',WRAP_ARY_FLAG],['bind',WRAP_BIND_FLAG],['bindKey',WRAP_BIND_KEY_FLAG],['curry',WRAP_CURRY_FLAG],['curryRight',WRAP_CURRY_RIGHT_FLAG],['flip',WRAP_FLIP_FLAG],['partial',WRAP_PARTIAL_FLAG],['partialRight',WRAP_PARTIAL_RIGHT_FLAG],['rearg',WRAP_REARG_FLAG]];/** `Object#toString` result references. */var argsTag='[object Arguments]',arrayTag='[object Array]',asyncTag='[object AsyncFunction]',boolTag='[object Boolean]',dateTag='[object Date]',domExcTag='[object DOMException]',errorTag='[object Error]',funcTag='[object Function]',genTag='[object GeneratorFunction]',mapTag='[object Map]',numberTag='[object Number]',nullTag='[object Null]',objectTag='[object Object]',promiseTag='[object Promise]',proxyTag='[object Proxy]',regexpTag='[object RegExp]',setTag='[object Set]',stringTag='[object String]',symbolTag='[object Symbol]',undefinedTag='[object Undefined]',weakMapTag='[object WeakMap]',weakSetTag='[object WeakSet]';var arrayBufferTag='[object ArrayBuffer]',dataViewTag='[object DataView]',float32Tag='[object Float32Array]',float64Tag='[object Float64Array]',int8Tag='[object Int8Array]',int16Tag='[object Int16Array]',int32Tag='[object Int32Array]',uint8Tag='[object Uint8Array]',uint8ClampedTag='[object Uint8ClampedArray]',uint16Tag='[object Uint16Array]',uint32Tag='[object Uint32Array]';/** Used to match empty string literals in compiled template source. */var reEmptyStringLeading=/\b__p \+= '';/g,reEmptyStringMiddle=/\b(__p \+=) '' \+/g,reEmptyStringTrailing=/(__e\(.*?\)|\b__t\)) \+\n'';/g;/** Used to match HTML entities and HTML characters. */var reEscapedHtml=/&(?:amp|lt|gt|quot|#39);/g,reUnescapedHtml=/[&<>"']/g,reHasEscapedHtml=RegExp(reEscapedHtml.source),reHasUnescapedHtml=RegExp(reUnescapedHtml.source);/** Used to match template delimiters. */var reEscape=/<%-([\s\S]+?)%>/g,reEvaluate=/<%([\s\S]+?)%>/g,reInterpolate=/<%=([\s\S]+?)%>/g;/** Used to match property names within property paths. */var reIsDeepProp=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,reIsPlainProp=/^\w*$/,rePropName=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;/** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */var reRegExpChar=/[\\^$.*+?()[\]{}|]/g,reHasRegExpChar=RegExp(reRegExpChar.source);/** Used to match leading whitespace. */var reTrimStart=/^\s+/;/** Used to match a single whitespace character. */var reWhitespace=/\s/;/** Used to match wrap detail comments. */var reWrapComment=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,reWrapDetails=/\{\n\/\* \[wrapped with (.+)\] \*/,reSplitDetails=/,? & /;/** Used to match words composed of alphanumeric characters. */var reAsciiWord=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;/** + * Used to validate the `validate` option in `_.template` variable. + * + * Forbids characters which could potentially change the meaning of the function argument definition: + * - "()," (modification of function parameters) + * - "=" (default value) + * - "[]{}" (destructuring of function parameters) + * - "/" (beginning of a comment) + * - whitespace + */var reForbiddenIdentifierChars=/[()=,{}\[\]\/\s]/;/** Used to match backslashes in property paths. */var reEscapeChar=/\\(\\)?/g;/** + * Used to match + * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components). + */var reEsTemplate=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;/** Used to match `RegExp` flags from their coerced string values. */var reFlags=/\w*$/;/** Used to detect bad signed hexadecimal string values. */var reIsBadHex=/^[-+]0x[0-9a-f]+$/i;/** Used to detect binary string values. */var reIsBinary=/^0b[01]+$/i;/** Used to detect host constructors (Safari). */var reIsHostCtor=/^\[object .+?Constructor\]$/;/** Used to detect octal string values. */var reIsOctal=/^0o[0-7]+$/i;/** Used to detect unsigned integer values. */var reIsUint=/^(?:0|[1-9]\d*)$/;/** Used to match Latin Unicode letters (excluding mathematical operators). */var reLatin=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;/** Used to ensure capturing order of template delimiters. */var reNoMatch=/($^)/;/** Used to match unescaped characters in compiled string literals. */var reUnescapedString=/['\n\r\u2028\u2029\\]/g;/** Used to compose unicode character classes. */var rsAstralRange='\\ud800-\\udfff',rsComboMarksRange='\\u0300-\\u036f',reComboHalfMarksRange='\\ufe20-\\ufe2f',rsComboSymbolsRange='\\u20d0-\\u20ff',rsComboRange=rsComboMarksRange+reComboHalfMarksRange+rsComboSymbolsRange,rsDingbatRange='\\u2700-\\u27bf',rsLowerRange='a-z\\xdf-\\xf6\\xf8-\\xff',rsMathOpRange='\\xac\\xb1\\xd7\\xf7',rsNonCharRange='\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf',rsPunctuationRange='\\u2000-\\u206f',rsSpaceRange=' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000',rsUpperRange='A-Z\\xc0-\\xd6\\xd8-\\xde',rsVarRange='\\ufe0e\\ufe0f',rsBreakRange=rsMathOpRange+rsNonCharRange+rsPunctuationRange+rsSpaceRange;/** Used to compose unicode capture groups. */var rsApos="['\u2019]",rsAstral='['+rsAstralRange+']',rsBreak='['+rsBreakRange+']',rsCombo='['+rsComboRange+']',rsDigits='\\d+',rsDingbat='['+rsDingbatRange+']',rsLower='['+rsLowerRange+']',rsMisc='[^'+rsAstralRange+rsBreakRange+rsDigits+rsDingbatRange+rsLowerRange+rsUpperRange+']',rsFitz='\\ud83c[\\udffb-\\udfff]',rsModifier='(?:'+rsCombo+'|'+rsFitz+')',rsNonAstral='[^'+rsAstralRange+']',rsRegional='(?:\\ud83c[\\udde6-\\uddff]){2}',rsSurrPair='[\\ud800-\\udbff][\\udc00-\\udfff]',rsUpper='['+rsUpperRange+']',rsZWJ='\\u200d';/** Used to compose unicode regexes. */var rsMiscLower='(?:'+rsLower+'|'+rsMisc+')',rsMiscUpper='(?:'+rsUpper+'|'+rsMisc+')',rsOptContrLower='(?:'+rsApos+'(?:d|ll|m|re|s|t|ve))?',rsOptContrUpper='(?:'+rsApos+'(?:D|LL|M|RE|S|T|VE))?',reOptMod=rsModifier+'?',rsOptVar='['+rsVarRange+']?',rsOptJoin='(?:'+rsZWJ+'(?:'+[rsNonAstral,rsRegional,rsSurrPair].join('|')+')'+rsOptVar+reOptMod+')*',rsOrdLower='\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])',rsOrdUpper='\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])',rsSeq=rsOptVar+reOptMod+rsOptJoin,rsEmoji='(?:'+[rsDingbat,rsRegional,rsSurrPair].join('|')+')'+rsSeq,rsSymbol='(?:'+[rsNonAstral+rsCombo+'?',rsCombo,rsRegional,rsSurrPair,rsAstral].join('|')+')';/** Used to match apostrophes. */var reApos=RegExp(rsApos,'g');/** + * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and + * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). + */var reComboMark=RegExp(rsCombo,'g');/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */var reUnicode=RegExp(rsFitz+'(?='+rsFitz+')|'+rsSymbol+rsSeq,'g');/** Used to match complex or compound words. */var reUnicodeWord=RegExp([rsUpper+'?'+rsLower+'+'+rsOptContrLower+'(?='+[rsBreak,rsUpper,'$'].join('|')+')',rsMiscUpper+'+'+rsOptContrUpper+'(?='+[rsBreak,rsUpper+rsMiscLower,'$'].join('|')+')',rsUpper+'?'+rsMiscLower+'+'+rsOptContrLower,rsUpper+'+'+rsOptContrUpper,rsOrdUpper,rsOrdLower,rsDigits,rsEmoji].join('|'),'g');/** 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/). */var reHasUnicode=RegExp('['+rsZWJ+rsAstralRange+rsComboRange+rsVarRange+']');/** Used to detect strings that need a more robust regexp to match words. */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 ]/;/** Used to assign default `context` object properties. */var contextProps=['Array','Buffer','DataView','Date','Error','Float32Array','Float64Array','Function','Int8Array','Int16Array','Int32Array','Map','Math','Object','Promise','RegExp','Set','String','Symbol','TypeError','Uint8Array','Uint8ClampedArray','Uint16Array','Uint32Array','WeakMap','_','clearTimeout','isFinite','parseInt','setTimeout'];/** Used to make template sourceURLs easier to identify. */var templateCounter=-1;/** Used to identify `toStringTag` values of typed arrays. */var typedArrayTags={};typedArrayTags[float32Tag]=typedArrayTags[float64Tag]=typedArrayTags[int8Tag]=typedArrayTags[int16Tag]=typedArrayTags[int32Tag]=typedArrayTags[uint8Tag]=typedArrayTags[uint8ClampedTag]=typedArrayTags[uint16Tag]=typedArrayTags[uint32Tag]=true;typedArrayTags[argsTag]=typedArrayTags[arrayTag]=typedArrayTags[arrayBufferTag]=typedArrayTags[boolTag]=typedArrayTags[dataViewTag]=typedArrayTags[dateTag]=typedArrayTags[errorTag]=typedArrayTags[funcTag]=typedArrayTags[mapTag]=typedArrayTags[numberTag]=typedArrayTags[objectTag]=typedArrayTags[regexpTag]=typedArrayTags[setTag]=typedArrayTags[stringTag]=typedArrayTags[weakMapTag]=false;/** Used to identify `toStringTag` values supported by `_.clone`. */var cloneableTags={};cloneableTags[argsTag]=cloneableTags[arrayTag]=cloneableTags[arrayBufferTag]=cloneableTags[dataViewTag]=cloneableTags[boolTag]=cloneableTags[dateTag]=cloneableTags[float32Tag]=cloneableTags[float64Tag]=cloneableTags[int8Tag]=cloneableTags[int16Tag]=cloneableTags[int32Tag]=cloneableTags[mapTag]=cloneableTags[numberTag]=cloneableTags[objectTag]=cloneableTags[regexpTag]=cloneableTags[setTag]=cloneableTags[stringTag]=cloneableTags[symbolTag]=cloneableTags[uint8Tag]=cloneableTags[uint8ClampedTag]=cloneableTags[uint16Tag]=cloneableTags[uint32Tag]=true;cloneableTags[errorTag]=cloneableTags[funcTag]=cloneableTags[weakMapTag]=false;/** Used to map Latin Unicode letters to basic Latin letters. */var deburredLetters={// Latin-1 Supplement block. +'\xc0':'A','\xc1':'A','\xc2':'A','\xc3':'A','\xc4':'A','\xc5':'A','\xe0':'a','\xe1':'a','\xe2':'a','\xe3':'a','\xe4':'a','\xe5':'a','\xc7':'C','\xe7':'c','\xd0':'D','\xf0':'d','\xc8':'E','\xc9':'E','\xca':'E','\xcb':'E','\xe8':'e','\xe9':'e','\xea':'e','\xeb':'e','\xcc':'I','\xcd':'I','\xce':'I','\xcf':'I','\xec':'i','\xed':'i','\xee':'i','\xef':'i','\xd1':'N','\xf1':'n','\xd2':'O','\xd3':'O','\xd4':'O','\xd5':'O','\xd6':'O','\xd8':'O','\xf2':'o','\xf3':'o','\xf4':'o','\xf5':'o','\xf6':'o','\xf8':'o','\xd9':'U','\xda':'U','\xdb':'U','\xdc':'U','\xf9':'u','\xfa':'u','\xfb':'u','\xfc':'u','\xdd':'Y','\xfd':'y','\xff':'y','\xc6':'Ae','\xe6':'ae','\xde':'Th','\xfe':'th','\xdf':'ss',// Latin Extended-A block. +'\u0100':'A','\u0102':'A','\u0104':'A','\u0101':'a','\u0103':'a','\u0105':'a','\u0106':'C','\u0108':'C','\u010a':'C','\u010c':'C','\u0107':'c','\u0109':'c','\u010b':'c','\u010d':'c','\u010e':'D','\u0110':'D','\u010f':'d','\u0111':'d','\u0112':'E','\u0114':'E','\u0116':'E','\u0118':'E','\u011a':'E','\u0113':'e','\u0115':'e','\u0117':'e','\u0119':'e','\u011b':'e','\u011c':'G','\u011e':'G','\u0120':'G','\u0122':'G','\u011d':'g','\u011f':'g','\u0121':'g','\u0123':'g','\u0124':'H','\u0126':'H','\u0125':'h','\u0127':'h','\u0128':'I','\u012a':'I','\u012c':'I','\u012e':'I','\u0130':'I','\u0129':'i','\u012b':'i','\u012d':'i','\u012f':'i','\u0131':'i','\u0134':'J','\u0135':'j','\u0136':'K','\u0137':'k','\u0138':'k','\u0139':'L','\u013b':'L','\u013d':'L','\u013f':'L','\u0141':'L','\u013a':'l','\u013c':'l','\u013e':'l','\u0140':'l','\u0142':'l','\u0143':'N','\u0145':'N','\u0147':'N','\u014a':'N','\u0144':'n','\u0146':'n','\u0148':'n','\u014b':'n','\u014c':'O','\u014e':'O','\u0150':'O','\u014d':'o','\u014f':'o','\u0151':'o','\u0154':'R','\u0156':'R','\u0158':'R','\u0155':'r','\u0157':'r','\u0159':'r','\u015a':'S','\u015c':'S','\u015e':'S','\u0160':'S','\u015b':'s','\u015d':'s','\u015f':'s','\u0161':'s','\u0162':'T','\u0164':'T','\u0166':'T','\u0163':'t','\u0165':'t','\u0167':'t','\u0168':'U','\u016a':'U','\u016c':'U','\u016e':'U','\u0170':'U','\u0172':'U','\u0169':'u','\u016b':'u','\u016d':'u','\u016f':'u','\u0171':'u','\u0173':'u','\u0174':'W','\u0175':'w','\u0176':'Y','\u0177':'y','\u0178':'Y','\u0179':'Z','\u017b':'Z','\u017d':'Z','\u017a':'z','\u017c':'z','\u017e':'z','\u0132':'IJ','\u0133':'ij','\u0152':'Oe','\u0153':'oe','\u0149':"'n",'\u017f':'s'};/** Used to map characters to HTML entities. */var htmlEscapes={'&':'&','<':'<','>':'>','"':'"',"'":'''};/** Used to map HTML entities to characters. */var htmlUnescapes={'&':'&','<':'<','>':'>','"':'"',''':"'"};/** Used to escape characters for inclusion in compiled string literals. */var stringEscapes={'\\':'\\',"'":"'",'\n':'n','\r':'r','\u2028':'u2028','\u2029':'u2029'};/** Built-in method references without a dependency on `root`. */var freeParseFloat=parseFloat,freeParseInt=parseInt;/** Detect free variable `global` from Node.js. */var freeGlobal=typeof commonjsGlobal=='object'&&commonjsGlobal&&commonjsGlobal.Object===Object&&commonjsGlobal;/** Detect free variable `self`. */var freeSelf=typeof self=='object'&&self&&self.Object===Object&&self;/** Used as a reference to the global object. */var root=freeGlobal||freeSelf||Function('return this')();/** Detect free variable `exports`. */var freeExports=exports&&!exports.nodeType&&exports;/** Detect free variable `module`. */var freeModule=freeExports&&'object'=='object'&&module&&!module.nodeType&&module;/** Detect the popular CommonJS extension `module.exports`. */var moduleExports=freeModule&&freeModule.exports===freeExports;/** Detect free variable `process` from Node.js. */var freeProcess=moduleExports&&freeGlobal.process;/** Used to access faster Node.js helpers. */var nodeUtil=function(){try{// Use `util.types` for Node.js 10+. +var types=freeModule&&freeModule.require&&freeModule.require('util').types;if(types){return types;}// Legacy `process.binding('util')` for Node.js < 10. +return freeProcess&&freeProcess.binding&&freeProcess.binding('util');}catch(e){}}();/* Node.js helper references. */var nodeIsArrayBuffer=nodeUtil&&nodeUtil.isArrayBuffer,nodeIsDate=nodeUtil&&nodeUtil.isDate,nodeIsMap=nodeUtil&&nodeUtil.isMap,nodeIsRegExp=nodeUtil&&nodeUtil.isRegExp,nodeIsSet=nodeUtil&&nodeUtil.isSet,nodeIsTypedArray=nodeUtil&&nodeUtil.isTypedArray;/*--------------------------------------------------------------------------*/ /** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */function apply(func,thisArg,args){switch(args.length){case 0:return func.call(thisArg);case 1:return func.call(thisArg,args[0]);case 2:return func.call(thisArg,args[0],args[1]);case 3:return func.call(thisArg,args[0],args[1],args[2]);}return func.apply(thisArg,args);}/** + * A specialized version of `baseAggregator` for arrays. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform keys. + * @param {Object} accumulator The initial aggregated object. + * @returns {Function} Returns `accumulator`. + */function arrayAggregator(array,setter,iteratee,accumulator){var index=-1,length=array==null?0:array.length;while(++index-1;}/** + * This function is like `arrayIncludes` except that it accepts a comparator. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @param {Function} comparator The comparator invoked per element. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */function arrayIncludesWith(array,value,comparator){var index=-1,length=array==null?0:array.length;while(++index-1){}return index;}/** + * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol + * that is not found in the character symbols. + * + * @private + * @param {Array} strSymbols The string symbols to inspect. + * @param {Array} chrSymbols The character symbols to find. + * @returns {number} Returns the index of the last unmatched string symbol. + */function charsEndIndex(strSymbols,chrSymbols){var index=strSymbols.length;while(index--&&baseIndexOf(chrSymbols,strSymbols[index],0)>-1){}return index;}/** + * Gets the number of `placeholder` occurrences in `array`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} placeholder The placeholder to search for. + * @returns {number} Returns the placeholder count. + */function countHolders(array,placeholder){var length=array.length,result=0;while(length--){if(array[length]===placeholder){++result;}}return result;}/** + * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A + * letters to basic Latin letters. + * + * @private + * @param {string} letter The matched letter to deburr. + * @returns {string} Returns the deburred letter. + */var deburrLetter=basePropertyOf(deburredLetters);/** + * Used by `_.escape` to convert characters to HTML entities. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */var escapeHtmlChar=basePropertyOf(htmlEscapes);/** + * Used by `_.template` to escape characters for inclusion in compiled string literals. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */function escapeStringChar(chr){return '\\'+stringEscapes[chr];}/** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */function getValue(object,key){return object==null?undefined$1:object[key];}/** + * Checks if `string` contains Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a symbol is found, else `false`. + */function hasUnicode(string){return reHasUnicode.test(string);}/** + * Checks if `string` contains a word composed of Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a word is found, else `false`. + */function hasUnicodeWord(string){return reHasUnicodeWord.test(string);}/** + * Converts `iterator` to an array. + * + * @private + * @param {Object} iterator The iterator to convert. + * @returns {Array} Returns the converted array. + */function iteratorToArray(iterator){var data,result=[];while(!(data=iterator.next()).done){result.push(data.value);}return result;}/** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */function mapToArray(map){var index=-1,result=Array(map.size);map.forEach(function(value,key){result[++index]=[key,value];});return result;}/** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */function overArg(func,transform){return function(arg){return func(transform(arg));};}/** + * Replaces all `placeholder` elements in `array` with an internal placeholder + * and returns an array of their indexes. + * + * @private + * @param {Array} array The array to modify. + * @param {*} placeholder The placeholder to replace. + * @returns {Array} Returns the new array of placeholder indexes. + */function replaceHolders(array,placeholder){var index=-1,length=array.length,resIndex=0,result=[];while(++index true + * _.isFunction(_.bar); + * // => false + * + * lodash.isFunction(lodash.foo); + * // => false + * lodash.isFunction(lodash.bar); + * // => true + * + * // Create a suped-up `defer` in Node.js. + * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer; + */var runInContext=function runInContext(context){context=context==null?root:_.defaults(root.Object(),context,_.pick(root,contextProps));/** Built-in constructor references. */var Array=context.Array,Date=context.Date,Error=context.Error,Function=context.Function,Math=context.Math,Object=context.Object,RegExp=context.RegExp,String=context.String,TypeError=context.TypeError;/** Used for built-in method references. */var arrayProto=Array.prototype,funcProto=Function.prototype,objectProto=Object.prototype;/** Used to detect overreaching core-js shims. */var coreJsData=context['__core-js_shared__'];/** Used to resolve the decompiled source of functions. */var funcToString=funcProto.toString;/** Used to check objects for own properties. */var hasOwnProperty=objectProto.hasOwnProperty;/** Used to generate unique IDs. */var idCounter=0;/** Used to detect methods masquerading as native. */var maskSrcKey=function(){var uid=/[^.]+$/.exec(coreJsData&&coreJsData.keys&&coreJsData.keys.IE_PROTO||'');return uid?'Symbol(src)_1.'+uid:'';}();/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */var nativeObjectToString=objectProto.toString;/** Used to infer the `Object` constructor. */var objectCtorString=funcToString.call(Object);/** Used to restore the original `_` reference in `_.noConflict`. */var oldDash=root._;/** Used to detect if a method is native. */var reIsNative=RegExp('^'+funcToString.call(hasOwnProperty).replace(reRegExpChar,'\\$&').replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,'$1.*?')+'$');/** Built-in value references. */var Buffer=moduleExports?context.Buffer:undefined$1,Symbol=context.Symbol,Uint8Array=context.Uint8Array,allocUnsafe=Buffer?Buffer.allocUnsafe:undefined$1,getPrototype=overArg(Object.getPrototypeOf,Object),objectCreate=Object.create,propertyIsEnumerable=objectProto.propertyIsEnumerable,splice=arrayProto.splice,spreadableSymbol=Symbol?Symbol.isConcatSpreadable:undefined$1,symIterator=Symbol?Symbol.iterator:undefined$1,symToStringTag=Symbol?Symbol.toStringTag:undefined$1;var defineProperty=function(){try{var func=getNative(Object,'defineProperty');func({},'',{});return func;}catch(e){}}();/** Mocked built-ins. */var ctxClearTimeout=context.clearTimeout!==root.clearTimeout&&context.clearTimeout,ctxNow=Date&&Date.now!==root.Date.now&&Date.now,ctxSetTimeout=context.setTimeout!==root.setTimeout&&context.setTimeout;/* Built-in method references for those with the same name as other `lodash` methods. */var nativeCeil=Math.ceil,nativeFloor=Math.floor,nativeGetSymbols=Object.getOwnPropertySymbols,nativeIsBuffer=Buffer?Buffer.isBuffer:undefined$1,nativeIsFinite=context.isFinite,nativeJoin=arrayProto.join,nativeKeys=overArg(Object.keys,Object),nativeMax=Math.max,nativeMin=Math.min,nativeNow=Date.now,nativeParseInt=context.parseInt,nativeRandom=Math.random,nativeReverse=arrayProto.reverse;/* Built-in method references that are verified to be native. */var DataView=getNative(context,'DataView'),Map=getNative(context,'Map'),Promise=getNative(context,'Promise'),Set=getNative(context,'Set'),WeakMap=getNative(context,'WeakMap'),nativeCreate=getNative(Object,'create');/** Used to store function metadata. */var metaMap=WeakMap&&new WeakMap();/** Used to lookup unminified function names. */var realNames={};/** Used to detect maps, sets, and weakmaps. */var dataViewCtorString=toSource(DataView),mapCtorString=toSource(Map),promiseCtorString=toSource(Promise),setCtorString=toSource(Set),weakMapCtorString=toSource(WeakMap);/** Used to convert symbols to primitives and strings. */var symbolProto=Symbol?Symbol.prototype:undefined$1,symbolValueOf=symbolProto?symbolProto.valueOf:undefined$1,symbolToString=symbolProto?symbolProto.toString:undefined$1;/*------------------------------------------------------------------------*/ /** + * Creates a `lodash` object which wraps `value` to enable implicit method + * chain sequences. Methods that operate on and return arrays, collections, + * and functions can be chained together. Methods that retrieve a single value + * or may return a primitive value will automatically end the chain sequence + * and return the unwrapped value. Otherwise, the value must be unwrapped + * with `_#value`. + * + * Explicit chain sequences, which must be unwrapped with `_#value`, may be + * enabled using `_.chain`. + * + * The execution of chained methods is lazy, that is, it's deferred until + * `_#value` is implicitly or explicitly called. + * + * Lazy evaluation allows several methods to support shortcut fusion. + * Shortcut fusion is an optimization to merge iteratee calls; this avoids + * the creation of intermediate arrays and can greatly reduce the number of + * iteratee executions. Sections of a chain sequence qualify for shortcut + * fusion if the section is applied to an array and iteratees accept only + * one argument. The heuristic for whether a section qualifies for shortcut + * fusion is subject to change. + * + * Chaining is supported in custom builds as long as the `_#value` method is + * directly or indirectly included in the build. + * + * In addition to lodash methods, wrappers have `Array` and `String` methods. + * + * The wrapper `Array` methods are: + * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift` + * + * The wrapper `String` methods are: + * `replace` and `split` + * + * The wrapper methods that support shortcut fusion are: + * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`, + * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`, + * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray` + * + * The chainable wrapper methods are: + * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`, + * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`, + * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`, + * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`, + * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`, + * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`, + * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`, + * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`, + * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`, + * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`, + * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`, + * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`, + * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`, + * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`, + * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`, + * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`, + * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`, + * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`, + * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`, + * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`, + * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`, + * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`, + * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`, + * `zipObject`, `zipObjectDeep`, and `zipWith` + * + * The wrapper methods that are **not** chainable by default are: + * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`, + * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`, + * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`, + * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`, + * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`, + * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`, + * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`, + * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`, + * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`, + * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`, + * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`, + * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`, + * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`, + * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`, + * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`, + * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`, + * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, + * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`, + * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`, + * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`, + * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`, + * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`, + * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`, + * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`, + * `upperFirst`, `value`, and `words` + * + * @name _ + * @constructor + * @category Seq + * @param {*} value The value to wrap in a `lodash` instance. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * function square(n) { + * return n * n; + * } + * + * var wrapped = _([1, 2, 3]); + * + * // Returns an unwrapped value. + * wrapped.reduce(_.add); + * // => 6 + * + * // Returns a wrapped value. + * var squares = wrapped.map(square); + * + * _.isArray(squares); + * // => false + * + * _.isArray(squares.value()); + * // => true + */function lodash(value){if(isObjectLike(value)&&!isArray(value)&&!(value instanceof LazyWrapper)){if(value instanceof LodashWrapper){return value;}if(hasOwnProperty.call(value,'__wrapped__')){return wrapperClone(value);}}return new LodashWrapper(value);}/** + * The base implementation of `_.create` without support for assigning + * properties to the created object. + * + * @private + * @param {Object} proto The object to inherit from. + * @returns {Object} Returns the new object. + */var baseCreate=function(){function object(){}return function(proto){if(!isObject(proto)){return {};}if(objectCreate){return objectCreate(proto);}object.prototype=proto;var result=new object();object.prototype=undefined$1;return result;};}();/** + * The function whose prototype chain sequence wrappers inherit from. + * + * @private + */function baseLodash(){// No operation performed. +}/** + * The base constructor for creating `lodash` wrapper objects. + * + * @private + * @param {*} value The value to wrap. + * @param {boolean} [chainAll] Enable explicit method chain sequences. + */function LodashWrapper(value,chainAll){this.__wrapped__=value;this.__actions__=[];this.__chain__=!!chainAll;this.__index__=0;this.__values__=undefined$1;}/** + * By default, the template delimiters used by lodash are like those in + * embedded Ruby (ERB) as well as ES2015 template strings. Change the + * following template settings to use alternative delimiters. + * + * @static + * @memberOf _ + * @type {Object} + */lodash.templateSettings={/** + * Used to detect `data` property values to be HTML-escaped. + * + * @memberOf _.templateSettings + * @type {RegExp} + */'escape':reEscape,/** + * Used to detect code to be evaluated. + * + * @memberOf _.templateSettings + * @type {RegExp} + */'evaluate':reEvaluate,/** + * Used to detect `data` property values to inject. + * + * @memberOf _.templateSettings + * @type {RegExp} + */'interpolate':reInterpolate,/** + * Used to reference the data object in the template text. + * + * @memberOf _.templateSettings + * @type {string} + */'variable':'',/** + * Used to import variables into the compiled template. + * + * @memberOf _.templateSettings + * @type {Object} + */'imports':{/** + * A reference to the `lodash` function. + * + * @memberOf _.templateSettings.imports + * @type {Function} + */'_':lodash}};// Ensure wrappers are instances of `baseLodash`. +lodash.prototype=baseLodash.prototype;lodash.prototype.constructor=lodash;LodashWrapper.prototype=baseCreate(baseLodash.prototype);LodashWrapper.prototype.constructor=LodashWrapper;/*------------------------------------------------------------------------*/ /** + * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. + * + * @private + * @constructor + * @param {*} value The value to wrap. + */function LazyWrapper(value){this.__wrapped__=value;this.__actions__=[];this.__dir__=1;this.__filtered__=false;this.__iteratees__=[];this.__takeCount__=MAX_ARRAY_LENGTH;this.__views__=[];}/** + * Creates a clone of the lazy wrapper object. + * + * @private + * @name clone + * @memberOf LazyWrapper + * @returns {Object} Returns the cloned `LazyWrapper` object. + */function lazyClone(){var result=new LazyWrapper(this.__wrapped__);result.__actions__=copyArray(this.__actions__);result.__dir__=this.__dir__;result.__filtered__=this.__filtered__;result.__iteratees__=copyArray(this.__iteratees__);result.__takeCount__=this.__takeCount__;result.__views__=copyArray(this.__views__);return result;}/** + * Reverses the direction of lazy iteration. + * + * @private + * @name reverse + * @memberOf LazyWrapper + * @returns {Object} Returns the new reversed `LazyWrapper` object. + */function lazyReverse(){if(this.__filtered__){var result=new LazyWrapper(this);result.__dir__=-1;result.__filtered__=true;}else {result=this.clone();result.__dir__*=-1;}return result;}/** + * Extracts the unwrapped value from its lazy wrapper. + * + * @private + * @name value + * @memberOf LazyWrapper + * @returns {*} Returns the unwrapped value. + */function lazyValue(){var array=this.__wrapped__.value(),dir=this.__dir__,isArr=isArray(array),isRight=dir<0,arrLength=isArr?array.length:0,view=getView(0,arrLength,this.__views__),start=view.start,end=view.end,length=end-start,index=isRight?end:start-1,iteratees=this.__iteratees__,iterLength=iteratees.length,resIndex=0,takeCount=nativeMin(length,this.__takeCount__);if(!isArr||!isRight&&arrLength==length&&takeCount==length){return baseWrapperValue(array,this.__actions__);}var result=[];outer:while(length--&&resIndex-1;}/** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */function listCacheSet(key,value){var data=this.__data__,index=assocIndexOf(data,key);if(index<0){++this.size;data.push([key,value]);}else {data[index][1]=value;}return this;}// Add methods to `ListCache`. +ListCache.prototype.clear=listCacheClear;ListCache.prototype['delete']=listCacheDelete;ListCache.prototype.get=listCacheGet;ListCache.prototype.has=listCacheHas;ListCache.prototype.set=listCacheSet;/*------------------------------------------------------------------------*/ /** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */function MapCache(entries){var index=-1,length=entries==null?0:entries.length;this.clear();while(++index=lower?number:lower;}}return number;}/** + * The base implementation of `_.clone` and `_.cloneDeep` which tracks + * traversed objects. + * + * @private + * @param {*} value The value to clone. + * @param {boolean} bitmask The bitmask flags. + * 1 - Deep clone + * 2 - Flatten inherited properties + * 4 - Clone symbols + * @param {Function} [customizer] The function to customize cloning. + * @param {string} [key] The key of `value`. + * @param {Object} [object] The parent object of `value`. + * @param {Object} [stack] Tracks traversed objects and their clone counterparts. + * @returns {*} Returns the cloned value. + */function baseClone(value,bitmask,customizer,key,object,stack){var result,isDeep=bitmask&CLONE_DEEP_FLAG,isFlat=bitmask&CLONE_FLAT_FLAG,isFull=bitmask&CLONE_SYMBOLS_FLAG;if(customizer){result=object?customizer(value,key,object,stack):customizer(value);}if(result!==undefined$1){return result;}if(!isObject(value)){return value;}var isArr=isArray(value);if(isArr){result=initCloneArray(value);if(!isDeep){return copyArray(value,result);}}else {var tag=getTag(value),isFunc=tag==funcTag||tag==genTag;if(isBuffer(value)){return cloneBuffer(value,isDeep);}if(tag==objectTag||tag==argsTag||isFunc&&!object){result=isFlat||isFunc?{}:initCloneObject(value);if(!isDeep){return isFlat?copySymbolsIn(value,baseAssignIn(result,value)):copySymbols(value,baseAssign(result,value));}}else {if(!cloneableTags[tag]){return object?value:{};}result=initCloneByTag(value,tag,isDeep);}}// Check for circular references and return its corresponding clone. +stack||(stack=new Stack());var stacked=stack.get(value);if(stacked){return stacked;}stack.set(value,result);if(isSet(value)){value.forEach(function(subValue){result.add(baseClone(subValue,bitmask,customizer,subValue,value,stack));});}else if(isMap(value)){value.forEach(function(subValue,key){result.set(key,baseClone(subValue,bitmask,customizer,key,value,stack));});}var keysFunc=isFull?isFlat?getAllKeysIn:getAllKeys:isFlat?keysIn:keys;var props=isArr?undefined$1:keysFunc(value);arrayEach(props||value,function(subValue,key){if(props){key=subValue;subValue=value[key];}// Recursively populate clone (susceptible to call stack limits). +assignValue(result,key,baseClone(subValue,bitmask,customizer,key,value,stack));});return result;}/** + * The base implementation of `_.conforms` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property predicates to conform to. + * @returns {Function} Returns the new spec function. + */function baseConforms(source){var props=keys(source);return function(object){return baseConformsTo(object,source,props);};}/** + * The base implementation of `_.conformsTo` which accepts `props` to check. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property predicates to conform to. + * @returns {boolean} Returns `true` if `object` conforms, else `false`. + */function baseConformsTo(object,source,props){var length=props.length;if(object==null){return !length;}object=Object(object);while(length--){var key=props[length],predicate=source[key],value=object[key];if(value===undefined$1&&!(key in object)||!predicate(value)){return false;}}return true;}/** + * The base implementation of `_.delay` and `_.defer` which accepts `args` + * to provide to `func`. + * + * @private + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {Array} args The arguments to provide to `func`. + * @returns {number|Object} Returns the timer id or timeout object. + */function baseDelay(func,wait,args){if(typeof func!='function'){throw new TypeError(FUNC_ERROR_TEXT);}return setTimeout(function(){func.apply(undefined$1,args);},wait);}/** + * The base implementation of methods like `_.difference` without support + * for excluding multiple arrays or iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Array} values The values to exclude. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + */function baseDifference(array,values,iteratee,comparator){var index=-1,includes=arrayIncludes,isCommon=true,length=array.length,result=[],valuesLength=values.length;if(!length){return result;}if(iteratee){values=arrayMap(values,baseUnary(iteratee));}if(comparator){includes=arrayIncludesWith;isCommon=false;}else if(values.length>=LARGE_ARRAY_SIZE){includes=cacheHas;isCommon=false;values=new SetCache(values);}outer:while(++indexlength?0:length+start;}end=end===undefined$1||end>length?length:toInteger(end);if(end<0){end+=length;}end=start>end?0:toLength(end);while(start0&&predicate(value)){if(depth>1){// Recursively flatten arrays (susceptible to call stack limits). +baseFlatten(value,depth-1,predicate,isStrict,result);}else {arrayPush(result,value);}}else if(!isStrict){result[result.length]=value;}}return result;}/** + * The base implementation of `baseForOwn` which iterates over `object` + * properties returned by `keysFunc` and invokes `iteratee` for each property. + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */var baseFor=createBaseFor();/** + * This function is like `baseFor` except that it iterates over properties + * in the opposite order. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */var baseForRight=createBaseFor(true);/** + * The base implementation of `_.forOwn` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */function baseForOwn(object,iteratee){return object&&baseFor(object,iteratee,keys);}/** + * The base implementation of `_.forOwnRight` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */function baseForOwnRight(object,iteratee){return object&&baseForRight(object,iteratee,keys);}/** + * The base implementation of `_.functions` which creates an array of + * `object` function property names filtered from `props`. + * + * @private + * @param {Object} object The object to inspect. + * @param {Array} props The property names to filter. + * @returns {Array} Returns the function names. + */function baseFunctions(object,props){return arrayFilter(props,function(key){return isFunction(object[key]);});}/** + * The base implementation of `_.get` without support for default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. + */function baseGet(object,path){path=castPath(path,object);var index=0,length=path.length;while(object!=null&&indexother;}/** + * The base implementation of `_.has` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */function baseHas(object,key){return object!=null&&hasOwnProperty.call(object,key);}/** + * The base implementation of `_.hasIn` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */function baseHasIn(object,key){return object!=null&&key in Object(object);}/** + * The base implementation of `_.inRange` which doesn't coerce arguments. + * + * @private + * @param {number} number The number to check. + * @param {number} start The start of the range. + * @param {number} end The end of the range. + * @returns {boolean} Returns `true` if `number` is in the range, else `false`. + */function baseInRange(number,start,end){return number>=nativeMin(start,end)&&number=120&&array.length>=120)?new SetCache(othIndex&&array):undefined$1;}array=arrays[0];var index=-1,seen=caches[0];outer:while(++index-1){if(seen!==array){splice.call(seen,fromIndex,1);}splice.call(array,fromIndex,1);}}return array;}/** + * The base implementation of `_.pullAt` without support for individual + * indexes or capturing the removed elements. + * + * @private + * @param {Array} array The array to modify. + * @param {number[]} indexes The indexes of elements to remove. + * @returns {Array} Returns `array`. + */function basePullAt(array,indexes){var length=array?indexes.length:0,lastIndex=length-1;while(length--){var index=indexes[length];if(length==lastIndex||index!==previous){var previous=index;if(isIndex(index)){splice.call(array,index,1);}else {baseUnset(array,index);}}}return array;}/** + * The base implementation of `_.random` without support for returning + * floating-point numbers. + * + * @private + * @param {number} lower The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the random number. + */function baseRandom(lower,upper){return lower+nativeFloor(nativeRandom()*(upper-lower+1));}/** + * The base implementation of `_.range` and `_.rangeRight` which doesn't + * coerce arguments. + * + * @private + * @param {number} start The start of the range. + * @param {number} end The end of the range. + * @param {number} step The value to increment or decrement by. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Array} Returns the range of numbers. + */function baseRange(start,end,step,fromRight){var index=-1,length=nativeMax(nativeCeil((end-start)/(step||1)),0),result=Array(length);while(length--){result[fromRight?length:++index]=start;start+=step;}return result;}/** + * The base implementation of `_.repeat` which doesn't coerce arguments. + * + * @private + * @param {string} string The string to repeat. + * @param {number} n The number of times to repeat the string. + * @returns {string} Returns the repeated string. + */function baseRepeat(string,n){var result='';if(!string||n<1||n>MAX_SAFE_INTEGER){return result;}// Leverage the exponentiation by squaring algorithm for a faster repeat. +// See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details. +do{if(n%2){result+=string;}n=nativeFloor(n/2);if(n){string+=string;}}while(n);return result;}/** + * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + */function baseRest(func,start){return setToString(overRest(func,start,identity),func+'');}/** + * The base implementation of `_.sample`. + * + * @private + * @param {Array|Object} collection The collection to sample. + * @returns {*} Returns the random element. + */function baseSample(collection){return arraySample(values(collection));}/** + * The base implementation of `_.sampleSize` without param guards. + * + * @private + * @param {Array|Object} collection The collection to sample. + * @param {number} n The number of elements to sample. + * @returns {Array} Returns the random elements. + */function baseSampleSize(collection,n){var array=values(collection);return shuffleSelf(array,baseClamp(n,0,array.length));}/** + * The base implementation of `_.set`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @param {Function} [customizer] The function to customize path creation. + * @returns {Object} Returns `object`. + */function baseSet(object,path,value,customizer){if(!isObject(object)){return object;}path=castPath(path,object);var index=-1,length=path.length,lastIndex=length-1,nested=object;while(nested!=null&&++indexlength?0:length+start;}end=end>length?length:end;if(end<0){end+=length;}length=start>end?0:end-start>>>0;start>>>=0;var result=Array(length);while(++index>>1,computed=array[mid];if(computed!==null&&!isSymbol(computed)&&(retHighest?computed<=value:computed=LARGE_ARRAY_SIZE){var set=iteratee?null:createSet(array);if(set){return setToArray(set);}isCommon=false;includes=cacheHas;seen=new SetCache();}else {seen=iteratee?[]:result;}outer:while(++index=length?array:baseSlice(array,start,end);}/** + * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout). + * + * @private + * @param {number|Object} id The timer id or timeout object of the timer to clear. + */var clearTimeout=ctxClearTimeout||function(id){return root.clearTimeout(id);};/** + * Creates a clone of `buffer`. + * + * @private + * @param {Buffer} buffer The buffer to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Buffer} Returns the cloned buffer. + */function cloneBuffer(buffer,isDeep){if(isDeep){return buffer.slice();}var length=buffer.length,result=allocUnsafe?allocUnsafe(length):new buffer.constructor(length);buffer.copy(result);return result;}/** + * Creates a clone of `arrayBuffer`. + * + * @private + * @param {ArrayBuffer} arrayBuffer The array buffer to clone. + * @returns {ArrayBuffer} Returns the cloned array buffer. + */function cloneArrayBuffer(arrayBuffer){var result=new arrayBuffer.constructor(arrayBuffer.byteLength);new Uint8Array(result).set(new Uint8Array(arrayBuffer));return result;}/** + * Creates a clone of `dataView`. + * + * @private + * @param {Object} dataView The data view to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned data view. + */function cloneDataView(dataView,isDeep){var buffer=isDeep?cloneArrayBuffer(dataView.buffer):dataView.buffer;return new dataView.constructor(buffer,dataView.byteOffset,dataView.byteLength);}/** + * Creates a clone of `regexp`. + * + * @private + * @param {Object} regexp The regexp to clone. + * @returns {Object} Returns the cloned regexp. + */function cloneRegExp(regexp){var result=new regexp.constructor(regexp.source,reFlags.exec(regexp));result.lastIndex=regexp.lastIndex;return result;}/** + * Creates a clone of the `symbol` object. + * + * @private + * @param {Object} symbol The symbol object to clone. + * @returns {Object} Returns the cloned symbol object. + */function cloneSymbol(symbol){return symbolValueOf?Object(symbolValueOf.call(symbol)):{};}/** + * Creates a clone of `typedArray`. + * + * @private + * @param {Object} typedArray The typed array to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned typed array. + */function cloneTypedArray(typedArray,isDeep){var buffer=isDeep?cloneArrayBuffer(typedArray.buffer):typedArray.buffer;return new typedArray.constructor(buffer,typedArray.byteOffset,typedArray.length);}/** + * Compares values to sort them in ascending order. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {number} Returns the sort order indicator for `value`. + */function compareAscending(value,other){if(value!==other){var valIsDefined=value!==undefined$1,valIsNull=value===null,valIsReflexive=value===value,valIsSymbol=isSymbol(value);var othIsDefined=other!==undefined$1,othIsNull=other===null,othIsReflexive=other===other,othIsSymbol=isSymbol(other);if(!othIsNull&&!othIsSymbol&&!valIsSymbol&&value>other||valIsSymbol&&othIsDefined&&othIsReflexive&&!othIsNull&&!othIsSymbol||valIsNull&&othIsDefined&&othIsReflexive||!valIsDefined&&othIsReflexive||!valIsReflexive){return 1;}if(!valIsNull&&!valIsSymbol&&!othIsSymbol&&value=ordersLength){return result;}var order=orders[index];return result*(order=='desc'?-1:1);}}// Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications +// that causes it, under certain circumstances, to provide the same value for +// `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 +// for more details. +// +// This also ensures a stable sort in V8 and other engines. +// See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. +return object.index-other.index;}/** + * Creates an array that is the composition of partially applied arguments, + * placeholders, and provided arguments into a single array of arguments. + * + * @private + * @param {Array} args The provided arguments. + * @param {Array} partials The arguments to prepend to those provided. + * @param {Array} holders The `partials` placeholder indexes. + * @params {boolean} [isCurried] Specify composing for a curried function. + * @returns {Array} Returns the new array of composed arguments. + */function composeArgs(args,partials,holders,isCurried){var argsIndex=-1,argsLength=args.length,holdersLength=holders.length,leftIndex=-1,leftLength=partials.length,rangeLength=nativeMax(argsLength-holdersLength,0),result=Array(leftLength+rangeLength),isUncurried=!isCurried;while(++leftIndex1?sources[length-1]:undefined$1,guard=length>2?sources[2]:undefined$1;customizer=assigner.length>3&&typeof customizer=='function'?(length--,customizer):undefined$1;if(guard&&isIterateeCall(sources[0],sources[1],guard)){customizer=length<3?undefined$1:customizer;length=1;}object=Object(object);while(++index-1?iterable[iteratee?collection[index]:index]:undefined$1;};}/** + * Creates a `_.flow` or `_.flowRight` function. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new flow function. + */function createFlow(fromRight){return flatRest(function(funcs){var length=funcs.length,index=length,prereq=LodashWrapper.prototype.thru;if(fromRight){funcs.reverse();}while(index--){var func=funcs[index];if(typeof func!='function'){throw new TypeError(FUNC_ERROR_TEXT);}if(prereq&&!wrapper&&getFuncName(func)=='wrapper'){var wrapper=new LodashWrapper([],true);}}index=wrapper?index:length;while(++index1){args.reverse();}if(isAry&&aryarrLength)){return false;}// Check that cyclic values are equal. +var arrStacked=stack.get(array);var othStacked=stack.get(other);if(arrStacked&&othStacked){return arrStacked==other&&othStacked==array;}var index=-1,result=true,seen=bitmask&COMPARE_UNORDERED_FLAG?new SetCache():undefined$1;stack.set(array,other);stack.set(other,array);// Ignore non-index properties. +while(++index1?'& ':'')+details[lastIndex];details=details.join(length>2?', ':' ');return source.replace(reWrapComment,'{\n/* [wrapped with '+details+'] */\n');}/** + * Checks if `value` is a flattenable `arguments` object or array. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. + */function isFlattenable(value){return isArray(value)||isArguments(value)||!!(spreadableSymbol&&value&&value[spreadableSymbol]);}/** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */function isIndex(value,length){var type=typeof value;length=length==null?MAX_SAFE_INTEGER:length;return !!length&&(type=='number'||type!='symbol'&&reIsUint.test(value))&&value>-1&&value%1==0&&value0){if(++count>=HOT_COUNT){return arguments[0];}}else {count=0;}return func.apply(undefined$1,arguments);};}/** + * A specialized version of `_.shuffle` which mutates and sets the size of `array`. + * + * @private + * @param {Array} array The array to shuffle. + * @param {number} [size=array.length] The size of `array`. + * @returns {Array} Returns `array`. + */function shuffleSelf(array,size){var index=-1,length=array.length,lastIndex=length-1;size=size===undefined$1?length:size;while(++index [['a', 'b'], ['c', 'd']] + * + * _.chunk(['a', 'b', 'c', 'd'], 3); + * // => [['a', 'b', 'c'], ['d']] + */function chunk(array,size,guard){if(guard?isIterateeCall(array,size,guard):size===undefined$1){size=1;}else {size=nativeMax(toInteger(size),0);}var length=array==null?0:array.length;if(!length||size<1){return [];}var index=0,resIndex=0,result=Array(nativeCeil(length/size));while(index [1, 2, 3] + */function compact(array){var index=-1,length=array==null?0:array.length,resIndex=0,result=[];while(++index [1, 2, 3, [4]] + * + * console.log(array); + * // => [1] + */function concat(){var length=arguments.length;if(!length){return [];}var args=Array(length-1),array=arguments[0],index=length;while(index--){args[index-1]=arguments[index];}return arrayPush(isArray(array)?copyArray(array):[array],baseFlatten(args,1));}/** + * Creates an array of `array` values not included in the other given arrays + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. The order and references of result values are + * determined by the first array. + * + * **Note:** Unlike `_.pullAll`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @see _.without, _.xor + * @example + * + * _.difference([2, 1], [2, 3]); + * // => [1] + */var difference=baseRest(function(array,values){return isArrayLikeObject(array)?baseDifference(array,baseFlatten(values,1,isArrayLikeObject,true)):[];});/** + * This method is like `_.difference` except that it accepts `iteratee` which + * is invoked for each element of `array` and `values` to generate the criterion + * by which they're compared. The order and references of result values are + * determined by the first array. The iteratee is invoked with one argument: + * (value). + * + * **Note:** Unlike `_.pullAllBy`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [1.2] + * + * // The `_.property` iteratee shorthand. + * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x'); + * // => [{ 'x': 2 }] + */var differenceBy=baseRest(function(array,values){var iteratee=last(values);if(isArrayLikeObject(iteratee)){iteratee=undefined$1;}return isArrayLikeObject(array)?baseDifference(array,baseFlatten(values,1,isArrayLikeObject,true),getIteratee(iteratee,2)):[];});/** + * This method is like `_.difference` except that it accepts `comparator` + * which is invoked to compare elements of `array` to `values`. The order and + * references of result values are determined by the first array. The comparator + * is invoked with two arguments: (arrVal, othVal). + * + * **Note:** Unlike `_.pullAllWith`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * + * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual); + * // => [{ 'x': 2, 'y': 1 }] + */var differenceWith=baseRest(function(array,values){var comparator=last(values);if(isArrayLikeObject(comparator)){comparator=undefined$1;}return isArrayLikeObject(array)?baseDifference(array,baseFlatten(values,1,isArrayLikeObject,true),undefined$1,comparator):[];});/** + * Creates a slice of `array` with `n` elements dropped from the beginning. + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.drop([1, 2, 3]); + * // => [2, 3] + * + * _.drop([1, 2, 3], 2); + * // => [3] + * + * _.drop([1, 2, 3], 5); + * // => [] + * + * _.drop([1, 2, 3], 0); + * // => [1, 2, 3] + */function drop(array,n,guard){var length=array==null?0:array.length;if(!length){return [];}n=guard||n===undefined$1?1:toInteger(n);return baseSlice(array,n<0?0:n,length);}/** + * Creates a slice of `array` with `n` elements dropped from the end. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.dropRight([1, 2, 3]); + * // => [1, 2] + * + * _.dropRight([1, 2, 3], 2); + * // => [1] + * + * _.dropRight([1, 2, 3], 5); + * // => [] + * + * _.dropRight([1, 2, 3], 0); + * // => [1, 2, 3] + */function dropRight(array,n,guard){var length=array==null?0:array.length;if(!length){return [];}n=guard||n===undefined$1?1:toInteger(n);n=length-n;return baseSlice(array,0,n<0?0:n);}/** + * Creates a slice of `array` excluding elements dropped from the end. + * Elements are dropped until `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.dropRightWhile(users, function(o) { return !o.active; }); + * // => objects for ['barney'] + * + * // The `_.matches` iteratee shorthand. + * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false }); + * // => objects for ['barney', 'fred'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.dropRightWhile(users, ['active', false]); + * // => objects for ['barney'] + * + * // The `_.property` iteratee shorthand. + * _.dropRightWhile(users, 'active'); + * // => objects for ['barney', 'fred', 'pebbles'] + */function dropRightWhile(array,predicate){return array&&array.length?baseWhile(array,getIteratee(predicate,3),true,true):[];}/** + * Creates a slice of `array` excluding elements dropped from the beginning. + * Elements are dropped until `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.dropWhile(users, function(o) { return !o.active; }); + * // => objects for ['pebbles'] + * + * // The `_.matches` iteratee shorthand. + * _.dropWhile(users, { 'user': 'barney', 'active': false }); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.dropWhile(users, ['active', false]); + * // => objects for ['pebbles'] + * + * // The `_.property` iteratee shorthand. + * _.dropWhile(users, 'active'); + * // => objects for ['barney', 'fred', 'pebbles'] + */function dropWhile(array,predicate){return array&&array.length?baseWhile(array,getIteratee(predicate,3),true):[];}/** + * Fills elements of `array` with `value` from `start` up to, but not + * including, `end`. + * + * **Note:** This method mutates `array`. + * + * @static + * @memberOf _ + * @since 3.2.0 + * @category Array + * @param {Array} array The array to fill. + * @param {*} value The value to fill `array` with. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns `array`. + * @example + * + * var array = [1, 2, 3]; + * + * _.fill(array, 'a'); + * console.log(array); + * // => ['a', 'a', 'a'] + * + * _.fill(Array(3), 2); + * // => [2, 2, 2] + * + * _.fill([4, 6, 8, 10], '*', 1, 3); + * // => [4, '*', '*', 10] + */function fill(array,value,start,end){var length=array==null?0:array.length;if(!length){return [];}if(start&&typeof start!='number'&&isIterateeCall(array,value,start)){start=0;end=length;}return baseFill(array,value,start,end);}/** + * This method is like `_.find` except that it returns the index of the first + * element `predicate` returns truthy for instead of the element itself. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.findIndex(users, function(o) { return o.user == 'barney'; }); + * // => 0 + * + * // The `_.matches` iteratee shorthand. + * _.findIndex(users, { 'user': 'fred', 'active': false }); + * // => 1 + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findIndex(users, ['active', false]); + * // => 0 + * + * // The `_.property` iteratee shorthand. + * _.findIndex(users, 'active'); + * // => 2 + */function findIndex(array,predicate,fromIndex){var length=array==null?0:array.length;if(!length){return -1;}var index=fromIndex==null?0:toInteger(fromIndex);if(index<0){index=nativeMax(length+index,0);}return baseFindIndex(array,getIteratee(predicate,3),index);}/** + * This method is like `_.findIndex` except that it iterates over elements + * of `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=array.length-1] The index to search from. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; }); + * // => 2 + * + * // The `_.matches` iteratee shorthand. + * _.findLastIndex(users, { 'user': 'barney', 'active': true }); + * // => 0 + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findLastIndex(users, ['active', false]); + * // => 2 + * + * // The `_.property` iteratee shorthand. + * _.findLastIndex(users, 'active'); + * // => 0 + */function findLastIndex(array,predicate,fromIndex){var length=array==null?0:array.length;if(!length){return -1;}var index=length-1;if(fromIndex!==undefined$1){index=toInteger(fromIndex);index=fromIndex<0?nativeMax(length+index,0):nativeMin(index,length-1);}return baseFindIndex(array,getIteratee(predicate,3),index,true);}/** + * Flattens `array` a single level deep. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flatten([1, [2, [3, [4]], 5]]); + * // => [1, 2, [3, [4]], 5] + */function flatten(array){var length=array==null?0:array.length;return length?baseFlatten(array,1):[];}/** + * Recursively flattens `array`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flattenDeep([1, [2, [3, [4]], 5]]); + * // => [1, 2, 3, 4, 5] + */function flattenDeep(array){var length=array==null?0:array.length;return length?baseFlatten(array,INFINITY):[];}/** + * Recursively flatten `array` up to `depth` times. + * + * @static + * @memberOf _ + * @since 4.4.0 + * @category Array + * @param {Array} array The array to flatten. + * @param {number} [depth=1] The maximum recursion depth. + * @returns {Array} Returns the new flattened array. + * @example + * + * var array = [1, [2, [3, [4]], 5]]; + * + * _.flattenDepth(array, 1); + * // => [1, 2, [3, [4]], 5] + * + * _.flattenDepth(array, 2); + * // => [1, 2, 3, [4], 5] + */function flattenDepth(array,depth){var length=array==null?0:array.length;if(!length){return [];}depth=depth===undefined$1?1:toInteger(depth);return baseFlatten(array,depth);}/** + * The inverse of `_.toPairs`; this method returns an object composed + * from key-value `pairs`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} pairs The key-value pairs. + * @returns {Object} Returns the new object. + * @example + * + * _.fromPairs([['a', 1], ['b', 2]]); + * // => { 'a': 1, 'b': 2 } + */function fromPairs(pairs){var index=-1,length=pairs==null?0:pairs.length,result={};while(++index 1 + * + * _.head([]); + * // => undefined + */function head(array){return array&&array.length?array[0]:undefined$1;}/** + * Gets the index at which the first occurrence of `value` is found in `array` + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. If `fromIndex` is negative, it's used as the + * offset from the end of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=0] The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.indexOf([1, 2, 1, 2], 2); + * // => 1 + * + * // Search from the `fromIndex`. + * _.indexOf([1, 2, 1, 2], 2, 2); + * // => 3 + */function indexOf(array,value,fromIndex){var length=array==null?0:array.length;if(!length){return -1;}var index=fromIndex==null?0:toInteger(fromIndex);if(index<0){index=nativeMax(length+index,0);}return baseIndexOf(array,value,index);}/** + * Gets all but the last element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.initial([1, 2, 3]); + * // => [1, 2] + */function initial(array){var length=array==null?0:array.length;return length?baseSlice(array,0,-1):[];}/** + * Creates an array of unique values that are included in all given arrays + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. The order and references of result values are + * determined by the first array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * _.intersection([2, 1], [2, 3]); + * // => [2] + */var intersection=baseRest(function(arrays){var mapped=arrayMap(arrays,castArrayLikeObject);return mapped.length&&mapped[0]===arrays[0]?baseIntersection(mapped):[];});/** + * This method is like `_.intersection` except that it accepts `iteratee` + * which is invoked for each element of each `arrays` to generate the criterion + * by which they're compared. The order and references of result values are + * determined by the first array. The iteratee is invoked with one argument: + * (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [2.1] + * + * // The `_.property` iteratee shorthand. + * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }] + */var intersectionBy=baseRest(function(arrays){var iteratee=last(arrays),mapped=arrayMap(arrays,castArrayLikeObject);if(iteratee===last(mapped)){iteratee=undefined$1;}else {mapped.pop();}return mapped.length&&mapped[0]===arrays[0]?baseIntersection(mapped,getIteratee(iteratee,2)):[];});/** + * This method is like `_.intersection` except that it accepts `comparator` + * which is invoked to compare elements of `arrays`. The order and references + * of result values are determined by the first array. The comparator is + * invoked with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.intersectionWith(objects, others, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }] + */var intersectionWith=baseRest(function(arrays){var comparator=last(arrays),mapped=arrayMap(arrays,castArrayLikeObject);comparator=typeof comparator=='function'?comparator:undefined$1;if(comparator){mapped.pop();}return mapped.length&&mapped[0]===arrays[0]?baseIntersection(mapped,undefined$1,comparator):[];});/** + * Converts all elements in `array` into a string separated by `separator`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to convert. + * @param {string} [separator=','] The element separator. + * @returns {string} Returns the joined string. + * @example + * + * _.join(['a', 'b', 'c'], '~'); + * // => 'a~b~c' + */function join(array,separator){return array==null?'':nativeJoin.call(array,separator);}/** + * Gets the last element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the last element of `array`. + * @example + * + * _.last([1, 2, 3]); + * // => 3 + */function last(array){var length=array==null?0:array.length;return length?array[length-1]:undefined$1;}/** + * This method is like `_.indexOf` except that it iterates over elements of + * `array` from right to left. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=array.length-1] The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.lastIndexOf([1, 2, 1, 2], 2); + * // => 3 + * + * // Search from the `fromIndex`. + * _.lastIndexOf([1, 2, 1, 2], 2, 2); + * // => 1 + */function lastIndexOf(array,value,fromIndex){var length=array==null?0:array.length;if(!length){return -1;}var index=length;if(fromIndex!==undefined$1){index=toInteger(fromIndex);index=index<0?nativeMax(length+index,0):nativeMin(index,length-1);}return value===value?strictLastIndexOf(array,value,index):baseFindIndex(array,baseIsNaN,index,true);}/** + * Gets the element at index `n` of `array`. If `n` is negative, the nth + * element from the end is returned. + * + * @static + * @memberOf _ + * @since 4.11.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=0] The index of the element to return. + * @returns {*} Returns the nth element of `array`. + * @example + * + * var array = ['a', 'b', 'c', 'd']; + * + * _.nth(array, 1); + * // => 'b' + * + * _.nth(array, -2); + * // => 'c'; + */function nth(array,n){return array&&array.length?baseNth(array,toInteger(n)):undefined$1;}/** + * Removes all given values from `array` using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove` + * to remove elements from an array by predicate. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {...*} [values] The values to remove. + * @returns {Array} Returns `array`. + * @example + * + * var array = ['a', 'b', 'c', 'a', 'b', 'c']; + * + * _.pull(array, 'a', 'c'); + * console.log(array); + * // => ['b', 'b'] + */var pull=baseRest(pullAll);/** + * This method is like `_.pull` except that it accepts an array of values to remove. + * + * **Note:** Unlike `_.difference`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @returns {Array} Returns `array`. + * @example + * + * var array = ['a', 'b', 'c', 'a', 'b', 'c']; + * + * _.pullAll(array, ['a', 'c']); + * console.log(array); + * // => ['b', 'b'] + */function pullAll(array,values){return array&&array.length&&values&&values.length?basePullAll(array,values):array;}/** + * This method is like `_.pullAll` except that it accepts `iteratee` which is + * invoked for each element of `array` and `values` to generate the criterion + * by which they're compared. The iteratee is invoked with one argument: (value). + * + * **Note:** Unlike `_.differenceBy`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns `array`. + * @example + * + * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }]; + * + * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x'); + * console.log(array); + * // => [{ 'x': 2 }] + */function pullAllBy(array,values,iteratee){return array&&array.length&&values&&values.length?basePullAll(array,values,getIteratee(iteratee,2)):array;}/** + * This method is like `_.pullAll` except that it accepts `comparator` which + * is invoked to compare elements of `array` to `values`. The comparator is + * invoked with two arguments: (arrVal, othVal). + * + * **Note:** Unlike `_.differenceWith`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 4.6.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns `array`. + * @example + * + * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }]; + * + * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual); + * console.log(array); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }] + */function pullAllWith(array,values,comparator){return array&&array.length&&values&&values.length?basePullAll(array,values,undefined$1,comparator):array;}/** + * Removes elements from `array` corresponding to `indexes` and returns an + * array of removed elements. + * + * **Note:** Unlike `_.at`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {...(number|number[])} [indexes] The indexes of elements to remove. + * @returns {Array} Returns the new array of removed elements. + * @example + * + * var array = ['a', 'b', 'c', 'd']; + * var pulled = _.pullAt(array, [1, 3]); + * + * console.log(array); + * // => ['a', 'c'] + * + * console.log(pulled); + * // => ['b', 'd'] + */var pullAt=flatRest(function(array,indexes){var length=array==null?0:array.length,result=baseAt(array,indexes);basePullAt(array,arrayMap(indexes,function(index){return isIndex(index,length)?+index:index;}).sort(compareAscending));return result;});/** + * Removes all elements from `array` that `predicate` returns truthy for + * and returns an array of the removed elements. The predicate is invoked + * with three arguments: (value, index, array). + * + * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull` + * to pull elements from an array by value. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new array of removed elements. + * @example + * + * var array = [1, 2, 3, 4]; + * var evens = _.remove(array, function(n) { + * return n % 2 == 0; + * }); + * + * console.log(array); + * // => [1, 3] + * + * console.log(evens); + * // => [2, 4] + */function remove(array,predicate){var result=[];if(!(array&&array.length)){return result;}var index=-1,indexes=[],length=array.length;predicate=getIteratee(predicate,3);while(++index [3, 2, 1] + * + * console.log(array); + * // => [3, 2, 1] + */function reverse(array){return array==null?array:nativeReverse.call(array);}/** + * Creates a slice of `array` from `start` up to, but not including, `end`. + * + * **Note:** This method is used instead of + * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are + * returned. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */function slice(array,start,end){var length=array==null?0:array.length;if(!length){return [];}if(end&&typeof end!='number'&&isIterateeCall(array,start,end)){start=0;end=length;}else {start=start==null?0:toInteger(start);end=end===undefined$1?length:toInteger(end);}return baseSlice(array,start,end);}/** + * Uses a binary search to determine the lowest index at which `value` + * should be inserted into `array` in order to maintain its sort order. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * _.sortedIndex([30, 50], 40); + * // => 1 + */function sortedIndex(array,value){return baseSortedIndex(array,value);}/** + * This method is like `_.sortedIndex` except that it accepts `iteratee` + * which is invoked for `value` and each element of `array` to compute their + * sort ranking. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * var objects = [{ 'x': 4 }, { 'x': 5 }]; + * + * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); + * // => 0 + * + * // The `_.property` iteratee shorthand. + * _.sortedIndexBy(objects, { 'x': 4 }, 'x'); + * // => 0 + */function sortedIndexBy(array,value,iteratee){return baseSortedIndexBy(array,value,getIteratee(iteratee,2));}/** + * This method is like `_.indexOf` except that it performs a binary + * search on a sorted `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.sortedIndexOf([4, 5, 5, 5, 6], 5); + * // => 1 + */function sortedIndexOf(array,value){var length=array==null?0:array.length;if(length){var index=baseSortedIndex(array,value);if(index 4 + */function sortedLastIndex(array,value){return baseSortedIndex(array,value,true);}/** + * This method is like `_.sortedLastIndex` except that it accepts `iteratee` + * which is invoked for `value` and each element of `array` to compute their + * sort ranking. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * var objects = [{ 'x': 4 }, { 'x': 5 }]; + * + * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); + * // => 1 + * + * // The `_.property` iteratee shorthand. + * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x'); + * // => 1 + */function sortedLastIndexBy(array,value,iteratee){return baseSortedIndexBy(array,value,getIteratee(iteratee,2),true);}/** + * This method is like `_.lastIndexOf` except that it performs a binary + * search on a sorted `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5); + * // => 3 + */function sortedLastIndexOf(array,value){var length=array==null?0:array.length;if(length){var index=baseSortedIndex(array,value,true)-1;if(eq(array[index],value)){return index;}}return -1;}/** + * This method is like `_.uniq` except that it's designed and optimized + * for sorted arrays. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.sortedUniq([1, 1, 2]); + * // => [1, 2] + */function sortedUniq(array){return array&&array.length?baseSortedUniq(array):[];}/** + * This method is like `_.uniqBy` except that it's designed and optimized + * for sorted arrays. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor); + * // => [1.1, 2.3] + */function sortedUniqBy(array,iteratee){return array&&array.length?baseSortedUniq(array,getIteratee(iteratee,2)):[];}/** + * Gets all but the first element of `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to query. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.tail([1, 2, 3]); + * // => [2, 3] + */function tail(array){var length=array==null?0:array.length;return length?baseSlice(array,1,length):[];}/** + * Creates a slice of `array` with `n` elements taken from the beginning. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to take. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.take([1, 2, 3]); + * // => [1] + * + * _.take([1, 2, 3], 2); + * // => [1, 2] + * + * _.take([1, 2, 3], 5); + * // => [1, 2, 3] + * + * _.take([1, 2, 3], 0); + * // => [] + */function take(array,n,guard){if(!(array&&array.length)){return [];}n=guard||n===undefined$1?1:toInteger(n);return baseSlice(array,0,n<0?0:n);}/** + * Creates a slice of `array` with `n` elements taken from the end. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to take. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.takeRight([1, 2, 3]); + * // => [3] + * + * _.takeRight([1, 2, 3], 2); + * // => [2, 3] + * + * _.takeRight([1, 2, 3], 5); + * // => [1, 2, 3] + * + * _.takeRight([1, 2, 3], 0); + * // => [] + */function takeRight(array,n,guard){var length=array==null?0:array.length;if(!length){return [];}n=guard||n===undefined$1?1:toInteger(n);n=length-n;return baseSlice(array,n<0?0:n,length);}/** + * Creates a slice of `array` with elements taken from the end. Elements are + * taken until `predicate` returns falsey. The predicate is invoked with + * three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.takeRightWhile(users, function(o) { return !o.active; }); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.matches` iteratee shorthand. + * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false }); + * // => objects for ['pebbles'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.takeRightWhile(users, ['active', false]); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.property` iteratee shorthand. + * _.takeRightWhile(users, 'active'); + * // => [] + */function takeRightWhile(array,predicate){return array&&array.length?baseWhile(array,getIteratee(predicate,3),false,true):[];}/** + * Creates a slice of `array` with elements taken from the beginning. Elements + * are taken until `predicate` returns falsey. The predicate is invoked with + * three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.takeWhile(users, function(o) { return !o.active; }); + * // => objects for ['barney', 'fred'] + * + * // The `_.matches` iteratee shorthand. + * _.takeWhile(users, { 'user': 'barney', 'active': false }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.takeWhile(users, ['active', false]); + * // => objects for ['barney', 'fred'] + * + * // The `_.property` iteratee shorthand. + * _.takeWhile(users, 'active'); + * // => [] + */function takeWhile(array,predicate){return array&&array.length?baseWhile(array,getIteratee(predicate,3)):[];}/** + * Creates an array of unique values, in order, from all given arrays using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of combined values. + * @example + * + * _.union([2], [1, 2]); + * // => [2, 1] + */var union=baseRest(function(arrays){return baseUniq(baseFlatten(arrays,1,isArrayLikeObject,true));});/** + * This method is like `_.union` except that it accepts `iteratee` which is + * invoked for each element of each `arrays` to generate the criterion by + * which uniqueness is computed. Result values are chosen from the first + * array in which the value occurs. The iteratee is invoked with one argument: + * (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of combined values. + * @example + * + * _.unionBy([2.1], [1.2, 2.3], Math.floor); + * // => [2.1, 1.2] + * + * // The `_.property` iteratee shorthand. + * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }, { 'x': 2 }] + */var unionBy=baseRest(function(arrays){var iteratee=last(arrays);if(isArrayLikeObject(iteratee)){iteratee=undefined$1;}return baseUniq(baseFlatten(arrays,1,isArrayLikeObject,true),getIteratee(iteratee,2));});/** + * This method is like `_.union` except that it accepts `comparator` which + * is invoked to compare elements of `arrays`. Result values are chosen from + * the first array in which the value occurs. The comparator is invoked + * with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of combined values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.unionWith(objects, others, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] + */var unionWith=baseRest(function(arrays){var comparator=last(arrays);comparator=typeof comparator=='function'?comparator:undefined$1;return baseUniq(baseFlatten(arrays,1,isArrayLikeObject,true),undefined$1,comparator);});/** + * Creates a duplicate-free version of an array, using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons, in which only the first occurrence of each element + * is kept. The order of result values is determined by the order they occur + * in the array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.uniq([2, 1, 2]); + * // => [2, 1] + */function uniq(array){return array&&array.length?baseUniq(array):[];}/** + * This method is like `_.uniq` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the criterion by which + * uniqueness is computed. The order of result values is determined by the + * order they occur in the array. The iteratee is invoked with one argument: + * (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.uniqBy([2.1, 1.2, 2.3], Math.floor); + * // => [2.1, 1.2] + * + * // The `_.property` iteratee shorthand. + * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }, { 'x': 2 }] + */function uniqBy(array,iteratee){return array&&array.length?baseUniq(array,getIteratee(iteratee,2)):[];}/** + * This method is like `_.uniq` except that it accepts `comparator` which + * is invoked to compare elements of `array`. The order of result values is + * determined by the order they occur in the array.The comparator is invoked + * with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.uniqWith(objects, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }] + */function uniqWith(array,comparator){comparator=typeof comparator=='function'?comparator:undefined$1;return array&&array.length?baseUniq(array,undefined$1,comparator):[];}/** + * This method is like `_.zip` except that it accepts an array of grouped + * elements and creates an array regrouping the elements to their pre-zip + * configuration. + * + * @static + * @memberOf _ + * @since 1.2.0 + * @category Array + * @param {Array} array The array of grouped elements to process. + * @returns {Array} Returns the new array of regrouped elements. + * @example + * + * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]); + * // => [['a', 1, true], ['b', 2, false]] + * + * _.unzip(zipped); + * // => [['a', 'b'], [1, 2], [true, false]] + */function unzip(array){if(!(array&&array.length)){return [];}var length=0;array=arrayFilter(array,function(group){if(isArrayLikeObject(group)){length=nativeMax(group.length,length);return true;}});return baseTimes(length,function(index){return arrayMap(array,baseProperty(index));});}/** + * This method is like `_.unzip` except that it accepts `iteratee` to specify + * how regrouped values should be combined. The iteratee is invoked with the + * elements of each group: (...group). + * + * @static + * @memberOf _ + * @since 3.8.0 + * @category Array + * @param {Array} array The array of grouped elements to process. + * @param {Function} [iteratee=_.identity] The function to combine + * regrouped values. + * @returns {Array} Returns the new array of regrouped elements. + * @example + * + * var zipped = _.zip([1, 2], [10, 20], [100, 200]); + * // => [[1, 10, 100], [2, 20, 200]] + * + * _.unzipWith(zipped, _.add); + * // => [3, 30, 300] + */function unzipWith(array,iteratee){if(!(array&&array.length)){return [];}var result=unzip(array);if(iteratee==null){return result;}return arrayMap(result,function(group){return apply(iteratee,undefined$1,group);});}/** + * Creates an array excluding all given values using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * **Note:** Unlike `_.pull`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...*} [values] The values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @see _.difference, _.xor + * @example + * + * _.without([2, 1, 2, 3], 1, 2); + * // => [3] + */var without=baseRest(function(array,values){return isArrayLikeObject(array)?baseDifference(array,values):[];});/** + * Creates an array of unique values that is the + * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) + * of the given arrays. The order of result values is determined by the order + * they occur in the arrays. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of filtered values. + * @see _.difference, _.without + * @example + * + * _.xor([2, 1], [2, 3]); + * // => [1, 3] + */var xor=baseRest(function(arrays){return baseXor(arrayFilter(arrays,isArrayLikeObject));});/** + * This method is like `_.xor` except that it accepts `iteratee` which is + * invoked for each element of each `arrays` to generate the criterion by + * which by which they're compared. The order of result values is determined + * by the order they occur in the arrays. The iteratee is invoked with one + * argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [1.2, 3.4] + * + * // The `_.property` iteratee shorthand. + * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 2 }] + */var xorBy=baseRest(function(arrays){var iteratee=last(arrays);if(isArrayLikeObject(iteratee)){iteratee=undefined$1;}return baseXor(arrayFilter(arrays,isArrayLikeObject),getIteratee(iteratee,2));});/** + * This method is like `_.xor` except that it accepts `comparator` which is + * invoked to compare elements of `arrays`. The order of result values is + * determined by the order they occur in the arrays. The comparator is invoked + * with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.xorWith(objects, others, _.isEqual); + * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] + */var xorWith=baseRest(function(arrays){var comparator=last(arrays);comparator=typeof comparator=='function'?comparator:undefined$1;return baseXor(arrayFilter(arrays,isArrayLikeObject),undefined$1,comparator);});/** + * Creates an array of grouped elements, the first of which contains the + * first elements of the given arrays, the second of which contains the + * second elements of the given arrays, and so on. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to process. + * @returns {Array} Returns the new array of grouped elements. + * @example + * + * _.zip(['a', 'b'], [1, 2], [true, false]); + * // => [['a', 1, true], ['b', 2, false]] + */var zip=baseRest(unzip);/** + * This method is like `_.fromPairs` except that it accepts two arrays, + * one of property identifiers and one of corresponding values. + * + * @static + * @memberOf _ + * @since 0.4.0 + * @category Array + * @param {Array} [props=[]] The property identifiers. + * @param {Array} [values=[]] The property values. + * @returns {Object} Returns the new object. + * @example + * + * _.zipObject(['a', 'b'], [1, 2]); + * // => { 'a': 1, 'b': 2 } + */function zipObject(props,values){return baseZipObject(props||[],values||[],assignValue);}/** + * This method is like `_.zipObject` except that it supports property paths. + * + * @static + * @memberOf _ + * @since 4.1.0 + * @category Array + * @param {Array} [props=[]] The property identifiers. + * @param {Array} [values=[]] The property values. + * @returns {Object} Returns the new object. + * @example + * + * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]); + * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } } + */function zipObjectDeep(props,values){return baseZipObject(props||[],values||[],baseSet);}/** + * This method is like `_.zip` except that it accepts `iteratee` to specify + * how grouped values should be combined. The iteratee is invoked with the + * elements of each group: (...group). + * + * @static + * @memberOf _ + * @since 3.8.0 + * @category Array + * @param {...Array} [arrays] The arrays to process. + * @param {Function} [iteratee=_.identity] The function to combine + * grouped values. + * @returns {Array} Returns the new array of grouped elements. + * @example + * + * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) { + * return a + b + c; + * }); + * // => [111, 222] + */var zipWith=baseRest(function(arrays){var length=arrays.length,iteratee=length>1?arrays[length-1]:undefined$1;iteratee=typeof iteratee=='function'?(arrays.pop(),iteratee):undefined$1;return unzipWith(arrays,iteratee);});/*------------------------------------------------------------------------*/ /** + * Creates a `lodash` wrapper instance that wraps `value` with explicit method + * chain sequences enabled. The result of such sequences must be unwrapped + * with `_#value`. + * + * @static + * @memberOf _ + * @since 1.3.0 + * @category Seq + * @param {*} value The value to wrap. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'pebbles', 'age': 1 } + * ]; + * + * var youngest = _ + * .chain(users) + * .sortBy('age') + * .map(function(o) { + * return o.user + ' is ' + o.age; + * }) + * .head() + * .value(); + * // => 'pebbles is 1' + */function chain(value){var result=lodash(value);result.__chain__=true;return result;}/** + * This method invokes `interceptor` and returns `value`. The interceptor + * is invoked with one argument; (value). The purpose of this method is to + * "tap into" a method chain sequence in order to modify intermediate results. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @returns {*} Returns `value`. + * @example + * + * _([1, 2, 3]) + * .tap(function(array) { + * // Mutate input array. + * array.pop(); + * }) + * .reverse() + * .value(); + * // => [2, 1] + */function tap(value,interceptor){interceptor(value);return value;}/** + * This method is like `_.tap` except that it returns the result of `interceptor`. + * The purpose of this method is to "pass thru" values replacing intermediate + * results in a method chain sequence. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Seq + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @returns {*} Returns the result of `interceptor`. + * @example + * + * _(' abc ') + * .chain() + * .trim() + * .thru(function(value) { + * return [value]; + * }) + * .value(); + * // => ['abc'] + */function thru(value,interceptor){return interceptor(value);}/** + * This method is the wrapper version of `_.at`. + * + * @name at + * @memberOf _ + * @since 1.0.0 + * @category Seq + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; + * + * _(object).at(['a[0].b.c', 'a[1]']).value(); + * // => [3, 4] + */var wrapperAt=flatRest(function(paths){var length=paths.length,start=length?paths[0]:0,value=this.__wrapped__,interceptor=function(object){return baseAt(object,paths);};if(length>1||this.__actions__.length||!(value instanceof LazyWrapper)||!isIndex(start)){return this.thru(interceptor);}value=value.slice(start,+start+(length?1:0));value.__actions__.push({'func':thru,'args':[interceptor],'thisArg':undefined$1});return new LodashWrapper(value,this.__chain__).thru(function(array){if(length&&!array.length){array.push(undefined$1);}return array;});});/** + * Creates a `lodash` wrapper instance with explicit method chain sequences enabled. + * + * @name chain + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 } + * ]; + * + * // A sequence without explicit chaining. + * _(users).head(); + * // => { 'user': 'barney', 'age': 36 } + * + * // A sequence with explicit chaining. + * _(users) + * .chain() + * .head() + * .pick('user') + * .value(); + * // => { 'user': 'barney' } + */function wrapperChain(){return chain(this);}/** + * Executes the chain sequence and returns the wrapped result. + * + * @name commit + * @memberOf _ + * @since 3.2.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var array = [1, 2]; + * var wrapped = _(array).push(3); + * + * console.log(array); + * // => [1, 2] + * + * wrapped = wrapped.commit(); + * console.log(array); + * // => [1, 2, 3] + * + * wrapped.last(); + * // => 3 + * + * console.log(array); + * // => [1, 2, 3] + */function wrapperCommit(){return new LodashWrapper(this.value(),this.__chain__);}/** + * Gets the next value on a wrapped object following the + * [iterator protocol](https://mdn.io/iteration_protocols#iterator). + * + * @name next + * @memberOf _ + * @since 4.0.0 + * @category Seq + * @returns {Object} Returns the next iterator value. + * @example + * + * var wrapped = _([1, 2]); + * + * wrapped.next(); + * // => { 'done': false, 'value': 1 } + * + * wrapped.next(); + * // => { 'done': false, 'value': 2 } + * + * wrapped.next(); + * // => { 'done': true, 'value': undefined } + */function wrapperNext(){if(this.__values__===undefined$1){this.__values__=toArray(this.value());}var done=this.__index__>=this.__values__.length,value=done?undefined$1:this.__values__[this.__index__++];return {'done':done,'value':value};}/** + * Enables the wrapper to be iterable. + * + * @name Symbol.iterator + * @memberOf _ + * @since 4.0.0 + * @category Seq + * @returns {Object} Returns the wrapper object. + * @example + * + * var wrapped = _([1, 2]); + * + * wrapped[Symbol.iterator]() === wrapped; + * // => true + * + * Array.from(wrapped); + * // => [1, 2] + */function wrapperToIterator(){return this;}/** + * Creates a clone of the chain sequence planting `value` as the wrapped value. + * + * @name plant + * @memberOf _ + * @since 3.2.0 + * @category Seq + * @param {*} value The value to plant. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * function square(n) { + * return n * n; + * } + * + * var wrapped = _([1, 2]).map(square); + * var other = wrapped.plant([3, 4]); + * + * other.value(); + * // => [9, 16] + * + * wrapped.value(); + * // => [1, 4] + */function wrapperPlant(value){var result,parent=this;while(parent instanceof baseLodash){var clone=wrapperClone(parent);clone.__index__=0;clone.__values__=undefined$1;if(result){previous.__wrapped__=clone;}else {result=clone;}var previous=clone;parent=parent.__wrapped__;}previous.__wrapped__=value;return result;}/** + * This method is the wrapper version of `_.reverse`. + * + * **Note:** This method mutates the wrapped array. + * + * @name reverse + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var array = [1, 2, 3]; + * + * _(array).reverse().value() + * // => [3, 2, 1] + * + * console.log(array); + * // => [3, 2, 1] + */function wrapperReverse(){var value=this.__wrapped__;if(value instanceof LazyWrapper){var wrapped=value;if(this.__actions__.length){wrapped=new LazyWrapper(this);}wrapped=wrapped.reverse();wrapped.__actions__.push({'func':thru,'args':[reverse],'thisArg':undefined$1});return new LodashWrapper(wrapped,this.__chain__);}return this.thru(reverse);}/** + * Executes the chain sequence to resolve the unwrapped value. + * + * @name value + * @memberOf _ + * @since 0.1.0 + * @alias toJSON, valueOf + * @category Seq + * @returns {*} Returns the resolved unwrapped value. + * @example + * + * _([1, 2, 3]).value(); + * // => [1, 2, 3] + */function wrapperValue(){return baseWrapperValue(this.__wrapped__,this.__actions__);}/*------------------------------------------------------------------------*/ /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The corresponding value of + * each key is the number of times the key was returned by `iteratee`. The + * iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * _.countBy([6.1, 4.2, 6.3], Math.floor); + * // => { '4': 1, '6': 2 } + * + * // The `_.property` iteratee shorthand. + * _.countBy(['one', 'two', 'three'], 'length'); + * // => { '3': 2, '5': 1 } + */var countBy=createAggregator(function(result,value,key){if(hasOwnProperty.call(result,key)){++result[key];}else {baseAssignValue(result,key,1);}});/** + * Checks if `predicate` returns truthy for **all** elements of `collection`. + * Iteration is stopped once `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index|key, collection). + * + * **Note:** This method returns `true` for + * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because + * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of + * elements of empty collections. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false`. + * @example + * + * _.every([true, 1, null, 'yes'], Boolean); + * // => false + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * // The `_.matches` iteratee shorthand. + * _.every(users, { 'user': 'barney', 'active': false }); + * // => false + * + * // The `_.matchesProperty` iteratee shorthand. + * _.every(users, ['active', false]); + * // => true + * + * // The `_.property` iteratee shorthand. + * _.every(users, 'active'); + * // => false + */function every(collection,predicate,guard){var func=isArray(collection)?arrayEvery:baseEvery;if(guard&&isIterateeCall(collection,predicate,guard)){predicate=undefined$1;}return func(collection,getIteratee(predicate,3));}/** + * Iterates over elements of `collection`, returning an array of all elements + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * **Note:** Unlike `_.remove`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + * @see _.reject + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * _.filter(users, function(o) { return !o.active; }); + * // => objects for ['fred'] + * + * // The `_.matches` iteratee shorthand. + * _.filter(users, { 'age': 36, 'active': true }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.filter(users, ['active', false]); + * // => objects for ['fred'] + * + * // The `_.property` iteratee shorthand. + * _.filter(users, 'active'); + * // => objects for ['barney'] + * + * // Combining several predicates using `_.overEvery` or `_.overSome`. + * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]])); + * // => objects for ['fred', 'barney'] + */function filter(collection,predicate){var func=isArray(collection)?arrayFilter:baseFilter;return func(collection,getIteratee(predicate,3));}/** + * Iterates over elements of `collection`, returning the first element + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false }, + * { 'user': 'pebbles', 'age': 1, 'active': true } + * ]; + * + * _.find(users, function(o) { return o.age < 40; }); + * // => object for 'barney' + * + * // The `_.matches` iteratee shorthand. + * _.find(users, { 'age': 1, 'active': true }); + * // => object for 'pebbles' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.find(users, ['active', false]); + * // => object for 'fred' + * + * // The `_.property` iteratee shorthand. + * _.find(users, 'active'); + * // => object for 'barney' + */var find=createFind(findIndex);/** + * This method is like `_.find` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Collection + * @param {Array|Object} collection The collection to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=collection.length-1] The index to search from. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * _.findLast([1, 2, 3, 4], function(n) { + * return n % 2 == 1; + * }); + * // => 3 + */var findLast=createFind(findLastIndex);/** + * Creates a flattened array of values by running each element in `collection` + * thru `iteratee` and flattening the mapped results. The iteratee is invoked + * with three arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [n, n]; + * } + * + * _.flatMap([1, 2], duplicate); + * // => [1, 1, 2, 2] + */function flatMap(collection,iteratee){return baseFlatten(map(collection,iteratee),1);}/** + * This method is like `_.flatMap` except that it recursively flattens the + * mapped results. + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [[[n, n]]]; + * } + * + * _.flatMapDeep([1, 2], duplicate); + * // => [1, 1, 2, 2] + */function flatMapDeep(collection,iteratee){return baseFlatten(map(collection,iteratee),INFINITY);}/** + * This method is like `_.flatMap` except that it recursively flattens the + * mapped results up to `depth` times. + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {number} [depth=1] The maximum recursion depth. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [[[n, n]]]; + * } + * + * _.flatMapDepth([1, 2], duplicate, 2); + * // => [[1, 1], [2, 2]] + */function flatMapDepth(collection,iteratee,depth){depth=depth===undefined$1?1:toInteger(depth);return baseFlatten(map(collection,iteratee),depth);}/** + * Iterates over elements of `collection` and invokes `iteratee` for each element. + * The iteratee is invoked with three arguments: (value, index|key, collection). + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * **Note:** As with other "Collections" methods, objects with a "length" + * property are iterated like arrays. To avoid this behavior use `_.forIn` + * or `_.forOwn` for object iteration. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @alias each + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + * @see _.forEachRight + * @example + * + * _.forEach([1, 2], function(value) { + * console.log(value); + * }); + * // => Logs `1` then `2`. + * + * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */function forEach(collection,iteratee){var func=isArray(collection)?arrayEach:baseEach;return func(collection,getIteratee(iteratee,3));}/** + * This method is like `_.forEach` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @alias eachRight + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + * @see _.forEach + * @example + * + * _.forEachRight([1, 2], function(value) { + * console.log(value); + * }); + * // => Logs `2` then `1`. + */function forEachRight(collection,iteratee){var func=isArray(collection)?arrayEachRight:baseEachRight;return func(collection,getIteratee(iteratee,3));}/** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The order of grouped values + * is determined by the order they occur in `collection`. The corresponding + * value of each key is an array of elements responsible for generating the + * key. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * _.groupBy([6.1, 4.2, 6.3], Math.floor); + * // => { '4': [4.2], '6': [6.1, 6.3] } + * + * // The `_.property` iteratee shorthand. + * _.groupBy(['one', 'two', 'three'], 'length'); + * // => { '3': ['one', 'two'], '5': ['three'] } + */var groupBy=createAggregator(function(result,value,key){if(hasOwnProperty.call(result,key)){result[key].push(value);}else {baseAssignValue(result,key,[value]);}});/** + * Checks if `value` is in `collection`. If `collection` is a string, it's + * checked for a substring of `value`, otherwise + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * is used for equality comparisons. If `fromIndex` is negative, it's used as + * the offset from the end of `collection`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=0] The index to search from. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. + * @returns {boolean} Returns `true` if `value` is found, else `false`. + * @example + * + * _.includes([1, 2, 3], 1); + * // => true + * + * _.includes([1, 2, 3], 1, 2); + * // => false + * + * _.includes({ 'a': 1, 'b': 2 }, 1); + * // => true + * + * _.includes('abcd', 'bc'); + * // => true + */function includes(collection,value,fromIndex,guard){collection=isArrayLike(collection)?collection:values(collection);fromIndex=fromIndex&&!guard?toInteger(fromIndex):0;var length=collection.length;if(fromIndex<0){fromIndex=nativeMax(length+fromIndex,0);}return isString(collection)?fromIndex<=length&&collection.indexOf(value,fromIndex)>-1:!!length&&baseIndexOf(collection,value,fromIndex)>-1;}/** + * Invokes the method at `path` of each element in `collection`, returning + * an array of the results of each invoked method. Any additional arguments + * are provided to each invoked method. If `path` is a function, it's invoked + * for, and `this` bound to, each element in `collection`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Array|Function|string} path The path of the method to invoke or + * the function invoked per iteration. + * @param {...*} [args] The arguments to invoke each method with. + * @returns {Array} Returns the array of results. + * @example + * + * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort'); + * // => [[1, 5, 7], [1, 2, 3]] + * + * _.invokeMap([123, 456], String.prototype.split, ''); + * // => [['1', '2', '3'], ['4', '5', '6']] + */var invokeMap=baseRest(function(collection,path,args){var index=-1,isFunc=typeof path=='function',result=isArrayLike(collection)?Array(collection.length):[];baseEach(collection,function(value){result[++index]=isFunc?apply(path,value,args):baseInvoke(value,path,args);});return result;});/** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The corresponding value of + * each key is the last element responsible for generating the key. The + * iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * var array = [ + * { 'dir': 'left', 'code': 97 }, + * { 'dir': 'right', 'code': 100 } + * ]; + * + * _.keyBy(array, function(o) { + * return String.fromCharCode(o.code); + * }); + * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } + * + * _.keyBy(array, 'dir'); + * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } + */var keyBy=createAggregator(function(result,value,key){baseAssignValue(result,key,value);});/** + * Creates an array of values by running each element in `collection` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. + * + * The guarded methods are: + * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, + * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, + * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, + * `template`, `trim`, `trimEnd`, `trimStart`, and `words` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + * @example + * + * function square(n) { + * return n * n; + * } + * + * _.map([4, 8], square); + * // => [16, 64] + * + * _.map({ 'a': 4, 'b': 8 }, square); + * // => [16, 64] (iteration order is not guaranteed) + * + * var users = [ + * { 'user': 'barney' }, + * { 'user': 'fred' } + * ]; + * + * // The `_.property` iteratee shorthand. + * _.map(users, 'user'); + * // => ['barney', 'fred'] + */function map(collection,iteratee){var func=isArray(collection)?arrayMap:baseMap;return func(collection,getIteratee(iteratee,3));}/** + * This method is like `_.sortBy` except that it allows specifying the sort + * orders of the iteratees to sort by. If `orders` is unspecified, all values + * are sorted in ascending order. Otherwise, specify an order of "desc" for + * descending or "asc" for ascending sort order of corresponding values. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]] + * The iteratees to sort by. + * @param {string[]} [orders] The sort orders of `iteratees`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 34 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'barney', 'age': 36 } + * ]; + * + * // Sort by `user` in ascending order and by `age` in descending order. + * _.orderBy(users, ['user', 'age'], ['asc', 'desc']); + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] + */function orderBy(collection,iteratees,orders,guard){if(collection==null){return [];}if(!isArray(iteratees)){iteratees=iteratees==null?[]:[iteratees];}orders=guard?undefined$1:orders;if(!isArray(orders)){orders=orders==null?[]:[orders];}return baseOrderBy(collection,iteratees,orders);}/** + * Creates an array of elements split into two groups, the first of which + * contains elements `predicate` returns truthy for, the second of which + * contains elements `predicate` returns falsey for. The predicate is + * invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the array of grouped elements. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': true }, + * { 'user': 'pebbles', 'age': 1, 'active': false } + * ]; + * + * _.partition(users, function(o) { return o.active; }); + * // => objects for [['fred'], ['barney', 'pebbles']] + * + * // The `_.matches` iteratee shorthand. + * _.partition(users, { 'age': 1, 'active': false }); + * // => objects for [['pebbles'], ['barney', 'fred']] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.partition(users, ['active', false]); + * // => objects for [['barney', 'pebbles'], ['fred']] + * + * // The `_.property` iteratee shorthand. + * _.partition(users, 'active'); + * // => objects for [['fred'], ['barney', 'pebbles']] + */var partition=createAggregator(function(result,value,key){result[key?0:1].push(value);},function(){return [[],[]];});/** + * Reduces `collection` to a value which is the accumulated result of running + * each element in `collection` thru `iteratee`, where each successive + * invocation is supplied the return value of the previous. If `accumulator` + * is not given, the first element of `collection` is used as the initial + * value. The iteratee is invoked with four arguments: + * (accumulator, value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.reduce`, `_.reduceRight`, and `_.transform`. + * + * The guarded methods are: + * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, + * and `sortBy` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @returns {*} Returns the accumulated value. + * @see _.reduceRight + * @example + * + * _.reduce([1, 2], function(sum, n) { + * return sum + n; + * }, 0); + * // => 3 + * + * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { + * (result[value] || (result[value] = [])).push(key); + * return result; + * }, {}); + * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) + */function reduce(collection,iteratee,accumulator){var func=isArray(collection)?arrayReduce:baseReduce,initAccum=arguments.length<3;return func(collection,getIteratee(iteratee,4),accumulator,initAccum,baseEach);}/** + * This method is like `_.reduce` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @returns {*} Returns the accumulated value. + * @see _.reduce + * @example + * + * var array = [[0, 1], [2, 3], [4, 5]]; + * + * _.reduceRight(array, function(flattened, other) { + * return flattened.concat(other); + * }, []); + * // => [4, 5, 2, 3, 0, 1] + */function reduceRight(collection,iteratee,accumulator){var func=isArray(collection)?arrayReduceRight:baseReduce,initAccum=arguments.length<3;return func(collection,getIteratee(iteratee,4),accumulator,initAccum,baseEachRight);}/** + * The opposite of `_.filter`; this method returns the elements of `collection` + * that `predicate` does **not** return truthy for. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + * @see _.filter + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': true } + * ]; + * + * _.reject(users, function(o) { return !o.active; }); + * // => objects for ['fred'] + * + * // The `_.matches` iteratee shorthand. + * _.reject(users, { 'age': 40, 'active': true }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.reject(users, ['active', false]); + * // => objects for ['fred'] + * + * // The `_.property` iteratee shorthand. + * _.reject(users, 'active'); + * // => objects for ['barney'] + */function reject(collection,predicate){var func=isArray(collection)?arrayFilter:baseFilter;return func(collection,negate(getIteratee(predicate,3)));}/** + * Gets a random element from `collection`. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Collection + * @param {Array|Object} collection The collection to sample. + * @returns {*} Returns the random element. + * @example + * + * _.sample([1, 2, 3, 4]); + * // => 2 + */function sample(collection){var func=isArray(collection)?arraySample:baseSample;return func(collection);}/** + * Gets `n` random elements at unique keys from `collection` up to the + * size of `collection`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to sample. + * @param {number} [n=1] The number of elements to sample. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the random elements. + * @example + * + * _.sampleSize([1, 2, 3], 2); + * // => [3, 1] + * + * _.sampleSize([1, 2, 3], 4); + * // => [2, 3, 1] + */function sampleSize(collection,n,guard){if(guard?isIterateeCall(collection,n,guard):n===undefined$1){n=1;}else {n=toInteger(n);}var func=isArray(collection)?arraySampleSize:baseSampleSize;return func(collection,n);}/** + * Creates an array of shuffled values, using a version of the + * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to shuffle. + * @returns {Array} Returns the new shuffled array. + * @example + * + * _.shuffle([1, 2, 3, 4]); + * // => [4, 1, 3, 2] + */function shuffle(collection){var func=isArray(collection)?arrayShuffle:baseShuffle;return func(collection);}/** + * Gets the size of `collection` by returning its length for array-like + * values or the number of own enumerable string keyed properties for objects. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @returns {number} Returns the collection size. + * @example + * + * _.size([1, 2, 3]); + * // => 3 + * + * _.size({ 'a': 1, 'b': 2 }); + * // => 2 + * + * _.size('pebbles'); + * // => 7 + */function size(collection){if(collection==null){return 0;}if(isArrayLike(collection)){return isString(collection)?stringSize(collection):collection.length;}var tag=getTag(collection);if(tag==mapTag||tag==setTag){return collection.size;}return baseKeys(collection).length;}/** + * Checks if `predicate` returns truthy for **any** element of `collection`. + * Iteration is stopped once `predicate` returns truthy. The predicate is + * invoked with three arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + * @example + * + * _.some([null, 0, 'yes', false], Boolean); + * // => true + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false } + * ]; + * + * // The `_.matches` iteratee shorthand. + * _.some(users, { 'user': 'barney', 'active': false }); + * // => false + * + * // The `_.matchesProperty` iteratee shorthand. + * _.some(users, ['active', false]); + * // => true + * + * // The `_.property` iteratee shorthand. + * _.some(users, 'active'); + * // => true + */function some(collection,predicate,guard){var func=isArray(collection)?arraySome:baseSome;if(guard&&isIterateeCall(collection,predicate,guard)){predicate=undefined$1;}return func(collection,getIteratee(predicate,3));}/** + * Creates an array of elements, sorted in ascending order by the results of + * running each element in a collection thru each iteratee. This method + * performs a stable sort, that is, it preserves the original sort order of + * equal elements. The iteratees are invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {...(Function|Function[])} [iteratees=[_.identity]] + * The iteratees to sort by. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 30 }, + * { 'user': 'barney', 'age': 34 } + * ]; + * + * _.sortBy(users, [function(o) { return o.user; }]); + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]] + * + * _.sortBy(users, ['user', 'age']); + * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]] + */var sortBy=baseRest(function(collection,iteratees){if(collection==null){return [];}var length=iteratees.length;if(length>1&&isIterateeCall(collection,iteratees[0],iteratees[1])){iteratees=[];}else if(length>2&&isIterateeCall(iteratees[0],iteratees[1],iteratees[2])){iteratees=[iteratees[0]];}return baseOrderBy(collection,baseFlatten(iteratees,1),[]);});/*------------------------------------------------------------------------*/ /** + * Gets the timestamp of the number of milliseconds that have elapsed since + * the Unix epoch (1 January 1970 00:00:00 UTC). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Date + * @returns {number} Returns the timestamp. + * @example + * + * _.defer(function(stamp) { + * console.log(_.now() - stamp); + * }, _.now()); + * // => Logs the number of milliseconds it took for the deferred invocation. + */var now=ctxNow||function(){return root.Date.now();};/*------------------------------------------------------------------------*/ /** + * The opposite of `_.before`; this method creates a function that invokes + * `func` once it's called `n` or more times. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {number} n The number of calls before `func` is invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var saves = ['profile', 'settings']; + * + * var done = _.after(saves.length, function() { + * console.log('done saving!'); + * }); + * + * _.forEach(saves, function(type) { + * asyncSave({ 'type': type, 'complete': done }); + * }); + * // => Logs 'done saving!' after the two async saves have completed. + */function after(n,func){if(typeof func!='function'){throw new TypeError(FUNC_ERROR_TEXT);}n=toInteger(n);return function(){if(--n<1){return func.apply(this,arguments);}};}/** + * Creates a function that invokes `func`, with up to `n` arguments, + * ignoring any additional arguments. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to cap arguments for. + * @param {number} [n=func.length] The arity cap. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new capped function. + * @example + * + * _.map(['6', '8', '10'], _.ary(parseInt, 1)); + * // => [6, 8, 10] + */function ary(func,n,guard){n=guard?undefined$1:n;n=func&&n==null?func.length:n;return createWrap(func,WRAP_ARY_FLAG,undefined$1,undefined$1,undefined$1,undefined$1,n);}/** + * Creates a function that invokes `func`, with the `this` binding and arguments + * of the created function, while it's called less than `n` times. Subsequent + * calls to the created function return the result of the last `func` invocation. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {number} n The number of calls at which `func` is no longer invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * jQuery(element).on('click', _.before(5, addContactToList)); + * // => Allows adding up to 4 contacts to the list. + */function before(n,func){var result;if(typeof func!='function'){throw new TypeError(FUNC_ERROR_TEXT);}n=toInteger(n);return function(){if(--n>0){result=func.apply(this,arguments);}if(n<=1){func=undefined$1;}return result;};}/** + * Creates a function that invokes `func` with the `this` binding of `thisArg` + * and `partials` prepended to the arguments it receives. + * + * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, + * may be used as a placeholder for partially applied arguments. + * + * **Note:** Unlike native `Function#bind`, this method doesn't set the "length" + * property of bound functions. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to bind. + * @param {*} thisArg The `this` binding of `func`. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new bound function. + * @example + * + * function greet(greeting, punctuation) { + * return greeting + ' ' + this.user + punctuation; + * } + * + * var object = { 'user': 'fred' }; + * + * var bound = _.bind(greet, object, 'hi'); + * bound('!'); + * // => 'hi fred!' + * + * // Bound with placeholders. + * var bound = _.bind(greet, object, _, '!'); + * bound('hi'); + * // => 'hi fred!' + */var bind=baseRest(function(func,thisArg,partials){var bitmask=WRAP_BIND_FLAG;if(partials.length){var holders=replaceHolders(partials,getHolder(bind));bitmask|=WRAP_PARTIAL_FLAG;}return createWrap(func,bitmask,thisArg,partials,holders);});/** + * Creates a function that invokes the method at `object[key]` with `partials` + * prepended to the arguments it receives. + * + * This method differs from `_.bind` by allowing bound functions to reference + * methods that may be redefined or don't yet exist. See + * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern) + * for more details. + * + * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * @static + * @memberOf _ + * @since 0.10.0 + * @category Function + * @param {Object} object The object to invoke the method on. + * @param {string} key The key of the method. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new bound function. + * @example + * + * var object = { + * 'user': 'fred', + * 'greet': function(greeting, punctuation) { + * return greeting + ' ' + this.user + punctuation; + * } + * }; + * + * var bound = _.bindKey(object, 'greet', 'hi'); + * bound('!'); + * // => 'hi fred!' + * + * object.greet = function(greeting, punctuation) { + * return greeting + 'ya ' + this.user + punctuation; + * }; + * + * bound('!'); + * // => 'hiya fred!' + * + * // Bound with placeholders. + * var bound = _.bindKey(object, 'greet', _, '!'); + * bound('hi'); + * // => 'hiya fred!' + */var bindKey=baseRest(function(object,key,partials){var bitmask=WRAP_BIND_FLAG|WRAP_BIND_KEY_FLAG;if(partials.length){var holders=replaceHolders(partials,getHolder(bindKey));bitmask|=WRAP_PARTIAL_FLAG;}return createWrap(key,bitmask,object,partials,holders);});/** + * Creates a function that accepts arguments of `func` and either invokes + * `func` returning its result, if at least `arity` number of arguments have + * been provided, or returns a function that accepts the remaining `func` + * arguments, and so on. The arity of `func` may be specified if `func.length` + * is not sufficient. + * + * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds, + * may be used as a placeholder for provided arguments. + * + * **Note:** This method doesn't set the "length" property of curried functions. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Function + * @param {Function} func The function to curry. + * @param {number} [arity=func.length] The arity of `func`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new curried function. + * @example + * + * var abc = function(a, b, c) { + * return [a, b, c]; + * }; + * + * var curried = _.curry(abc); + * + * curried(1)(2)(3); + * // => [1, 2, 3] + * + * curried(1, 2)(3); + * // => [1, 2, 3] + * + * curried(1, 2, 3); + * // => [1, 2, 3] + * + * // Curried with placeholders. + * curried(1)(_, 3)(2); + * // => [1, 2, 3] + */function curry(func,arity,guard){arity=guard?undefined$1:arity;var result=createWrap(func,WRAP_CURRY_FLAG,undefined$1,undefined$1,undefined$1,undefined$1,undefined$1,arity);result.placeholder=curry.placeholder;return result;}/** + * This method is like `_.curry` except that arguments are applied to `func` + * in the manner of `_.partialRight` instead of `_.partial`. + * + * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for provided arguments. + * + * **Note:** This method doesn't set the "length" property of curried functions. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to curry. + * @param {number} [arity=func.length] The arity of `func`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new curried function. + * @example + * + * var abc = function(a, b, c) { + * return [a, b, c]; + * }; + * + * var curried = _.curryRight(abc); + * + * curried(3)(2)(1); + * // => [1, 2, 3] + * + * curried(2, 3)(1); + * // => [1, 2, 3] + * + * curried(1, 2, 3); + * // => [1, 2, 3] + * + * // Curried with placeholders. + * curried(3)(1, _)(2); + * // => [1, 2, 3] + */function curryRight(func,arity,guard){arity=guard?undefined$1:arity;var result=createWrap(func,WRAP_CURRY_RIGHT_FLAG,undefined$1,undefined$1,undefined$1,undefined$1,undefined$1,arity);result.placeholder=curryRight.placeholder;return result;}/** + * Creates a debounced function that delays invoking `func` until after `wait` + * milliseconds have elapsed since the last time the debounced function was + * invoked. The debounced function comes with a `cancel` method to cancel + * delayed `func` invocations and a `flush` method to immediately invoke them. + * Provide `options` to indicate whether `func` should be invoked on the + * leading and/or trailing edge of the `wait` timeout. The `func` is invoked + * with the last arguments provided to the debounced function. Subsequent + * calls to the debounced function return the result of the last `func` + * invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the debounced function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.debounce` and `_.throttle`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to debounce. + * @param {number} [wait=0] The number of milliseconds to delay. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=false] + * Specify invoking on the leading edge of the timeout. + * @param {number} [options.maxWait] + * The maximum time `func` is allowed to be delayed before it's invoked. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new debounced function. + * @example + * + * // Avoid costly calculations while the window size is in flux. + * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); + * + * // Invoke `sendMail` when clicked, debouncing subsequent calls. + * jQuery(element).on('click', _.debounce(sendMail, 300, { + * 'leading': true, + * 'trailing': false + * })); + * + * // Ensure `batchLog` is invoked once after 1 second of debounced calls. + * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); + * var source = new EventSource('/stream'); + * jQuery(source).on('message', debounced); + * + * // Cancel the trailing debounced invocation. + * jQuery(window).on('popstate', debounced.cancel); + */function debounce(func,wait,options){var lastArgs,lastThis,maxWait,result,timerId,lastCallTime,lastInvokeTime=0,leading=false,maxing=false,trailing=true;if(typeof func!='function'){throw new TypeError(FUNC_ERROR_TEXT);}wait=toNumber(wait)||0;if(isObject(options)){leading=!!options.leading;maxing='maxWait'in options;maxWait=maxing?nativeMax(toNumber(options.maxWait)||0,wait):maxWait;trailing='trailing'in options?!!options.trailing:trailing;}function invokeFunc(time){var args=lastArgs,thisArg=lastThis;lastArgs=lastThis=undefined$1;lastInvokeTime=time;result=func.apply(thisArg,args);return result;}function leadingEdge(time){// Reset any `maxWait` timer. +lastInvokeTime=time;// Start the timer for the trailing edge. +timerId=setTimeout(timerExpired,wait);// Invoke the leading edge. +return leading?invokeFunc(time):result;}function remainingWait(time){var timeSinceLastCall=time-lastCallTime,timeSinceLastInvoke=time-lastInvokeTime,timeWaiting=wait-timeSinceLastCall;return maxing?nativeMin(timeWaiting,maxWait-timeSinceLastInvoke):timeWaiting;}function shouldInvoke(time){var timeSinceLastCall=time-lastCallTime,timeSinceLastInvoke=time-lastInvokeTime;// Either this is the first call, activity has stopped and we're at the +// trailing edge, the system time has gone backwards and we're treating +// it as the trailing edge, or we've hit the `maxWait` limit. +return lastCallTime===undefined$1||timeSinceLastCall>=wait||timeSinceLastCall<0||maxing&&timeSinceLastInvoke>=maxWait;}function timerExpired(){var time=now();if(shouldInvoke(time)){return trailingEdge(time);}// Restart the timer. +timerId=setTimeout(timerExpired,remainingWait(time));}function trailingEdge(time){timerId=undefined$1;// Only invoke if we have `lastArgs` which means `func` has been +// debounced at least once. +if(trailing&&lastArgs){return invokeFunc(time);}lastArgs=lastThis=undefined$1;return result;}function cancel(){if(timerId!==undefined$1){clearTimeout(timerId);}lastInvokeTime=0;lastArgs=lastCallTime=lastThis=timerId=undefined$1;}function flush(){return timerId===undefined$1?result:trailingEdge(now());}function debounced(){var time=now(),isInvoking=shouldInvoke(time);lastArgs=arguments;lastThis=this;lastCallTime=time;if(isInvoking){if(timerId===undefined$1){return leadingEdge(lastCallTime);}if(maxing){// Handle invocations in a tight loop. +clearTimeout(timerId);timerId=setTimeout(timerExpired,wait);return invokeFunc(lastCallTime);}}if(timerId===undefined$1){timerId=setTimeout(timerExpired,wait);}return result;}debounced.cancel=cancel;debounced.flush=flush;return debounced;}/** + * Defers invoking the `func` until the current call stack has cleared. Any + * additional arguments are provided to `func` when it's invoked. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to defer. + * @param {...*} [args] The arguments to invoke `func` with. + * @returns {number} Returns the timer id. + * @example + * + * _.defer(function(text) { + * console.log(text); + * }, 'deferred'); + * // => Logs 'deferred' after one millisecond. + */var defer=baseRest(function(func,args){return baseDelay(func,1,args);});/** + * Invokes `func` after `wait` milliseconds. Any additional arguments are + * provided to `func` when it's invoked. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {...*} [args] The arguments to invoke `func` with. + * @returns {number} Returns the timer id. + * @example + * + * _.delay(function(text) { + * console.log(text); + * }, 1000, 'later'); + * // => Logs 'later' after one second. + */var delay=baseRest(function(func,wait,args){return baseDelay(func,toNumber(wait)||0,args);});/** + * Creates a function that invokes `func` with arguments reversed. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Function + * @param {Function} func The function to flip arguments for. + * @returns {Function} Returns the new flipped function. + * @example + * + * var flipped = _.flip(function() { + * return _.toArray(arguments); + * }); + * + * flipped('a', 'b', 'c', 'd'); + * // => ['d', 'c', 'b', 'a'] + */function flip(func){return createWrap(func,WRAP_FLIP_FLAG);}/** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) + * method interface of `clear`, `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; + */function memoize(func,resolver){if(typeof func!='function'||resolver!=null&&typeof resolver!='function'){throw new TypeError(FUNC_ERROR_TEXT);}var memoized=function(){var args=arguments,key=resolver?resolver.apply(this,args):args[0],cache=memoized.cache;if(cache.has(key)){return cache.get(key);}var result=func.apply(this,args);memoized.cache=cache.set(key,result)||cache;return result;};memoized.cache=new(memoize.Cache||MapCache)();return memoized;}// Expose `MapCache`. +memoize.Cache=MapCache;/** + * Creates a function that negates the result of the predicate `func`. The + * `func` predicate is invoked with the `this` binding and arguments of the + * created function. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} predicate The predicate to negate. + * @returns {Function} Returns the new negated function. + * @example + * + * function isEven(n) { + * return n % 2 == 0; + * } + * + * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); + * // => [1, 3, 5] + */function negate(predicate){if(typeof predicate!='function'){throw new TypeError(FUNC_ERROR_TEXT);}return function(){var args=arguments;switch(args.length){case 0:return !predicate.call(this);case 1:return !predicate.call(this,args[0]);case 2:return !predicate.call(this,args[0],args[1]);case 3:return !predicate.call(this,args[0],args[1],args[2]);}return !predicate.apply(this,args);};}/** + * Creates a function that is restricted to invoking `func` once. Repeat calls + * to the function return the value of the first invocation. The `func` is + * invoked with the `this` binding and arguments of the created function. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var initialize = _.once(createApplication); + * initialize(); + * initialize(); + * // => `createApplication` is invoked once + */function once(func){return before(2,func);}/** + * Creates a function that invokes `func` with its arguments transformed. + * + * @static + * @since 4.0.0 + * @memberOf _ + * @category Function + * @param {Function} func The function to wrap. + * @param {...(Function|Function[])} [transforms=[_.identity]] + * The argument transforms. + * @returns {Function} Returns the new function. + * @example + * + * function doubled(n) { + * return n * 2; + * } + * + * function square(n) { + * return n * n; + * } + * + * var func = _.overArgs(function(x, y) { + * return [x, y]; + * }, [square, doubled]); + * + * func(9, 3); + * // => [81, 6] + * + * func(10, 5); + * // => [100, 10] + */var overArgs=castRest(function(func,transforms){transforms=transforms.length==1&&isArray(transforms[0])?arrayMap(transforms[0],baseUnary(getIteratee())):arrayMap(baseFlatten(transforms,1),baseUnary(getIteratee()));var funcsLength=transforms.length;return baseRest(function(args){var index=-1,length=nativeMin(args.length,funcsLength);while(++index 'hello fred' + * + * // Partially applied with placeholders. + * var greetFred = _.partial(greet, _, 'fred'); + * greetFred('hi'); + * // => 'hi fred' + */var partial=baseRest(function(func,partials){var holders=replaceHolders(partials,getHolder(partial));return createWrap(func,WRAP_PARTIAL_FLAG,undefined$1,partials,holders);});/** + * This method is like `_.partial` except that partially applied arguments + * are appended to the arguments it receives. + * + * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * **Note:** This method doesn't set the "length" property of partially + * applied functions. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Function + * @param {Function} func The function to partially apply arguments to. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new partially applied function. + * @example + * + * function greet(greeting, name) { + * return greeting + ' ' + name; + * } + * + * var greetFred = _.partialRight(greet, 'fred'); + * greetFred('hi'); + * // => 'hi fred' + * + * // Partially applied with placeholders. + * var sayHelloTo = _.partialRight(greet, 'hello', _); + * sayHelloTo('fred'); + * // => 'hello fred' + */var partialRight=baseRest(function(func,partials){var holders=replaceHolders(partials,getHolder(partialRight));return createWrap(func,WRAP_PARTIAL_RIGHT_FLAG,undefined$1,partials,holders);});/** + * Creates a function that invokes `func` with arguments arranged according + * to the specified `indexes` where the argument value at the first index is + * provided as the first argument, the argument value at the second index is + * provided as the second argument, and so on. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to rearrange arguments for. + * @param {...(number|number[])} indexes The arranged argument indexes. + * @returns {Function} Returns the new function. + * @example + * + * var rearged = _.rearg(function(a, b, c) { + * return [a, b, c]; + * }, [2, 0, 1]); + * + * rearged('b', 'c', 'a') + * // => ['a', 'b', 'c'] + */var rearg=flatRest(function(func,indexes){return createWrap(func,WRAP_REARG_FLAG,undefined$1,undefined$1,undefined$1,indexes);});/** + * Creates a function that invokes `func` with the `this` binding of the + * created function and arguments from `start` and beyond provided as + * an array. + * + * **Note:** This method is based on the + * [rest parameter](https://mdn.io/rest_parameters). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Function + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + * @example + * + * var say = _.rest(function(what, names) { + * return what + ' ' + _.initial(names).join(', ') + + * (_.size(names) > 1 ? ', & ' : '') + _.last(names); + * }); + * + * say('hello', 'fred', 'barney', 'pebbles'); + * // => 'hello fred, barney, & pebbles' + */function rest(func,start){if(typeof func!='function'){throw new TypeError(FUNC_ERROR_TEXT);}start=start===undefined$1?start:toInteger(start);return baseRest(func,start);}/** + * Creates a function that invokes `func` with the `this` binding of the + * create function and an array of arguments much like + * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply). + * + * **Note:** This method is based on the + * [spread operator](https://mdn.io/spread_operator). + * + * @static + * @memberOf _ + * @since 3.2.0 + * @category Function + * @param {Function} func The function to spread arguments over. + * @param {number} [start=0] The start position of the spread. + * @returns {Function} Returns the new function. + * @example + * + * var say = _.spread(function(who, what) { + * return who + ' says ' + what; + * }); + * + * say(['fred', 'hello']); + * // => 'fred says hello' + * + * var numbers = Promise.all([ + * Promise.resolve(40), + * Promise.resolve(36) + * ]); + * + * numbers.then(_.spread(function(x, y) { + * return x + y; + * })); + * // => a Promise of 76 + */function spread(func,start){if(typeof func!='function'){throw new TypeError(FUNC_ERROR_TEXT);}start=start==null?0:nativeMax(toInteger(start),0);return baseRest(function(args){var array=args[start],otherArgs=castSlice(args,0,start);if(array){arrayPush(otherArgs,array);}return apply(func,this,otherArgs);});}/** + * Creates a throttled function that only invokes `func` at most once per + * every `wait` milliseconds. The throttled function comes with a `cancel` + * method to cancel delayed `func` invocations and a `flush` method to + * immediately invoke them. Provide `options` to indicate whether `func` + * should be invoked on the leading and/or trailing edge of the `wait` + * timeout. The `func` is invoked with the last arguments provided to the + * throttled function. Subsequent calls to the throttled function return the + * result of the last `func` invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the throttled function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.throttle` and `_.debounce`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to throttle. + * @param {number} [wait=0] The number of milliseconds to throttle invocations to. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=true] + * Specify invoking on the leading edge of the timeout. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new throttled function. + * @example + * + * // Avoid excessively updating the position while scrolling. + * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); + * + * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes. + * var throttled = _.throttle(renewToken, 300000, { 'trailing': false }); + * jQuery(element).on('click', throttled); + * + * // Cancel the trailing throttled invocation. + * jQuery(window).on('popstate', throttled.cancel); + */function throttle(func,wait,options){var leading=true,trailing=true;if(typeof func!='function'){throw new TypeError(FUNC_ERROR_TEXT);}if(isObject(options)){leading='leading'in options?!!options.leading:leading;trailing='trailing'in options?!!options.trailing:trailing;}return debounce(func,wait,{'leading':leading,'maxWait':wait,'trailing':trailing});}/** + * Creates a function that accepts up to one argument, ignoring any + * additional arguments. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Function + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + * @example + * + * _.map(['6', '8', '10'], _.unary(parseInt)); + * // => [6, 8, 10] + */function unary(func){return ary(func,1);}/** + * Creates a function that provides `value` to `wrapper` as its first + * argument. Any additional arguments provided to the function are appended + * to those provided to the `wrapper`. The wrapper is invoked with the `this` + * binding of the created function. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {*} value The value to wrap. + * @param {Function} [wrapper=identity] The wrapper function. + * @returns {Function} Returns the new function. + * @example + * + * var p = _.wrap(_.escape, function(func, text) { + * return '

' + func(text) + '

'; + * }); + * + * p('fred, barney, & pebbles'); + * // => '

fred, barney, & pebbles

' + */function wrap(value,wrapper){return partial(castFunction(wrapper),value);}/*------------------------------------------------------------------------*/ /** + * Casts `value` as an array if it's not one. + * + * @static + * @memberOf _ + * @since 4.4.0 + * @category Lang + * @param {*} value The value to inspect. + * @returns {Array} Returns the cast array. + * @example + * + * _.castArray(1); + * // => [1] + * + * _.castArray({ 'a': 1 }); + * // => [{ 'a': 1 }] + * + * _.castArray('abc'); + * // => ['abc'] + * + * _.castArray(null); + * // => [null] + * + * _.castArray(undefined); + * // => [undefined] + * + * _.castArray(); + * // => [] + * + * var array = [1, 2, 3]; + * console.log(_.castArray(array) === array); + * // => true + */function castArray(){if(!arguments.length){return [];}var value=arguments[0];return isArray(value)?value:[value];}/** + * Creates a shallow clone of `value`. + * + * **Note:** This method is loosely based on the + * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm) + * and supports cloning arrays, array buffers, booleans, date objects, maps, + * numbers, `Object` objects, regexes, sets, strings, symbols, and typed + * arrays. The own enumerable properties of `arguments` objects are cloned + * as plain objects. An empty object is returned for uncloneable values such + * as error objects, functions, DOM nodes, and WeakMaps. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to clone. + * @returns {*} Returns the cloned value. + * @see _.cloneDeep + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var shallow = _.clone(objects); + * console.log(shallow[0] === objects[0]); + * // => true + */function clone(value){return baseClone(value,CLONE_SYMBOLS_FLAG);}/** + * This method is like `_.clone` except that it accepts `customizer` which + * is invoked to produce the cloned value. If `customizer` returns `undefined`, + * cloning is handled by the method instead. The `customizer` is invoked with + * up to four arguments; (value [, index|key, object, stack]). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to clone. + * @param {Function} [customizer] The function to customize cloning. + * @returns {*} Returns the cloned value. + * @see _.cloneDeepWith + * @example + * + * function customizer(value) { + * if (_.isElement(value)) { + * return value.cloneNode(false); + * } + * } + * + * var el = _.cloneWith(document.body, customizer); + * + * console.log(el === document.body); + * // => false + * console.log(el.nodeName); + * // => 'BODY' + * console.log(el.childNodes.length); + * // => 0 + */function cloneWith(value,customizer){customizer=typeof customizer=='function'?customizer:undefined$1;return baseClone(value,CLONE_SYMBOLS_FLAG,customizer);}/** + * This method is like `_.clone` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @returns {*} Returns the deep cloned value. + * @see _.clone + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var deep = _.cloneDeep(objects); + * console.log(deep[0] === objects[0]); + * // => false + */function cloneDeep(value){return baseClone(value,CLONE_DEEP_FLAG|CLONE_SYMBOLS_FLAG);}/** + * This method is like `_.cloneWith` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @param {Function} [customizer] The function to customize cloning. + * @returns {*} Returns the deep cloned value. + * @see _.cloneWith + * @example + * + * function customizer(value) { + * if (_.isElement(value)) { + * return value.cloneNode(true); + * } + * } + * + * var el = _.cloneDeepWith(document.body, customizer); + * + * console.log(el === document.body); + * // => false + * console.log(el.nodeName); + * // => 'BODY' + * console.log(el.childNodes.length); + * // => 20 + */function cloneDeepWith(value,customizer){customizer=typeof customizer=='function'?customizer:undefined$1;return baseClone(value,CLONE_DEEP_FLAG|CLONE_SYMBOLS_FLAG,customizer);}/** + * Checks if `object` conforms to `source` by invoking the predicate + * properties of `source` with the corresponding property values of `object`. + * + * **Note:** This method is equivalent to `_.conforms` when `source` is + * partially applied. + * + * @static + * @memberOf _ + * @since 4.14.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property predicates to conform to. + * @returns {boolean} Returns `true` if `object` conforms, else `false`. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * + * _.conformsTo(object, { 'b': function(n) { return n > 1; } }); + * // => true + * + * _.conformsTo(object, { 'b': function(n) { return n > 2; } }); + * // => false + */function conformsTo(object,source){return source==null||baseConformsTo(object,source,keys(source));}/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */function eq(value,other){return value===other||value!==value&&other!==other;}/** + * Checks if `value` is greater than `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than `other`, + * else `false`. + * @see _.lt + * @example + * + * _.gt(3, 1); + * // => true + * + * _.gt(3, 3); + * // => false + * + * _.gt(1, 3); + * // => false + */var gt=createRelationalOperation(baseGt);/** + * Checks if `value` is greater than or equal to `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than or equal to + * `other`, else `false`. + * @see _.lte + * @example + * + * _.gte(3, 1); + * // => true + * + * _.gte(3, 3); + * // => true + * + * _.gte(1, 3); + * // => false + */var gte=createRelationalOperation(function(value,other){return value>=other;});/** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */var isArguments=baseIsArguments(function(){return arguments;}())?baseIsArguments:function(value){return isObjectLike(value)&&hasOwnProperty.call(value,'callee')&&!propertyIsEnumerable.call(value,'callee');};/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */var isArray=Array.isArray;/** + * Checks if `value` is classified as an `ArrayBuffer` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. + * @example + * + * _.isArrayBuffer(new ArrayBuffer(2)); + * // => true + * + * _.isArrayBuffer(new Array(2)); + * // => false + */var isArrayBuffer=nodeIsArrayBuffer?baseUnary(nodeIsArrayBuffer):baseIsArrayBuffer;/** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */function isArrayLike(value){return value!=null&&isLength(value.length)&&!isFunction(value);}/** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */function isArrayLikeObject(value){return isObjectLike(value)&&isArrayLike(value);}/** + * Checks if `value` is classified as a boolean primitive or object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a boolean, else `false`. + * @example + * + * _.isBoolean(false); + * // => true + * + * _.isBoolean(null); + * // => false + */function isBoolean(value){return value===true||value===false||isObjectLike(value)&&baseGetTag(value)==boolTag;}/** + * Checks if `value` is a buffer. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. + * @example + * + * _.isBuffer(new Buffer(2)); + * // => true + * + * _.isBuffer(new Uint8Array(2)); + * // => false + */var isBuffer=nativeIsBuffer||stubFalse;/** + * Checks if `value` is classified as a `Date` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a date object, else `false`. + * @example + * + * _.isDate(new Date); + * // => true + * + * _.isDate('Mon April 23 2012'); + * // => false + */var isDate=nodeIsDate?baseUnary(nodeIsDate):baseIsDate;/** + * Checks if `value` is likely a DOM element. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. + * @example + * + * _.isElement(document.body); + * // => true + * + * _.isElement(''); + * // => false + */function isElement(value){return isObjectLike(value)&&value.nodeType===1&&!isPlainObject(value);}/** + * Checks if `value` is an empty object, collection, map, or set. + * + * Objects are considered empty if they have no own enumerable string keyed + * properties. + * + * Array-like values such as `arguments` objects, arrays, buffers, strings, or + * jQuery-like collections are considered empty if they have a `length` of `0`. + * Similarly, maps and sets are considered empty if they have a `size` of `0`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is empty, else `false`. + * @example + * + * _.isEmpty(null); + * // => true + * + * _.isEmpty(true); + * // => true + * + * _.isEmpty(1); + * // => true + * + * _.isEmpty([1, 2, 3]); + * // => false + * + * _.isEmpty({ 'a': 1 }); + * // => false + */function isEmpty(value){if(value==null){return true;}if(isArrayLike(value)&&(isArray(value)||typeof value=='string'||typeof value.splice=='function'||isBuffer(value)||isTypedArray(value)||isArguments(value))){return !value.length;}var tag=getTag(value);if(tag==mapTag||tag==setTag){return !value.size;}if(isPrototype(value)){return !baseKeys(value).length;}for(var key in value){if(hasOwnProperty.call(value,key)){return false;}}return true;}/** + * Performs a deep comparison between two values to determine if they are + * equivalent. + * + * **Note:** This method supports comparing arrays, array buffers, booleans, + * date objects, error objects, maps, numbers, `Object` objects, regexes, + * sets, strings, symbols, and typed arrays. `Object` objects are compared + * by their own, not inherited, enumerable properties. Functions and DOM + * nodes are compared by strict equality, i.e. `===`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.isEqual(object, other); + * // => true + * + * object === other; + * // => false + */function isEqual(value,other){return baseIsEqual(value,other);}/** + * This method is like `_.isEqual` except that it accepts `customizer` which + * is invoked to compare values. If `customizer` returns `undefined`, comparisons + * are handled by the method instead. The `customizer` is invoked with up to + * six arguments: (objValue, othValue [, index|key, object, other, stack]). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * function isGreeting(value) { + * return /^h(?:i|ello)$/.test(value); + * } + * + * function customizer(objValue, othValue) { + * if (isGreeting(objValue) && isGreeting(othValue)) { + * return true; + * } + * } + * + * var array = ['hello', 'goodbye']; + * var other = ['hi', 'goodbye']; + * + * _.isEqualWith(array, other, customizer); + * // => true + */function isEqualWith(value,other,customizer){customizer=typeof customizer=='function'?customizer:undefined$1;var result=customizer?customizer(value,other):undefined$1;return result===undefined$1?baseIsEqual(value,other,undefined$1,customizer):!!result;}/** + * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`, + * `SyntaxError`, `TypeError`, or `URIError` object. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an error object, else `false`. + * @example + * + * _.isError(new Error); + * // => true + * + * _.isError(Error); + * // => false + */function isError(value){if(!isObjectLike(value)){return false;}var tag=baseGetTag(value);return tag==errorTag||tag==domExcTag||typeof value.message=='string'&&typeof value.name=='string'&&!isPlainObject(value);}/** + * Checks if `value` is a finite primitive number. + * + * **Note:** This method is based on + * [`Number.isFinite`](https://mdn.io/Number/isFinite). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. + * @example + * + * _.isFinite(3); + * // => true + * + * _.isFinite(Number.MIN_VALUE); + * // => true + * + * _.isFinite(Infinity); + * // => false + * + * _.isFinite('3'); + * // => false + */function isFinite(value){return typeof value=='number'&&nativeIsFinite(value);}/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */function isFunction(value){if(!isObject(value)){return false;}// The use of `Object#toString` avoids issues with the `typeof` operator +// in Safari 9 which returns 'object' for typed arrays and other constructors. +var tag=baseGetTag(value);return tag==funcTag||tag==genTag||tag==asyncTag||tag==proxyTag;}/** + * Checks if `value` is an integer. + * + * **Note:** This method is based on + * [`Number.isInteger`](https://mdn.io/Number/isInteger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an integer, else `false`. + * @example + * + * _.isInteger(3); + * // => true + * + * _.isInteger(Number.MIN_VALUE); + * // => false + * + * _.isInteger(Infinity); + * // => false + * + * _.isInteger('3'); + * // => false + */function isInteger(value){return typeof value=='number'&&value==toInteger(value);}/** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */function isLength(value){return typeof value=='number'&&value>-1&&value%1==0&&value<=MAX_SAFE_INTEGER;}/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */function isObject(value){var type=typeof value;return value!=null&&(type=='object'||type=='function');}/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */function isObjectLike(value){return value!=null&&typeof value=='object';}/** + * Checks if `value` is classified as a `Map` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + * @example + * + * _.isMap(new Map); + * // => true + * + * _.isMap(new WeakMap); + * // => false + */var isMap=nodeIsMap?baseUnary(nodeIsMap):baseIsMap;/** + * Performs a partial deep comparison between `object` and `source` to + * determine if `object` contains equivalent property values. + * + * **Note:** This method is equivalent to `_.matches` when `source` is + * partially applied. + * + * Partial comparisons will match empty array and empty object `source` + * values against any array or object value, respectively. See `_.isEqual` + * for a list of supported value comparisons. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * + * _.isMatch(object, { 'b': 2 }); + * // => true + * + * _.isMatch(object, { 'b': 1 }); + * // => false + */function isMatch(object,source){return object===source||baseIsMatch(object,source,getMatchData(source));}/** + * This method is like `_.isMatch` except that it accepts `customizer` which + * is invoked to compare values. If `customizer` returns `undefined`, comparisons + * are handled by the method instead. The `customizer` is invoked with five + * arguments: (objValue, srcValue, index|key, object, source). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + * @example + * + * function isGreeting(value) { + * return /^h(?:i|ello)$/.test(value); + * } + * + * function customizer(objValue, srcValue) { + * if (isGreeting(objValue) && isGreeting(srcValue)) { + * return true; + * } + * } + * + * var object = { 'greeting': 'hello' }; + * var source = { 'greeting': 'hi' }; + * + * _.isMatchWith(object, source, customizer); + * // => true + */function isMatchWith(object,source,customizer){customizer=typeof customizer=='function'?customizer:undefined$1;return baseIsMatch(object,source,getMatchData(source),customizer);}/** + * Checks if `value` is `NaN`. + * + * **Note:** This method is based on + * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as + * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for + * `undefined` and other non-number values. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + * @example + * + * _.isNaN(NaN); + * // => true + * + * _.isNaN(new Number(NaN)); + * // => true + * + * isNaN(undefined); + * // => true + * + * _.isNaN(undefined); + * // => false + */function isNaN(value){// An `NaN` primitive is the only value that is not equal to itself. +// Perform the `toStringTag` check first to avoid errors with some +// ActiveX objects in IE. +return isNumber(value)&&value!=+value;}/** + * Checks if `value` is a pristine native function. + * + * **Note:** This method can't reliably detect native functions in the presence + * of the core-js package because core-js circumvents this kind of detection. + * Despite multiple requests, the core-js maintainer has made it clear: any + * attempt to fix the detection will be obstructed. As a result, we're left + * with little choice but to throw an error. Unfortunately, this also affects + * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill), + * which rely on core-js. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + * @example + * + * _.isNative(Array.prototype.push); + * // => true + * + * _.isNative(_); + * // => false + */function isNative(value){if(isMaskable(value)){throw new Error(CORE_ERROR_TEXT);}return baseIsNative(value);}/** + * Checks if `value` is `null`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `null`, else `false`. + * @example + * + * _.isNull(null); + * // => true + * + * _.isNull(void 0); + * // => false + */function isNull(value){return value===null;}/** + * Checks if `value` is `null` or `undefined`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is nullish, else `false`. + * @example + * + * _.isNil(null); + * // => true + * + * _.isNil(void 0); + * // => true + * + * _.isNil(NaN); + * // => false + */function isNil(value){return value==null;}/** + * Checks if `value` is classified as a `Number` primitive or object. + * + * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are + * classified as numbers, use the `_.isFinite` method. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a number, else `false`. + * @example + * + * _.isNumber(3); + * // => true + * + * _.isNumber(Number.MIN_VALUE); + * // => true + * + * _.isNumber(Infinity); + * // => true + * + * _.isNumber('3'); + * // => false + */function isNumber(value){return typeof value=='number'||isObjectLike(value)&&baseGetTag(value)==numberTag;}/** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * @static + * @memberOf _ + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */function isPlainObject(value){if(!isObjectLike(value)||baseGetTag(value)!=objectTag){return false;}var proto=getPrototype(value);if(proto===null){return true;}var Ctor=hasOwnProperty.call(proto,'constructor')&&proto.constructor;return typeof Ctor=='function'&&Ctor instanceof Ctor&&funcToString.call(Ctor)==objectCtorString;}/** + * Checks if `value` is classified as a `RegExp` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. + * @example + * + * _.isRegExp(/abc/); + * // => true + * + * _.isRegExp('/abc/'); + * // => false + */var isRegExp=nodeIsRegExp?baseUnary(nodeIsRegExp):baseIsRegExp;/** + * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754 + * double precision number which isn't the result of a rounded unsafe integer. + * + * **Note:** This method is based on + * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`. + * @example + * + * _.isSafeInteger(3); + * // => true + * + * _.isSafeInteger(Number.MIN_VALUE); + * // => false + * + * _.isSafeInteger(Infinity); + * // => false + * + * _.isSafeInteger('3'); + * // => false + */function isSafeInteger(value){return isInteger(value)&&value>=-MAX_SAFE_INTEGER&&value<=MAX_SAFE_INTEGER;}/** + * Checks if `value` is classified as a `Set` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + * @example + * + * _.isSet(new Set); + * // => true + * + * _.isSet(new WeakSet); + * // => false + */var isSet=nodeIsSet?baseUnary(nodeIsSet):baseIsSet;/** + * Checks if `value` is classified as a `String` primitive or object. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a string, else `false`. + * @example + * + * _.isString('abc'); + * // => true + * + * _.isString(1); + * // => false + */function isString(value){return typeof value=='string'||!isArray(value)&&isObjectLike(value)&&baseGetTag(value)==stringTag;}/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */function isSymbol(value){return typeof value=='symbol'||isObjectLike(value)&&baseGetTag(value)==symbolTag;}/** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */var isTypedArray=nodeIsTypedArray?baseUnary(nodeIsTypedArray):baseIsTypedArray;/** + * Checks if `value` is `undefined`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. + * @example + * + * _.isUndefined(void 0); + * // => true + * + * _.isUndefined(null); + * // => false + */function isUndefined(value){return value===undefined$1;}/** + * Checks if `value` is classified as a `WeakMap` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a weak map, else `false`. + * @example + * + * _.isWeakMap(new WeakMap); + * // => true + * + * _.isWeakMap(new Map); + * // => false + */function isWeakMap(value){return isObjectLike(value)&&getTag(value)==weakMapTag;}/** + * Checks if `value` is classified as a `WeakSet` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a weak set, else `false`. + * @example + * + * _.isWeakSet(new WeakSet); + * // => true + * + * _.isWeakSet(new Set); + * // => false + */function isWeakSet(value){return isObjectLike(value)&&baseGetTag(value)==weakSetTag;}/** + * Checks if `value` is less than `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than `other`, + * else `false`. + * @see _.gt + * @example + * + * _.lt(1, 3); + * // => true + * + * _.lt(3, 3); + * // => false + * + * _.lt(3, 1); + * // => false + */var lt=createRelationalOperation(baseLt);/** + * Checks if `value` is less than or equal to `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than or equal to + * `other`, else `false`. + * @see _.gte + * @example + * + * _.lte(1, 3); + * // => true + * + * _.lte(3, 3); + * // => true + * + * _.lte(3, 1); + * // => false + */var lte=createRelationalOperation(function(value,other){return value<=other;});/** + * Converts `value` to an array. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to convert. + * @returns {Array} Returns the converted array. + * @example + * + * _.toArray({ 'a': 1, 'b': 2 }); + * // => [1, 2] + * + * _.toArray('abc'); + * // => ['a', 'b', 'c'] + * + * _.toArray(1); + * // => [] + * + * _.toArray(null); + * // => [] + */function toArray(value){if(!value){return [];}if(isArrayLike(value)){return isString(value)?stringToArray(value):copyArray(value);}if(symIterator&&value[symIterator]){return iteratorToArray(value[symIterator]());}var tag=getTag(value),func=tag==mapTag?mapToArray:tag==setTag?setToArray:values;return func(value);}/** + * Converts `value` to a finite number. + * + * @static + * @memberOf _ + * @since 4.12.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted number. + * @example + * + * _.toFinite(3.2); + * // => 3.2 + * + * _.toFinite(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toFinite(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toFinite('3.2'); + * // => 3.2 + */function toFinite(value){if(!value){return value===0?value:0;}value=toNumber(value);if(value===INFINITY||value===-INFINITY){var sign=value<0?-1:1;return sign*MAX_INTEGER;}return value===value?value:0;}/** + * Converts `value` to an integer. + * + * **Note:** This method is loosely based on + * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toInteger(3.2); + * // => 3 + * + * _.toInteger(Number.MIN_VALUE); + * // => 0 + * + * _.toInteger(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toInteger('3.2'); + * // => 3 + */function toInteger(value){var result=toFinite(value),remainder=result%1;return result===result?remainder?result-remainder:result:0;}/** + * Converts `value` to an integer suitable for use as the length of an + * array-like object. + * + * **Note:** This method is based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toLength(3.2); + * // => 3 + * + * _.toLength(Number.MIN_VALUE); + * // => 0 + * + * _.toLength(Infinity); + * // => 4294967295 + * + * _.toLength('3.2'); + * // => 3 + */function toLength(value){return value?baseClamp(toInteger(value),0,MAX_ARRAY_LENGTH):0;}/** + * Converts `value` to a number. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {number} Returns the number. + * @example + * + * _.toNumber(3.2); + * // => 3.2 + * + * _.toNumber(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toNumber(Infinity); + * // => Infinity + * + * _.toNumber('3.2'); + * // => 3.2 + */function toNumber(value){if(typeof value=='number'){return value;}if(isSymbol(value)){return NAN;}if(isObject(value)){var other=typeof value.valueOf=='function'?value.valueOf():value;value=isObject(other)?other+'':other;}if(typeof value!='string'){return value===0?value:+value;}value=baseTrim(value);var isBinary=reIsBinary.test(value);return isBinary||reIsOctal.test(value)?freeParseInt(value.slice(2),isBinary?2:8):reIsBadHex.test(value)?NAN:+value;}/** + * Converts `value` to a plain object flattening inherited enumerable string + * keyed properties of `value` to own properties of the plain object. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {Object} Returns the converted plain object. + * @example + * + * function Foo() { + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.assign({ 'a': 1 }, new Foo); + * // => { 'a': 1, 'b': 2 } + * + * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); + * // => { 'a': 1, 'b': 2, 'c': 3 } + */function toPlainObject(value){return copyObject(value,keysIn(value));}/** + * Converts `value` to a safe integer. A safe integer can be compared and + * represented correctly. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toSafeInteger(3.2); + * // => 3 + * + * _.toSafeInteger(Number.MIN_VALUE); + * // => 0 + * + * _.toSafeInteger(Infinity); + * // => 9007199254740991 + * + * _.toSafeInteger('3.2'); + * // => 3 + */function toSafeInteger(value){return value?baseClamp(toInteger(value),-MAX_SAFE_INTEGER,MAX_SAFE_INTEGER):value===0?value:0;}/** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */function toString(value){return value==null?'':baseToString(value);}/*------------------------------------------------------------------------*/ /** + * Assigns own enumerable string keyed properties of source objects to the + * destination object. Source objects are applied from left to right. + * Subsequent sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object` and is loosely based on + * [`Object.assign`](https://mdn.io/Object/assign). + * + * @static + * @memberOf _ + * @since 0.10.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.assignIn + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * function Bar() { + * this.c = 3; + * } + * + * Foo.prototype.b = 2; + * Bar.prototype.d = 4; + * + * _.assign({ 'a': 0 }, new Foo, new Bar); + * // => { 'a': 1, 'c': 3 } + */var assign=createAssigner(function(object,source){if(isPrototype(source)||isArrayLike(source)){copyObject(source,keys(source),object);return;}for(var key in source){if(hasOwnProperty.call(source,key)){assignValue(object,key,source[key]);}}});/** + * This method is like `_.assign` except that it iterates over own and + * inherited source properties. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias extend + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.assign + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * function Bar() { + * this.c = 3; + * } + * + * Foo.prototype.b = 2; + * Bar.prototype.d = 4; + * + * _.assignIn({ 'a': 0 }, new Foo, new Bar); + * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 } + */var assignIn=createAssigner(function(object,source){copyObject(source,keysIn(source),object);});/** + * This method is like `_.assignIn` except that it accepts `customizer` + * which is invoked to produce the assigned values. If `customizer` returns + * `undefined`, assignment is handled by the method instead. The `customizer` + * is invoked with five arguments: (objValue, srcValue, key, object, source). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias extendWith + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @see _.assignWith + * @example + * + * function customizer(objValue, srcValue) { + * return _.isUndefined(objValue) ? srcValue : objValue; + * } + * + * var defaults = _.partialRight(_.assignInWith, customizer); + * + * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */var assignInWith=createAssigner(function(object,source,srcIndex,customizer){copyObject(source,keysIn(source),object,customizer);});/** + * This method is like `_.assign` except that it accepts `customizer` + * which is invoked to produce the assigned values. If `customizer` returns + * `undefined`, assignment is handled by the method instead. The `customizer` + * is invoked with five arguments: (objValue, srcValue, key, object, source). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @see _.assignInWith + * @example + * + * function customizer(objValue, srcValue) { + * return _.isUndefined(objValue) ? srcValue : objValue; + * } + * + * var defaults = _.partialRight(_.assignWith, customizer); + * + * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */var assignWith=createAssigner(function(object,source,srcIndex,customizer){copyObject(source,keys(source),object,customizer);});/** + * Creates an array of values corresponding to `paths` of `object`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Array} Returns the picked values. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; + * + * _.at(object, ['a[0].b.c', 'a[1]']); + * // => [3, 4] + */var at=flatRest(baseAt);/** + * Creates an object that inherits from the `prototype` object. If a + * `properties` object is given, its own enumerable string keyed properties + * are assigned to the created object. + * + * @static + * @memberOf _ + * @since 2.3.0 + * @category Object + * @param {Object} prototype The object to inherit from. + * @param {Object} [properties] The properties to assign to the object. + * @returns {Object} Returns the new object. + * @example + * + * function Shape() { + * this.x = 0; + * this.y = 0; + * } + * + * function Circle() { + * Shape.call(this); + * } + * + * Circle.prototype = _.create(Shape.prototype, { + * 'constructor': Circle + * }); + * + * var circle = new Circle; + * circle instanceof Circle; + * // => true + * + * circle instanceof Shape; + * // => true + */function create(prototype,properties){var result=baseCreate(prototype);return properties==null?result:baseAssign(result,properties);}/** + * Assigns own and inherited enumerable string keyed properties of source + * objects to the destination object for all destination properties that + * resolve to `undefined`. Source objects are applied from left to right. + * Once a property is set, additional values of the same property are ignored. + * + * **Note:** This method mutates `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.defaultsDeep + * @example + * + * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */var defaults=baseRest(function(object,sources){object=Object(object);var index=-1;var length=sources.length;var guard=length>2?sources[2]:undefined$1;if(guard&&isIterateeCall(sources[0],sources[1],guard)){length=1;}while(++index { 'a': { 'b': 2, 'c': 3 } } + */var defaultsDeep=baseRest(function(args){args.push(undefined$1,customDefaultsMerge);return apply(mergeWith,undefined$1,args);});/** + * This method is like `_.find` except that it returns the key of the first + * element `predicate` returns truthy for instead of the element itself. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Object + * @param {Object} object The object to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {string|undefined} Returns the key of the matched element, + * else `undefined`. + * @example + * + * var users = { + * 'barney': { 'age': 36, 'active': true }, + * 'fred': { 'age': 40, 'active': false }, + * 'pebbles': { 'age': 1, 'active': true } + * }; + * + * _.findKey(users, function(o) { return o.age < 40; }); + * // => 'barney' (iteration order is not guaranteed) + * + * // The `_.matches` iteratee shorthand. + * _.findKey(users, { 'age': 1, 'active': true }); + * // => 'pebbles' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findKey(users, ['active', false]); + * // => 'fred' + * + * // The `_.property` iteratee shorthand. + * _.findKey(users, 'active'); + * // => 'barney' + */function findKey(object,predicate){return baseFindKey(object,getIteratee(predicate,3),baseForOwn);}/** + * This method is like `_.findKey` except that it iterates over elements of + * a collection in the opposite order. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Object + * @param {Object} object The object to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {string|undefined} Returns the key of the matched element, + * else `undefined`. + * @example + * + * var users = { + * 'barney': { 'age': 36, 'active': true }, + * 'fred': { 'age': 40, 'active': false }, + * 'pebbles': { 'age': 1, 'active': true } + * }; + * + * _.findLastKey(users, function(o) { return o.age < 40; }); + * // => returns 'pebbles' assuming `_.findKey` returns 'barney' + * + * // The `_.matches` iteratee shorthand. + * _.findLastKey(users, { 'age': 36, 'active': true }); + * // => 'barney' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findLastKey(users, ['active', false]); + * // => 'fred' + * + * // The `_.property` iteratee shorthand. + * _.findLastKey(users, 'active'); + * // => 'pebbles' + */function findLastKey(object,predicate){return baseFindKey(object,getIteratee(predicate,3),baseForOwnRight);}/** + * Iterates over own and inherited enumerable string keyed properties of an + * object and invokes `iteratee` for each property. The iteratee is invoked + * with three arguments: (value, key, object). Iteratee functions may exit + * iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 0.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forInRight + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forIn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed). + */function forIn(object,iteratee){return object==null?object:baseFor(object,getIteratee(iteratee,3),keysIn);}/** + * This method is like `_.forIn` except that it iterates over properties of + * `object` in the opposite order. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forIn + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forInRight(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'. + */function forInRight(object,iteratee){return object==null?object:baseForRight(object,getIteratee(iteratee,3),keysIn);}/** + * Iterates over own enumerable string keyed properties of an object and + * invokes `iteratee` for each property. The iteratee is invoked with three + * arguments: (value, key, object). Iteratee functions may exit iteration + * early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 0.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forOwnRight + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */function forOwn(object,iteratee){return object&&baseForOwn(object,getIteratee(iteratee,3));}/** + * This method is like `_.forOwn` except that it iterates over properties of + * `object` in the opposite order. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forOwn + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwnRight(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'. + */function forOwnRight(object,iteratee){return object&&baseForOwnRight(object,getIteratee(iteratee,3));}/** + * Creates an array of function property names from own enumerable properties + * of `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to inspect. + * @returns {Array} Returns the function names. + * @see _.functionsIn + * @example + * + * function Foo() { + * this.a = _.constant('a'); + * this.b = _.constant('b'); + * } + * + * Foo.prototype.c = _.constant('c'); + * + * _.functions(new Foo); + * // => ['a', 'b'] + */function functions(object){return object==null?[]:baseFunctions(object,keys(object));}/** + * Creates an array of function property names from own and inherited + * enumerable properties of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to inspect. + * @returns {Array} Returns the function names. + * @see _.functions + * @example + * + * function Foo() { + * this.a = _.constant('a'); + * this.b = _.constant('b'); + * } + * + * Foo.prototype.c = _.constant('c'); + * + * _.functionsIn(new Foo); + * // => ['a', 'b', 'c'] + */function functionsIn(object){return object==null?[]:baseFunctions(object,keysIn(object));}/** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */function get(object,path,defaultValue){var result=object==null?undefined$1:baseGet(object,path);return result===undefined$1?defaultValue:result;}/** + * Checks if `path` is a direct property of `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = { 'a': { 'b': 2 } }; + * var other = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.has(object, 'a'); + * // => true + * + * _.has(object, 'a.b'); + * // => true + * + * _.has(object, ['a', 'b']); + * // => true + * + * _.has(other, 'a'); + * // => false + */function has(object,path){return object!=null&&hasPath(object,path,baseHas);}/** + * Checks if `path` is a direct or inherited property of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.hasIn(object, 'a'); + * // => true + * + * _.hasIn(object, 'a.b'); + * // => true + * + * _.hasIn(object, ['a', 'b']); + * // => true + * + * _.hasIn(object, 'b'); + * // => false + */function hasIn(object,path){return object!=null&&hasPath(object,path,baseHasIn);}/** + * Creates an object composed of the inverted keys and values of `object`. + * If `object` contains duplicate values, subsequent values overwrite + * property assignments of previous values. + * + * @static + * @memberOf _ + * @since 0.7.0 + * @category Object + * @param {Object} object The object to invert. + * @returns {Object} Returns the new inverted object. + * @example + * + * var object = { 'a': 1, 'b': 2, 'c': 1 }; + * + * _.invert(object); + * // => { '1': 'c', '2': 'b' } + */var invert=createInverter(function(result,value,key){if(value!=null&&typeof value.toString!='function'){value=nativeObjectToString.call(value);}result[value]=key;},constant(identity));/** + * This method is like `_.invert` except that the inverted object is generated + * from the results of running each element of `object` thru `iteratee`. The + * corresponding inverted value of each inverted key is an array of keys + * responsible for generating the inverted value. The iteratee is invoked + * with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.1.0 + * @category Object + * @param {Object} object The object to invert. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Object} Returns the new inverted object. + * @example + * + * var object = { 'a': 1, 'b': 2, 'c': 1 }; + * + * _.invertBy(object); + * // => { '1': ['a', 'c'], '2': ['b'] } + * + * _.invertBy(object, function(value) { + * return 'group' + value; + * }); + * // => { 'group1': ['a', 'c'], 'group2': ['b'] } + */var invertBy=createInverter(function(result,value,key){if(value!=null&&typeof value.toString!='function'){value=nativeObjectToString.call(value);}if(hasOwnProperty.call(result,value)){result[value].push(key);}else {result[value]=[key];}},getIteratee);/** + * Invokes the method at `path` of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the method to invoke. + * @param {...*} [args] The arguments to invoke the method with. + * @returns {*} Returns the result of the invoked method. + * @example + * + * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] }; + * + * _.invoke(object, 'a[0].b.c.slice', 1, 3); + * // => [2, 3] + */var invoke=baseRest(baseInvoke);/** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */function keys(object){return isArrayLike(object)?arrayLikeKeys(object):baseKeys(object);}/** + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + */function keysIn(object){return isArrayLike(object)?arrayLikeKeys(object,true):baseKeysIn(object);}/** + * The opposite of `_.mapValues`; this method creates an object with the + * same values as `object` and keys generated by running each own enumerable + * string keyed property of `object` thru `iteratee`. The iteratee is invoked + * with three arguments: (value, key, object). + * + * @static + * @memberOf _ + * @since 3.8.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns the new mapped object. + * @see _.mapValues + * @example + * + * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) { + * return key + value; + * }); + * // => { 'a1': 1, 'b2': 2 } + */function mapKeys(object,iteratee){var result={};iteratee=getIteratee(iteratee,3);baseForOwn(object,function(value,key,object){baseAssignValue(result,iteratee(value,key,object),value);});return result;}/** + * Creates an object with the same keys as `object` and values generated + * by running each own enumerable string keyed property of `object` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, key, object). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns the new mapped object. + * @see _.mapKeys + * @example + * + * var users = { + * 'fred': { 'user': 'fred', 'age': 40 }, + * 'pebbles': { 'user': 'pebbles', 'age': 1 } + * }; + * + * _.mapValues(users, function(o) { return o.age; }); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + * + * // The `_.property` iteratee shorthand. + * _.mapValues(users, 'age'); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + */function mapValues(object,iteratee){var result={};iteratee=getIteratee(iteratee,3);baseForOwn(object,function(value,key,object){baseAssignValue(result,key,iteratee(value,key,object));});return result;}/** + * This method is like `_.assign` except that it recursively merges own and + * inherited enumerable string keyed properties of source objects into the + * destination object. Source properties that resolve to `undefined` are + * skipped if a destination value exists. Array and plain object properties + * are merged recursively. Other objects and value types are overridden by + * assignment. Source objects are applied from left to right. Subsequent + * sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @example + * + * var object = { + * 'a': [{ 'b': 2 }, { 'd': 4 }] + * }; + * + * var other = { + * 'a': [{ 'c': 3 }, { 'e': 5 }] + * }; + * + * _.merge(object, other); + * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } + */var merge=createAssigner(function(object,source,srcIndex){baseMerge(object,source,srcIndex);});/** + * This method is like `_.merge` except that it accepts `customizer` which + * is invoked to produce the merged values of the destination and source + * properties. If `customizer` returns `undefined`, merging is handled by the + * method instead. The `customizer` is invoked with six arguments: + * (objValue, srcValue, key, object, source, stack). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} customizer The function to customize assigned values. + * @returns {Object} Returns `object`. + * @example + * + * function customizer(objValue, srcValue) { + * if (_.isArray(objValue)) { + * return objValue.concat(srcValue); + * } + * } + * + * var object = { 'a': [1], 'b': [2] }; + * var other = { 'a': [3], 'b': [4] }; + * + * _.mergeWith(object, other, customizer); + * // => { 'a': [1, 3], 'b': [2, 4] } + */var mergeWith=createAssigner(function(object,source,srcIndex,customizer){baseMerge(object,source,srcIndex,customizer);});/** + * The opposite of `_.pick`; this method creates an object composed of the + * own and inherited enumerable property paths of `object` that are not omitted. + * + * **Note:** This method is considerably slower than `_.pick`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {...(string|string[])} [paths] The property paths to omit. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.omit(object, ['a', 'c']); + * // => { 'b': '2' } + */var omit=flatRest(function(object,paths){var result={};if(object==null){return result;}var isDeep=false;paths=arrayMap(paths,function(path){path=castPath(path,object);isDeep||(isDeep=path.length>1);return path;});copyObject(object,getAllKeysIn(object),result);if(isDeep){result=baseClone(result,CLONE_DEEP_FLAG|CLONE_FLAT_FLAG|CLONE_SYMBOLS_FLAG,customOmitClone);}var length=paths.length;while(length--){baseUnset(result,paths[length]);}return result;});/** + * The opposite of `_.pickBy`; this method creates an object composed of + * the own and inherited enumerable string keyed properties of `object` that + * `predicate` doesn't return truthy for. The predicate is invoked with two + * arguments: (value, key). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The source object. + * @param {Function} [predicate=_.identity] The function invoked per property. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.omitBy(object, _.isNumber); + * // => { 'b': '2' } + */function omitBy(object,predicate){return pickBy(object,negate(getIteratee(predicate)));}/** + * Creates an object composed of the picked `object` properties. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.pick(object, ['a', 'c']); + * // => { 'a': 1, 'c': 3 } + */var pick=flatRest(function(object,paths){return object==null?{}:basePick(object,paths);});/** + * Creates an object composed of the `object` properties `predicate` returns + * truthy for. The predicate is invoked with two arguments: (value, key). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The source object. + * @param {Function} [predicate=_.identity] The function invoked per property. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.pickBy(object, _.isNumber); + * // => { 'a': 1, 'c': 3 } + */function pickBy(object,predicate){if(object==null){return {};}var props=arrayMap(getAllKeysIn(object),function(prop){return [prop];});predicate=getIteratee(predicate);return basePickBy(object,props,function(value,path){return predicate(value,path[0]);});}/** + * This method is like `_.get` except that if the resolved value is a + * function it's invoked with the `this` binding of its parent object and + * its result is returned. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to resolve. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] }; + * + * _.result(object, 'a[0].b.c1'); + * // => 3 + * + * _.result(object, 'a[0].b.c2'); + * // => 4 + * + * _.result(object, 'a[0].b.c3', 'default'); + * // => 'default' + * + * _.result(object, 'a[0].b.c3', _.constant('default')); + * // => 'default' + */function result(object,path,defaultValue){path=castPath(path,object);var index=-1,length=path.length;// Ensure the loop is entered when path is empty. +if(!length){length=1;object=undefined$1;}while(++index 4 + * + * _.set(object, ['x', '0', 'y', 'z'], 5); + * console.log(object.x[0].y.z); + * // => 5 + */function set(object,path,value){return object==null?object:baseSet(object,path,value);}/** + * This method is like `_.set` except that it accepts `customizer` which is + * invoked to produce the objects of `path`. If `customizer` returns `undefined` + * path creation is handled by the method instead. The `customizer` is invoked + * with three arguments: (nsValue, key, nsObject). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @example + * + * var object = {}; + * + * _.setWith(object, '[0][1]', 'a', Object); + * // => { '0': { '1': 'a' } } + */function setWith(object,path,value,customizer){customizer=typeof customizer=='function'?customizer:undefined$1;return object==null?object:baseSet(object,path,value,customizer);}/** + * Creates an array of own enumerable string keyed-value pairs for `object` + * which can be consumed by `_.fromPairs`. If `object` is a map or set, its + * entries are returned. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias entries + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the key-value pairs. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.toPairs(new Foo); + * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed) + */var toPairs=createToPairs(keys);/** + * Creates an array of own and inherited enumerable string keyed-value pairs + * for `object` which can be consumed by `_.fromPairs`. If `object` is a map + * or set, its entries are returned. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias entriesIn + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the key-value pairs. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.toPairsIn(new Foo); + * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed) + */var toPairsIn=createToPairs(keysIn);/** + * An alternative to `_.reduce`; this method transforms `object` to a new + * `accumulator` object which is the result of running each of its own + * enumerable string keyed properties thru `iteratee`, with each invocation + * potentially mutating the `accumulator` object. If `accumulator` is not + * provided, a new object with the same `[[Prototype]]` will be used. The + * iteratee is invoked with four arguments: (accumulator, value, key, object). + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 1.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The custom accumulator value. + * @returns {*} Returns the accumulated value. + * @example + * + * _.transform([2, 3, 4], function(result, n) { + * result.push(n *= n); + * return n % 2 == 0; + * }, []); + * // => [4, 9] + * + * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { + * (result[value] || (result[value] = [])).push(key); + * }, {}); + * // => { '1': ['a', 'c'], '2': ['b'] } + */function transform(object,iteratee,accumulator){var isArr=isArray(object),isArrLike=isArr||isBuffer(object)||isTypedArray(object);iteratee=getIteratee(iteratee,4);if(accumulator==null){var Ctor=object&&object.constructor;if(isArrLike){accumulator=isArr?new Ctor():[];}else if(isObject(object)){accumulator=isFunction(Ctor)?baseCreate(getPrototype(object)):{};}else {accumulator={};}}(isArrLike?arrayEach:baseForOwn)(object,function(value,index,object){return iteratee(accumulator,value,index,object);});return accumulator;}/** + * Removes the property at `path` of `object`. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to unset. + * @returns {boolean} Returns `true` if the property is deleted, else `false`. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 7 } }] }; + * _.unset(object, 'a[0].b.c'); + * // => true + * + * console.log(object); + * // => { 'a': [{ 'b': {} }] }; + * + * _.unset(object, ['a', '0', 'b', 'c']); + * // => true + * + * console.log(object); + * // => { 'a': [{ 'b': {} }] }; + */function unset(object,path){return object==null?true:baseUnset(object,path);}/** + * This method is like `_.set` except that accepts `updater` to produce the + * value to set. Use `_.updateWith` to customize `path` creation. The `updater` + * is invoked with one argument: (value). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.6.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {Function} updater The function to produce the updated value. + * @returns {Object} Returns `object`. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.update(object, 'a[0].b.c', function(n) { return n * n; }); + * console.log(object.a[0].b.c); + * // => 9 + * + * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; }); + * console.log(object.x[0].y.z); + * // => 0 + */function update(object,path,updater){return object==null?object:baseUpdate(object,path,castFunction(updater));}/** + * This method is like `_.update` except that it accepts `customizer` which is + * invoked to produce the objects of `path`. If `customizer` returns `undefined` + * path creation is handled by the method instead. The `customizer` is invoked + * with three arguments: (nsValue, key, nsObject). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.6.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {Function} updater The function to produce the updated value. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @example + * + * var object = {}; + * + * _.updateWith(object, '[0][1]', _.constant('a'), Object); + * // => { '0': { '1': 'a' } } + */function updateWith(object,path,updater,customizer){customizer=typeof customizer=='function'?customizer:undefined$1;return object==null?object:baseUpdate(object,path,castFunction(updater),customizer);}/** + * Creates an array of the own enumerable string keyed property values of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.values(new Foo); + * // => [1, 2] (iteration order is not guaranteed) + * + * _.values('hi'); + * // => ['h', 'i'] + */function values(object){return object==null?[]:baseValues(object,keys(object));}/** + * Creates an array of the own and inherited enumerable string keyed property + * values of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.valuesIn(new Foo); + * // => [1, 2, 3] (iteration order is not guaranteed) + */function valuesIn(object){return object==null?[]:baseValues(object,keysIn(object));}/*------------------------------------------------------------------------*/ /** + * Clamps `number` within the inclusive `lower` and `upper` bounds. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Number + * @param {number} number The number to clamp. + * @param {number} [lower] The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the clamped number. + * @example + * + * _.clamp(-10, -5, 5); + * // => -5 + * + * _.clamp(10, -5, 5); + * // => 5 + */function clamp(number,lower,upper){if(upper===undefined$1){upper=lower;lower=undefined$1;}if(upper!==undefined$1){upper=toNumber(upper);upper=upper===upper?upper:0;}if(lower!==undefined$1){lower=toNumber(lower);lower=lower===lower?lower:0;}return baseClamp(toNumber(number),lower,upper);}/** + * Checks if `n` is between `start` and up to, but not including, `end`. If + * `end` is not specified, it's set to `start` with `start` then set to `0`. + * If `start` is greater than `end` the params are swapped to support + * negative ranges. + * + * @static + * @memberOf _ + * @since 3.3.0 + * @category Number + * @param {number} number The number to check. + * @param {number} [start=0] The start of the range. + * @param {number} end The end of the range. + * @returns {boolean} Returns `true` if `number` is in the range, else `false`. + * @see _.range, _.rangeRight + * @example + * + * _.inRange(3, 2, 4); + * // => true + * + * _.inRange(4, 8); + * // => true + * + * _.inRange(4, 2); + * // => false + * + * _.inRange(2, 2); + * // => false + * + * _.inRange(1.2, 2); + * // => true + * + * _.inRange(5.2, 4); + * // => false + * + * _.inRange(-3, -2, -6); + * // => true + */function inRange(number,start,end){start=toFinite(start);if(end===undefined$1){end=start;start=0;}else {end=toFinite(end);}number=toNumber(number);return baseInRange(number,start,end);}/** + * Produces a random number between the inclusive `lower` and `upper` bounds. + * If only one argument is provided a number between `0` and the given number + * is returned. If `floating` is `true`, or either `lower` or `upper` are + * floats, a floating-point number is returned instead of an integer. + * + * **Note:** JavaScript follows the IEEE-754 standard for resolving + * floating-point values which can produce unexpected results. + * + * @static + * @memberOf _ + * @since 0.7.0 + * @category Number + * @param {number} [lower=0] The lower bound. + * @param {number} [upper=1] The upper bound. + * @param {boolean} [floating] Specify returning a floating-point number. + * @returns {number} Returns the random number. + * @example + * + * _.random(0, 5); + * // => an integer between 0 and 5 + * + * _.random(5); + * // => also an integer between 0 and 5 + * + * _.random(5, true); + * // => a floating-point number between 0 and 5 + * + * _.random(1.2, 5.2); + * // => a floating-point number between 1.2 and 5.2 + */function random(lower,upper,floating){if(floating&&typeof floating!='boolean'&&isIterateeCall(lower,upper,floating)){upper=floating=undefined$1;}if(floating===undefined$1){if(typeof upper=='boolean'){floating=upper;upper=undefined$1;}else if(typeof lower=='boolean'){floating=lower;lower=undefined$1;}}if(lower===undefined$1&&upper===undefined$1){lower=0;upper=1;}else {lower=toFinite(lower);if(upper===undefined$1){upper=lower;lower=0;}else {upper=toFinite(upper);}}if(lower>upper){var temp=lower;lower=upper;upper=temp;}if(floating||lower%1||upper%1){var rand=nativeRandom();return nativeMin(lower+rand*(upper-lower+freeParseFloat('1e-'+((rand+'').length-1))),upper);}return baseRandom(lower,upper);}/*------------------------------------------------------------------------*/ /** + * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the camel cased string. + * @example + * + * _.camelCase('Foo Bar'); + * // => 'fooBar' + * + * _.camelCase('--foo-bar--'); + * // => 'fooBar' + * + * _.camelCase('__FOO_BAR__'); + * // => 'fooBar' + */var camelCase=createCompounder(function(result,word,index){word=word.toLowerCase();return result+(index?capitalize(word):word);});/** + * Converts the first character of `string` to upper case and the remaining + * to lower case. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to capitalize. + * @returns {string} Returns the capitalized string. + * @example + * + * _.capitalize('FRED'); + * // => 'Fred' + */function capitalize(string){return upperFirst(toString(string).toLowerCase());}/** + * Deburrs `string` by converting + * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) + * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A) + * letters to basic Latin letters and removing + * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to deburr. + * @returns {string} Returns the deburred string. + * @example + * + * _.deburr('déjà vu'); + * // => 'deja vu' + */function deburr(string){string=toString(string);return string&&string.replace(reLatin,deburrLetter).replace(reComboMark,'');}/** + * Checks if `string` ends with the given target string. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to inspect. + * @param {string} [target] The string to search for. + * @param {number} [position=string.length] The position to search up to. + * @returns {boolean} Returns `true` if `string` ends with `target`, + * else `false`. + * @example + * + * _.endsWith('abc', 'c'); + * // => true + * + * _.endsWith('abc', 'b'); + * // => false + * + * _.endsWith('abc', 'b', 2); + * // => true + */function endsWith(string,target,position){string=toString(string);target=baseToString(target);var length=string.length;position=position===undefined$1?length:baseClamp(toInteger(position),0,length);var end=position;position-=target.length;return position>=0&&string.slice(position,end)==target;}/** + * Converts the characters "&", "<", ">", '"', and "'" in `string` to their + * corresponding HTML entities. + * + * **Note:** No other characters are escaped. To escape additional + * characters use a third-party library like [_he_](https://mths.be/he). + * + * Though the ">" character is escaped for symmetry, characters like + * ">" and "/" don't need escaping in HTML and have no special meaning + * unless they're part of a tag or unquoted attribute value. See + * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands) + * (under "semi-related fun fact") for more details. + * + * When working with HTML you should always + * [quote attribute values](http://wonko.com/post/html-escaping) to reduce + * XSS vectors. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. + * @example + * + * _.escape('fred, barney, & pebbles'); + * // => 'fred, barney, & pebbles' + */function escape(string){string=toString(string);return string&&reHasUnescapedHtml.test(string)?string.replace(reUnescapedHtml,escapeHtmlChar):string;}/** + * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+", + * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. + * @example + * + * _.escapeRegExp('[lodash](https://lodash.com/)'); + * // => '\[lodash\]\(https://lodash\.com/\)' + */function escapeRegExp(string){string=toString(string);return string&&reHasRegExpChar.test(string)?string.replace(reRegExpChar,'\\$&'):string;}/** + * Converts `string` to + * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the kebab cased string. + * @example + * + * _.kebabCase('Foo Bar'); + * // => 'foo-bar' + * + * _.kebabCase('fooBar'); + * // => 'foo-bar' + * + * _.kebabCase('__FOO_BAR__'); + * // => 'foo-bar' + */var kebabCase=createCompounder(function(result,word,index){return result+(index?'-':'')+word.toLowerCase();});/** + * Converts `string`, as space separated words, to lower case. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the lower cased string. + * @example + * + * _.lowerCase('--Foo-Bar--'); + * // => 'foo bar' + * + * _.lowerCase('fooBar'); + * // => 'foo bar' + * + * _.lowerCase('__FOO_BAR__'); + * // => 'foo bar' + */var lowerCase=createCompounder(function(result,word,index){return result+(index?' ':'')+word.toLowerCase();});/** + * Converts the first character of `string` to lower case. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.lowerFirst('Fred'); + * // => 'fred' + * + * _.lowerFirst('FRED'); + * // => 'fRED' + */var lowerFirst=createCaseFirst('toLowerCase');/** + * Pads `string` on the left and right sides if it's shorter than `length`. + * Padding characters are truncated if they can't be evenly divided by `length`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.pad('abc', 8); + * // => ' abc ' + * + * _.pad('abc', 8, '_-'); + * // => '_-abc_-_' + * + * _.pad('abc', 3); + * // => 'abc' + */function pad(string,length,chars){string=toString(string);length=toInteger(length);var strLength=length?stringSize(string):0;if(!length||strLength>=length){return string;}var mid=(length-strLength)/2;return createPadding(nativeFloor(mid),chars)+string+createPadding(nativeCeil(mid),chars);}/** + * Pads `string` on the right side if it's shorter than `length`. Padding + * characters are truncated if they exceed `length`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.padEnd('abc', 6); + * // => 'abc ' + * + * _.padEnd('abc', 6, '_-'); + * // => 'abc_-_' + * + * _.padEnd('abc', 3); + * // => 'abc' + */function padEnd(string,length,chars){string=toString(string);length=toInteger(length);var strLength=length?stringSize(string):0;return length&&strLength ' abc' + * + * _.padStart('abc', 6, '_-'); + * // => '_-_abc' + * + * _.padStart('abc', 3); + * // => 'abc' + */function padStart(string,length,chars){string=toString(string);length=toInteger(length);var strLength=length?stringSize(string):0;return length&&strLength 8 + * + * _.map(['6', '08', '10'], _.parseInt); + * // => [6, 8, 10] + */function parseInt(string,radix,guard){if(guard||radix==null){radix=0;}else if(radix){radix=+radix;}return nativeParseInt(toString(string).replace(reTrimStart,''),radix||0);}/** + * Repeats the given string `n` times. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to repeat. + * @param {number} [n=1] The number of times to repeat the string. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {string} Returns the repeated string. + * @example + * + * _.repeat('*', 3); + * // => '***' + * + * _.repeat('abc', 2); + * // => 'abcabc' + * + * _.repeat('abc', 0); + * // => '' + */function repeat(string,n,guard){if(guard?isIterateeCall(string,n,guard):n===undefined$1){n=1;}else {n=toInteger(n);}return baseRepeat(toString(string),n);}/** + * Replaces matches for `pattern` in `string` with `replacement`. + * + * **Note:** This method is based on + * [`String#replace`](https://mdn.io/String/replace). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to modify. + * @param {RegExp|string} pattern The pattern to replace. + * @param {Function|string} replacement The match replacement. + * @returns {string} Returns the modified string. + * @example + * + * _.replace('Hi Fred', 'Fred', 'Barney'); + * // => 'Hi Barney' + */function replace(){var args=arguments,string=toString(args[0]);return args.length<3?string:string.replace(args[1],args[2]);}/** + * Converts `string` to + * [snake case](https://en.wikipedia.org/wiki/Snake_case). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the snake cased string. + * @example + * + * _.snakeCase('Foo Bar'); + * // => 'foo_bar' + * + * _.snakeCase('fooBar'); + * // => 'foo_bar' + * + * _.snakeCase('--FOO-BAR--'); + * // => 'foo_bar' + */var snakeCase=createCompounder(function(result,word,index){return result+(index?'_':'')+word.toLowerCase();});/** + * Splits `string` by `separator`. + * + * **Note:** This method is based on + * [`String#split`](https://mdn.io/String/split). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to split. + * @param {RegExp|string} separator The separator pattern to split by. + * @param {number} [limit] The length to truncate results to. + * @returns {Array} Returns the string segments. + * @example + * + * _.split('a-b-c', '-', 2); + * // => ['a', 'b'] + */function split(string,separator,limit){if(limit&&typeof limit!='number'&&isIterateeCall(string,separator,limit)){separator=limit=undefined$1;}limit=limit===undefined$1?MAX_ARRAY_LENGTH:limit>>>0;if(!limit){return [];}string=toString(string);if(string&&(typeof separator=='string'||separator!=null&&!isRegExp(separator))){separator=baseToString(separator);if(!separator&&hasUnicode(string)){return castSlice(stringToArray(string),0,limit);}}return string.split(separator,limit);}/** + * Converts `string` to + * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage). + * + * @static + * @memberOf _ + * @since 3.1.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the start cased string. + * @example + * + * _.startCase('--foo-bar--'); + * // => 'Foo Bar' + * + * _.startCase('fooBar'); + * // => 'Foo Bar' + * + * _.startCase('__FOO_BAR__'); + * // => 'FOO BAR' + */var startCase=createCompounder(function(result,word,index){return result+(index?' ':'')+upperFirst(word);});/** + * Checks if `string` starts with the given target string. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to inspect. + * @param {string} [target] The string to search for. + * @param {number} [position=0] The position to search from. + * @returns {boolean} Returns `true` if `string` starts with `target`, + * else `false`. + * @example + * + * _.startsWith('abc', 'a'); + * // => true + * + * _.startsWith('abc', 'b'); + * // => false + * + * _.startsWith('abc', 'b', 1); + * // => true + */function startsWith(string,target,position){string=toString(string);position=position==null?0:baseClamp(toInteger(position),0,string.length);target=baseToString(target);return string.slice(position,position+target.length)==target;}/** + * Creates a compiled template function that can interpolate data properties + * in "interpolate" delimiters, HTML-escape interpolated data properties in + * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data + * properties may be accessed as free variables in the template. If a setting + * object is given, it takes precedence over `_.templateSettings` values. + * + * **Note:** In the development build `_.template` utilizes + * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl) + * for easier debugging. + * + * For more information on precompiling templates see + * [lodash's custom builds documentation](https://lodash.com/custom-builds). + * + * For more information on Chrome extension sandboxes see + * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval). + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category String + * @param {string} [string=''] The template string. + * @param {Object} [options={}] The options object. + * @param {RegExp} [options.escape=_.templateSettings.escape] + * The HTML "escape" delimiter. + * @param {RegExp} [options.evaluate=_.templateSettings.evaluate] + * The "evaluate" delimiter. + * @param {Object} [options.imports=_.templateSettings.imports] + * An object to import into the template as free variables. + * @param {RegExp} [options.interpolate=_.templateSettings.interpolate] + * The "interpolate" delimiter. + * @param {string} [options.sourceURL='lodash.templateSources[n]'] + * The sourceURL of the compiled template. + * @param {string} [options.variable='obj'] + * The data object variable name. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the compiled template function. + * @example + * + * // Use the "interpolate" delimiter to create a compiled template. + * var compiled = _.template('hello <%= user %>!'); + * compiled({ 'user': 'fred' }); + * // => 'hello fred!' + * + * // Use the HTML "escape" delimiter to escape data property values. + * var compiled = _.template('<%- value %>'); + * compiled({ 'value': '