lodash-rails 3.9.3 → 3.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,102 +1,102 @@
1
1
  /**
2
2
  * @license
3
- * lodash 3.9.3 (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE
3
+ * lodash 3.10.0 (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE
4
4
  * Build: `lodash compat -o ./lodash.js`
5
5
  */
6
- ;(function(){function n(n,t){if(n!==t){var r=null===n,e=n===m,u=n===n,o=null===t,i=t===m,a=t===t;if(n>t&&!o||!u||r&&!i&&a||e&&a)return 1;if(n<t&&!r||!a||o&&!e&&u||i&&u)return-1}return 0}function t(n,t,r){for(var e=n.length,u=r?e:-1;r?u--:++u<e;)if(t(n[u],u,n))return u;return-1}function r(n,t,r){if(t!==t)return s(n,r);r-=1;for(var e=n.length;++r<e;)if(n[r]===t)return r;return-1}function e(n){return typeof n=="function"||false}function u(n){return typeof n=="string"?n:null==n?"":n+""}function o(n,t){for(var r=-1,e=n.length;++r<e&&-1<t.indexOf(n.charAt(r)););
7
- return r}function i(n,t){for(var r=n.length;r--&&-1<t.indexOf(n.charAt(r)););return r}function a(t,r){return n(t.a,r.a)||t.b-r.b}function l(n){return Nn[n]}function f(n){return Pn[n]}function c(n){return"\\"+Mn[n]}function s(n,t,r){var e=n.length;for(t+=r?0:-1;r?t--:++t<e;){var u=n[t];if(u!==u)return t}return-1}function p(n){return!!n&&typeof n=="object"}function h(n){return 160>=n&&9<=n&&13>=n||32==n||160==n||5760==n||6158==n||8192<=n&&(8202>=n||8232==n||8233==n||8239==n||8287==n||12288==n||65279==n);
8
- }function _(n,t){for(var r=-1,e=n.length,u=-1,o=[];++r<e;)n[r]===t&&(n[r]=N,o[++u]=r);return o}function v(n){for(var t=-1,r=n.length;++t<r&&h(n.charCodeAt(t)););return t}function g(n){for(var t=n.length;t--&&h(n.charCodeAt(t)););return t}function y(n){return zn[n]}function d(h){function Nn(n){if(p(n)&&!(zo(n)||n instanceof Bn)){if(n instanceof zn)return n;if(ou.call(n,"__chain__")&&ou.call(n,"__wrapped__"))return qr(n)}return new zn(n)}function Pn(){}function zn(n,t,r){this.__wrapped__=n,this.__actions__=r||[],
9
- this.__chain__=!!t}function Bn(n){this.__wrapped__=n,this.__actions__=null,this.__dir__=1,this.__filtered__=false,this.__iteratees__=null,this.__takeCount__=$u,this.__views__=null}function Mn(){this.__data__={}}function qn(n){var t=n?n.length:0;for(this.data={hash:Ou(null),set:new mu};t--;)this.push(n[t])}function Dn(n,t){var r=n.data;return(typeof t=="string"||ye(t)?r.set.has(t):r.hash[t])?0:-1}function Kn(n,t){var r=-1,e=n.length;for(t||(t=qe(e));++r<e;)t[r]=n[r];return t}function Vn(n,t){for(var r=-1,e=n.length;++r<e&&false!==t(n[r],r,n););
10
- return n}function Yn(n,t){for(var r=-1,e=n.length;++r<e;)if(!t(n[r],r,n))return false;return true}function Xn(n,t){for(var r=-1,e=n.length,u=-1,o=[];++r<e;){var i=n[r];t(i,r,n)&&(o[++u]=i)}return o}function Hn(n,t){for(var r=-1,e=n.length,u=qe(e);++r<e;)u[r]=t(n[r],r,n);return u}function Qn(n,t,r,e){var u=-1,o=n.length;for(e&&o&&(r=n[++u]);++u<o;)r=t(r,n[u],u,n);return r}function nt(n,t){for(var r=-1,e=n.length;++r<e;)if(t(n[r],r,n))return true;return false}function tt(n,t){return n===m?t:n}function rt(n,t,r,e){
11
- return n!==m&&ou.call(e,r)?n:t}function et(n,t,r){for(var e=-1,u=Ho(t),o=u.length;++e<o;){var i=u[e],a=n[i],l=r(a,t[i],i,n,t);(l===l?l===a:a!==a)&&(a!==m||i in n)||(n[i]=l)}return n}function ut(n,t){return null==t?n:it(t,Ho(t),n)}function ot(n,t){for(var r=-1,e=null==n,u=!e&&Cr(n),o=u?n.length:0,i=t.length,a=qe(i);++r<i;){var l=t[r];a[r]=u?Sr(l,o)?n[l]:m:e?m:n[l]}return a}function it(n,t,r){r||(r={});for(var e=-1,u=t.length;++e<u;){var o=t[e];r[o]=n[o]}return r}function at(n,t,r){var e=typeof n;return"function"==e?t===m?n:qt(n,t,r):null==n?Ne:"object"==e?jt(n):t===m?Me(n):Ot(n,t);
12
- }function lt(n,t,r,e,u,o,i){var a;if(r&&(a=u?r(n,e,u):r(n)),a!==m)return a;if(!ye(n))return n;if(e=zo(n)){if(a=kr(n),!t)return Kn(n,a)}else{var l=au.call(n),f=l==D;if(l!=V&&l!=P&&(!f||u))return $n[l]?Er(n,l,t):u?n:{};if(Gn(n))return u?n:{};if(a=Ir(f?{}:n),!t)return ut(a,n)}for(o||(o=[]),i||(i=[]),u=o.length;u--;)if(o[u]==n)return i[u];return o.push(n),i.push(a),(e?Vn:yt)(n,function(e,u){a[u]=lt(e,t,r,u,n,o,i)}),a}function ft(n,t,r){if(typeof n!="function")throw new He(L);return wu(function(){n.apply(m,r);
13
- },t)}function ct(n,t){var e=n?n.length:0,u=[];if(!e)return u;var o=-1,i=Ar(),a=i==r,l=a&&200<=t.length?Hu(t):null,f=t.length;l&&(i=Dn,a=false,t=l);n:for(;++o<e;)if(l=n[o],a&&l===l){for(var c=f;c--;)if(t[c]===l)continue n;u.push(l)}else 0>i(t,l,0)&&u.push(l);return u}function st(n,t){var r=true;return Yu(n,function(n,e,u){return r=!!t(n,e,u)}),r}function pt(n,t,r,e){var u=e,o=u;return Yu(n,function(n,i,a){i=+t(n,i,a),(r(i,u)||i===e&&i===o)&&(u=i,o=n)}),o}function ht(n,t){var r=[];return Yu(n,function(n,e,u){
14
- t(n,e,u)&&r.push(n)}),r}function _t(n,t,r,e){var u;return r(n,function(n,r,o){return t(n,r,o)?(u=e?r:n,false):void 0}),u}function vt(n,t,r){for(var e=-1,u=n.length,o=-1,i=[];++e<u;){var a=n[e];if(p(a)&&Cr(a)&&(r||zo(a)||he(a))){t&&(a=vt(a,t,r));for(var l=-1,f=a.length;++l<f;)i[++o]=a[l]}else r||(i[++o]=a)}return i}function gt(n,t){Gu(n,t,Ie)}function yt(n,t){return Gu(n,t,Ho)}function dt(n,t){return Ju(n,t,Ho)}function mt(n,t){for(var r=-1,e=t.length,u=-1,o=[];++r<e;){var i=t[r];Mo(n[i])&&(o[++u]=i);
15
- }return o}function wt(n,t,r){if(null!=n){n=Br(n),r!==m&&r in n&&(t=[r]),r=0;for(var e=t.length;null!=n&&r<e;)n=Br(n)[t[r++]];return r&&r==e?n:m}}function bt(n,t,r,e,u,o){if(n===t)n=true;else if(null==n||null==t||!ye(n)&&!p(t))n=n!==n&&t!==t;else n:{var i=bt,a=zo(n),l=zo(t),f=z,c=z;a||(f=au.call(n),f==P?f=V:f!=V&&(a=xe(n))),l||(c=au.call(t),c==P?c=V:c!=V&&xe(t));var s=f==V&&!Gn(n),l=c==V&&!Gn(t),c=f==c;if(!c||a||s){if(!e&&(f=s&&ou.call(n,"__wrapped__"),l=l&&ou.call(t,"__wrapped__"),f||l)){n=i(f?n.value():n,l?t.value():t,r,e,u,o);
16
- break n}if(c){for(u||(u=[]),o||(o=[]),f=u.length;f--;)if(u[f]==n){n=o[f]==t;break n}u.push(n),o.push(t),n=(a?dr:wr)(n,t,i,r,e,u,o),u.pop(),o.pop()}else n=false}else n=mr(n,t,f)}return n}function xt(n,t,r){var e=t.length,u=e,o=!r;if(null==n)return!u;for(n=Br(n);e--;){var i=t[e];if(o&&i[2]?i[1]!==n[i[0]]:!(i[0]in n))return false}for(;++e<u;){var i=t[e],a=i[0],l=n[a],f=i[1];if(o&&i[2]){if(l===m&&!(a in n))return false}else if(i=r?r(l,f,a):m,i===m?!bt(f,l,r,true):!i)return false}return true}function At(n,t){var r=-1,e=Cr(n)?qe(n.length):[];
17
- return Yu(n,function(n,u,o){e[++r]=t(n,u,o)}),e}function jt(n){var t=jr(n);if(1==t.length&&t[0][2]){var r=t[0][0],e=t[0][1];return function(n){return null==n?false:(n=Br(n),n[r]===e&&(e!==m||r in n))}}return function(n){return xt(n,t)}}function Ot(n,t){var r=zo(n),e=Ur(n)&&t===t&&!ye(t),u=n+"";return n=Mr(n),function(o){if(null==o)return false;var i=u;if(o=Br(o),!(!r&&e||i in o)){if(o=1==n.length?o:wt(o,Tt(n,0,-1)),null==o)return false;i=Zr(n),o=Br(o)}return o[i]===t?t!==m||i in o:bt(t,o[i],m,true)}}function kt(n,t,r,e,u){
18
- if(!ye(n))return n;var o=Cr(t)&&(zo(t)||xe(t)),i=o?null:Ho(t);return Vn(i||t,function(a,l){if(i&&(l=a,a=t[l]),p(a)){e||(e=[]),u||(u=[]);n:{for(var f=l,c=e,s=u,h=c.length,_=t[f];h--;)if(c[h]==_){n[f]=s[h];break n}var h=n[f],v=r?r(h,_,f,n,t):m,g=v===m;g&&(v=_,Cr(_)&&(zo(_)||xe(_))?v=zo(h)?h:Cr(h)?Kn(h):[]:qo(_)||he(_)?v=he(h)?Oe(h):qo(h)?h:{}:g=false),c.push(_),s.push(v),g?n[f]=kt(v,_,r,c,s):(v===v?v!==h:h===h)&&(n[f]=v)}}else f=n[l],c=r?r(f,a,l,n,t):m,(s=c===m)&&(c=a),c===m&&(!o||l in n)||!s&&(c===c?c===f:f!==f)||(n[l]=c);
19
- }),n}function It(n){return function(t){return null==t?m:Br(t)[n]}}function Et(n){var t=n+"";return n=Mr(n),function(r){return wt(r,n,t)}}function Rt(n,t){for(var r=n?t.length:0;r--;){var e=t[r];if(e!=u&&Sr(e)){var u=e;bu.call(n,e,1)}}}function Ct(n,t){return n+_u(Wu()*(t-n+1))}function St(n,t,r,e,u){return u(n,function(n,u,o){r=e?(e=false,n):t(r,n,u,o)}),r}function Tt(n,t,r){var e=-1,u=n.length;for(t=null==t?0:+t||0,0>t&&(t=-t>u?0:u+t),r=r===m||r>u?u:+r||0,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=qe(u);++e<u;)r[e]=n[e+t];
20
- return r}function Ut(n,t){var r;return Yu(n,function(n,e,u){return r=t(n,e,u),!r}),!!r}function Wt(n,t){var r=n.length;for(n.sort(t);r--;)n[r]=n[r].c;return n}function Ft(t,r,e){var u=br(),o=-1;return r=Hn(r,function(n){return u(n)}),t=At(t,function(n){return{a:Hn(r,function(t){return t(n)}),b:++o,c:n}}),Wt(t,function(t,r){var u;n:{u=-1;for(var o=t.a,i=r.a,a=o.length,l=e.length;++u<a;){var f=n(o[u],i[u]);if(f){u=u<l?f*(e[u]?1:-1):f;break n}}u=t.b-r.b}return u})}function $t(n,t){var r=0;return Yu(n,function(n,e,u){
21
- r+=+t(n,e,u)||0}),r}function Lt(n,t){var e=-1,u=Ar(),o=n.length,i=u==r,a=i&&200<=o,l=a?Hu():null,f=[];l?(u=Dn,i=false):(a=false,l=t?[]:f);n:for(;++e<o;){var c=n[e],s=t?t(c,e,n):c;if(i&&c===c){for(var p=l.length;p--;)if(l[p]===s)continue n;t&&l.push(s),f.push(c)}else 0>u(l,s,0)&&((t||a)&&l.push(s),f.push(c))}return f}function Nt(n,t){for(var r=-1,e=t.length,u=qe(e);++r<e;)u[r]=n[t[r]];return u}function Pt(n,t,r,e){for(var u=n.length,o=e?u:-1;(e?o--:++o<u)&&t(n[o],o,n););return r?Tt(n,e?0:o,e?o+1:u):Tt(n,e?o+1:0,e?u:o);
22
- }function zt(n,t){var r=n;r instanceof Bn&&(r=r.value());for(var e=-1,u=t.length;++e<u;){var r=[r],o=t[e];yu.apply(r,o.args),r=o.func.apply(o.thisArg,r)}return r}function Bt(n,t,r){var e=0,u=n?n.length:e;if(typeof t=="number"&&t===t&&u<=Nu){for(;e<u;){var o=e+u>>>1,i=n[o];(r?i<=t:i<t)&&null!==i?e=o+1:u=o}return u}return Mt(n,t,Ne,r)}function Mt(n,t,r,e){t=r(t);for(var u=0,o=n?n.length:0,i=t!==t,a=null===t,l=t===m;u<o;){var f=_u((u+o)/2),c=r(n[f]),s=c!==m,p=c===c;(i?p||e:a?p&&s&&(e||null!=c):l?p&&(e||s):null==c?0:e?c<=t:c<t)?u=f+1:o=f;
23
- }return Cu(o,Lu)}function qt(n,t,r){if(typeof n!="function")return Ne;if(t===m)return n;switch(r){case 1:return function(r){return n.call(t,r)};case 3:return function(r,e,u){return n.call(t,r,e,u)};case 4:return function(r,e,u,o){return n.call(t,r,e,u,o)};case 5:return function(r,e,u,o,i){return n.call(t,r,e,u,o,i)}}return function(){return n.apply(t,arguments)}}function Dt(n){return su.call(n,0)}function Kt(n,t,r){for(var e=r.length,u=-1,o=Ru(n.length-e,0),i=-1,a=t.length,l=qe(o+a);++i<a;)l[i]=t[i];
24
- for(;++u<e;)l[r[u]]=n[u];for(;o--;)l[i++]=n[u++];return l}function Vt(n,t,r){for(var e=-1,u=r.length,o=-1,i=Ru(n.length-u,0),a=-1,l=t.length,f=qe(i+l);++o<i;)f[o]=n[o];for(i=o;++a<l;)f[i+a]=t[a];for(;++e<u;)f[i+r[e]]=n[o++];return f}function Yt(n,t){return function(r,e,u){var o=t?t():{};if(e=br(e,u,3),zo(r)){u=-1;for(var i=r.length;++u<i;){var a=r[u];n(o,a,e(a,u,r),r)}}else Yu(r,function(t,r,u){n(o,t,e(t,r,u),u)});return o}}function Zt(n){return se(function(t,r){var e=-1,u=null==t?0:r.length,o=2<u?r[u-2]:m,i=2<u?r[2]:m,a=1<u?r[u-1]:m;
25
- for(typeof o=="function"?(o=qt(o,a,5),u-=2):(o=typeof a=="function"?a:m,u-=o?1:0),i&&Tr(r[0],r[1],i)&&(o=3>u?m:o,u=1);++e<u;)(i=r[e])&&n(t,i,o);return t})}function Gt(n,t){return function(r,e){var u=r?no(r):0;if(!Fr(u))return n(r,e);for(var o=t?u:-1,i=Br(r);(t?o--:++o<u)&&false!==e(i[o],o,i););return r}}function Jt(n){return function(t,r,e){var u=Br(t);e=e(t);for(var o=e.length,i=n?o:-1;n?i--:++i<o;){var a=e[i];if(false===r(u[a],a,u))break}return t}}function Xt(n,t){function r(){return(this&&this!==Zn&&this instanceof r?e:n).apply(t,arguments);
26
- }var e=Qt(n);return r}function Ht(n){return function(t){var r=-1;t=Fe(Ce(t));for(var e=t.length,u="";++r<e;)u=n(u,t[r],r);return u}}function Qt(n){return function(){var t=arguments;switch(t.length){case 0:return new n;case 1:return new n(t[0]);case 2:return new n(t[0],t[1]);case 3:return new n(t[0],t[1],t[2]);case 4:return new n(t[0],t[1],t[2],t[3]);case 5:return new n(t[0],t[1],t[2],t[3],t[4])}var r=Vu(n.prototype),t=n.apply(r,t);return ye(t)?t:r}}function nr(n){function t(r,e,u){return u&&Tr(r,e,u)&&(e=null),
27
- r=yr(r,n,null,null,null,null,null,e),r.placeholder=t.placeholder,r}return t}function tr(n,t){return function(r,e,u){if(u&&Tr(r,e,u)&&(e=null),e=br(e,u,3),1==e.length){u=r=zr(r);for(var o=e,i=-1,a=u.length,l=t,f=l;++i<a;){var c=u[i],s=+o(c);n(s,l)&&(l=s,f=c)}if(u=f,!r.length||u!==t)return u}return pt(r,e,n,t)}}function rr(n,r){return function(e,u,o){return u=br(u,o,3),zo(e)?(u=t(e,u,r),-1<u?e[u]:m):_t(e,u,n)}}function er(n){return function(r,e,u){return r&&r.length?(e=br(e,u,3),t(r,e,n)):-1}}function ur(n){
28
- return function(t,r,e){return r=br(r,e,3),_t(t,r,n,true)}}function or(n){return function(){for(var t,r=arguments.length,e=n?r:-1,u=0,o=qe(r);n?e--:++e<r;){var i=o[u++]=arguments[e];if(typeof i!="function")throw new He(L);!t&&zn.prototype.thru&&"wrapper"==xr(i)&&(t=new zn([]))}for(e=t?-1:r;++e<r;){var i=o[e],u=xr(i),a="wrapper"==u?Qu(i):null;t=a&&Wr(a[0])&&a[1]==(E|j|k|R)&&!a[4].length&&1==a[9]?t[xr(a[0])].apply(t,a[3]):1==i.length&&Wr(i)?t[u]():t.thru(i)}return function(){var n=arguments;if(t&&1==n.length&&zo(n[0]))return t.plant(n[0]).value();
29
- for(var e=0,n=r?o[e].apply(this,n):n[0];++e<r;)n=o[e].call(this,n);return n}}}function ir(n,t){return function(r,e,u){return typeof e=="function"&&u===m&&zo(r)?n(r,e):t(r,qt(e,u,3))}}function ar(n){return function(t,r,e){return(typeof r!="function"||e!==m)&&(r=qt(r,e,3)),n(t,r,Ie)}}function lr(n){return function(t,r,e){return(typeof r!="function"||e!==m)&&(r=qt(r,e,3)),n(t,r)}}function fr(n){return function(t,r,e){var u={};return r=br(r,e,3),yt(t,function(t,e,o){o=r(t,e,o),e=n?o:e,t=n?t:o,u[e]=t}),
30
- u}}function cr(n){return function(t,r,e){return t=u(t),(n?t:"")+_r(t,r,e)+(n?"":t)}}function sr(n){var t=se(function(r,e){var u=_(e,t.placeholder);return yr(r,n,null,e,u)});return t}function pr(n,t){return function(r,e,u,o){var i=3>arguments.length;return typeof e=="function"&&o===m&&zo(r)?n(r,e,u,i):St(r,br(e,o,4),u,i,t)}}function hr(n,t,r,e,u,o,i,a,l,f){function c(){for(var w=arguments.length,A=w,j=qe(w);A--;)j[A]=arguments[A];if(e&&(j=Kt(j,e,u)),o&&(j=Vt(j,o,i)),v||y){var A=c.placeholder,O=_(j,A),w=w-O.length;
31
- if(w<f){var E=a?Kn(a):null,w=Ru(f-w,0),R=v?O:null,O=v?null:O,C=v?j:null,j=v?null:j;return t|=v?k:I,t&=~(v?I:k),g||(t&=~(b|x)),j=[n,t,r,C,R,j,O,E,l,w],E=hr.apply(m,j),Wr(n)&&to(E,j),E.placeholder=A,E}}if(A=p?r:this,E=h?A[n]:n,a)for(w=j.length,R=Cu(a.length,w),O=Kn(j);R--;)C=a[R],j[R]=Sr(C,w)?O[C]:m;return s&&l<j.length&&(j.length=l),this&&this!==Zn&&this instanceof c&&(E=d||Qt(n)),E.apply(A,j)}var s=t&E,p=t&b,h=t&x,v=t&j,g=t&A,y=t&O,d=h?null:Qt(n);return c}function _r(n,t,r){return n=n.length,t=+t,
32
- n<t&&Iu(t)?(t-=n,r=null==r?" ":r+"",Ue(r,pu(t/r.length)).slice(0,t)):""}function vr(n,t,r,e){function u(){for(var t=-1,a=arguments.length,l=-1,f=e.length,c=qe(a+f);++l<f;)c[l]=e[l];for(;a--;)c[l++]=arguments[++t];return(this&&this!==Zn&&this instanceof u?i:n).apply(o?r:this,c)}var o=t&b,i=Qt(n);return u}function gr(n){return function(t,r,e,u){var o=br(e);return null==e&&o===at?Bt(t,r,n):Mt(t,r,o(e,u,1),n)}}function yr(n,t,r,e,u,o,i,a){var l=t&x;if(!l&&typeof n!="function")throw new He(L);var f=e?e.length:0;
33
- if(f||(t&=~(k|I),e=u=null),f-=u?u.length:0,t&I){var c=e,s=u;e=u=null}var p=l?null:Qu(n);return r=[n,t,r,e,u,c,s,o,i,a],p&&(e=r[1],t=p[1],a=e|t,u=t==E&&e==j||t==E&&e==R&&r[7].length<=p[8]||t==(E|R)&&e==j,(a<E||u)&&(t&b&&(r[2]=p[2],a|=e&b?0:A),(e=p[3])&&(u=r[3],r[3]=u?Kt(u,e,p[4]):Kn(e),r[4]=u?_(r[3],N):Kn(p[4])),(e=p[5])&&(u=r[5],r[5]=u?Vt(u,e,p[6]):Kn(e),r[6]=u?_(r[5],N):Kn(p[6])),(e=p[7])&&(r[7]=Kn(e)),t&E&&(r[8]=null==r[8]?p[8]:Cu(r[8],p[8])),null==r[9]&&(r[9]=p[9]),r[0]=p[0],r[1]=a),t=r[1],a=r[9]),
34
- r[9]=null==a?l?0:n.length:Ru(a-f,0)||0,(p?Xu:to)(t==b?Xt(r[0],r[2]):t!=k&&t!=(b|k)||r[4].length?hr.apply(m,r):vr.apply(m,r),r)}function dr(n,t,r,e,u,o,i){var a=-1,l=n.length,f=t.length;if(l!=f&&(!u||f<=l))return false;for(;++a<l;){var c=n[a],f=t[a],s=e?e(u?f:c,u?c:f,a):m;if(s!==m){if(s)continue;return false}if(u){if(!nt(t,function(n){return c===n||r(c,n,e,u,o,i)}))return false}else if(c!==f&&!r(c,f,e,u,o,i))return false}return true}function mr(n,t,r){switch(r){case B:case M:return+n==+t;case q:return n.name==t.name&&n.message==t.message;
35
- case K:return n!=+n?t!=+t:n==+t;case Y:case Z:return n==t+""}return false}function wr(n,t,r,e,u,o,i){var a=Ho(n),l=a.length,f=Ho(t).length;if(l!=f&&!u)return false;for(f=l;f--;){var c=a[f];if(!(u?c in t:ou.call(t,c)))return false}for(var s=u;++f<l;){var c=a[f],p=n[c],h=t[c],_=e?e(u?h:p,u?p:h,c):m;if(_===m?!r(p,h,e,u,o,i):!_)return false;s||(s="constructor"==c)}return s||(r=n.constructor,e=t.constructor,!(r!=e&&"constructor"in n&&"constructor"in t)||typeof r=="function"&&r instanceof r&&typeof e=="function"&&e instanceof e)?true:false;
36
- }function br(n,t,r){var e=Nn.callback||$e,e=e===$e?at:e;return r?e(n,t,r):e}function xr(n){for(var t=n.name,r=Mu[t],e=r?r.length:0;e--;){var u=r[e],o=u.func;if(null==o||o==n)return u.name}return t}function Ar(n,t,e){var u=Nn.indexOf||Yr,u=u===Yr?r:u;return n?u(n,t,e):u}function jr(n){n=Ee(n);for(var t=n.length;t--;){var r=n[t][1];n[t][2]=r===r&&!ye(r)}return n}function Or(n,t){var r=null==n?m:n[t];return de(r)?r:m}function kr(n){var t=n.length,r=new n.constructor(t);return t&&"string"==typeof n[0]&&ou.call(n,"index")&&(r.index=n.index,
37
- r.input=n.input),r}function Ir(n){return n=n.constructor,typeof n=="function"&&n instanceof n||(n=Ge),new n}function Er(n,t,r){var e=n.constructor;switch(t){case G:return Dt(n);case B:case M:return new e(+n);case J:case X:case H:case Q:case nn:case tn:case rn:case en:case un:return e instanceof e&&(e=qu[t]),t=n.buffer,new e(r?Dt(t):t,n.byteOffset,n.length);case K:case Z:return new e(n);case Y:var u=new e(n.source,jn.exec(n));u.lastIndex=n.lastIndex}return u}function Rr(n,t,r){return null==n||Ur(t,n)||(t=Mr(t),
38
- n=1==t.length?n:wt(n,Tt(t,0,-1)),t=Zr(t)),t=null==n?n:n[t],null==t?m:t.apply(n,r)}function Cr(n){return null!=n&&Fr(no(n))}function Sr(n,t){return n=typeof n=="number"||In.test(n)?+n:-1,t=null==t?zu:t,-1<n&&0==n%1&&n<t}function Tr(n,t,r){if(!ye(r))return false;var e=typeof t;return("number"==e?Cr(r)&&Sr(t,r.length):"string"==e&&t in r)?(t=r[t],n===n?n===t:t!==t):false}function Ur(n,t){var r=typeof n;return"string"==r&&yn.test(n)||"number"==r?true:zo(n)?false:!gn.test(n)||null!=t&&n in Br(t)}function Wr(n){var t=xr(n);
39
- return t in Bn.prototype?(t=Nn[t],n===t?true:(t=Qu(t),!!t&&n===t[0])):false}function Fr(n){return typeof n=="number"&&-1<n&&0==n%1&&n<=zu}function $r(n,t){n=Br(n);for(var r=-1,e=t.length,u={};++r<e;){var o=t[r];o in n&&(u[o]=n[o])}return u}function Lr(n,t){var r={};return gt(n,function(n,e,u){t(n,e,u)&&(r[e]=n)}),r}function Nr(n){var t,r=Nn.support;if(!p(n)||au.call(n)!=V||Gn(n)||!(ou.call(n,"constructor")||(t=n.constructor,typeof t!="function"||t instanceof t))||!r.argsTag&&he(n))return false;var e;return r.ownLast?(gt(n,function(n,t,r){
40
- return e=ou.call(r,t),false}),false!==e):(gt(n,function(n,t){e=t}),e===m||ou.call(n,e))}function Pr(n){for(var t=Ie(n),r=t.length,e=r&&n.length,u=!!e&&Fr(e)&&(zo(n)||he(n)||be(n)),o=-1,i=[];++o<r;){var a=t[o];(u&&Sr(a,e)||ou.call(n,a))&&i.push(a)}return i}function zr(n){return null==n?[]:Cr(n)?Nn.support.unindexedChars&&be(n)?n.split(""):ye(n)?n:Ge(n):Re(n)}function Br(n){if(Nn.support.unindexedChars&&be(n)){for(var t=-1,r=n.length,e=Ge(n);++t<r;)e[t]=n.charAt(t);return e}return ye(n)?n:Ge(n)}function Mr(n){
41
- if(zo(n))return n;var t=[];return u(n).replace(dn,function(n,r,e,u){t.push(e?u.replace(xn,"$1"):r||n)}),t}function qr(n){return n instanceof Bn?n.clone():new zn(n.__wrapped__,n.__chain__,Kn(n.__actions__))}function Dr(n,t,r){return n&&n.length?((r?Tr(n,t,r):null==t)&&(t=1),Tt(n,0>t?0:t)):[]}function Kr(n,t,r){var e=n?n.length:0;return e?((r?Tr(n,t,r):null==t)&&(t=1),t=e-(+t||0),Tt(n,0,0>t?0:t)):[]}function Vr(n){return n?n[0]:m}function Yr(n,t,e){var u=n?n.length:0;if(!u)return-1;if(typeof e=="number")e=0>e?Ru(u+e,0):e;else if(e)return e=Bt(n,t),
42
- n=n[e],(t===t?t===n:n!==n)?e:-1;return r(n,t,e||0)}function Zr(n){var t=n?n.length:0;return t?n[t-1]:m}function Gr(n){return Dr(n,1)}function Jr(n,t,e,u){if(!n||!n.length)return[];null!=t&&typeof t!="boolean"&&(u=e,e=Tr(n,t,u)?null:t,t=false);var o=br();if((null!=e||o!==at)&&(e=o(e,u,3)),t&&Ar()==r){t=e;var i;e=-1,u=n.length;for(var o=-1,a=[];++e<u;){var l=n[e],f=t?t(l,e,n):l;e&&i===f||(i=f,a[++o]=l)}n=a}else n=Lt(n,e);return n}function Xr(n){if(!n||!n.length)return[];var t=-1,r=0;n=Xn(n,function(n){
43
- return Cr(n)?(r=Ru(n.length,r),true):void 0});for(var e=qe(r);++t<r;)e[t]=Hn(n,It(t));return e}function Hr(n,t,r){return n&&n.length?(n=Xr(n),null==t?n:(t=qt(t,r,4),Hn(n,function(n){return Qn(n,t,m,true)}))):[]}function Qr(n,t){var r=-1,e=n?n.length:0,u={};for(!e||t||zo(n[0])||(t=[]);++r<e;){var o=n[r];t?u[o]=t[r]:o&&(u[o[0]]=o[1])}return u}function ne(n){return n=Nn(n),n.__chain__=true,n}function te(n,t,r){return t.call(r,n)}function re(n,t,r){var e=zo(n)?Yn:st;return r&&Tr(n,t,r)&&(t=null),(typeof t!="function"||r!==m)&&(t=br(t,r,3)),
44
- e(n,t)}function ee(n,t,r){var e=zo(n)?Xn:ht;return t=br(t,r,3),e(n,t)}function ue(n,t,r,e){var u=n?no(n):0;return Fr(u)||(n=Re(n),u=n.length),u?(r=typeof r!="number"||e&&Tr(t,r,e)?0:0>r?Ru(u+r,0):r||0,typeof n=="string"||!zo(n)&&be(n)?r<u&&-1<n.indexOf(t,r):-1<Ar(n,t,r)):false}function oe(n,t,r){var e=zo(n)?Hn:At;return t=br(t,r,3),e(n,t)}function ie(n,t,r){if(r?Tr(n,t,r):null==t){n=zr(n);var e=n.length;return 0<e?n[Ct(0,e-1)]:m}r=-1,n=je(n);var e=n.length,u=e-1;for(t=Cu(0>t?0:+t||0,e);++r<t;){var e=Ct(r,u),o=n[e];
45
- n[e]=n[r],n[r]=o}return n.length=t,n}function ae(n,t,r){var e=zo(n)?nt:Ut;return r&&Tr(n,t,r)&&(t=null),(typeof t!="function"||r!==m)&&(t=br(t,r,3)),e(n,t)}function le(n,t){var r;if(typeof t!="function"){if(typeof n!="function")throw new He(L);var e=n;n=t,t=e}return function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=null),r}}function fe(n,t,r){function e(){var r=t-(Io()-f);0>=r||r>t?(a&&hu(a),r=p,a=s=p=m,r&&(h=Io(),l=n.apply(c,i),s||a||(i=c=null))):s=wu(e,r)}function u(){s&&hu(s),a=s=p=m,
46
- (v||_!==t)&&(h=Io(),l=n.apply(c,i),s||a||(i=c=null))}function o(){if(i=arguments,f=Io(),c=this,p=v&&(s||!g),false===_)var r=g&&!s;else{a||g||(h=f);var o=_-(f-h),y=0>=o||o>_;y?(a&&(a=hu(a)),h=f,l=n.apply(c,i)):a||(a=wu(u,o))}return y&&s?s=hu(s):s||t===_||(s=wu(e,t)),r&&(y=true,l=n.apply(c,i)),!y||s||a||(i=c=null),l}var i,a,l,f,c,s,p,h=0,_=false,v=true;if(typeof n!="function")throw new He(L);if(t=0>t?0:+t||0,true===r)var g=true,v=false;else ye(r)&&(g=r.leading,_="maxWait"in r&&Ru(+r.maxWait||0,t),v="trailing"in r?r.trailing:v);
47
- return o.cancel=function(){s&&hu(s),a&&hu(a),a=s=p=m},o}function ce(n,t){function r(){var e=arguments,u=t?t.apply(this,e):e[0],o=r.cache;return o.has(u)?o.get(u):(e=n.apply(this,e),r.cache=o.set(u,e),e)}if(typeof n!="function"||t&&typeof t!="function")throw new He(L);return r.cache=new ce.Cache,r}function se(n,t){if(typeof n!="function")throw new He(L);return t=Ru(t===m?n.length-1:+t||0,0),function(){for(var r=arguments,e=-1,u=Ru(r.length-t,0),o=qe(u);++e<u;)o[e]=r[t+e];switch(t){case 0:return n.call(this,o);
48
- case 1:return n.call(this,r[0],o);case 2:return n.call(this,r[0],r[1],o)}for(u=qe(t+1),e=-1;++e<t;)u[e]=r[e];return u[t]=o,n.apply(this,u)}}function pe(n,t){return n>t}function he(n){return p(n)&&Cr(n)&&au.call(n)==P}function _e(n){return!!n&&1===n.nodeType&&p(n)&&(Nn.support.nodeTag?-1<au.call(n).indexOf("Element"):Gn(n))}function ve(n,t,r,e){return e=(r=typeof r=="function"?qt(r,e,3):m)?r(n,t):m,e===m?bt(n,t,r):!!e}function ge(n){return p(n)&&typeof n.message=="string"&&au.call(n)==q}function ye(n){
49
- var t=typeof n;return!!n&&("object"==t||"function"==t)}function de(n){return null==n?false:au.call(n)==D?fu.test(uu.call(n)):p(n)&&(Gn(n)?fu:kn).test(n)}function me(n){return typeof n=="number"||p(n)&&au.call(n)==K}function we(n){return ye(n)&&au.call(n)==Y}function be(n){return typeof n=="string"||p(n)&&au.call(n)==Z}function xe(n){return p(n)&&Fr(n.length)&&!!Fn[au.call(n)]}function Ae(n,t){return n<t}function je(n){var t=n?no(n):0;return Fr(t)?t?Nn.support.unindexedChars&&be(n)?n.split(""):Kn(n):[]:Re(n);
50
- }function Oe(n){return it(n,Ie(n))}function ke(n){return mt(n,Ie(n))}function Ie(n){if(null==n)return[];ye(n)||(n=Ge(n));for(var t=n.length,r=Nn.support,t=t&&Fr(t)&&(zo(n)||he(n)||be(n))&&t||0,e=n.constructor,u=-1,e=Mo(e)&&e.prototype||tu,o=e===n,i=qe(t),a=0<t,l=r.enumErrorProps&&(n===nu||n instanceof Ke),f=r.enumPrototypes&&Mo(n);++u<t;)i[u]=u+"";for(var c in n)f&&"prototype"==c||l&&("message"==c||"name"==c)||a&&Sr(c,t)||"constructor"==c&&(o||!ou.call(n,c))||i.push(c);if(r.nonEnumShadows&&n!==tu)for(t=n===ru?Z:n===nu?q:au.call(n),
51
- r=Du[t]||Du[V],t==V&&(e=tu),t=Wn.length;t--;)c=Wn[t],u=r[c],o&&u||(u?!ou.call(n,c):n[c]===e[c])||i.push(c);return i}function Ee(n){n=Br(n);for(var t=-1,r=Ho(n),e=r.length,u=qe(e);++t<e;){var o=r[t];u[t]=[o,n[o]]}return u}function Re(n){return Nt(n,Ho(n))}function Ce(n){return(n=u(n))&&n.replace(En,l).replace(bn,"")}function Se(n){return(n=u(n))&&wn.test(n)?n.replace(mn,"\\$&"):n}function Te(n,t,r){return r&&Tr(n,t,r)&&(t=0),Uu(n,t)}function Ue(n,t){var r="";if(n=u(n),t=+t,1>t||!n||!Iu(t))return r;
52
- do t%2&&(r+=n),t=_u(t/2),n+=n;while(t);return r}function We(n,t,r){var e=n;return(n=u(n))?(r?Tr(e,t,r):null==t)?n.slice(v(n),g(n)+1):(t+="",n.slice(o(n,t),i(n,t)+1)):n}function Fe(n,t,r){return r&&Tr(n,t,r)&&(t=null),n=u(n),n.match(t||Sn)||[]}function $e(n,t,r){return r&&Tr(n,t,r)&&(t=null),p(n)?Pe(n):at(n,t)}function Le(n){return function(){return n}}function Ne(n){return n}function Pe(n){return jt(lt(n,true))}function ze(n,t,r){if(null==r){var e=ye(t),u=e?Ho(t):null;((u=u&&u.length?mt(t,u):null)?u.length:e)||(u=false,
53
- r=t,t=n,n=this)}u||(u=mt(t,Ho(t)));var o=true,e=-1,i=Mo(n),a=u.length;false===r?o=false:ye(r)&&"chain"in r&&(o=r.chain);for(;++e<a;){r=u[e];var l=t[r];n[r]=l,i&&(n.prototype[r]=function(t){return function(){var r=this.__chain__;if(o||r){var e=n(this.__wrapped__);return(e.__actions__=Kn(this.__actions__)).push({func:t,args:arguments,thisArg:n}),e.__chain__=r,e}return r=[this.value()],yu.apply(r,arguments),t.apply(n,r)}}(l))}return n}function Be(){}function Me(n){return Ur(n)?It(n):Et(n)}h=h?Jn.defaults(Zn.Object(),h,Jn.pick(Zn,Un)):Zn;
54
- var qe=h.Array,De=h.Date,Ke=h.Error,Ve=h.Function,Ye=h.Math,Ze=h.Number,Ge=h.Object,Je=h.RegExp,Xe=h.String,He=h.TypeError,Qe=qe.prototype,nu=Ke.prototype,tu=Ge.prototype,ru=Xe.prototype,eu=(eu=h.window)?eu.document:null,uu=Ve.prototype.toString,ou=tu.hasOwnProperty,iu=0,au=tu.toString,lu=h._,fu=Je("^"+Se(uu.call(ou)).replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),cu=Or(h,"ArrayBuffer"),su=Or(cu&&new cu(0),"slice"),pu=Ye.ceil,hu=h.clearTimeout,_u=Ye.floor,vu=Or(Ge,"getPrototypeOf"),gu=h.parseFloat,yu=Qe.push,du=tu.propertyIsEnumerable,mu=Or(h,"Set"),wu=h.setTimeout,bu=Qe.splice,xu=Or(h,"Uint8Array"),Au=Or(h,"WeakMap"),ju=function(){
55
- try{var n=Or(h,"Float64Array"),t=new n(new cu(10),0,1)&&n}catch(r){}return t||null}(),Ou=Or(Ge,"create"),ku=Or(qe,"isArray"),Iu=h.isFinite,Eu=Or(Ge,"keys"),Ru=Ye.max,Cu=Ye.min,Su=Or(De,"now"),Tu=Or(Ze,"isFinite"),Uu=h.parseInt,Wu=Ye.random,Fu=Ze.NEGATIVE_INFINITY,$u=Ze.POSITIVE_INFINITY,Lu=4294967294,Nu=2147483647,Pu=ju?ju.BYTES_PER_ELEMENT:0,zu=9007199254740991,Bu=Au&&new Au,Mu={},qu={};qu[J]=h.Float32Array,qu[X]=h.Float64Array,qu[H]=h.Int8Array,qu[Q]=h.Int16Array,qu[nn]=h.Int32Array,qu[tn]=h.Uint8Array,
56
- qu[rn]=h.Uint8ClampedArray,qu[en]=h.Uint16Array,qu[un]=h.Uint32Array;var Du={};Du[z]=Du[M]=Du[K]={constructor:true,toLocaleString:true,toString:true,valueOf:true},Du[B]=Du[Z]={constructor:true,toString:true,valueOf:true},Du[q]=Du[D]=Du[Y]={constructor:true,toString:true},Du[V]={constructor:true},Vn(Wn,function(n){for(var t in Du)if(ou.call(Du,t)){var r=Du[t];r[n]=ou.call(r,n)}});var Ku=Nn.support={};!function(n){function t(){this.x=n}var r={0:n,length:n},e=[];t.prototype={valueOf:n,y:n};for(var u in new t)e.push(u);Ku.argsTag=au.call(arguments)==P,
57
- Ku.enumErrorProps=du.call(nu,"message")||du.call(nu,"name"),Ku.enumPrototypes=du.call(t,"prototype"),Ku.nodeTag=au.call(eu)!=V,Ku.nonEnumShadows=!/valueOf/.test(e),Ku.ownLast="x"!=e[0],Ku.spliceObjects=(bu.call(r,0,1),!r[0]),Ku.unindexedChars="xx"!="x"[0]+Ge("x")[0];try{Ku.dom=11===eu.createDocumentFragment().nodeType}catch(o){Ku.dom=false}}(1,0),Nn.templateSettings={escape:hn,evaluate:_n,interpolate:vn,variable:"",imports:{_:Nn}};var Vu=function(){function n(){}return function(t){if(ye(t)){n.prototype=t;
58
- var r=new n;n.prototype=null}return r||{}}}(),Yu=Gt(yt),Zu=Gt(dt,true),Gu=Jt(),Ju=Jt(true),Xu=Bu?function(n,t){return Bu.set(n,t),n}:Ne;su||(Dt=cu&&xu?function(n){var t=n.byteLength,r=ju?_u(t/Pu):0,e=r*Pu,u=new cu(t);if(r){var o=new ju(u,0,r);o.set(new ju(n,0,r))}return t!=e&&(o=new xu(u,e),o.set(new xu(n,e))),u}:Le(null));var Hu=Ou&&mu?function(n){return new qn(n)}:Le(null),Qu=Bu?function(n){return Bu.get(n)}:Be,no=It("length"),to=function(){var n=0,t=0;return function(r,e){var u=Io(),o=U-(u-t);if(t=u,
59
- 0<o){if(++n>=T)return r}else n=0;return Xu(r,e)}}(),ro=se(function(n,t){return Cr(n)?ct(n,vt(t,false,true)):[]}),eo=er(),uo=er(true),oo=se(function(n){for(var t=n.length,e=t,u=qe(c),o=Ar(),i=o==r,a=[];e--;){var l=n[e]=Cr(l=n[e])?l:[];u[e]=i&&120<=l.length?Hu(e&&l):null}var i=n[0],f=-1,c=i?i.length:0,s=u[0];n:for(;++f<c;)if(l=i[f],0>(s?Dn(s,l):o(a,l,0))){for(e=t;--e;){var p=u[e];if(0>(p?Dn(p,l):o(n[e],l,0)))continue n}s&&s.push(l),a.push(l)}return a}),io=se(function(t,r){r=vt(r);var e=ot(t,r);return Rt(t,r.sort(n)),
60
- e}),ao=gr(),lo=gr(true),fo=se(function(n){return Lt(vt(n,false,true))}),co=se(function(n,t){return Cr(n)?ct(n,t):[]}),so=se(Xr),po=se(function(n){var t=n.length,r=2<t?n[t-2]:m,e=1<t?n[t-1]:m;return 2<t&&typeof r=="function"?t-=2:(r=1<t&&typeof e=="function"?(--t,e):m,e=m),n.length=t,Hr(n,r,e)}),ho=se(function(n,t){return Cr(n)&&(n=zr(n)),ot(n,vt(t))}),_o=Yt(function(n,t,r){ou.call(n,r)?++n[r]:n[r]=1}),vo=rr(Yu),go=rr(Zu,true),yo=ir(Vn,Yu),mo=ir(function(n,t){for(var r=n.length;r--&&false!==t(n[r],r,n););return n;
61
- },Zu),wo=Yt(function(n,t,r){ou.call(n,r)?n[r].push(t):n[r]=[t]}),bo=Yt(function(n,t,r){n[r]=t}),xo=se(function(n,t,r){var e=-1,u=typeof t=="function",o=Ur(t),i=Cr(n)?qe(n.length):[];return Yu(n,function(n){var a=u?t:o&&null!=n?n[t]:null;i[++e]=a?a.apply(n,r):Rr(n,t,r)}),i}),Ao=Yt(function(n,t,r){n[r?0:1].push(t)},function(){return[[],[]]}),jo=pr(Qn,Yu),Oo=pr(function(n,t,r,e){var u=n.length;for(e&&u&&(r=n[--u]);u--;)r=t(r,n[u],u,n);return r},Zu),ko=se(function(n,t){if(null==n)return[];var r=t[2];return r&&Tr(t[0],t[1],r)&&(t.length=1),
62
- Ft(n,vt(t),[])}),Io=Su||function(){return(new De).getTime()},Eo=se(function(n,t,r){var e=b;if(r.length)var u=_(r,Eo.placeholder),e=e|k;return yr(n,e,t,r,u)}),Ro=se(function(n,t){t=t.length?vt(t):ke(n);for(var r=-1,e=t.length;++r<e;){var u=t[r];n[u]=yr(n[u],b,n)}return n}),Co=se(function(n,t,r){var e=b|x;if(r.length)var u=_(r,Co.placeholder),e=e|k;return yr(t,e,n,r,u)}),So=nr(j),To=nr(O),Uo=se(function(n,t){return ft(n,1,t)}),Wo=se(function(n,t,r){return ft(n,t,r)}),Fo=or(),$o=or(true),Lo=sr(k),No=sr(I),Po=se(function(n,t){
63
- return yr(n,R,null,null,null,vt(t))});Ku.argsTag||(he=function(n){return p(n)&&Cr(n)&&ou.call(n,"callee")&&!du.call(n,"callee")});var zo=ku||function(n){return p(n)&&Fr(n.length)&&au.call(n)==z};Ku.dom||(_e=function(n){return!!n&&1===n.nodeType&&p(n)&&!qo(n)});var Bo=Tu||function(n){return typeof n=="number"&&Iu(n)},Mo=e(/x/)||xu&&!e(xu)?function(n){return au.call(n)==D}:e,qo=vu?function(n){if(!n||au.call(n)!=V||!Nn.support.argsTag&&he(n))return false;var t=Or(n,"valueOf"),r=t&&(r=vu(t))&&vu(r);return r?n==r||vu(n)==r:Nr(n);
64
- }:Nr,Do=Zt(function(n,t,r){return r?et(n,t,r):ut(n,t)}),Ko=se(function(n){var t=n[0];return null==t?t:(n.push(tt),Do.apply(m,n))}),Vo=ur(yt),Yo=ur(dt),Zo=ar(Gu),Go=ar(Ju),Jo=lr(yt),Xo=lr(dt),Ho=Eu?function(n){var t=null==n?null:n.constructor;return typeof t=="function"&&t.prototype===n||(typeof n=="function"?Nn.support.enumPrototypes:Cr(n))?Pr(n):ye(n)?Eu(n):[]}:Pr,Qo=fr(true),ni=fr(),ti=Zt(kt),ri=se(function(n,t){if(null==n)return{};if("function"!=typeof t[0])return t=Hn(vt(t),Xe),$r(n,ct(Ie(n),t));
65
- var r=qt(t[0],t[1],3);return Lr(n,function(n,t,e){return!r(n,t,e)})}),ei=se(function(n,t){return null==n?{}:"function"==typeof t[0]?Lr(n,qt(t[0],t[1],3)):$r(n,vt(t))}),ui=Ht(function(n,t,r){return t=t.toLowerCase(),n+(r?t.charAt(0).toUpperCase()+t.slice(1):t)}),oi=Ht(function(n,t,r){return n+(r?"-":"")+t.toLowerCase()}),ii=cr(),ai=cr(true);8!=Uu(Tn+"08")&&(Te=function(n,t,r){return(r?Tr(n,t,r):null==t)?t=0:t&&(t=+t),n=We(n),Uu(n,t||(On.test(n)?16:10))});var li=Ht(function(n,t,r){return n+(r?"_":"")+t.toLowerCase();
66
- }),fi=Ht(function(n,t,r){return n+(r?" ":"")+(t.charAt(0).toUpperCase()+t.slice(1))}),ci=se(function(n,t){try{return n.apply(m,t)}catch(r){return ge(r)?r:new Ke(r)}}),si=se(function(n,t){return function(r){return Rr(r,n,t)}}),pi=se(function(n,t){return function(r){return Rr(n,r,t)}}),hi=tr(pe,Fu),_i=tr(Ae,$u);return Nn.prototype=Pn.prototype,zn.prototype=Vu(Pn.prototype),zn.prototype.constructor=zn,Bn.prototype=Vu(Pn.prototype),Bn.prototype.constructor=Bn,Mn.prototype["delete"]=function(n){return this.has(n)&&delete this.__data__[n];
67
- },Mn.prototype.get=function(n){return"__proto__"==n?m:this.__data__[n]},Mn.prototype.has=function(n){return"__proto__"!=n&&ou.call(this.__data__,n)},Mn.prototype.set=function(n,t){return"__proto__"!=n&&(this.__data__[n]=t),this},qn.prototype.push=function(n){var t=this.data;typeof n=="string"||ye(n)?t.set.add(n):t.hash[n]=true},ce.Cache=Mn,Nn.after=function(n,t){if(typeof t!="function"){if(typeof n!="function")throw new He(L);var r=n;n=t,t=r}return n=Iu(n=+n)?n:0,function(){return 1>--n?t.apply(this,arguments):void 0;
68
- }},Nn.ary=function(n,t,r){return r&&Tr(n,t,r)&&(t=null),t=n&&null==t?n.length:Ru(+t||0,0),yr(n,E,null,null,null,null,t)},Nn.assign=Do,Nn.at=ho,Nn.before=le,Nn.bind=Eo,Nn.bindAll=Ro,Nn.bindKey=Co,Nn.callback=$e,Nn.chain=ne,Nn.chunk=function(n,t,r){t=(r?Tr(n,t,r):null==t)?1:Ru(+t||1,1),r=0;for(var e=n?n.length:0,u=-1,o=qe(pu(e/t));r<e;)o[++u]=Tt(n,r,r+=t);return o},Nn.compact=function(n){for(var t=-1,r=n?n.length:0,e=-1,u=[];++t<r;){var o=n[t];o&&(u[++e]=o)}return u},Nn.constant=Le,Nn.countBy=_o,Nn.create=function(n,t,r){
69
- var e=Vu(n);return r&&Tr(n,t,r)&&(t=null),t?ut(e,t):e},Nn.curry=So,Nn.curryRight=To,Nn.debounce=fe,Nn.defaults=Ko,Nn.defer=Uo,Nn.delay=Wo,Nn.difference=ro,Nn.drop=Dr,Nn.dropRight=Kr,Nn.dropRightWhile=function(n,t,r){return n&&n.length?Pt(n,br(t,r,3),true,true):[]},Nn.dropWhile=function(n,t,r){return n&&n.length?Pt(n,br(t,r,3),true):[]},Nn.fill=function(n,t,r,e){var u=n?n.length:0;if(!u)return[];for(r&&typeof r!="number"&&Tr(n,t,r)&&(r=0,e=u),u=n.length,r=null==r?0:+r||0,0>r&&(r=-r>u?0:u+r),e=e===m||e>u?u:+e||0,
70
- 0>e&&(e+=u),u=r>e?0:e>>>0,r>>>=0;r<u;)n[r++]=t;return n},Nn.filter=ee,Nn.flatten=function(n,t,r){var e=n?n.length:0;return r&&Tr(n,t,r)&&(t=false),e?vt(n,t):[]},Nn.flattenDeep=function(n){return n&&n.length?vt(n,true):[]},Nn.flow=Fo,Nn.flowRight=$o,Nn.forEach=yo,Nn.forEachRight=mo,Nn.forIn=Zo,Nn.forInRight=Go,Nn.forOwn=Jo,Nn.forOwnRight=Xo,Nn.functions=ke,Nn.groupBy=wo,Nn.indexBy=bo,Nn.initial=function(n){return Kr(n,1)},Nn.intersection=oo,Nn.invert=function(n,t,r){r&&Tr(n,t,r)&&(t=null),r=-1;for(var e=Ho(n),u=e.length,o={};++r<u;){
71
- var i=e[r],a=n[i];t?ou.call(o,a)?o[a].push(i):o[a]=[i]:o[a]=i}return o},Nn.invoke=xo,Nn.keys=Ho,Nn.keysIn=Ie,Nn.map=oe,Nn.mapKeys=Qo,Nn.mapValues=ni,Nn.matches=Pe,Nn.matchesProperty=function(n,t){return Ot(n,lt(t,true))},Nn.memoize=ce,Nn.merge=ti,Nn.method=si,Nn.methodOf=pi,Nn.mixin=ze,Nn.negate=function(n){if(typeof n!="function")throw new He(L);return function(){return!n.apply(this,arguments)}},Nn.omit=ri,Nn.once=function(n){return le(2,n)},Nn.pairs=Ee,Nn.partial=Lo,Nn.partialRight=No,Nn.partition=Ao,
72
- Nn.pick=ei,Nn.pluck=function(n,t){return oe(n,Me(t))},Nn.property=Me,Nn.propertyOf=function(n){return function(t){return wt(n,Mr(t),t+"")}},Nn.pull=function(){var n=arguments,t=n[0];if(!t||!t.length)return t;for(var r=0,e=Ar(),u=n.length;++r<u;)for(var o=0,i=n[r];-1<(o=e(t,i,o));)bu.call(t,o,1);return t},Nn.pullAt=io,Nn.range=function(n,t,r){r&&Tr(n,t,r)&&(t=r=null),n=+n||0,r=null==r?1:+r||0,null==t?(t=n,n=0):t=+t||0;var e=-1;t=Ru(pu((t-n)/(r||1)),0);for(var u=qe(t);++e<t;)u[e]=n,n+=r;return u},Nn.rearg=Po,
73
- Nn.reject=function(n,t,r){var e=zo(n)?Xn:ht;return t=br(t,r,3),e(n,function(n,r,e){return!t(n,r,e)})},Nn.remove=function(n,t,r){var e=[];if(!n||!n.length)return e;var u=-1,o=[],i=n.length;for(t=br(t,r,3);++u<i;)r=n[u],t(r,u,n)&&(e.push(r),o.push(u));return Rt(n,o),e},Nn.rest=Gr,Nn.restParam=se,Nn.set=function(n,t,r){if(null==n)return n;var e=t+"";t=null!=n[e]||Ur(t,n)?[e]:Mr(t);for(var e=-1,u=t.length,o=u-1,i=n;null!=i&&++e<u;){var a=t[e];ye(i)&&(e==o?i[a]=r:null==i[a]&&(i[a]=Sr(t[e+1])?[]:{})),i=i[a];
74
- }return n},Nn.shuffle=function(n){return ie(n,$u)},Nn.slice=function(n,t,r){var e=n?n.length:0;return e?(r&&typeof r!="number"&&Tr(n,t,r)&&(t=0,r=e),Tt(n,t,r)):[]},Nn.sortBy=function(n,t,r){if(null==n)return[];r&&Tr(n,t,r)&&(t=null);var e=-1;return t=br(t,r,3),n=At(n,function(n,r,u){return{a:t(n,r,u),b:++e,c:n}}),Wt(n,a)},Nn.sortByAll=ko,Nn.sortByOrder=function(n,t,r,e){return null==n?[]:(e&&Tr(t,r,e)&&(r=null),zo(t)||(t=null==t?[]:[t]),zo(r)||(r=null==r?[]:[r]),Ft(n,t,r))},Nn.spread=function(n){
75
- if(typeof n!="function")throw new He(L);return function(t){return n.apply(this,t)}},Nn.take=function(n,t,r){return n&&n.length?((r?Tr(n,t,r):null==t)&&(t=1),Tt(n,0,0>t?0:t)):[]},Nn.takeRight=function(n,t,r){var e=n?n.length:0;return e?((r?Tr(n,t,r):null==t)&&(t=1),t=e-(+t||0),Tt(n,0>t?0:t)):[]},Nn.takeRightWhile=function(n,t,r){return n&&n.length?Pt(n,br(t,r,3),false,true):[]},Nn.takeWhile=function(n,t,r){return n&&n.length?Pt(n,br(t,r,3)):[]},Nn.tap=function(n,t,r){return t.call(r,n),n},Nn.throttle=function(n,t,r){
76
- var e=true,u=true;if(typeof n!="function")throw new He(L);return false===r?e=false:ye(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),Ln.leading=e,Ln.maxWait=+t,Ln.trailing=u,fe(n,t,Ln)},Nn.thru=te,Nn.times=function(n,t,r){if(n=_u(n),1>n||!Iu(n))return[];var e=-1,u=qe(Cu(n,4294967295));for(t=qt(t,r,1);++e<n;)4294967295>e?u[e]=t(e):t(e);return u},Nn.toArray=je,Nn.toPlainObject=Oe,Nn.transform=function(n,t,r,e){var u=zo(n)||xe(n);return t=br(t,e,4),null==r&&(u||ye(n)?(e=n.constructor,r=u?zo(n)?new e:[]:Vu(Mo(e)?e.prototype:null)):r={}),
77
- (u?Vn:yt)(n,function(n,e,u){return t(r,n,e,u)}),r},Nn.union=fo,Nn.uniq=Jr,Nn.unzip=Xr,Nn.unzipWith=Hr,Nn.values=Re,Nn.valuesIn=function(n){return Nt(n,Ie(n))},Nn.where=function(n,t){return ee(n,jt(t))},Nn.without=co,Nn.wrap=function(n,t){return t=null==t?Ne:t,yr(t,k,null,[n],[])},Nn.xor=function(){for(var n=-1,t=arguments.length;++n<t;){var r=arguments[n];if(Cr(r))var e=e?ct(e,r).concat(ct(r,e)):r}return e?Lt(e):[]},Nn.zip=so,Nn.zipObject=Qr,Nn.zipWith=po,Nn.backflow=$o,Nn.collect=oe,Nn.compose=$o,
78
- Nn.each=yo,Nn.eachRight=mo,Nn.extend=Do,Nn.iteratee=$e,Nn.methods=ke,Nn.object=Qr,Nn.select=ee,Nn.tail=Gr,Nn.unique=Jr,ze(Nn,Nn),Nn.add=function(n,t){return(+n||0)+(+t||0)},Nn.attempt=ci,Nn.camelCase=ui,Nn.capitalize=function(n){return(n=u(n))&&n.charAt(0).toUpperCase()+n.slice(1)},Nn.clone=function(n,t,r,e){return t&&typeof t!="boolean"&&Tr(n,t,r)?t=false:typeof t=="function"&&(e=r,r=t,t=false),typeof r=="function"?lt(n,t,qt(r,e,1)):lt(n,t)},Nn.cloneDeep=function(n,t,r){return typeof t=="function"?lt(n,true,qt(t,r,1)):lt(n,true);
79
- },Nn.deburr=Ce,Nn.endsWith=function(n,t,r){n=u(n),t+="";var e=n.length;return r=r===m?e:Cu(0>r?0:+r||0,e),r-=t.length,0<=r&&n.indexOf(t,r)==r},Nn.escape=function(n){return(n=u(n))&&pn.test(n)?n.replace(cn,f):n},Nn.escapeRegExp=Se,Nn.every=re,Nn.find=vo,Nn.findIndex=eo,Nn.findKey=Vo,Nn.findLast=go,Nn.findLastIndex=uo,Nn.findLastKey=Yo,Nn.findWhere=function(n,t){return vo(n,jt(t))},Nn.first=Vr,Nn.get=function(n,t,r){return n=null==n?m:wt(n,Mr(t),t+""),n===m?r:n},Nn.gt=pe,Nn.gte=function(n,t){return n>=t;
80
- },Nn.has=function(n,t){if(null==n)return false;var r=ou.call(n,t);if(!r&&!Ur(t)){if(t=Mr(t),n=1==t.length?n:wt(n,Tt(t,0,-1)),null==n)return false;t=Zr(t),r=ou.call(n,t)}return r||Fr(n.length)&&Sr(t,n.length)&&(zo(n)||he(n)||be(n))},Nn.identity=Ne,Nn.includes=ue,Nn.indexOf=Yr,Nn.inRange=function(n,t,r){return t=+t||0,"undefined"===typeof r?(r=t,t=0):r=+r||0,n>=Cu(t,r)&&n<Ru(t,r)},Nn.isArguments=he,Nn.isArray=zo,Nn.isBoolean=function(n){return true===n||false===n||p(n)&&au.call(n)==B},Nn.isDate=function(n){return p(n)&&au.call(n)==M;
81
- },Nn.isElement=_e,Nn.isEmpty=function(n){return null==n?true:Cr(n)&&(zo(n)||be(n)||he(n)||p(n)&&Mo(n.splice))?!n.length:!Ho(n).length},Nn.isEqual=ve,Nn.isError=ge,Nn.isFinite=Bo,Nn.isFunction=Mo,Nn.isMatch=function(n,t,r,e){return r=typeof r=="function"?qt(r,e,3):m,xt(n,jr(t),r)},Nn.isNaN=function(n){return me(n)&&n!=+n},Nn.isNative=de,Nn.isNull=function(n){return null===n},Nn.isNumber=me,Nn.isObject=ye,Nn.isPlainObject=qo,Nn.isRegExp=we,Nn.isString=be,Nn.isTypedArray=xe,Nn.isUndefined=function(n){
82
- return n===m},Nn.kebabCase=oi,Nn.last=Zr,Nn.lastIndexOf=function(n,t,r){var e=n?n.length:0;if(!e)return-1;var u=e;if(typeof r=="number")u=(0>r?Ru(e+r,0):Cu(r||0,e-1))+1;else if(r)return u=Bt(n,t,true)-1,n=n[u],(t===t?t===n:n!==n)?u:-1;if(t!==t)return s(n,u,true);for(;u--;)if(n[u]===t)return u;return-1},Nn.lt=Ae,Nn.lte=function(n,t){return n<=t},Nn.max=hi,Nn.min=_i,Nn.noConflict=function(){return h._=lu,this},Nn.noop=Be,Nn.now=Io,Nn.pad=function(n,t,r){n=u(n),t=+t;var e=n.length;return e<t&&Iu(t)?(e=(t-e)/2,
83
- t=_u(e),e=pu(e),r=_r("",e,r),r.slice(0,t)+n+r):n},Nn.padLeft=ii,Nn.padRight=ai,Nn.parseInt=Te,Nn.random=function(n,t,r){r&&Tr(n,t,r)&&(t=r=null);var e=null==n,u=null==t;return null==r&&(u&&typeof n=="boolean"?(r=n,n=1):typeof t=="boolean"&&(r=t,u=true)),e&&u&&(t=1,u=false),n=+n||0,u?(t=n,n=0):t=+t||0,r||n%1||t%1?(r=Wu(),Cu(n+r*(t-n+gu("1e-"+((r+"").length-1))),t)):Ct(n,t)},Nn.reduce=jo,Nn.reduceRight=Oo,Nn.repeat=Ue,Nn.result=function(n,t,r){var e=null==n?m:Br(n)[t];return e===m&&(null==n||Ur(t,n)||(t=Mr(t),
84
- n=1==t.length?n:wt(n,Tt(t,0,-1)),e=null==n?m:Br(n)[Zr(t)]),e=e===m?r:e),Mo(e)?e.call(n):e},Nn.runInContext=d,Nn.size=function(n){var t=n?no(n):0;return Fr(t)?t:Ho(n).length},Nn.snakeCase=li,Nn.some=ae,Nn.sortedIndex=ao,Nn.sortedLastIndex=lo,Nn.startCase=fi,Nn.startsWith=function(n,t,r){return n=u(n),r=null==r?0:Cu(0>r?0:+r||0,n.length),n.lastIndexOf(t,r)==r},Nn.sum=function(n,t,r){r&&Tr(n,t,r)&&(t=null);var e=br(),u=null==t;if(u&&e===at||(u=false,t=e(t,r,3)),u){for(n=zo(n)?n:zr(n),t=n.length,r=0;t--;)r+=+n[t]||0;
85
- n=r}else n=$t(n,t);return n},Nn.template=function(n,t,r){var e=Nn.templateSettings;r&&Tr(n,t,r)&&(t=r=null),n=u(n),t=et(ut({},r||t),e,rt),r=et(ut({},t.imports),e.imports,rt);var o,i,a=Ho(r),l=Nt(r,a),f=0;r=t.interpolate||Rn;var s="__p+='";r=Je((t.escape||Rn).source+"|"+r.source+"|"+(r===vn?An:Rn).source+"|"+(t.evaluate||Rn).source+"|$","g");var p="sourceURL"in t?"//# sourceURL="+t.sourceURL+"\n":"";if(n.replace(r,function(t,r,e,u,a,l){return e||(e=u),s+=n.slice(f,l).replace(Cn,c),r&&(o=true,s+="'+__e("+r+")+'"),
86
- a&&(i=true,s+="';"+a+";\n__p+='"),e&&(s+="'+((__t=("+e+"))==null?'':__t)+'"),f=l+t.length,t}),s+="';",(t=t.variable)||(s="with(obj){"+s+"}"),s=(i?s.replace(on,""):s).replace(an,"$1").replace(ln,"$1;"),s="function("+(t||"obj")+"){"+(t?"":"obj||(obj={});")+"var __t,__p=''"+(o?",__e=_.escape":"")+(i?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+s+"return __p}",t=ci(function(){return Ve(a,p+"return "+s).apply(m,l)}),t.source=s,ge(t))throw t;return t},Nn.trim=We,Nn.trimLeft=function(n,t,r){
87
- var e=n;return(n=u(n))?n.slice((r?Tr(e,t,r):null==t)?v(n):o(n,t+"")):n},Nn.trimRight=function(n,t,r){var e=n;return(n=u(n))?(r?Tr(e,t,r):null==t)?n.slice(0,g(n)+1):n.slice(0,i(n,t+"")+1):n},Nn.trunc=function(n,t,r){r&&Tr(n,t,r)&&(t=null);var e=C;if(r=S,null!=t)if(ye(t)){var o="separator"in t?t.separator:o,e="length"in t?+t.length||0:e;r="omission"in t?u(t.omission):r}else e=+t||0;if(n=u(n),e>=n.length)return n;if(e-=r.length,1>e)return r;if(t=n.slice(0,e),null==o)return t+r;if(we(o)){if(n.slice(e).search(o)){
88
- var i,a=n.slice(0,e);for(o.global||(o=Je(o.source,(jn.exec(o)||"")+"g")),o.lastIndex=0;n=o.exec(a);)i=n.index;t=t.slice(0,null==i?e:i)}}else n.indexOf(o,e)!=e&&(o=t.lastIndexOf(o),-1<o&&(t=t.slice(0,o)));return t+r},Nn.unescape=function(n){return(n=u(n))&&sn.test(n)?n.replace(fn,y):n},Nn.uniqueId=function(n){var t=++iu;return u(n)+t},Nn.words=Fe,Nn.all=re,Nn.any=ae,Nn.contains=ue,Nn.eq=ve,Nn.detect=vo,Nn.foldl=jo,Nn.foldr=Oo,Nn.head=Vr,Nn.include=ue,Nn.inject=jo,ze(Nn,function(){var n={};return yt(Nn,function(t,r){
89
- Nn.prototype[r]||(n[r]=t)}),n}(),false),Nn.sample=ie,Nn.prototype.sample=function(n){return this.__chain__||null!=n?this.thru(function(t){return ie(t,n)}):ie(this.value())},Nn.VERSION=w,Vn("bind bindKey curry curryRight partial partialRight".split(" "),function(n){Nn[n].placeholder=Nn}),Vn(["dropWhile","filter","map","takeWhile"],function(n,t){var r=t!=$,e=t==W;Bn.prototype[n]=function(n,u){var o=this.__filtered__,i=o&&e?new Bn(this):this.clone();return(i.__iteratees__||(i.__iteratees__=[])).push({done:false,
90
- count:0,index:0,iteratee:br(n,u,1),limit:-1,type:t}),i.__filtered__=o||r,i}}),Vn(["drop","take"],function(n,t){var r=n+"While";Bn.prototype[n]=function(r){var e=this.__filtered__,u=e&&!t?this.dropWhile():this.clone();return r=null==r?1:Ru(_u(r)||0,0),e?t?u.__takeCount__=Cu(u.__takeCount__,r):Zr(u.__iteratees__).limit=r:(u.__views__||(u.__views__=[])).push({size:r,type:n+(0>u.__dir__?"Right":"")}),u},Bn.prototype[n+"Right"]=function(t){return this.reverse()[n](t).reverse()},Bn.prototype[n+"RightWhile"]=function(n,t){
91
- return this.reverse()[r](n,t).reverse()}}),Vn(["first","last"],function(n,t){var r="take"+(t?"Right":"");Bn.prototype[n]=function(){return this[r](1).value()[0]}}),Vn(["initial","rest"],function(n,t){var r="drop"+(t?"":"Right");Bn.prototype[n]=function(){return this[r](1)}}),Vn(["pluck","where"],function(n,t){var r=t?"filter":"map",e=t?jt:Me;Bn.prototype[n]=function(n){return this[r](e(n))}}),Bn.prototype.compact=function(){return this.filter(Ne)},Bn.prototype.reject=function(n,t){return n=br(n,t,1),
92
- this.filter(function(t){return!n(t)})},Bn.prototype.slice=function(n,t){n=null==n?0:+n||0;var r=this;return 0>n?r=this.takeRight(-n):n&&(r=this.drop(n)),t!==m&&(t=+t||0,r=0>t?r.dropRight(-t):r.take(t-n)),r},Bn.prototype.toArray=function(){return this.drop(0)},yt(Bn.prototype,function(n,t){var r=Nn[t];if(r){var e=/^(?:filter|map|reject)|While$/.test(t),u=/^(?:first|last)$/.test(t);Nn.prototype[t]=function(){function t(n){return n=[n],yu.apply(n,o),r.apply(Nn,n)}var o=arguments,i=this.__chain__,a=this.__wrapped__,l=!!this.__actions__.length,f=a instanceof Bn,c=o[0],s=f||zo(a);
93
- return s&&e&&typeof c=="function"&&1!=c.length&&(f=s=false),f=f&&!l,u&&!i?f?n.call(a):r.call(Nn,this.value()):s?(a=n.apply(f?a:new Bn(this),o),u||!l&&!a.__actions__||(a.__actions__||(a.__actions__=[])).push({func:te,args:[t],thisArg:Nn}),new zn(a,i)):this.thru(t)}}}),Vn("concat join pop push replace shift sort splice split unshift".split(" "),function(n){var t=(/^(?:replace|split)$/.test(n)?ru:Qe)[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:join|pop|replace|shift)$/.test(n),u=Ku.spliceObjects||!/^(?:pop|shift|splice)$/.test(n)?t:function(){
94
- var n=t.apply(this,arguments);return 0===this.length&&delete this[0],n};Nn.prototype[n]=function(){var n=arguments;return e&&!this.__chain__?u.apply(this.value(),n):this[r](function(t){return u.apply(t,n)})}}),yt(Bn.prototype,function(n,t){var r=Nn[t];if(r){var e=r.name;(Mu[e]||(Mu[e]=[])).push({name:t,func:r})}}),Mu[hr(null,x).name]=[{name:"wrapper",func:null}],Bn.prototype.clone=function(){var n=this.__actions__,t=this.__iteratees__,r=this.__views__,e=new Bn(this.__wrapped__);return e.__actions__=n?Kn(n):null,
95
- e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=t?Kn(t):null,e.__takeCount__=this.__takeCount__,e.__views__=r?Kn(r):null,e},Bn.prototype.reverse=function(){if(this.__filtered__){var n=new Bn(this);n.__dir__=-1,n.__filtered__=true}else n=this.clone(),n.__dir__*=-1;return n},Bn.prototype.value=function(){var n=this.__wrapped__.value();if(!zo(n))return zt(n,this.__actions__);var t,r=this.__dir__,e=0>r;t=n.length;for(var u=this.__views__,o=0,i=-1,a=u?u.length:0;++i<a;){var l=u[i],f=l.size;
96
- switch(l.type){case"drop":o+=f;break;case"dropRight":t-=f;break;case"take":t=Cu(t,o+f);break;case"takeRight":o=Ru(o,t-f)}}t={start:o,end:t},u=t.start,o=t.end,t=o-u,u=e?o:u-1,o=Cu(t,this.__takeCount__),a=(i=this.__iteratees__)?i.length:0,l=0,f=[];n:for(;t--&&l<o;){for(var u=u+r,c=-1,s=n[u];++c<a;){var p=i[c],h=p.iteratee,_=p.type;if(_==W){if(p.done&&(e?u>p.index:u<p.index)&&(p.count=0,p.done=false),p.index=u,!(p.done||(_=p.limit,p.done=-1<_?p.count++>=_:!h(s))))continue n}else if(p=h(s),_==$)s=p;else if(!p){
97
- if(_==F)continue n;break n}}f[l++]=s}return f},Nn.prototype.chain=function(){return ne(this)},Nn.prototype.commit=function(){return new zn(this.value(),this.__chain__)},Nn.prototype.plant=function(n){for(var t,r=this;r instanceof Pn;){var e=qr(r);t?u.__wrapped__=e:t=e;var u=e,r=r.__wrapped__}return u.__wrapped__=n,t},Nn.prototype.reverse=function(){var n=this.__wrapped__;return n instanceof Bn?(this.__actions__.length&&(n=new Bn(this)),new zn(n.reverse(),this.__chain__)):this.thru(function(n){return n.reverse();
98
- })},Nn.prototype.toString=function(){return this.value()+""},Nn.prototype.run=Nn.prototype.toJSON=Nn.prototype.valueOf=Nn.prototype.value=function(){return zt(this.__wrapped__,this.__actions__)},Nn.prototype.collect=Nn.prototype.map,Nn.prototype.head=Nn.prototype.first,Nn.prototype.select=Nn.prototype.filter,Nn.prototype.tail=Nn.prototype.rest,Nn}var m,w="3.9.3",b=1,x=2,A=4,j=8,O=16,k=32,I=64,E=128,R=256,C=30,S="...",T=150,U=16,W=0,F=1,$=2,L="Expected a function",N="__lodash_placeholder__",P="[object Arguments]",z="[object Array]",B="[object Boolean]",M="[object Date]",q="[object Error]",D="[object Function]",K="[object Number]",V="[object Object]",Y="[object RegExp]",Z="[object String]",G="[object ArrayBuffer]",J="[object Float32Array]",X="[object Float64Array]",H="[object Int8Array]",Q="[object Int16Array]",nn="[object Int32Array]",tn="[object Uint8Array]",rn="[object Uint8ClampedArray]",en="[object Uint16Array]",un="[object Uint32Array]",on=/\b__p\+='';/g,an=/\b(__p\+=)''\+/g,ln=/(__e\(.*?\)|\b__t\))\+'';/g,fn=/&(?:amp|lt|gt|quot|#39|#96);/g,cn=/[&<>"'`]/g,sn=RegExp(fn.source),pn=RegExp(cn.source),hn=/<%-([\s\S]+?)%>/g,_n=/<%([\s\S]+?)%>/g,vn=/<%=([\s\S]+?)%>/g,gn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/,yn=/^\w*$/,dn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g,mn=/[.*+?^${}()|[\]\/\\]/g,wn=RegExp(mn.source),bn=/[\u0300-\u036f\ufe20-\ufe23]/g,xn=/\\(\\)?/g,An=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,jn=/\w*$/,On=/^0[xX]/,kn=/^\[object .+?Constructor\]$/,In=/^\d+$/,En=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,Rn=/($^)/,Cn=/['\n\r\u2028\u2029\\]/g,Sn=RegExp("[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?=[A-Z\\xc0-\\xd6\\xd8-\\xde][a-z\\xdf-\\xf6\\xf8-\\xff]+)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+|[A-Z\\xc0-\\xd6\\xd8-\\xde]+|[0-9]+","g"),Tn=" \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",Un="Array ArrayBuffer Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Math Number Object RegExp Set String _ clearTimeout document isFinite parseFloat parseInt setTimeout TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap window".split(" "),Wn="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),Fn={};
99
- Fn[J]=Fn[X]=Fn[H]=Fn[Q]=Fn[nn]=Fn[tn]=Fn[rn]=Fn[en]=Fn[un]=true,Fn[P]=Fn[z]=Fn[G]=Fn[B]=Fn[M]=Fn[q]=Fn[D]=Fn["[object Map]"]=Fn[K]=Fn[V]=Fn[Y]=Fn["[object Set]"]=Fn[Z]=Fn["[object WeakMap]"]=false;var $n={};$n[P]=$n[z]=$n[G]=$n[B]=$n[M]=$n[J]=$n[X]=$n[H]=$n[Q]=$n[nn]=$n[K]=$n[V]=$n[Y]=$n[Z]=$n[tn]=$n[rn]=$n[en]=$n[un]=true,$n[q]=$n[D]=$n["[object Map]"]=$n["[object Set]"]=$n["[object WeakMap]"]=false;var Ln={leading:false,maxWait:0,trailing:false},Nn={"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A",
100
- "\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",
101
- "\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss"},Pn={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","`":"&#96;"},zn={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'","&#96;":"`"},Bn={"function":true,object:true},Mn={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},qn=Bn[typeof exports]&&exports&&!exports.nodeType&&exports,Dn=Bn[typeof module]&&module&&!module.nodeType&&module,Kn=Bn[typeof self]&&self&&self.Object&&self,Vn=Bn[typeof window]&&window&&window.Object&&window,Yn=Dn&&Dn.exports===qn&&qn,Zn=qn&&Dn&&typeof global=="object"&&global&&global.Object&&global||Vn!==(this&&this.window)&&Vn||Kn||this,Gn=function(){
102
- try{Object({toString:0}+"")}catch(n){return function(){return false}}return function(n){return typeof n.toString!="function"&&typeof(n+"")=="string"}}(),Jn=d();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(Zn._=Jn, define(function(){return Jn})):qn&&Dn?Yn?(Dn.exports=Jn)._=Jn:qn._=Jn:Zn._=Jn}).call(this);
6
+ ;(function(){function n(n,t){if(n!==t){var r=null===n,e=n===w,u=n===n,o=null===t,i=t===w,f=t===t;if(n>t&&!o||!u||r&&!i&&f||e&&f)return 1;if(n<t&&!r||!f||o&&!e&&u||i&&u)return-1}return 0}function t(n,t,r){for(var e=n.length,u=r?e:-1;r?u--:++u<e;)if(t(n[u],u,n))return u;return-1}function r(n,t,r){if(t!==t)return p(n,r);r-=1;for(var e=n.length;++r<e;)if(n[r]===t)return r;return-1}function e(n){return typeof n=="function"||false}function u(n){return null==n?"":n+""}function o(n,t){for(var r=-1,e=n.length;++r<e&&-1<t.indexOf(n.charAt(r)););
7
+ return r}function i(n,t){for(var r=n.length;r--&&-1<t.indexOf(n.charAt(r)););return r}function f(t,r){return n(t.a,r.a)||t.b-r.b}function a(n){return Nn[n]}function c(n){return Tn[n]}function l(n,t,r){return t?n=Bn[n]:r&&(n=Dn[n]),"\\"+n}function s(n){return"\\"+Dn[n]}function p(n,t,r){var e=n.length;for(t+=r?0:-1;r?t--:++t<e;){var u=n[t];if(u!==u)return t}return-1}function h(n){return!!n&&typeof n=="object"}function _(n){return 160>=n&&9<=n&&13>=n||32==n||160==n||5760==n||6158==n||8192<=n&&(8202>=n||8232==n||8233==n||8239==n||8287==n||12288==n||65279==n);
8
+ }function v(n,t){for(var r=-1,e=n.length,u=-1,o=[];++r<e;)n[r]===t&&(n[r]=P,o[++u]=r);return o}function g(n){for(var t=-1,r=n.length;++t<r&&_(n.charCodeAt(t)););return t}function y(n){for(var t=n.length;t--&&_(n.charCodeAt(t)););return t}function d(n){return Pn[n]}function m(_){function Nn(n){if(h(n)&&!(Wo(n)||n instanceof zn)){if(n instanceof Pn)return n;if(eu.call(n,"__chain__")&&eu.call(n,"__wrapped__"))return qr(n)}return new Pn(n)}function Tn(){}function Pn(n,t,r){this.__wrapped__=n,this.__actions__=r||[],
9
+ this.__chain__=!!t}function zn(n){this.__wrapped__=n,this.__actions__=[],this.__dir__=1,this.__filtered__=false,this.__iteratees__=[],this.__takeCount__=Cu,this.__views__=[]}function Bn(){this.__data__={}}function Dn(n){var t=n?n.length:0;for(this.data={hash:mu(null),set:new hu};t--;)this.push(n[t])}function Mn(n,t){var r=n.data;return(typeof t=="string"||de(t)?r.set.has(t):r.hash[t])?0:-1}function qn(n,t){var r=-1,e=n.length;for(t||(t=De(e));++r<e;)t[r]=n[r];return t}function Kn(n,t){for(var r=-1,e=n.length;++r<e&&false!==t(n[r],r,n););
10
+ return n}function Vn(n,t){for(var r=-1,e=n.length;++r<e;)if(!t(n[r],r,n))return false;return true}function Zn(n,t){for(var r=-1,e=n.length,u=-1,o=[];++r<e;){var i=n[r];t(i,r,n)&&(o[++u]=i)}return o}function Xn(n,t){for(var r=-1,e=n.length,u=De(e);++r<e;)u[r]=t(n[r],r,n);return u}function Hn(n,t){for(var r=-1,e=t.length,u=n.length;++r<e;)n[u+r]=t[r];return n}function Qn(n,t,r,e){var u=-1,o=n.length;for(e&&o&&(r=n[++u]);++u<o;)r=t(r,n[u],u,n);return r}function nt(n,t){for(var r=-1,e=n.length;++r<e;)if(t(n[r],r,n))return true;
11
+ return false}function tt(n,t,r,e){return n!==w&&eu.call(e,r)?n:t}function rt(n,t,r){for(var e=-1,u=Ko(t),o=u.length;++e<o;){var i=u[e],f=n[i],a=r(f,t[i],i,n,t);(a===a?a===f:f!==f)&&(f!==w||i in n)||(n[i]=a)}return n}function et(n,t){return null==t?n:ot(t,Ko(t),n)}function ut(n,t){for(var r=-1,e=null==n,u=!e&&Sr(n),o=u?n.length:0,i=t.length,f=De(i);++r<i;){var a=t[r];f[r]=u?Ur(a,o)?n[a]:w:e?w:n[a]}return f}function ot(n,t,r){r||(r={});for(var e=-1,u=t.length;++e<u;){var o=t[e];r[o]=n[o]}return r}function it(n,t,r){
12
+ var e=typeof n;return"function"==e?t===w?n:Dt(n,t,r):null==n?Ne:"object"==e?At(n):t===w?Be(n):jt(n,t)}function ft(n,t,r,e,u,o,i){var f;if(r&&(f=u?r(n,e,u):r(n)),f!==w)return f;if(!de(n))return n;if(e=Wo(n)){if(f=Ir(n),!t)return qn(n,f)}else{var a=ou.call(n),c=a==K;if(a!=Z&&a!=z&&(!c||u))return Ln[a]?Er(n,a,t):u?n:{};if(Gn(n))return u?n:{};if(f=Rr(c?{}:n),!t)return et(f,n)}for(o||(o=[]),i||(i=[]),u=o.length;u--;)if(o[u]==n)return i[u];return o.push(n),i.push(f),(e?Kn:gt)(n,function(e,u){f[u]=ft(e,t,r,u,n,o,i);
13
+ }),f}function at(n,t,r){if(typeof n!="function")throw new Xe(T);return _u(function(){n.apply(w,r)},t)}function ct(n,t){var e=n?n.length:0,u=[];if(!e)return u;var o=-1,i=jr(),f=i==r,a=f&&t.length>=F&&mu&&hu?new Dn(t):null,c=t.length;a&&(i=Mn,f=false,t=a);n:for(;++o<e;)if(a=n[o],f&&a===a){for(var l=c;l--;)if(t[l]===a)continue n;u.push(a)}else 0>i(t,a,0)&&u.push(a);return u}function lt(n,t){var r=true;return zu(n,function(n,e,u){return r=!!t(n,e,u)}),r}function st(n,t,r,e){var u=e,o=u;return zu(n,function(n,i,f){
14
+ i=+t(n,i,f),(r(i,u)||i===e&&i===o)&&(u=i,o=n)}),o}function pt(n,t){var r=[];return zu(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function ht(n,t,r,e){var u;return r(n,function(n,r,o){return t(n,r,o)?(u=e?r:n,false):void 0}),u}function _t(n,t,r,e){e||(e=[]);for(var u=-1,o=n.length;++u<o;){var i=n[u];h(i)&&Sr(i)&&(r||Wo(i)||_e(i))?t?_t(i,t,r,e):Hn(e,i):r||(e[e.length]=i)}return e}function vt(n,t){Du(n,t,Ee)}function gt(n,t){return Du(n,t,Ko)}function yt(n,t){return Mu(n,t,Ko)}function dt(n,t){for(var r=-1,e=t.length,u=-1,o=[];++r<e;){
15
+ var i=t[r];ye(n[i])&&(o[++u]=i)}return o}function mt(n,t,r){if(null!=n){n=Dr(n),r!==w&&r in n&&(t=[r]),r=0;for(var e=t.length;null!=n&&r<e;)n=Dr(n)[t[r++]];return r&&r==e?n:w}}function wt(n,t,r,e,u,o){if(n===t)n=true;else if(null==n||null==t||!de(n)&&!h(t))n=n!==n&&t!==t;else n:{var i=wt,f=Wo(n),a=Wo(t),c=B,l=B;f||(c=ou.call(n),c==z?c=Z:c!=Z&&(f=je(n))),a||(l=ou.call(t),l==z?l=Z:l!=Z&&je(t));var s=c==Z&&!Gn(n),a=l==Z&&!Gn(t),l=c==l;if(!l||f||s){if(!e&&(c=s&&eu.call(n,"__wrapped__"),a=a&&eu.call(t,"__wrapped__"),
16
+ c||a)){n=i(c?n.value():n,a?t.value():t,r,e,u,o);break n}if(l){for(u||(u=[]),o||(o=[]),c=u.length;c--;)if(u[c]==n){n=o[c]==t;break n}u.push(n),o.push(t),n=(f?mr:xr)(n,t,i,r,e,u,o),u.pop(),o.pop()}else n=false}else n=wr(n,t,c)}return n}function xt(n,t,r){var e=t.length,u=e,o=!r;if(null==n)return!u;for(n=Dr(n);e--;){var i=t[e];if(o&&i[2]?i[1]!==n[i[0]]:!(i[0]in n))return false}for(;++e<u;){var i=t[e],f=i[0],a=n[f],c=i[1];if(o&&i[2]){if(a===w&&!(f in n))return false}else if(i=r?r(a,c,f):w,i===w?!wt(c,a,r,true):!i)return false;
17
+ }return true}function bt(n,t){var r=-1,e=Sr(n)?De(n.length):[];return zu(n,function(n,u,o){e[++r]=t(n,u,o)}),e}function At(n){var t=kr(n);if(1==t.length&&t[0][2]){var r=t[0][0],e=t[0][1];return function(n){return null==n?false:(n=Dr(n),n[r]===e&&(e!==w||r in n))}}return function(n){return xt(n,t)}}function jt(n,t){var r=Wo(n),e=Wr(n)&&t===t&&!de(t),u=n+"";return n=Mr(n),function(o){if(null==o)return false;var i=u;if(o=Dr(o),!(!r&&e||i in o)){if(o=1==n.length?o:mt(o,St(n,0,-1)),null==o)return false;i=Gr(n),o=Dr(o);
18
+ }return o[i]===t?t!==w||i in o:wt(t,o[i],w,true)}}function kt(n,t,r,e,u){if(!de(n))return n;var o=Sr(t)&&(Wo(t)||je(t)),i=o?w:Ko(t);return Kn(i||t,function(f,a){if(i&&(a=f,f=t[a]),h(f)){e||(e=[]),u||(u=[]);n:{for(var c=a,l=e,s=u,p=l.length,_=t[c];p--;)if(l[p]==_){n[c]=s[p];break n}var p=n[c],v=r?r(p,_,c,n,t):w,g=v===w;g&&(v=_,Sr(_)&&(Wo(_)||je(_))?v=Wo(p)?p:Sr(p)?qn(p):[]:xe(_)||_e(_)?v=_e(p)?Ie(p):xe(p)?p:{}:g=false),l.push(_),s.push(v),g?n[c]=kt(v,_,r,l,s):(v===v?v!==p:p===p)&&(n[c]=v)}}else c=n[a],
19
+ l=r?r(c,f,a,n,t):w,(s=l===w)&&(l=f),l===w&&(!o||a in n)||!s&&(l===l?l===c:c!==c)||(n[a]=l)}),n}function Ot(n){return function(t){return null==t?w:Dr(t)[n]}}function It(n){var t=n+"";return n=Mr(n),function(r){return mt(r,n,t)}}function Rt(n,t){for(var r=n?t.length:0;r--;){var e=t[r];if(e!=u&&Ur(e)){var u=e;vu.call(n,e,1)}}}function Et(n,t){return n+wu(Ru()*(t-n+1))}function Ct(n,t,r,e,u){return u(n,function(n,u,o){r=e?(e=false,n):t(r,n,u,o)}),r}function St(n,t,r){var e=-1,u=n.length;for(t=null==t?0:+t||0,
20
+ 0>t&&(t=-t>u?0:u+t),r=r===w||r>u?u:+r||0,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=De(u);++e<u;)r[e]=n[e+t];return r}function Ut(n,t){var r;return zu(n,function(n,e,u){return r=t(n,e,u),!r}),!!r}function $t(n,t){var r=n.length;for(n.sort(t);r--;)n[r]=n[r].c;return n}function Wt(t,r,e){var u=br(),o=-1;return r=Xn(r,function(n){return u(n)}),t=bt(t,function(n){return{a:Xn(r,function(t){return t(n)}),b:++o,c:n}}),$t(t,function(t,r){var u;n:{for(var o=-1,i=t.a,f=r.a,a=i.length,c=e.length;++o<a;)if(u=n(i[o],f[o])){
21
+ if(o>=c)break n;o=e[o],u*="asc"===o||true===o?1:-1;break n}u=t.b-r.b}return u})}function Ft(n,t){var r=0;return zu(n,function(n,e,u){r+=+t(n,e,u)||0}),r}function Lt(n,t){var e=-1,u=jr(),o=n.length,i=u==r,f=i&&o>=F,a=f&&mu&&hu?new Dn(void 0):null,c=[];a?(u=Mn,i=false):(f=false,a=t?[]:c);n:for(;++e<o;){var l=n[e],s=t?t(l,e,n):l;if(i&&l===l){for(var p=a.length;p--;)if(a[p]===s)continue n;t&&a.push(s),c.push(l)}else 0>u(a,s,0)&&((t||f)&&a.push(s),c.push(l))}return c}function Nt(n,t){for(var r=-1,e=t.length,u=De(e);++r<e;)u[r]=n[t[r]];
22
+ return u}function Tt(n,t,r,e){for(var u=n.length,o=e?u:-1;(e?o--:++o<u)&&t(n[o],o,n););return r?St(n,e?0:o,e?o+1:u):St(n,e?o+1:0,e?u:o)}function Pt(n,t){var r=n;r instanceof zn&&(r=r.value());for(var e=-1,u=t.length;++e<u;)var o=t[e],r=o.func.apply(o.thisArg,Hn([r],o.args));return r}function zt(n,t,r){var e=0,u=n?n.length:e;if(typeof t=="number"&&t===t&&u<=Uu){for(;e<u;){var o=e+u>>>1,i=n[o];(r?i<=t:i<t)&&null!==i?e=o+1:u=o}return u}return Bt(n,t,Ne,r)}function Bt(n,t,r,e){t=r(t);for(var u=0,o=n?n.length:0,i=t!==t,f=null===t,a=t===w;u<o;){
23
+ var c=wu((u+o)/2),l=r(n[c]),s=l!==w,p=l===l;(i?p||e:f?p&&s&&(e||null!=l):a?p&&(e||s):null==l?0:e?l<=t:l<t)?u=c+1:o=c}return ku(o,Su)}function Dt(n,t,r){if(typeof n!="function")return Ne;if(t===w)return n;switch(r){case 1:return function(r){return n.call(t,r)};case 3:return function(r,e,u){return n.call(t,r,e,u)};case 4:return function(r,e,u,o){return n.call(t,r,e,u,o)};case 5:return function(r,e,u,o,i){return n.call(t,r,e,u,o,i)}}return function(){return n.apply(t,arguments)}}function Mt(n){var t=new au(n.byteLength);
24
+ return new gu(t).set(new gu(n)),t}function qt(n,t,r){for(var e=r.length,u=-1,o=ju(n.length-e,0),i=-1,f=t.length,a=De(f+o);++i<f;)a[i]=t[i];for(;++u<e;)a[r[u]]=n[u];for(;o--;)a[i++]=n[u++];return a}function Kt(n,t,r){for(var e=-1,u=r.length,o=-1,i=ju(n.length-u,0),f=-1,a=t.length,c=De(i+a);++o<i;)c[o]=n[o];for(i=o;++f<a;)c[i+f]=t[f];for(;++e<u;)c[i+r[e]]=n[o++];return c}function Vt(n,t){return function(r,e,u){var o=t?t():{};if(e=br(e,u,3),Wo(r)){u=-1;for(var i=r.length;++u<i;){var f=r[u];n(o,f,e(f,u,r),r);
25
+ }}else zu(r,function(t,r,u){n(o,t,e(t,r,u),u)});return o}}function Zt(n){return pe(function(t,r){var e=-1,u=null==t?0:r.length,o=2<u?r[u-2]:w,i=2<u?r[2]:w,f=1<u?r[u-1]:w;for(typeof o=="function"?(o=Dt(o,f,5),u-=2):(o=typeof f=="function"?f:w,u-=o?1:0),i&&$r(r[0],r[1],i)&&(o=3>u?w:o,u=1);++e<u;)(i=r[e])&&n(t,i,o);return t})}function Yt(n,t){return function(r,e){var u=r?Vu(r):0;if(!Lr(u))return n(r,e);for(var o=t?u:-1,i=Dr(r);(t?o--:++o<u)&&false!==e(i[o],o,i););return r}}function Gt(n){return function(t,r,e){
26
+ var u=Dr(t);e=e(t);for(var o=e.length,i=n?o:-1;n?i--:++i<o;){var f=e[i];if(false===r(u[f],f,u))break}return t}}function Jt(n,t){function r(){return(this&&this!==Yn&&this instanceof r?e:n).apply(t,arguments)}var e=Ht(n);return r}function Xt(n){return function(t){var r=-1;t=Fe(Ue(t));for(var e=t.length,u="";++r<e;)u=n(u,t[r],r);return u}}function Ht(n){return function(){var t=arguments;switch(t.length){case 0:return new n;case 1:return new n(t[0]);case 2:return new n(t[0],t[1]);case 3:return new n(t[0],t[1],t[2]);
27
+ case 4:return new n(t[0],t[1],t[2],t[3]);case 5:return new n(t[0],t[1],t[2],t[3],t[4]);case 6:return new n(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new n(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=Pu(n.prototype),t=n.apply(r,t);return de(t)?t:r}}function Qt(n){function t(r,e,u){return u&&$r(r,e,u)&&(e=w),r=dr(r,n,w,w,w,w,w,e),r.placeholder=t.placeholder,r}return t}function nr(n,t){return pe(function(r){var e=r[0];return null==e?e:(r.push(t),n.apply(w,r))})}function tr(n,t){return function(r,e,u){
28
+ if(u&&$r(r,e,u)&&(e=w),e=br(e,u,3),1==e.length){u=r=Wo(r)?r:Br(r);for(var o=e,i=-1,f=u.length,a=t,c=a;++i<f;){var l=u[i],s=+o(l);n(s,a)&&(a=s,c=l)}if(u=c,!r.length||u!==t)return u}return st(r,e,n,t)}}function rr(n,r){return function(e,u,o){return u=br(u,o,3),Wo(e)?(u=t(e,u,r),-1<u?e[u]:w):ht(e,u,n)}}function er(n){return function(r,e,u){return r&&r.length?(e=br(e,u,3),t(r,e,n)):-1}}function ur(n){return function(t,r,e){return r=br(r,e,3),ht(t,r,n,true)}}function or(n){return function(){for(var t,r=arguments.length,e=n?r:-1,u=0,o=De(r);n?e--:++e<r;){
29
+ var i=o[u++]=arguments[e];if(typeof i!="function")throw new Xe(T);!t&&Pn.prototype.thru&&"wrapper"==Ar(i)&&(t=new Pn([],true))}for(e=t?-1:r;++e<r;){var i=o[e],u=Ar(i),f="wrapper"==u?Ku(i):w;t=f&&Fr(f[0])&&f[1]==(E|k|I|C)&&!f[4].length&&1==f[9]?t[Ar(f[0])].apply(t,f[3]):1==i.length&&Fr(i)?t[u]():t.thru(i)}return function(){var n=arguments,e=n[0];if(t&&1==n.length&&Wo(e)&&e.length>=F)return t.plant(e).value();for(var u=0,n=r?o[u].apply(this,n):e;++u<r;)n=o[u].call(this,n);return n}}}function ir(n,t){
30
+ return function(r,e,u){return typeof e=="function"&&u===w&&Wo(r)?n(r,e):t(r,Dt(e,u,3))}}function fr(n){return function(t,r,e){return(typeof r!="function"||e!==w)&&(r=Dt(r,e,3)),n(t,r,Ee)}}function ar(n){return function(t,r,e){return(typeof r!="function"||e!==w)&&(r=Dt(r,e,3)),n(t,r)}}function cr(n){return function(t,r,e){var u={};return r=br(r,e,3),gt(t,function(t,e,o){o=r(t,e,o),e=n?o:e,t=n?t:o,u[e]=t}),u}}function lr(n){return function(t,r,e){return t=u(t),(n?t:"")+_r(t,r,e)+(n?"":t)}}function sr(n){
31
+ var t=pe(function(r,e){var u=v(e,t.placeholder);return dr(r,n,w,e,u)});return t}function pr(n,t){return function(r,e,u,o){var i=3>arguments.length;return typeof e=="function"&&o===w&&Wo(r)?n(r,e,u,i):Ct(r,br(e,o,4),u,i,t)}}function hr(n,t,r,e,u,o,i,f,a,c){function l(){for(var m=arguments.length,x=m,j=De(m);x--;)j[x]=arguments[x];if(e&&(j=qt(j,e,u)),o&&(j=Kt(j,o,i)),_||y){var x=l.placeholder,k=v(j,x),m=m-k.length;if(m<c){var O=f?qn(f):w,m=ju(c-m,0),E=_?k:w,k=_?w:k,C=_?j:w,j=_?w:j;return t|=_?I:R,t&=~(_?R:I),
32
+ g||(t&=~(b|A)),j=[n,t,r,C,E,j,k,O,a,m],O=hr.apply(w,j),Fr(n)&&Zu(O,j),O.placeholder=x,O}}if(x=p?r:this,O=h?x[n]:n,f)for(m=j.length,E=ku(f.length,m),k=qn(j);E--;)C=f[E],j[E]=Ur(C,m)?k[C]:w;return s&&a<j.length&&(j.length=a),this&&this!==Yn&&this instanceof l&&(O=d||Ht(n)),O.apply(x,j)}var s=t&E,p=t&b,h=t&A,_=t&k,g=t&j,y=t&O,d=h?w:Ht(n);return l}function _r(n,t,r){return n=n.length,t=+t,n<t&&bu(t)?(t-=n,r=null==r?" ":r+"",$e(r,du(t/r.length)).slice(0,t)):""}function vr(n,t,r,e){function u(){for(var t=-1,f=arguments.length,a=-1,c=e.length,l=De(c+f);++a<c;)l[a]=e[a];
33
+ for(;f--;)l[a++]=arguments[++t];return(this&&this!==Yn&&this instanceof u?i:n).apply(o?r:this,l)}var o=t&b,i=Ht(n);return u}function gr(n){var t=Ve[n];return function(n,r){return(r=r===w?0:+r||0)?(r=su(10,r),t(n*r)/r):t(n)}}function yr(n){return function(t,r,e,u){var o=br(e);return null==e&&o===it?zt(t,r,n):Bt(t,r,o(e,u,1),n)}}function dr(n,t,r,e,u,o,i,f){var a=t&A;if(!a&&typeof n!="function")throw new Xe(T);var c=e?e.length:0;if(c||(t&=~(I|R),e=u=w),c-=u?u.length:0,t&R){var l=e,s=u;e=u=w}var p=a?w:Ku(n);
34
+ return r=[n,t,r,e,u,l,s,o,i,f],p&&(e=r[1],t=p[1],f=e|t,u=t==E&&e==k||t==E&&e==C&&r[7].length<=p[8]||t==(E|C)&&e==k,(f<E||u)&&(t&b&&(r[2]=p[2],f|=e&b?0:j),(e=p[3])&&(u=r[3],r[3]=u?qt(u,e,p[4]):qn(e),r[4]=u?v(r[3],P):qn(p[4])),(e=p[5])&&(u=r[5],r[5]=u?Kt(u,e,p[6]):qn(e),r[6]=u?v(r[5],P):qn(p[6])),(e=p[7])&&(r[7]=qn(e)),t&E&&(r[8]=null==r[8]?p[8]:ku(r[8],p[8])),null==r[9]&&(r[9]=p[9]),r[0]=p[0],r[1]=f),t=r[1],f=r[9]),r[9]=null==f?a?0:n.length:ju(f-c,0)||0,(p?qu:Zu)(t==b?Jt(r[0],r[2]):t!=I&&t!=(b|I)||r[4].length?hr.apply(w,r):vr.apply(w,r),r);
35
+ }function mr(n,t,r,e,u,o,i){var f=-1,a=n.length,c=t.length;if(a!=c&&(!u||c<=a))return false;for(;++f<a;){var l=n[f],c=t[f],s=e?e(u?c:l,u?l:c,f):w;if(s!==w){if(s)continue;return false}if(u){if(!nt(t,function(n){return l===n||r(l,n,e,u,o,i)}))return false}else if(l!==c&&!r(l,c,e,u,o,i))return false}return true}function wr(n,t,r){switch(r){case D:case M:return+n==+t;case q:return n.name==t.name&&n.message==t.message;case V:return n!=+n?t!=+t:n==+t;case Y:case G:return n==t+""}return false}function xr(n,t,r,e,u,o,i){var f=Ko(n),a=f.length,c=Ko(t).length;
36
+ if(a!=c&&!u)return false;for(c=a;c--;){var l=f[c];if(!(u?l in t:eu.call(t,l)))return false}for(var s=u;++c<a;){var l=f[c],p=n[l],h=t[l],_=e?e(u?h:p,u?p:h,l):w;if(_===w?!r(p,h,e,u,o,i):!_)return false;s||(s="constructor"==l)}return s||(r=n.constructor,e=t.constructor,!(r!=e&&"constructor"in n&&"constructor"in t)||typeof r=="function"&&r instanceof r&&typeof e=="function"&&e instanceof e)?true:false}function br(n,t,r){var e=Nn.callback||Le,e=e===Le?it:e;return r?e(n,t,r):e}function Ar(n){for(var t=n.name,r=Fu[t],e=r?r.length:0;e--;){
37
+ var u=r[e],o=u.func;if(null==o||o==n)return u.name}return t}function jr(n,t,e){var u=Nn.indexOf||Yr,u=u===Yr?r:u;return n?u(n,t,e):u}function kr(n){n=Ce(n);for(var t=n.length;t--;){var r=n[t][1];n[t][2]=r===r&&!de(r)}return n}function Or(n,t){var r=null==n?w:n[t];return me(r)?r:w}function Ir(n){var t=n.length,r=new n.constructor(t);return t&&"string"==typeof n[0]&&eu.call(n,"index")&&(r.index=n.index,r.input=n.input),r}function Rr(n){return n=n.constructor,typeof n=="function"&&n instanceof n||(n=Ye),
38
+ new n}function Er(n,t,r){var e=n.constructor;switch(t){case J:return Mt(n);case D:case M:return new e(+n);case X:case H:case Q:case nn:case tn:case rn:case en:case un:case on:return e instanceof e&&(e=Lu[t]),t=n.buffer,new e(r?Mt(t):t,n.byteOffset,n.length);case V:case G:return new e(n);case Y:var u=new e(n.source,kn.exec(n));u.lastIndex=n.lastIndex}return u}function Cr(n,t,r){return null==n||Wr(t,n)||(t=Mr(t),n=1==t.length?n:mt(n,St(t,0,-1)),t=Gr(t)),t=null==n?n:n[t],null==t?w:t.apply(n,r)}function Sr(n){
39
+ return null!=n&&Lr(Vu(n))}function Ur(n,t){return n=typeof n=="number"||Rn.test(n)?+n:-1,t=null==t?$u:t,-1<n&&0==n%1&&n<t}function $r(n,t,r){if(!de(r))return false;var e=typeof t;return("number"==e?Sr(r)&&Ur(t,r.length):"string"==e&&t in r)?(t=r[t],n===n?n===t:t!==t):false}function Wr(n,t){var r=typeof n;return"string"==r&&dn.test(n)||"number"==r?true:Wo(n)?false:!yn.test(n)||null!=t&&n in Dr(t)}function Fr(n){var t=Ar(n);return t in zn.prototype?(t=Nn[t],n===t?true:(t=Ku(t),!!t&&n===t[0])):false}function Lr(n){return typeof n=="number"&&-1<n&&0==n%1&&n<=$u;
40
+ }function Nr(n,t){return n===w?t:Fo(n,t,Nr)}function Tr(n,t){n=Dr(n);for(var r=-1,e=t.length,u={};++r<e;){var o=t[r];o in n&&(u[o]=n[o])}return u}function Pr(n,t){var r={};return vt(n,function(n,e,u){t(n,e,u)&&(r[e]=n)}),r}function zr(n){for(var t=Ee(n),r=t.length,e=r&&n.length,u=!!e&&Lr(e)&&(Wo(n)||_e(n)||Ae(n)),o=-1,i=[];++o<r;){var f=t[o];(u&&Ur(f,e)||eu.call(n,f))&&i.push(f)}return i}function Br(n){return null==n?[]:Sr(n)?Nn.support.unindexedChars&&Ae(n)?n.split(""):de(n)?n:Ye(n):Se(n)}function Dr(n){
41
+ if(Nn.support.unindexedChars&&Ae(n)){for(var t=-1,r=n.length,e=Ye(n);++t<r;)e[t]=n.charAt(t);return e}return de(n)?n:Ye(n)}function Mr(n){if(Wo(n))return n;var t=[];return u(n).replace(mn,function(n,r,e,u){t.push(e?u.replace(An,"$1"):r||n)}),t}function qr(n){return n instanceof zn?n.clone():new Pn(n.__wrapped__,n.__chain__,qn(n.__actions__))}function Kr(n,t,r){return n&&n.length?((r?$r(n,t,r):null==t)&&(t=1),St(n,0>t?0:t)):[]}function Vr(n,t,r){var e=n?n.length:0;return e?((r?$r(n,t,r):null==t)&&(t=1),
42
+ t=e-(+t||0),St(n,0,0>t?0:t)):[]}function Zr(n){return n?n[0]:w}function Yr(n,t,e){var u=n?n.length:0;if(!u)return-1;if(typeof e=="number")e=0>e?ju(u+e,0):e;else if(e)return e=zt(n,t),e<u&&(t===t?t===n[e]:n[e]!==n[e])?e:-1;return r(n,t,e||0)}function Gr(n){var t=n?n.length:0;return t?n[t-1]:w}function Jr(n){return Kr(n,1)}function Xr(n,t,e,u){if(!n||!n.length)return[];null!=t&&typeof t!="boolean"&&(u=e,e=$r(n,t,u)?w:t,t=false);var o=br();if((null!=e||o!==it)&&(e=o(e,u,3)),t&&jr()==r){t=e;var i;e=-1,u=n.length;
43
+ for(var o=-1,f=[];++e<u;){var a=n[e],c=t?t(a,e,n):a;e&&i===c||(i=c,f[++o]=a)}n=f}else n=Lt(n,e);return n}function Hr(n){if(!n||!n.length)return[];var t=-1,r=0;n=Zn(n,function(n){return Sr(n)?(r=ju(n.length,r),true):void 0});for(var e=De(r);++t<r;)e[t]=Xn(n,Ot(t));return e}function Qr(n,t,r){return n&&n.length?(n=Hr(n),null==t?n:(t=Dt(t,r,4),Xn(n,function(n){return Qn(n,t,w,true)}))):[]}function ne(n,t){var r=-1,e=n?n.length:0,u={};for(!e||t||Wo(n[0])||(t=[]);++r<e;){var o=n[r];t?u[o]=t[r]:o&&(u[o[0]]=o[1]);
44
+ }return u}function te(n){return n=Nn(n),n.__chain__=true,n}function re(n,t,r){return t.call(r,n)}function ee(n,t,r){var e=Wo(n)?Vn:lt;return r&&$r(n,t,r)&&(t=w),(typeof t!="function"||r!==w)&&(t=br(t,r,3)),e(n,t)}function ue(n,t,r){var e=Wo(n)?Zn:pt;return t=br(t,r,3),e(n,t)}function oe(n,t,r,e){var u=n?Vu(n):0;return Lr(u)||(n=Se(n),u=n.length),r=typeof r!="number"||e&&$r(t,r,e)?0:0>r?ju(u+r,0):r||0,typeof n=="string"||!Wo(n)&&Ae(n)?r<=u&&-1<n.indexOf(t,r):!!u&&-1<jr(n,t,r)}function ie(n,t,r){var e=Wo(n)?Xn:bt;
45
+ return t=br(t,r,3),e(n,t)}function fe(n,t,r){if(r?$r(n,t,r):null==t){n=Br(n);var e=n.length;return 0<e?n[Et(0,e-1)]:w}r=-1,n=Oe(n);var e=n.length,u=e-1;for(t=ku(0>t?0:+t||0,e);++r<t;){var e=Et(r,u),o=n[e];n[e]=n[r],n[r]=o}return n.length=t,n}function ae(n,t,r){var e=Wo(n)?nt:Ut;return r&&$r(n,t,r)&&(t=w),(typeof t!="function"||r!==w)&&(t=br(t,r,3)),e(n,t)}function ce(n,t){var r;if(typeof t!="function"){if(typeof n!="function")throw new Xe(T);var e=n;n=t,t=e}return function(){return 0<--n&&(r=t.apply(this,arguments)),
46
+ 1>=n&&(t=w),r}}function le(n,t,r){function e(t,r){r&&cu(r),a=p=h=w,t&&(_=wo(),c=n.apply(s,f),p||a||(f=s=w))}function u(){var n=t-(wo()-l);0>=n||n>t?e(h,a):p=_u(u,n)}function o(){e(g,p)}function i(){if(f=arguments,l=wo(),s=this,h=g&&(p||!y),false===v)var r=y&&!p;else{a||y||(_=l);var e=v-(l-_),i=0>=e||e>v;i?(a&&(a=cu(a)),_=l,c=n.apply(s,f)):a||(a=_u(o,e))}return i&&p?p=cu(p):p||t===v||(p=_u(u,t)),r&&(i=true,c=n.apply(s,f)),!i||p||a||(f=s=w),c}var f,a,c,l,s,p,h,_=0,v=false,g=true;if(typeof n!="function")throw new Xe(T);
47
+ if(t=0>t?0:+t||0,true===r)var y=true,g=false;else de(r)&&(y=!!r.leading,v="maxWait"in r&&ju(+r.maxWait||0,t),g="trailing"in r?!!r.trailing:g);return i.cancel=function(){p&&cu(p),a&&cu(a),_=0,a=p=h=w},i}function se(n,t){function r(){var e=arguments,u=t?t.apply(this,e):e[0],o=r.cache;return o.has(u)?o.get(u):(e=n.apply(this,e),r.cache=o.set(u,e),e)}if(typeof n!="function"||t&&typeof t!="function")throw new Xe(T);return r.cache=new se.Cache,r}function pe(n,t){if(typeof n!="function")throw new Xe(T);return t=ju(t===w?n.length-1:+t||0,0),
48
+ function(){for(var r=arguments,e=-1,u=ju(r.length-t,0),o=De(u);++e<u;)o[e]=r[t+e];switch(t){case 0:return n.call(this,o);case 1:return n.call(this,r[0],o);case 2:return n.call(this,r[0],r[1],o)}for(u=De(t+1),e=-1;++e<t;)u[e]=r[e];return u[t]=o,n.apply(this,u)}}function he(n,t){return n>t}function _e(n){return h(n)&&Sr(n)&&eu.call(n,"callee")&&!pu.call(n,"callee")}function ve(n,t,r,e){return e=(r=typeof r=="function"?Dt(r,e,3):w)?r(n,t):w,e===w?wt(n,t,r):!!e}function ge(n){return h(n)&&typeof n.message=="string"&&ou.call(n)==q;
49
+ }function ye(n){return de(n)&&ou.call(n)==K}function de(n){var t=typeof n;return!!n&&("object"==t||"function"==t)}function me(n){return null==n?false:ye(n)?fu.test(ru.call(n)):h(n)&&(Gn(n)?fu:In).test(n)}function we(n){return typeof n=="number"||h(n)&&ou.call(n)==V}function xe(n){var t;if(!h(n)||ou.call(n)!=Z||Gn(n)||_e(n)||!(eu.call(n,"constructor")||(t=n.constructor,typeof t!="function"||t instanceof t)))return false;var r;return Nn.support.ownLast?(vt(n,function(n,t,e){return r=eu.call(e,t),false}),false!==r):(vt(n,function(n,t){
50
+ r=t}),r===w||eu.call(n,r))}function be(n){return de(n)&&ou.call(n)==Y}function Ae(n){return typeof n=="string"||h(n)&&ou.call(n)==G}function je(n){return h(n)&&Lr(n.length)&&!!Fn[ou.call(n)]}function ke(n,t){return n<t}function Oe(n){var t=n?Vu(n):0;return Lr(t)?t?Nn.support.unindexedChars&&Ae(n)?n.split(""):qn(n):[]:Se(n)}function Ie(n){return ot(n,Ee(n))}function Re(n){return dt(n,Ee(n))}function Ee(n){if(null==n)return[];de(n)||(n=Ye(n));for(var t=n.length,r=Nn.support,t=t&&Lr(t)&&(Wo(n)||_e(n)||Ae(n))&&t||0,e=n.constructor,u=-1,e=ye(e)&&e.prototype||nu,o=e===n,i=De(t),f=0<t,a=r.enumErrorProps&&(n===Qe||n instanceof qe),c=r.enumPrototypes&&ye(n);++u<t;)i[u]=u+"";
51
+ for(var l in n)c&&"prototype"==l||a&&("message"==l||"name"==l)||f&&Ur(l,t)||"constructor"==l&&(o||!eu.call(n,l))||i.push(l);if(r.nonEnumShadows&&n!==nu)for(t=n===tu?G:n===Qe?q:ou.call(n),r=Nu[t]||Nu[Z],t==Z&&(e=nu),t=Wn.length;t--;)l=Wn[t],u=r[l],o&&u||(u?!eu.call(n,l):n[l]===e[l])||i.push(l);return i}function Ce(n){n=Dr(n);for(var t=-1,r=Ko(n),e=r.length,u=De(e);++t<e;){var o=r[t];u[t]=[o,n[o]]}return u}function Se(n){return Nt(n,Ko(n))}function Ue(n){return(n=u(n))&&n.replace(En,a).replace(bn,"");
52
+ }function $e(n,t){var r="";if(n=u(n),t=+t,1>t||!n||!bu(t))return r;do t%2&&(r+=n),t=wu(t/2),n+=n;while(t);return r}function We(n,t,r){var e=n;return(n=u(n))?(r?$r(e,t,r):null==t)?n.slice(g(n),y(n)+1):(t+="",n.slice(o(n,t),i(n,t)+1)):n}function Fe(n,t,r){return r&&$r(n,t,r)&&(t=w),n=u(n),n.match(t||Un)||[]}function Le(n,t,r){return r&&$r(n,t,r)&&(t=w),h(n)?Te(n):it(n,t)}function Ne(n){return n}function Te(n){return At(ft(n,true))}function Pe(n,t,r){if(null==r){var e=de(t),u=e?Ko(t):w;((u=u&&u.length?dt(t,u):w)?u.length:e)||(u=false,
53
+ r=t,t=n,n=this)}u||(u=dt(t,Ko(t)));var o=true,e=-1,i=ye(n),f=u.length;false===r?o=false:de(r)&&"chain"in r&&(o=r.chain);for(;++e<f;){r=u[e];var a=t[r];n[r]=a,i&&(n.prototype[r]=function(t){return function(){var r=this.__chain__;if(o||r){var e=n(this.__wrapped__);return(e.__actions__=qn(this.__actions__)).push({func:t,args:arguments,thisArg:n}),e.__chain__=r,e}return t.apply(n,Hn([this.value()],arguments))}}(a))}return n}function ze(){}function Be(n){return Wr(n)?Ot(n):It(n)}_=_?Jn.defaults(Yn.Object(),_,Jn.pick(Yn,$n)):Yn;
54
+ var De=_.Array,Me=_.Date,qe=_.Error,Ke=_.Function,Ve=_.Math,Ze=_.Number,Ye=_.Object,Ge=_.RegExp,Je=_.String,Xe=_.TypeError,He=De.prototype,Qe=qe.prototype,nu=Ye.prototype,tu=Je.prototype,ru=Ke.prototype.toString,eu=nu.hasOwnProperty,uu=0,ou=nu.toString,iu=Yn._,fu=Ge("^"+ru.call(eu).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),au=_.ArrayBuffer,cu=_.clearTimeout,lu=_.parseFloat,su=Ve.pow,pu=nu.propertyIsEnumerable,hu=Or(_,"Set"),_u=_.setTimeout,vu=He.splice,gu=_.Uint8Array,yu=Or(_,"WeakMap"),du=Ve.ceil,mu=Or(Ye,"create"),wu=Ve.floor,xu=Or(De,"isArray"),bu=_.isFinite,Au=Or(Ye,"keys"),ju=Ve.max,ku=Ve.min,Ou=Or(Me,"now"),Iu=_.parseInt,Ru=Ve.random,Eu=Ze.NEGATIVE_INFINITY,Cu=Ze.POSITIVE_INFINITY,Su=4294967294,Uu=2147483647,$u=9007199254740991,Wu=yu&&new yu,Fu={},Lu={};
55
+ Lu[X]=_.Float32Array,Lu[H]=_.Float64Array,Lu[Q]=_.Int8Array,Lu[nn]=_.Int16Array,Lu[tn]=_.Int32Array,Lu[rn]=gu,Lu[en]=_.Uint8ClampedArray,Lu[un]=_.Uint16Array,Lu[on]=_.Uint32Array;var Nu={};Nu[B]=Nu[M]=Nu[V]={constructor:true,toLocaleString:true,toString:true,valueOf:true},Nu[D]=Nu[G]={constructor:true,toString:true,valueOf:true},Nu[q]=Nu[K]=Nu[Y]={constructor:true,toString:true},Nu[Z]={constructor:true},Kn(Wn,function(n){for(var t in Nu)if(eu.call(Nu,t)){var r=Nu[t];r[n]=eu.call(r,n)}});var Tu=Nn.support={};!function(n){
56
+ function t(){this.x=n}var r={0:n,length:n},e=[];t.prototype={valueOf:n,y:n};for(var u in new t)e.push(u);Tu.enumErrorProps=pu.call(Qe,"message")||pu.call(Qe,"name"),Tu.enumPrototypes=pu.call(t,"prototype"),Tu.nonEnumShadows=!/valueOf/.test(e),Tu.ownLast="x"!=e[0],Tu.spliceObjects=(vu.call(r,0,1),!r[0]),Tu.unindexedChars="xx"!="x"[0]+Ye("x")[0]}(1,0),Nn.templateSettings={escape:_n,evaluate:vn,interpolate:gn,variable:"",imports:{_:Nn}};var Pu=function(){function n(){}return function(t){if(de(t)){n.prototype=t;
57
+ var r=new n;n.prototype=w}return r||{}}}(),zu=Yt(gt),Bu=Yt(yt,true),Du=Gt(),Mu=Gt(true),qu=Wu?function(n,t){return Wu.set(n,t),n}:Ne,Ku=Wu?function(n){return Wu.get(n)}:ze,Vu=Ot("length"),Zu=function(){var n=0,t=0;return function(r,e){var u=wo(),o=W-(u-t);if(t=u,0<o){if(++n>=$)return r}else n=0;return qu(r,e)}}(),Yu=pe(function(n,t){return h(n)&&Sr(n)?ct(n,_t(t,false,true)):[]}),Gu=er(),Ju=er(true),Xu=pe(function(n){for(var t=n.length,e=t,u=De(l),o=jr(),i=o==r,f=[];e--;){var a=n[e]=Sr(a=n[e])?a:[];u[e]=i&&120<=a.length&&mu&&hu?new Dn(e&&a):null;
58
+ }var i=n[0],c=-1,l=i?i.length:0,s=u[0];n:for(;++c<l;)if(a=i[c],0>(s?Mn(s,a):o(f,a,0))){for(e=t;--e;){var p=u[e];if(0>(p?Mn(p,a):o(n[e],a,0)))continue n}s&&s.push(a),f.push(a)}return f}),Hu=pe(function(t,r){r=_t(r);var e=ut(t,r);return Rt(t,r.sort(n)),e}),Qu=yr(),no=yr(true),to=pe(function(n){return Lt(_t(n,false,true))}),ro=pe(function(n,t){return Sr(n)?ct(n,t):[]}),eo=pe(Hr),uo=pe(function(n){var t=n.length,r=2<t?n[t-2]:w,e=1<t?n[t-1]:w;return 2<t&&typeof r=="function"?t-=2:(r=1<t&&typeof e=="function"?(--t,
59
+ e):w,e=w),n.length=t,Qr(n,r,e)}),oo=pe(function(n){return n=_t(n),this.thru(function(t){t=Wo(t)?t:[Dr(t)];for(var r=n,e=-1,u=t.length,o=-1,i=r.length,f=De(u+i);++e<u;)f[e]=t[e];for(;++o<i;)f[e++]=r[o];return f})}),io=pe(function(n,t){return Sr(n)&&(n=Br(n)),ut(n,_t(t))}),fo=Vt(function(n,t,r){eu.call(n,r)?++n[r]:n[r]=1}),ao=rr(zu),co=rr(Bu,true),lo=ir(Kn,zu),so=ir(function(n,t){for(var r=n.length;r--&&false!==t(n[r],r,n););return n},Bu),po=Vt(function(n,t,r){eu.call(n,r)?n[r].push(t):n[r]=[t]}),ho=Vt(function(n,t,r){
60
+ n[r]=t}),_o=pe(function(n,t,r){var e=-1,u=typeof t=="function",o=Wr(t),i=Sr(n)?De(n.length):[];return zu(n,function(n){var f=u?t:o&&null!=n?n[t]:w;i[++e]=f?f.apply(n,r):Cr(n,t,r)}),i}),vo=Vt(function(n,t,r){n[r?0:1].push(t)},function(){return[[],[]]}),go=pr(Qn,zu),yo=pr(function(n,t,r,e){var u=n.length;for(e&&u&&(r=n[--u]);u--;)r=t(r,n[u],u,n);return r},Bu),mo=pe(function(n,t){if(null==n)return[];var r=t[2];return r&&$r(t[0],t[1],r)&&(t.length=1),Wt(n,_t(t),[])}),wo=Ou||function(){return(new Me).getTime();
61
+ },xo=pe(function(n,t,r){var e=b;if(r.length)var u=v(r,xo.placeholder),e=e|I;return dr(n,e,t,r,u)}),bo=pe(function(n,t){t=t.length?_t(t):Re(n);for(var r=-1,e=t.length;++r<e;){var u=t[r];n[u]=dr(n[u],b,n)}return n}),Ao=pe(function(n,t,r){var e=b|A;if(r.length)var u=v(r,Ao.placeholder),e=e|I;return dr(t,e,n,r,u)}),jo=Qt(k),ko=Qt(O),Oo=pe(function(n,t){return at(n,1,t)}),Io=pe(function(n,t,r){return at(n,t,r)}),Ro=or(),Eo=or(true),Co=pe(function(n,t){if(t=_t(t),typeof n!="function"||!Vn(t,e))throw new Xe(T);
62
+ var r=t.length;return pe(function(e){for(var u=ku(e.length,r);u--;)e[u]=t[u](e[u]);return n.apply(this,e)})}),So=sr(I),Uo=sr(R),$o=pe(function(n,t){return dr(n,C,w,w,w,_t(t))}),Wo=xu||function(n){return h(n)&&Lr(n.length)&&ou.call(n)==B},Fo=Zt(kt),Lo=Zt(function(n,t,r){return r?rt(n,t,r):et(n,t)}),No=nr(Lo,function(n,t){return n===w?t:n}),To=nr(Fo,Nr),Po=ur(gt),zo=ur(yt),Bo=fr(Du),Do=fr(Mu),Mo=ar(gt),qo=ar(yt),Ko=Au?function(n){var t=null==n?w:n.constructor;return typeof t=="function"&&t.prototype===n||(typeof n=="function"?Nn.support.enumPrototypes:Sr(n))?zr(n):de(n)?Au(n):[];
63
+ }:zr,Vo=cr(true),Zo=cr(),Yo=pe(function(n,t){if(null==n)return{};if("function"!=typeof t[0])return t=Xn(_t(t),Je),Tr(n,ct(Ee(n),t));var r=Dt(t[0],t[1],3);return Pr(n,function(n,t,e){return!r(n,t,e)})}),Go=pe(function(n,t){return null==n?{}:"function"==typeof t[0]?Pr(n,Dt(t[0],t[1],3)):Tr(n,_t(t))}),Jo=Xt(function(n,t,r){return t=t.toLowerCase(),n+(r?t.charAt(0).toUpperCase()+t.slice(1):t)}),Xo=Xt(function(n,t,r){return n+(r?"-":"")+t.toLowerCase()}),Ho=lr(),Qo=lr(true),ni=Xt(function(n,t,r){return n+(r?"_":"")+t.toLowerCase();
64
+ }),ti=Xt(function(n,t,r){return n+(r?" ":"")+(t.charAt(0).toUpperCase()+t.slice(1))}),ri=pe(function(n,t){try{return n.apply(w,t)}catch(r){return ge(r)?r:new qe(r)}}),ei=pe(function(n,t){return function(r){return Cr(r,n,t)}}),ui=pe(function(n,t){return function(r){return Cr(n,r,t)}}),oi=gr("ceil"),ii=gr("floor"),fi=tr(he,Eu),ai=tr(ke,Cu),ci=gr("round");return Nn.prototype=Tn.prototype,Pn.prototype=Pu(Tn.prototype),Pn.prototype.constructor=Pn,zn.prototype=Pu(Tn.prototype),zn.prototype.constructor=zn,
65
+ Bn.prototype["delete"]=function(n){return this.has(n)&&delete this.__data__[n]},Bn.prototype.get=function(n){return"__proto__"==n?w:this.__data__[n]},Bn.prototype.has=function(n){return"__proto__"!=n&&eu.call(this.__data__,n)},Bn.prototype.set=function(n,t){return"__proto__"!=n&&(this.__data__[n]=t),this},Dn.prototype.push=function(n){var t=this.data;typeof n=="string"||de(n)?t.set.add(n):t.hash[n]=true},se.Cache=Bn,Nn.after=function(n,t){if(typeof t!="function"){if(typeof n!="function")throw new Xe(T);
66
+ var r=n;n=t,t=r}return n=bu(n=+n)?n:0,function(){return 1>--n?t.apply(this,arguments):void 0}},Nn.ary=function(n,t,r){return r&&$r(n,t,r)&&(t=w),t=n&&null==t?n.length:ju(+t||0,0),dr(n,E,w,w,w,w,t)},Nn.assign=Lo,Nn.at=io,Nn.before=ce,Nn.bind=xo,Nn.bindAll=bo,Nn.bindKey=Ao,Nn.callback=Le,Nn.chain=te,Nn.chunk=function(n,t,r){t=(r?$r(n,t,r):null==t)?1:ju(wu(t)||1,1),r=0;for(var e=n?n.length:0,u=-1,o=De(du(e/t));r<e;)o[++u]=St(n,r,r+=t);return o},Nn.compact=function(n){for(var t=-1,r=n?n.length:0,e=-1,u=[];++t<r;){
67
+ var o=n[t];o&&(u[++e]=o)}return u},Nn.constant=function(n){return function(){return n}},Nn.countBy=fo,Nn.create=function(n,t,r){var e=Pu(n);return r&&$r(n,t,r)&&(t=w),t?et(e,t):e},Nn.curry=jo,Nn.curryRight=ko,Nn.debounce=le,Nn.defaults=No,Nn.defaultsDeep=To,Nn.defer=Oo,Nn.delay=Io,Nn.difference=Yu,Nn.drop=Kr,Nn.dropRight=Vr,Nn.dropRightWhile=function(n,t,r){return n&&n.length?Tt(n,br(t,r,3),true,true):[]},Nn.dropWhile=function(n,t,r){return n&&n.length?Tt(n,br(t,r,3),true):[]},Nn.fill=function(n,t,r,e){
68
+ var u=n?n.length:0;if(!u)return[];for(r&&typeof r!="number"&&$r(n,t,r)&&(r=0,e=u),u=n.length,r=null==r?0:+r||0,0>r&&(r=-r>u?0:u+r),e=e===w||e>u?u:+e||0,0>e&&(e+=u),u=r>e?0:e>>>0,r>>>=0;r<u;)n[r++]=t;return n},Nn.filter=ue,Nn.flatten=function(n,t,r){var e=n?n.length:0;return r&&$r(n,t,r)&&(t=false),e?_t(n,t):[]},Nn.flattenDeep=function(n){return n&&n.length?_t(n,true):[]},Nn.flow=Ro,Nn.flowRight=Eo,Nn.forEach=lo,Nn.forEachRight=so,Nn.forIn=Bo,Nn.forInRight=Do,Nn.forOwn=Mo,Nn.forOwnRight=qo,Nn.functions=Re,
69
+ Nn.groupBy=po,Nn.indexBy=ho,Nn.initial=function(n){return Vr(n,1)},Nn.intersection=Xu,Nn.invert=function(n,t,r){r&&$r(n,t,r)&&(t=w),r=-1;for(var e=Ko(n),u=e.length,o={};++r<u;){var i=e[r],f=n[i];t?eu.call(o,f)?o[f].push(i):o[f]=[i]:o[f]=i}return o},Nn.invoke=_o,Nn.keys=Ko,Nn.keysIn=Ee,Nn.map=ie,Nn.mapKeys=Vo,Nn.mapValues=Zo,Nn.matches=Te,Nn.matchesProperty=function(n,t){return jt(n,ft(t,true))},Nn.memoize=se,Nn.merge=Fo,Nn.method=ei,Nn.methodOf=ui,Nn.mixin=Pe,Nn.modArgs=Co,Nn.negate=function(n){if(typeof n!="function")throw new Xe(T);
70
+ return function(){return!n.apply(this,arguments)}},Nn.omit=Yo,Nn.once=function(n){return ce(2,n)},Nn.pairs=Ce,Nn.partial=So,Nn.partialRight=Uo,Nn.partition=vo,Nn.pick=Go,Nn.pluck=function(n,t){return ie(n,Be(t))},Nn.property=Be,Nn.propertyOf=function(n){return function(t){return mt(n,Mr(t),t+"")}},Nn.pull=function(){var n=arguments,t=n[0];if(!t||!t.length)return t;for(var r=0,e=jr(),u=n.length;++r<u;)for(var o=0,i=n[r];-1<(o=e(t,i,o));)vu.call(t,o,1);return t},Nn.pullAt=Hu,Nn.range=function(n,t,r){
71
+ r&&$r(n,t,r)&&(t=r=w),n=+n||0,r=null==r?1:+r||0,null==t?(t=n,n=0):t=+t||0;var e=-1;t=ju(du((t-n)/(r||1)),0);for(var u=De(t);++e<t;)u[e]=n,n+=r;return u},Nn.rearg=$o,Nn.reject=function(n,t,r){var e=Wo(n)?Zn:pt;return t=br(t,r,3),e(n,function(n,r,e){return!t(n,r,e)})},Nn.remove=function(n,t,r){var e=[];if(!n||!n.length)return e;var u=-1,o=[],i=n.length;for(t=br(t,r,3);++u<i;)r=n[u],t(r,u,n)&&(e.push(r),o.push(u));return Rt(n,o),e},Nn.rest=Jr,Nn.restParam=pe,Nn.set=function(n,t,r){if(null==n)return n;
72
+ var e=t+"";t=null!=n[e]||Wr(t,n)?[e]:Mr(t);for(var e=-1,u=t.length,o=u-1,i=n;null!=i&&++e<u;){var f=t[e];de(i)&&(e==o?i[f]=r:null==i[f]&&(i[f]=Ur(t[e+1])?[]:{})),i=i[f]}return n},Nn.shuffle=function(n){return fe(n,Cu)},Nn.slice=function(n,t,r){var e=n?n.length:0;return e?(r&&typeof r!="number"&&$r(n,t,r)&&(t=0,r=e),St(n,t,r)):[]},Nn.sortBy=function(n,t,r){if(null==n)return[];r&&$r(n,t,r)&&(t=w);var e=-1;return t=br(t,r,3),n=bt(n,function(n,r,u){return{a:t(n,r,u),b:++e,c:n}}),$t(n,f)},Nn.sortByAll=mo,
73
+ Nn.sortByOrder=function(n,t,r,e){return null==n?[]:(e&&$r(t,r,e)&&(r=w),Wo(t)||(t=null==t?[]:[t]),Wo(r)||(r=null==r?[]:[r]),Wt(n,t,r))},Nn.spread=function(n){if(typeof n!="function")throw new Xe(T);return function(t){return n.apply(this,t)}},Nn.take=function(n,t,r){return n&&n.length?((r?$r(n,t,r):null==t)&&(t=1),St(n,0,0>t?0:t)):[]},Nn.takeRight=function(n,t,r){var e=n?n.length:0;return e?((r?$r(n,t,r):null==t)&&(t=1),t=e-(+t||0),St(n,0>t?0:t)):[]},Nn.takeRightWhile=function(n,t,r){return n&&n.length?Tt(n,br(t,r,3),false,true):[];
74
+ },Nn.takeWhile=function(n,t,r){return n&&n.length?Tt(n,br(t,r,3)):[]},Nn.tap=function(n,t,r){return t.call(r,n),n},Nn.throttle=function(n,t,r){var e=true,u=true;if(typeof n!="function")throw new Xe(T);return false===r?e=false:de(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),le(n,t,{leading:e,maxWait:+t,trailing:u})},Nn.thru=re,Nn.times=function(n,t,r){if(n=wu(n),1>n||!bu(n))return[];var e=-1,u=De(ku(n,4294967295));for(t=Dt(t,r,1);++e<n;)4294967295>e?u[e]=t(e):t(e);return u},Nn.toArray=Oe,
75
+ Nn.toPlainObject=Ie,Nn.transform=function(n,t,r,e){var u=Wo(n)||je(n);return t=br(t,e,4),null==r&&(u||de(n)?(e=n.constructor,r=u?Wo(n)?new e:[]:Pu(ye(e)?e.prototype:w)):r={}),(u?Kn:gt)(n,function(n,e,u){return t(r,n,e,u)}),r},Nn.union=to,Nn.uniq=Xr,Nn.unzip=Hr,Nn.unzipWith=Qr,Nn.values=Se,Nn.valuesIn=function(n){return Nt(n,Ee(n))},Nn.where=function(n,t){return ue(n,At(t))},Nn.without=ro,Nn.wrap=function(n,t){return t=null==t?Ne:t,dr(t,I,w,[n],[])},Nn.xor=function(){for(var n=-1,t=arguments.length;++n<t;){
76
+ var r=arguments[n];if(Sr(r))var e=e?Hn(ct(e,r),ct(r,e)):r}return e?Lt(e):[]},Nn.zip=eo,Nn.zipObject=ne,Nn.zipWith=uo,Nn.backflow=Eo,Nn.collect=ie,Nn.compose=Eo,Nn.each=lo,Nn.eachRight=so,Nn.extend=Lo,Nn.iteratee=Le,Nn.methods=Re,Nn.object=ne,Nn.select=ue,Nn.tail=Jr,Nn.unique=Xr,Pe(Nn,Nn),Nn.add=function(n,t){return(+n||0)+(+t||0)},Nn.attempt=ri,Nn.camelCase=Jo,Nn.capitalize=function(n){return(n=u(n))&&n.charAt(0).toUpperCase()+n.slice(1)},Nn.ceil=oi,Nn.clone=function(n,t,r,e){return t&&typeof t!="boolean"&&$r(n,t,r)?t=false:typeof t=="function"&&(e=r,
77
+ r=t,t=false),typeof r=="function"?ft(n,t,Dt(r,e,1)):ft(n,t)},Nn.cloneDeep=function(n,t,r){return typeof t=="function"?ft(n,true,Dt(t,r,1)):ft(n,true)},Nn.deburr=Ue,Nn.endsWith=function(n,t,r){n=u(n),t+="";var e=n.length;return r=r===w?e:ku(0>r?0:+r||0,e),r-=t.length,0<=r&&n.indexOf(t,r)==r},Nn.escape=function(n){return(n=u(n))&&hn.test(n)?n.replace(sn,c):n},Nn.escapeRegExp=function(n){return(n=u(n))&&xn.test(n)?n.replace(wn,l):n||"(?:)"},Nn.every=ee,Nn.find=ao,Nn.findIndex=Gu,Nn.findKey=Po,Nn.findLast=co,
78
+ Nn.findLastIndex=Ju,Nn.findLastKey=zo,Nn.findWhere=function(n,t){return ao(n,At(t))},Nn.first=Zr,Nn.floor=ii,Nn.get=function(n,t,r){return n=null==n?w:mt(n,Mr(t),t+""),n===w?r:n},Nn.gt=he,Nn.gte=function(n,t){return n>=t},Nn.has=function(n,t){if(null==n)return false;var r=eu.call(n,t);if(!r&&!Wr(t)){if(t=Mr(t),n=1==t.length?n:mt(n,St(t,0,-1)),null==n)return false;t=Gr(t),r=eu.call(n,t)}return r||Lr(n.length)&&Ur(t,n.length)&&(Wo(n)||_e(n)||Ae(n))},Nn.identity=Ne,Nn.includes=oe,Nn.indexOf=Yr,Nn.inRange=function(n,t,r){
79
+ return t=+t||0,r===w?(r=t,t=0):r=+r||0,n>=ku(t,r)&&n<ju(t,r)},Nn.isArguments=_e,Nn.isArray=Wo,Nn.isBoolean=function(n){return true===n||false===n||h(n)&&ou.call(n)==D},Nn.isDate=function(n){return h(n)&&ou.call(n)==M},Nn.isElement=function(n){return!!n&&1===n.nodeType&&h(n)&&!xe(n)},Nn.isEmpty=function(n){return null==n?true:Sr(n)&&(Wo(n)||Ae(n)||_e(n)||h(n)&&ye(n.splice))?!n.length:!Ko(n).length},Nn.isEqual=ve,Nn.isError=ge,Nn.isFinite=function(n){return typeof n=="number"&&bu(n)},Nn.isFunction=ye,Nn.isMatch=function(n,t,r,e){
80
+ return r=typeof r=="function"?Dt(r,e,3):w,xt(n,kr(t),r)},Nn.isNaN=function(n){return we(n)&&n!=+n},Nn.isNative=me,Nn.isNull=function(n){return null===n},Nn.isNumber=we,Nn.isObject=de,Nn.isPlainObject=xe,Nn.isRegExp=be,Nn.isString=Ae,Nn.isTypedArray=je,Nn.isUndefined=function(n){return n===w},Nn.kebabCase=Xo,Nn.last=Gr,Nn.lastIndexOf=function(n,t,r){var e=n?n.length:0;if(!e)return-1;var u=e;if(typeof r=="number")u=(0>r?ju(e+r,0):ku(r||0,e-1))+1;else if(r)return u=zt(n,t,true)-1,n=n[u],(t===t?t===n:n!==n)?u:-1;
81
+ if(t!==t)return p(n,u,true);for(;u--;)if(n[u]===t)return u;return-1},Nn.lt=ke,Nn.lte=function(n,t){return n<=t},Nn.max=fi,Nn.min=ai,Nn.noConflict=function(){return Yn._=iu,this},Nn.noop=ze,Nn.now=wo,Nn.pad=function(n,t,r){n=u(n),t=+t;var e=n.length;return e<t&&bu(t)?(e=(t-e)/2,t=wu(e),e=du(e),r=_r("",e,r),r.slice(0,t)+n+r):n},Nn.padLeft=Ho,Nn.padRight=Qo,Nn.parseInt=function(n,t,r){return(r?$r(n,t,r):null==t)?t=0:t&&(t=+t),n=We(n),Iu(n,t||(On.test(n)?16:10))},Nn.random=function(n,t,r){r&&$r(n,t,r)&&(t=r=w);
82
+ var e=null==n,u=null==t;return null==r&&(u&&typeof n=="boolean"?(r=n,n=1):typeof t=="boolean"&&(r=t,u=true)),e&&u&&(t=1,u=false),n=+n||0,u?(t=n,n=0):t=+t||0,r||n%1||t%1?(r=Ru(),ku(n+r*(t-n+lu("1e-"+((r+"").length-1))),t)):Et(n,t)},Nn.reduce=go,Nn.reduceRight=yo,Nn.repeat=$e,Nn.result=function(n,t,r){var e=null==n?w:Dr(n)[t];return e===w&&(null==n||Wr(t,n)||(t=Mr(t),n=1==t.length?n:mt(n,St(t,0,-1)),e=null==n?w:Dr(n)[Gr(t)]),e=e===w?r:e),ye(e)?e.call(n):e},Nn.round=ci,Nn.runInContext=m,Nn.size=function(n){
83
+ var t=n?Vu(n):0;return Lr(t)?t:Ko(n).length},Nn.snakeCase=ni,Nn.some=ae,Nn.sortedIndex=Qu,Nn.sortedLastIndex=no,Nn.startCase=ti,Nn.startsWith=function(n,t,r){return n=u(n),r=null==r?0:ku(0>r?0:+r||0,n.length),n.lastIndexOf(t,r)==r},Nn.sum=function(n,t,r){if(r&&$r(n,t,r)&&(t=w),t=br(t,r,3),1==t.length){n=Wo(n)?n:Br(n),r=n.length;for(var e=0;r--;)e+=+t(n[r])||0;n=e}else n=Ft(n,t);return n},Nn.template=function(n,t,r){var e=Nn.templateSettings;r&&$r(n,t,r)&&(t=r=w),n=u(n),t=rt(et({},r||t),e,tt),r=rt(et({},t.imports),e.imports,tt);
84
+ var o,i,f=Ko(r),a=Nt(r,f),c=0;r=t.interpolate||Cn;var l="__p+='";r=Ge((t.escape||Cn).source+"|"+r.source+"|"+(r===gn?jn:Cn).source+"|"+(t.evaluate||Cn).source+"|$","g");var p="sourceURL"in t?"//# sourceURL="+t.sourceURL+"\n":"";if(n.replace(r,function(t,r,e,u,f,a){return e||(e=u),l+=n.slice(c,a).replace(Sn,s),r&&(o=true,l+="'+__e("+r+")+'"),f&&(i=true,l+="';"+f+";\n__p+='"),e&&(l+="'+((__t=("+e+"))==null?'':__t)+'"),c=a+t.length,t}),l+="';",(t=t.variable)||(l="with(obj){"+l+"}"),l=(i?l.replace(fn,""):l).replace(an,"$1").replace(cn,"$1;"),
85
+ l="function("+(t||"obj")+"){"+(t?"":"obj||(obj={});")+"var __t,__p=''"+(o?",__e=_.escape":"")+(i?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+l+"return __p}",t=ri(function(){return Ke(f,p+"return "+l).apply(w,a)}),t.source=l,ge(t))throw t;return t},Nn.trim=We,Nn.trimLeft=function(n,t,r){var e=n;return(n=u(n))?n.slice((r?$r(e,t,r):null==t)?g(n):o(n,t+"")):n},Nn.trimRight=function(n,t,r){var e=n;return(n=u(n))?(r?$r(e,t,r):null==t)?n.slice(0,y(n)+1):n.slice(0,i(n,t+"")+1):n;
86
+ },Nn.trunc=function(n,t,r){r&&$r(n,t,r)&&(t=w);var e=S;if(r=U,null!=t)if(de(t)){var o="separator"in t?t.separator:o,e="length"in t?+t.length||0:e;r="omission"in t?u(t.omission):r}else e=+t||0;if(n=u(n),e>=n.length)return n;if(e-=r.length,1>e)return r;if(t=n.slice(0,e),null==o)return t+r;if(be(o)){if(n.slice(e).search(o)){var i,f=n.slice(0,e);for(o.global||(o=Ge(o.source,(kn.exec(o)||"")+"g")),o.lastIndex=0;n=o.exec(f);)i=n.index;t=t.slice(0,null==i?e:i)}}else n.indexOf(o,e)!=e&&(o=t.lastIndexOf(o),
87
+ -1<o&&(t=t.slice(0,o)));return t+r},Nn.unescape=function(n){return(n=u(n))&&pn.test(n)?n.replace(ln,d):n},Nn.uniqueId=function(n){var t=++uu;return u(n)+t},Nn.words=Fe,Nn.all=ee,Nn.any=ae,Nn.contains=oe,Nn.eq=ve,Nn.detect=ao,Nn.foldl=go,Nn.foldr=yo,Nn.head=Zr,Nn.include=oe,Nn.inject=go,Pe(Nn,function(){var n={};return gt(Nn,function(t,r){Nn.prototype[r]||(n[r]=t)}),n}(),false),Nn.sample=fe,Nn.prototype.sample=function(n){return this.__chain__||null!=n?this.thru(function(t){return fe(t,n)}):fe(this.value());
88
+ },Nn.VERSION=x,Kn("bind bindKey curry curryRight partial partialRight".split(" "),function(n){Nn[n].placeholder=Nn}),Kn(["drop","take"],function(n,t){zn.prototype[n]=function(r){var e=this.__filtered__;if(e&&!t)return new zn(this);r=null==r?1:ju(wu(r)||0,0);var u=this.clone();return e?u.__takeCount__=ku(u.__takeCount__,r):u.__views__.push({size:r,type:n+(0>u.__dir__?"Right":"")}),u},zn.prototype[n+"Right"]=function(t){return this.reverse()[n](t).reverse()}}),Kn(["filter","map","takeWhile"],function(n,t){
89
+ var r=t+1,e=r!=N;zn.prototype[n]=function(n,t){var u=this.clone();return u.__iteratees__.push({iteratee:br(n,t,1),type:r}),u.__filtered__=u.__filtered__||e,u}}),Kn(["first","last"],function(n,t){var r="take"+(t?"Right":"");zn.prototype[n]=function(){return this[r](1).value()[0]}}),Kn(["initial","rest"],function(n,t){var r="drop"+(t?"":"Right");zn.prototype[n]=function(){return this.__filtered__?new zn(this):this[r](1)}}),Kn(["pluck","where"],function(n,t){var r=t?"filter":"map",e=t?At:Be;zn.prototype[n]=function(n){
90
+ return this[r](e(n))}}),zn.prototype.compact=function(){return this.filter(Ne)},zn.prototype.reject=function(n,t){return n=br(n,t,1),this.filter(function(t){return!n(t)})},zn.prototype.slice=function(n,t){n=null==n?0:+n||0;var r=this;return r.__filtered__&&(0<n||0>t)?new zn(r):(0>n?r=r.takeRight(-n):n&&(r=r.drop(n)),t!==w&&(t=+t||0,r=0>t?r.dropRight(-t):r.take(t-n)),r)},zn.prototype.takeRightWhile=function(n,t){return this.reverse().takeWhile(n,t).reverse()},zn.prototype.toArray=function(){return this.take(Cu);
91
+ },gt(zn.prototype,function(n,t){var r=/^(?:filter|map|reject)|While$/.test(t),e=/^(?:first|last)$/.test(t),u=Nn[e?"take"+("last"==t?"Right":""):t];u&&(Nn.prototype[t]=function(){function t(n){return e&&i?u(n,1)[0]:u.apply(w,Hn([n],o))}var o=e?[1]:arguments,i=this.__chain__,f=this.__wrapped__,a=!!this.__actions__.length,c=f instanceof zn,l=o[0],s=c||Wo(f);return s&&r&&typeof l=="function"&&1!=l.length&&(c=s=false),l={func:re,args:[t],thisArg:w},a=c&&!a,e&&!i?a?(f=f.clone(),f.__actions__.push(l),n.call(f)):u.call(w,this.value())[0]:!e&&s?(f=a?f:new zn(this),
92
+ f=n.apply(f,o),f.__actions__.push(l),new Pn(f,i)):this.thru(t)})}),Kn("join pop push replace shift sort splice split unshift".split(" "),function(n){var t=(/^(?:replace|split)$/.test(n)?tu:He)[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:join|pop|replace|shift)$/.test(n),u=Tu.spliceObjects||!/^(?:pop|shift|splice)$/.test(n)?t:function(){var n=t.apply(this,arguments);return 0===this.length&&delete this[0],n};Nn.prototype[n]=function(){var n=arguments;return e&&!this.__chain__?u.apply(this.value(),n):this[r](function(t){
93
+ return u.apply(t,n)})}}),gt(zn.prototype,function(n,t){var r=Nn[t];if(r){var e=r.name;(Fu[e]||(Fu[e]=[])).push({name:t,func:r})}}),Fu[hr(w,A).name]=[{name:"wrapper",func:w}],zn.prototype.clone=function(){var n=new zn(this.__wrapped__);return n.__actions__=qn(this.__actions__),n.__dir__=this.__dir__,n.__filtered__=this.__filtered__,n.__iteratees__=qn(this.__iteratees__),n.__takeCount__=this.__takeCount__,n.__views__=qn(this.__views__),n},zn.prototype.reverse=function(){if(this.__filtered__){var n=new zn(this);
94
+ n.__dir__=-1,n.__filtered__=true}else n=this.clone(),n.__dir__*=-1;return n},zn.prototype.value=function(){var n,t=this.__wrapped__.value(),r=this.__dir__,e=Wo(t),u=0>r,o=e?t.length:0;n=o;for(var i=this.__views__,f=0,a=-1,c=i.length;++a<c;){var l=i[a],s=l.size;switch(l.type){case"drop":f+=s;break;case"dropRight":n-=s;break;case"take":n=ku(n,f+s);break;case"takeRight":f=ju(f,n-s)}}if(n={start:f,end:n},i=n.start,f=n.end,n=f-i,i=u?f:i-1,f=this.__iteratees__,a=f.length,c=0,l=ku(n,this.__takeCount__),!e||o<F||o==n&&l==n)return Pt(u&&e?t.reverse():t,this.__actions__);
95
+ e=[];n:for(;n--&&c<l;){for(i+=r,u=-1,o=t[i];++u<a;){var p=f[u],s=p.type,p=p.iteratee(o);if(s==N)o=p;else if(!p){if(s==L)continue n;break n}}e[c++]=o}return e},Nn.prototype.chain=function(){return te(this)},Nn.prototype.commit=function(){return new Pn(this.value(),this.__chain__)},Nn.prototype.concat=oo,Nn.prototype.plant=function(n){for(var t,r=this;r instanceof Tn;){var e=qr(r);t?u.__wrapped__=e:t=e;var u=e,r=r.__wrapped__}return u.__wrapped__=n,t},Nn.prototype.reverse=function(){function n(n){return r&&0>r.__dir__?n:n.reverse();
96
+ }var t=this.__wrapped__;if(t instanceof zn){var r=t;return this.__actions__.length&&(r=new zn(this)),r=r.reverse(),r.__actions__.push({func:re,args:[n],thisArg:w}),new Pn(r,this.__chain__)}return this.thru(n)},Nn.prototype.toString=function(){return this.value()+""},Nn.prototype.run=Nn.prototype.toJSON=Nn.prototype.valueOf=Nn.prototype.value=function(){return Pt(this.__wrapped__,this.__actions__)},Nn.prototype.collect=Nn.prototype.map,Nn.prototype.head=Nn.prototype.first,Nn.prototype.select=Nn.prototype.filter,
97
+ Nn.prototype.tail=Nn.prototype.rest,Nn}var w,x="3.10.0",b=1,A=2,j=4,k=8,O=16,I=32,R=64,E=128,C=256,S=30,U="...",$=150,W=16,F=200,L=1,N=2,T="Expected a function",P="__lodash_placeholder__",z="[object Arguments]",B="[object Array]",D="[object Boolean]",M="[object Date]",q="[object Error]",K="[object Function]",V="[object Number]",Z="[object Object]",Y="[object RegExp]",G="[object String]",J="[object ArrayBuffer]",X="[object Float32Array]",H="[object Float64Array]",Q="[object Int8Array]",nn="[object Int16Array]",tn="[object Int32Array]",rn="[object Uint8Array]",en="[object Uint8ClampedArray]",un="[object Uint16Array]",on="[object Uint32Array]",fn=/\b__p\+='';/g,an=/\b(__p\+=)''\+/g,cn=/(__e\(.*?\)|\b__t\))\+'';/g,ln=/&(?:amp|lt|gt|quot|#39|#96);/g,sn=/[&<>"'`]/g,pn=RegExp(ln.source),hn=RegExp(sn.source),_n=/<%-([\s\S]+?)%>/g,vn=/<%([\s\S]+?)%>/g,gn=/<%=([\s\S]+?)%>/g,yn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/,dn=/^\w*$/,mn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g,wn=/^[:!,]|[\\^$.*+?()[\]{}|\/]|(^[0-9a-fA-Fnrtuvx])|([\n\r\u2028\u2029])/g,xn=RegExp(wn.source),bn=/[\u0300-\u036f\ufe20-\ufe23]/g,An=/\\(\\)?/g,jn=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,kn=/\w*$/,On=/^0[xX]/,In=/^\[object .+?Constructor\]$/,Rn=/^\d+$/,En=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,Cn=/($^)/,Sn=/['\n\r\u2028\u2029\\]/g,Un=RegExp("[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?=[A-Z\\xc0-\\xd6\\xd8-\\xde][a-z\\xdf-\\xf6\\xf8-\\xff]+)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+|[A-Z\\xc0-\\xd6\\xd8-\\xde]+|[0-9]+","g"),$n="Array ArrayBuffer Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Math Number Object RegExp Set String _ clearTimeout isFinite parseFloat parseInt setTimeout TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap".split(" "),Wn="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),Fn={};
98
+ Fn[X]=Fn[H]=Fn[Q]=Fn[nn]=Fn[tn]=Fn[rn]=Fn[en]=Fn[un]=Fn[on]=true,Fn[z]=Fn[B]=Fn[J]=Fn[D]=Fn[M]=Fn[q]=Fn[K]=Fn["[object Map]"]=Fn[V]=Fn[Z]=Fn[Y]=Fn["[object Set]"]=Fn[G]=Fn["[object WeakMap]"]=false;var Ln={};Ln[z]=Ln[B]=Ln[J]=Ln[D]=Ln[M]=Ln[X]=Ln[H]=Ln[Q]=Ln[nn]=Ln[tn]=Ln[V]=Ln[Z]=Ln[Y]=Ln[G]=Ln[rn]=Ln[en]=Ln[un]=Ln[on]=true,Ln[q]=Ln[K]=Ln["[object Map]"]=Ln["[object Set]"]=Ln["[object WeakMap]"]=false;var Nn={"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a",
99
+ "\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",
100
+ "\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss"},Tn={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","`":"&#96;"},Pn={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'","&#96;":"`"},zn={"function":true,object:true},Bn={0:"x30",1:"x31",2:"x32",3:"x33",4:"x34",5:"x35",6:"x36",7:"x37",8:"x38",9:"x39",A:"x41",B:"x42",C:"x43",D:"x44",E:"x45",F:"x46",a:"x61",b:"x62",c:"x63",d:"x64",e:"x65",f:"x66",n:"x6e",r:"x72",t:"x74",u:"x75",v:"x76",x:"x78"},Dn={"\\":"\\",
101
+ "'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Mn=zn[typeof exports]&&exports&&!exports.nodeType&&exports,qn=zn[typeof module]&&module&&!module.nodeType&&module,Kn=zn[typeof self]&&self&&self.Object&&self,Vn=zn[typeof window]&&window&&window.Object&&window,Zn=qn&&qn.exports===Mn&&Mn,Yn=Mn&&qn&&typeof global=="object"&&global&&global.Object&&global||Vn!==(this&&this.window)&&Vn||Kn||this,Gn=function(){try{Object({toString:0}+"")}catch(n){return function(){return false}}return function(n){
102
+ return typeof n.toString!="function"&&typeof(n+"")=="string"}}(),Jn=m();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(Yn._=Jn, define(function(){return Jn})):Mn&&qn?Zn?(qn.exports=Jn)._=Jn:Mn._=Jn:Yn._=Jn}).call(this);
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * lodash 3.9.3 (Custom Build) <https://lodash.com/>
3
+ * lodash 3.10.0 (Custom Build) <https://lodash.com/>
4
4
  * Build: `lodash modern -o ./lodash.js`
5
5
  * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
6
6
  * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
@@ -13,7 +13,7 @@
13
13
  var undefined;
14
14
 
15
15
  /** Used as the semantic version number. */
16
- var VERSION = '3.9.3';
16
+ var VERSION = '3.10.0';
17
17
 
18
18
  /** Used to compose bitmasks for wrapper metadata. */
19
19
  var BIND_FLAG = 1,
@@ -34,9 +34,11 @@
34
34
  var HOT_COUNT = 150,
35
35
  HOT_SPAN = 16;
36
36
 
37
+ /** Used as the size to enable large array optimizations. */
38
+ var LARGE_ARRAY_SIZE = 200;
39
+
37
40
  /** Used to indicate the type of lazy iteratees. */
38
- var LAZY_DROP_WHILE_FLAG = 0,
39
- LAZY_FILTER_FLAG = 1,
41
+ var LAZY_FILTER_FLAG = 1,
40
42
  LAZY_MAP_FLAG = 2;
41
43
 
42
44
  /** Used as the `TypeError` message for "Functions" methods. */
@@ -93,11 +95,10 @@
93
95
  rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g;
94
96
 
95
97
  /**
96
- * Used to match `RegExp` [special characters](http://www.regular-expressions.info/characters.html#special).
97
- * In addition to special characters the forward slash is escaped to allow for
98
- * easier `eval` use and `Function` compilation.
98
+ * Used to match `RegExp` [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns)
99
+ * and those outlined by [`EscapeRegExpPattern`](http://ecma-international.org/ecma-262/6.0/#sec-escaperegexppattern).
99
100
  */
100
- var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g,
101
+ var reRegExpChars = /^[:!,]|[\\^$.*+?()[\]{}|\/]|(^[0-9a-fA-Fnrtuvx])|([\n\r\u2028\u2029])/g,
101
102
  reHasRegExpChars = RegExp(reRegExpChars.source);
102
103
 
103
104
  /** Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). */
@@ -106,7 +107,7 @@
106
107
  /** Used to match backslashes in property paths. */
107
108
  var reEscapeChar = /\\(\\)?/g;
108
109
 
109
- /** Used to match [ES template delimiters](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-template-literal-lexical-components). */
110
+ /** Used to match [ES template delimiters](http://ecma-international.org/ecma-262/6.0/#sec-template-literal-lexical-components). */
110
111
  var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
111
112
 
112
113
  /** Used to match `RegExp` flags from their coerced string values. */
@@ -138,25 +139,13 @@
138
139
  return RegExp(upper + '+(?=' + upper + lower + ')|' + upper + '?' + lower + '|' + upper + '+|[0-9]+', 'g');
139
140
  }());
140
141
 
141
- /** Used to detect and test for whitespace. */
142
- var whitespace = (
143
- // Basic whitespace characters.
144
- ' \t\x0b\f\xa0\ufeff' +
145
-
146
- // Line terminators.
147
- '\n\r\u2028\u2029' +
148
-
149
- // Unicode category "Zs" space separators.
150
- '\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000'
151
- );
152
-
153
142
  /** Used to assign default `context` object properties. */
154
143
  var contextProps = [
155
144
  'Array', 'ArrayBuffer', 'Date', 'Error', 'Float32Array', 'Float64Array',
156
145
  'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Math', 'Number',
157
- 'Object', 'RegExp', 'Set', 'String', '_', 'clearTimeout', 'document',
158
- 'isFinite', 'parseFloat', 'parseInt', 'setTimeout', 'TypeError', 'Uint8Array',
159
- 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap', 'window'
146
+ 'Object', 'RegExp', 'Set', 'String', '_', 'clearTimeout', 'isFinite',
147
+ 'parseFloat', 'parseInt', 'setTimeout', 'TypeError', 'Uint8Array',
148
+ 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap'
160
149
  ];
161
150
 
162
151
  /** Used to make template sourceURLs easier to identify. */
@@ -192,13 +181,6 @@
192
181
  cloneableTags[mapTag] = cloneableTags[setTag] =
193
182
  cloneableTags[weakMapTag] = false;
194
183
 
195
- /** Used as an internal `_.debounce` options object by `_.throttle`. */
196
- var debounceOptions = {
197
- 'leading': false,
198
- 'maxWait': 0,
199
- 'trailing': false
200
- };
201
-
202
184
  /** Used to map latin-1 supplementary letters to basic latin letters. */
203
185
  var deburredLetters = {
204
186
  '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A',
@@ -246,6 +228,15 @@
246
228
  'object': true
247
229
  };
248
230
 
231
+ /** Used to escape characters for inclusion in compiled regexes. */
232
+ var regexpEscapes = {
233
+ '0': 'x30', '1': 'x31', '2': 'x32', '3': 'x33', '4': 'x34',
234
+ '5': 'x35', '6': 'x36', '7': 'x37', '8': 'x38', '9': 'x39',
235
+ 'A': 'x41', 'B': 'x42', 'C': 'x43', 'D': 'x44', 'E': 'x45', 'F': 'x46',
236
+ 'a': 'x61', 'b': 'x62', 'c': 'x63', 'd': 'x64', 'e': 'x65', 'f': 'x66',
237
+ 'n': 'x6e', 'r': 'x72', 't': 'x74', 'u': 'x75', 'v': 'x76', 'x': 'x78'
238
+ };
239
+
249
240
  /** Used to escape characters for inclusion in compiled string literals. */
250
241
  var stringEscapes = {
251
242
  '\\': '\\',
@@ -386,9 +377,6 @@
386
377
  * @returns {string} Returns the string.
387
378
  */
388
379
  function baseToString(value) {
389
- if (typeof value == 'string') {
390
- return value;
391
- }
392
380
  return value == null ? '' : (value + '');
393
381
  }
394
382
 
@@ -430,8 +418,8 @@
430
418
  * sort them in ascending order.
431
419
  *
432
420
  * @private
433
- * @param {Object} object The object to compare to `other`.
434
- * @param {Object} other The object to compare to `object`.
421
+ * @param {Object} object The object to compare.
422
+ * @param {Object} other The other object to compare.
435
423
  * @returns {number} Returns the sort order indicator for `object`.
436
424
  */
437
425
  function compareAscending(object, other) {
@@ -439,16 +427,16 @@
439
427
  }
440
428
 
441
429
  /**
442
- * Used by `_.sortByOrder` to compare multiple properties of each element
443
- * in a collection and stable sort them in the following order:
430
+ * Used by `_.sortByOrder` to compare multiple properties of a value to another
431
+ * and stable sort them.
444
432
  *
445
- * If `orders` is unspecified, sort in ascending order for all properties.
446
- * Otherwise, for each property, sort in ascending order if its corresponding value in
447
- * orders is true, and descending order if false.
433
+ * If `orders` is unspecified, all valuess are sorted in ascending order. Otherwise,
434
+ * a value is sorted in ascending order if its corresponding order is "asc", and
435
+ * descending if "desc".
448
436
  *
449
437
  * @private
450
- * @param {Object} object The object to compare to `other`.
451
- * @param {Object} other The object to compare to `object`.
438
+ * @param {Object} object The object to compare.
439
+ * @param {Object} other The other object to compare.
452
440
  * @param {boolean[]} orders The order to sort by for each property.
453
441
  * @returns {number} Returns the sort order indicator for `object`.
454
442
  */
@@ -465,7 +453,8 @@
465
453
  if (index >= ordersLength) {
466
454
  return result;
467
455
  }
468
- return result * (orders[index] ? 1 : -1);
456
+ var order = orders[index];
457
+ return result * ((order === 'asc' || order === true) ? 1 : -1);
469
458
  }
470
459
  }
471
460
  // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications
@@ -501,8 +490,25 @@
501
490
  }
502
491
 
503
492
  /**
504
- * Used by `_.template` to escape characters for inclusion in compiled
505
- * string literals.
493
+ * Used by `_.escapeRegExp` to escape characters for inclusion in compiled regexes.
494
+ *
495
+ * @private
496
+ * @param {string} chr The matched character to escape.
497
+ * @param {string} leadingChar The capture group for a leading character.
498
+ * @param {string} whitespaceChar The capture group for a whitespace character.
499
+ * @returns {string} Returns the escaped character.
500
+ */
501
+ function escapeRegExpChar(chr, leadingChar, whitespaceChar) {
502
+ if (leadingChar) {
503
+ chr = regexpEscapes[chr];
504
+ } else if (whitespaceChar) {
505
+ chr = stringEscapes[chr];
506
+ }
507
+ return '\\' + chr;
508
+ }
509
+
510
+ /**
511
+ * Used by `_.template` to escape characters for inclusion in compiled string literals.
506
512
  *
507
513
  * @private
508
514
  * @param {string} chr The matched character to escape.
@@ -713,9 +719,6 @@
713
719
  objectProto = Object.prototype,
714
720
  stringProto = String.prototype;
715
721
 
716
- /** Used to detect DOM support. */
717
- var document = (document = context.window) ? document.document : null;
718
-
719
722
  /** Used to resolve the decompiled source of functions. */
720
723
  var fnToString = Function.prototype.toString;
721
724
 
@@ -726,56 +729,42 @@
726
729
  var idCounter = 0;
727
730
 
728
731
  /**
729
- * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
732
+ * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
730
733
  * of values.
731
734
  */
732
735
  var objToString = objectProto.toString;
733
736
 
734
737
  /** Used to restore the original `_` reference in `_.noConflict`. */
735
- var oldDash = context._;
738
+ var oldDash = root._;
736
739
 
737
740
  /** Used to detect if a method is native. */
738
741
  var reIsNative = RegExp('^' +
739
- escapeRegExp(fnToString.call(hasOwnProperty))
742
+ fnToString.call(hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g, '\\$&')
740
743
  .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
741
744
  );
742
745
 
743
746
  /** Native method references. */
744
- var ArrayBuffer = getNative(context, 'ArrayBuffer'),
745
- bufferSlice = getNative(ArrayBuffer && new ArrayBuffer(0), 'slice'),
746
- ceil = Math.ceil,
747
+ var ArrayBuffer = context.ArrayBuffer,
747
748
  clearTimeout = context.clearTimeout,
748
- floor = Math.floor,
749
- getPrototypeOf = getNative(Object, 'getPrototypeOf'),
750
749
  parseFloat = context.parseFloat,
751
- push = arrayProto.push,
750
+ pow = Math.pow,
751
+ propertyIsEnumerable = objectProto.propertyIsEnumerable,
752
752
  Set = getNative(context, 'Set'),
753
753
  setTimeout = context.setTimeout,
754
754
  splice = arrayProto.splice,
755
- Uint8Array = getNative(context, 'Uint8Array'),
755
+ Uint8Array = context.Uint8Array,
756
756
  WeakMap = getNative(context, 'WeakMap');
757
757
 
758
- /** Used to clone array buffers. */
759
- var Float64Array = (function() {
760
- // Safari 5 errors when using an array buffer to initialize a typed array
761
- // where the array buffer's `byteLength` is not a multiple of the typed
762
- // array's `BYTES_PER_ELEMENT`.
763
- try {
764
- var func = getNative(context, 'Float64Array'),
765
- result = new func(new ArrayBuffer(10), 0, 1) && func;
766
- } catch(e) {}
767
- return result || null;
768
- }());
769
-
770
758
  /* Native method references for those with the same name as other `lodash` methods. */
771
- var nativeCreate = getNative(Object, 'create'),
759
+ var nativeCeil = Math.ceil,
760
+ nativeCreate = getNative(Object, 'create'),
761
+ nativeFloor = Math.floor,
772
762
  nativeIsArray = getNative(Array, 'isArray'),
773
763
  nativeIsFinite = context.isFinite,
774
764
  nativeKeys = getNative(Object, 'keys'),
775
765
  nativeMax = Math.max,
776
766
  nativeMin = Math.min,
777
767
  nativeNow = getNative(Date, 'now'),
778
- nativeNumIsFinite = getNative(Number, 'isFinite'),
779
768
  nativeParseInt = context.parseInt,
780
769
  nativeRandom = Math.random;
781
770
 
@@ -788,11 +777,8 @@
788
777
  MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,
789
778
  HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
790
779
 
791
- /** Used as the size, in bytes, of each `Float64Array` element. */
792
- var FLOAT64_BYTES_PER_ELEMENT = Float64Array ? Float64Array.BYTES_PER_ELEMENT : 0;
793
-
794
780
  /**
795
- * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)
781
+ * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)
796
782
  * of an array-like value.
797
783
  */
798
784
  var MAX_SAFE_INTEGER = 9007199254740991;
@@ -808,15 +794,16 @@
808
794
  /**
809
795
  * Creates a `lodash` object which wraps `value` to enable implicit chaining.
810
796
  * Methods that operate on and return arrays, collections, and functions can
811
- * be chained together. Methods that return a boolean or single value will
812
- * automatically end the chain returning the unwrapped value. Explicit chaining
813
- * may be enabled using `_.chain`. The execution of chained methods is lazy,
814
- * that is, execution is deferred until `_#value` is implicitly or explicitly
815
- * called.
797
+ * be chained together. Methods that retrieve a single value or may return a
798
+ * primitive value will automatically end the chain returning the unwrapped
799
+ * value. Explicit chaining may be enabled using `_.chain`. The execution of
800
+ * chained methods is lazy, that is, execution is deferred until `_#value`
801
+ * is implicitly or explicitly called.
816
802
  *
817
803
  * Lazy evaluation allows several methods to support shortcut fusion. Shortcut
818
- * fusion is an optimization that merges iteratees to avoid creating intermediate
819
- * arrays and reduce the number of iteratee executions.
804
+ * fusion is an optimization strategy which merge iteratee calls; this can help
805
+ * to avoid the creation of intermediate data structures and greatly reduce the
806
+ * number of iteratee executions.
820
807
  *
821
808
  * Chaining is supported in custom builds as long as the `_#value` method is
822
809
  * directly or indirectly included in the build.
@@ -839,36 +826,37 @@
839
826
  * The chainable wrapper methods are:
840
827
  * `after`, `ary`, `assign`, `at`, `before`, `bind`, `bindAll`, `bindKey`,
841
828
  * `callback`, `chain`, `chunk`, `commit`, `compact`, `concat`, `constant`,
842
- * `countBy`, `create`, `curry`, `debounce`, `defaults`, `defer`, `delay`,
843
- * `difference`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `fill`,
844
- * `filter`, `flatten`, `flattenDeep`, `flow`, `flowRight`, `forEach`,
845
- * `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `functions`,
846
- * `groupBy`, `indexBy`, `initial`, `intersection`, `invert`, `invoke`, `keys`,
847
- * `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
848
- * `memoize`, `merge`, `method`, `methodOf`, `mixin`, `negate`, `omit`, `once`,
849
- * `pairs`, `partial`, `partialRight`, `partition`, `pick`, `plant`, `pluck`,
850
- * `property`, `propertyOf`, `pull`, `pullAt`, `push`, `range`, `rearg`,
851
- * `reject`, `remove`, `rest`, `restParam`, `reverse`, `set`, `shuffle`,
852
- * `slice`, `sort`, `sortBy`, `sortByAll`, `sortByOrder`, `splice`, `spread`,
853
- * `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `tap`, `throttle`,
854
- * `thru`, `times`, `toArray`, `toPlainObject`, `transform`, `union`, `uniq`,
855
- * `unshift`, `unzip`, `unzipWith`, `values`, `valuesIn`, `where`, `without`,
856
- * `wrap`, `xor`, `zip`, `zipObject`, `zipWith`
829
+ * `countBy`, `create`, `curry`, `debounce`, `defaults`, `defaultsDeep`,
830
+ * `defer`, `delay`, `difference`, `drop`, `dropRight`, `dropRightWhile`,
831
+ * `dropWhile`, `fill`, `filter`, `flatten`, `flattenDeep`, `flow`, `flowRight`,
832
+ * `forEach`, `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`,
833
+ * `functions`, `groupBy`, `indexBy`, `initial`, `intersection`, `invert`,
834
+ * `invoke`, `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`,
835
+ * `matchesProperty`, `memoize`, `merge`, `method`, `methodOf`, `mixin`,
836
+ * `modArgs`, `negate`, `omit`, `once`, `pairs`, `partial`, `partialRight`,
837
+ * `partition`, `pick`, `plant`, `pluck`, `property`, `propertyOf`, `pull`,
838
+ * `pullAt`, `push`, `range`, `rearg`, `reject`, `remove`, `rest`, `restParam`,
839
+ * `reverse`, `set`, `shuffle`, `slice`, `sort`, `sortBy`, `sortByAll`,
840
+ * `sortByOrder`, `splice`, `spread`, `take`, `takeRight`, `takeRightWhile`,
841
+ * `takeWhile`, `tap`, `throttle`, `thru`, `times`, `toArray`, `toPlainObject`,
842
+ * `transform`, `union`, `uniq`, `unshift`, `unzip`, `unzipWith`, `values`,
843
+ * `valuesIn`, `where`, `without`, `wrap`, `xor`, `zip`, `zipObject`, `zipWith`
857
844
  *
858
845
  * The wrapper methods that are **not** chainable by default are:
859
- * `add`, `attempt`, `camelCase`, `capitalize`, `clone`, `cloneDeep`, `deburr`,
860
- * `endsWith`, `escape`, `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`,
861
- * `findLast`, `findLastIndex`, `findLastKey`, `findWhere`, `first`, `get`,
862
- * `gt`, `gte`, `has`, `identity`, `includes`, `indexOf`, `inRange`, `isArguments`,
863
- * `isArray`, `isBoolean`, `isDate`, `isElement`, `isEmpty`, `isEqual`, `isError`,
864
- * `isFinite` `isFunction`, `isMatch`, `isNative`, `isNaN`, `isNull`, `isNumber`,
865
- * `isObject`, `isPlainObject`, `isRegExp`, `isString`, `isUndefined`,
866
- * `isTypedArray`, `join`, `kebabCase`, `last`, `lastIndexOf`, `lt`, `lte`,
867
- * `max`, `min`, `noConflict`, `noop`, `now`, `pad`, `padLeft`, `padRight`,
868
- * `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, `repeat`, `result`,
869
- * `runInContext`, `shift`, `size`, `snakeCase`, `some`, `sortedIndex`,
870
- * `sortedLastIndex`, `startCase`, `startsWith`, `sum`, `template`, `trim`,
871
- * `trimLeft`, `trimRight`, `trunc`, `unescape`, `uniqueId`, `value`, and `words`
846
+ * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clone`, `cloneDeep`,
847
+ * `deburr`, `endsWith`, `escape`, `escapeRegExp`, `every`, `find`, `findIndex`,
848
+ * `findKey`, `findLast`, `findLastIndex`, `findLastKey`, `findWhere`, `first`,
849
+ * `floor`, `get`, `gt`, `gte`, `has`, `identity`, `includes`, `indexOf`,
850
+ * `inRange`, `isArguments`, `isArray`, `isBoolean`, `isDate`, `isElement`,
851
+ * `isEmpty`, `isEqual`, `isError`, `isFinite` `isFunction`, `isMatch`,
852
+ * `isNative`, `isNaN`, `isNull`, `isNumber`, `isObject`, `isPlainObject`,
853
+ * `isRegExp`, `isString`, `isUndefined`, `isTypedArray`, `join`, `kebabCase`,
854
+ * `last`, `lastIndexOf`, `lt`, `lte`, `max`, `min`, `noConflict`, `noop`,
855
+ * `now`, `pad`, `padLeft`, `padRight`, `parseInt`, `pop`, `random`, `reduce`,
856
+ * `reduceRight`, `repeat`, `result`, `round`, `runInContext`, `shift`, `size`,
857
+ * `snakeCase`, `some`, `sortedIndex`, `sortedLastIndex`, `startCase`,
858
+ * `startsWith`, `sum`, `template`, `trim`, `trimLeft`, `trimRight`, `trunc`,
859
+ * `unescape`, `uniqueId`, `value`, and `words`
872
860
  *
873
861
  * The wrapper method `sample` will return a wrapped value when `n` is provided,
874
862
  * otherwise an unwrapped value is returned.
@@ -943,27 +931,6 @@
943
931
  */
944
932
  var support = lodash.support = {};
945
933
 
946
- (function(x) {
947
- var Ctor = function() { this.x = x; },
948
- object = { '0': x, 'length': x },
949
- props = [];
950
-
951
- Ctor.prototype = { 'valueOf': x, 'y': x };
952
- for (var key in new Ctor) { props.push(key); }
953
-
954
- /**
955
- * Detect if the DOM is supported.
956
- *
957
- * @memberOf _.support
958
- * @type boolean
959
- */
960
- try {
961
- support.dom = document.createDocumentFragment().nodeType === 11;
962
- } catch(e) {
963
- support.dom = false;
964
- }
965
- }(1, 0));
966
-
967
934
  /**
968
935
  * By default, the template delimiters used by lodash are like those in
969
936
  * embedded Ruby (ERB). Change the following template settings to use
@@ -1035,13 +1002,12 @@
1035
1002
  */
1036
1003
  function LazyWrapper(value) {
1037
1004
  this.__wrapped__ = value;
1038
- this.__actions__ = null;
1005
+ this.__actions__ = [];
1039
1006
  this.__dir__ = 1;
1040
- this.__dropCount__ = 0;
1041
1007
  this.__filtered__ = false;
1042
- this.__iteratees__ = null;
1008
+ this.__iteratees__ = [];
1043
1009
  this.__takeCount__ = POSITIVE_INFINITY;
1044
- this.__views__ = null;
1010
+ this.__views__ = [];
1045
1011
  }
1046
1012
 
1047
1013
  /**
@@ -1053,17 +1019,13 @@
1053
1019
  * @returns {Object} Returns the cloned `LazyWrapper` object.
1054
1020
  */
1055
1021
  function lazyClone() {
1056
- var actions = this.__actions__,
1057
- iteratees = this.__iteratees__,
1058
- views = this.__views__,
1059
- result = new LazyWrapper(this.__wrapped__);
1060
-
1061
- result.__actions__ = actions ? arrayCopy(actions) : null;
1022
+ var result = new LazyWrapper(this.__wrapped__);
1023
+ result.__actions__ = arrayCopy(this.__actions__);
1062
1024
  result.__dir__ = this.__dir__;
1063
1025
  result.__filtered__ = this.__filtered__;
1064
- result.__iteratees__ = iteratees ? arrayCopy(iteratees) : null;
1026
+ result.__iteratees__ = arrayCopy(this.__iteratees__);
1065
1027
  result.__takeCount__ = this.__takeCount__;
1066
- result.__views__ = views ? arrayCopy(views) : null;
1028
+ result.__views__ = arrayCopy(this.__views__);
1067
1029
  return result;
1068
1030
  }
1069
1031
 
@@ -1096,22 +1058,25 @@
1096
1058
  * @returns {*} Returns the unwrapped value.
1097
1059
  */
1098
1060
  function lazyValue() {
1099
- var array = this.__wrapped__.value();
1100
- if (!isArray(array)) {
1101
- return baseWrapperValue(array, this.__actions__);
1102
- }
1103
- var dir = this.__dir__,
1061
+ var array = this.__wrapped__.value(),
1062
+ dir = this.__dir__,
1063
+ isArr = isArray(array),
1104
1064
  isRight = dir < 0,
1105
- view = getView(0, array.length, this.__views__),
1065
+ arrLength = isArr ? array.length : 0,
1066
+ view = getView(0, arrLength, this.__views__),
1106
1067
  start = view.start,
1107
1068
  end = view.end,
1108
1069
  length = end - start,
1109
1070
  index = isRight ? end : (start - 1),
1110
- takeCount = nativeMin(length, this.__takeCount__),
1111
1071
  iteratees = this.__iteratees__,
1112
- iterLength = iteratees ? iteratees.length : 0,
1072
+ iterLength = iteratees.length,
1113
1073
  resIndex = 0,
1114
- result = [];
1074
+ takeCount = nativeMin(length, this.__takeCount__);
1075
+
1076
+ if (!isArr || arrLength < LARGE_ARRAY_SIZE || (arrLength == length && takeCount == length)) {
1077
+ return baseWrapperValue((isRight && isArr) ? array.reverse() : array, this.__actions__);
1078
+ }
1079
+ var result = [];
1115
1080
 
1116
1081
  outer:
1117
1082
  while (length-- && resIndex < takeCount) {
@@ -1123,30 +1088,16 @@
1123
1088
  while (++iterIndex < iterLength) {
1124
1089
  var data = iteratees[iterIndex],
1125
1090
  iteratee = data.iteratee,
1126
- type = data.type;
1091
+ type = data.type,
1092
+ computed = iteratee(value);
1127
1093
 
1128
- if (type == LAZY_DROP_WHILE_FLAG) {
1129
- if (data.done && (isRight ? (index > data.index) : (index < data.index))) {
1130
- data.count = 0;
1131
- data.done = false;
1132
- }
1133
- data.index = index;
1134
- if (!data.done) {
1135
- var limit = data.limit;
1136
- if (!(data.done = limit > -1 ? (data.count++ >= limit) : !iteratee(value))) {
1137
- continue outer;
1138
- }
1139
- }
1140
- } else {
1141
- var computed = iteratee(value);
1142
- if (type == LAZY_MAP_FLAG) {
1143
- value = computed;
1144
- } else if (!computed) {
1145
- if (type == LAZY_FILTER_FLAG) {
1146
- continue outer;
1147
- } else {
1148
- break outer;
1149
- }
1094
+ if (type == LAZY_MAP_FLAG) {
1095
+ value = computed;
1096
+ } else if (!computed) {
1097
+ if (type == LAZY_FILTER_FLAG) {
1098
+ continue outer;
1099
+ } else {
1100
+ break outer;
1150
1101
  }
1151
1102
  }
1152
1103
  }
@@ -1278,6 +1229,30 @@
1278
1229
 
1279
1230
  /*------------------------------------------------------------------------*/
1280
1231
 
1232
+ /**
1233
+ * Creates a new array joining `array` with `other`.
1234
+ *
1235
+ * @private
1236
+ * @param {Array} array The array to join.
1237
+ * @param {Array} other The other array to join.
1238
+ * @returns {Array} Returns the new concatenated array.
1239
+ */
1240
+ function arrayConcat(array, other) {
1241
+ var index = -1,
1242
+ length = array.length,
1243
+ othIndex = -1,
1244
+ othLength = other.length,
1245
+ result = Array(length + othLength);
1246
+
1247
+ while (++index < length) {
1248
+ result[index] = array[index];
1249
+ }
1250
+ while (++othIndex < othLength) {
1251
+ result[index++] = other[othIndex];
1252
+ }
1253
+ return result;
1254
+ }
1255
+
1281
1256
  /**
1282
1257
  * Copies the values of `source` to `array`.
1283
1258
  *
@@ -1433,6 +1408,25 @@
1433
1408
  return result;
1434
1409
  }
1435
1410
 
1411
+ /**
1412
+ * Appends the elements of `values` to `array`.
1413
+ *
1414
+ * @private
1415
+ * @param {Array} array The array to modify.
1416
+ * @param {Array} values The values to append.
1417
+ * @returns {Array} Returns `array`.
1418
+ */
1419
+ function arrayPush(array, values) {
1420
+ var index = -1,
1421
+ length = values.length,
1422
+ offset = array.length;
1423
+
1424
+ while (++index < length) {
1425
+ array[offset + index] = values[index];
1426
+ }
1427
+ return array;
1428
+ }
1429
+
1436
1430
  /**
1437
1431
  * A specialized version of `_.reduce` for arrays without support for callback
1438
1432
  * shorthands and `this` binding.
@@ -1504,18 +1498,20 @@
1504
1498
  }
1505
1499
 
1506
1500
  /**
1507
- * A specialized version of `_.sum` for arrays without support for iteratees.
1501
+ * A specialized version of `_.sum` for arrays without support for callback
1502
+ * shorthands and `this` binding..
1508
1503
  *
1509
1504
  * @private
1510
1505
  * @param {Array} array The array to iterate over.
1506
+ * @param {Function} iteratee The function invoked per iteration.
1511
1507
  * @returns {number} Returns the sum.
1512
1508
  */
1513
- function arraySum(array) {
1509
+ function arraySum(array, iteratee) {
1514
1510
  var length = array.length,
1515
1511
  result = 0;
1516
1512
 
1517
1513
  while (length--) {
1518
- result += +array[length] || 0;
1514
+ result += +iteratee(array[length]) || 0;
1519
1515
  }
1520
1516
  return result;
1521
1517
  }
@@ -1719,7 +1715,7 @@
1719
1715
  : (object ? value : {});
1720
1716
  }
1721
1717
  }
1722
- // Check for circular references and return corresponding clone.
1718
+ // Check for circular references and return its corresponding clone.
1723
1719
  stackA || (stackA = []);
1724
1720
  stackB || (stackB = []);
1725
1721
 
@@ -1754,7 +1750,7 @@
1754
1750
  if (isObject(prototype)) {
1755
1751
  object.prototype = prototype;
1756
1752
  var result = new object;
1757
- object.prototype = null;
1753
+ object.prototype = undefined;
1758
1754
  }
1759
1755
  return result || {};
1760
1756
  };
@@ -1796,7 +1792,7 @@
1796
1792
  var index = -1,
1797
1793
  indexOf = getIndexOf(),
1798
1794
  isCommon = indexOf == baseIndexOf,
1799
- cache = (isCommon && values.length >= 200) ? createCache(values) : null,
1795
+ cache = (isCommon && values.length >= LARGE_ARRAY_SIZE) ? createCache(values) : null,
1800
1796
  valuesLength = values.length;
1801
1797
 
1802
1798
  if (cache) {
@@ -1972,13 +1968,14 @@
1972
1968
  * @param {Array} array The array to flatten.
1973
1969
  * @param {boolean} [isDeep] Specify a deep flatten.
1974
1970
  * @param {boolean} [isStrict] Restrict flattening to arrays-like objects.
1971
+ * @param {Array} [result=[]] The initial result value.
1975
1972
  * @returns {Array} Returns the new flattened array.
1976
1973
  */
1977
- function baseFlatten(array, isDeep, isStrict) {
1974
+ function baseFlatten(array, isDeep, isStrict, result) {
1975
+ result || (result = []);
1976
+
1978
1977
  var index = -1,
1979
- length = array.length,
1980
- resIndex = -1,
1981
- result = [];
1978
+ length = array.length;
1982
1979
 
1983
1980
  while (++index < length) {
1984
1981
  var value = array[index];
@@ -1986,16 +1983,12 @@
1986
1983
  (isStrict || isArray(value) || isArguments(value))) {
1987
1984
  if (isDeep) {
1988
1985
  // Recursively flatten arrays (susceptible to call stack limits).
1989
- value = baseFlatten(value, isDeep, isStrict);
1990
- }
1991
- var valIndex = -1,
1992
- valLength = value.length;
1993
-
1994
- while (++valIndex < valLength) {
1995
- result[++resIndex] = value[valIndex];
1986
+ baseFlatten(value, isDeep, isStrict, result);
1987
+ } else {
1988
+ arrayPush(result, value);
1996
1989
  }
1997
1990
  } else if (!isStrict) {
1998
- result[++resIndex] = value;
1991
+ result[result.length] = value;
1999
1992
  }
2000
1993
  }
2001
1994
  return result;
@@ -2350,7 +2343,7 @@
2350
2343
  * @private
2351
2344
  * @param {Object} object The destination object.
2352
2345
  * @param {Object} source The source object.
2353
- * @param {Function} [customizer] The function to customize merging properties.
2346
+ * @param {Function} [customizer] The function to customize merged values.
2354
2347
  * @param {Array} [stackA=[]] Tracks traversed source objects.
2355
2348
  * @param {Array} [stackB=[]] Associates values with source counterparts.
2356
2349
  * @returns {Object} Returns `object`.
@@ -2360,7 +2353,7 @@
2360
2353
  return object;
2361
2354
  }
2362
2355
  var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)),
2363
- props = isSrcArr ? null : keys(source);
2356
+ props = isSrcArr ? undefined : keys(source);
2364
2357
 
2365
2358
  arrayEach(props || source, function(srcValue, key) {
2366
2359
  if (props) {
@@ -2399,7 +2392,7 @@
2399
2392
  * @param {Object} source The source object.
2400
2393
  * @param {string} key The key of the value to merge.
2401
2394
  * @param {Function} mergeFunc The function to merge values.
2402
- * @param {Function} [customizer] The function to customize merging properties.
2395
+ * @param {Function} [customizer] The function to customize merged values.
2403
2396
  * @param {Array} [stackA=[]] Tracks traversed source objects.
2404
2397
  * @param {Array} [stackB=[]] Associates values with source counterparts.
2405
2398
  * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
@@ -2506,7 +2499,7 @@
2506
2499
  * @returns {number} Returns the random number.
2507
2500
  */
2508
2501
  function baseRandom(min, max) {
2509
- return min + floor(nativeRandom() * (max - min + 1));
2502
+ return min + nativeFloor(nativeRandom() * (max - min + 1));
2510
2503
  }
2511
2504
 
2512
2505
  /**
@@ -2672,7 +2665,7 @@
2672
2665
  indexOf = getIndexOf(),
2673
2666
  length = array.length,
2674
2667
  isCommon = indexOf == baseIndexOf,
2675
- isLarge = isCommon && length >= 200,
2668
+ isLarge = isCommon && length >= LARGE_ARRAY_SIZE,
2676
2669
  seen = isLarge ? createCache() : null,
2677
2670
  result = [];
2678
2671
 
@@ -2771,11 +2764,8 @@
2771
2764
  length = actions.length;
2772
2765
 
2773
2766
  while (++index < length) {
2774
- var args = [result],
2775
- action = actions[index];
2776
-
2777
- push.apply(args, action.args);
2778
- result = action.func.apply(action.thisArg, args);
2767
+ var action = actions[index];
2768
+ result = action.func.apply(action.thisArg, arrayPush([result], action.args));
2779
2769
  }
2780
2770
  return result;
2781
2771
  }
@@ -2834,7 +2824,7 @@
2834
2824
  valIsUndef = value === undefined;
2835
2825
 
2836
2826
  while (low < high) {
2837
- var mid = floor((low + high) / 2),
2827
+ var mid = nativeFloor((low + high) / 2),
2838
2828
  computed = iteratee(array[mid]),
2839
2829
  isDef = computed !== undefined,
2840
2830
  isReflexive = computed === computed;
@@ -2903,26 +2893,11 @@
2903
2893
  * @returns {ArrayBuffer} Returns the cloned array buffer.
2904
2894
  */
2905
2895
  function bufferClone(buffer) {
2906
- return bufferSlice.call(buffer, 0);
2907
- }
2908
- if (!bufferSlice) {
2909
- // PhantomJS has `ArrayBuffer` and `Uint8Array` but not `Float64Array`.
2910
- bufferClone = !(ArrayBuffer && Uint8Array) ? constant(null) : function(buffer) {
2911
- var byteLength = buffer.byteLength,
2912
- floatLength = Float64Array ? floor(byteLength / FLOAT64_BYTES_PER_ELEMENT) : 0,
2913
- offset = floatLength * FLOAT64_BYTES_PER_ELEMENT,
2914
- result = new ArrayBuffer(byteLength);
2896
+ var result = new ArrayBuffer(buffer.byteLength),
2897
+ view = new Uint8Array(result);
2915
2898
 
2916
- if (floatLength) {
2917
- var view = new Float64Array(result, 0, floatLength);
2918
- view.set(new Float64Array(buffer, 0, floatLength));
2919
- }
2920
- if (byteLength != offset) {
2921
- view = new Uint8Array(result, offset);
2922
- view.set(new Uint8Array(buffer, offset));
2923
- }
2924
- return result;
2925
- };
2899
+ view.set(new Uint8Array(buffer));
2900
+ return result;
2926
2901
  }
2927
2902
 
2928
2903
  /**
@@ -2941,7 +2916,7 @@
2941
2916
  argsLength = nativeMax(args.length - holdersLength, 0),
2942
2917
  leftIndex = -1,
2943
2918
  leftLength = partials.length,
2944
- result = Array(argsLength + leftLength);
2919
+ result = Array(leftLength + argsLength);
2945
2920
 
2946
2921
  while (++leftIndex < leftLength) {
2947
2922
  result[leftIndex] = partials[leftIndex];
@@ -2988,12 +2963,7 @@
2988
2963
  }
2989
2964
 
2990
2965
  /**
2991
- * Creates a function that aggregates a collection, creating an accumulator
2992
- * object composed from the results of running each element in the collection
2993
- * through an iteratee.
2994
- *
2995
- * **Note:** This function is used to create `_.countBy`, `_.groupBy`, `_.indexBy`,
2996
- * and `_.partition`.
2966
+ * Creates a `_.countBy`, `_.groupBy`, `_.indexBy`, or `_.partition` function.
2997
2967
  *
2998
2968
  * @private
2999
2969
  * @param {Function} setter The function to set keys and values of the accumulator object.
@@ -3023,10 +2993,7 @@
3023
2993
  }
3024
2994
 
3025
2995
  /**
3026
- * Creates a function that assigns properties of source object(s) to a given
3027
- * destination object.
3028
- *
3029
- * **Note:** This function is used to create `_.assign`, `_.defaults`, and `_.merge`.
2996
+ * Creates a `_.assign`, `_.defaults`, or `_.merge` function.
3030
2997
  *
3031
2998
  * @private
3032
2999
  * @param {Function} assigner The function to assign values.
@@ -3137,9 +3104,9 @@
3137
3104
  * @param {Array} [values] The values to cache.
3138
3105
  * @returns {null|Object} Returns the new cache object if `Set` is supported, else `null`.
3139
3106
  */
3140
- var createCache = !(nativeCreate && Set) ? constant(null) : function(values) {
3141
- return new SetCache(values);
3142
- };
3107
+ function createCache(values) {
3108
+ return (nativeCreate && Set) ? new SetCache(values) : null;
3109
+ }
3143
3110
 
3144
3111
  /**
3145
3112
  * Creates a function that produces compound words out of the words in a
@@ -3174,7 +3141,7 @@
3174
3141
  function createCtorWrapper(Ctor) {
3175
3142
  return function() {
3176
3143
  // Use a `switch` statement to work with class constructors.
3177
- // See https://people.mozilla.org/~jorendorff/es6-draft.html#sec-ecmascript-function-objects-call-thisargument-argumentslist
3144
+ // See http://ecma-international.org/ecma-262/6.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
3178
3145
  // for more details.
3179
3146
  var args = arguments;
3180
3147
  switch (args.length) {
@@ -3184,6 +3151,8 @@
3184
3151
  case 3: return new Ctor(args[0], args[1], args[2]);
3185
3152
  case 4: return new Ctor(args[0], args[1], args[2], args[3]);
3186
3153
  case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);
3154
+ case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);
3155
+ case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
3187
3156
  }
3188
3157
  var thisBinding = baseCreate(Ctor.prototype),
3189
3158
  result = Ctor.apply(thisBinding, args);
@@ -3204,15 +3173,34 @@
3204
3173
  function createCurry(flag) {
3205
3174
  function curryFunc(func, arity, guard) {
3206
3175
  if (guard && isIterateeCall(func, arity, guard)) {
3207
- arity = null;
3176
+ arity = undefined;
3208
3177
  }
3209
- var result = createWrapper(func, flag, null, null, null, null, null, arity);
3178
+ var result = createWrapper(func, flag, undefined, undefined, undefined, undefined, undefined, arity);
3210
3179
  result.placeholder = curryFunc.placeholder;
3211
3180
  return result;
3212
3181
  }
3213
3182
  return curryFunc;
3214
3183
  }
3215
3184
 
3185
+ /**
3186
+ * Creates a `_.defaults` or `_.defaultsDeep` function.
3187
+ *
3188
+ * @private
3189
+ * @param {Function} assigner The function to assign values.
3190
+ * @param {Function} customizer The function to customize assigned values.
3191
+ * @returns {Function} Returns the new defaults function.
3192
+ */
3193
+ function createDefaults(assigner, customizer) {
3194
+ return restParam(function(args) {
3195
+ var object = args[0];
3196
+ if (object == null) {
3197
+ return object;
3198
+ }
3199
+ args.push(customizer);
3200
+ return assigner.apply(undefined, args);
3201
+ });
3202
+ }
3203
+
3216
3204
  /**
3217
3205
  * Creates a `_.max` or `_.min` function.
3218
3206
  *
@@ -3224,11 +3212,11 @@
3224
3212
  function createExtremum(comparator, exValue) {
3225
3213
  return function(collection, iteratee, thisArg) {
3226
3214
  if (thisArg && isIterateeCall(collection, iteratee, thisArg)) {
3227
- iteratee = null;
3215
+ iteratee = undefined;
3228
3216
  }
3229
3217
  iteratee = getCallback(iteratee, thisArg, 3);
3230
3218
  if (iteratee.length == 1) {
3231
- collection = toIterable(collection);
3219
+ collection = isArray(collection) ? collection : toIterable(collection);
3232
3220
  var result = arrayExtremum(collection, iteratee, comparator, exValue);
3233
3221
  if (!(collection.length && result === exValue)) {
3234
3222
  return result;
@@ -3309,7 +3297,7 @@
3309
3297
  throw new TypeError(FUNC_ERROR_TEXT);
3310
3298
  }
3311
3299
  if (!wrapper && LodashWrapper.prototype.thru && getFuncName(func) == 'wrapper') {
3312
- wrapper = new LodashWrapper([]);
3300
+ wrapper = new LodashWrapper([], true);
3313
3301
  }
3314
3302
  }
3315
3303
  index = wrapper ? -1 : length;
@@ -3317,7 +3305,7 @@
3317
3305
  func = funcs[index];
3318
3306
 
3319
3307
  var funcName = getFuncName(func),
3320
- data = funcName == 'wrapper' ? getData(func) : null;
3308
+ data = funcName == 'wrapper' ? getData(func) : undefined;
3321
3309
 
3322
3310
  if (data && isLaziable(data[0]) && data[1] == (ARY_FLAG | CURRY_FLAG | PARTIAL_FLAG | REARG_FLAG) && !data[4].length && data[9] == 1) {
3323
3311
  wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
@@ -3326,12 +3314,14 @@
3326
3314
  }
3327
3315
  }
3328
3316
  return function() {
3329
- var args = arguments;
3330
- if (wrapper && args.length == 1 && isArray(args[0])) {
3331
- return wrapper.plant(args[0]).value();
3317
+ var args = arguments,
3318
+ value = args[0];
3319
+
3320
+ if (wrapper && args.length == 1 && isArray(value) && value.length >= LARGE_ARRAY_SIZE) {
3321
+ return wrapper.plant(value).value();
3332
3322
  }
3333
3323
  var index = 0,
3334
- result = length ? funcs[index].apply(this, args) : args[0];
3324
+ result = length ? funcs[index].apply(this, args) : value;
3335
3325
 
3336
3326
  while (++index < length) {
3337
3327
  result = funcs[index].call(this, result);
@@ -3435,7 +3425,7 @@
3435
3425
  function createPartial(flag) {
3436
3426
  var partialFunc = restParam(function(func, partials) {
3437
3427
  var holders = replaceHolders(partials, partialFunc.placeholder);
3438
- return createWrapper(func, flag, null, partials, holders);
3428
+ return createWrapper(func, flag, undefined, partials, holders);
3439
3429
  });
3440
3430
  return partialFunc;
3441
3431
  }
@@ -3481,7 +3471,7 @@
3481
3471
  isCurry = bitmask & CURRY_FLAG,
3482
3472
  isCurryBound = bitmask & CURRY_BOUND_FLAG,
3483
3473
  isCurryRight = bitmask & CURRY_RIGHT_FLAG,
3484
- Ctor = isBindKey ? null : createCtorWrapper(func);
3474
+ Ctor = isBindKey ? undefined : createCtorWrapper(func);
3485
3475
 
3486
3476
  function wrapper() {
3487
3477
  // Avoid `arguments` object use disqualifying optimizations by
@@ -3505,12 +3495,12 @@
3505
3495
 
3506
3496
  length -= argsHolders.length;
3507
3497
  if (length < arity) {
3508
- var newArgPos = argPos ? arrayCopy(argPos) : null,
3498
+ var newArgPos = argPos ? arrayCopy(argPos) : undefined,
3509
3499
  newArity = nativeMax(arity - length, 0),
3510
- newsHolders = isCurry ? argsHolders : null,
3511
- newHoldersRight = isCurry ? null : argsHolders,
3512
- newPartials = isCurry ? args : null,
3513
- newPartialsRight = isCurry ? null : args;
3500
+ newsHolders = isCurry ? argsHolders : undefined,
3501
+ newHoldersRight = isCurry ? undefined : argsHolders,
3502
+ newPartials = isCurry ? args : undefined,
3503
+ newPartialsRight = isCurry ? undefined : args;
3514
3504
 
3515
3505
  bitmask |= (isCurry ? PARTIAL_FLAG : PARTIAL_RIGHT_FLAG);
3516
3506
  bitmask &= ~(isCurry ? PARTIAL_RIGHT_FLAG : PARTIAL_FLAG);
@@ -3564,7 +3554,7 @@
3564
3554
  }
3565
3555
  var padLength = length - strLength;
3566
3556
  chars = chars == null ? ' ' : (chars + '');
3567
- return repeat(chars, ceil(padLength / chars.length)).slice(0, padLength);
3557
+ return repeat(chars, nativeCeil(padLength / chars.length)).slice(0, padLength);
3568
3558
  }
3569
3559
 
3570
3560
  /**
@@ -3590,7 +3580,7 @@
3590
3580
  argsLength = arguments.length,
3591
3581
  leftIndex = -1,
3592
3582
  leftLength = partials.length,
3593
- args = Array(argsLength + leftLength);
3583
+ args = Array(leftLength + argsLength);
3594
3584
 
3595
3585
  while (++leftIndex < leftLength) {
3596
3586
  args[leftIndex] = partials[leftIndex];
@@ -3604,6 +3594,25 @@
3604
3594
  return wrapper;
3605
3595
  }
3606
3596
 
3597
+ /**
3598
+ * Creates a `_.ceil`, `_.floor`, or `_.round` function.
3599
+ *
3600
+ * @private
3601
+ * @param {string} methodName The name of the `Math` method to use when rounding.
3602
+ * @returns {Function} Returns the new round function.
3603
+ */
3604
+ function createRound(methodName) {
3605
+ var func = Math[methodName];
3606
+ return function(number, precision) {
3607
+ precision = precision === undefined ? 0 : (+precision || 0);
3608
+ if (precision) {
3609
+ precision = pow(10, precision);
3610
+ return func(number * precision) / precision;
3611
+ }
3612
+ return func(number);
3613
+ };
3614
+ }
3615
+
3607
3616
  /**
3608
3617
  * Creates a `_.sortedIndex` or `_.sortedLastIndex` function.
3609
3618
  *
@@ -3653,16 +3662,16 @@
3653
3662
  var length = partials ? partials.length : 0;
3654
3663
  if (!length) {
3655
3664
  bitmask &= ~(PARTIAL_FLAG | PARTIAL_RIGHT_FLAG);
3656
- partials = holders = null;
3665
+ partials = holders = undefined;
3657
3666
  }
3658
3667
  length -= (holders ? holders.length : 0);
3659
3668
  if (bitmask & PARTIAL_RIGHT_FLAG) {
3660
3669
  var partialsRight = partials,
3661
3670
  holdersRight = holders;
3662
3671
 
3663
- partials = holders = null;
3672
+ partials = holders = undefined;
3664
3673
  }
3665
- var data = isBindKey ? null : getData(func),
3674
+ var data = isBindKey ? undefined : getData(func),
3666
3675
  newData = [func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity];
3667
3676
 
3668
3677
  if (data) {
@@ -3741,7 +3750,7 @@
3741
3750
  * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
3742
3751
  *
3743
3752
  * @private
3744
- * @param {Object} value The object to compare.
3753
+ * @param {Object} object The object to compare.
3745
3754
  * @param {Object} other The other object to compare.
3746
3755
  * @param {string} tag The `toStringTag` of the objects to compare.
3747
3756
  * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
@@ -3941,13 +3950,13 @@
3941
3950
  * @private
3942
3951
  * @param {number} start The start of the view.
3943
3952
  * @param {number} end The end of the view.
3944
- * @param {Array} [transforms] The transformations to apply to the view.
3953
+ * @param {Array} transforms The transformations to apply to the view.
3945
3954
  * @returns {Object} Returns an object containing the `start` and `end`
3946
3955
  * positions of the view.
3947
3956
  */
3948
3957
  function getView(start, end, transforms) {
3949
3958
  var index = -1,
3950
- length = transforms ? transforms.length : 0;
3959
+ length = transforms.length;
3951
3960
 
3952
3961
  while (++index < length) {
3953
3962
  var data = transforms[index],
@@ -4146,7 +4155,7 @@
4146
4155
  /**
4147
4156
  * Checks if `value` is a valid array-like length.
4148
4157
  *
4149
- * **Note:** This function is based on [`ToLength`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength).
4158
+ * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).
4150
4159
  *
4151
4160
  * @private
4152
4161
  * @param {*} value The value to check.
@@ -4238,6 +4247,18 @@
4238
4247
  return data;
4239
4248
  }
4240
4249
 
4250
+ /**
4251
+ * Used by `_.defaultsDeep` to customize its `_.merge` use.
4252
+ *
4253
+ * @private
4254
+ * @param {*} objectValue The destination object property value.
4255
+ * @param {*} sourceValue The source object property value.
4256
+ * @returns {*} Returns the value to assign to the destination object.
4257
+ */
4258
+ function mergeDefaults(objectValue, sourceValue) {
4259
+ return objectValue === undefined ? sourceValue : merge(objectValue, sourceValue, mergeDefaults);
4260
+ }
4261
+
4241
4262
  /**
4242
4263
  * A specialized version of `_.pick` which picks `object` properties specified
4243
4264
  * by `props`.
@@ -4337,38 +4358,6 @@
4337
4358
  };
4338
4359
  }());
4339
4360
 
4340
- /**
4341
- * A fallback implementation of `_.isPlainObject` which checks if `value`
4342
- * is an object created by the `Object` constructor or has a `[[Prototype]]`
4343
- * of `null`.
4344
- *
4345
- * @private
4346
- * @param {*} value The value to check.
4347
- * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
4348
- */
4349
- function shimIsPlainObject(value) {
4350
- var Ctor,
4351
- support = lodash.support;
4352
-
4353
- // Exit early for non `Object` objects.
4354
- if (!(isObjectLike(value) && objToString.call(value) == objectTag) ||
4355
- (!hasOwnProperty.call(value, 'constructor') &&
4356
- (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) {
4357
- return false;
4358
- }
4359
- // IE < 9 iterates inherited properties before own properties. If the first
4360
- // iterated property is an object's own property then there are no inherited
4361
- // enumerable properties.
4362
- var result;
4363
- // In most environments an object's own properties are iterated before
4364
- // its inherited properties. If the last iterated property is an object's
4365
- // own property then there are no inherited enumerable properties.
4366
- baseForIn(value, function(subValue, key) {
4367
- result = key;
4368
- });
4369
- return result === undefined || hasOwnProperty.call(value, result);
4370
- }
4371
-
4372
4361
  /**
4373
4362
  * A fallback implementation of `Object.keys` which creates an array of the
4374
4363
  * own enumerable property names of `object`.
@@ -4482,12 +4471,12 @@
4482
4471
  if (guard ? isIterateeCall(array, size, guard) : size == null) {
4483
4472
  size = 1;
4484
4473
  } else {
4485
- size = nativeMax(+size || 1, 1);
4474
+ size = nativeMax(nativeFloor(size) || 1, 1);
4486
4475
  }
4487
4476
  var index = 0,
4488
4477
  length = array ? array.length : 0,
4489
4478
  resIndex = -1,
4490
- result = Array(ceil(length / size));
4479
+ result = Array(nativeCeil(length / size));
4491
4480
 
4492
4481
  while (index < length) {
4493
4482
  result[++resIndex] = baseSlice(array, index, (index += size));
@@ -4526,7 +4515,7 @@
4526
4515
 
4527
4516
  /**
4528
4517
  * Creates an array of unique `array` values not included in the other
4529
- * provided arrays using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
4518
+ * provided arrays using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
4530
4519
  * for equality comparisons.
4531
4520
  *
4532
4521
  * @static
@@ -4541,7 +4530,7 @@
4541
4530
  * // => [1, 3]
4542
4531
  */
4543
4532
  var difference = restParam(function(array, values) {
4544
- return isArrayLike(array)
4533
+ return (isObjectLike(array) && isArrayLike(array))
4545
4534
  ? baseDifference(array, baseFlatten(values, false, true))
4546
4535
  : [];
4547
4536
  });
@@ -4936,7 +4925,7 @@
4936
4925
 
4937
4926
  /**
4938
4927
  * Gets the index at which the first occurrence of `value` is found in `array`
4939
- * using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
4928
+ * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
4940
4929
  * for equality comparisons. If `fromIndex` is negative, it is used as the offset
4941
4930
  * from the end of `array`. If `array` is sorted providing `true` for `fromIndex`
4942
4931
  * performs a faster binary search.
@@ -4970,10 +4959,9 @@
4970
4959
  if (typeof fromIndex == 'number') {
4971
4960
  fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex;
4972
4961
  } else if (fromIndex) {
4973
- var index = binaryIndex(array, value),
4974
- other = array[index];
4975
-
4976
- if (value === value ? (value === other) : (other !== other)) {
4962
+ var index = binaryIndex(array, value);
4963
+ if (index < length &&
4964
+ (value === value ? (value === array[index]) : (array[index] !== array[index]))) {
4977
4965
  return index;
4978
4966
  }
4979
4967
  return -1;
@@ -5000,7 +4988,7 @@
5000
4988
 
5001
4989
  /**
5002
4990
  * Creates an array of unique values that are included in all of the provided
5003
- * arrays using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
4991
+ * arrays using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
5004
4992
  * for equality comparisons.
5005
4993
  *
5006
4994
  * @static
@@ -5121,7 +5109,7 @@
5121
5109
 
5122
5110
  /**
5123
5111
  * Removes all provided values from `array` using
5124
- * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
5112
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
5125
5113
  * for equality comparisons.
5126
5114
  *
5127
5115
  * **Note:** Unlike `_.without`, this method mutates `array`.
@@ -5554,7 +5542,7 @@
5554
5542
 
5555
5543
  /**
5556
5544
  * Creates an array of unique values, in order, from all of the provided arrays
5557
- * using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
5545
+ * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
5558
5546
  * for equality comparisons.
5559
5547
  *
5560
5548
  * @static
@@ -5573,7 +5561,7 @@
5573
5561
 
5574
5562
  /**
5575
5563
  * Creates a duplicate-free version of an array, using
5576
- * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
5564
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
5577
5565
  * for equality comparisons, in which only the first occurence of each element
5578
5566
  * is kept. Providing `true` for `isSorted` performs a faster search algorithm
5579
5567
  * for sorted arrays. If an iteratee function is provided it is invoked for
@@ -5627,7 +5615,7 @@
5627
5615
  }
5628
5616
  if (isSorted != null && typeof isSorted != 'boolean') {
5629
5617
  thisArg = iteratee;
5630
- iteratee = isIterateeCall(array, isSorted, thisArg) ? null : isSorted;
5618
+ iteratee = isIterateeCall(array, isSorted, thisArg) ? undefined : isSorted;
5631
5619
  isSorted = false;
5632
5620
  }
5633
5621
  var callback = getCallback();
@@ -5714,7 +5702,7 @@
5714
5702
 
5715
5703
  /**
5716
5704
  * Creates an array excluding all provided values using
5717
- * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
5705
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
5718
5706
  * for equality comparisons.
5719
5707
  *
5720
5708
  * @static
@@ -5756,7 +5744,7 @@
5756
5744
  var array = arguments[index];
5757
5745
  if (isArrayLike(array)) {
5758
5746
  var result = result
5759
- ? baseDifference(result, array).concat(baseDifference(array, result))
5747
+ ? arrayPush(baseDifference(result, array), baseDifference(array, result))
5760
5748
  : array;
5761
5749
  }
5762
5750
  }
@@ -5978,16 +5966,16 @@
5978
5966
  * @example
5979
5967
  *
5980
5968
  * var array = [1, 2];
5981
- * var wrapper = _(array).push(3);
5969
+ * var wrapped = _(array).push(3);
5982
5970
  *
5983
5971
  * console.log(array);
5984
5972
  * // => [1, 2]
5985
5973
  *
5986
- * wrapper = wrapper.commit();
5974
+ * wrapped = wrapped.commit();
5987
5975
  * console.log(array);
5988
5976
  * // => [1, 2, 3]
5989
5977
  *
5990
- * wrapper.last();
5978
+ * wrapped.last();
5991
5979
  * // => 3
5992
5980
  *
5993
5981
  * console.log(array);
@@ -5997,6 +5985,33 @@
5997
5985
  return new LodashWrapper(this.value(), this.__chain__);
5998
5986
  }
5999
5987
 
5988
+ /**
5989
+ * Creates a new array joining a wrapped array with any additional arrays
5990
+ * and/or values.
5991
+ *
5992
+ * @name concat
5993
+ * @memberOf _
5994
+ * @category Chain
5995
+ * @param {...*} [values] The values to concatenate.
5996
+ * @returns {Array} Returns the new concatenated array.
5997
+ * @example
5998
+ *
5999
+ * var array = [1];
6000
+ * var wrapped = _(array).concat(2, [3], [[4]]);
6001
+ *
6002
+ * console.log(wrapped.value());
6003
+ * // => [1, 2, 3, [4]]
6004
+ *
6005
+ * console.log(array);
6006
+ * // => [1]
6007
+ */
6008
+ var wrapperConcat = restParam(function(values) {
6009
+ values = baseFlatten(values);
6010
+ return this.thru(function(array) {
6011
+ return arrayConcat(isArray(array) ? array : [toObject(array)], values);
6012
+ });
6013
+ });
6014
+
6000
6015
  /**
6001
6016
  * Creates a clone of the chained sequence planting `value` as the wrapped value.
6002
6017
  *
@@ -6007,17 +6022,17 @@
6007
6022
  * @example
6008
6023
  *
6009
6024
  * var array = [1, 2];
6010
- * var wrapper = _(array).map(function(value) {
6025
+ * var wrapped = _(array).map(function(value) {
6011
6026
  * return Math.pow(value, 2);
6012
6027
  * });
6013
6028
  *
6014
6029
  * var other = [3, 4];
6015
- * var otherWrapper = wrapper.plant(other);
6030
+ * var otherWrapped = wrapped.plant(other);
6016
6031
  *
6017
- * otherWrapper.value();
6032
+ * otherWrapped.value();
6018
6033
  * // => [9, 16]
6019
6034
  *
6020
- * wrapper.value();
6035
+ * wrapped.value();
6021
6036
  * // => [1, 4]
6022
6037
  */
6023
6038
  function wrapperPlant(value) {
@@ -6060,15 +6075,20 @@
6060
6075
  */
6061
6076
  function wrapperReverse() {
6062
6077
  var value = this.__wrapped__;
6078
+
6079
+ var interceptor = function(value) {
6080
+ return (wrapped && wrapped.__dir__ < 0) ? value : value.reverse();
6081
+ };
6063
6082
  if (value instanceof LazyWrapper) {
6083
+ var wrapped = value;
6064
6084
  if (this.__actions__.length) {
6065
- value = new LazyWrapper(this);
6085
+ wrapped = new LazyWrapper(this);
6066
6086
  }
6067
- return new LodashWrapper(value.reverse(), this.__chain__);
6087
+ wrapped = wrapped.reverse();
6088
+ wrapped.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });
6089
+ return new LodashWrapper(wrapped, this.__chain__);
6068
6090
  }
6069
- return this.thru(function(value) {
6070
- return value.reverse();
6071
- });
6091
+ return this.thru(interceptor);
6072
6092
  }
6073
6093
 
6074
6094
  /**
@@ -6226,7 +6246,7 @@
6226
6246
  function every(collection, predicate, thisArg) {
6227
6247
  var func = isArray(collection) ? arrayEvery : baseEvery;
6228
6248
  if (thisArg && isIterateeCall(collection, predicate, thisArg)) {
6229
- predicate = null;
6249
+ predicate = undefined;
6230
6250
  }
6231
6251
  if (typeof predicate != 'function' || thisArg !== undefined) {
6232
6252
  predicate = getCallback(predicate, thisArg, 3);
@@ -6500,7 +6520,7 @@
6500
6520
 
6501
6521
  /**
6502
6522
  * Checks if `value` is in `collection` using
6503
- * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
6523
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
6504
6524
  * for equality comparisons. If `fromIndex` is negative, it is used as the offset
6505
6525
  * from the end of `collection`.
6506
6526
  *
@@ -6533,17 +6553,14 @@
6533
6553
  collection = values(collection);
6534
6554
  length = collection.length;
6535
6555
  }
6536
- if (!length) {
6537
- return false;
6538
- }
6539
6556
  if (typeof fromIndex != 'number' || (guard && isIterateeCall(target, fromIndex, guard))) {
6540
6557
  fromIndex = 0;
6541
6558
  } else {
6542
6559
  fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : (fromIndex || 0);
6543
6560
  }
6544
6561
  return (typeof collection == 'string' || !isArray(collection) && isString(collection))
6545
- ? (fromIndex < length && collection.indexOf(target, fromIndex) > -1)
6546
- : (getIndexOf(collection, target, fromIndex) > -1);
6562
+ ? (fromIndex <= length && collection.indexOf(target, fromIndex) > -1)
6563
+ : (!!length && getIndexOf(collection, target, fromIndex) > -1);
6547
6564
  }
6548
6565
 
6549
6566
  /**
@@ -6625,7 +6642,7 @@
6625
6642
  result = isArrayLike(collection) ? Array(collection.length) : [];
6626
6643
 
6627
6644
  baseEach(collection, function(value) {
6628
- var func = isFunc ? path : ((isProp && value != null) ? value[path] : null);
6645
+ var func = isFunc ? path : ((isProp && value != null) ? value[path] : undefined);
6629
6646
  result[++index] = func ? func.apply(value, args) : invokePath(value, path, args);
6630
6647
  });
6631
6648
  return result;
@@ -6795,7 +6812,8 @@
6795
6812
  * `_.reduce`, `_.reduceRight`, and `_.transform`.
6796
6813
  *
6797
6814
  * The guarded methods are:
6798
- * `assign`, `defaults`, `includes`, `merge`, `sortByAll`, and `sortByOrder`
6815
+ * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `sortByAll`,
6816
+ * and `sortByOrder`
6799
6817
  *
6800
6818
  * @static
6801
6819
  * @memberOf _
@@ -7025,7 +7043,7 @@
7025
7043
  function some(collection, predicate, thisArg) {
7026
7044
  var func = isArray(collection) ? arraySome : baseSome;
7027
7045
  if (thisArg && isIterateeCall(collection, predicate, thisArg)) {
7028
- predicate = null;
7046
+ predicate = undefined;
7029
7047
  }
7030
7048
  if (typeof predicate != 'function' || thisArg !== undefined) {
7031
7049
  predicate = getCallback(predicate, thisArg, 3);
@@ -7086,7 +7104,7 @@
7086
7104
  return [];
7087
7105
  }
7088
7106
  if (thisArg && isIterateeCall(collection, iteratee, thisArg)) {
7089
- iteratee = null;
7107
+ iteratee = undefined;
7090
7108
  }
7091
7109
  var index = -1;
7092
7110
  iteratee = getCallback(iteratee, thisArg, 3);
@@ -7145,9 +7163,9 @@
7145
7163
 
7146
7164
  /**
7147
7165
  * This method is like `_.sortByAll` except that it allows specifying the
7148
- * sort orders of the iteratees to sort by. A truthy value in `orders` will
7149
- * sort the corresponding property name in ascending order while a falsey
7150
- * value will sort it in descending order.
7166
+ * sort orders of the iteratees to sort by. If `orders` is unspecified, all
7167
+ * values are sorted in ascending order. Otherwise, a value is sorted in
7168
+ * ascending order if its corresponding order is "asc", and descending if "desc".
7151
7169
  *
7152
7170
  * If a property name is provided for an iteratee the created `_.property`
7153
7171
  * style callback returns the property value of the given element.
@@ -7161,7 +7179,7 @@
7161
7179
  * @category Collection
7162
7180
  * @param {Array|Object|string} collection The collection to iterate over.
7163
7181
  * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
7164
- * @param {boolean[]} orders The sort orders of `iteratees`.
7182
+ * @param {boolean[]} [orders] The sort orders of `iteratees`.
7165
7183
  * @param- {Object} [guard] Enables use as a callback for functions like `_.reduce`.
7166
7184
  * @returns {Array} Returns the new sorted array.
7167
7185
  * @example
@@ -7174,7 +7192,7 @@
7174
7192
  * ];
7175
7193
  *
7176
7194
  * // sort by `user` in ascending order and by `age` in descending order
7177
- * _.map(_.sortByOrder(users, ['user', 'age'], [true, false]), _.values);
7195
+ * _.map(_.sortByOrder(users, ['user', 'age'], ['asc', 'desc']), _.values);
7178
7196
  * // => [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]]
7179
7197
  */
7180
7198
  function sortByOrder(collection, iteratees, orders, guard) {
@@ -7182,7 +7200,7 @@
7182
7200
  return [];
7183
7201
  }
7184
7202
  if (guard && isIterateeCall(iteratees, orders, guard)) {
7185
- orders = null;
7203
+ orders = undefined;
7186
7204
  }
7187
7205
  if (!isArray(iteratees)) {
7188
7206
  iteratees = iteratees == null ? [] : [iteratees];
@@ -7307,10 +7325,10 @@
7307
7325
  */
7308
7326
  function ary(func, n, guard) {
7309
7327
  if (guard && isIterateeCall(func, n, guard)) {
7310
- n = null;
7328
+ n = undefined;
7311
7329
  }
7312
7330
  n = (func && n == null) ? func.length : nativeMax(+n || 0, 0);
7313
- return createWrapper(func, ARY_FLAG, null, null, null, null, n);
7331
+ return createWrapper(func, ARY_FLAG, undefined, undefined, undefined, undefined, n);
7314
7332
  }
7315
7333
 
7316
7334
  /**
@@ -7345,7 +7363,7 @@
7345
7363
  result = func.apply(this, arguments);
7346
7364
  }
7347
7365
  if (n <= 1) {
7348
- func = null;
7366
+ func = undefined;
7349
7367
  }
7350
7368
  return result;
7351
7369
  };
@@ -7653,9 +7671,9 @@
7653
7671
  var leading = true;
7654
7672
  trailing = false;
7655
7673
  } else if (isObject(options)) {
7656
- leading = options.leading;
7674
+ leading = !!options.leading;
7657
7675
  maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait);
7658
- trailing = 'trailing' in options ? options.trailing : trailing;
7676
+ trailing = 'trailing' in options ? !!options.trailing : trailing;
7659
7677
  }
7660
7678
 
7661
7679
  function cancel() {
@@ -7665,41 +7683,35 @@
7665
7683
  if (maxTimeoutId) {
7666
7684
  clearTimeout(maxTimeoutId);
7667
7685
  }
7686
+ lastCalled = 0;
7668
7687
  maxTimeoutId = timeoutId = trailingCall = undefined;
7669
7688
  }
7670
7689
 
7690
+ function complete(isCalled, id) {
7691
+ if (id) {
7692
+ clearTimeout(id);
7693
+ }
7694
+ maxTimeoutId = timeoutId = trailingCall = undefined;
7695
+ if (isCalled) {
7696
+ lastCalled = now();
7697
+ result = func.apply(thisArg, args);
7698
+ if (!timeoutId && !maxTimeoutId) {
7699
+ args = thisArg = undefined;
7700
+ }
7701
+ }
7702
+ }
7703
+
7671
7704
  function delayed() {
7672
7705
  var remaining = wait - (now() - stamp);
7673
7706
  if (remaining <= 0 || remaining > wait) {
7674
- if (maxTimeoutId) {
7675
- clearTimeout(maxTimeoutId);
7676
- }
7677
- var isCalled = trailingCall;
7678
- maxTimeoutId = timeoutId = trailingCall = undefined;
7679
- if (isCalled) {
7680
- lastCalled = now();
7681
- result = func.apply(thisArg, args);
7682
- if (!timeoutId && !maxTimeoutId) {
7683
- args = thisArg = null;
7684
- }
7685
- }
7707
+ complete(trailingCall, maxTimeoutId);
7686
7708
  } else {
7687
7709
  timeoutId = setTimeout(delayed, remaining);
7688
7710
  }
7689
7711
  }
7690
7712
 
7691
7713
  function maxDelayed() {
7692
- if (timeoutId) {
7693
- clearTimeout(timeoutId);
7694
- }
7695
- maxTimeoutId = timeoutId = trailingCall = undefined;
7696
- if (trailing || (maxWait !== wait)) {
7697
- lastCalled = now();
7698
- result = func.apply(thisArg, args);
7699
- if (!timeoutId && !maxTimeoutId) {
7700
- args = thisArg = null;
7701
- }
7702
- }
7714
+ complete(trailing, timeoutId);
7703
7715
  }
7704
7716
 
7705
7717
  function debounced() {
@@ -7739,7 +7751,7 @@
7739
7751
  result = func.apply(thisArg, args);
7740
7752
  }
7741
7753
  if (isCalled && !timeoutId && !maxTimeoutId) {
7742
- args = thisArg = null;
7754
+ args = thisArg = undefined;
7743
7755
  }
7744
7756
  return result;
7745
7757
  }
@@ -7844,7 +7856,7 @@
7844
7856
  *
7845
7857
  * **Note:** The cache is exposed as the `cache` property on the memoized
7846
7858
  * function. Its creation may be customized by replacing the `_.memoize.Cache`
7847
- * constructor with one whose instances implement the [`Map`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-properties-of-the-map-prototype-object)
7859
+ * constructor with one whose instances implement the [`Map`](http://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-map-prototype-object)
7848
7860
  * method interface of `get`, `has`, and `set`.
7849
7861
  *
7850
7862
  * @static
@@ -7905,6 +7917,52 @@
7905
7917
  return memoized;
7906
7918
  }
7907
7919
 
7920
+ /**
7921
+ * Creates a function that runs each argument through a corresponding
7922
+ * transform function.
7923
+ *
7924
+ * @static
7925
+ * @memberOf _
7926
+ * @category Function
7927
+ * @param {Function} func The function to wrap.
7928
+ * @param {...(Function|Function[])} [transforms] The functions to transform
7929
+ * arguments, specified as individual functions or arrays of functions.
7930
+ * @returns {Function} Returns the new function.
7931
+ * @example
7932
+ *
7933
+ * function doubled(n) {
7934
+ * return n * 2;
7935
+ * }
7936
+ *
7937
+ * function square(n) {
7938
+ * return n * n;
7939
+ * }
7940
+ *
7941
+ * var modded = _.modArgs(function(x, y) {
7942
+ * return [x, y];
7943
+ * }, square, doubled);
7944
+ *
7945
+ * modded(1, 2);
7946
+ * // => [1, 4]
7947
+ *
7948
+ * modded(5, 10);
7949
+ * // => [25, 20]
7950
+ */
7951
+ var modArgs = restParam(function(func, transforms) {
7952
+ transforms = baseFlatten(transforms);
7953
+ if (typeof func != 'function' || !arrayEvery(transforms, baseIsFunction)) {
7954
+ throw new TypeError(FUNC_ERROR_TEXT);
7955
+ }
7956
+ var length = transforms.length;
7957
+ return restParam(function(args) {
7958
+ var index = nativeMin(args.length, length);
7959
+ while (index--) {
7960
+ args[index] = transforms[index](args[index]);
7961
+ }
7962
+ return func.apply(this, args);
7963
+ });
7964
+ });
7965
+
7908
7966
  /**
7909
7967
  * Creates a function that negates the result of the predicate `func`. The
7910
7968
  * `func` predicate is invoked with the `this` binding and arguments of the
@@ -8050,7 +8108,7 @@
8050
8108
  * // => [3, 6, 9]
8051
8109
  */
8052
8110
  var rearg = restParam(function(func, indexes) {
8053
- return createWrapper(func, REARG_FLAG, null, null, null, baseFlatten(indexes));
8111
+ return createWrapper(func, REARG_FLAG, undefined, undefined, undefined, baseFlatten(indexes));
8054
8112
  });
8055
8113
 
8056
8114
  /**
@@ -8196,10 +8254,7 @@
8196
8254
  leading = 'leading' in options ? !!options.leading : leading;
8197
8255
  trailing = 'trailing' in options ? !!options.trailing : trailing;
8198
8256
  }
8199
- debounceOptions.leading = leading;
8200
- debounceOptions.maxWait = +wait;
8201
- debounceOptions.trailing = trailing;
8202
- return debounce(func, wait, debounceOptions);
8257
+ return debounce(func, wait, { 'leading': leading, 'maxWait': +wait, 'trailing': trailing });
8203
8258
  }
8204
8259
 
8205
8260
  /**
@@ -8225,7 +8280,7 @@
8225
8280
  */
8226
8281
  function wrap(value, wrapper) {
8227
8282
  wrapper = wrapper == null ? identity : wrapper;
8228
- return createWrapper(wrapper, PARTIAL_FLAG, null, [value], []);
8283
+ return createWrapper(wrapper, PARTIAL_FLAG, undefined, [value], []);
8229
8284
  }
8230
8285
 
8231
8286
  /*------------------------------------------------------------------------*/
@@ -8411,7 +8466,8 @@
8411
8466
  * // => false
8412
8467
  */
8413
8468
  function isArguments(value) {
8414
- return isObjectLike(value) && isArrayLike(value) && objToString.call(value) == argsTag;
8469
+ return isObjectLike(value) && isArrayLike(value) &&
8470
+ hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');
8415
8471
  }
8416
8472
 
8417
8473
  /**
@@ -8491,14 +8547,7 @@
8491
8547
  * // => false
8492
8548
  */
8493
8549
  function isElement(value) {
8494
- return !!value && value.nodeType === 1 && isObjectLike(value) &&
8495
- (objToString.call(value).indexOf('Element') > -1);
8496
- }
8497
- // Fallback for environments without DOM support.
8498
- if (!support.dom) {
8499
- isElement = function(value) {
8500
- return !!value && value.nodeType === 1 && isObjectLike(value) && !isPlainObject(value);
8501
- };
8550
+ return !!value && value.nodeType === 1 && isObjectLike(value) && !isPlainObject(value);
8502
8551
  }
8503
8552
 
8504
8553
  /**
@@ -8613,7 +8662,7 @@
8613
8662
  /**
8614
8663
  * Checks if `value` is a finite primitive number.
8615
8664
  *
8616
- * **Note:** This method is based on [`Number.isFinite`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isfinite).
8665
+ * **Note:** This method is based on [`Number.isFinite`](http://ecma-international.org/ecma-262/6.0/#sec-number.isfinite).
8617
8666
  *
8618
8667
  * @static
8619
8668
  * @memberOf _
@@ -8637,9 +8686,9 @@
8637
8686
  * _.isFinite(Infinity);
8638
8687
  * // => false
8639
8688
  */
8640
- var isFinite = nativeNumIsFinite || function(value) {
8689
+ function isFinite(value) {
8641
8690
  return typeof value == 'number' && nativeIsFinite(value);
8642
- };
8691
+ }
8643
8692
 
8644
8693
  /**
8645
8694
  * Checks if `value` is classified as a `Function` object.
@@ -8657,12 +8706,12 @@
8657
8706
  * _.isFunction(/abc/);
8658
8707
  * // => false
8659
8708
  */
8660
- var isFunction = !(baseIsFunction(/x/) || (Uint8Array && !baseIsFunction(Uint8Array))) ? baseIsFunction : function(value) {
8709
+ function isFunction(value) {
8661
8710
  // The use of `Object#toString` avoids issues with the `typeof` operator
8662
8711
  // in older versions of Chrome and Safari which return 'function' for regexes
8663
8712
  // and Safari 8 equivalents which return 'object' for typed array constructors.
8664
- return objToString.call(value) == funcTag;
8665
- };
8713
+ return isObject(value) && objToString.call(value) == funcTag;
8714
+ }
8666
8715
 
8667
8716
  /**
8668
8717
  * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.
@@ -8786,7 +8835,7 @@
8786
8835
  if (value == null) {
8787
8836
  return false;
8788
8837
  }
8789
- if (objToString.call(value) == funcTag) {
8838
+ if (isFunction(value)) {
8790
8839
  return reIsNative.test(fnToString.call(value));
8791
8840
  }
8792
8841
  return isObjectLike(value) && reIsHostCtor.test(value);
@@ -8868,17 +8917,26 @@
8868
8917
  * _.isPlainObject(Object.create(null));
8869
8918
  * // => true
8870
8919
  */
8871
- var isPlainObject = !getPrototypeOf ? shimIsPlainObject : function(value) {
8872
- if (!(value && objToString.call(value) == objectTag)) {
8920
+ function isPlainObject(value) {
8921
+ var Ctor;
8922
+
8923
+ // Exit early for non `Object` objects.
8924
+ if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isArguments(value)) ||
8925
+ (!hasOwnProperty.call(value, 'constructor') && (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) {
8873
8926
  return false;
8874
8927
  }
8875
- var valueOf = getNative(value, 'valueOf'),
8876
- objProto = valueOf && (objProto = getPrototypeOf(valueOf)) && getPrototypeOf(objProto);
8877
-
8878
- return objProto
8879
- ? (value == objProto || getPrototypeOf(value) == objProto)
8880
- : shimIsPlainObject(value);
8881
- };
8928
+ // IE < 9 iterates inherited properties before own properties. If the first
8929
+ // iterated property is an object's own property then there are no inherited
8930
+ // enumerable properties.
8931
+ var result;
8932
+ // In most environments an object's own properties are iterated before
8933
+ // its inherited properties. If the last iterated property is an object's
8934
+ // own property then there are no inherited enumerable properties.
8935
+ baseForIn(value, function(subValue, key) {
8936
+ result = key;
8937
+ });
8938
+ return result === undefined || hasOwnProperty.call(value, result);
8939
+ }
8882
8940
 
8883
8941
  /**
8884
8942
  * Checks if `value` is classified as a `RegExp` object.
@@ -8897,7 +8955,7 @@
8897
8955
  * // => false
8898
8956
  */
8899
8957
  function isRegExp(value) {
8900
- return isObjectLike(value) && objToString.call(value) == regexpTag;
8958
+ return isObject(value) && objToString.call(value) == regexpTag;
8901
8959
  }
8902
8960
 
8903
8961
  /**
@@ -9063,6 +9121,56 @@
9063
9121
 
9064
9122
  /*------------------------------------------------------------------------*/
9065
9123
 
9124
+ /**
9125
+ * Recursively merges own enumerable properties of the source object(s), that
9126
+ * don't resolve to `undefined` into the destination object. Subsequent sources
9127
+ * overwrite property assignments of previous sources. If `customizer` is
9128
+ * provided it is invoked to produce the merged values of the destination and
9129
+ * source properties. If `customizer` returns `undefined` merging is handled
9130
+ * by the method instead. The `customizer` is bound to `thisArg` and invoked
9131
+ * with five arguments: (objectValue, sourceValue, key, object, source).
9132
+ *
9133
+ * @static
9134
+ * @memberOf _
9135
+ * @category Object
9136
+ * @param {Object} object The destination object.
9137
+ * @param {...Object} [sources] The source objects.
9138
+ * @param {Function} [customizer] The function to customize assigned values.
9139
+ * @param {*} [thisArg] The `this` binding of `customizer`.
9140
+ * @returns {Object} Returns `object`.
9141
+ * @example
9142
+ *
9143
+ * var users = {
9144
+ * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]
9145
+ * };
9146
+ *
9147
+ * var ages = {
9148
+ * 'data': [{ 'age': 36 }, { 'age': 40 }]
9149
+ * };
9150
+ *
9151
+ * _.merge(users, ages);
9152
+ * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }
9153
+ *
9154
+ * // using a customizer callback
9155
+ * var object = {
9156
+ * 'fruits': ['apple'],
9157
+ * 'vegetables': ['beet']
9158
+ * };
9159
+ *
9160
+ * var other = {
9161
+ * 'fruits': ['banana'],
9162
+ * 'vegetables': ['carrot']
9163
+ * };
9164
+ *
9165
+ * _.merge(object, other, function(a, b) {
9166
+ * if (_.isArray(a)) {
9167
+ * return a.concat(b);
9168
+ * }
9169
+ * });
9170
+ * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }
9171
+ */
9172
+ var merge = createAssigner(baseMerge);
9173
+
9066
9174
  /**
9067
9175
  * Assigns own enumerable properties of source object(s) to the destination
9068
9176
  * object. Subsequent sources overwrite property assignments of previous sources.
@@ -9071,7 +9179,7 @@
9071
9179
  * (objectValue, sourceValue, key, object, source).
9072
9180
  *
9073
9181
  * **Note:** This method mutates `object` and is based on
9074
- * [`Object.assign`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign).
9182
+ * [`Object.assign`](http://ecma-international.org/ecma-262/6.0/#sec-object.assign).
9075
9183
  *
9076
9184
  * @static
9077
9185
  * @memberOf _
@@ -9138,7 +9246,7 @@
9138
9246
  function create(prototype, properties, guard) {
9139
9247
  var result = baseCreate(prototype);
9140
9248
  if (guard && isIterateeCall(prototype, properties, guard)) {
9141
- properties = null;
9249
+ properties = undefined;
9142
9250
  }
9143
9251
  return properties ? baseAssign(result, properties) : result;
9144
9252
  }
@@ -9161,14 +9269,27 @@
9161
9269
  * _.defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' });
9162
9270
  * // => { 'user': 'barney', 'age': 36 }
9163
9271
  */
9164
- var defaults = restParam(function(args) {
9165
- var object = args[0];
9166
- if (object == null) {
9167
- return object;
9168
- }
9169
- args.push(assignDefaults);
9170
- return assign.apply(undefined, args);
9171
- });
9272
+ var defaults = createDefaults(assign, assignDefaults);
9273
+
9274
+ /**
9275
+ * This method is like `_.defaults` except that it recursively assigns
9276
+ * default properties.
9277
+ *
9278
+ * **Note:** This method mutates `object`.
9279
+ *
9280
+ * @static
9281
+ * @memberOf _
9282
+ * @category Object
9283
+ * @param {Object} object The destination object.
9284
+ * @param {...Object} [sources] The source objects.
9285
+ * @returns {Object} Returns `object`.
9286
+ * @example
9287
+ *
9288
+ * _.defaultsDeep({ 'user': { 'name': 'barney' } }, { 'user': { 'name': 'fred', 'age': 36 } });
9289
+ * // => { 'user': { 'name': 'barney', 'age': 36 } }
9290
+ *
9291
+ */
9292
+ var defaultsDeep = createDefaults(merge, mergeDefaults);
9172
9293
 
9173
9294
  /**
9174
9295
  * This method is like `_.find` except that it returns the key of the first
@@ -9495,7 +9616,7 @@
9495
9616
  */
9496
9617
  function invert(object, multiValue, guard) {
9497
9618
  if (guard && isIterateeCall(object, multiValue, guard)) {
9498
- multiValue = null;
9619
+ multiValue = undefined;
9499
9620
  }
9500
9621
  var index = -1,
9501
9622
  props = keys(object),
@@ -9524,7 +9645,7 @@
9524
9645
  * Creates an array of the own enumerable property names of `object`.
9525
9646
  *
9526
9647
  * **Note:** Non-object values are coerced to objects. See the
9527
- * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.keys)
9648
+ * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)
9528
9649
  * for more details.
9529
9650
  *
9530
9651
  * @static
@@ -9548,7 +9669,7 @@
9548
9669
  * // => ['0', '1']
9549
9670
  */
9550
9671
  var keys = !nativeKeys ? shimKeys : function(object) {
9551
- var Ctor = object == null ? null : object.constructor;
9672
+ var Ctor = object == null ? undefined : object.constructor;
9552
9673
  if ((typeof Ctor == 'function' && Ctor.prototype === object) ||
9553
9674
  (typeof object != 'function' && isArrayLike(object))) {
9554
9675
  return shimKeys(object);
@@ -9672,56 +9793,6 @@
9672
9793
  */
9673
9794
  var mapValues = createObjectMapper();
9674
9795
 
9675
- /**
9676
- * Recursively merges own enumerable properties of the source object(s), that
9677
- * don't resolve to `undefined` into the destination object. Subsequent sources
9678
- * overwrite property assignments of previous sources. If `customizer` is
9679
- * provided it is invoked to produce the merged values of the destination and
9680
- * source properties. If `customizer` returns `undefined` merging is handled
9681
- * by the method instead. The `customizer` is bound to `thisArg` and invoked
9682
- * with five arguments: (objectValue, sourceValue, key, object, source).
9683
- *
9684
- * @static
9685
- * @memberOf _
9686
- * @category Object
9687
- * @param {Object} object The destination object.
9688
- * @param {...Object} [sources] The source objects.
9689
- * @param {Function} [customizer] The function to customize assigned values.
9690
- * @param {*} [thisArg] The `this` binding of `customizer`.
9691
- * @returns {Object} Returns `object`.
9692
- * @example
9693
- *
9694
- * var users = {
9695
- * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]
9696
- * };
9697
- *
9698
- * var ages = {
9699
- * 'data': [{ 'age': 36 }, { 'age': 40 }]
9700
- * };
9701
- *
9702
- * _.merge(users, ages);
9703
- * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }
9704
- *
9705
- * // using a customizer callback
9706
- * var object = {
9707
- * 'fruits': ['apple'],
9708
- * 'vegetables': ['beet']
9709
- * };
9710
- *
9711
- * var other = {
9712
- * 'fruits': ['banana'],
9713
- * 'vegetables': ['carrot']
9714
- * };
9715
- *
9716
- * _.merge(object, other, function(a, b) {
9717
- * if (_.isArray(a)) {
9718
- * return a.concat(b);
9719
- * }
9720
- * });
9721
- * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }
9722
- */
9723
- var merge = createAssigner(baseMerge);
9724
-
9725
9796
  /**
9726
9797
  * The opposite of `_.pick`; this method creates an object composed of the
9727
9798
  * own and inherited enumerable properties of `object` that are not omitted.
@@ -9952,7 +10023,7 @@
9952
10023
  if (isArr) {
9953
10024
  accumulator = isArray(object) ? new Ctor : [];
9954
10025
  } else {
9955
- accumulator = baseCreate(isFunction(Ctor) ? Ctor.prototype : null);
10026
+ accumulator = baseCreate(isFunction(Ctor) ? Ctor.prototype : undefined);
9956
10027
  }
9957
10028
  } else {
9958
10029
  accumulator = {};
@@ -10055,7 +10126,7 @@
10055
10126
  */
10056
10127
  function inRange(value, start, end) {
10057
10128
  start = +start || 0;
10058
- if (typeof end === 'undefined') {
10129
+ if (end === undefined) {
10059
10130
  end = start;
10060
10131
  start = 0;
10061
10132
  } else {
@@ -10093,7 +10164,7 @@
10093
10164
  */
10094
10165
  function random(min, max, floating) {
10095
10166
  if (floating && isIterateeCall(min, max, floating)) {
10096
- max = floating = null;
10167
+ max = floating = undefined;
10097
10168
  }
10098
10169
  var noMin = min == null,
10099
10170
  noMax = max == null;
@@ -10280,8 +10351,8 @@
10280
10351
  function escapeRegExp(string) {
10281
10352
  string = baseToString(string);
10282
10353
  return (string && reHasRegExpChars.test(string))
10283
- ? string.replace(reRegExpChars, '\\$&')
10284
- : string;
10354
+ ? string.replace(reRegExpChars, escapeRegExpChar)
10355
+ : (string || '(?:)');
10285
10356
  }
10286
10357
 
10287
10358
  /**
@@ -10338,8 +10409,8 @@
10338
10409
  return string;
10339
10410
  }
10340
10411
  var mid = (length - strLength) / 2,
10341
- leftLength = floor(mid),
10342
- rightLength = ceil(mid);
10412
+ leftLength = nativeFloor(mid),
10413
+ rightLength = nativeCeil(mid);
10343
10414
 
10344
10415
  chars = createPadding('', rightLength, chars);
10345
10416
  return chars.slice(0, leftLength) + string + chars;
@@ -10417,25 +10488,16 @@
10417
10488
  * // => [6, 8, 10]
10418
10489
  */
10419
10490
  function parseInt(string, radix, guard) {
10420
- if (guard && isIterateeCall(string, radix, guard)) {
10491
+ // Firefox < 21 and Opera < 15 follow ES3 for `parseInt`.
10492
+ // Chrome fails to trim leading <BOM> whitespace characters.
10493
+ // See https://code.google.com/p/v8/issues/detail?id=3109 for more details.
10494
+ if (guard ? isIterateeCall(string, radix, guard) : radix == null) {
10421
10495
  radix = 0;
10496
+ } else if (radix) {
10497
+ radix = +radix;
10422
10498
  }
10423
- return nativeParseInt(string, radix);
10424
- }
10425
- // Fallback for environments with pre-ES5 implementations.
10426
- if (nativeParseInt(whitespace + '08') != 8) {
10427
- parseInt = function(string, radix, guard) {
10428
- // Firefox < 21 and Opera < 15 follow ES3 for `parseInt`.
10429
- // Chrome fails to trim leading <BOM> whitespace characters.
10430
- // See https://code.google.com/p/v8/issues/detail?id=3109 for more details.
10431
- if (guard ? isIterateeCall(string, radix, guard) : radix == null) {
10432
- radix = 0;
10433
- } else if (radix) {
10434
- radix = +radix;
10435
- }
10436
- string = trim(string);
10437
- return nativeParseInt(string, radix || (reHasHexPrefix.test(string) ? 16 : 10));
10438
- };
10499
+ string = trim(string);
10500
+ return nativeParseInt(string, radix || (reHasHexPrefix.test(string) ? 16 : 10));
10439
10501
  }
10440
10502
 
10441
10503
  /**
@@ -10471,7 +10533,7 @@
10471
10533
  if (n % 2) {
10472
10534
  result += string;
10473
10535
  }
10474
- n = floor(n / 2);
10536
+ n = nativeFloor(n / 2);
10475
10537
  string += string;
10476
10538
  } while (n);
10477
10539
 
@@ -10656,7 +10718,7 @@
10656
10718
  var settings = lodash.templateSettings;
10657
10719
 
10658
10720
  if (otherOptions && isIterateeCall(string, options, otherOptions)) {
10659
- options = otherOptions = null;
10721
+ options = otherOptions = undefined;
10660
10722
  }
10661
10723
  string = baseToString(string);
10662
10724
  options = assignWith(baseAssign({}, otherOptions || options), settings, assignOwnDefaults);
@@ -10892,7 +10954,7 @@
10892
10954
  */
10893
10955
  function trunc(string, options, guard) {
10894
10956
  if (guard && isIterateeCall(string, options, guard)) {
10895
- options = null;
10957
+ options = undefined;
10896
10958
  }
10897
10959
  var length = DEFAULT_TRUNC_LENGTH,
10898
10960
  omission = DEFAULT_TRUNC_OMISSION;
@@ -10987,7 +11049,7 @@
10987
11049
  */
10988
11050
  function words(string, pattern, guard) {
10989
11051
  if (guard && isIterateeCall(string, pattern, guard)) {
10990
- pattern = null;
11052
+ pattern = undefined;
10991
11053
  }
10992
11054
  string = baseToString(string);
10993
11055
  return string.match(pattern || reWords) || [];
@@ -11063,7 +11125,7 @@
11063
11125
  */
11064
11126
  function callback(func, thisArg, guard) {
11065
11127
  if (guard && isIterateeCall(func, thisArg, guard)) {
11066
- thisArg = null;
11128
+ thisArg = undefined;
11067
11129
  }
11068
11130
  return isObjectLike(func)
11069
11131
  ? matches(func)
@@ -11264,8 +11326,8 @@
11264
11326
  function mixin(object, source, options) {
11265
11327
  if (options == null) {
11266
11328
  var isObj = isObject(source),
11267
- props = isObj ? keys(source) : null,
11268
- methodNames = (props && props.length) ? baseFunctions(source, props) : null;
11329
+ props = isObj ? keys(source) : undefined,
11330
+ methodNames = (props && props.length) ? baseFunctions(source, props) : undefined;
11269
11331
 
11270
11332
  if (!(methodNames ? methodNames.length : isObj)) {
11271
11333
  methodNames = false;
@@ -11304,9 +11366,7 @@
11304
11366
  result.__chain__ = chainAll;
11305
11367
  return result;
11306
11368
  }
11307
- var args = [this.value()];
11308
- push.apply(args, arguments);
11309
- return func.apply(object, args);
11369
+ return func.apply(object, arrayPush([this.value()], arguments));
11310
11370
  };
11311
11371
  }(func));
11312
11372
  }
@@ -11327,7 +11387,7 @@
11327
11387
  * var lodash = _.noConflict();
11328
11388
  */
11329
11389
  function noConflict() {
11330
- context._ = oldDash;
11390
+ root._ = oldDash;
11331
11391
  return this;
11332
11392
  }
11333
11393
 
@@ -11436,7 +11496,7 @@
11436
11496
  */
11437
11497
  function range(start, end, step) {
11438
11498
  if (step && isIterateeCall(start, end, step)) {
11439
- end = step = null;
11499
+ end = step = undefined;
11440
11500
  }
11441
11501
  start = +start || 0;
11442
11502
  step = step == null ? 1 : (+step || 0);
@@ -11450,7 +11510,7 @@
11450
11510
  // Use `Array(length)` so engines like Chakra and V8 avoid slower modes.
11451
11511
  // See https://youtu.be/XAqIpGU8ZZk#t=17m25s for more details.
11452
11512
  var index = -1,
11453
- length = nativeMax(ceil((end - start) / (step || 1)), 0),
11513
+ length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),
11454
11514
  result = Array(length);
11455
11515
 
11456
11516
  while (++index < length) {
@@ -11488,7 +11548,7 @@
11488
11548
  * // => also invokes `mage.castSpell(n)` three times
11489
11549
  */
11490
11550
  function times(n, iteratee, thisArg) {
11491
- n = floor(n);
11551
+ n = nativeFloor(n);
11492
11552
 
11493
11553
  // Exit early to avoid a JSC JIT bug in Safari 8
11494
11554
  // where `Array(0)` is treated as `Array(1)`.
@@ -11550,6 +11610,50 @@
11550
11610
  return (+augend || 0) + (+addend || 0);
11551
11611
  }
11552
11612
 
11613
+ /**
11614
+ * Calculates `n` rounded up to `precision`.
11615
+ *
11616
+ * @static
11617
+ * @memberOf _
11618
+ * @category Math
11619
+ * @param {number} n The number to round up.
11620
+ * @param {number} [precision=0] The precision to round up to.
11621
+ * @returns {number} Returns the rounded up number.
11622
+ * @example
11623
+ *
11624
+ * _.ceil(4.006);
11625
+ * // => 5
11626
+ *
11627
+ * _.ceil(6.004, 2);
11628
+ * // => 6.01
11629
+ *
11630
+ * _.ceil(6040, -2);
11631
+ * // => 6100
11632
+ */
11633
+ var ceil = createRound('ceil');
11634
+
11635
+ /**
11636
+ * Calculates `n` rounded down to `precision`.
11637
+ *
11638
+ * @static
11639
+ * @memberOf _
11640
+ * @category Math
11641
+ * @param {number} n The number to round down.
11642
+ * @param {number} [precision=0] The precision to round down to.
11643
+ * @returns {number} Returns the rounded down number.
11644
+ * @example
11645
+ *
11646
+ * _.floor(4.006);
11647
+ * // => 4
11648
+ *
11649
+ * _.floor(0.046, 2);
11650
+ * // => 0.04
11651
+ *
11652
+ * _.floor(4060, -2);
11653
+ * // => 4000
11654
+ */
11655
+ var floor = createRound('floor');
11656
+
11553
11657
  /**
11554
11658
  * Gets the maximum value of `collection`. If `collection` is empty or falsey
11555
11659
  * `-Infinity` is returned. If an iteratee function is provided it is invoked
@@ -11648,6 +11752,28 @@
11648
11752
  */
11649
11753
  var min = createExtremum(lt, POSITIVE_INFINITY);
11650
11754
 
11755
+ /**
11756
+ * Calculates `n` rounded to `precision`.
11757
+ *
11758
+ * @static
11759
+ * @memberOf _
11760
+ * @category Math
11761
+ * @param {number} n The number to round.
11762
+ * @param {number} [precision=0] The precision to round to.
11763
+ * @returns {number} Returns the rounded number.
11764
+ * @example
11765
+ *
11766
+ * _.round(4.006);
11767
+ * // => 4
11768
+ *
11769
+ * _.round(4.006, 2);
11770
+ * // => 4.01
11771
+ *
11772
+ * _.round(4060, -2);
11773
+ * // => 4100
11774
+ */
11775
+ var round = createRound('round');
11776
+
11651
11777
  /**
11652
11778
  * Gets the sum of the values in `collection`.
11653
11779
  *
@@ -11682,17 +11808,11 @@
11682
11808
  */
11683
11809
  function sum(collection, iteratee, thisArg) {
11684
11810
  if (thisArg && isIterateeCall(collection, iteratee, thisArg)) {
11685
- iteratee = null;
11686
- }
11687
- var callback = getCallback(),
11688
- noIteratee = iteratee == null;
11689
-
11690
- if (!(noIteratee && callback === baseCallback)) {
11691
- noIteratee = false;
11692
- iteratee = callback(iteratee, thisArg, 3);
11811
+ iteratee = undefined;
11693
11812
  }
11694
- return noIteratee
11695
- ? arraySum(isArray(collection) ? collection : toIterable(collection))
11813
+ iteratee = getCallback(iteratee, thisArg, 3);
11814
+ return iteratee.length == 1
11815
+ ? arraySum(isArray(collection) ? collection : toIterable(collection), iteratee)
11696
11816
  : baseSum(collection, iteratee);
11697
11817
  }
11698
11818
 
@@ -11739,6 +11859,7 @@
11739
11859
  lodash.curryRight = curryRight;
11740
11860
  lodash.debounce = debounce;
11741
11861
  lodash.defaults = defaults;
11862
+ lodash.defaultsDeep = defaultsDeep;
11742
11863
  lodash.defer = defer;
11743
11864
  lodash.delay = delay;
11744
11865
  lodash.difference = difference;
@@ -11777,6 +11898,7 @@
11777
11898
  lodash.method = method;
11778
11899
  lodash.methodOf = methodOf;
11779
11900
  lodash.mixin = mixin;
11901
+ lodash.modArgs = modArgs;
11780
11902
  lodash.negate = negate;
11781
11903
  lodash.omit = omit;
11782
11904
  lodash.once = once;
@@ -11852,6 +11974,7 @@
11852
11974
  lodash.attempt = attempt;
11853
11975
  lodash.camelCase = camelCase;
11854
11976
  lodash.capitalize = capitalize;
11977
+ lodash.ceil = ceil;
11855
11978
  lodash.clone = clone;
11856
11979
  lodash.cloneDeep = cloneDeep;
11857
11980
  lodash.deburr = deburr;
@@ -11867,6 +11990,7 @@
11867
11990
  lodash.findLastKey = findLastKey;
11868
11991
  lodash.findWhere = findWhere;
11869
11992
  lodash.first = first;
11993
+ lodash.floor = floor;
11870
11994
  lodash.get = get;
11871
11995
  lodash.gt = gt;
11872
11996
  lodash.gte = gte;
@@ -11915,6 +12039,7 @@
11915
12039
  lodash.reduceRight = reduceRight;
11916
12040
  lodash.repeat = repeat;
11917
12041
  lodash.result = result;
12042
+ lodash.round = round;
11918
12043
  lodash.runInContext = runInContext;
11919
12044
  lodash.size = size;
11920
12045
  lodash.snakeCase = snakeCase;
@@ -11985,48 +12110,20 @@
11985
12110
  lodash[methodName].placeholder = lodash;
11986
12111
  });
11987
12112
 
11988
- // Add `LazyWrapper` methods that accept an `iteratee` value.
11989
- arrayEach(['dropWhile', 'filter', 'map', 'takeWhile'], function(methodName, type) {
11990
- var isFilter = type != LAZY_MAP_FLAG,
11991
- isDropWhile = type == LAZY_DROP_WHILE_FLAG;
11992
-
11993
- LazyWrapper.prototype[methodName] = function(iteratee, thisArg) {
11994
- var filtered = this.__filtered__,
11995
- result = (filtered && isDropWhile) ? new LazyWrapper(this) : this.clone(),
11996
- iteratees = result.__iteratees__ || (result.__iteratees__ = []);
11997
-
11998
- iteratees.push({
11999
- 'done': false,
12000
- 'count': 0,
12001
- 'index': 0,
12002
- 'iteratee': getCallback(iteratee, thisArg, 1),
12003
- 'limit': -1,
12004
- 'type': type
12005
- });
12006
-
12007
- result.__filtered__ = filtered || isFilter;
12008
- return result;
12009
- };
12010
- });
12011
-
12012
12113
  // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.
12013
12114
  arrayEach(['drop', 'take'], function(methodName, index) {
12014
- var whileName = methodName + 'While';
12015
-
12016
12115
  LazyWrapper.prototype[methodName] = function(n) {
12017
- var filtered = this.__filtered__,
12018
- result = (filtered && !index) ? this.dropWhile() : this.clone();
12116
+ var filtered = this.__filtered__;
12117
+ if (filtered && !index) {
12118
+ return new LazyWrapper(this);
12119
+ }
12120
+ n = n == null ? 1 : nativeMax(nativeFloor(n) || 0, 0);
12019
12121
 
12020
- n = n == null ? 1 : nativeMax(floor(n) || 0, 0);
12122
+ var result = this.clone();
12021
12123
  if (filtered) {
12022
- if (index) {
12023
- result.__takeCount__ = nativeMin(result.__takeCount__, n);
12024
- } else {
12025
- last(result.__iteratees__).limit = n;
12026
- }
12124
+ result.__takeCount__ = nativeMin(result.__takeCount__, n);
12027
12125
  } else {
12028
- var views = result.__views__ || (result.__views__ = []);
12029
- views.push({ 'size': n, 'type': methodName + (result.__dir__ < 0 ? 'Right' : '') });
12126
+ result.__views__.push({ 'size': n, 'type': methodName + (result.__dir__ < 0 ? 'Right' : '') });
12030
12127
  }
12031
12128
  return result;
12032
12129
  };
@@ -12034,9 +12131,18 @@
12034
12131
  LazyWrapper.prototype[methodName + 'Right'] = function(n) {
12035
12132
  return this.reverse()[methodName](n).reverse();
12036
12133
  };
12134
+ });
12135
+
12136
+ // Add `LazyWrapper` methods that accept an `iteratee` value.
12137
+ arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {
12138
+ var type = index + 1,
12139
+ isFilter = type != LAZY_MAP_FLAG;
12037
12140
 
12038
- LazyWrapper.prototype[methodName + 'RightWhile'] = function(predicate, thisArg) {
12039
- return this.reverse()[whileName](predicate, thisArg).reverse();
12141
+ LazyWrapper.prototype[methodName] = function(iteratee, thisArg) {
12142
+ var result = this.clone();
12143
+ result.__iteratees__.push({ 'iteratee': getCallback(iteratee, thisArg, 1), 'type': type });
12144
+ result.__filtered__ = result.__filtered__ || isFilter;
12145
+ return result;
12040
12146
  };
12041
12147
  });
12042
12148
 
@@ -12054,7 +12160,7 @@
12054
12160
  var dropName = 'drop' + (index ? '' : 'Right');
12055
12161
 
12056
12162
  LazyWrapper.prototype[methodName] = function() {
12057
- return this[dropName](1);
12163
+ return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);
12058
12164
  };
12059
12165
  });
12060
12166
 
@@ -12083,10 +12189,13 @@
12083
12189
  start = start == null ? 0 : (+start || 0);
12084
12190
 
12085
12191
  var result = this;
12192
+ if (result.__filtered__ && (start > 0 || end < 0)) {
12193
+ return new LazyWrapper(result);
12194
+ }
12086
12195
  if (start < 0) {
12087
- result = this.takeRight(-start);
12196
+ result = result.takeRight(-start);
12088
12197
  } else if (start) {
12089
- result = this.drop(start);
12198
+ result = result.drop(start);
12090
12199
  }
12091
12200
  if (end !== undefined) {
12092
12201
  end = (+end || 0);
@@ -12095,21 +12204,25 @@
12095
12204
  return result;
12096
12205
  };
12097
12206
 
12207
+ LazyWrapper.prototype.takeRightWhile = function(predicate, thisArg) {
12208
+ return this.reverse().takeWhile(predicate, thisArg).reverse();
12209
+ };
12210
+
12098
12211
  LazyWrapper.prototype.toArray = function() {
12099
- return this.drop(0);
12212
+ return this.take(POSITIVE_INFINITY);
12100
12213
  };
12101
12214
 
12102
12215
  // Add `LazyWrapper` methods to `lodash.prototype`.
12103
12216
  baseForOwn(LazyWrapper.prototype, function(func, methodName) {
12104
- var lodashFunc = lodash[methodName];
12217
+ var checkIteratee = /^(?:filter|map|reject)|While$/.test(methodName),
12218
+ retUnwrapped = /^(?:first|last)$/.test(methodName),
12219
+ lodashFunc = lodash[retUnwrapped ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName];
12220
+
12105
12221
  if (!lodashFunc) {
12106
12222
  return;
12107
12223
  }
12108
- var checkIteratee = /^(?:filter|map|reject)|While$/.test(methodName),
12109
- retUnwrapped = /^(?:first|last)$/.test(methodName);
12110
-
12111
12224
  lodash.prototype[methodName] = function() {
12112
- var args = arguments,
12225
+ var args = retUnwrapped ? [1] : arguments,
12113
12226
  chainAll = this.__chain__,
12114
12227
  value = this.__wrapped__,
12115
12228
  isHybrid = !!this.__actions__.length,
@@ -12118,28 +12231,30 @@
12118
12231
  useLazy = isLazy || isArray(value);
12119
12232
 
12120
12233
  if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {
12121
- // avoid lazy use if the iteratee has a "length" value other than `1`
12234
+ // Avoid lazy use if the iteratee has a "length" value other than `1`.
12122
12235
  isLazy = useLazy = false;
12123
12236
  }
12124
- var onlyLazy = isLazy && !isHybrid;
12125
- if (retUnwrapped && !chainAll) {
12126
- return onlyLazy
12127
- ? func.call(value)
12128
- : lodashFunc.call(lodash, this.value());
12129
- }
12130
12237
  var interceptor = function(value) {
12131
- var otherArgs = [value];
12132
- push.apply(otherArgs, args);
12133
- return lodashFunc.apply(lodash, otherArgs);
12238
+ return (retUnwrapped && chainAll)
12239
+ ? lodashFunc(value, 1)[0]
12240
+ : lodashFunc.apply(undefined, arrayPush([value], args));
12134
12241
  };
12135
- if (useLazy) {
12136
- var wrapper = onlyLazy ? value : new LazyWrapper(this),
12137
- result = func.apply(wrapper, args);
12138
12242
 
12139
- if (!retUnwrapped && (isHybrid || result.__actions__)) {
12140
- var actions = result.__actions__ || (result.__actions__ = []);
12141
- actions.push({ 'func': thru, 'args': [interceptor], 'thisArg': lodash });
12243
+ var action = { 'func': thru, 'args': [interceptor], 'thisArg': undefined },
12244
+ onlyLazy = isLazy && !isHybrid;
12245
+
12246
+ if (retUnwrapped && !chainAll) {
12247
+ if (onlyLazy) {
12248
+ value = value.clone();
12249
+ value.__actions__.push(action);
12250
+ return func.call(value);
12142
12251
  }
12252
+ return lodashFunc.call(undefined, this.value())[0];
12253
+ }
12254
+ if (!retUnwrapped && useLazy) {
12255
+ value = onlyLazy ? value : new LazyWrapper(this);
12256
+ var result = func.apply(value, args);
12257
+ result.__actions__.push(action);
12143
12258
  return new LodashWrapper(result, chainAll);
12144
12259
  }
12145
12260
  return this.thru(interceptor);
@@ -12147,7 +12262,7 @@
12147
12262
  });
12148
12263
 
12149
12264
  // Add `Array` and `String` methods to `lodash.prototype`.
12150
- arrayEach(['concat', 'join', 'pop', 'push', 'replace', 'shift', 'sort', 'splice', 'split', 'unshift'], function(methodName) {
12265
+ arrayEach(['join', 'pop', 'push', 'replace', 'shift', 'sort', 'splice', 'split', 'unshift'], function(methodName) {
12151
12266
  var func = (/^(?:replace|split)$/.test(methodName) ? stringProto : arrayProto)[methodName],
12152
12267
  chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',
12153
12268
  retUnwrapped = /^(?:join|pop|replace|shift)$/.test(methodName);
@@ -12174,7 +12289,7 @@
12174
12289
  }
12175
12290
  });
12176
12291
 
12177
- realNames[createHybridWrapper(null, BIND_KEY_FLAG).name] = [{ 'name': 'wrapper', 'func': null }];
12292
+ realNames[createHybridWrapper(undefined, BIND_KEY_FLAG).name] = [{ 'name': 'wrapper', 'func': undefined }];
12178
12293
 
12179
12294
  // Add functions to the lazy wrapper.
12180
12295
  LazyWrapper.prototype.clone = lazyClone;
@@ -12184,6 +12299,7 @@
12184
12299
  // Add chaining functions to the `lodash` wrapper.
12185
12300
  lodash.prototype.chain = wrapperChain;
12186
12301
  lodash.prototype.commit = wrapperCommit;
12302
+ lodash.prototype.concat = wrapperConcat;
12187
12303
  lodash.prototype.plant = wrapperPlant;
12188
12304
  lodash.prototype.reverse = wrapperReverse;
12189
12305
  lodash.prototype.toString = wrapperToString;