/* @banner futils | www.npmjs.com/package/futils */ !function(n,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):n.futils=t()}(this,function(){"use strict";var f=function(n,m){if("number"!=typeof n||isNaN(n)||!isFinite(n))throw"Aritiy of a function cannot be "+n;if("function"!=typeof m)throw m+" does not have an arity, only functions have";switch(Math.abs(n)){case 1:return function(n){return m(n)};case 2:return function(n,t){return m(n,t)};case 3:return function(n,t,r){return m(n,t,r)};case 4:return function(n,t,r,e){return m(n,t,r,e)};case 5:return function(n,t,r,e,u){return m(n,t,r,e,u)};case 6:return function(n,t,r,e,u,o){return m(n,t,r,e,u,o)};case 7:return function(n,t,r,e,u,o,i){return m(n,t,r,e,u,o,i)};case 8:return function(n,t,r,e,u,o,i,f){return m(n,t,r,e,u,o,i,f)};case 9:return function(n,t,r,e,u,o,i,f,c){return m(n,t,r,e,u,o,i,f,c)};case 10:return function(n,t,r,e,u,o,i,f,c,a){return m(n,t,r,e,u,o,i,f,c,a)};case 11:return function(n,t,r,e,u,o,i,f,c,a,s){return m(n,t,r,e,u,o,i,f,c,a,s)};case 12:return function(n,t,r,e,u,o,i,f,c,a,s,l){return m(n,t,r,e,u,o,i,f,c,a,s,l)};case 13:return function(n,t,r,e,u,o,i,f,c,a,s,l,p){return m(n,t,r,e,u,o,i,f,c,a,s,l,p)};case 14:return function(n,t,r,e,u,o,i,f,c,a,s,l,p,h){return m(n,t,r,e,u,o,i,f,c,a,s,l,p,h)};case 15:return function(n,t,r,e,u,o,i,f,c,a,s,l,p,h,v){return m(n,t,r,e,u,o,i,f,c,a,s,l,p,h,v)};case 16:return function(n,t,r,e,u,o,i,f,c,a,s,l,p,h,v,d){return m(n,t,r,e,u,o,i,f,c,a,s,l,p,h,v,d)};default:return m}},o=Symbol("@@type"),i=Symbol("@@values"),u=Symbol("@@type_tag"),c=function(n){return null==n},t=function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function")},r=function(){function e(n,t){for(var r=0;r=o.length?o.apply(void 0,l(e)):u(o,e)});throw"curry :: Expected argument to be of type function but saw "+n}(t,[])};var M={id:function(n){return n},constant:function(n){return function(){return n}},compose:function(){for(var n=arguments.length,t=Array(n),r=0;r=o.length?o.apply(void 0,l(e.reverse())):u(o,e)});throw"curryRight :: Expected argument to be of type function but saw "+n}(t,[])},partial:function u(o){for(var n=arguments.length,t=Array(1u.length?u.map(function(n,t){return r(e[t],n)}):e.map(function(n,t){return r(n,u[t])});throw"zipWith :: Expected second and third arguments to be arrays but saw "+t+" & "+o}throw"zipWith :: Expected first argument to be function but saw "+n}(e,t,n)},rn=tn(function(n,t){return[n,t]}),en={equals:X,concat:function t(r,n){return void 0===r?t:void 0===n?function(n){return t(r,n)}:function(n,t){if(!c(t)){if("Function"===g(t.then))return Promise.race([n,t]);if("Function"===g(t.concat))return P(t,t.concat,n)}throw"concat :: Cannot append "+n+" to "+t}(r,n)},map:Z,ap:function t(r,e){return void 0===r?t:void 0===e?function(n){return t(r,n)}:null===e||null===r?null:"function"==typeof r.then?r.then(function(n){return e.then(n,function(n){return n})},function(n){return n}):U(r,r.ap,e)},flat:function(n){return c(n)?n:n.flat?n.flat():n.reduce(function(n,t){return n.concat(t)},[])},flatMap:function t(r,n){return void 0===r?t:void 0===n?function(n){return t(r,n)}:null===n?null:"function"==typeof n.then?n.then(r,function(n){return n}):W(n,n.flatMap,r)},filter:function t(r,n){return void 0===r?t:void 0===n?function(n){return t(r,n)}:D(n,n.filter,r)},fold:function t(r,n){return void 0===r?t:void 0===n?function(n){return t(r,n)}:null===n?null:G(n,n.fold,r)},foldMap:function t(r,n){return void 0===r?t:void 0===n?function(n){return t(r,n)}:null===n?null:K(n,n.foldMap,r)},reduce:function r(e,t,n){return void 0===e?r:void 0===t?function(n,t){return r(e,n,t)}:void 0===n?function(n){return r(e,t,n)}:null===n?null:H(n,n.reduce,e,t)},reduceRight:function r(e,t,n){return void 0===e?r:void 0===t?function(n,t){return r(e,n,t)}:void 0===n?function(n){return r(e,t,n)}:null===n?null:n.reduceRight?n.reduceRight(e,t):e(t,n)},traverse:function r(e,t,n){return void 0===e?r:void 0===t?function(n,t){return r(e,n,t)}:void 0===n?function(n){return r(e,t,n)}:null===n?null:Q(n,n.traverse,e,t)},sequence:function t(r,n){return void 0===r?t:void 0===n?function(n){return t(r,n)}:null===n?null:J(n,n.sequence,r)},caseOf:function t(r,n){return void 0===r?t:void 0===n?function(n){return t(r,n)}:n&&"Function"===g(n.caseOf)?n.caseOf(r):function(n,t){var r=g(n);if("Function"===g(t[r]))return t[r](n);if("Function"===g(t._))return t._(n);throw"caseOf :: No pattern matched "+r+" in "+Object.keys(n)}(n,r)},biMap:function r(e,t,n){return void 0===e?r:void 0===t?function(n,t){return r(e,n,t)}:void 0===n?function(n){return r(e,t,n)}:null===n?null:I(n,n.biMap,e,t)},proMap:function r(e,t,n){return void 0===e?r:void 0===t?function(n,t){return r(e,n,t)}:void 0===n?function(n){return r(e,t,n)}:null===n?n:"function"==typeof n?f(n.length,function(){return t(n(e.apply(void 0,arguments)))}):Y(n,n.proMap,e,t)},doM:function(n){var t=g(n);if("GeneratorFunction"===t){var o=n();return function n(t){var r=o.next(t),e=r.done,u=r.value;return e?u:"Function"===g(u.then)?u.then(n,function(n){return n}):u.flatMap(n)}()}throw"doM :: Expected argument to be a generator function but saw "+t},liftA:function u(o,e){for(var n=arguments.length,t=Array(2