/*! function-extended - v0.0.9 - 2014-04-01 * Copyright (c) 2014 Doug Martin; Licensed MIT */ !function(){"use strict";function a(a,b,c){function d(a,b,c){var d;switch((b||[]).length){case 0:d=a.call(c);break;case 1:d=a.call(c,b[0]);break;case 2:d=a.call(c,b[0],b[1]);break;case 3:d=a.call(c,b[0],b[1],b[2]);break;default:d=a.apply(c,b)}return d}function e(a,b,c){if(c=p(arguments,2),n(b)&&!(b in a))throw new Error(b+" property not defined in scope");if(!n(b)&&!o(b))throw new Error(b+" is not a function");return n(b)?function(){var e=a[b];return o(e)?d(e,c.concat(p(arguments)),a):e}:c.length?function(){return d(b,c.concat(p(arguments)),a)}:function(){return d(b,arguments,a)}}function f(a,b){if(b=p(arguments,1),!n(a)&&!o(a))throw new Error(a+" must be the name of a property or function to execute");return n(a)?function(){var c=p(arguments),e=c.shift(),f=e[a];return o(f)?(c=b.concat(c),d(f,c,e)):f}:function(){var c=p(arguments),e=c.shift();return c=b.concat(c),d(a,c,e)}}function g(a,b,c){if(c=p(arguments,2),n(b)&&!(b in a))throw new Error(b+" property not defined in scope");if(!n(b)&&!o(b))throw new Error(b+" is not a function");return n(b)?function(){var e=a[b];return o(e)?d(e,c,a):e}:function(){return d(b,c,a)}}function h(a){var b=p(arguments,1);if(!m(a)&&!o(a))throw new TypeError("scope must be an object");if(1===b.length&&l(b[0])&&(b=b[0]),!b.length){b=[];for(var c in a)a.hasOwnProperty(c)&&o(a[c])&&b.push(c)}for(var d=0,f=b.length;f>d;d++)a[b[d]]=e(a,a[b[d]]);return a}function i(a,b){if(b=p(arguments,1),!n(a)&&!o(a))throw new Error(a+" must be the name of a property or function to execute");return n(a)?function(){var c=this[a];if(o(c)){var e=b.concat(p(arguments));return d(c,e,this)}return c}:function(){var c=b.concat(p(arguments));return d(a,c,this)}}function j(a,b){return function(){var c=p(arguments);return b?d(a,arguments,this):function(){return d(a,c.concat(p(arguments)),this)}}}function k(a,b,c){var d;if(d=c?e(c,b):b,a)for(var f=a-1,g=f;g>=0;g--)d=j(d,g===f);return d}var l=b.isArray,m=b.isObject,n=b.isString,o=b.isFunction,p=c.argsToArray;return a.define(m,{bind:e,bindAll:h,bindIgnore:g,curry:function(a,b,c){return k(b,c,a)}}).define(o,{bind:function(a,b){return d(e,[b,a].concat(p(arguments,2)),this)},bindIgnore:function(a,b){return d(g,[b,a].concat(p(arguments,2)),this)},partial:i,applyFirst:f,curry:function(a,b,c){return k(b,a,c)},noWrap:{f:function(){return this.value()}}}).define(n,{bind:function(a,b){return e(b,a)},bindIgnore:function(a,b){return g(b,a)},partial:i,applyFirst:f,curry:function(a,b,c){return k(b,a,c)}}).expose({bind:e,bindAll:h,bindIgnore:g,partial:i,applyFirst:f,curry:k})}"undefined"!=typeof exports?"undefined"!=typeof module&&module.exports&&(module.exports=a(require("extended"),require("is-extended"),require("arguments-extended"))):"function"==typeof define&&define.amd?define(["extended","is-extended","arguments-extended"],function(b,c,d){return a(b,c,d)}):this.functionExtended=a(this.extended,this.isExtended,this.argumentsExtended)}.call(this);