lodash-rails 3.6.0 → 3.7.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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/lodash/rails/version.rb +1 -1
- data/vendor/assets/javascripts/lodash.compat.js +743 -386
- data/vendor/assets/javascripts/lodash.compat.min.js +141 -89
- data/vendor/assets/javascripts/lodash.js +735 -372
- data/vendor/assets/javascripts/lodash.min.js +137 -85
- metadata +2 -2
@@ -1,93 +1,145 @@
|
|
1
1
|
/**
|
2
2
|
* @license
|
3
|
-
* lodash 3.
|
3
|
+
* lodash 3.7.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=n===n,e=t===t;if(n>t||!r||
|
7
|
-
}function
|
8
|
-
|
9
|
-
}function
|
10
|
-
t(
|
11
|
-
(
|
12
|
-
|
13
|
-
}function
|
14
|
-
|
15
|
-
}function
|
16
|
-
|
17
|
-
}}
|
18
|
-
|
19
|
-
}),
|
20
|
-
|
21
|
-
return u}function
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
}
|
26
|
-
|
27
|
-
r=
|
28
|
-
|
29
|
-
|
30
|
-
return
|
31
|
-
|
32
|
-
}function
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
for(
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
}function
|
48
|
-
|
49
|
-
var
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
}
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
}
|
62
|
-
|
63
|
-
return
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
},
|
68
|
-
}
|
69
|
-
|
70
|
-
}
|
71
|
-
|
72
|
-
|
73
|
-
}
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
return
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
n
|
89
|
-
n
|
90
|
-
|
91
|
-
}
|
92
|
-
|
93
|
-
|
6
|
+
;(function(){function n(n,t){if(n!==t){var r=n===n,e=t===t;if(n>t||!r||n===w&&e)return 1;if(n<t||!e||t===w&&r)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 typeof n=="string"?n:null==n?"":n+""}function o(n){return n.charCodeAt(0)}function i(n,t){for(var r=-1,e=n.length;++r<e&&-1<t.indexOf(n.charAt(r)););
|
7
|
+
return r}function a(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 c(n){return Ln[n]}function l(n){return Pn[n]}function s(n){return"\\"+Mn[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
|
+
|
9
|
+
}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 Bn[n]}function m(_){function Ln(n){if(h(n)&&!(Uo(n)||n instanceof zn)){if(n instanceof Bn)return n;if(Ze.call(n,"__chain__")&&Ze.call(n,"__wrapped__"))return Lr(n)}return new Bn(n)}function Pn(){}function Bn(n,t,r){this.__wrapped__=n,this.__actions__=r||[],
|
10
|
+
this.__chain__=!!t}function zn(n){this.__wrapped__=n,this.__actions__=null,this.__dir__=1,this.__filtered__=false,this.__iteratees__=null,this.__takeCount__=ku,this.__views__=null}function Mn(){this.__data__={}}function Dn(n){var t=n?n.length:0;for(this.data={hash:yu(null),set:new cu};t--;)this.push(n[t])}function qn(n,t){var r=n.data;return(typeof t=="string"||le(t)?r.set.has(t):r.hash[t])?0:-1}function Kn(n,t){var r=-1,e=n.length;for(t||(t=Te(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););
|
11
|
+
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=Te(e);++r<e;)u[r]=t(n[r],r,n);return u}function Qn(n){for(var t=-1,r=n.length,e=Eu;++t<r;){var u=n[t];u>e&&(e=u)}return e}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===w?t:n}function rt(n,t,r,e){return n!==w&&Ze.call(e,r)?n:t;
|
12
|
+
|
13
|
+
}function et(n,t,r){var e=Ko(t);iu.apply(e,Gu(t));for(var u=-1,o=e.length;++u<o;){var i=e[u],a=n[i],f=r(a,t[i],i,n,t);(f===f?f===a:a!==a)&&(a!==w||i in n)||(n[i]=f)}return n}function ut(n,t){for(var r=-1,e=n.length,u=Rr(e),o=t.length,i=Te(o);++r<o;){var a=t[r];i[r]=u?Or(a,e)?n[a]:w:n[a]}return i}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){var e=typeof n;return"function"==e?t===w?n:zt(n,t,r):null==n?Ie:"object"==e?xt(n):t===w?Ce(n):At(n,t);
|
14
|
+
|
15
|
+
}function at(n,t,r,e,u,o,i){var a;if(r&&(a=u?r(n,e,u):r(n)),a!==w)return a;if(!le(n))return n;if(e=Uo(n)){if(a=br(n),!t)return Kn(n,a)}else{var f=Je.call(n),c=f==K;if(f!=Y&&f!=B&&(!c||u))return Nn[f]?Ar(n,f,t):u?n:{};if(Gn(n))return u?n:{};if(a=xr(c?{}:n),!t)return Lu(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:vt)(n,function(e,u){a[u]=at(e,t,r,u,n,o,i)}),a}function ft(n,t,r){if(typeof n!="function")throw new ze(L);return lu(function(){n.apply(w,r);
|
16
|
+
|
17
|
+
},t)}function ct(n,t){var e=n?n.length:0,u=[];if(!e)return u;var o=-1,i=wr(),a=i==r,f=a&&200<=t.length?Ku(t):null,c=t.length;f&&(i=qn,a=false,t=f);n:for(;++o<e;)if(f=n[o],a&&f===f){for(var l=c;l--;)if(t[l]===f)continue n;u.push(f)}else 0>i(t,f,0)&&u.push(f);return u}function lt(n,t){var r=true;return Bu(n,function(n,e,u){return r=!!t(n,e,u)}),r}function st(n,t){var r=[];return Bu(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function pt(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;
|
18
|
+
|
19
|
+
}),u}function ht(n,t,r){for(var e=-1,u=n.length,o=-1,i=[];++e<u;){var a=n[e];if(h(a)&&Rr(a.length)&&(Uo(a)||ae(a))){t&&(a=ht(a,t,r));var f=-1,c=a.length;for(i.length+=c;++f<c;)i[++o]=a[f]}else r||(i[++o]=a)}return i}function _t(n,t){Mu(n,t,de)}function vt(n,t){return Mu(n,t,Ko)}function gt(n,t){return Du(n,t,Ko)}function yt(n,t){for(var r=-1,e=t.length,u=-1,o=[];++r<e;){var i=t[r];Fo(n[i])&&(o[++u]=i)}return o}function dt(n,t,r){if(null!=n){n=Nr(n),r!==w&&r in n&&(t=[r]),r=-1;for(var e=t.length;null!=n&&++r<e;)var u=n=Nr(n)[t[r]];
|
20
|
+
|
21
|
+
return u}}function mt(n,t,r,e,u,o){if(n===t)return 0!==n||1/n==1/t;var i=typeof n,a=typeof t;if("function"!=i&&"object"!=i&&"function"!=a&&"object"!=a||null==n||null==t)n=n!==n&&t!==t;else n:{var i=mt,a=Uo(n),f=Uo(t),c=z,l=z;a||(c=Je.call(n),c==B?c=Y:c!=Y&&(a=ve(n))),f||(l=Je.call(t),l==B?l=Y:l!=Y&&ve(t));var s=c==Y&&!Gn(n),f=l==Y&&!Gn(t),l=c==l;if(!l||a||s){if(!e&&(c=s&&Ze.call(n,"__wrapped__"),f=f&&Ze.call(t,"__wrapped__"),c||f)){n=i(c?n.value():n,f?t.value():t,r,e,u,o);break n}if(l){for(u||(u=[]),
|
22
|
+
o||(o=[]),c=u.length;c--;)if(u[c]==n){n=o[c]==t;break n}u.push(n),o.push(t),n=(a?vr:yr)(n,t,i,r,e,u,o),u.pop(),o.pop()}else n=false}else n=gr(n,t,c)}return n}function wt(n,t,r,e,u){for(var o=-1,i=t.length,a=!u;++o<i;)if(a&&e[o]?r[o]!==n[t[o]]:!(t[o]in n))return false;for(o=-1;++o<i;){var f=t[o],c=n[f],l=r[o];if(a&&e[o]?f=c!==w||f in n:(f=u?u(c,l,f):w,f===w&&(f=mt(l,c,u,true))),!f)return false}return true}function bt(n,t){var r=-1,e=Zu(n),u=Rr(e)?Te(e):[];return Bu(n,function(n,e,o){u[++r]=t(n,e,o)}),u}function xt(n){
|
23
|
+
var t=Ko(n),r=t.length;if(!r)return ke(true);if(1==r){var e=t[0],u=n[e];if(Sr(u))return function(n){return null==n?false:(n=Nr(n),n[e]===u&&(u!==w||e in n))}}for(var o=Te(r),i=Te(r);r--;)u=n[t[r]],o[r]=u,i[r]=Sr(u);return function(n){return null!=n&&wt(Nr(n),t,o,i)}}function At(n,t){var r=Uo(n),e=kr(n)&&Sr(t),u=n+"";return n=$r(n),function(o){if(null==o)return false;var i=u;if(o=Nr(o),!(!r&&e||i in o)){if(o=1==n.length?o:dt(o,St(n,0,-1)),null==o)return false;i=Dr(n),o=Nr(o)}return o[i]===t?t!==w||i in o:mt(t,o[i],null,true);
|
24
|
+
|
25
|
+
}}function jt(n,t,r,e,u){if(!le(n))return n;var o=Rr(t.length)&&(Uo(t)||ve(t));if(!o){var i=Ko(t);iu.apply(i,Gu(t))}return Vn(i||t,function(a,f){if(i&&(f=a,a=t[f]),h(a)){e||(e=[]),u||(u=[]);n:{for(var c=f,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=_,Rr(_.length)&&(Uo(_)||ve(_))?v=Uo(p)?p:Zu(p)?Kn(p):[]:No(_)||ae(_)?v=ae(p)?ge(p):No(p)?p:{}:g=false),l.push(_),s.push(v),g?n[c]=jt(v,_,r,l,s):(v===v?v!==p:p===p)&&(n[c]=v)}}else c=n[f],l=r?r(c,a,f,n,t):w,
|
26
|
+
(s=l===w)&&(l=a),!o&&l===w||!s&&(l===l?l===c:c!==c)||(n[f]=l)}),n}function Ot(n){return function(t){return null==t?w:Nr(t)[n]}}function Et(n){var t=n+"";return n=$r(n),function(r){return dt(r,n,t)}}function kt(n,t){for(var r=t.length;r--;){var e=parseFloat(t[r]);if(e!=u&&Or(e)){var u=e;su.call(n,e,1)}}}function It(n,t){return n+eu(Ou()*(t-n+1))}function Rt(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,0>t&&(t=-t>u?0:u+t),
|
27
|
+
r=r===w||r>u?u:+r||0,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Te(u);++e<u;)r[e]=n[e+t];return r}function Ct(n,t){var r;return Bu(n,function(n,e,u){return r=t(n,e,u),!r}),!!r}function Tt(n,t){var r=n.length;for(n.sort(t);r--;)n[r]=n[r].c;return n}function Ut(t,r,e){var u=mr(),o=-1;return r=Hn(r,function(n){return u(n)}),t=bt(t,function(n){return{a:Hn(r,function(t){return t(n)}),b:++o,c:n}}),Tt(t,function(t,r){var u;n:{u=-1;for(var o=t.a,i=r.a,a=o.length,f=e.length;++u<a;){var c=n(o[u],i[u]);if(c){u=u<f?c*(e[u]?1:-1):c;
|
28
|
+
|
29
|
+
break n}}u=t.b-r.b}return u})}function Wt(n,t){var r=0;return Bu(n,function(n,e,u){r+=+t(n,e,u)||0}),r}function Ft(n,t){var e=-1,u=wr(),o=n.length,i=u==r,a=i&&200<=o,f=a?Ku():null,c=[];f?(u=qn,i=false):(a=false,f=t?[]:c);n:for(;++e<o;){var l=n[e],s=t?t(l,e,n):l;if(i&&l===l){for(var p=f.length;p--;)if(f[p]===s)continue n;t&&f.push(s),c.push(l)}else 0>u(f,s,0)&&((t||a)&&f.push(s),c.push(l))}return c}function Nt(n,t){for(var r=-1,e=t.length,u=Te(e);++r<e;)u[r]=n[t[r]];return u}function $t(n,t,r,e){for(var u=n.length,o=e?u:-1;(e?o--:++o<u)&&t(n[o],o,n););
|
30
|
+
return r?St(n,e?0:o,e?o+1:u):St(n,e?o+1:0,e?u:o)}function Lt(n,t){var r=n;r instanceof zn&&(r=r.value());for(var e=-1,u=t.length;++e<u;){var r=[r],o=t[e];iu.apply(r,o.args),r=o.func.apply(o.thisArg,r)}return r}function Pt(n,t,r){var e=0,u=n?n.length:e;if(typeof t=="number"&&t===t&&u<=Su){for(;e<u;){var o=e+u>>>1,i=n[o];(r?i<=t:i<t)?e=o+1:u=o}return u}return Bt(n,t,Ie,r)}function Bt(n,t,r,e){t=r(t);for(var u=0,o=n?n.length:0,i=t!==t,a=t===w;u<o;){var f=eu((u+o)/2),c=r(n[f]),l=c===c;(i?l||e:a?l&&(e||c!==w):e?c<=t:c<t)?u=f+1:o=f;
|
31
|
+
|
32
|
+
}return bu(o,Ru)}function zt(n,t,r){if(typeof n!="function")return Ie;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){return nu.call(n,0)}function Dt(n,t,r){for(var e=r.length,u=-1,o=wu(n.length-e,0),i=-1,a=t.length,f=Te(o+a);++i<a;)f[i]=t[i];
|
33
|
+
|
34
|
+
for(;++u<e;)f[r[u]]=n[u];for(;o--;)f[i++]=n[u++];return f}function qt(n,t,r){for(var e=-1,u=r.length,o=-1,i=wu(n.length-u,0),a=-1,f=t.length,c=Te(i+f);++o<i;)c[o]=n[o];for(i=o;++a<f;)c[i+a]=t[a];for(;++e<u;)c[i+r[e]]=n[o++];return c}function Kt(n,t){return function(r,e,u){var o=t?t():{};if(e=mr(e,u,3),Uo(r)){u=-1;for(var i=r.length;++u<i;){var a=r[u];n(o,a,e(a,u,r),r)}}else Bu(r,function(t,r,u){n(o,t,e(t,r,u),u)});return o}}function Vt(n){return ie(function(t,r){var e=-1,u=null==t?0:r.length,o=2<u&&r[u-2],i=2<u&&r[2],a=1<u&&r[u-1];
|
35
|
+
|
36
|
+
for(typeof o=="function"?(o=zt(o,a,5),u-=2):(o=typeof a=="function"?a:null,u-=o?1:0),i&&Er(r[0],r[1],i)&&(o=3>u?null: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?Zu(r):0;if(!Rr(u))return n(r,e);for(var o=t?u:-1,i=Nr(r);(t?o--:++o<u)&&false!==e(i[o],o,i););return r}}function Zt(n){return function(t,r,e){var u=Nr(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 Gt(n,t){function r(){return(this&&this!==Zn&&this instanceof r?e:n).apply(t,arguments);
|
37
|
+
|
38
|
+
}var e=Xt(n);return r}function Jt(n){return function(t){var r=-1;t=Oe(we(t));for(var e=t.length,u="";++r<e;)u=n(u,t[r],r);return u}}function Xt(n){return function(){var t=Pu(n.prototype),r=n.apply(t,arguments);return le(r)?r:t}}function Ht(n){function t(r,e,u){return u&&Er(r,e,u)&&(e=null),r=_r(r,n,null,null,null,null,null,e),r.placeholder=t.placeholder,r}return t}function Qt(n,t){return function(r,e,u){u&&Er(r,e,u)&&(e=null);var i=mr(),a=null==e;if(i===it&&a||(a=false,e=i(e,u,3)),a){if(e=Uo(r),e||!_e(r))return n(e?r:Fr(r));
|
39
|
+
|
40
|
+
e=o}return dr(r,e,t)}}function nr(n,r){return function(e,u,o){return u=mr(u,o,3),Uo(e)?(u=t(e,u,r),-1<u?e[u]:w):pt(e,u,n)}}function tr(n){return function(r,e,u){return r&&r.length?(e=mr(e,u,3),t(r,e,n)):-1}}function rr(n){return function(t,r,e){return r=mr(r,e,3),pt(t,r,n,true)}}function er(n){return function(){var t=arguments.length;if(!t)return function(){return arguments[0]};for(var r,e=n?t:-1,u=0,o=Te(t);n?e--:++e<t;){var i=o[u++]=arguments[e];if(typeof i!="function")throw new ze(L);var a=r?"":Yu(i);
|
41
|
+
|
42
|
+
r="wrapper"==a?new Bn([]):r}for(e=r?-1:t;++e<t;)i=o[e],a=Yu(i),r=(u="wrapper"==a?Vu(i):null)&&Ir(u[0])?r[Yu(u[0])].apply(r,u[3]):1==i.length&&Ir(i)?r[a]():r.thru(i);return function(){var n=arguments;if(r&&1==n.length&&Uo(n[0]))return r.plant(n[0]).value();for(var e=0,n=o[e].apply(this,n);++e<t;)n=o[e].call(this,n);return n}}}function ur(n,t){return function(r,e,u){return typeof e=="function"&&u===w&&Uo(r)?n(r,e):t(r,zt(e,u,3))}}function or(n){return function(t,r,e){return(typeof r!="function"||e!==w)&&(r=zt(r,e,3)),
|
43
|
+
n(t,r,de)}}function ir(n){return function(t,r,e){return(typeof r!="function"||e!==w)&&(r=zt(r,e,3)),n(t,r)}}function ar(n){return function(t,r,e){return(t=u(t))&&(n?t:"")+sr(t,r,e)+(n?"":t)}}function fr(n){var t=ie(function(r,e){var u=v(e,t.placeholder);return _r(r,n,null,e,u)});return t}function cr(n,t){return function(r,e,u,o){var i=3>arguments.length;return typeof e=="function"&&o===w&&Uo(r)?n(r,e,u,i):Rt(r,mr(e,o,4),u,i,t)}}function lr(n,t,r,e,u,o,i,a,f,c){function l(){for(var b=arguments.length,j=b,O=Te(b);j--;)O[j]=arguments[j];
|
44
|
+
|
45
|
+
if(e&&(O=Dt(O,e,u)),o&&(O=qt(O,o,i)),_||y){var j=l.placeholder,E=v(O,j),b=b-E.length;if(b<c){var R=a?Kn(a):null,b=wu(c-b,0),S=_?E:null,E=_?null:E,C=_?O:null,O=_?null:O;return t|=_?k:I,t&=~(_?I:k),g||(t&=~(x|A)),O=[n,t,r,C,S,O,E,R,f,b],R=lr.apply(w,O),Ir(n)&&Ju(R,O),R.placeholder=j,R}}if(j=p?r:this,h&&(n=j[m]),a)for(R=O.length,b=bu(a.length,R),S=Kn(O);b--;)E=a[b],O[b]=Or(E,R)?S[E]:w;return s&&f<O.length&&(O.length=f),(this&&this!==Zn&&this instanceof l?d||Xt(n):n).apply(j,O)}var s=t&R,p=t&x,h=t&A,_=t&O,g=t&j,y=t&E,d=!h&&Xt(n),m=n;
|
46
|
+
|
47
|
+
return l}function sr(n,t,r){return n=n.length,t=+t,n<t&&du(t)?(t-=n,r=null==r?" ":r+"",Ae(r,tu(t/r.length)).slice(0,t)):""}function pr(n,t,r,e){function u(){for(var t=-1,a=arguments.length,f=-1,c=e.length,l=Te(a+c);++f<c;)l[f]=e[f];for(;a--;)l[f++]=arguments[++t];return(this&&this!==Zn&&this instanceof u?i:n).apply(o?r:this,l)}var o=t&x,i=Xt(n);return u}function hr(n){return function(t,r,e,u){var o=mr(e);return o===it&&null==e?Pt(t,r,n):Bt(t,r,o(e,u,1),n)}}function _r(n,t,r,e,u,o,i,a){var f=t&A;if(!f&&typeof n!="function")throw new ze(L);
|
48
|
+
|
49
|
+
var c=e?e.length:0;if(c||(t&=~(k|I),e=u=null),c-=u?u.length:0,t&I){var l=e,s=u;e=u=null}var p=f?null:Vu(n);return r=[n,t,r,e,u,l,s,o,i,a],p&&(e=r[1],t=p[1],a=e|t,u=t==R&&e==O||t==R&&e==S&&r[7].length<=p[8]||t==(R|S)&&e==O,(a<R||u)&&(t&x&&(r[2]=p[2],a|=e&x?0:j),(e=p[3])&&(u=r[3],r[3]=u?Dt(u,e,p[4]):Kn(e),r[4]=u?v(r[3],P):Kn(p[4])),(e=p[5])&&(u=r[5],r[5]=u?qt(u,e,p[6]):Kn(e),r[6]=u?v(r[5],P):Kn(p[6])),(e=p[7])&&(r[7]=Kn(e)),t&R&&(r[8]=null==r[8]?p[8]:bu(r[8],p[8])),null==r[9]&&(r[9]=p[9]),r[0]=p[0],
|
50
|
+
r[1]=a),t=r[1],a=r[9]),r[9]=null==a?f?0:n.length:wu(a-c,0)||0,(p?qu:Ju)(t==x?Gt(r[0],r[2]):t!=k&&t!=(x|k)||r[4].length?lr.apply(w,r):pr.apply(w,r),r)}function vr(n,t,r,e,u,o,i){var a=-1,f=n.length,c=t.length,l=true;if(f!=c&&(!u||c<=f))return false;for(;l&&++a<f;){var s=n[a],p=t[a],l=w;if(e&&(l=u?e(p,s,a):e(s,p,a)),l===w)if(u)for(var h=c;h--&&(p=t[h],!(l=s&&s===p||r(s,p,e,u,o,i))););else l=s&&s===p||r(s,p,e,u,o,i)}return!!l}function gr(n,t,r){switch(r){case M:case D:return+n==+t;case q:return n.name==t.name&&n.message==t.message;
|
51
|
+
|
52
|
+
case V:return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case Z:case G:return n==t+""}return false}function yr(n,t,r,e,u,o,i){var a=Ko(n),f=a.length,c=Ko(t).length;if(f!=c&&!u)return false;for(var c=u,l=-1;++l<f;){var s=a[l],p=u?s in t:Ze.call(t,s);if(p){var h=n[s],_=t[s],p=w;e&&(p=u?e(_,h,s):e(h,_,s)),p===w&&(p=h&&h===_||r(h,_,e,u,o,i))}if(!p)return false;c||(c="constructor"==s)}return c||(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;
|
53
|
+
|
54
|
+
}function dr(n,t,r){var e=r?ku:Eu,u=e,o=u;return Bu(n,function(n,i,a){i=t(n,i,a),((r?i<u:i>u)||i===e&&i===o)&&(u=i,o=n)}),o}function mr(n,t,r){var e=Ln.callback||Ee,e=e===Ee?it:e;return r?e(n,t,r):e}function wr(n,t,e){var u=Ln.indexOf||Mr,u=u===Mr?r:u;return n?u(n,t,e):u}function br(n){var t=n.length,r=new n.constructor(t);return t&&"string"==typeof n[0]&&Ze.call(n,"index")&&(r.index=n.index,r.input=n.input),r}function xr(n){return n=n.constructor,typeof n=="function"&&n instanceof n||(n=Le),new n;
|
55
|
+
|
56
|
+
}function Ar(n,t,r){var e=n.constructor;switch(t){case J:return Mt(n);case M:case D: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=Fu[t]),t=n.buffer,new e(r?Mt(t):t,n.byteOffset,n.length);case V:case G:return new e(n);case Z:var u=new e(n.source,On.exec(n));u.lastIndex=n.lastIndex}return u}function jr(n,t,r){return null==n||kr(t,n)||(t=$r(t),n=1==t.length?n:dt(n,St(t,0,-1)),t=Dr(t)),t=null==n?n:n[t],null==t?w:t.apply(n,r)}function Or(n,t){
|
57
|
+
return n=+n,t=null==t?Tu:t,-1<n&&0==n%1&&n<t}function Er(n,t,r){if(!le(r))return false;var e=typeof t;return"number"==e?(e=Zu(r),e=Rr(e)&&Or(t,e)):e="string"==e&&t in r,e?(t=r[t],n===n?n===t:t!==t):false}function kr(n,t){var r=typeof n;return"string"==r&&dn.test(n)||"number"==r?true:Uo(n)?false:!yn.test(n)||null!=t&&n in Nr(t)}function Ir(n){var t=Yu(n);return!!t&&n===Ln[t]&&t in zn.prototype}function Rr(n){return typeof n=="number"&&-1<n&&0==n%1&&n<=Tu}function Sr(n){return n===n&&(0===n?0<1/n:!le(n))}function Cr(n,t){
|
58
|
+
n=Nr(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 Tr(n,t){var r={};return _t(n,function(n,e,u){t(n,e,u)&&(r[e]=n)}),r}function Ur(n){var t,r=Ln.support;if(!h(n)||Je.call(n)!=Y||Gn(n)||!(Ze.call(n,"constructor")||(t=n.constructor,typeof t!="function"||t instanceof t))||!r.argsTag&&ae(n))return false;var e;return r.ownLast?(_t(n,function(n,t,r){return e=Ze.call(r,t),false}),false!==e):(_t(n,function(n,t){e=t}),e===w||Ze.call(n,e))}function Wr(n){for(var t=de(n),r=t.length,e=r&&n.length,u=Ln.support,u=e&&Rr(e)&&(Uo(n)||u.nonEnumStrings&&_e(n)||u.nonEnumArgs&&ae(n)),o=-1,i=[];++o<r;){
|
59
|
+
var a=t[o];(u&&Or(a,e)||Ze.call(n,a))&&i.push(a)}return i}function Fr(n){return null==n?[]:Rr(Zu(n))?Ln.support.unindexedChars&&_e(n)?n.split(""):le(n)?n:Le(n):me(n)}function Nr(n){if(Ln.support.unindexedChars&&_e(n)){for(var t=-1,r=n.length,e=Le(n);++t<r;)e[t]=n.charAt(t);return e}return le(n)?n:Le(n)}function $r(n){if(Uo(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 Lr(n){return n instanceof zn?n.clone():new Bn(n.__wrapped__,n.__chain__,Kn(n.__actions__));
|
60
|
+
|
61
|
+
}function Pr(n,t,r){return n&&n.length?((r?Er(n,t,r):null==t)&&(t=1),St(n,0>t?0:t)):[]}function Br(n,t,r){var e=n?n.length:0;return e?((r?Er(n,t,r):null==t)&&(t=1),t=e-(+t||0),St(n,0,0>t?0:t)):[]}function zr(n){return n?n[0]:w}function Mr(n,t,e){var u=n?n.length:0;if(!u)return-1;if(typeof e=="number")e=0>e?wu(u+e,0):e;else if(e)return e=Pt(n,t),n=n[e],(t===t?t===n:n!==n)?e:-1;return r(n,t,e||0)}function Dr(n){var t=n?n.length:0;return t?n[t-1]:w}function qr(n){return Pr(n,1)}function Kr(n,t,e,u){
|
62
|
+
if(!n||!n.length)return[];null!=t&&typeof t!="boolean"&&(u=e,e=Er(n,t,u)?null:t,t=false);var o=mr();if((o!==it||null!=e)&&(e=o(e,u,3)),t&&wr()==r){t=e;var i;e=-1,u=n.length;for(var o=-1,a=[];++e<u;){var f=n[e],c=t?t(f,e,n):f;e&&i===c||(i=c,a[++o]=f)}n=a}else n=Ft(n,e);return n}function Vr(n){for(var t=-1,r=(n&&n.length&&Qn(Hn(n,Zu)))>>>0,e=Te(r);++t<r;)e[t]=Hn(n,Ot(t));return e}function Yr(n,t){var r=-1,e=n?n.length:0,u={};for(!e||t||Uo(n[0])||(t=[]);++r<e;){var o=n[r];t?u[o]=t[r]:o&&(u[o[0]]=o[1])}
|
63
|
+
return u}function Zr(n){return n=Ln(n),n.__chain__=true,n}function Gr(n,t,r){return t.call(r,n)}function Jr(n,t,r){var e=Uo(n)?Yn:lt;return r&&Er(n,t,r)&&(t=null),(typeof t!="function"||r!==w)&&(t=mr(t,r,3)),e(n,t)}function Xr(n,t,r){var e=Uo(n)?Xn:st;return t=mr(t,r,3),e(n,t)}function Hr(n,t,r,e){var u=n?Zu(n):0;return Rr(u)||(n=me(n),u=n.length),u?(r=typeof r!="number"||e&&Er(t,r,e)?0:0>r?wu(u+r,0):r||0,typeof n=="string"||!Uo(n)&&_e(n)?r<u&&-1<n.indexOf(t,r):-1<wr(n,t,r)):false}function Qr(n,t,r){var e=Uo(n)?Hn:bt;
|
64
|
+
|
65
|
+
return t=mr(t,r,3),e(n,t)}function ne(n,t,r){return(r?Er(n,t,r):null==t)?(n=Fr(n),t=n.length,0<t?n[It(0,t-1)]:w):(n=te(n),n.length=bu(0>t?0:+t||0,n.length),n)}function te(n){n=Fr(n);for(var t=-1,r=n.length,e=Te(r);++t<r;){var u=It(0,t);t!=u&&(e[t]=e[u]),e[u]=n[t]}return e}function re(n,t,r){var e=Uo(n)?nt:Ct;return r&&Er(n,t,r)&&(t=null),(typeof t!="function"||r!==w)&&(t=mr(t,r,3)),e(n,t)}function ee(n,t){var r;if(typeof t!="function"){if(typeof n!="function")throw new ze(L);var e=n;n=t,t=e}return function(){
|
66
|
+
return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=null),r}}function ue(n,t,r){function e(){var r=t-(wo()-c);0>=r||r>t?(a&&ru(a),r=p,a=s=p=w,r&&(h=wo(),f=n.apply(l,i),s||a||(i=l=null))):s=lu(e,r)}function u(){s&&ru(s),a=s=p=w,(v||_!==t)&&(h=wo(),f=n.apply(l,i),s||a||(i=l=null))}function o(){if(i=arguments,c=wo(),l=this,p=v&&(s||!g),false===_)var r=g&&!s;else{a||g||(h=c);var o=_-(c-h),y=0>=o||o>_;y?(a&&(a=ru(a)),h=c,f=n.apply(l,i)):a||(a=lu(u,o))}return y&&s?s=ru(s):s||t===_||(s=lu(e,t)),r&&(y=true,f=n.apply(l,i)),
|
67
|
+
!y||s||a||(i=l=null),f}var i,a,f,c,l,s,p,h=0,_=false,v=true;if(typeof n!="function")throw new ze(L);if(t=0>t?0:+t||0,true===r)var g=true,v=false;else le(r)&&(g=r.leading,_="maxWait"in r&&wu(+r.maxWait||0,t),v="trailing"in r?r.trailing:v);return o.cancel=function(){s&&ru(s),a&&ru(a),a=s=p=w},o}function oe(n,t){function r(){var e=arguments,u=r.cache,o=t?t.apply(this,e):e[0];return u.has(o)?u.get(o):(e=n.apply(this,e),u.set(o,e),e)}if(typeof n!="function"||t&&typeof t!="function")throw new ze(L);return r.cache=new oe.Cache,
|
68
|
+
r}function ie(n,t){if(typeof n!="function")throw new ze(L);return t=wu(t===w?n.length-1:+t||0,0),function(){for(var r=arguments,e=-1,u=wu(r.length-t,0),o=Te(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=Te(t+1),e=-1;++e<t;)u[e]=r[e];return u[t]=o,n.apply(this,u)}}function ae(n){return Rr(h(n)?n.length:w)&&Je.call(n)==B}function fe(n){return!!n&&1===n.nodeType&&h(n)&&(Ln.support.nodeTag?-1<Je.call(n).indexOf("Element"):Gn(n));
|
69
|
+
|
70
|
+
}function ce(n){return h(n)&&typeof n.message=="string"&&Je.call(n)==q}function le(n){var t=typeof n;return"function"==t||!!n&&"object"==t}function se(n){return null==n?false:Je.call(n)==K?He.test(Ye.call(n)):h(n)&&(Gn(n)?He:kn).test(n)}function pe(n){return typeof n=="number"||h(n)&&Je.call(n)==V}function he(n){return le(n)&&Je.call(n)==Z}function _e(n){return typeof n=="string"||h(n)&&Je.call(n)==G}function ve(n){return h(n)&&Rr(n.length)&&!!Fn[Je.call(n)]}function ge(n){return ot(n,de(n))}function ye(n){
|
71
|
+
return yt(n,de(n))}function de(n){if(null==n)return[];le(n)||(n=Le(n));for(var t=n.length,r=Ln.support,t=t&&Rr(t)&&(Uo(n)||r.nonEnumStrings&&_e(n)||r.nonEnumArgs&&ae(n))&&t||0,e=n.constructor,u=-1,e=Fo(e)&&e.prototype||qe,o=e===n,i=Te(t),a=0<t,f=r.enumErrorProps&&(n===De||n instanceof We),c=r.enumPrototypes&&Fo(n);++u<t;)i[u]=u+"";for(var l in n)c&&"prototype"==l||f&&("message"==l||"name"==l)||a&&Or(l,t)||"constructor"==l&&(o||!Ze.call(n,l))||i.push(l);if(r.nonEnumShadows&&n!==qe)for(t=n===Ke?G:n===De?q:Je.call(n),
|
72
|
+
r=Nu[t]||Nu[Y],t==Y&&(e=qe),t=Wn.length;t--;)l=Wn[t],u=r[l],o&&u||(u?!Ze.call(n,l):n[l]===e[l])||i.push(l);return i}function me(n){return Nt(n,Ko(n))}function we(n){return(n=u(n))&&n.replace(In,c).replace(xn,"")}function be(n){return(n=u(n))&&bn.test(n)?n.replace(wn,"\\$&"):n}function xe(n,t,r){return r&&Er(n,t,r)&&(t=0),ju(n,t)}function Ae(n,t){var r="";if(n=u(n),t=+t,1>t||!n||!du(t))return r;do t%2&&(r+=n),t=eu(t/2),n+=n;while(t);return r}function je(n,t,r){var e=n;return(n=u(n))?(r?Er(e,t,r):null==t)?n.slice(g(n),y(n)+1):(t+="",
|
73
|
+
n.slice(i(n,t),a(n,t)+1)):n}function Oe(n,t,r){return r&&Er(n,t,r)&&(t=null),n=u(n),n.match(t||Cn)||[]}function Ee(n,t,r){return r&&Er(n,t,r)&&(t=null),it(n,t)}function ke(n){return function(){return n}}function Ie(n){return n}function Re(n,t,r){if(null==r){var e=le(t),u=e&&Ko(t);((u=u&&u.length&&yt(t,u))?u.length:e)||(u=false,r=t,t=n,n=this)}u||(u=yt(t,Ko(t)));var o=true,e=-1,i=Fo(n),a=u.length;false===r?o=false:le(r)&&"chain"in r&&(o=r.chain);for(;++e<a;){r=u[e];var f=t[r];n[r]=f,i&&(n.prototype[r]=function(t){
|
74
|
+
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()],iu.apply(r,arguments),t.apply(n,r)}}(f))}return n}function Se(){}function Ce(n){return kr(n)?Ot(n):Et(n)}_=_?Jn.defaults(Zn.Object(),_,Jn.pick(Zn,Un)):Zn;var Te=_.Array,Ue=_.Date,We=_.Error,Fe=_.Function,Ne=_.Math,$e=_.Number,Le=_.Object,Pe=_.RegExp,Be=_.String,ze=_.TypeError,Me=Te.prototype,De=We.prototype,qe=Le.prototype,Ke=Be.prototype,Ve=(Ve=_.window)&&Ve.document,Ye=Fe.prototype.toString,Ze=qe.hasOwnProperty,Ge=0,Je=qe.toString,Xe=_._,He=Pe("^"+be(Je).replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Qe=se(Qe=_.ArrayBuffer)&&Qe,nu=se(nu=Qe&&new Qe(0).slice)&&nu,tu=Ne.ceil,ru=_.clearTimeout,eu=Ne.floor,uu=se(uu=Le.getOwnPropertySymbols)&&uu,ou=se(ou=Le.getPrototypeOf)&&ou,iu=Me.push,au=se(Le.preventExtensions=Le.preventExtensions)&&au,fu=qe.propertyIsEnumerable,cu=se(cu=_.Set)&&cu,lu=_.setTimeout,su=Me.splice,pu=se(pu=_.Uint8Array)&&pu,hu=se(hu=_.WeakMap)&&hu,_u=function(){
|
75
|
+
try{var n=se(n=_.Float64Array)&&n,t=new n(new Qe(10),0,1)&&n}catch(r){}return t}(),vu=function(){var n={1:0},t=au&&se(t=Le.assign)&&t;try{t(au(n),"xo")}catch(r){}return!n[1]&&t}(),gu=se(gu=Te.isArray)&&gu,yu=se(yu=Le.create)&&yu,du=_.isFinite,mu=se(mu=Le.keys)&&mu,wu=Ne.max,bu=Ne.min,xu=se(xu=Ue.now)&&xu,Au=se(Au=$e.isFinite)&&Au,ju=_.parseInt,Ou=Ne.random,Eu=$e.NEGATIVE_INFINITY,ku=$e.POSITIVE_INFINITY,Iu=Ne.pow(2,32)-1,Ru=Iu-1,Su=Iu>>>1,Cu=_u?_u.BYTES_PER_ELEMENT:0,Tu=Ne.pow(2,53)-1,Uu=hu&&new hu,Wu={},Fu={};
|
76
|
+
|
77
|
+
Fu[X]=_.Float32Array,Fu[H]=_.Float64Array,Fu[Q]=_.Int8Array,Fu[nn]=_.Int16Array,Fu[tn]=_.Int32Array,Fu[rn]=_.Uint8Array,Fu[en]=_.Uint8ClampedArray,Fu[un]=_.Uint16Array,Fu[on]=_.Uint32Array;var Nu={};Nu[z]=Nu[D]=Nu[V]={constructor:true,toLocaleString:true,toString:true,valueOf:true},Nu[M]=Nu[G]={constructor:true,toString:true,valueOf:true},Nu[q]=Nu[K]=Nu[Z]={constructor:true,toString:true},Nu[Y]={constructor:true},Vn(Wn,function(n){for(var t in Nu)if(Ze.call(Nu,t)){var r=Nu[t];r[n]=Ze.call(r,n)}});var $u=Ln.support={};
|
78
|
+
|
79
|
+
!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);$u.argsTag=Je.call(arguments)==B,$u.enumErrorProps=fu.call(De,"message")||fu.call(De,"name"),$u.enumPrototypes=fu.call(t,"prototype"),$u.funcDecomp=/\bthis\b/.test(function(){return this}),$u.funcNames=typeof Fe.name=="string",$u.nodeTag=Je.call(Ve)!=Y,$u.nonEnumStrings=!fu.call("x",0),$u.nonEnumShadows=!/valueOf/.test(e),$u.ownLast="x"!=e[0],$u.spliceObjects=(su.call(r,0,1),!r[0]),
|
80
|
+
$u.unindexedChars="xx"!="x"[0]+Le("x")[0];try{$u.dom=11===Ve.createDocumentFragment().nodeType}catch(o){$u.dom=false}try{$u.nonEnumArgs=!fu.call(arguments,1)}catch(i){$u.nonEnumArgs=true}}(1,0),Ln.templateSettings={escape:_n,evaluate:vn,interpolate:gn,variable:"",imports:{_:Ln}};var Lu=vu||function(n,t){return null==t?n:ot(t,Gu(t),ot(t,Ko(t),n))},Pu=function(){function n(){}return function(t){if(le(t)){n.prototype=t;var r=new n;n.prototype=null}return r||_.Object()}}(),Bu=Yt(vt),zu=Yt(gt,true),Mu=Zt(),Du=Zt(true),qu=Uu?function(n,t){
|
81
|
+
return Uu.set(n,t),n}:Ie;nu||(Mt=Qe&&pu?function(n){var t=n.byteLength,r=_u?eu(t/Cu):0,e=r*Cu,u=new Qe(t);if(r){var o=new _u(u,0,r);o.set(new _u(n,0,r))}return t!=e&&(o=new pu(u,e),o.set(new pu(n,e))),u}:ke(null));var Ku=yu&&cu?function(n){return new Dn(n)}:ke(null),Vu=Uu?function(n){return Uu.get(n)}:Se,Yu=function(){return $u.funcNames?"constant"==ke.name?Ot("name"):function(n){for(var t=n.name,r=Wu[t],e=r?r.length:0;e--;){var u=r[e],o=u.func;if(null==o||o==n)return u.name}return t}:ke("")}(),Zu=Ot("length"),Gu=uu?function(n){
|
82
|
+
return uu(Nr(n))}:ke([]),Ju=function(){var n=0,t=0;return function(r,e){var u=wo(),o=W-(u-t);if(t=u,0<o){if(++n>=U)return r}else n=0;return qu(r,e)}}(),Xu=ie(function(n,t){return Uo(n)||ae(n)?ct(n,ht(t,false,true)):[]}),Hu=tr(),Qu=tr(true),no=ie(function(t,r){t||(t=[]),r=ht(r);var e=ut(t,r);return kt(t,r.sort(n)),e}),to=hr(),ro=hr(true),eo=ie(function(n){return Ft(ht(n,false,true))}),uo=ie(function(n,t){return Uo(n)||ae(n)?ct(n,t):[]}),oo=ie(Vr),io=ie(function(n,t){var r=n?Zu(n):0;return Rr(r)&&(n=Fr(n)),ut(n,ht(t));
|
83
|
+
|
84
|
+
}),ao=Kt(function(n,t,r){Ze.call(n,r)?++n[r]:n[r]=1}),fo=nr(Bu),co=nr(zu,true),lo=ur(Vn,Bu),so=ur(function(n,t){for(var r=n.length;r--&&false!==t(n[r],r,n););return n},zu),po=Kt(function(n,t,r){Ze.call(n,r)?n[r].push(t):n[r]=[t]}),ho=Kt(function(n,t,r){n[r]=t}),_o=ie(function(n,t,r){var e=-1,u=typeof t=="function",o=kr(t),i=Zu(n),a=Rr(i)?Te(i):[];return Bu(n,function(n){var i=u?t:o&&null!=n&&n[t];a[++e]=i?i.apply(n,r):jr(n,t,r)}),a}),vo=Kt(function(n,t,r){n[r?0:1].push(t)},function(){return[[],[]]}),go=cr(function(n,t,r,e){
|
85
|
+
var u=-1,o=n.length;for(e&&o&&(r=n[++u]);++u<o;)r=t(r,n[u],u,n);return r},Bu),yo=cr(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),mo=ie(function(n,t){if(null==n)return[];var r=t[2];return r&&Er(t[0],t[1],r)&&(t.length=1),Ut(n,ht(t),[])}),wo=xu||function(){return(new Ue).getTime()},bo=ie(function(n,t,r){var e=x;if(r.length)var u=v(r,bo.placeholder),e=e|k;return _r(n,e,t,r,u)}),xo=ie(function(n,t){t=t.length?ht(t):ye(n);for(var r=-1,e=t.length;++r<e;){var u=t[r];
|
86
|
+
|
87
|
+
n[u]=_r(n[u],x,n)}return n}),Ao=ie(function(n,t,r){var e=x|A;if(r.length)var u=v(r,Ao.placeholder),e=e|k;return _r(t,e,n,r,u)}),jo=Ht(O),Oo=Ht(E),Eo=ie(function(n,t){return ft(n,1,t)}),ko=ie(function(n,t,r){return ft(n,t,r)}),Io=er(),Ro=er(true),So=fr(k),Co=fr(I),To=ie(function(n,t){return _r(n,S,null,null,null,ht(t))});$u.argsTag||(ae=function(n){return Rr(h(n)?n.length:w)&&Ze.call(n,"callee")&&!fu.call(n,"callee")});var Uo=gu||function(n){return h(n)&&Rr(n.length)&&Je.call(n)==z};$u.dom||(fe=function(n){
|
88
|
+
return!!n&&1===n.nodeType&&h(n)&&!No(n)});var Wo=Au||function(n){return typeof n=="number"&&du(n)},Fo=e(/x/)||pu&&!e(pu)?function(n){return Je.call(n)==K}:e,No=ou?function(n){if(!n||Je.call(n)!=Y||!Ln.support.argsTag&&ae(n))return false;var t=n.valueOf,r=se(t)&&(r=ou(t))&&ou(r);return r?n==r||ou(n)==r:Ur(n)}:Ur,$o=Vt(function(n,t,r){return r?et(n,t,r):Lu(n,t)}),Lo=ie(function(n){var t=n[0];return null==t?t:(n.push(tt),$o.apply(w,n))}),Po=rr(vt),Bo=rr(gt),zo=or(Mu),Mo=or(Du),Do=ir(vt),qo=ir(gt),Ko=mu?function(n){
|
89
|
+
if(n)var t=n.constructor,r=n.length;return typeof t=="function"&&t.prototype===n||(typeof n=="function"?Ln.support.enumPrototypes:Rr(r))?Wr(n):le(n)?mu(n):[]}:Wr,Vo=Vt(jt),Yo=ie(function(n,t){if(null==n)return{};if("function"!=typeof t[0])return t=Hn(ht(t),Be),Cr(n,ct(de(n),t));var r=zt(t[0],t[1],3);return Tr(n,function(n,t,e){return!r(n,t,e)})}),Zo=ie(function(n,t){return null==n?{}:"function"==typeof t[0]?Tr(n,zt(t[0],t[1],3)):Cr(n,ht(t))}),Go=Jt(function(n,t,r){return t=t.toLowerCase(),n+(r?t.charAt(0).toUpperCase()+t.slice(1):t);
|
90
|
+
|
91
|
+
}),Jo=Jt(function(n,t,r){return n+(r?"-":"")+t.toLowerCase()}),Xo=ar(),Ho=ar(true);8!=ju(Tn+"08")&&(xe=function(n,t,r){return(r?Er(n,t,r):null==t)?t=0:t&&(t=+t),n=je(n),ju(n,t||(En.test(n)?16:10))});var Qo=Jt(function(n,t,r){return n+(r?"_":"")+t.toLowerCase()}),ni=Jt(function(n,t,r){return n+(r?" ":"")+(t.charAt(0).toUpperCase()+t.slice(1))}),ti=ie(function(n,t){try{return n.apply(w,t)}catch(r){return ce(r)?r:new We(r)}}),ri=ie(function(n,t){return function(r){return jr(r,n,t)}}),ei=ie(function(n,t){
|
92
|
+
return function(r){return jr(n,r,t)}}),ui=Qt(Qn),oi=Qt(function(n){for(var t=-1,r=n.length,e=ku;++t<r;){var u=n[t];u<e&&(e=u)}return e},true);return Ln.prototype=Pn.prototype,Bn.prototype=Pu(Pn.prototype),Bn.prototype.constructor=Bn,zn.prototype=Pu(Pn.prototype),zn.prototype.constructor=zn,Mn.prototype["delete"]=function(n){return this.has(n)&&delete this.__data__[n]},Mn.prototype.get=function(n){return"__proto__"==n?w:this.__data__[n]},Mn.prototype.has=function(n){return"__proto__"!=n&&Ze.call(this.__data__,n);
|
93
|
+
|
94
|
+
},Mn.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"||le(n)?t.set.add(n):t.hash[n]=true},oe.Cache=Mn,Ln.after=function(n,t){if(typeof t!="function"){if(typeof n!="function")throw new ze(L);var r=n;n=t,t=r}return n=du(n=+n)?n:0,function(){return 1>--n?t.apply(this,arguments):void 0}},Ln.ary=function(n,t,r){return r&&Er(n,t,r)&&(t=null),t=n&&null==t?n.length:wu(+t||0,0),_r(n,R,null,null,null,null,t)},Ln.assign=$o,
|
95
|
+
Ln.at=io,Ln.before=ee,Ln.bind=bo,Ln.bindAll=xo,Ln.bindKey=Ao,Ln.callback=Ee,Ln.chain=Zr,Ln.chunk=function(n,t,r){t=(r?Er(n,t,r):null==t)?1:wu(+t||1,1),r=0;for(var e=n?n.length:0,u=-1,o=Te(tu(e/t));r<e;)o[++u]=St(n,r,r+=t);return o},Ln.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},Ln.constant=ke,Ln.countBy=ao,Ln.create=function(n,t,r){var e=Pu(n);return r&&Er(n,t,r)&&(t=null),t?Lu(e,t):e},Ln.curry=jo,Ln.curryRight=Oo,Ln.debounce=ue,Ln.defaults=Lo,
|
96
|
+
Ln.defer=Eo,Ln.delay=ko,Ln.difference=Xu,Ln.drop=Pr,Ln.dropRight=Br,Ln.dropRightWhile=function(n,t,r){return n&&n.length?$t(n,mr(t,r,3),true,true):[]},Ln.dropWhile=function(n,t,r){return n&&n.length?$t(n,mr(t,r,3),true):[]},Ln.fill=function(n,t,r,e){var u=n?n.length:0;if(!u)return[];for(r&&typeof r!="number"&&Er(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},Ln.filter=Xr,Ln.flatten=function(n,t,r){var e=n?n.length:0;
|
97
|
+
|
98
|
+
return r&&Er(n,t,r)&&(t=false),e?ht(n,t):[]},Ln.flattenDeep=function(n){return n&&n.length?ht(n,true):[]},Ln.flow=Io,Ln.flowRight=Ro,Ln.forEach=lo,Ln.forEachRight=so,Ln.forIn=zo,Ln.forInRight=Mo,Ln.forOwn=Do,Ln.forOwnRight=qo,Ln.functions=ye,Ln.groupBy=po,Ln.indexBy=ho,Ln.initial=function(n){return Br(n,1)},Ln.intersection=function(){for(var n=[],t=-1,e=arguments.length,u=[],o=wr(),i=o==r,a=[];++t<e;){var f=arguments[t];(Uo(f)||ae(f))&&(n.push(f),u.push(i&&120<=f.length?Ku(t&&f):null))}if(e=n.length,2>e)return a;
|
99
|
+
|
100
|
+
var i=n[0],c=-1,l=i?i.length:0,s=u[0];n:for(;++c<l;)if(f=i[c],0>(s?qn(s,f):o(a,f,0))){for(t=e;--t;){var p=u[t];if(0>(p?qn(p,f):o(n[t],f,0)))continue n}s&&s.push(f),a.push(f)}return a},Ln.invert=function(n,t,r){r&&Er(n,t,r)&&(t=null),r=-1;for(var e=Ko(n),u=e.length,o={};++r<u;){var i=e[r],a=n[i];t?Ze.call(o,a)?o[a].push(i):o[a]=[i]:o[a]=i}return o},Ln.invoke=_o,Ln.keys=Ko,Ln.keysIn=de,Ln.map=Qr,Ln.mapValues=function(n,t,r){var e={};return t=mr(t,r,3),vt(n,function(n,r,u){e[r]=t(n,r,u)}),e},Ln.matches=function(n){
|
101
|
+
return xt(at(n,true))},Ln.matchesProperty=function(n,t){return At(n,at(t,true))},Ln.memoize=oe,Ln.merge=Vo,Ln.method=ri,Ln.methodOf=ei,Ln.mixin=Re,Ln.negate=function(n){if(typeof n!="function")throw new ze(L);return function(){return!n.apply(this,arguments)}},Ln.omit=Yo,Ln.once=function(n){return ee(2,n)},Ln.pairs=function(n){for(var t=-1,r=Ko(n),e=r.length,u=Te(e);++t<e;){var o=r[t];u[t]=[o,n[o]]}return u},Ln.partial=So,Ln.partialRight=Co,Ln.partition=vo,Ln.pick=Zo,Ln.pluck=function(n,t){return Qr(n,Ce(t));
|
102
|
+
|
103
|
+
},Ln.property=Ce,Ln.propertyOf=function(n){return function(t){return dt(n,$r(t),t+"")}},Ln.pull=function(){var n=arguments,t=n[0];if(!t||!t.length)return t;for(var r=0,e=wr(),u=n.length;++r<u;)for(var o=0,i=n[r];-1<(o=e(t,i,o));)su.call(t,o,1);return t},Ln.pullAt=no,Ln.range=function(n,t,r){r&&Er(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=wu(tu((t-n)/(r||1)),0);for(var u=Te(t);++e<t;)u[e]=n,n+=r;return u},Ln.rearg=To,Ln.reject=function(n,t,r){var e=Uo(n)?Xn:st;
|
104
|
+
|
105
|
+
return t=mr(t,r,3),e(n,function(n,r,e){return!t(n,r,e)})},Ln.remove=function(n,t,r){var e=[];if(!n||!n.length)return e;var u=-1,o=[],i=n.length;for(t=mr(t,r,3);++u<i;)r=n[u],t(r,u,n)&&(e.push(r),o.push(u));return kt(n,o),e},Ln.rest=qr,Ln.restParam=ie,Ln.set=function(n,t,r){if(null==n)return n;var e=t+"";t=null!=n[e]||kr(t,n)?[e]:$r(t);for(var e=-1,u=t.length,o=u-1,i=n;null!=i&&++e<u;){var a=t[e];le(i)&&(e==o?i[a]=r:null==i[a]&&(i[a]=Or(t[e+1])?[]:{})),i=i[a]}return n},Ln.shuffle=te,Ln.slice=function(n,t,r){
|
106
|
+
var e=n?n.length:0;return e?(r&&typeof r!="number"&&Er(n,t,r)&&(t=0,r=e),St(n,t,r)):[]},Ln.sortBy=function(n,t,r){if(null==n)return[];r&&Er(n,t,r)&&(t=null);var e=-1;return t=mr(t,r,3),n=bt(n,function(n,r,u){return{a:t(n,r,u),b:++e,c:n}}),Tt(n,f)},Ln.sortByAll=mo,Ln.sortByOrder=function(n,t,r,e){return null==n?[]:(e&&Er(t,r,e)&&(r=null),Uo(t)||(t=null==t?[]:[t]),Uo(r)||(r=null==r?[]:[r]),Ut(n,t,r))},Ln.spread=function(n){if(typeof n!="function")throw new ze(L);return function(t){return n.apply(this,t);
|
107
|
+
|
108
|
+
}},Ln.take=function(n,t,r){return n&&n.length?((r?Er(n,t,r):null==t)&&(t=1),St(n,0,0>t?0:t)):[]},Ln.takeRight=function(n,t,r){var e=n?n.length:0;return e?((r?Er(n,t,r):null==t)&&(t=1),t=e-(+t||0),St(n,0>t?0:t)):[]},Ln.takeRightWhile=function(n,t,r){return n&&n.length?$t(n,mr(t,r,3),false,true):[]},Ln.takeWhile=function(n,t,r){return n&&n.length?$t(n,mr(t,r,3)):[]},Ln.tap=function(n,t,r){return t.call(r,n),n},Ln.throttle=function(n,t,r){var e=true,u=true;if(typeof n!="function")throw new ze(L);return false===r?e=false:le(r)&&(e="leading"in r?!!r.leading:e,
|
109
|
+
u="trailing"in r?!!r.trailing:u),$n.leading=e,$n.maxWait=+t,$n.trailing=u,ue(n,t,$n)},Ln.thru=Gr,Ln.times=function(n,t,r){if(n=eu(n),1>n||!du(n))return[];var e=-1,u=Te(bu(n,Iu));for(t=zt(t,r,1);++e<n;)e<Iu?u[e]=t(e):t(e);return u},Ln.toArray=function(n){var t=n?Zu(n):0;return Rr(t)?t?Ln.support.unindexedChars&&_e(n)?n.split(""):Kn(n):[]:me(n)},Ln.toPlainObject=ge,Ln.transform=function(n,t,r,e){var u=Uo(n)||ve(n);return t=mr(t,e,4),null==r&&(u||le(n)?(e=n.constructor,r=u?Uo(n)?new e:[]:Pu(Fo(e)&&e.prototype)):r={}),
|
110
|
+
(u?Vn:vt)(n,function(n,e,u){return t(r,n,e,u)}),r},Ln.union=eo,Ln.uniq=Kr,Ln.unzip=Vr,Ln.values=me,Ln.valuesIn=function(n){return Nt(n,de(n))},Ln.where=function(n,t){return Xr(n,xt(t))},Ln.without=uo,Ln.wrap=function(n,t){return t=null==t?Ie:t,_r(t,k,null,[n],[])},Ln.xor=function(){for(var n=-1,t=arguments.length;++n<t;){var r=arguments[n];if(Uo(r)||ae(r))var e=e?ct(e,r).concat(ct(r,e)):r}return e?Ft(e):[]},Ln.zip=oo,Ln.zipObject=Yr,Ln.backflow=Ro,Ln.collect=Qr,Ln.compose=Ro,Ln.each=lo,Ln.eachRight=so,
|
111
|
+
Ln.extend=$o,Ln.iteratee=Ee,Ln.methods=ye,Ln.object=Yr,Ln.select=Xr,Ln.tail=qr,Ln.unique=Kr,Re(Ln,Ln),Ln.add=function(n,t){return(+n||0)+(+t||0)},Ln.attempt=ti,Ln.camelCase=Go,Ln.capitalize=function(n){return(n=u(n))&&n.charAt(0).toUpperCase()+n.slice(1)},Ln.clone=function(n,t,r,e){return t&&typeof t!="boolean"&&Er(n,t,r)?t=false:typeof t=="function"&&(e=r,r=t,t=false),r=typeof r=="function"&&zt(r,e,1),at(n,t,r)},Ln.cloneDeep=function(n,t,r){return t=typeof t=="function"&&zt(t,r,1),at(n,true,t)},Ln.deburr=we,
|
112
|
+
Ln.endsWith=function(n,t,r){n=u(n),t+="";var e=n.length;return r=r===w?e:bu(0>r?0:+r||0,e),r-=t.length,0<=r&&n.indexOf(t,r)==r},Ln.escape=function(n){return(n=u(n))&&hn.test(n)?n.replace(sn,l):n},Ln.escapeRegExp=be,Ln.every=Jr,Ln.find=fo,Ln.findIndex=Hu,Ln.findKey=Po,Ln.findLast=co,Ln.findLastIndex=Qu,Ln.findLastKey=Bo,Ln.findWhere=function(n,t){return fo(n,xt(t))},Ln.first=zr,Ln.get=function(n,t,r){return n=null==n?w:dt(n,$r(t),t+""),n===w?r:n},Ln.has=function(n,t){if(null==n)return false;var r=Ze.call(n,t);
|
113
|
+
|
114
|
+
return r||kr(t)||(t=$r(t),n=1==t.length?n:dt(n,St(t,0,-1)),t=Dr(t),r=null!=n&&Ze.call(n,t)),r||Ln.support.nonEnumStrings&&_e(n)&&Or(t,n.length)},Ln.identity=Ie,Ln.includes=Hr,Ln.indexOf=Mr,Ln.inRange=function(n,t,r){return t=+t||0,"undefined"===typeof r?(r=t,t=0):r=+r||0,n>=bu(t,r)&&n<wu(t,r)},Ln.isArguments=ae,Ln.isArray=Uo,Ln.isBoolean=function(n){return true===n||false===n||h(n)&&Je.call(n)==M},Ln.isDate=function(n){return h(n)&&Je.call(n)==D},Ln.isElement=fe,Ln.isEmpty=function(n){if(null==n)return true;
|
115
|
+
|
116
|
+
var t=Zu(n);return Rr(t)&&(Uo(n)||_e(n)||ae(n)||h(n)&&Fo(n.splice))?!t:!Ko(n).length},Ln.isEqual=function(n,t,r,e){return r=typeof r=="function"&&zt(r,e,3),!r&&Sr(n)&&Sr(t)?n===t:(e=r?r(n,t):w,e===w?mt(n,t,r):!!e)},Ln.isError=ce,Ln.isFinite=Wo,Ln.isFunction=Fo,Ln.isMatch=function(n,t,r,e){var u=Ko(t),o=u.length;if(!o)return true;if(null==n)return false;if(r=typeof r=="function"&&zt(r,e,3),n=Nr(n),!r&&1==o){var i=u[0];if(e=t[i],Sr(e))return e===n[i]&&(e!==w||i in n)}for(var i=Te(o),a=Te(o);o--;)e=i[o]=t[u[o]],
|
117
|
+
a[o]=Sr(e);return wt(n,u,i,a,r)},Ln.isNaN=function(n){return pe(n)&&n!=+n},Ln.isNative=se,Ln.isNull=function(n){return null===n},Ln.isNumber=pe,Ln.isObject=le,Ln.isPlainObject=No,Ln.isRegExp=he,Ln.isString=_e,Ln.isTypedArray=ve,Ln.isUndefined=function(n){return n===w},Ln.kebabCase=Jo,Ln.last=Dr,Ln.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?wu(e+r,0):bu(r||0,e-1))+1;else if(r)return u=Pt(n,t,true)-1,n=n[u],(t===t?t===n:n!==n)?u:-1;if(t!==t)return p(n,u,true);
|
118
|
+
|
119
|
+
for(;u--;)if(n[u]===t)return u;return-1},Ln.max=ui,Ln.min=oi,Ln.noConflict=function(){return _._=Xe,this},Ln.noop=Se,Ln.now=wo,Ln.pad=function(n,t,r){n=u(n),t=+t;var e=n.length;return e<t&&du(t)?(e=(t-e)/2,t=eu(e),e=tu(e),r=sr("",e,r),r.slice(0,t)+n+r):n},Ln.padLeft=Xo,Ln.padRight=Ho,Ln.parseInt=xe,Ln.random=function(n,t,r){r&&Er(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,
|
120
|
+
r||n%1||t%1?(r=Ou(),bu(n+r*(t-n+parseFloat("1e-"+((r+"").length-1))),t)):It(n,t)},Ln.reduce=go,Ln.reduceRight=yo,Ln.repeat=Ae,Ln.result=function(n,t,r){var e=null==n?w:Nr(n)[t];return e===w&&(null==n||kr(t,n)||(t=$r(t),n=1==t.length?n:dt(n,St(t,0,-1)),e=null==n?w:Nr(n)[Dr(t)]),e=e===w?r:e),Fo(e)?e.call(n):e},Ln.runInContext=m,Ln.size=function(n){var t=n?Zu(n):0;return Rr(t)?t:Ko(n).length},Ln.snakeCase=Qo,Ln.some=re,Ln.sortedIndex=to,Ln.sortedLastIndex=ro,Ln.startCase=ni,Ln.startsWith=function(n,t,r){
|
121
|
+
return n=u(n),r=null==r?0:bu(0>r?0:+r||0,n.length),n.lastIndexOf(t,r)==r},Ln.sum=function(n,t,r){r&&Er(n,t,r)&&(t=null);var e=mr(),u=null==t;if(e===it&&u||(u=false,t=e(t,r,3)),u){for(n=Uo(n)?n:Fr(n),t=n.length,r=0;t--;)r+=+n[t]||0;n=r}else n=Wt(n,t);return n},Ln.template=function(n,t,r){var e=Ln.templateSettings;r&&Er(n,t,r)&&(t=r=null),n=u(n),t=et(Lu({},r||t),e,rt),r=et(Lu({},t.imports),e.imports,rt);var o,i,a=Ko(r),f=Nt(r,a),c=0;r=t.interpolate||Rn;var l="__p+='";r=Pe((t.escape||Rn).source+"|"+r.source+"|"+(r===gn?jn:Rn).source+"|"+(t.evaluate||Rn).source+"|$","g");
|
122
|
+
|
123
|
+
var p="sourceURL"in t?"//# sourceURL="+t.sourceURL+"\n":"";if(n.replace(r,function(t,r,e,u,a,f){return e||(e=u),l+=n.slice(c,f).replace(Sn,s),r&&(o=true,l+="'+__e("+r+")+'"),a&&(i=true,l+="';"+a+";\n__p+='"),e&&(l+="'+((__t=("+e+"))==null?'':__t)+'"),c=f+t.length,t}),l+="';",(t=t.variable)||(l="with(obj){"+l+"}"),l=(i?l.replace(an,""):l).replace(fn,"$1").replace(cn,"$1;"),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}",
|
124
|
+
t=ti(function(){return Fe(a,p+"return "+l).apply(w,f)}),t.source=l,ce(t))throw t;return t},Ln.trim=je,Ln.trimLeft=function(n,t,r){var e=n;return(n=u(n))?n.slice((r?Er(e,t,r):null==t)?g(n):i(n,t+"")):n},Ln.trimRight=function(n,t,r){var e=n;return(n=u(n))?(r?Er(e,t,r):null==t)?n.slice(0,y(n)+1):n.slice(0,a(n,t+"")+1):n},Ln.trunc=function(n,t,r){r&&Er(n,t,r)&&(t=null);var e=C;if(r=T,null!=t)if(le(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;
|
125
|
+
|
126
|
+
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(he(o)){if(n.slice(e).search(o)){var i,a=n.slice(0,e);for(o.global||(o=Pe(o.source,(On.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},Ln.unescape=function(n){return(n=u(n))&&pn.test(n)?n.replace(ln,d):n},Ln.uniqueId=function(n){var t=++Ge;return u(n)+t},Ln.words=Oe,Ln.all=Jr,Ln.any=re,Ln.contains=Hr,
|
127
|
+
Ln.detect=fo,Ln.foldl=go,Ln.foldr=yo,Ln.head=zr,Ln.include=Hr,Ln.inject=go,Re(Ln,function(){var n={};return vt(Ln,function(t,r){Ln.prototype[r]||(n[r]=t)}),n}(),false),Ln.sample=ne,Ln.prototype.sample=function(n){return this.__chain__||null!=n?this.thru(function(t){return ne(t,n)}):ne(this.value())},Ln.VERSION=b,Vn("bind bindKey curry curryRight partial partialRight".split(" "),function(n){Ln[n].placeholder=Ln}),Vn(["dropWhile","filter","map","takeWhile"],function(n,t){var r=t!=$,e=t==F;zn.prototype[n]=function(n,u){
|
128
|
+
var o=this.__filtered__,i=o&&e?new zn(this):this.clone();return(i.__iteratees__||(i.__iteratees__=[])).push({done:false,count:0,index:0,iteratee:mr(n,u,1),limit:-1,type:t}),i.__filtered__=o||r,i}}),Vn(["drop","take"],function(n,t){var r=n+"While";zn.prototype[n]=function(r){var e=this.__filtered__,u=e&&!t?this.dropWhile():this.clone();return r=null==r?1:wu(eu(r)||0,0),e?t?u.__takeCount__=bu(u.__takeCount__,r):Dr(u.__iteratees__).limit=r:(u.__views__||(u.__views__=[])).push({size:r,type:n+(0>u.__dir__?"Right":"")
|
129
|
+
}),u},zn.prototype[n+"Right"]=function(t){return this.reverse()[n](t).reverse()},zn.prototype[n+"RightWhile"]=function(n,t){return this.reverse()[r](n,t).reverse()}}),Vn(["first","last"],function(n,t){var r="take"+(t?"Right":"");zn.prototype[n]=function(){return this[r](1).value()[0]}}),Vn(["initial","rest"],function(n,t){var r="drop"+(t?"":"Right");zn.prototype[n]=function(){return this[r](1)}}),Vn(["pluck","where"],function(n,t){var r=t?"filter":"map",e=t?xt:Ce;zn.prototype[n]=function(n){return this[r](e(n));
|
130
|
+
|
131
|
+
}}),zn.prototype.compact=function(){return this.filter(Ie)},zn.prototype.reject=function(n,t){return n=mr(n,t,1),this.filter(function(t){return!n(t)})},zn.prototype.slice=function(n,t){n=null==n?0:+n||0;var r=0>n?this.takeRight(-n):this.drop(n);return t!==w&&(t=+t||0,r=0>t?r.dropRight(-t):r.take(t-n)),r},zn.prototype.toArray=function(){return this.drop(0)},vt(zn.prototype,function(n,t){var r=Ln[t];if(r){var e=/^(?:filter|map|reject)|While$/.test(t),u=/^(?:first|last)$/.test(t);Ln.prototype[t]=function(){
|
132
|
+
function t(n){return n=[n],iu.apply(n,o),r.apply(Ln,n)}var o=arguments,i=this.__chain__,a=this.__wrapped__,f=!!this.__actions__.length,c=a instanceof zn,l=o[0],s=c||Uo(a);return s&&e&&typeof l=="function"&&1!=l.length&&(c=s=false),c=c&&!f,u&&!i?c?n.call(a):r.call(Ln,this.value()):s?(a=n.apply(c?a:new zn(this),o),u||!f&&!a.__actions__||(a.__actions__||(a.__actions__=[])).push({func:Gr,args:[t],thisArg:Ln}),new Bn(a,i)):this.thru(t)}}}),Vn("concat join pop push replace shift sort splice split unshift".split(" "),function(n){
|
133
|
+
var t=(/^(?:replace|split)$/.test(n)?Ke:Me)[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:join|pop|replace|shift)$/.test(n),u=$u.spliceObjects||!/^(?:pop|shift|splice)$/.test(n)?t:function(){var n=t.apply(this,arguments);return 0===this.length&&delete this[0],n};Ln.prototype[n]=function(){var n=arguments;return e&&!this.__chain__?u.apply(this.value(),n):this[r](function(t){return u.apply(t,n)})}}),vt(zn.prototype,function(n,t){var r=Ln[t];if(r){var e=r.name;(Wu[e]||(Wu[e]=[])).push({
|
134
|
+
name:t,func:r})}}),Wu[lr(null,A).name]=[{name:"wrapper",func:null}],zn.prototype.clone=function(){var n=this.__actions__,t=this.__iteratees__,r=this.__views__,e=new zn(this.__wrapped__);return e.__actions__=n?Kn(n):null,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},zn.prototype.reverse=function(){if(this.__filtered__){var n=new zn(this);n.__dir__=-1,n.__filtered__=true}else n=this.clone(),n.__dir__*=-1;
|
135
|
+
|
136
|
+
return n},zn.prototype.value=function(){var n=this.__wrapped__.value();if(!Uo(n))return Lt(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 f=u[i],c=f.size;switch(f.type){case"drop":o+=c;break;case"dropRight":t-=c;break;case"take":t=bu(t,o+c);break;case"takeRight":o=wu(o,t-c)}}t={start:o,end:t},u=t.start,o=t.end,t=o-u,u=e?o:u-1,o=bu(t,this.__takeCount__),a=(i=this.__iteratees__)?i.length:0,f=0,c=[];n:for(;t--&&f<o;){for(var u=u+r,l=-1,s=n[u];++l<a;){
|
137
|
+
var p=i[l],h=p.iteratee,_=p.type;if(_==F){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){if(_==N)continue n;break n}}c[f++]=s}return c},Ln.prototype.chain=function(){return Zr(this)},Ln.prototype.commit=function(){return new Bn(this.value(),this.__chain__)},Ln.prototype.plant=function(n){for(var t,r=this;r instanceof Pn;){var e=Lr(r);t?u.__wrapped__=e:t=e;var u=e,r=r.__wrapped__;
|
138
|
+
|
139
|
+
}return u.__wrapped__=n,t},Ln.prototype.reverse=function(){var n=this.__wrapped__;return n instanceof zn?(this.__actions__.length&&(n=new zn(this)),new Bn(n.reverse(),this.__chain__)):this.thru(function(n){return n.reverse()})},Ln.prototype.toString=function(){return this.value()+""},Ln.prototype.run=Ln.prototype.toJSON=Ln.prototype.valueOf=Ln.prototype.value=function(){return Lt(this.__wrapped__,this.__actions__)},Ln.prototype.collect=Ln.prototype.map,Ln.prototype.head=Ln.prototype.first,Ln.prototype.select=Ln.prototype.filter,
|
140
|
+
Ln.prototype.tail=Ln.prototype.rest,Ln}var w,b="3.7.0",x=1,A=2,j=4,O=8,E=16,k=32,I=64,R=128,S=256,C=30,T="...",U=150,W=16,F=0,N=1,$=2,L="Expected a function",P="__lodash_placeholder__",B="[object Arguments]",z="[object Array]",M="[object Boolean]",D="[object Date]",q="[object Error]",K="[object Function]",V="[object Number]",Y="[object Object]",Z="[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]",an=/\b__p\+='';/g,fn=/\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=/[.*+?^${}()|[\]\/\\]/g,bn=RegExp(wn.source),xn=/[\u0300-\u036f\ufe20-\ufe23]/g,An=/\\(\\)?/g,jn=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,On=/\w*$/,En=/^0[xX]/,kn=/^\[object .+?Constructor\]$/,In=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,Rn=/($^)/,Sn=/['\n\r\u2028\u2029\\]/g,Cn=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 parseInt setTimeout TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap window".split(" "),Wn="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),Fn={};
|
141
|
+
|
142
|
+
Fn[X]=Fn[H]=Fn[Q]=Fn[nn]=Fn[tn]=Fn[rn]=Fn[en]=Fn[un]=Fn[on]=true,Fn[B]=Fn[z]=Fn[J]=Fn[M]=Fn[D]=Fn[q]=Fn[K]=Fn["[object Map]"]=Fn[V]=Fn[Y]=Fn[Z]=Fn["[object Set]"]=Fn[G]=Fn["[object WeakMap]"]=false;var Nn={};Nn[B]=Nn[z]=Nn[J]=Nn[M]=Nn[D]=Nn[X]=Nn[H]=Nn[Q]=Nn[nn]=Nn[tn]=Nn[V]=Nn[Y]=Nn[Z]=Nn[G]=Nn[rn]=Nn[en]=Nn[un]=Nn[on]=true,Nn[q]=Nn[K]=Nn["[object Map]"]=Nn["[object Set]"]=Nn["[object WeakMap]"]=false;var $n={leading:false,maxWait:0,trailing:false},Ln={"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A",
|
143
|
+
"\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",
|
144
|
+
"\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss"},Pn={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},Bn={"&":"&","<":"<",">":">",""":'"',"'":"'","`":"`"},zn={"function":true,object:true},Mn={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Dn=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,Yn=qn&&qn.exports===Dn&&Dn,Zn=Dn&&qn&&typeof global=="object"&&global&&global.Object&&global||Vn!==(this&&this.window)&&Vn||Kn||this,Gn=function(){
|
145
|
+
try{Object({toString:0}+"")}catch(n){return function(){return false}}return function(n){return typeof n.toString!="function"&&typeof(n+"")=="string"}}(),Jn=m();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(Zn._=Jn, define(function(){return Jn})):Dn&&qn?Yn?(qn.exports=Jn)._=Jn:Dn._=Jn:Zn._=Jn}).call(this);
|
@@ -1,9 +1,9 @@
|
|
1
1
|
/**
|
2
2
|
* @license
|
3
|
-
* lodash 3.
|
3
|
+
* lodash 3.7.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
|
-
* Based on Underscore.js 1.8.
|
6
|
+
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
|
7
7
|
* Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
8
8
|
* Available under MIT license <https://lodash.com/license>
|
9
9
|
*/
|
@@ -13,7 +13,7 @@
|
|
13
13
|
var undefined;
|
14
14
|
|
15
15
|
/** Used as the semantic version number. */
|
16
|
-
var VERSION = '3.
|
16
|
+
var VERSION = '3.7.0';
|
17
17
|
|
18
18
|
/** Used to compose bitmasks for wrapper metadata. */
|
19
19
|
var BIND_FLAG = 1,
|
@@ -87,24 +87,36 @@
|
|
87
87
|
reEvaluate = /<%([\s\S]+?)%>/g,
|
88
88
|
reInterpolate = /<%=([\s\S]+?)%>/g;
|
89
89
|
|
90
|
-
/**
|
91
|
-
|
92
|
-
|
93
|
-
|
90
|
+
/** Used to match property names within property paths. */
|
91
|
+
var reIsDeepProp = /\.|\[(?:[^[\]]+|(["'])(?:(?!\1)[^\n\\]|\\.)*?)\1\]/,
|
92
|
+
reIsPlainProp = /^\w*$/,
|
93
|
+
rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g;
|
94
94
|
|
95
95
|
/**
|
96
|
-
* Used to match [
|
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.
|
97
99
|
*/
|
100
|
+
var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g,
|
101
|
+
reHasRegExpChars = RegExp(reRegExpChars.source);
|
102
|
+
|
103
|
+
/** Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). */
|
104
|
+
var reComboMark = /[\u0300-\u036f\ufe20-\ufe23]/g;
|
105
|
+
|
106
|
+
/** Used to match backslashes in property paths. */
|
107
|
+
var reEscapeChar = /\\(\\)?/g;
|
108
|
+
|
109
|
+
/** Used to match [ES template delimiters](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-template-literal-lexical-components). */
|
98
110
|
var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
|
99
111
|
|
100
112
|
/** Used to match `RegExp` flags from their coerced string values. */
|
101
113
|
var reFlags = /\w*$/;
|
102
114
|
|
103
115
|
/** Used to detect hexadecimal string values. */
|
104
|
-
var
|
116
|
+
var reHasHexPrefix = /^0[xX]/;
|
105
117
|
|
106
118
|
/** Used to detect host constructors (Safari > 5). */
|
107
|
-
var
|
119
|
+
var reIsHostCtor = /^\[object .+?Constructor\]$/;
|
108
120
|
|
109
121
|
/** Used to match latin-1 supplementary letters (excluding mathematical operators). */
|
110
122
|
var reLatin1 = /[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g;
|
@@ -112,14 +124,6 @@
|
|
112
124
|
/** Used to ensure capturing order of template delimiters. */
|
113
125
|
var reNoMatch = /($^)/;
|
114
126
|
|
115
|
-
/**
|
116
|
-
* Used to match `RegExp` [special characters](http://www.regular-expressions.info/characters.html#special).
|
117
|
-
* In addition to special characters the forward slash is escaped to allow for
|
118
|
-
* easier `eval` use and `Function` compilation.
|
119
|
-
*/
|
120
|
-
var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g,
|
121
|
-
reHasRegExpChars = RegExp(reRegExpChars.source);
|
122
|
-
|
123
127
|
/** Used to match unescaped characters in compiled string literals. */
|
124
128
|
var reUnescapedString = /['\n\r\u2028\u2029\\]/g;
|
125
129
|
|
@@ -257,7 +261,7 @@
|
|
257
261
|
var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;
|
258
262
|
|
259
263
|
/** Detect free variable `global` from Node.js. */
|
260
|
-
var freeGlobal = freeExports && freeModule && typeof global == 'object' && global;
|
264
|
+
var freeGlobal = freeExports && freeModule && typeof global == 'object' && global && global.Object && global;
|
261
265
|
|
262
266
|
/** Detect free variable `self`. */
|
263
267
|
var freeSelf = objectTypes[typeof self] && self && self.Object && self;
|
@@ -292,10 +296,10 @@
|
|
292
296
|
var valIsReflexive = value === value,
|
293
297
|
othIsReflexive = other === other;
|
294
298
|
|
295
|
-
if (value > other || !valIsReflexive || (
|
299
|
+
if (value > other || !valIsReflexive || (value === undefined && othIsReflexive)) {
|
296
300
|
return 1;
|
297
301
|
}
|
298
|
-
if (value < other || !othIsReflexive || (
|
302
|
+
if (value < other || !othIsReflexive || (other === undefined && valIsReflexive)) {
|
299
303
|
return -1;
|
300
304
|
}
|
301
305
|
}
|
@@ -438,7 +442,7 @@
|
|
438
442
|
* Used by `_.sortByOrder` to compare multiple properties of each element
|
439
443
|
* in a collection and stable sort them in the following order:
|
440
444
|
*
|
441
|
-
* If orders is unspecified, sort in ascending order for all properties.
|
445
|
+
* If `orders` is unspecified, sort in ascending order for all properties.
|
442
446
|
* Otherwise, for each property, sort in ascending order if its corresponding value in
|
443
447
|
* orders is true, and descending order if false.
|
444
448
|
*
|
@@ -715,9 +719,6 @@
|
|
715
719
|
/** Used to resolve the decompiled source of functions. */
|
716
720
|
var fnToString = Function.prototype.toString;
|
717
721
|
|
718
|
-
/** Used to the length of n-tuples for `_.unzip`. */
|
719
|
-
var getLength = baseProperty('length');
|
720
|
-
|
721
722
|
/** Used to check objects for own properties. */
|
722
723
|
var hasOwnProperty = objectProto.hasOwnProperty;
|
723
724
|
|
@@ -734,7 +735,7 @@
|
|
734
735
|
var oldDash = context._;
|
735
736
|
|
736
737
|
/** Used to detect if a method is native. */
|
737
|
-
var
|
738
|
+
var reIsNative = RegExp('^' +
|
738
739
|
escapeRegExp(objToString)
|
739
740
|
.replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
|
740
741
|
);
|
@@ -745,8 +746,10 @@
|
|
745
746
|
ceil = Math.ceil,
|
746
747
|
clearTimeout = context.clearTimeout,
|
747
748
|
floor = Math.floor,
|
749
|
+
getOwnPropertySymbols = isNative(getOwnPropertySymbols = Object.getOwnPropertySymbols) && getOwnPropertySymbols,
|
748
750
|
getPrototypeOf = isNative(getPrototypeOf = Object.getPrototypeOf) && getPrototypeOf,
|
749
751
|
push = arrayProto.push,
|
752
|
+
preventExtensions = isNative(Object.preventExtensions = Object.preventExtensions) && preventExtensions,
|
750
753
|
propertyIsEnumerable = objectProto.propertyIsEnumerable,
|
751
754
|
Set = isNative(Set = context.Set) && Set,
|
752
755
|
setTimeout = context.setTimeout,
|
@@ -766,6 +769,22 @@
|
|
766
769
|
return result;
|
767
770
|
}());
|
768
771
|
|
772
|
+
/** Used as `baseAssign`. */
|
773
|
+
var nativeAssign = (function() {
|
774
|
+
// Avoid `Object.assign` in Firefox 34-37 which have an early implementation
|
775
|
+
// with a now defunct try/catch behavior. See https://bugzilla.mozilla.org/show_bug.cgi?id=1103344
|
776
|
+
// for more details.
|
777
|
+
//
|
778
|
+
// Use `Object.preventExtensions` on a plain object instead of simply using
|
779
|
+
// `Object('x')` because Chrome and IE fail to throw an error when attempting
|
780
|
+
// to assign values to readonly indexes of strings in strict mode.
|
781
|
+
var object = { '1': 0 },
|
782
|
+
func = preventExtensions && isNative(func = Object.assign) && func;
|
783
|
+
|
784
|
+
try { func(preventExtensions(object), 'xo'); } catch(e) {}
|
785
|
+
return !object[1] && func;
|
786
|
+
}());
|
787
|
+
|
769
788
|
/* Native method references for those with the same name as other `lodash` methods. */
|
770
789
|
var nativeIsArray = isNative(nativeIsArray = Array.isArray) && nativeIsArray,
|
771
790
|
nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate,
|
@@ -843,8 +862,8 @@
|
|
843
862
|
* `filter`, `flatten`, `flattenDeep`, `flow`, `flowRight`, `forEach`,
|
844
863
|
* `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `functions`,
|
845
864
|
* `groupBy`, `indexBy`, `initial`, `intersection`, `invert`, `invoke`, `keys`,
|
846
|
-
* `keysIn`, `map`, `mapValues`, `matches`, `matchesProperty`, `memoize`,
|
847
|
-
* `
|
865
|
+
* `keysIn`, `map`, `mapValues`, `matches`, `matchesProperty`, `memoize`,
|
866
|
+
* `merge`, `mixin`, `negate`, `omit`, `once`, `pairs`, `partial`, `partialRight`,
|
848
867
|
* `partition`, `pick`, `plant`, `pluck`, `property`, `propertyOf`, `pull`,
|
849
868
|
* `pullAt`, `push`, `range`, `rearg`, `reject`, `remove`, `rest`, `reverse`,
|
850
869
|
* `shuffle`, `slice`, `sort`, `sortBy`, `sortByAll`, `sortByOrder`, `splice`,
|
@@ -858,15 +877,15 @@
|
|
858
877
|
* `endsWith`, `escape`, `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`,
|
859
878
|
* `findLast`, `findLastIndex`, `findLastKey`, `findWhere`, `first`, `has`,
|
860
879
|
* `identity`, `includes`, `indexOf`, `inRange`, `isArguments`, `isArray`,
|
861
|
-
* `isBoolean`, `isDate`, `isElement`, `isEmpty`, `isEqual`, `isError`,
|
862
|
-
* `
|
863
|
-
* `
|
864
|
-
* `
|
865
|
-
* `
|
866
|
-
* `
|
867
|
-
* `
|
868
|
-
* `
|
869
|
-
* `
|
880
|
+
* `isBoolean`, `isDate`, `isElement`, `isEmpty`, `isEqual`, `isError`, `isFinite`
|
881
|
+
* `isFunction`, `isMatch`, `isNative`, `isNaN`, `isNull`, `isNumber`, `isObject`,
|
882
|
+
* `isPlainObject`, `isRegExp`, `isString`, `isUndefined`, `isTypedArray`,
|
883
|
+
* `join`, `kebabCase`, `last`, `lastIndexOf`, `max`, `min`, `noConflict`,
|
884
|
+
* `noop`, `now`, `pad`, `padLeft`, `padRight`, `parseInt`, `pop`, `random`,
|
885
|
+
* `reduce`, `reduceRight`, `repeat`, `result`, `runInContext`, `shift`, `size`,
|
886
|
+
* `snakeCase`, `some`, `sortedIndex`, `sortedLastIndex`, `startCase`, `startsWith`,
|
887
|
+
* `sum`, `template`, `trim`, `trimLeft`, `trimRight`, `trunc`, `unescape`,
|
888
|
+
* `uniqueId`, `value`, and `words`
|
870
889
|
*
|
871
890
|
* The wrapper method `sample` will return a wrapped value when `n` is provided,
|
872
891
|
* otherwise an unwrapped value is returned.
|
@@ -881,8 +900,8 @@
|
|
881
900
|
* var wrapped = _([1, 2, 3]);
|
882
901
|
*
|
883
902
|
* // returns an unwrapped value
|
884
|
-
* wrapped.reduce(function(
|
885
|
-
* return
|
903
|
+
* wrapped.reduce(function(total, n) {
|
904
|
+
* return total + n;
|
886
905
|
* });
|
887
906
|
* // => 6
|
888
907
|
*
|
@@ -942,6 +961,12 @@
|
|
942
961
|
var support = lodash.support = {};
|
943
962
|
|
944
963
|
(function(x) {
|
964
|
+
var Ctor = function() { this.x = x; },
|
965
|
+
object = { '0': x, 'length': x },
|
966
|
+
props = [];
|
967
|
+
|
968
|
+
Ctor.prototype = { 'valueOf': x, 'y': x };
|
969
|
+
for (var key in new Ctor) { props.push(key); }
|
945
970
|
|
946
971
|
/**
|
947
972
|
* Detect if functions can be decompiled by `Function#toString`
|
@@ -979,8 +1004,8 @@
|
|
979
1004
|
* In Firefox < 4, IE < 9, PhantomJS, and Safari < 5.1 `arguments` object
|
980
1005
|
* indexes are non-enumerable. Chrome < 25 and Node.js < 0.11.0 treat
|
981
1006
|
* `arguments` object indexes as non-enumerable and fail `hasOwnProperty`
|
982
|
-
* checks for indexes that exceed
|
983
|
-
* associated values
|
1007
|
+
* checks for indexes that exceed the number of function parameters and
|
1008
|
+
* whose associated argument values are `0`.
|
984
1009
|
*
|
985
1010
|
* @memberOf _.support
|
986
1011
|
* @type boolean
|
@@ -990,7 +1015,7 @@
|
|
990
1015
|
} catch(e) {
|
991
1016
|
support.nonEnumArgs = true;
|
992
1017
|
}
|
993
|
-
}(
|
1018
|
+
}(1, 0));
|
994
1019
|
|
995
1020
|
/**
|
996
1021
|
* By default, the template delimiters used by lodash are like those in
|
@@ -1237,7 +1262,7 @@
|
|
1237
1262
|
}
|
1238
1263
|
|
1239
1264
|
/**
|
1240
|
-
*
|
1265
|
+
* Sets `value` to `key` of the cache.
|
1241
1266
|
*
|
1242
1267
|
* @private
|
1243
1268
|
* @name set
|
@@ -1570,13 +1595,13 @@
|
|
1570
1595
|
* @returns {*} Returns the value to assign to the destination object.
|
1571
1596
|
*/
|
1572
1597
|
function assignDefaults(objectValue, sourceValue) {
|
1573
|
-
return
|
1598
|
+
return objectValue === undefined ? sourceValue : objectValue;
|
1574
1599
|
}
|
1575
1600
|
|
1576
1601
|
/**
|
1577
1602
|
* Used by `_.template` to customize its `_.assign` use.
|
1578
1603
|
*
|
1579
|
-
* **Note:** This
|
1604
|
+
* **Note:** This function is like `assignDefaults` except that it ignores
|
1580
1605
|
* inherited property values when checking if a property is `undefined`.
|
1581
1606
|
*
|
1582
1607
|
* @private
|
@@ -1587,26 +1612,26 @@
|
|
1587
1612
|
* @returns {*} Returns the value to assign to the destination object.
|
1588
1613
|
*/
|
1589
1614
|
function assignOwnDefaults(objectValue, sourceValue, key, object) {
|
1590
|
-
return (
|
1615
|
+
return (objectValue === undefined || !hasOwnProperty.call(object, key))
|
1591
1616
|
? sourceValue
|
1592
1617
|
: objectValue;
|
1593
1618
|
}
|
1594
1619
|
|
1595
1620
|
/**
|
1596
|
-
*
|
1597
|
-
* multiple sources, and `this` binding `customizer`
|
1621
|
+
* A specialized version of `_.assign` for customizing assigned values without
|
1622
|
+
* support for argument juggling, multiple sources, and `this` binding `customizer`
|
1623
|
+
* functions.
|
1598
1624
|
*
|
1599
1625
|
* @private
|
1600
1626
|
* @param {Object} object The destination object.
|
1601
1627
|
* @param {Object} source The source object.
|
1602
|
-
* @param {Function}
|
1603
|
-
* @returns {Object} Returns
|
1628
|
+
* @param {Function} customizer The function to customize assigned values.
|
1629
|
+
* @returns {Object} Returns `object`.
|
1604
1630
|
*/
|
1605
|
-
function
|
1631
|
+
function assignWith(object, source, customizer) {
|
1606
1632
|
var props = keys(source);
|
1607
|
-
|
1608
|
-
|
1609
|
-
}
|
1633
|
+
push.apply(props, getSymbols(source));
|
1634
|
+
|
1610
1635
|
var index = -1,
|
1611
1636
|
length = props.length;
|
1612
1637
|
|
@@ -1616,7 +1641,7 @@
|
|
1616
1641
|
result = customizer(value, source[key], key, object, source);
|
1617
1642
|
|
1618
1643
|
if ((result === result ? (result !== value) : (value === value)) ||
|
1619
|
-
(
|
1644
|
+
(value === undefined && !(key in object))) {
|
1620
1645
|
object[key] = result;
|
1621
1646
|
}
|
1622
1647
|
}
|
@@ -1624,12 +1649,27 @@
|
|
1624
1649
|
}
|
1625
1650
|
|
1626
1651
|
/**
|
1627
|
-
* The base implementation of `_.
|
1628
|
-
*
|
1652
|
+
* The base implementation of `_.assign` without support for argument juggling,
|
1653
|
+
* multiple sources, and `customizer` functions.
|
1654
|
+
*
|
1655
|
+
* @private
|
1656
|
+
* @param {Object} object The destination object.
|
1657
|
+
* @param {Object} source The source object.
|
1658
|
+
* @returns {Object} Returns `object`.
|
1659
|
+
*/
|
1660
|
+
var baseAssign = nativeAssign || function(object, source) {
|
1661
|
+
return source == null
|
1662
|
+
? object
|
1663
|
+
: baseCopy(source, getSymbols(source), baseCopy(source, keys(source), object));
|
1664
|
+
};
|
1665
|
+
|
1666
|
+
/**
|
1667
|
+
* The base implementation of `_.at` without support for string collections
|
1668
|
+
* and individual key arguments.
|
1629
1669
|
*
|
1630
1670
|
* @private
|
1631
1671
|
* @param {Array|Object} collection The collection to iterate over.
|
1632
|
-
* @param {number[]|string[]}
|
1672
|
+
* @param {number[]|string[]} props The property names or indexes of elements to pick.
|
1633
1673
|
* @returns {Array} Returns the new array of picked elements.
|
1634
1674
|
*/
|
1635
1675
|
function baseAt(collection, props) {
|
@@ -1642,7 +1682,6 @@
|
|
1642
1682
|
while(++index < propsLength) {
|
1643
1683
|
var key = props[index];
|
1644
1684
|
if (isArr) {
|
1645
|
-
key = parseFloat(key);
|
1646
1685
|
result[index] = isIndex(key, length) ? collection[key] : undefined;
|
1647
1686
|
} else {
|
1648
1687
|
result[index] = collection[key];
|
@@ -1652,19 +1691,17 @@
|
|
1652
1691
|
}
|
1653
1692
|
|
1654
1693
|
/**
|
1655
|
-
* Copies
|
1694
|
+
* Copies properties of `source` to `object`.
|
1656
1695
|
*
|
1657
1696
|
* @private
|
1658
1697
|
* @param {Object} source The object to copy properties from.
|
1659
|
-
* @param {Object} [object={}] The object to copy properties to.
|
1660
1698
|
* @param {Array} props The property names to copy.
|
1699
|
+
* @param {Object} [object={}] The object to copy properties to.
|
1661
1700
|
* @returns {Object} Returns `object`.
|
1662
1701
|
*/
|
1663
|
-
function baseCopy(source,
|
1664
|
-
|
1665
|
-
|
1666
|
-
object = {};
|
1667
|
-
}
|
1702
|
+
function baseCopy(source, props, object) {
|
1703
|
+
object || (object = {});
|
1704
|
+
|
1668
1705
|
var index = -1,
|
1669
1706
|
length = props.length;
|
1670
1707
|
|
@@ -1688,7 +1725,7 @@
|
|
1688
1725
|
function baseCallback(func, thisArg, argCount) {
|
1689
1726
|
var type = typeof func;
|
1690
1727
|
if (type == 'function') {
|
1691
|
-
return
|
1728
|
+
return thisArg === undefined
|
1692
1729
|
? func
|
1693
1730
|
: bindCallback(func, thisArg, argCount);
|
1694
1731
|
}
|
@@ -1698,9 +1735,9 @@
|
|
1698
1735
|
if (type == 'object') {
|
1699
1736
|
return baseMatches(func);
|
1700
1737
|
}
|
1701
|
-
return
|
1702
|
-
?
|
1703
|
-
: baseMatchesProperty(func
|
1738
|
+
return thisArg === undefined
|
1739
|
+
? property(func)
|
1740
|
+
: baseMatchesProperty(func, thisArg);
|
1704
1741
|
}
|
1705
1742
|
|
1706
1743
|
/**
|
@@ -1722,7 +1759,7 @@
|
|
1722
1759
|
if (customizer) {
|
1723
1760
|
result = object ? customizer(value, key, object) : customizer(value);
|
1724
1761
|
}
|
1725
|
-
if (
|
1762
|
+
if (result !== undefined) {
|
1726
1763
|
return result;
|
1727
1764
|
}
|
1728
1765
|
if (!isObject(value)) {
|
@@ -1741,7 +1778,7 @@
|
|
1741
1778
|
if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
|
1742
1779
|
result = initCloneObject(isFunc ? {} : value);
|
1743
1780
|
if (!isDeep) {
|
1744
|
-
return
|
1781
|
+
return baseAssign(result, value);
|
1745
1782
|
}
|
1746
1783
|
} else {
|
1747
1784
|
return cloneableTags[tag]
|
@@ -1912,7 +1949,7 @@
|
|
1912
1949
|
if (start < 0) {
|
1913
1950
|
start = -start > length ? 0 : (length + start);
|
1914
1951
|
}
|
1915
|
-
end = (
|
1952
|
+
end = (end === undefined || end > length) ? length : (+end || 0);
|
1916
1953
|
if (end < 0) {
|
1917
1954
|
end += length;
|
1918
1955
|
}
|
@@ -2009,7 +2046,7 @@
|
|
2009
2046
|
/**
|
2010
2047
|
* The base implementation of `baseForIn` and `baseForOwn` which iterates
|
2011
2048
|
* over `object` properties returned by `keysFunc` invoking `iteratee` for
|
2012
|
-
* each property.
|
2049
|
+
* each property. Iteratee functions may exit iteration early by explicitly
|
2013
2050
|
* returning `false`.
|
2014
2051
|
*
|
2015
2052
|
* @private
|
@@ -2095,6 +2132,32 @@
|
|
2095
2132
|
return result;
|
2096
2133
|
}
|
2097
2134
|
|
2135
|
+
/**
|
2136
|
+
* The base implementation of `get` without support for string paths
|
2137
|
+
* and default values.
|
2138
|
+
*
|
2139
|
+
* @private
|
2140
|
+
* @param {Object} object The object to query.
|
2141
|
+
* @param {Array} path The path of the property to get.
|
2142
|
+
* @param {string} [pathKey] The key representation of path.
|
2143
|
+
* @returns {*} Returns the resolved value.
|
2144
|
+
*/
|
2145
|
+
function baseGet(object, path, pathKey) {
|
2146
|
+
if (object == null) {
|
2147
|
+
return;
|
2148
|
+
}
|
2149
|
+
if (pathKey !== undefined && pathKey in toObject(object)) {
|
2150
|
+
path = [pathKey];
|
2151
|
+
}
|
2152
|
+
var index = -1,
|
2153
|
+
length = path.length;
|
2154
|
+
|
2155
|
+
while (object != null && ++index < length) {
|
2156
|
+
var result = object = object[path[index]];
|
2157
|
+
}
|
2158
|
+
return result;
|
2159
|
+
}
|
2160
|
+
|
2098
2161
|
/**
|
2099
2162
|
* The base implementation of `_.isEqual` without support for `this` binding
|
2100
2163
|
* `customizer` functions.
|
@@ -2163,27 +2226,23 @@
|
|
2163
2226
|
othIsArr = isTypedArray(other);
|
2164
2227
|
}
|
2165
2228
|
}
|
2166
|
-
var objIsObj =
|
2167
|
-
othIsObj =
|
2229
|
+
var objIsObj = objTag == objectTag,
|
2230
|
+
othIsObj = othTag == objectTag,
|
2168
2231
|
isSameTag = objTag == othTag;
|
2169
2232
|
|
2170
2233
|
if (isSameTag && !(objIsArr || objIsObj)) {
|
2171
2234
|
return equalByTag(object, other, objTag);
|
2172
2235
|
}
|
2173
|
-
if (isLoose) {
|
2174
|
-
if (!isSameTag && !(objIsObj && othIsObj)) {
|
2175
|
-
return false;
|
2176
|
-
}
|
2177
|
-
} else {
|
2236
|
+
if (!isLoose) {
|
2178
2237
|
var valWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
|
2179
2238
|
othWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
|
2180
2239
|
|
2181
2240
|
if (valWrapped || othWrapped) {
|
2182
2241
|
return equalFunc(valWrapped ? object.value() : object, othWrapped ? other.value() : other, customizer, isLoose, stackA, stackB);
|
2183
2242
|
}
|
2184
|
-
|
2185
|
-
|
2186
|
-
|
2243
|
+
}
|
2244
|
+
if (!isSameTag) {
|
2245
|
+
return false;
|
2187
2246
|
}
|
2188
2247
|
// Assume cyclic values are equal.
|
2189
2248
|
// For more information on detecting circular references see https://es5.github.io/#JO.
|
@@ -2240,10 +2299,10 @@
|
|
2240
2299
|
srcValue = values[index];
|
2241
2300
|
|
2242
2301
|
if (noCustomizer && strictCompareFlags[index]) {
|
2243
|
-
var result =
|
2302
|
+
var result = objValue !== undefined || (key in object);
|
2244
2303
|
} else {
|
2245
2304
|
result = customizer ? customizer(objValue, srcValue, key) : undefined;
|
2246
|
-
if (
|
2305
|
+
if (result === undefined) {
|
2247
2306
|
result = baseIsEqual(srcValue, objValue, customizer, true);
|
2248
2307
|
}
|
2249
2308
|
}
|
@@ -2264,9 +2323,12 @@
|
|
2264
2323
|
* @returns {Array} Returns the new mapped array.
|
2265
2324
|
*/
|
2266
2325
|
function baseMap(collection, iteratee) {
|
2267
|
-
var
|
2326
|
+
var index = -1,
|
2327
|
+
length = getLength(collection),
|
2328
|
+
result = isLength(length) ? Array(length) : [];
|
2329
|
+
|
2268
2330
|
baseEach(collection, function(value, key, collection) {
|
2269
|
-
result
|
2331
|
+
result[++index] = iteratee(value, key, collection);
|
2270
2332
|
});
|
2271
2333
|
return result;
|
2272
2334
|
}
|
@@ -2291,8 +2353,10 @@
|
|
2291
2353
|
|
2292
2354
|
if (isStrictComparable(value)) {
|
2293
2355
|
return function(object) {
|
2294
|
-
|
2295
|
-
|
2356
|
+
if (object == null) {
|
2357
|
+
return false;
|
2358
|
+
}
|
2359
|
+
return object[key] === value && (value !== undefined || (key in toObject(object)));
|
2296
2360
|
};
|
2297
2361
|
}
|
2298
2362
|
}
|
@@ -2310,23 +2374,37 @@
|
|
2310
2374
|
}
|
2311
2375
|
|
2312
2376
|
/**
|
2313
|
-
* The base implementation of `_.matchesProperty` which does not
|
2314
|
-
*
|
2377
|
+
* The base implementation of `_.matchesProperty` which does not which does
|
2378
|
+
* not clone `value`.
|
2315
2379
|
*
|
2316
2380
|
* @private
|
2317
|
-
* @param {string}
|
2381
|
+
* @param {string} path The path of the property to get.
|
2318
2382
|
* @param {*} value The value to compare.
|
2319
2383
|
* @returns {Function} Returns the new function.
|
2320
2384
|
*/
|
2321
|
-
function baseMatchesProperty(
|
2322
|
-
|
2323
|
-
|
2324
|
-
|
2325
|
-
|
2326
|
-
|
2327
|
-
}
|
2385
|
+
function baseMatchesProperty(path, value) {
|
2386
|
+
var isArr = isArray(path),
|
2387
|
+
isCommon = isKey(path) && isStrictComparable(value),
|
2388
|
+
pathKey = (path + '');
|
2389
|
+
|
2390
|
+
path = toPath(path);
|
2328
2391
|
return function(object) {
|
2329
|
-
|
2392
|
+
if (object == null) {
|
2393
|
+
return false;
|
2394
|
+
}
|
2395
|
+
var key = pathKey;
|
2396
|
+
object = toObject(object);
|
2397
|
+
if ((isArr || !isCommon) && !(key in object)) {
|
2398
|
+
object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));
|
2399
|
+
if (object == null) {
|
2400
|
+
return false;
|
2401
|
+
}
|
2402
|
+
key = last(path);
|
2403
|
+
object = toObject(object);
|
2404
|
+
}
|
2405
|
+
return object[key] === value
|
2406
|
+
? (value !== undefined || (key in object))
|
2407
|
+
: baseIsEqual(value, object[key], null, true);
|
2330
2408
|
};
|
2331
2409
|
}
|
2332
2410
|
|
@@ -2340,29 +2418,39 @@
|
|
2340
2418
|
* @param {Function} [customizer] The function to customize merging properties.
|
2341
2419
|
* @param {Array} [stackA=[]] Tracks traversed source objects.
|
2342
2420
|
* @param {Array} [stackB=[]] Associates values with source counterparts.
|
2343
|
-
* @returns {Object} Returns
|
2421
|
+
* @returns {Object} Returns `object`.
|
2344
2422
|
*/
|
2345
2423
|
function baseMerge(object, source, customizer, stackA, stackB) {
|
2346
2424
|
if (!isObject(object)) {
|
2347
2425
|
return object;
|
2348
2426
|
}
|
2349
2427
|
var isSrcArr = isLength(source.length) && (isArray(source) || isTypedArray(source));
|
2350
|
-
(isSrcArr
|
2428
|
+
if (!isSrcArr) {
|
2429
|
+
var props = keys(source);
|
2430
|
+
push.apply(props, getSymbols(source));
|
2431
|
+
}
|
2432
|
+
arrayEach(props || source, function(srcValue, key) {
|
2433
|
+
if (props) {
|
2434
|
+
key = srcValue;
|
2435
|
+
srcValue = source[key];
|
2436
|
+
}
|
2351
2437
|
if (isObjectLike(srcValue)) {
|
2352
2438
|
stackA || (stackA = []);
|
2353
2439
|
stackB || (stackB = []);
|
2354
|
-
|
2440
|
+
baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);
|
2355
2441
|
}
|
2356
|
-
|
2357
|
-
|
2358
|
-
|
2442
|
+
else {
|
2443
|
+
var value = object[key],
|
2444
|
+
result = customizer ? customizer(value, srcValue, key, object, source) : undefined,
|
2445
|
+
isCommon = result === undefined;
|
2359
2446
|
|
2360
|
-
|
2361
|
-
|
2362
|
-
|
2363
|
-
|
2364
|
-
|
2365
|
-
|
2447
|
+
if (isCommon) {
|
2448
|
+
result = srcValue;
|
2449
|
+
}
|
2450
|
+
if ((isSrcArr || result !== undefined) &&
|
2451
|
+
(isCommon || (result === result ? (result !== value) : (value === value)))) {
|
2452
|
+
object[key] = result;
|
2453
|
+
}
|
2366
2454
|
}
|
2367
2455
|
});
|
2368
2456
|
return object;
|
@@ -2395,14 +2483,14 @@
|
|
2395
2483
|
}
|
2396
2484
|
var value = object[key],
|
2397
2485
|
result = customizer ? customizer(value, srcValue, key, object, source) : undefined,
|
2398
|
-
isCommon =
|
2486
|
+
isCommon = result === undefined;
|
2399
2487
|
|
2400
2488
|
if (isCommon) {
|
2401
2489
|
result = srcValue;
|
2402
2490
|
if (isLength(srcValue.length) && (isArray(srcValue) || isTypedArray(srcValue))) {
|
2403
2491
|
result = isArray(value)
|
2404
2492
|
? value
|
2405
|
-
: ((value
|
2493
|
+
: (getLength(value) ? arrayCopy(value) : []);
|
2406
2494
|
}
|
2407
2495
|
else if (isPlainObject(srcValue) || isArguments(srcValue)) {
|
2408
2496
|
result = isArguments(value)
|
@@ -2427,7 +2515,7 @@
|
|
2427
2515
|
}
|
2428
2516
|
|
2429
2517
|
/**
|
2430
|
-
* The base implementation of `_.property`
|
2518
|
+
* The base implementation of `_.property` without support for deep paths.
|
2431
2519
|
*
|
2432
2520
|
* @private
|
2433
2521
|
* @param {string} key The key of the property to get.
|
@@ -2439,6 +2527,42 @@
|
|
2439
2527
|
};
|
2440
2528
|
}
|
2441
2529
|
|
2530
|
+
/**
|
2531
|
+
* A specialized version of `baseProperty` which supports deep paths.
|
2532
|
+
*
|
2533
|
+
* @private
|
2534
|
+
* @param {Array|string} path The path of the property to get.
|
2535
|
+
* @returns {Function} Returns the new function.
|
2536
|
+
*/
|
2537
|
+
function basePropertyDeep(path) {
|
2538
|
+
var pathKey = (path + '');
|
2539
|
+
path = toPath(path);
|
2540
|
+
return function(object) {
|
2541
|
+
return baseGet(object, path, pathKey);
|
2542
|
+
};
|
2543
|
+
}
|
2544
|
+
|
2545
|
+
/**
|
2546
|
+
* The base implementation of `_.pullAt` without support for individual
|
2547
|
+
* index arguments and capturing the removed elements.
|
2548
|
+
*
|
2549
|
+
* @private
|
2550
|
+
* @param {Array} array The array to modify.
|
2551
|
+
* @param {number[]} indexes The indexes of elements to remove.
|
2552
|
+
* @returns {Array} Returns `array`.
|
2553
|
+
*/
|
2554
|
+
function basePullAt(array, indexes) {
|
2555
|
+
var length = indexes.length;
|
2556
|
+
while (length--) {
|
2557
|
+
var index = parseFloat(indexes[length]);
|
2558
|
+
if (index != previous && isIndex(index)) {
|
2559
|
+
var previous = index;
|
2560
|
+
splice.call(array, index, 1);
|
2561
|
+
}
|
2562
|
+
}
|
2563
|
+
return array;
|
2564
|
+
}
|
2565
|
+
|
2442
2566
|
/**
|
2443
2567
|
* The base implementation of `_.random` without support for argument juggling
|
2444
2568
|
* and returning floating-point numbers.
|
@@ -2505,7 +2629,7 @@
|
|
2505
2629
|
if (start < 0) {
|
2506
2630
|
start = -start > length ? 0 : (length + start);
|
2507
2631
|
}
|
2508
|
-
end = (
|
2632
|
+
end = (end === undefined || end > length) ? length : (+end || 0);
|
2509
2633
|
if (end < 0) {
|
2510
2634
|
end += length;
|
2511
2635
|
}
|
@@ -2564,23 +2688,19 @@
|
|
2564
2688
|
*
|
2565
2689
|
* @private
|
2566
2690
|
* @param {Array|Object|string} collection The collection to iterate over.
|
2567
|
-
* @param {string[]}
|
2568
|
-
* @param {boolean[]} orders The sort orders of `
|
2691
|
+
* @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
|
2692
|
+
* @param {boolean[]} orders The sort orders of `iteratees`.
|
2569
2693
|
* @returns {Array} Returns the new sorted array.
|
2570
2694
|
*/
|
2571
|
-
function baseSortByOrder(collection,
|
2572
|
-
var
|
2573
|
-
|
2574
|
-
result = isLength(length) ? Array(length) : [];
|
2695
|
+
function baseSortByOrder(collection, iteratees, orders) {
|
2696
|
+
var callback = getCallback(),
|
2697
|
+
index = -1;
|
2575
2698
|
|
2576
|
-
|
2577
|
-
var length = props.length,
|
2578
|
-
criteria = Array(length);
|
2699
|
+
iteratees = arrayMap(iteratees, function(iteratee) { return callback(iteratee); });
|
2579
2700
|
|
2580
|
-
|
2581
|
-
|
2582
|
-
}
|
2583
|
-
result[++index] = { 'criteria': criteria, 'index': index, 'value': value };
|
2701
|
+
var result = baseMap(collection, function(value) {
|
2702
|
+
var criteria = arrayMap(iteratees, function(iteratee) { return iteratee(value); });
|
2703
|
+
return { 'criteria': criteria, 'index': ++index, 'value': value };
|
2584
2704
|
});
|
2585
2705
|
|
2586
2706
|
return baseSortBy(result, function(object, other) {
|
@@ -2660,7 +2780,7 @@
|
|
2660
2780
|
/**
|
2661
2781
|
* The base implementation of `_.values` and `_.valuesIn` which creates an
|
2662
2782
|
* array of `object` property values corresponding to the property names
|
2663
|
-
*
|
2783
|
+
* of `props`.
|
2664
2784
|
*
|
2665
2785
|
* @private
|
2666
2786
|
* @param {Object} object The object to query.
|
@@ -2777,7 +2897,7 @@
|
|
2777
2897
|
var low = 0,
|
2778
2898
|
high = array ? array.length : 0,
|
2779
2899
|
valIsNaN = value !== value,
|
2780
|
-
valIsUndef =
|
2900
|
+
valIsUndef = value === undefined;
|
2781
2901
|
|
2782
2902
|
while (low < high) {
|
2783
2903
|
var mid = floor((low + high) / 2),
|
@@ -2787,7 +2907,7 @@
|
|
2787
2907
|
if (valIsNaN) {
|
2788
2908
|
var setLow = isReflexive || retHighest;
|
2789
2909
|
} else if (valIsUndef) {
|
2790
|
-
setLow = isReflexive && (retHighest ||
|
2910
|
+
setLow = isReflexive && (retHighest || computed !== undefined);
|
2791
2911
|
} else {
|
2792
2912
|
setLow = retHighest ? (computed <= value) : (computed < value);
|
2793
2913
|
}
|
@@ -2814,7 +2934,7 @@
|
|
2814
2934
|
if (typeof func != 'function') {
|
2815
2935
|
return identity;
|
2816
2936
|
}
|
2817
|
-
if (
|
2937
|
+
if (thisArg === undefined) {
|
2818
2938
|
return func;
|
2819
2939
|
}
|
2820
2940
|
switch (argCount) {
|
@@ -2974,38 +3094,32 @@
|
|
2974
3094
|
* @returns {Function} Returns the new assigner function.
|
2975
3095
|
*/
|
2976
3096
|
function createAssigner(assigner) {
|
2977
|
-
return function() {
|
2978
|
-
var
|
2979
|
-
length =
|
2980
|
-
|
2981
|
-
|
2982
|
-
|
2983
|
-
return object;
|
2984
|
-
}
|
2985
|
-
var customizer = args[length - 2],
|
2986
|
-
thisArg = args[length - 1],
|
2987
|
-
guard = args[3];
|
3097
|
+
return restParam(function(object, sources) {
|
3098
|
+
var index = -1,
|
3099
|
+
length = object == null ? 0 : sources.length,
|
3100
|
+
customizer = length > 2 && sources[length - 2],
|
3101
|
+
guard = length > 2 && sources[2],
|
3102
|
+
thisArg = length > 1 && sources[length - 1];
|
2988
3103
|
|
2989
|
-
if (
|
3104
|
+
if (typeof customizer == 'function') {
|
2990
3105
|
customizer = bindCallback(customizer, thisArg, 5);
|
2991
3106
|
length -= 2;
|
2992
3107
|
} else {
|
2993
|
-
customizer =
|
3108
|
+
customizer = typeof thisArg == 'function' ? thisArg : null;
|
2994
3109
|
length -= (customizer ? 1 : 0);
|
2995
3110
|
}
|
2996
|
-
if (guard && isIterateeCall(
|
2997
|
-
customizer = length
|
2998
|
-
length =
|
3111
|
+
if (guard && isIterateeCall(sources[0], sources[1], guard)) {
|
3112
|
+
customizer = length < 3 ? null : customizer;
|
3113
|
+
length = 1;
|
2999
3114
|
}
|
3000
|
-
var index = 0;
|
3001
3115
|
while (++index < length) {
|
3002
|
-
var source =
|
3116
|
+
var source = sources[index];
|
3003
3117
|
if (source) {
|
3004
3118
|
assigner(object, source, customizer);
|
3005
3119
|
}
|
3006
3120
|
}
|
3007
3121
|
return object;
|
3008
|
-
};
|
3122
|
+
});
|
3009
3123
|
}
|
3010
3124
|
|
3011
3125
|
/**
|
@@ -3018,7 +3132,7 @@
|
|
3018
3132
|
*/
|
3019
3133
|
function createBaseEach(eachFunc, fromRight) {
|
3020
3134
|
return function(collection, iteratee) {
|
3021
|
-
var length = collection ? collection
|
3135
|
+
var length = collection ? getLength(collection) : 0;
|
3022
3136
|
if (!isLength(length)) {
|
3023
3137
|
return eachFunc(collection, iteratee);
|
3024
3138
|
}
|
@@ -3295,7 +3409,7 @@
|
|
3295
3409
|
*/
|
3296
3410
|
function createForEach(arrayFunc, eachFunc) {
|
3297
3411
|
return function(collection, iteratee, thisArg) {
|
3298
|
-
return (typeof iteratee == 'function' &&
|
3412
|
+
return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))
|
3299
3413
|
? arrayFunc(collection, iteratee)
|
3300
3414
|
: eachFunc(collection, bindCallback(iteratee, thisArg, 3));
|
3301
3415
|
};
|
@@ -3310,7 +3424,7 @@
|
|
3310
3424
|
*/
|
3311
3425
|
function createForIn(objectFunc) {
|
3312
3426
|
return function(object, iteratee, thisArg) {
|
3313
|
-
if (typeof iteratee != 'function' ||
|
3427
|
+
if (typeof iteratee != 'function' || thisArg !== undefined) {
|
3314
3428
|
iteratee = bindCallback(iteratee, thisArg, 3);
|
3315
3429
|
}
|
3316
3430
|
return objectFunc(object, iteratee, keysIn);
|
@@ -3326,7 +3440,7 @@
|
|
3326
3440
|
*/
|
3327
3441
|
function createForOwn(objectFunc) {
|
3328
3442
|
return function(object, iteratee, thisArg) {
|
3329
|
-
if (typeof iteratee != 'function' ||
|
3443
|
+
if (typeof iteratee != 'function' || thisArg !== undefined) {
|
3330
3444
|
iteratee = bindCallback(iteratee, thisArg, 3);
|
3331
3445
|
}
|
3332
3446
|
return objectFunc(object, iteratee);
|
@@ -3373,7 +3487,7 @@
|
|
3373
3487
|
function createReduce(arrayFunc, eachFunc) {
|
3374
3488
|
return function(collection, iteratee, accumulator, thisArg) {
|
3375
3489
|
var initFromArray = arguments.length < 3;
|
3376
|
-
return (typeof iteratee == 'function' &&
|
3490
|
+
return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))
|
3377
3491
|
? arrayFunc(collection, iteratee, accumulator, initFromArray)
|
3378
3492
|
: baseReduce(collection, getCallback(iteratee, thisArg, 4), accumulator, initFromArray, eachFunc);
|
3379
3493
|
};
|
@@ -3642,7 +3756,7 @@
|
|
3642
3756
|
? customizer(othValue, arrValue, index)
|
3643
3757
|
: customizer(arrValue, othValue, index);
|
3644
3758
|
}
|
3645
|
-
if (
|
3759
|
+
if (result === undefined) {
|
3646
3760
|
// Recursively compare arrays (susceptible to call stack limits).
|
3647
3761
|
if (isLoose) {
|
3648
3762
|
var othIndex = othLength;
|
@@ -3741,7 +3855,7 @@
|
|
3741
3855
|
? customizer(othValue, objValue, key)
|
3742
3856
|
: customizer(objValue, othValue, key);
|
3743
3857
|
}
|
3744
|
-
if (
|
3858
|
+
if (result === undefined) {
|
3745
3859
|
// Recursively compare objects (susceptible to call stack limits).
|
3746
3860
|
result = (objValue && objValue === othValue) || equalFunc(objValue, othValue, customizer, isLoose, stackA, stackB);
|
3747
3861
|
}
|
@@ -3866,6 +3980,29 @@
|
|
3866
3980
|
return collection ? result(collection, target, fromIndex) : result;
|
3867
3981
|
}
|
3868
3982
|
|
3983
|
+
/**
|
3984
|
+
* Gets the "length" property value of `object`.
|
3985
|
+
*
|
3986
|
+
* **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)
|
3987
|
+
* in Safari on iOS 8.1 ARM64.
|
3988
|
+
*
|
3989
|
+
* @private
|
3990
|
+
* @param {Object} object The object to query.
|
3991
|
+
* @returns {*} Returns the "length" value.
|
3992
|
+
*/
|
3993
|
+
var getLength = baseProperty('length');
|
3994
|
+
|
3995
|
+
/**
|
3996
|
+
* Creates an array of the own symbols of `object`.
|
3997
|
+
*
|
3998
|
+
* @private
|
3999
|
+
* @param {Object} object The object to query.
|
4000
|
+
* @returns {Array} Returns the array of symbols.
|
4001
|
+
*/
|
4002
|
+
var getSymbols = !getOwnPropertySymbols ? constant([]) : function(object) {
|
4003
|
+
return getOwnPropertySymbols(toObject(object));
|
4004
|
+
};
|
4005
|
+
|
3869
4006
|
/**
|
3870
4007
|
* Gets the view, applying any `transforms` to the `start` and `end` positions.
|
3871
4008
|
*
|
@@ -3934,7 +4071,6 @@
|
|
3934
4071
|
* **Note:** This function only supports cloning values with tags of
|
3935
4072
|
* `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
|
3936
4073
|
*
|
3937
|
-
*
|
3938
4074
|
* @private
|
3939
4075
|
* @param {Object} object The object to clone.
|
3940
4076
|
* @param {string} tag The `toStringTag` of the object to clone.
|
@@ -3968,6 +4104,25 @@
|
|
3968
4104
|
return result;
|
3969
4105
|
}
|
3970
4106
|
|
4107
|
+
/**
|
4108
|
+
* Invokes the method at `path` on `object`.
|
4109
|
+
*
|
4110
|
+
* @private
|
4111
|
+
* @param {Object} object The object to query.
|
4112
|
+
* @param {Array|string} path The path of the method to invoke.
|
4113
|
+
* @param {Array} args The arguments to invoke the method with.
|
4114
|
+
* @returns {*} Returns the result of the invoked method.
|
4115
|
+
*/
|
4116
|
+
function invokePath(object, path, args) {
|
4117
|
+
if (object != null && !isKey(path, object)) {
|
4118
|
+
path = toPath(path);
|
4119
|
+
object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));
|
4120
|
+
path = last(path);
|
4121
|
+
}
|
4122
|
+
var func = object == null ? object : object[path];
|
4123
|
+
return func == null ? undefined : func.apply(object, args);
|
4124
|
+
}
|
4125
|
+
|
3971
4126
|
/**
|
3972
4127
|
* Checks if `value` is a valid array-like index.
|
3973
4128
|
*
|
@@ -3997,7 +4152,7 @@
|
|
3997
4152
|
}
|
3998
4153
|
var type = typeof index;
|
3999
4154
|
if (type == 'number') {
|
4000
|
-
var length = object
|
4155
|
+
var length = getLength(object),
|
4001
4156
|
prereq = isLength(length) && isIndex(index, length);
|
4002
4157
|
} else {
|
4003
4158
|
prereq = type == 'string' && index in object;
|
@@ -4009,6 +4164,26 @@
|
|
4009
4164
|
return false;
|
4010
4165
|
}
|
4011
4166
|
|
4167
|
+
/**
|
4168
|
+
* Checks if `value` is a property name and not a property path.
|
4169
|
+
*
|
4170
|
+
* @private
|
4171
|
+
* @param {*} value The value to check.
|
4172
|
+
* @param {Object} [object] The object to query keys on.
|
4173
|
+
* @returns {boolean} Returns `true` if `value` is a property name, else `false`.
|
4174
|
+
*/
|
4175
|
+
function isKey(value, object) {
|
4176
|
+
var type = typeof value;
|
4177
|
+
if ((type == 'string' && reIsPlainProp.test(value)) || type == 'number') {
|
4178
|
+
return true;
|
4179
|
+
}
|
4180
|
+
if (isArray(value)) {
|
4181
|
+
return false;
|
4182
|
+
}
|
4183
|
+
var result = !reIsDeepProp.test(value);
|
4184
|
+
return result || (object != null && value in toObject(object));
|
4185
|
+
}
|
4186
|
+
|
4012
4187
|
/**
|
4013
4188
|
* Checks if `func` has a lazy counterpart.
|
4014
4189
|
*
|
@@ -4118,7 +4293,7 @@
|
|
4118
4293
|
|
4119
4294
|
/**
|
4120
4295
|
* A specialized version of `_.pick` that picks `object` properties specified
|
4121
|
-
* by
|
4296
|
+
* by `props`.
|
4122
4297
|
*
|
4123
4298
|
* @private
|
4124
4299
|
* @param {Object} object The source object.
|
@@ -4244,7 +4419,7 @@
|
|
4244
4419
|
baseForIn(value, function(subValue, key) {
|
4245
4420
|
result = key;
|
4246
4421
|
});
|
4247
|
-
return
|
4422
|
+
return result === undefined || hasOwnProperty.call(value, result);
|
4248
4423
|
}
|
4249
4424
|
|
4250
4425
|
/**
|
@@ -4252,7 +4427,7 @@
|
|
4252
4427
|
* own enumerable property names of `object`.
|
4253
4428
|
*
|
4254
4429
|
* @private
|
4255
|
-
* @param {Object} object The object to
|
4430
|
+
* @param {Object} object The object to query.
|
4256
4431
|
* @returns {Array} Returns the array of property names.
|
4257
4432
|
*/
|
4258
4433
|
function shimKeys(object) {
|
@@ -4287,7 +4462,7 @@
|
|
4287
4462
|
if (value == null) {
|
4288
4463
|
return [];
|
4289
4464
|
}
|
4290
|
-
if (!isLength(value
|
4465
|
+
if (!isLength(getLength(value))) {
|
4291
4466
|
return values(value);
|
4292
4467
|
}
|
4293
4468
|
return isObject(value) ? value : Object(value);
|
@@ -4304,6 +4479,24 @@
|
|
4304
4479
|
return isObject(value) ? value : Object(value);
|
4305
4480
|
}
|
4306
4481
|
|
4482
|
+
/**
|
4483
|
+
* Converts `value` to property path array if it is not one.
|
4484
|
+
*
|
4485
|
+
* @private
|
4486
|
+
* @param {*} value The value to process.
|
4487
|
+
* @returns {Array} Returns the property path array.
|
4488
|
+
*/
|
4489
|
+
function toPath(value) {
|
4490
|
+
if (isArray(value)) {
|
4491
|
+
return value;
|
4492
|
+
}
|
4493
|
+
var result = [];
|
4494
|
+
baseToString(value).replace(rePropName, function(match, number, quote, string) {
|
4495
|
+
result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));
|
4496
|
+
});
|
4497
|
+
return result;
|
4498
|
+
}
|
4499
|
+
|
4307
4500
|
/**
|
4308
4501
|
* Creates a clone of `wrapper`.
|
4309
4502
|
*
|
@@ -4888,7 +5081,8 @@
|
|
4888
5081
|
argsLength = arguments.length,
|
4889
5082
|
caches = [],
|
4890
5083
|
indexOf = getIndexOf(),
|
4891
|
-
isCommon = indexOf == baseIndexOf
|
5084
|
+
isCommon = indexOf == baseIndexOf,
|
5085
|
+
result = [];
|
4892
5086
|
|
4893
5087
|
while (++argsIndex < argsLength) {
|
4894
5088
|
var value = arguments[argsIndex];
|
@@ -4898,10 +5092,12 @@
|
|
4898
5092
|
}
|
4899
5093
|
}
|
4900
5094
|
argsLength = args.length;
|
5095
|
+
if (argsLength < 2) {
|
5096
|
+
return result;
|
5097
|
+
}
|
4901
5098
|
var array = args[0],
|
4902
5099
|
index = -1,
|
4903
5100
|
length = array ? array.length : 0,
|
4904
|
-
result = [],
|
4905
5101
|
seen = caches[0];
|
4906
5102
|
|
4907
5103
|
outer:
|
@@ -5069,17 +5265,8 @@
|
|
5069
5265
|
array || (array = []);
|
5070
5266
|
indexes = baseFlatten(indexes);
|
5071
5267
|
|
5072
|
-
var
|
5073
|
-
|
5074
|
-
|
5075
|
-
indexes.sort(baseCompareAscending);
|
5076
|
-
while (length--) {
|
5077
|
-
var index = parseFloat(indexes[length]);
|
5078
|
-
if (index != previous && isIndex(index)) {
|
5079
|
-
var previous = index;
|
5080
|
-
splice.call(array, index, 1);
|
5081
|
-
}
|
5082
|
-
}
|
5268
|
+
var result = baseAt(array, indexes);
|
5269
|
+
basePullAt(array, indexes.sort(baseCompareAscending));
|
5083
5270
|
return result;
|
5084
5271
|
});
|
5085
5272
|
|
@@ -5123,19 +5310,23 @@
|
|
5123
5310
|
* // => [2, 4]
|
5124
5311
|
*/
|
5125
5312
|
function remove(array, predicate, thisArg) {
|
5313
|
+
var result = [];
|
5314
|
+
if (!(array && array.length)) {
|
5315
|
+
return result;
|
5316
|
+
}
|
5126
5317
|
var index = -1,
|
5127
|
-
|
5128
|
-
|
5318
|
+
indexes = [],
|
5319
|
+
length = array.length;
|
5129
5320
|
|
5130
5321
|
predicate = getCallback(predicate, thisArg, 3);
|
5131
5322
|
while (++index < length) {
|
5132
5323
|
var value = array[index];
|
5133
5324
|
if (predicate(value, index, array)) {
|
5134
5325
|
result.push(value);
|
5135
|
-
|
5136
|
-
length--;
|
5326
|
+
indexes.push(index);
|
5137
5327
|
}
|
5138
5328
|
}
|
5329
|
+
basePullAt(array, indexes);
|
5139
5330
|
return result;
|
5140
5331
|
}
|
5141
5332
|
|
@@ -5160,7 +5351,7 @@
|
|
5160
5351
|
/**
|
5161
5352
|
* Creates a slice of `array` from `start` up to, but not including, `end`.
|
5162
5353
|
*
|
5163
|
-
* **Note:** This
|
5354
|
+
* **Note:** This method is used instead of `Array#slice` to support node
|
5164
5355
|
* lists in IE < 9 and to ensure dense arrays are returned.
|
5165
5356
|
*
|
5166
5357
|
* @static
|
@@ -5459,12 +5650,13 @@
|
|
5459
5650
|
});
|
5460
5651
|
|
5461
5652
|
/**
|
5462
|
-
* Creates a duplicate-
|
5463
|
-
*
|
5464
|
-
*
|
5465
|
-
*
|
5466
|
-
*
|
5467
|
-
*
|
5653
|
+
* Creates a duplicate-free version of an array, using `SameValueZero` for
|
5654
|
+
* equality comparisons, in which only the first occurence of each element
|
5655
|
+
* is kept. Providing `true` for `isSorted` performs a faster search algorithm
|
5656
|
+
* for sorted arrays. If an iteratee function is provided it is invoked for
|
5657
|
+
* each element in the array to generate the criterion by which uniqueness
|
5658
|
+
* is computed. The `iteratee` is bound to `thisArg` and invoked with three
|
5659
|
+
* arguments: (value, index, array).
|
5468
5660
|
*
|
5469
5661
|
* If a property name is provided for `iteratee` the created `_.property`
|
5470
5662
|
* style callback returns the property value of the given element.
|
@@ -5492,8 +5684,8 @@
|
|
5492
5684
|
* @returns {Array} Returns the new duplicate-value-free array.
|
5493
5685
|
* @example
|
5494
5686
|
*
|
5495
|
-
* _.uniq([1, 2
|
5496
|
-
* // => [
|
5687
|
+
* _.uniq([2, 1, 2]);
|
5688
|
+
* // => [2, 1]
|
5497
5689
|
*
|
5498
5690
|
* // using `isSorted`
|
5499
5691
|
* _.uniq([1, 1, 2], true);
|
@@ -5943,7 +6135,7 @@
|
|
5943
6135
|
* // => ['barney', 'pebbles']
|
5944
6136
|
*/
|
5945
6137
|
var at = restParam(function(collection, props) {
|
5946
|
-
var length = collection ? collection
|
6138
|
+
var length = collection ? getLength(collection) : 0;
|
5947
6139
|
if (isLength(length)) {
|
5948
6140
|
collection = toIterable(collection);
|
5949
6141
|
}
|
@@ -6048,7 +6240,7 @@
|
|
6048
6240
|
if (thisArg && isIterateeCall(collection, predicate, thisArg)) {
|
6049
6241
|
predicate = null;
|
6050
6242
|
}
|
6051
|
-
if (typeof predicate != 'function' ||
|
6243
|
+
if (typeof predicate != 'function' || thisArg !== undefined) {
|
6052
6244
|
predicate = getCallback(predicate, thisArg, 3);
|
6053
6245
|
}
|
6054
6246
|
return func(collection, predicate);
|
@@ -6218,10 +6410,10 @@
|
|
6218
6410
|
/**
|
6219
6411
|
* Iterates over elements of `collection` invoking `iteratee` for each element.
|
6220
6412
|
* The `iteratee` is bound to `thisArg` and invoked with three arguments:
|
6221
|
-
* (value, index|key, collection).
|
6413
|
+
* (value, index|key, collection). Iteratee functions may exit iteration early
|
6222
6414
|
* by explicitly returning `false`.
|
6223
6415
|
*
|
6224
|
-
* **Note:** As with other "Collections" methods, objects with a
|
6416
|
+
* **Note:** As with other "Collections" methods, objects with a "length" property
|
6225
6417
|
* are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn`
|
6226
6418
|
* may be used for object iteration.
|
6227
6419
|
*
|
@@ -6351,7 +6543,7 @@
|
|
6351
6543
|
* // => true
|
6352
6544
|
*/
|
6353
6545
|
function includes(collection, target, fromIndex, guard) {
|
6354
|
-
var length = collection ? collection
|
6546
|
+
var length = collection ? getLength(collection) : 0;
|
6355
6547
|
if (!isLength(length)) {
|
6356
6548
|
collection = values(collection);
|
6357
6549
|
length = collection.length;
|
@@ -6420,16 +6612,16 @@
|
|
6420
6612
|
});
|
6421
6613
|
|
6422
6614
|
/**
|
6423
|
-
* Invokes the method
|
6424
|
-
*
|
6425
|
-
*
|
6426
|
-
*
|
6615
|
+
* Invokes the method at `path` on each element in `collection`, returning
|
6616
|
+
* an array of the results of each invoked method. Any additional arguments
|
6617
|
+
* are provided to each invoked method. If `methodName` is a function it is
|
6618
|
+
* invoked for, and `this` bound to, each element in `collection`.
|
6427
6619
|
*
|
6428
6620
|
* @static
|
6429
6621
|
* @memberOf _
|
6430
6622
|
* @category Collection
|
6431
6623
|
* @param {Array|Object|string} collection The collection to iterate over.
|
6432
|
-
* @param {Function|string}
|
6624
|
+
* @param {Array|Function|string} path The path of the method to invoke or
|
6433
6625
|
* the function invoked per iteration.
|
6434
6626
|
* @param {...*} [args] The arguments to invoke the method with.
|
6435
6627
|
* @returns {Array} Returns the array of results.
|
@@ -6441,15 +6633,16 @@
|
|
6441
6633
|
* _.invoke([123, 456], String.prototype.split, '');
|
6442
6634
|
* // => [['1', '2', '3'], ['4', '5', '6']]
|
6443
6635
|
*/
|
6444
|
-
var invoke = restParam(function(collection,
|
6636
|
+
var invoke = restParam(function(collection, path, args) {
|
6445
6637
|
var index = -1,
|
6446
|
-
isFunc = typeof
|
6447
|
-
|
6638
|
+
isFunc = typeof path == 'function',
|
6639
|
+
isProp = isKey(path),
|
6640
|
+
length = getLength(collection),
|
6448
6641
|
result = isLength(length) ? Array(length) : [];
|
6449
6642
|
|
6450
6643
|
baseEach(collection, function(value) {
|
6451
|
-
var func = isFunc ?
|
6452
|
-
result[++index] = func ? func.apply(value, args) :
|
6644
|
+
var func = isFunc ? path : (isProp && value != null && value[path]);
|
6645
|
+
result[++index] = func ? func.apply(value, args) : invokePath(value, path, args);
|
6453
6646
|
});
|
6454
6647
|
return result;
|
6455
6648
|
});
|
@@ -6486,7 +6679,6 @@
|
|
6486
6679
|
* @param {Array|Object|string} collection The collection to iterate over.
|
6487
6680
|
* @param {Function|Object|string} [iteratee=_.identity] The function invoked
|
6488
6681
|
* per iteration.
|
6489
|
-
* create a `_.property` or `_.matches` style callback respectively.
|
6490
6682
|
* @param {*} [thisArg] The `this` binding of `iteratee`.
|
6491
6683
|
* @returns {Array} Returns the new mapped array.
|
6492
6684
|
* @example
|
@@ -6580,13 +6772,13 @@
|
|
6580
6772
|
}, function() { return [[], []]; });
|
6581
6773
|
|
6582
6774
|
/**
|
6583
|
-
* Gets the value of `
|
6775
|
+
* Gets the property value of `path` from all elements in `collection`.
|
6584
6776
|
*
|
6585
6777
|
* @static
|
6586
6778
|
* @memberOf _
|
6587
6779
|
* @category Collection
|
6588
6780
|
* @param {Array|Object|string} collection The collection to iterate over.
|
6589
|
-
* @param {string}
|
6781
|
+
* @param {Array|string} path The path of the property to pluck.
|
6590
6782
|
* @returns {Array} Returns the property values.
|
6591
6783
|
* @example
|
6592
6784
|
*
|
@@ -6602,8 +6794,8 @@
|
|
6602
6794
|
* _.pluck(userIndex, 'age');
|
6603
6795
|
* // => [36, 40] (iteration order is not guaranteed)
|
6604
6796
|
*/
|
6605
|
-
function pluck(collection,
|
6606
|
-
return map(collection,
|
6797
|
+
function pluck(collection, path) {
|
6798
|
+
return map(collection, property(path));
|
6607
6799
|
}
|
6608
6800
|
|
6609
6801
|
/**
|
@@ -6631,8 +6823,8 @@
|
|
6631
6823
|
* @returns {*} Returns the accumulated value.
|
6632
6824
|
* @example
|
6633
6825
|
*
|
6634
|
-
* _.reduce([1, 2], function(
|
6635
|
-
* return
|
6826
|
+
* _.reduce([1, 2], function(total, n) {
|
6827
|
+
* return total + n;
|
6636
6828
|
* });
|
6637
6829
|
* // => 3
|
6638
6830
|
*
|
@@ -6804,7 +6996,7 @@
|
|
6804
6996
|
* // => 7
|
6805
6997
|
*/
|
6806
6998
|
function size(collection) {
|
6807
|
-
var length = collection ? collection
|
6999
|
+
var length = collection ? getLength(collection) : 0;
|
6808
7000
|
return isLength(length) ? length : keys(collection).length;
|
6809
7001
|
}
|
6810
7002
|
|
@@ -6862,7 +7054,7 @@
|
|
6862
7054
|
if (thisArg && isIterateeCall(collection, predicate, thisArg)) {
|
6863
7055
|
predicate = null;
|
6864
7056
|
}
|
6865
|
-
if (typeof predicate != 'function' ||
|
7057
|
+
if (typeof predicate != 'function' || thisArg !== undefined) {
|
6866
7058
|
predicate = getCallback(predicate, thisArg, 3);
|
6867
7059
|
}
|
6868
7060
|
return func(collection, predicate);
|
@@ -6890,9 +7082,8 @@
|
|
6890
7082
|
* @memberOf _
|
6891
7083
|
* @category Collection
|
6892
7084
|
* @param {Array|Object|string} collection The collection to iterate over.
|
6893
|
-
* @param {
|
6894
|
-
*
|
6895
|
-
* used to create a `_.property` or `_.matches` style callback respectively.
|
7085
|
+
* @param {Function|Object|string} [iteratee=_.identity] The function invoked
|
7086
|
+
* per iteration.
|
6896
7087
|
* @param {*} [thisArg] The `this` binding of `iteratee`.
|
6897
7088
|
* @returns {Array} Returns the new sorted array.
|
6898
7089
|
* @example
|
@@ -6921,104 +7112,112 @@
|
|
6921
7112
|
if (collection == null) {
|
6922
7113
|
return [];
|
6923
7114
|
}
|
6924
|
-
var index = -1,
|
6925
|
-
length = collection.length,
|
6926
|
-
result = isLength(length) ? Array(length) : [];
|
6927
|
-
|
6928
7115
|
if (thisArg && isIterateeCall(collection, iteratee, thisArg)) {
|
6929
7116
|
iteratee = null;
|
6930
7117
|
}
|
7118
|
+
var index = -1;
|
6931
7119
|
iteratee = getCallback(iteratee, thisArg, 3);
|
6932
|
-
|
6933
|
-
|
7120
|
+
|
7121
|
+
var result = baseMap(collection, function(value, key, collection) {
|
7122
|
+
return { 'criteria': iteratee(value, key, collection), 'index': ++index, 'value': value };
|
6934
7123
|
});
|
6935
7124
|
return baseSortBy(result, compareAscending);
|
6936
7125
|
}
|
6937
7126
|
|
6938
7127
|
/**
|
6939
|
-
* This method is like `_.sortBy` except that it
|
6940
|
-
*
|
7128
|
+
* This method is like `_.sortBy` except that it can sort by multiple iteratees
|
7129
|
+
* or property names.
|
7130
|
+
*
|
7131
|
+
* If a property name is provided for an iteratee the created `_.property`
|
7132
|
+
* style callback returns the property value of the given element.
|
7133
|
+
*
|
7134
|
+
* If an object is provided for an iteratee the created `_.matches` style
|
7135
|
+
* callback returns `true` for elements that have the properties of the given
|
7136
|
+
* object, else `false`.
|
6941
7137
|
*
|
6942
7138
|
* @static
|
6943
7139
|
* @memberOf _
|
6944
7140
|
* @category Collection
|
6945
7141
|
* @param {Array|Object|string} collection The collection to iterate over.
|
6946
|
-
* @param {...(string|string[])}
|
6947
|
-
* specified as individual
|
7142
|
+
* @param {...(Function|Function[]|Object|Object[]|string|string[])} iteratees
|
7143
|
+
* The iteratees to sort by, specified as individual values or arrays of values.
|
6948
7144
|
* @returns {Array} Returns the new sorted array.
|
6949
7145
|
* @example
|
6950
7146
|
*
|
6951
7147
|
* var users = [
|
7148
|
+
* { 'user': 'fred', 'age': 48 },
|
6952
7149
|
* { 'user': 'barney', 'age': 36 },
|
6953
|
-
* { 'user': 'fred', 'age':
|
6954
|
-
* { 'user': 'barney', 'age':
|
6955
|
-
* { 'user': 'fred', 'age': 30 }
|
7150
|
+
* { 'user': 'fred', 'age': 42 },
|
7151
|
+
* { 'user': 'barney', 'age': 34 }
|
6956
7152
|
* ];
|
6957
7153
|
*
|
6958
7154
|
* _.map(_.sortByAll(users, ['user', 'age']), _.values);
|
6959
|
-
* // => [['barney',
|
7155
|
+
* // => [['barney', 34], ['barney', 36], ['fred', 42], ['fred', 48]]
|
7156
|
+
*
|
7157
|
+
* _.map(_.sortByAll(users, 'user', function(chr) {
|
7158
|
+
* return Math.floor(chr.age / 10);
|
7159
|
+
* }), _.values);
|
7160
|
+
* // => [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]]
|
6960
7161
|
*/
|
6961
|
-
|
6962
|
-
var args = arguments,
|
6963
|
-
collection = args[0],
|
6964
|
-
guard = args[3],
|
6965
|
-
index = 0,
|
6966
|
-
length = args.length - 1;
|
6967
|
-
|
7162
|
+
var sortByAll = restParam(function(collection, iteratees) {
|
6968
7163
|
if (collection == null) {
|
6969
7164
|
return [];
|
6970
7165
|
}
|
6971
|
-
var
|
6972
|
-
|
6973
|
-
|
6974
|
-
}
|
6975
|
-
if (guard && isIterateeCall(args[1], args[2], guard)) {
|
6976
|
-
props = args[1];
|
7166
|
+
var guard = iteratees[2];
|
7167
|
+
if (guard && isIterateeCall(iteratees[0], iteratees[1], guard)) {
|
7168
|
+
iteratees.length = 1;
|
6977
7169
|
}
|
6978
|
-
return baseSortByOrder(collection, baseFlatten(
|
6979
|
-
}
|
7170
|
+
return baseSortByOrder(collection, baseFlatten(iteratees), []);
|
7171
|
+
});
|
6980
7172
|
|
6981
7173
|
/**
|
6982
7174
|
* This method is like `_.sortByAll` except that it allows specifying the
|
6983
|
-
* sort orders of the
|
6984
|
-
*
|
6985
|
-
*
|
7175
|
+
* sort orders of the iteratees to sort by. A truthy value in `orders` will
|
7176
|
+
* sort the corresponding property name in ascending order while a falsey
|
7177
|
+
* value will sort it in descending order.
|
7178
|
+
*
|
7179
|
+
* If a property name is provided for an iteratee the created `_.property`
|
7180
|
+
* style callback returns the property value of the given element.
|
7181
|
+
*
|
7182
|
+
* If an object is provided for an iteratee the created `_.matches` style
|
7183
|
+
* callback returns `true` for elements that have the properties of the given
|
7184
|
+
* object, else `false`.
|
6986
7185
|
*
|
6987
7186
|
* @static
|
6988
7187
|
* @memberOf _
|
6989
7188
|
* @category Collection
|
6990
7189
|
* @param {Array|Object|string} collection The collection to iterate over.
|
6991
|
-
* @param {string[]}
|
6992
|
-
* @param {boolean[]} orders The sort orders of `
|
7190
|
+
* @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
|
7191
|
+
* @param {boolean[]} orders The sort orders of `iteratees`.
|
6993
7192
|
* @param- {Object} [guard] Enables use as a callback for functions like `_.reduce`.
|
6994
7193
|
* @returns {Array} Returns the new sorted array.
|
6995
7194
|
* @example
|
6996
7195
|
*
|
6997
7196
|
* var users = [
|
6998
|
-
* { 'user': '
|
6999
|
-
* { 'user': '
|
7000
|
-
* { 'user': '
|
7001
|
-
* { 'user': '
|
7197
|
+
* { 'user': 'fred', 'age': 48 },
|
7198
|
+
* { 'user': 'barney', 'age': 34 },
|
7199
|
+
* { 'user': 'fred', 'age': 42 },
|
7200
|
+
* { 'user': 'barney', 'age': 36 }
|
7002
7201
|
* ];
|
7003
7202
|
*
|
7004
7203
|
* // sort by `user` in ascending order and by `age` in descending order
|
7005
7204
|
* _.map(_.sortByOrder(users, ['user', 'age'], [true, false]), _.values);
|
7006
|
-
* // => [['barney', 36], ['barney',
|
7205
|
+
* // => [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]]
|
7007
7206
|
*/
|
7008
|
-
function sortByOrder(collection,
|
7207
|
+
function sortByOrder(collection, iteratees, orders, guard) {
|
7009
7208
|
if (collection == null) {
|
7010
7209
|
return [];
|
7011
7210
|
}
|
7012
|
-
if (guard && isIterateeCall(
|
7211
|
+
if (guard && isIterateeCall(iteratees, orders, guard)) {
|
7013
7212
|
orders = null;
|
7014
7213
|
}
|
7015
|
-
if (!isArray(
|
7016
|
-
|
7214
|
+
if (!isArray(iteratees)) {
|
7215
|
+
iteratees = iteratees == null ? [] : [iteratees];
|
7017
7216
|
}
|
7018
7217
|
if (!isArray(orders)) {
|
7019
7218
|
orders = orders == null ? [] : [orders];
|
7020
7219
|
}
|
7021
|
-
return baseSortByOrder(collection,
|
7220
|
+
return baseSortByOrder(collection, iteratees, orders);
|
7022
7221
|
}
|
7023
7222
|
|
7024
7223
|
/**
|
@@ -7171,7 +7370,8 @@
|
|
7171
7370
|
return function() {
|
7172
7371
|
if (--n > 0) {
|
7173
7372
|
result = func.apply(this, arguments);
|
7174
|
-
}
|
7373
|
+
}
|
7374
|
+
if (n <= 1) {
|
7175
7375
|
func = null;
|
7176
7376
|
}
|
7177
7377
|
return result;
|
@@ -7186,7 +7386,7 @@
|
|
7186
7386
|
* The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,
|
7187
7387
|
* may be used as a placeholder for partially applied arguments.
|
7188
7388
|
*
|
7189
|
-
* **Note:** Unlike native `Function#bind` this method does not set the
|
7389
|
+
* **Note:** Unlike native `Function#bind` this method does not set the "length"
|
7190
7390
|
* property of bound functions.
|
7191
7391
|
*
|
7192
7392
|
* @static
|
@@ -7228,7 +7428,7 @@
|
|
7228
7428
|
* of method names. If no method names are provided all enumerable function
|
7229
7429
|
* properties, own and inherited, of `object` are bound.
|
7230
7430
|
*
|
7231
|
-
* **Note:** This method does not set the
|
7431
|
+
* **Note:** This method does not set the "length" property of bound functions.
|
7232
7432
|
*
|
7233
7433
|
* @static
|
7234
7434
|
* @memberOf _
|
@@ -7269,7 +7469,7 @@
|
|
7269
7469
|
*
|
7270
7470
|
* This method differs from `_.bind` by allowing bound functions to reference
|
7271
7471
|
* methods that may be redefined or don't yet exist.
|
7272
|
-
* See [Peter Michaux's article](http://michaux.ca/articles/lazy-function-definition-pattern)
|
7472
|
+
* See [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)
|
7273
7473
|
* for more details.
|
7274
7474
|
*
|
7275
7475
|
* The `_.bindKey.placeholder` value, which defaults to `_` in monolithic
|
@@ -7326,7 +7526,7 @@
|
|
7326
7526
|
* The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,
|
7327
7527
|
* may be used as a placeholder for provided arguments.
|
7328
7528
|
*
|
7329
|
-
* **Note:** This method does not set the
|
7529
|
+
* **Note:** This method does not set the "length" property of curried functions.
|
7330
7530
|
*
|
7331
7531
|
* @static
|
7332
7532
|
* @memberOf _
|
@@ -7365,7 +7565,7 @@
|
|
7365
7565
|
* The `_.curryRight.placeholder` value, which defaults to `_` in monolithic
|
7366
7566
|
* builds, may be used as a placeholder for provided arguments.
|
7367
7567
|
*
|
7368
|
-
* **Note:** This method does not set the
|
7568
|
+
* **Note:** This method does not set the "length" property of curried functions.
|
7369
7569
|
*
|
7370
7570
|
* @static
|
7371
7571
|
* @memberOf _
|
@@ -7777,7 +7977,7 @@
|
|
7777
7977
|
* // `initialize` invokes `createApplication` once
|
7778
7978
|
*/
|
7779
7979
|
function once(func) {
|
7780
|
-
return before(
|
7980
|
+
return before(2, func);
|
7781
7981
|
}
|
7782
7982
|
|
7783
7983
|
/**
|
@@ -7788,7 +7988,7 @@
|
|
7788
7988
|
* The `_.partial.placeholder` value, which defaults to `_` in monolithic
|
7789
7989
|
* builds, may be used as a placeholder for partially applied arguments.
|
7790
7990
|
*
|
7791
|
-
* **Note:** This method does not set the
|
7991
|
+
* **Note:** This method does not set the "length" property of partially
|
7792
7992
|
* applied functions.
|
7793
7993
|
*
|
7794
7994
|
* @static
|
@@ -7821,7 +8021,7 @@
|
|
7821
8021
|
* The `_.partialRight.placeholder` value, which defaults to `_` in monolithic
|
7822
8022
|
* builds, may be used as a placeholder for partially applied arguments.
|
7823
8023
|
*
|
7824
|
-
* **Note:** This method does not set the
|
8024
|
+
* **Note:** This method does not set the "length" property of partially
|
7825
8025
|
* applied functions.
|
7826
8026
|
*
|
7827
8027
|
* @static
|
@@ -7905,7 +8105,7 @@
|
|
7905
8105
|
if (typeof func != 'function') {
|
7906
8106
|
throw new TypeError(FUNC_ERROR_TEXT);
|
7907
8107
|
}
|
7908
|
-
start = nativeMax(
|
8108
|
+
start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);
|
7909
8109
|
return function() {
|
7910
8110
|
var args = arguments,
|
7911
8111
|
index = -1,
|
@@ -8309,7 +8509,7 @@
|
|
8309
8509
|
if (value == null) {
|
8310
8510
|
return true;
|
8311
8511
|
}
|
8312
|
-
var length = value
|
8512
|
+
var length = getLength(value);
|
8313
8513
|
if (isLength(length) && (isArray(value) || isString(value) || isArguments(value) ||
|
8314
8514
|
(isObjectLike(value) && isFunction(value.splice)))) {
|
8315
8515
|
return !length;
|
@@ -8335,7 +8535,7 @@
|
|
8335
8535
|
* @category Lang
|
8336
8536
|
* @param {*} value The value to compare.
|
8337
8537
|
* @param {*} other The other value to compare.
|
8338
|
-
* @param {Function} [customizer] The function to customize
|
8538
|
+
* @param {Function} [customizer] The function to customize value comparisons.
|
8339
8539
|
* @param {*} [thisArg] The `this` binding of `customizer`.
|
8340
8540
|
* @returns {boolean} Returns `true` if the values are equivalent, else `false`.
|
8341
8541
|
* @example
|
@@ -8366,7 +8566,7 @@
|
|
8366
8566
|
return value === other;
|
8367
8567
|
}
|
8368
8568
|
var result = customizer ? customizer(value, other) : undefined;
|
8369
|
-
return
|
8569
|
+
return result === undefined ? baseIsEqual(value, other, customizer) : !!result;
|
8370
8570
|
}
|
8371
8571
|
|
8372
8572
|
/**
|
@@ -8488,7 +8688,7 @@
|
|
8488
8688
|
* @category Lang
|
8489
8689
|
* @param {Object} object The object to inspect.
|
8490
8690
|
* @param {Object} source The object of property values to match.
|
8491
|
-
* @param {Function} [customizer] The function to customize
|
8691
|
+
* @param {Function} [customizer] The function to customize value comparisons.
|
8492
8692
|
* @param {*} [thisArg] The `this` binding of `customizer`.
|
8493
8693
|
* @returns {boolean} Returns `true` if `object` is a match, else `false`.
|
8494
8694
|
* @example
|
@@ -8521,12 +8721,13 @@
|
|
8521
8721
|
return false;
|
8522
8722
|
}
|
8523
8723
|
customizer = typeof customizer == 'function' && bindCallback(customizer, thisArg, 3);
|
8724
|
+
object = toObject(object);
|
8524
8725
|
if (!customizer && length == 1) {
|
8525
8726
|
var key = props[0],
|
8526
8727
|
value = source[key];
|
8527
8728
|
|
8528
8729
|
if (isStrictComparable(value)) {
|
8529
|
-
return value === object[key] && (
|
8730
|
+
return value === object[key] && (value !== undefined || (key in object));
|
8530
8731
|
}
|
8531
8732
|
}
|
8532
8733
|
var values = Array(length),
|
@@ -8536,7 +8737,7 @@
|
|
8536
8737
|
value = values[length] = source[props[length]];
|
8537
8738
|
strictCompareFlags[length] = isStrictComparable(value);
|
8538
8739
|
}
|
8539
|
-
return baseIsMatch(
|
8740
|
+
return baseIsMatch(object, props, values, strictCompareFlags, customizer);
|
8540
8741
|
}
|
8541
8742
|
|
8542
8743
|
/**
|
@@ -8591,9 +8792,9 @@
|
|
8591
8792
|
return false;
|
8592
8793
|
}
|
8593
8794
|
if (objToString.call(value) == funcTag) {
|
8594
|
-
return
|
8795
|
+
return reIsNative.test(fnToString.call(value));
|
8595
8796
|
}
|
8596
|
-
return isObjectLike(value) &&
|
8797
|
+
return isObjectLike(value) && reIsHostCtor.test(value);
|
8597
8798
|
}
|
8598
8799
|
|
8599
8800
|
/**
|
@@ -8761,7 +8962,7 @@
|
|
8761
8962
|
* // => false
|
8762
8963
|
*/
|
8763
8964
|
function isUndefined(value) {
|
8764
|
-
return
|
8965
|
+
return value === undefined;
|
8765
8966
|
}
|
8766
8967
|
|
8767
8968
|
/**
|
@@ -8780,7 +8981,7 @@
|
|
8780
8981
|
* // => [2, 3]
|
8781
8982
|
*/
|
8782
8983
|
function toArray(value) {
|
8783
|
-
var length = value ? value
|
8984
|
+
var length = value ? getLength(value) : 0;
|
8784
8985
|
if (!isLength(length)) {
|
8785
8986
|
return values(value);
|
8786
8987
|
}
|
@@ -8826,13 +9027,17 @@
|
|
8826
9027
|
* The `customizer` is bound to `thisArg` and invoked with five arguments:
|
8827
9028
|
* (objectValue, sourceValue, key, object, source).
|
8828
9029
|
*
|
9030
|
+
* **Note:** This method mutates `object` and is based on
|
9031
|
+
* [`Object.assign`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign).
|
9032
|
+
*
|
9033
|
+
*
|
8829
9034
|
* @static
|
8830
9035
|
* @memberOf _
|
8831
9036
|
* @alias extend
|
8832
9037
|
* @category Object
|
8833
9038
|
* @param {Object} object The destination object.
|
8834
9039
|
* @param {...Object} [sources] The source objects.
|
8835
|
-
* @param {Function} [customizer] The function to customize
|
9040
|
+
* @param {Function} [customizer] The function to customize assigned values.
|
8836
9041
|
* @param {*} [thisArg] The `this` binding of `customizer`.
|
8837
9042
|
* @returns {Object} Returns `object`.
|
8838
9043
|
* @example
|
@@ -8842,13 +9047,17 @@
|
|
8842
9047
|
*
|
8843
9048
|
* // using a customizer callback
|
8844
9049
|
* var defaults = _.partialRight(_.assign, function(value, other) {
|
8845
|
-
* return
|
9050
|
+
* return _.isUndefined(value) ? other : value;
|
8846
9051
|
* });
|
8847
9052
|
*
|
8848
9053
|
* defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' });
|
8849
9054
|
* // => { 'user': 'barney', 'age': 36 }
|
8850
9055
|
*/
|
8851
|
-
var assign = createAssigner(
|
9056
|
+
var assign = createAssigner(function(object, source, customizer) {
|
9057
|
+
return customizer
|
9058
|
+
? assignWith(object, source, customizer)
|
9059
|
+
: baseAssign(object, source);
|
9060
|
+
});
|
8852
9061
|
|
8853
9062
|
/**
|
8854
9063
|
* Creates an object that inherits from the given `prototype` object. If a
|
@@ -8889,7 +9098,7 @@
|
|
8889
9098
|
if (guard && isIterateeCall(prototype, properties, guard)) {
|
8890
9099
|
properties = null;
|
8891
9100
|
}
|
8892
|
-
return properties ?
|
9101
|
+
return properties ? baseAssign(result, properties) : result;
|
8893
9102
|
}
|
8894
9103
|
|
8895
9104
|
/**
|
@@ -8897,6 +9106,8 @@
|
|
8897
9106
|
* object for all destination properties that resolve to `undefined`. Once a
|
8898
9107
|
* property is set, additional values of the same property are ignored.
|
8899
9108
|
*
|
9109
|
+
* **Note:** This method mutates `object`.
|
9110
|
+
*
|
8900
9111
|
* @static
|
8901
9112
|
* @memberOf _
|
8902
9113
|
* @category Object
|
@@ -9020,7 +9231,7 @@
|
|
9020
9231
|
/**
|
9021
9232
|
* Iterates over own and inherited enumerable properties of an object invoking
|
9022
9233
|
* `iteratee` for each property. The `iteratee` is bound to `thisArg` and invoked
|
9023
|
-
* with three arguments: (value, key, object).
|
9234
|
+
* with three arguments: (value, key, object). Iteratee functions may exit
|
9024
9235
|
* iteration early by explicitly returning `false`.
|
9025
9236
|
*
|
9026
9237
|
* @static
|
@@ -9076,7 +9287,7 @@
|
|
9076
9287
|
/**
|
9077
9288
|
* Iterates over own enumerable properties of an object invoking `iteratee`
|
9078
9289
|
* for each property. The `iteratee` is bound to `thisArg` and invoked with
|
9079
|
-
* three arguments: (value, key, object).
|
9290
|
+
* three arguments: (value, key, object). Iteratee functions may exit iteration
|
9080
9291
|
* early by explicitly returning `false`.
|
9081
9292
|
*
|
9082
9293
|
* @static
|
@@ -9149,24 +9360,68 @@
|
|
9149
9360
|
}
|
9150
9361
|
|
9151
9362
|
/**
|
9152
|
-
*
|
9153
|
-
*
|
9363
|
+
* Gets the property value of `path` on `object`. If the resolved value is
|
9364
|
+
* `undefined` the `defaultValue` is used in its place.
|
9154
9365
|
*
|
9155
9366
|
* @static
|
9156
9367
|
* @memberOf _
|
9157
9368
|
* @category Object
|
9158
|
-
* @param {Object} object The object to
|
9159
|
-
* @param {string}
|
9160
|
-
* @
|
9369
|
+
* @param {Object} object The object to query.
|
9370
|
+
* @param {Array|string} path The path of the property to get.
|
9371
|
+
* @param {*} [defaultValue] The value returned if the resolved value is `undefined`.
|
9372
|
+
* @returns {*} Returns the resolved value.
|
9161
9373
|
* @example
|
9162
9374
|
*
|
9163
|
-
* var object = { 'a':
|
9375
|
+
* var object = { 'a': [{ 'b': { 'c': 3 } }] };
|
9164
9376
|
*
|
9165
|
-
* _.
|
9377
|
+
* _.get(object, 'a[0].b.c');
|
9378
|
+
* // => 3
|
9379
|
+
*
|
9380
|
+
* _.get(object, ['a', '0', 'b', 'c']);
|
9381
|
+
* // => 3
|
9382
|
+
*
|
9383
|
+
* _.get(object, 'a.b.c', 'default');
|
9384
|
+
* // => 'default'
|
9385
|
+
*/
|
9386
|
+
function get(object, path, defaultValue) {
|
9387
|
+
var result = object == null ? undefined : baseGet(object, toPath(path), path + '');
|
9388
|
+
return result === undefined ? defaultValue : result;
|
9389
|
+
}
|
9390
|
+
|
9391
|
+
/**
|
9392
|
+
* Checks if `path` is a direct property.
|
9393
|
+
*
|
9394
|
+
* @static
|
9395
|
+
* @memberOf _
|
9396
|
+
* @category Object
|
9397
|
+
* @param {Object} object The object to query.
|
9398
|
+
* @param {Array|string} path The path to check.
|
9399
|
+
* @returns {boolean} Returns `true` if `path` is a direct property, else `false`.
|
9400
|
+
* @example
|
9401
|
+
*
|
9402
|
+
* var object = { 'a': { 'b': { 'c': 3 } } };
|
9403
|
+
*
|
9404
|
+
* _.has(object, 'a');
|
9405
|
+
* // => true
|
9406
|
+
*
|
9407
|
+
* _.has(object, 'a.b.c');
|
9408
|
+
* // => true
|
9409
|
+
*
|
9410
|
+
* _.has(object, ['a', 'b', 'c']);
|
9166
9411
|
* // => true
|
9167
9412
|
*/
|
9168
|
-
function has(object,
|
9169
|
-
|
9413
|
+
function has(object, path) {
|
9414
|
+
if (object == null) {
|
9415
|
+
return false;
|
9416
|
+
}
|
9417
|
+
var result = hasOwnProperty.call(object, path);
|
9418
|
+
if (!result && !isKey(path)) {
|
9419
|
+
path = toPath(path);
|
9420
|
+
object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));
|
9421
|
+
path = last(path);
|
9422
|
+
result = object != null && hasOwnProperty.call(object, path);
|
9423
|
+
}
|
9424
|
+
return result;
|
9170
9425
|
}
|
9171
9426
|
|
9172
9427
|
/**
|
@@ -9229,7 +9484,7 @@
|
|
9229
9484
|
* @static
|
9230
9485
|
* @memberOf _
|
9231
9486
|
* @category Object
|
9232
|
-
* @param {Object} object The object to
|
9487
|
+
* @param {Object} object The object to query.
|
9233
9488
|
* @returns {Array} Returns the array of property names.
|
9234
9489
|
* @example
|
9235
9490
|
*
|
@@ -9252,7 +9507,7 @@
|
|
9252
9507
|
length = object.length;
|
9253
9508
|
}
|
9254
9509
|
if ((typeof Ctor == 'function' && Ctor.prototype === object) ||
|
9255
|
-
(typeof object != 'function' &&
|
9510
|
+
(typeof object != 'function' && isLength(length))) {
|
9256
9511
|
return shimKeys(object);
|
9257
9512
|
}
|
9258
9513
|
return isObject(object) ? nativeKeys(object) : [];
|
@@ -9266,7 +9521,7 @@
|
|
9266
9521
|
* @static
|
9267
9522
|
* @memberOf _
|
9268
9523
|
* @category Object
|
9269
|
-
* @param {Object} object The object to
|
9524
|
+
* @param {Object} object The object to query.
|
9270
9525
|
* @returns {Array} Returns the array of property names.
|
9271
9526
|
* @example
|
9272
9527
|
*
|
@@ -9374,7 +9629,7 @@
|
|
9374
9629
|
* @category Object
|
9375
9630
|
* @param {Object} object The destination object.
|
9376
9631
|
* @param {...Object} [sources] The source objects.
|
9377
|
-
* @param {Function} [customizer] The function to customize
|
9632
|
+
* @param {Function} [customizer] The function to customize assigned values.
|
9378
9633
|
* @param {*} [thisArg] The `this` binding of `customizer`.
|
9379
9634
|
* @returns {Object} Returns `object`.
|
9380
9635
|
* @example
|
@@ -9459,7 +9714,7 @@
|
|
9459
9714
|
* @static
|
9460
9715
|
* @memberOf _
|
9461
9716
|
* @category Object
|
9462
|
-
* @param {Object} object The object to
|
9717
|
+
* @param {Object} object The object to query.
|
9463
9718
|
* @returns {Array} Returns the new array of key-value pairs.
|
9464
9719
|
* @example
|
9465
9720
|
*
|
@@ -9515,41 +9770,93 @@
|
|
9515
9770
|
});
|
9516
9771
|
|
9517
9772
|
/**
|
9518
|
-
*
|
9519
|
-
*
|
9520
|
-
* is returned
|
9521
|
-
* `undefined` the `defaultValue` is used in its place.
|
9773
|
+
* This method is like `_.get` except that if the resolved value is a function
|
9774
|
+
* it is invoked with the `this` binding of its parent object and its result
|
9775
|
+
* is returned.
|
9522
9776
|
*
|
9523
9777
|
* @static
|
9524
9778
|
* @memberOf _
|
9525
9779
|
* @category Object
|
9526
9780
|
* @param {Object} object The object to query.
|
9527
|
-
* @param {string}
|
9528
|
-
* @param {*} [defaultValue] The value returned if the
|
9529
|
-
* resolves to `undefined`.
|
9781
|
+
* @param {Array|string} path The path of the property to resolve.
|
9782
|
+
* @param {*} [defaultValue] The value returned if the resolved value is `undefined`.
|
9530
9783
|
* @returns {*} Returns the resolved value.
|
9531
9784
|
* @example
|
9532
9785
|
*
|
9533
|
-
* var object = { '
|
9786
|
+
* var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };
|
9534
9787
|
*
|
9535
|
-
* _.result(object, '
|
9536
|
-
* // =>
|
9788
|
+
* _.result(object, 'a[0].b.c1');
|
9789
|
+
* // => 3
|
9537
9790
|
*
|
9538
|
-
* _.result(object, '
|
9539
|
-
* // =>
|
9791
|
+
* _.result(object, 'a[0].b.c2');
|
9792
|
+
* // => 4
|
9540
9793
|
*
|
9541
|
-
* _.result(object, '
|
9542
|
-
* // => '
|
9794
|
+
* _.result(object, 'a.b.c', 'default');
|
9795
|
+
* // => 'default'
|
9543
9796
|
*
|
9544
|
-
* _.result(object, '
|
9545
|
-
* // => '
|
9797
|
+
* _.result(object, 'a.b.c', _.constant('default'));
|
9798
|
+
* // => 'default'
|
9546
9799
|
*/
|
9547
|
-
function result(object,
|
9548
|
-
var
|
9549
|
-
if (
|
9550
|
-
|
9800
|
+
function result(object, path, defaultValue) {
|
9801
|
+
var result = object == null ? undefined : object[path];
|
9802
|
+
if (result === undefined) {
|
9803
|
+
if (object != null && !isKey(path, object)) {
|
9804
|
+
path = toPath(path);
|
9805
|
+
object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));
|
9806
|
+
result = object == null ? undefined : object[last(path)];
|
9807
|
+
}
|
9808
|
+
result = result === undefined ? defaultValue : result;
|
9551
9809
|
}
|
9552
|
-
return isFunction(
|
9810
|
+
return isFunction(result) ? result.call(object) : result;
|
9811
|
+
}
|
9812
|
+
|
9813
|
+
/**
|
9814
|
+
* Sets the property value of `path` on `object`. If a portion of `path`
|
9815
|
+
* does not exist it is created.
|
9816
|
+
*
|
9817
|
+
* @static
|
9818
|
+
* @memberOf _
|
9819
|
+
* @category Object
|
9820
|
+
* @param {Object} object The object to augment.
|
9821
|
+
* @param {Array|string} path The path of the property to set.
|
9822
|
+
* @param {*} value The value to set.
|
9823
|
+
* @returns {Object} Returns `object`.
|
9824
|
+
* @example
|
9825
|
+
*
|
9826
|
+
* var object = { 'a': [{ 'b': { 'c': 3 } }] };
|
9827
|
+
*
|
9828
|
+
* _.set(object, 'a[0].b.c', 4);
|
9829
|
+
* console.log(object.a[0].b.c);
|
9830
|
+
* // => 4
|
9831
|
+
*
|
9832
|
+
* _.set(object, 'x[0].y.z', 5);
|
9833
|
+
* console.log(object.x[0].y.z);
|
9834
|
+
* // => 5
|
9835
|
+
*/
|
9836
|
+
function set(object, path, value) {
|
9837
|
+
if (object == null) {
|
9838
|
+
return object;
|
9839
|
+
}
|
9840
|
+
var pathKey = (path + '');
|
9841
|
+
path = (object[pathKey] != null || isKey(path, object)) ? [pathKey] : toPath(path);
|
9842
|
+
|
9843
|
+
var index = -1,
|
9844
|
+
length = path.length,
|
9845
|
+
endIndex = length - 1,
|
9846
|
+
nested = object;
|
9847
|
+
|
9848
|
+
while (nested != null && ++index < length) {
|
9849
|
+
var key = path[index];
|
9850
|
+
if (isObject(nested)) {
|
9851
|
+
if (index == endIndex) {
|
9852
|
+
nested[key] = value;
|
9853
|
+
} else if (nested[key] == null) {
|
9854
|
+
nested[key] = isIndex(path[index + 1]) ? [] : {};
|
9855
|
+
}
|
9856
|
+
}
|
9857
|
+
nested = nested[key];
|
9858
|
+
}
|
9859
|
+
return object;
|
9553
9860
|
}
|
9554
9861
|
|
9555
9862
|
/**
|
@@ -9557,7 +9864,7 @@
|
|
9557
9864
|
* `accumulator` object which is the result of running each of its own enumerable
|
9558
9865
|
* properties through `iteratee`, with each invocation potentially mutating
|
9559
9866
|
* the `accumulator` object. The `iteratee` is bound to `thisArg` and invoked
|
9560
|
-
* with four arguments: (accumulator, value, key, object).
|
9867
|
+
* with four arguments: (accumulator, value, key, object). Iteratee functions
|
9561
9868
|
* may exit iteration early by explicitly returning `false`.
|
9562
9869
|
*
|
9563
9870
|
* @static
|
@@ -9700,7 +10007,7 @@
|
|
9700
10007
|
} else {
|
9701
10008
|
end = +end || 0;
|
9702
10009
|
}
|
9703
|
-
return value >= start && value < end;
|
10010
|
+
return value >= nativeMin(start, end) && value < nativeMax(start, end);
|
9704
10011
|
}
|
9705
10012
|
|
9706
10013
|
/**
|
@@ -9825,7 +10132,7 @@
|
|
9825
10132
|
*/
|
9826
10133
|
function deburr(string) {
|
9827
10134
|
string = baseToString(string);
|
9828
|
-
return string && string.replace(reLatin1, deburrLetter).replace(
|
10135
|
+
return string && string.replace(reLatin1, deburrLetter).replace(reComboMark, '');
|
9829
10136
|
}
|
9830
10137
|
|
9831
10138
|
/**
|
@@ -9854,7 +10161,7 @@
|
|
9854
10161
|
target = (target + '');
|
9855
10162
|
|
9856
10163
|
var length = string.length;
|
9857
|
-
position =
|
10164
|
+
position = position === undefined
|
9858
10165
|
? length
|
9859
10166
|
: nativeMin(position < 0 ? 0 : (+position || 0), length);
|
9860
10167
|
|
@@ -9876,9 +10183,10 @@
|
|
9876
10183
|
* (under "semi-related fun fact") for more details.
|
9877
10184
|
*
|
9878
10185
|
* Backticks are escaped because in Internet Explorer < 9, they can break out
|
9879
|
-
* of attribute values or HTML comments. See [#
|
9880
|
-
* [#
|
9881
|
-
* the [HTML5 Security Cheatsheet](https://html5sec.org/)
|
10186
|
+
* of attribute values or HTML comments. See [#59](https://html5sec.org/#59),
|
10187
|
+
* [#102](https://html5sec.org/#102), [#108](https://html5sec.org/#108), and
|
10188
|
+
* [#133](https://html5sec.org/#133) of the [HTML5 Security Cheatsheet](https://html5sec.org/)
|
10189
|
+
* for more details.
|
9882
10190
|
*
|
9883
10191
|
* When working with HTML you should always [quote attribute values](http://wonko.com/post/html-escaping)
|
9884
10192
|
* to reduce XSS vectors.
|
@@ -10072,7 +10380,7 @@
|
|
10072
10380
|
radix = +radix;
|
10073
10381
|
}
|
10074
10382
|
string = trim(string);
|
10075
|
-
return nativeParseInt(string, radix || (
|
10383
|
+
return nativeParseInt(string, radix || (reHasHexPrefix.test(string) ? 16 : 10));
|
10076
10384
|
};
|
10077
10385
|
}
|
10078
10386
|
|
@@ -10297,9 +10605,9 @@
|
|
10297
10605
|
options = otherOptions = null;
|
10298
10606
|
}
|
10299
10607
|
string = baseToString(string);
|
10300
|
-
options =
|
10608
|
+
options = assignWith(baseAssign({}, otherOptions || options), settings, assignOwnDefaults);
|
10301
10609
|
|
10302
|
-
var imports =
|
10610
|
+
var imports = assignWith(baseAssign({}, options.imports), settings.imports, assignOwnDefaults),
|
10303
10611
|
importsKeys = keys(imports),
|
10304
10612
|
importsValues = baseValues(imports, importsKeys);
|
10305
10613
|
|
@@ -10703,9 +11011,7 @@
|
|
10703
11011
|
if (guard && isIterateeCall(func, thisArg, guard)) {
|
10704
11012
|
thisArg = null;
|
10705
11013
|
}
|
10706
|
-
return
|
10707
|
-
? matches(func)
|
10708
|
-
: baseCallback(func, thisArg);
|
11014
|
+
return baseCallback(func, thisArg);
|
10709
11015
|
}
|
10710
11016
|
|
10711
11017
|
/**
|
@@ -10779,7 +11085,7 @@
|
|
10779
11085
|
}
|
10780
11086
|
|
10781
11087
|
/**
|
10782
|
-
* Creates a function which compares the property value of `
|
11088
|
+
* Creates a function which compares the property value of `path` on a given
|
10783
11089
|
* object to `value`.
|
10784
11090
|
*
|
10785
11091
|
* **Note:** This method supports comparing arrays, booleans, `Date` objects,
|
@@ -10789,7 +11095,7 @@
|
|
10789
11095
|
* @static
|
10790
11096
|
* @memberOf _
|
10791
11097
|
* @category Utility
|
10792
|
-
* @param {string}
|
11098
|
+
* @param {Array|string} path The path of the property to get.
|
10793
11099
|
* @param {*} value The value to compare.
|
10794
11100
|
* @returns {Function} Returns the new function.
|
10795
11101
|
* @example
|
@@ -10802,22 +11108,75 @@
|
|
10802
11108
|
* _.find(users, _.matchesProperty('user', 'fred'));
|
10803
11109
|
* // => { 'user': 'fred' }
|
10804
11110
|
*/
|
10805
|
-
function matchesProperty(
|
10806
|
-
return baseMatchesProperty(
|
11111
|
+
function matchesProperty(path, value) {
|
11112
|
+
return baseMatchesProperty(path, baseClone(value, true));
|
10807
11113
|
}
|
10808
11114
|
|
11115
|
+
/**
|
11116
|
+
* Creates a function which invokes the method at `path` on a given object.
|
11117
|
+
*
|
11118
|
+
* @static
|
11119
|
+
* @memberOf _
|
11120
|
+
* @category Utility
|
11121
|
+
* @param {Array|string} path The path of the method to invoke.
|
11122
|
+
* @returns {Function} Returns the new function.
|
11123
|
+
* @example
|
11124
|
+
*
|
11125
|
+
* var objects = [
|
11126
|
+
* { 'a': { 'b': { 'c': _.constant(2) } } },
|
11127
|
+
* { 'a': { 'b': { 'c': _.constant(1) } } }
|
11128
|
+
* ];
|
11129
|
+
*
|
11130
|
+
* _.map(objects, _.method('a.b.c'));
|
11131
|
+
* // => [2, 1]
|
11132
|
+
*
|
11133
|
+
* _.invoke(_.sortBy(objects, _.method(['a', 'b', 'c'])), 'a.b.c');
|
11134
|
+
* // => [1, 2]
|
11135
|
+
*/
|
11136
|
+
var method = restParam(function(path, args) {
|
11137
|
+
return function(object) {
|
11138
|
+
return invokePath(object, path, args);
|
11139
|
+
}
|
11140
|
+
});
|
11141
|
+
|
11142
|
+
/**
|
11143
|
+
* The opposite of `_.method`; this method creates a function which invokes
|
11144
|
+
* the method at a given path on `object`.
|
11145
|
+
*
|
11146
|
+
* @static
|
11147
|
+
* @memberOf _
|
11148
|
+
* @category Utility
|
11149
|
+
* @param {Object} object The object to query.
|
11150
|
+
* @returns {Function} Returns the new function.
|
11151
|
+
* @example
|
11152
|
+
*
|
11153
|
+
* var array = _.times(3, _.constant),
|
11154
|
+
* object = { 'a': array, 'b': array, 'c': array };
|
11155
|
+
*
|
11156
|
+
* _.map(['a[2]', 'c[0]'], _.methodOf(object));
|
11157
|
+
* // => [2, 0]
|
11158
|
+
*
|
11159
|
+
* _.map([['a', '2'], ['c', '0']], _.methodOf(object));
|
11160
|
+
* // => [2, 0]
|
11161
|
+
*/
|
11162
|
+
var methodOf = restParam(function(object, args) {
|
11163
|
+
return function(path) {
|
11164
|
+
return invokePath(object, path, args);
|
11165
|
+
};
|
11166
|
+
});
|
11167
|
+
|
10809
11168
|
/**
|
10810
11169
|
* Adds all own enumerable function properties of a source object to the
|
10811
11170
|
* destination object. If `object` is a function then methods are added to
|
10812
11171
|
* its prototype as well.
|
10813
11172
|
*
|
10814
|
-
* **Note:** Use `_.runInContext` to create a pristine `lodash` function
|
10815
|
-
*
|
11173
|
+
* **Note:** Use `_.runInContext` to create a pristine `lodash` function to
|
11174
|
+
* avoid conflicts caused by modifying the original.
|
10816
11175
|
*
|
10817
11176
|
* @static
|
10818
11177
|
* @memberOf _
|
10819
11178
|
* @category Utility
|
10820
|
-
* @param {Function|Object} [object=
|
11179
|
+
* @param {Function|Object} [object=lodash] The destination object.
|
10821
11180
|
* @param {Object} source The object of functions to add.
|
10822
11181
|
* @param {Object} [options] The options object.
|
10823
11182
|
* @param {boolean} [options.chain=true] Specify whether the functions added
|
@@ -10934,61 +11293,61 @@
|
|
10934
11293
|
}
|
10935
11294
|
|
10936
11295
|
/**
|
10937
|
-
* Creates a function which returns the property value
|
11296
|
+
* Creates a function which returns the property value at `path` on a
|
11297
|
+
* given object.
|
10938
11298
|
*
|
10939
11299
|
* @static
|
10940
11300
|
* @memberOf _
|
10941
11301
|
* @category Utility
|
10942
|
-
* @param {string}
|
11302
|
+
* @param {Array|string} path The path of the property to get.
|
10943
11303
|
* @returns {Function} Returns the new function.
|
10944
11304
|
* @example
|
10945
11305
|
*
|
10946
|
-
* var
|
10947
|
-
* { '
|
10948
|
-
* { '
|
11306
|
+
* var objects = [
|
11307
|
+
* { 'a': { 'b': { 'c': 2 } } },
|
11308
|
+
* { 'a': { 'b': { 'c': 1 } } }
|
10949
11309
|
* ];
|
10950
11310
|
*
|
10951
|
-
*
|
10952
|
-
*
|
10953
|
-
* _.map(users, getName);
|
10954
|
-
* // => ['fred', 'barney']
|
11311
|
+
* _.map(objects, _.property('a.b.c'));
|
11312
|
+
* // => [2, 1]
|
10955
11313
|
*
|
10956
|
-
* _.pluck(_.sortBy(
|
10957
|
-
* // => [
|
11314
|
+
* _.pluck(_.sortBy(objects, _.property(['a', 'b', 'c'])), 'a.b.c');
|
11315
|
+
* // => [1, 2]
|
10958
11316
|
*/
|
10959
|
-
function property(
|
10960
|
-
return baseProperty(
|
11317
|
+
function property(path) {
|
11318
|
+
return isKey(path) ? baseProperty(path) : basePropertyDeep(path);
|
10961
11319
|
}
|
10962
11320
|
|
10963
11321
|
/**
|
10964
11322
|
* The opposite of `_.property`; this method creates a function which returns
|
10965
|
-
* the property value
|
11323
|
+
* the property value at a given path on `object`.
|
10966
11324
|
*
|
10967
11325
|
* @static
|
10968
11326
|
* @memberOf _
|
10969
11327
|
* @category Utility
|
10970
|
-
* @param {Object} object The object to
|
11328
|
+
* @param {Object} object The object to query.
|
10971
11329
|
* @returns {Function} Returns the new function.
|
10972
11330
|
* @example
|
10973
11331
|
*
|
10974
|
-
* var
|
11332
|
+
* var array = [0, 1, 2],
|
11333
|
+
* object = { 'a': array, 'b': array, 'c': array };
|
10975
11334
|
*
|
10976
|
-
* _.map(['a', 'c'], _.propertyOf(object));
|
10977
|
-
* // => [
|
11335
|
+
* _.map(['a[2]', 'c[0]'], _.propertyOf(object));
|
11336
|
+
* // => [2, 0]
|
10978
11337
|
*
|
10979
|
-
* _.
|
10980
|
-
* // => [
|
11338
|
+
* _.map([['a', '2'], ['c', '0']], _.propertyOf(object));
|
11339
|
+
* // => [2, 0]
|
10981
11340
|
*/
|
10982
11341
|
function propertyOf(object) {
|
10983
|
-
return function(
|
10984
|
-
return object
|
11342
|
+
return function(path) {
|
11343
|
+
return baseGet(object, toPath(path), path + '');
|
10985
11344
|
};
|
10986
11345
|
}
|
10987
11346
|
|
10988
11347
|
/**
|
10989
11348
|
* Creates an array of numbers (positive and/or negative) progressing from
|
10990
11349
|
* `start` up to, but not including, `end`. If `end` is not specified it is
|
10991
|
-
* set to `start` with `start` then set to `0`. If `
|
11350
|
+
* set to `start` with `start` then set to `0`. If `end` is less than `start`
|
10992
11351
|
* a zero-length range is created unless a negative `step` is specified.
|
10993
11352
|
*
|
10994
11353
|
* @static
|
@@ -11064,7 +11423,7 @@
|
|
11064
11423
|
* _.times(3, function(n) {
|
11065
11424
|
* mage.castSpell(n);
|
11066
11425
|
* });
|
11067
|
-
* // => invokes `mage.castSpell(n)` three times with `n` of `0`, `1`, and `2`
|
11426
|
+
* // => invokes `mage.castSpell(n)` three times with `n` of `0`, `1`, and `2`
|
11068
11427
|
*
|
11069
11428
|
* _.times(3, function(n) {
|
11070
11429
|
* this.cast(n);
|
@@ -11131,7 +11490,7 @@
|
|
11131
11490
|
* // => 10
|
11132
11491
|
*/
|
11133
11492
|
function add(augend, addend) {
|
11134
|
-
return augend + addend;
|
11493
|
+
return (+augend || 0) + (+addend || 0);
|
11135
11494
|
}
|
11136
11495
|
|
11137
11496
|
/**
|
@@ -11357,6 +11716,8 @@
|
|
11357
11716
|
lodash.matchesProperty = matchesProperty;
|
11358
11717
|
lodash.memoize = memoize;
|
11359
11718
|
lodash.merge = merge;
|
11719
|
+
lodash.method = method;
|
11720
|
+
lodash.methodOf = methodOf;
|
11360
11721
|
lodash.mixin = mixin;
|
11361
11722
|
lodash.negate = negate;
|
11362
11723
|
lodash.omit = omit;
|
@@ -11377,6 +11738,7 @@
|
|
11377
11738
|
lodash.remove = remove;
|
11378
11739
|
lodash.rest = rest;
|
11379
11740
|
lodash.restParam = restParam;
|
11741
|
+
lodash.set = set;
|
11380
11742
|
lodash.shuffle = shuffle;
|
11381
11743
|
lodash.slice = slice;
|
11382
11744
|
lodash.sortBy = sortBy;
|
@@ -11445,6 +11807,7 @@
|
|
11445
11807
|
lodash.findLastKey = findLastKey;
|
11446
11808
|
lodash.findWhere = findWhere;
|
11447
11809
|
lodash.first = first;
|
11810
|
+
lodash.get = get;
|
11448
11811
|
lodash.has = has;
|
11449
11812
|
lodash.identity = identity;
|
11450
11813
|
lodash.includes = includes;
|
@@ -11633,7 +11996,7 @@
|
|
11633
11996
|
// Add `LazyWrapper` methods for `_.pluck` and `_.where`.
|
11634
11997
|
arrayEach(['pluck', 'where'], function(methodName, index) {
|
11635
11998
|
var operationName = index ? 'filter' : 'map',
|
11636
|
-
createCallback = index ? baseMatches :
|
11999
|
+
createCallback = index ? baseMatches : property;
|
11637
12000
|
|
11638
12001
|
LazyWrapper.prototype[methodName] = function(value) {
|
11639
12002
|
return this[operationName](createCallback(value));
|
@@ -11655,7 +12018,7 @@
|
|
11655
12018
|
start = start == null ? 0 : (+start || 0);
|
11656
12019
|
var result = start < 0 ? this.takeRight(-start) : this.drop(start);
|
11657
12020
|
|
11658
|
-
if (
|
12021
|
+
if (end !== undefined) {
|
11659
12022
|
end = (+end || 0);
|
11660
12023
|
result = end < 0 ? result.dropRight(-end) : result.take(end - start);
|
11661
12024
|
}
|
@@ -11686,7 +12049,7 @@
|
|
11686
12049
|
useLazy = isLazy || isArray(value);
|
11687
12050
|
|
11688
12051
|
if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {
|
11689
|
-
// avoid lazy use if the iteratee has a
|
12052
|
+
// avoid lazy use if the iteratee has a "length" value other than `1`
|
11690
12053
|
isLazy = useLazy = false;
|
11691
12054
|
}
|
11692
12055
|
var onlyLazy = isLazy && !isHybrid;
|