Skip to content

Instantly share code, notes, and snippets.

@ascott1
Created June 4, 2014 13:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ascott1/ae58098fdee3b516631b to your computer and use it in GitHub Desktop.
Save ascott1/ae58098fdee3b516631b to your computer and use it in GitHub Desktop.
requirebin sketch
require('console-log').show(true);
var Financial = require('financial');
var Money = require('accounting');
var calcPayment = function(loanRate, loanYears, loanAmt) {
var monthlyPayment = Financial.PMT(loanRate / 100 / 12, loanYears * 12, loanAmt);
monthlyPayment = Math.abs(monthlyPayment);
return makeMoney(monthlyPayment);
};
var calcInterest = function(loanRate, loanYears, loanAmt, startPeriod, endPeriod, type) {
var totalInterest = Financial.CUMIPMT(loanRate / 100 / 12, loanYears * 12, loanAmt, startPeriod, endPeriod * 12, type);
totalInterest = Math.abs(totalInterest);
return makeMoney(totalInterest);
};
var makeMoney = function(num) {
return Money.accounting.formatMoney(num);
};
console.log('You will pay ' + calcPayment(5, 30, 200000) + ' per month');
console.log('You will have paid ' + calcInterest(5, 30, 200000, 1, 30, 0) + ' in total interest');
require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}else{throw TypeError('Uncaught, unspecified "error" event.')}return false}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];handler.apply(this,args)}}else if(isObject(handler)){len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];listeners=handler.slice();len=listeners.length;for(i=0;i<len;i++)listeners[i].apply(this,args)}return true};EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events)this._events={};if(this._events.newListener)this.emit("newListener",type,isFunction(listener.listener)?listener.listener:listener);if(!this._events[type])this._events[type]=listener;else if(isObject(this._events[type]))this._events[type].push(listener);else this._events[type]=[this._events[type],listener];if(isObject(this._events[type])&&!this._events[type].warned){var m;if(!isUndefined(this._maxListeners)){m=this._maxListeners}else{m=EventEmitter.defaultMaxListeners}if(m&&m>0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);console.trace()}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-->0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else{while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.listenerCount=function(emitter,type){var ret;if(!emitter._events||!emitter._events[type])ret=0;else if(isFunction(emitter._events[type]))ret=1;else ret=emitter._events[type].length;return ret};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],Zgz7mW:[function(require,module,exports){var widget=require("./widget");var o=require("observable");var h=require("hyperscript");if("undefined"===typeof console){globals.console={};console.log=function(){};console.error=function(){}}var emitter=widget({style:{height:"400px",width:"200px","border-bottom":"1px dotted black"}});function wrap(name){var log=console[name];console[name]=function(){var args=[].slice.call(arguments);emitter.write(args);log.apply(console,args)}}wrap("log");wrap("error");window.addEventListener("error",function(err){emitter.write([err.stack])});document.body.appendChild(h("div",{style:{background:"white",border:"1px solid black",position:"fixed",right:"20px",bottom:"20px"}},emitter.element,h("div",o.boolean(emitter.show,">","<"),{onclick:function(){emitter.show(!emitter.show())}},{style:{margin:"10px","min-width":"20px","min-height":"20px","text-align":"center"}})));emitter.show(false);module.exports=emitter},{"./widget":13,hyperscript:4,observable:12}],"console-log":[function(require,module,exports){module.exports=require("Zgz7mW")},{}],4:[function(require,module,exports){var split=require("browser-split");var ClassList=require("class-list");var DataSet=require("data-set");module.exports=h;function h(){var args=[].slice.call(arguments),e=null;function item(l){var r;function parseClass(string){var m=split(string,/([\.#]?[a-zA-Z0-9_-]+)/);forEach(m,function(v){var s=v.substring(1,v.length);if(!v)return;if(!e)e=document.createElement(v);else if(v[0]===".")ClassList(e).add(s);else if(v[0]==="#")e.setAttribute("id",s)})}if(l==null);else if("string"===typeof l){if(!e)parseClass(l);else e.appendChild(r=document.createTextNode(l))}else if("number"===typeof l||"boolean"===typeof l||l instanceof Date||l instanceof RegExp){e.appendChild(r=document.createTextNode(l.toString()))}else if(isArray(l))forEach(l,item);else if(isNode(l))e.appendChild(r=l);else if(l instanceof Text)e.appendChild(r=l);else if("object"===typeof l){for(var k in l){if("function"===typeof l[k]){if(/^on\w+/.test(k)){e.addEventListener?e.addEventListener(k.substring(2),l[k]):e.attachEvent(k,l[k])}else{e[k]=l[k]();l[k](function(v){e[k]=v})}}else if(k==="style"){for(var s in l[k])(function(s,v){if("function"===typeof v){e.style.setProperty(s,v());v(function(val){e.style.setProperty(s,val)})}else e.style.setProperty(s,l[k][s])})(s,l[k][s])}else if(k.substr(0,5)==="data-"){DataSet(e)[k.substr(5)]=l[k]}else{e[k]=l[k]}}}else if("function"===typeof l){var v=l();e.appendChild(r=isNode(v)?v:document.createTextNode(v));l(function(v){if(isNode(v)&&r.parentElement)r.parentElement.replaceChild(v,r),r=v;else r.textContent=v})}return r}while(args.length)item(args.shift());return e}function isNode(el){return el&&el.nodeName&&el.nodeType}function isText(el){return el&&el.nodeName==="#text"&&el.nodeType==3}function forEach(arr,fn){if(arr.forEach)return arr.forEach(fn);for(var i=0;i<arr.length;i++)fn(arr[i],i)}function isArray(arr){return Object.prototype.toString.call(arr)=="[object Array]"}},{"browser-split":5,"class-list":6,"data-set":8}],5:[function(require,module,exports){module.exports=function split(undef){var nativeSplit=String.prototype.split,compliantExecNpcg=/()??/.exec("")[1]===undef,self;self=function(str,separator,limit){if(Object.prototype.toString.call(separator)!=="[object RegExp]"){return nativeSplit.call(str,separator,limit)}var output=[],flags=(separator.ignoreCase?"i":"")+(separator.multiline?"m":"")+(separator.extended?"x":"")+(separator.sticky?"y":""),lastLastIndex=0,separator=new RegExp(separator.source,flags+"g"),separator2,match,lastIndex,lastLength;str+="";if(!compliantExecNpcg){separator2=new RegExp("^"+separator.source+"$(?!\\s)",flags)}limit=limit===undef?-1>>>0:limit>>>0;while(match=separator.exec(str)){lastIndex=match.index+match[0].length;if(lastIndex>lastLastIndex){output.push(str.slice(lastLastIndex,match.index));if(!compliantExecNpcg&&match.length>1){match[0].replace(separator2,function(){for(var i=1;i<arguments.length-2;i++){if(arguments[i]===undef){match[i]=undef}}})}if(match.length>1&&match.index<str.length){Array.prototype.push.apply(output,match.slice(1))}lastLength=match[0].length;lastLastIndex=lastIndex;if(output.length>=limit){break}}if(separator.lastIndex===match.index){separator.lastIndex++}}if(lastLastIndex===str.length){if(lastLength||!separator.test("")){output.push("")}}else{output.push(str.slice(lastLastIndex))}return output.length>limit?output.slice(0,limit):output};return self}()},{}],6:[function(require,module,exports){var indexof=require("indexof");module.exports=ClassList;function ClassList(elem){var cl=elem.classList;if(cl){return cl}var classList={add:add,remove:remove,contains:contains,toggle:toggle,toString:$toString,length:0,item:item};return classList;function add(token){var list=getTokens();if(indexof(list,token)>-1){return}list.push(token);setTokens(list)}function remove(token){var list=getTokens(),index=indexof(list,token);if(index===-1){return}list.splice(index,1);setTokens(list)}function contains(token){return indexof(getTokens(),token)>-1}function toggle(token){if(contains(token)){remove(token);return false}else{add(token);return true}}function $toString(){return elem.className}function item(index){var tokens=getTokens();return tokens[index]||null}function getTokens(){var className=elem.className;return filter(className.split(" "),isTruthy)}function setTokens(list){var length=list.length;elem.className=list.join(" ");classList.length=length;for(var i=0;i<list.length;i++){classList[i]=list[i]}delete list[length]}}function filter(arr,fn){var ret=[];for(var i=0;i<arr.length;i++){if(fn(arr[i]))ret.push(arr[i])}return ret}function isTruthy(value){return!!value}},{indexof:7}],7:[function(require,module,exports){var indexOf=[].indexOf;module.exports=function(arr,obj){if(indexOf)return arr.indexOf(obj);for(var i=0;i<arr.length;++i){if(arr[i]===obj)return i}return-1}},{}],8:[function(require,module,exports){var Weakmap=require("weakmap");var Individual=require("individual");var datasetMap=Individual("__DATA_SET_WEAKMAP",Weakmap());module.exports=DataSet;function DataSet(elem){if(elem.dataset){return elem.dataset}var hash=datasetMap.get(elem);if(!hash){hash=createHash(elem);datasetMap.set(elem,hash)}return hash}function createHash(elem){var attributes=elem.attributes;var hash={};if(attributes===null||attributes===undefined){return hash}for(var i=0;i<attributes.length;i++){var attr=attributes[i];if(attr.name.substr(0,5)!=="data-"){continue}hash[attr.name.substr(5)]=attr.value}return hash}},{individual:9,weakmap:11}],9:[function(require,module,exports){var root=require("global");module.exports=Individual;function Individual(key,value){if(root[key]){return root[key]}Object.defineProperty(root,key,{value:value,configurable:true});return value}},{global:10}],10:[function(require,module,exports){(function(global){if(typeof global!=="undefined"){module.exports=global}else if(typeof window!=="undefined"){module.exports=window}}).call(this,typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],11:[function(require,module,exports){void function(global,undefined_,undefined){var getProps=Object.getOwnPropertyNames,defProp=Object.defineProperty,toSource=Function.prototype.toString,create=Object.create,hasOwn=Object.prototype.hasOwnProperty,funcName=/^\n?function\s?(\w*)?_?\(/;function define(object,key,value){if(typeof key==="function"){value=key;key=nameOf(value).replace(/_$/,"")}return defProp(object,key,{configurable:true,writable:true,value:value})}function nameOf(func){return typeof func!=="function"?"":"name"in func?func.name:toSource.call(func).match(funcName)[1]}var Data=function(){var dataDesc={value:{writable:true,value:undefined}},datalock="return function(k){if(k===s)return l}",uids=create(null),createUID=function(){var key=Math.random().toString(36).slice(2);return key in uids?createUID():uids[key]=key},globalID=createUID(),storage=function(obj){if(hasOwn.call(obj,globalID))return obj[globalID];if(!Object.isExtensible(obj))throw new TypeError("Object must be extensible");var store=create(null);defProp(obj,globalID,{value:store});return store};define(Object,function getOwnPropertyNames(obj){var props=getProps(obj);if(hasOwn.call(obj,globalID))props.splice(props.indexOf(globalID),1);return props});function Data(){var puid=createUID(),secret={};this.unlock=function(obj){var store=storage(obj);if(hasOwn.call(store,puid))return store[puid](secret);var data=create(null,dataDesc);defProp(store,puid,{value:new Function("s","l",datalock)(secret,data)});return data}}define(Data.prototype,function get(o){return this.unlock(o).value});define(Data.prototype,function set(o,v){this.unlock(o).value=v});return Data}();var WM=function(data){var validate=function(key){if(key==null||typeof key!=="object"&&typeof key!=="function")throw new TypeError("Invalid WeakMap key")};var wrap=function(collection,value){var store=data.unlock(collection);if(store.value)throw new TypeError("Object is already a WeakMap");store.value=value};var unwrap=function(collection){var storage=data.unlock(collection).value;if(!storage)throw new TypeError("WeakMap is not generic");return storage};var initialize=function(weakmap,iterable){if(iterable!==null&&typeof iterable==="object"&&typeof iterable.forEach==="function"){iterable.forEach(function(item,i){if(item instanceof Array&&item.length===2)set.call(weakmap,iterable[i][0],iterable[i][1])})}};function WeakMap(iterable){if(this===global||this==null||this===WeakMap.prototype)return new WeakMap(iterable);wrap(this,new Data);initialize(this,iterable)}function get(key){validate(key);var value=unwrap(this).get(key);return value===undefined_?undefined:value}function set(key,value){validate(key);unwrap(this).set(key,value===undefined?undefined_:value)}function has(key){validate(key);return unwrap(this).get(key)!==undefined}function delete_(key){validate(key);var data=unwrap(this),had=data.get(key)!==undefined;data.set(key,undefined);return had}function toString(){unwrap(this);return"[object WeakMap]"}try{var src=("return "+delete_).replace("e_","\\u0065"),del=new Function("unwrap","validate",src)(unwrap,validate)}catch(e){var del=delete_}var src=(""+Object).split("Object");var stringifier=function toString(){return src[0]+nameOf(this)+src[1]};define(stringifier,stringifier);var prep={__proto__:[]}instanceof Array?function(f){f.__proto__=stringifier}:function(f){define(f,stringifier)};prep(WeakMap);[toString,get,set,has,del].forEach(function(method){define(WeakMap.prototype,method);prep(method)});return WeakMap}(new Data);var defaultCreator=Object.create?function(){return Object.create(null)}:function(){return{}};function createStorage(creator){var weakmap=new WM;creator||(creator=defaultCreator);function storage(object,value){if(value||arguments.length===2){weakmap.set(object,value)}else{value=weakmap.get(object);if(value===undefined){value=creator(object);weakmap.set(object,value)}}return value}return storage}if(typeof module!=="undefined"){module.exports=WM}else if(typeof exports!=="undefined"){exports.WeakMap=WM}else if(!("WeakMap"in global)){global.WeakMap=WM}WM.createStorage=createStorage;if(global.WeakMap)global.WeakMap.createStorage=createStorage}((0,eval)("this"))},{}],12:[function(require,module,exports){(function(){function bind1(a,b){a(b());b(a)}function bind2(a,b){b(a());a(b);b(a)}function isGet(val){return undefined===val}function isSet(val){return"function"!==typeof val}function all(ary,val){for(var k in ary)ary[k](val)}function remove(ary,item){delete ary[ary.indexOf(item)]}function on(emitter,event,listener){(emitter.on||emitter.addEventListener).call(emitter,event,listener,false)}function off(emitter,event,listener){(emitter.removeListener||emitter.removeEventListener||emitter.off).call(emitter,event,listener,false)}function value(){var _val,listeners=[];return function(val){return isGet(val)?_val:isSet(val)?all(listeners,_val=val):(listeners.push(val),function(){remove(listeners,val)})}}function property(model,key){return function(val){return isGet(val)?model.get(key):isSet(val)?model.set(key,val):(on(model,"change:"+key,val),function(){off(model,"change:"+key,val)})}}function transform(observable,down,up){if("function"!==typeof observable)throw new Error("transform expects an observable");return function(val){return isGet(val)?down(observable()):isSet(val)?observable((up||down)(val)):observable(function(_val){val(down(_val))})}}function not(observable){return transform(observable,function(v){return!v})}function listen(element,event,attr,listener){function onEvent(){listener("function"===typeof attr?attr():element[attr])}on(element,event,onEvent);return function(){off(element,event,onEvent)}}function attribute(element,attr,event){attr=attr||"value";event=event||"input";return function(val){return isGet(val)?element[attr]:isSet(val)?element[attr]=val:listen(element,event,attr,val)}}function select(element){function _attr(){return element[element.selectedIndex].value}function _set(val){for(var i=0;i<element.options.length;i++){if(element.options[i].value==val)element.selectedIndex=i}}return function(val){return isGet(val)?element.options[element.selectedIndex].value:isSet(val)?_set(val):listen(element,"change",_attr,val)}}function toggle(el,up,down){var i=false;return function(val){function onUp(){i||val(i=true)}function onDown(){i&&val(i=false)}return isGet(val)?i:isSet(val)?undefined:(on(el,up,onUp),on(el,down||up,onDown),function(){off(el,up,onUp);off(el,down||up,onDown)})}}function error(message){throw new Error(message)}function compute(observables,compute){function getAll(){return compute.apply(null,observables.map(function(e){return e()}))}return function(val){return isGet(val)?getAll():isSet(val)?error("read-only"):observables.forEach(function(obs){obs(function(){val(getAll())})})}}function boolean(observable,truthy,falsey){return transform(observable,function(val){return val?truthy:falsey},function(val){return val==truthy?true:false})}var exports=value;exports.bind1=bind1;exports.bind2=bind2;exports.value=value;exports.not=not;exports.property=property;exports.input=exports.attribute=attribute;exports.select=select;exports.compute=compute;exports.transform=transform;exports.boolean=boolean;exports.toggle=toggle;exports.hover=function(e){return toggle(e,"mouseover","mouseout")};exports.focus=function(e){return toggle(e,"focus","blur")};if("object"===typeof module)module.exports=exports;else this.observable=exports})()},{}],13:[function(require,module,exports){var EventEmitter=require("events").EventEmitter;var h=require("hyperscript");var o=require("observable");var log=console.log;module.exports=function(opts){opts=opts||{};var emitter=new EventEmitter;var follow=true;opts.max=1e4;opts.margin=opts.margin||30;opts.style=opts.style||{height:"100%",width:"50%"};opts.template=opts.template||function(args){return h("pre",args.map(function(e,i){if(!i)return String(e);try{return JSON.stringify(e,false,2)}catch(e){return String(e)}}).join(" "))};emitter.show=o();var inner=h("div");var logger=h("div",{style:opts.style},{style:{overflow:"scroll",display:o.boolean(emitter.show,"block","none")}},inner);emitter.follow=function(){var el=inner.lastElementChild;el&&el.scrollIntoViewIfNeeded();follow=true};emitter.show(function(v){if(v&&follow)emitter.follow()});emitter.show(true);emitter.end=function(){};emitter.writable=true;emitter.log=emitter.write=function(data){var message=opts.template(data);var bottom=inner.getBoundingClientRect().bottom;var size=logger.getBoundingClientRect().bottom;follow=bottom<size+opts.margin;inner.appendChild(message);if(follow&&emitter.show()){while(inner.clientHeight>opts.max&&inner.children.length){inner.removeChild(inner.firstChild)}message.scrollIntoViewIfNeeded()}return true};emitter.element=logger;return emitter}},{events:1,hyperscript:4,observable:12}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({"s0+nZs":[function(require,module,exports){(function(root,undefined){var lib={};lib.version="0.3.2";lib.settings={currency:{symbol:"$",format:"%s%v",decimal:".",thousand:",",precision:2,grouping:3},number:{precision:0,grouping:3,thousand:",",decimal:"."}};var nativeMap=Array.prototype.map,nativeIsArray=Array.isArray,toString=Object.prototype.toString;function isString(obj){return!!(obj===""||obj&&obj.charCodeAt&&obj.substr)}function isArray(obj){return nativeIsArray?nativeIsArray(obj):toString.call(obj)==="[object Array]"}function isObject(obj){return toString.call(obj)==="[object Object]"}function defaults(object,defs){var key;object=object||{};defs=defs||{};for(key in defs){if(defs.hasOwnProperty(key)){if(object[key]==null)object[key]=defs[key]}}return object}function map(obj,iterator,context){var results=[],i,j;if(!obj)return results;if(nativeMap&&obj.map===nativeMap)return obj.map(iterator,context);for(i=0,j=obj.length;i<j;i++){results[i]=iterator.call(context,obj[i],i,obj)}return results}function checkPrecision(val,base){val=Math.round(Math.abs(val));return isNaN(val)?base:val}function checkCurrencyFormat(format){var defaults=lib.settings.currency.format;if(typeof format==="function")format=format();if(isString(format)&&format.match("%v")){return{pos:format,neg:format.replace("-","").replace("%v","-%v"),zero:format}}else if(!format||!format.pos||!format.pos.match("%v")){return!isString(defaults)?defaults:lib.settings.currency.format={pos:defaults,neg:defaults.replace("%v","-%v"),zero:defaults}}return format}var unformat=lib.unformat=lib.parse=function(value,decimal){if(isArray(value)){return map(value,function(val){return unformat(val,decimal)})}value=value||0;if(typeof value==="number")return value;decimal=decimal||".";var regex=new RegExp("[^0-9-"+decimal+"]",["g"]),unformatted=parseFloat((""+value).replace(/\((.*)\)/,"-$1").replace(regex,"").replace(decimal,"."));return!isNaN(unformatted)?unformatted:0};var toFixed=lib.toFixed=function(value,precision){precision=checkPrecision(precision,lib.settings.number.precision);var power=Math.pow(10,precision);return(Math.round(lib.unformat(value)*power)/power).toFixed(precision)};var formatNumber=lib.formatNumber=function(number,precision,thousand,decimal){if(isArray(number)){return map(number,function(val){return formatNumber(val,precision,thousand,decimal)})}number=unformat(number);var opts=defaults(isObject(precision)?precision:{precision:precision,thousand:thousand,decimal:decimal},lib.settings.number),usePrecision=checkPrecision(opts.precision),negative=number<0?"-":"",base=parseInt(toFixed(Math.abs(number||0),usePrecision),10)+"",mod=base.length>3?base.length%3:0;return negative+(mod?base.substr(0,mod)+opts.thousand:"")+base.substr(mod).replace(/(\d{3})(?=\d)/g,"$1"+opts.thousand)+(usePrecision?opts.decimal+toFixed(Math.abs(number),usePrecision).split(".")[1]:"")};var formatMoney=lib.formatMoney=function(number,symbol,precision,thousand,decimal,format){if(isArray(number)){return map(number,function(val){return formatMoney(val,symbol,precision,thousand,decimal,format)})}number=unformat(number);var opts=defaults(isObject(symbol)?symbol:{symbol:symbol,precision:precision,thousand:thousand,decimal:decimal,format:format},lib.settings.currency),formats=checkCurrencyFormat(opts.format),useFormat=number>0?formats.pos:number<0?formats.neg:formats.zero;return useFormat.replace("%s",opts.symbol).replace("%v",formatNumber(Math.abs(number),checkPrecision(opts.precision),opts.thousand,opts.decimal))};lib.formatColumn=function(list,symbol,precision,thousand,decimal,format){if(!list)return[];var opts=defaults(isObject(symbol)?symbol:{symbol:symbol,precision:precision,thousand:thousand,decimal:decimal,format:format},lib.settings.currency),formats=checkCurrencyFormat(opts.format),padAfterSymbol=formats.pos.indexOf("%s")<formats.pos.indexOf("%v")?true:false,maxLength=0,formatted=map(list,function(val,i){if(isArray(val)){return lib.formatColumn(val,opts)}else{val=unformat(val);var useFormat=val>0?formats.pos:val<0?formats.neg:formats.zero,fVal=useFormat.replace("%s",opts.symbol).replace("%v",formatNumber(Math.abs(val),checkPrecision(opts.precision),opts.thousand,opts.decimal));if(fVal.length>maxLength)maxLength=fVal.length;return fVal}});return map(formatted,function(val,i){if(isString(val)&&val.length<maxLength){return padAfterSymbol?val.replace(opts.symbol,opts.symbol+new Array(maxLength-val.length+1).join(" ")):new Array(maxLength-val.length+1).join(" ")+val}return val})};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports){exports=module.exports=lib}exports.accounting=lib}else if(typeof define==="function"&&define.amd){define([],function(){return lib})}else{lib.noConflict=function(oldAccounting){return function(){root.accounting=oldAccounting;lib.noConflict=undefined;return lib}}(root.accounting);root["accounting"]=lib}})(this)},{}],accounting:[function(require,module,exports){module.exports=require("s0+nZs")},{}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({"hi+lsI":[function(require,module,exports){(function(definition){if(typeof exports==="object"){var Common=require("./lib/common.js");var DayCountBasis=require("./lib/daycountbasis.js");var Bonds=require("./lib/bonds.js");var Depreciation=require("./lib/depreciation.js");var Irr=require("./lib/irr.js");var Loan=require("./lib/loan.js");var Misc=require("./lib/misc.js");var TBill=require("./lib/tbill.js");var Tvm=require("./lib/tvm.js");var OddBonds=require("./lib/oddbonds.js");module.exports=definition(Common,DayCountBasis,Bonds,Depreciation,Irr,Loan,Misc,TBill,Tvm,OddBonds)}else if(typeof define==="function"&&define.amd){requirejs.config({baseUrl:"lib"});define(["common","daycountbasis","bonds","depreciation","irr","loan","misc","tbill","tvm","oddbonds"],definition)}})(function(Common,DayCountBasis,Bonds,Depreciation,Irr,Loan,Misc,TBill,Tvm,OddBonds){var scope=this.Financial={};scope.COUPDAYS=function(settlement,maturity,frequency,basis){return DayCountBasis.COUPDAYS(settlement,maturity,frequency,basis)};scope.COUPPCD=function(settlement,maturity,frequency,basis){return DayCountBasis.COUPPCD(settlement,maturity,frequency,basis)};scope.COUPNCD=function(settlement,maturity,frequency,basis){return DayCountBasis.COUPNCD(settlement,maturity,frequency,basis)};scope.COUPNUM=function(settlement,maturity,frequency,basis){return DayCountBasis.COUPNUM(settlement,maturity,frequency,basis)};scope.COUPDAYSBS=function(settlement,maturity,frequency,basis){return DayCountBasis.COUPDAYSBS(settlement,maturity,frequency,basis)};scope.COUPDAYSNC=function(settlement,maturity,frequency,basis){return DayCountBasis.COUPDAYSNC(settlement,maturity,frequency,basis)};scope.YEARFRAC=function(startDate,endDate,basis){return DayCountBasis.YEARFRAC(startDate,endDate,basis)};scope.ACCRINT=function(issue,first,settlement,rate,par,frequency,basis,method){return Bonds.ACCRINT(issue,first,settlement,rate,par,frequency,basis,method)};scope.ACCRINTM=function(issue,settlement,rate,par,basis){return Bonds.ACCRINTM(issue,settlement,rate,par,basis)};scope.PRICE=function(settlement,maturity,rate,yld,redemption,frequency,basis){return Bonds.PRICE(settlement,maturity,rate,yld,redemption,frequency,basis)};scope.PRICEMAT=function(settlement,maturity,issue,rate,yld,basis){return Bonds.PRICEMAT(settlement,maturity,issue,rate,yld,basis)};scope.YIELDMAT=function(settlement,maturity,issue,rate,pr,basis){return Bonds.YIELDMAT(settlement,maturity,issue,rate,pr,basis)};scope.INTRATE=function(settlement,maturity,investment,redemption,basis){return Bonds.INTRATE(settlement,maturity,investment,redemption,basis)};scope.RECEIVED=function(settlement,maturity,investment,discount,basis){return Bonds.RECEIVED(settlement,maturity,investment,discount,basis)};scope.DISC=function(settlement,maturity,pr,redemption,basis){return Bonds.DISC(settlement,maturity,pr,redemption,basis)};scope.PRICEDISC=function(settlement,maturity,discount,redemption,basis){return Bonds.PRICEDISC(settlement,maturity,discount,redemption,basis)};scope.YIELDDISC=function(settlement,maturity,pr,redemption,basis){return Bonds.YIELDDISC(settlement,maturity,pr,redemption,basis)};scope.DURATION=function(settlement,maturity,coupon,yld,frequency,basis){return Bonds.DURATION(settlement,maturity,coupon,yld,frequency,basis)};scope.MDURATION=function(settlement,maturity,coupon,yld,frequency,basis){return Bonds.MDURATION(settlement,maturity,coupon,yld,frequency,basis)};scope.DB=function(cost,salvage,life,period,month){return Depreciation.DB(cost,salvage,life,period,month)};scope.SLN=function(cost,salvage,life){return Depreciation.SLN(cost,salvage,life)};scope.SYD=function(cost,salvage,life,per){return Depreciation.SYD(cost,salvage,life,per)};scope.DDB=function(cost,salvage,life,period,factor){return Depreciation.DDB(cost,salvage,life,period,factor)};scope.VDB=function(cost,salvage,life,startPeriod,endPeriod,factor,bflag){return Depreciation.VDB(cost,salvage,life,startPeriod,endPeriod,factor,bflag)};scope.AMORLINC=function(cost,datePurchased,firstPeriod,salvage,period,rate,basis){return Depreciation.AMORLINC(cost,datePurchased,firstPeriod,salvage,period,rate,basis)};scope.AMORDEGRC=function(cost,datePurchased,firstPeriod,salvage,period,rate,basis,excelComplaint){return Depreciation.AMORDEGRC(cost,datePurchased,firstPeriod,salvage,period,rate,basis,excelComplaint)};scope.IRR=function(cfs,guess){return Irr.IRR(cfs,guess)};scope.NPV=function(r,cfs){return Irr.NPV(r,cfs)};scope.MIRR=function(cfs,financeRate,reinvestRate){return Irr.MIRR(cfs,financeRate,reinvestRate)};scope.XNPV=function(r,cfs,dates){return Irr.XNPV(r,cfs,dates)};scope.XIRR=function(cfs,dates,guess){return Irr.XIRR(cfs,dates,guess)};scope.IPMT=function(r,per,nper,pv,fv,pd){return Loan.IPMT(r,per,nper,pv,fv,pd)};scope.PPMT=function(r,per,nper,pv,fv,pd){return Loan.PPMT(r,per,nper,pv,fv,pd)};scope.CUMIPMT=function(r,nper,pv,startPeriod,endPeriod,pd){return Loan.CUMIPMT(r,nper,pv,startPeriod,endPeriod,pd)};scope.CUMPRINC=function(r,nper,pv,startPeriod,endPeriod,pd){return Loan.CUMPRINC(r,nper,pv,startPeriod,endPeriod,pd)};scope.ISPMT=function(r,per,nper,pv){return Loan.ISPMT(r,per,nper,pv)};scope.DOLLARDE=function(fractionalDollar,fraction){return Misc.DOLLARDE(fractionalDollar,fraction)
};scope.DOLLARFR=function(fractionalDollar,fraction){return Misc.DOLLARFR(fractionalDollar,fraction)};scope.EFFECT=function(nominalRate,npery){return Misc.EFFECT(nominalRate,npery)};scope.NOMINAL=function(effectRate,npery){return Misc.NOMINAL(effectRate,npery)};scope.TBILLEQ=function(settlement,maturity,discount){return TBill.TBILLEQ(settlement,maturity,discount)};scope.TBILLYIELD=function(settlement,maturity,pr){return TBill.TBILLYIELD(settlement,maturity,pr)};scope.TBILLPRICE=function(settlement,maturity,discount){return TBill.TBILLPRICE(settlement,maturity,discount)};scope.PV=function(r,nper,pmt,fv,pd){return Tvm.PV(r,nper,pmt,fv,pd)};scope.FV=function(r,nper,pmt,pv,pd){return Tvm.FV(r,nper,pmt,pv,pd)};scope.PMT=function(r,nper,pv,fv,pd){return Tvm.PMT(r,nper,pv,fv,pd)};scope.NPER=function(r,pmt,pv,fv,pd){return Tvm.NPER(r,pmt,pv,fv,pd)};scope.RATE=function(nper,pmt,pv,fv,pd,guess){return Tvm.RATE(nper,pmt,pv,fv,pd,guess)};scope.FVSCHEDULE=function(pv,interests){return Tvm.FVSCHEDULE(pv,interests)};scope.ODDFPRICE=function(settlement,maturity,issue,firstCoupon,rate,yld,redemption,frequency,basis){return OddBonds.ODDFPRICE(settlement,maturity,issue,firstCoupon,rate,yld,redemption,frequency,basis)};scope.ODDFYIELD=function(settlement,maturity,issue,firstCoupon,rate,pr,redemption,frequency,basis){return OddBonds.ODDFYIELD(settlement,maturity,issue,firstCoupon,rate,pr,redemption,frequency,basis)};scope.ODDLPRICE=function(settlement,maturity,lastInterest,rate,yld,redemption,frequency,basis){return OddBonds.ODDLPRICE(settlement,maturity,lastInterest,rate,yld,redemption,frequency,basis)};scope.ODDLYIELD=function(settlement,maturity,lastInterest,rate,pr,redemption,frequency,basis){return OddBonds.ODDLYIELD(settlement,maturity,lastInterest,rate,pr,redemption,frequency,basis)};return scope})},{"./lib/bonds.js":3,"./lib/common.js":4,"./lib/daycountbasis.js":5,"./lib/depreciation.js":6,"./lib/irr.js":7,"./lib/loan.js":8,"./lib/misc.js":9,"./lib/oddbonds.js":10,"./lib/tbill.js":11,"./lib/tvm.js":12}],financial:[function(require,module,exports){module.exports=require("hi+lsI")},{}],3:[function(require,module,exports){(function(definition){if(typeof exports==="object"){var moment=require("moment");var Common=require("../lib/common.js");var DayCount=require("../lib/daycountbasis.js");module.exports=definition(moment,Common,DayCount)}else if(typeof define==="function"&&define.amd){define(["moment","common","daycountbasis"],definition)}})(function(moment,Common,DayCount){var scope=this.Bonds={};var getPriceYieldFactors=function(settlement,maturity,frequency,basis){var dc=DayCount.dayCount(basis);var n=dc.CoupNum(settlement,maturity,frequency);var pcd=dc.CoupPCD(settlement,maturity,frequency);var a=dc.DaysBetween(pcd,settlement,DayCount.NumDenumPosition.Numerator);var e=dc.CoupDays(settlement,maturity,frequency);var dsc=e-a;return[n,pcd,a,e,dsc]};var yieldFunc=function(settlement,maturity,rate,pr,redemption,frequency,basis){var priceYieldFactors=getPriceYieldFactors(settlement,maturity,frequency,basis);var n=priceYieldFactors[0];var pcd=priceYieldFactors[1];var a=priceYieldFactors[2];var e=priceYieldFactors[3];var dsr=priceYieldFactors[4];if(n<=1){var par=100;var firstNum=redemption/100+rate/frequency-(par/100+a/e*rate/frequency);var firstDen=par/100+a/e*rate/frequency;return firstNum/firstDen*frequency*e/dsr}else{var f=function(yld){return scope.PRICE(settlement,maturity,rate,yld,redemption,frequency,basis-pr)};return Common.findRoot(f,.05)}};var getMatFactors=function(settlement,maturity,issue,basis){var dc=DayCount.dayCount(basis);var b=dc.DaysInYear(issue,settlement);var dim=dc.DaysBetween(issue,maturity,DayCount.NumDenumPosition.Numerator);var a=dc.DaysBetween(issue,settlement,DayCount.NumDenumPosition.Numerator);var dsm=dim-a;return[b,dim,a,dsm]};var getCommonFactors=function(settlement,maturity,basis){var dc=DayCount.dayCount(basis);var dim=dc.DaysBetween(settlement,maturity,DayCount.NumDenumPosition.Numerator);var b=dc.DaysInYear(settlement,maturity);return[dim,b]};var duration=function(settlement,maturity,coupon,yld,frequency,basis,isMDuration){var dc=DayCount.dayCount(basis);var dbc=dc.CoupDaysBS(settlement,maturity,frequency);var e=dc.CoupDays(settlement,maturity,frequency);var n=dc.CoupNum(settlement,maturity,frequency);var dsc=e-dbc;var x1=dsc/e;var x2=x1+n-1;var x3=yld/frequency+1;var x4=Math.pow(x3,x2);if(x4===0){}var term1=x2*100/x4;var term3=100/x4;var aggrFunction=function(acc,index){var x5=index-1+x1;var x6=Math.pow(x3,x5);if(x6===6){}var x7=100*coupon/frequency/x6;var a=acc[0];var b=acc[1];return[a+x7*x5,b+x7]};var ag=Common.aggrBetween(1,n,aggrFunction,[0,0]);var term2=ag[0];var term4=ag[1];var term5=term1+term2;var term6=term3+term4;if(term6===0){}if(isMDuration===false){return term5/term6/frequency}else{return term5/term6/frequency/x3}};scope.ACCRINT=function(issue,first,settlement,rate,par,frequency,basis,method){if(basis===null||basis===undefined){basis=0}if(method===null||method===undefined){method=true}if(typeof rate!=="number"||typeof par!=="number"||typeof frequency!=="number"||typeof basis!="number"){return"#VALUE!"}if(!moment(issue).isValid()||!moment(first).isValid()||!moment(settlement).isValid()){return"#VALUE!"}if(rate<=0||par<=0){return"#NUM!"}if([1,2,4].indexOf(frequency)===-1){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(moment(issue).diff(moment(settlement))>=0){return"#NUM!"}par=typeof par==="undefined"?0:1e3;var issue=moment(issue);var first=moment(first);var firstInterest=first.clone();var settlement=moment(settlement);var dc=DayCount.dayCount(basis);var freq=frequency;var numMonths=DayCount.freq2months(freq);var numMonthsNeg=-numMonths;var endMonthBond=Common.isLastDayOfMonth(first);if(method===true){method=Common.AccrIntCalcMethod.FromIssueToSettlement}else{method=Common.AccrIntCalcMethod.FromFirstToSettlement}var pcd=null;if(settlement.isAfter(firstInterest)&&method===Common.AccrIntCalcMethod.FromIssueToSettlement){pcd=DayCount.findPcdNcd(firstInterest,settlement,numMonths,basis,endMonthBond)[0]}else{pcd=dc.ChangeMonth(firstInterest,numMonthsNeg,endMonthBond)}var firstDate=issue.isAfter(pcd)?issue:pcd;var days=dc.DaysBetween(firstDate,settlement,DayCount.NumDenumPosition.Numerator);var coupDays=dc.CoupDays(pcd,firstInterest,freq);var aggFunction=function(apcd,ancd){var afirstDate=issue.isAfter(apcd)?issue:apcd;var adays=null;if(basis===DayCount.DayCountBasis.UsPsa30_360){var psaMethod=issue.isAfter(apcd)?DayCount.Method360Us.ModifyStartDate:DayCount.Method360Us.ModifyBothDates;adays=DayCount.dateDiff360Us(afirstDate,ancd,psaMethod)}else{adays=dc.DaysBetween(afirstDate,ancd,DayCount.NumDenumPosition.Numerator)}var acoupDays=null;if(basis===DayCount.DayCountBasis.UsPsa30_360){acoupDays=DayCount.dateDiff360Us(apcd,ancd,DayCount.Method360Us.ModifyBothDates)}else{if(basis===DayCount.DayCountBasis.Actual365){acoupDays=365/freq}else{acoupDays=dc.DaysBetween(apcd,ancd,DayCount.NumDenumPosition.Denumerator)}}var result=null;if(apcd.isAfter(issue)||apcd.isSame(issue)){result=method}else{result=adays/acoupDays}return result};var result=DayCount.datesAggregate1(pcd,issue,numMonthsNeg,basis,aggFunction,days/coupDays,endMonthBond);var a=result[2];return par*rate/freq*a};scope.ACCRINTM=function(issue,settlement,rate,par,basis){if(basis===null||basis===undefined){basis=0}if(typeof rate!=="number"||typeof par!=="number"||typeof basis!=="number"){return"#VALUE!"}if(!moment(issue).isValid()||!moment(settlement).isValid()){return"#VALUE!"}if(rate<=0||par<=0){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(moment(issue).diff(moment(settlement))>=0){return"#NUM!"}issue=moment(issue);settlement=moment(settlement);var dc=DayCount.dayCount(basis);var days=dc.DaysBetween(issue,settlement,DayCount.NumDenumPosition.Numerator);var daysInYear=dc.DaysInYear(issue,settlement);return par*rate*(days/daysInYear)};scope.PRICE=function(settlement,maturity,rate,yld,redemption,frequency,basis){if(basis===null||basis===undefined){basis=0}if(typeof rate!=="number"||typeof yld!=="number"||typeof redemption!=="number"||typeof frequency!=="number"||typeof basis!=="number"){return"#VALUE!"}if(!moment(maturity).isValid()||!moment(settlement).isValid()){return"#VALUE!"}if(rate<0||yld<0){return"#NUM!"}if(redemption<=0){return"#NUM!"}if([1,2,4].indexOf(frequency)===-1){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(moment(settlement).diff(moment(maturity))>=0){return"#NUM!"}settlement=moment(settlement);maturity=moment(maturity);var pyf=getPriceYieldFactors(settlement,maturity,frequency,basis);var n=pyf[0];var pcd=pyf[1];var a=pyf[2];var e=pyf[3];var dsc=pyf[4];var coupon=100*rate/frequency;var accrInt=100*rate/frequency*a/e;var pvFactor=function(k){var base=1+yld/frequency;var exp=k-1+dsc/e;return Math.pow(base,exp)};var pvOfRedemption=redemption/pvFactor(n);var pvOfCoupons=0;for(var k=1;k<=n;k++){pvOfCoupons=pvOfCoupons+coupon/pvFactor(k)}if(n===1){return(redemption+coupon)/(1+dsc/e*yld/frequency)-accrInt}else{return pvOfRedemption+pvOfCoupons-accrInt}};scope.PRICEMAT=function(settlement,maturity,issue,rate,yld,basis){if(basis===null||basis===undefined){basis=0}if(typeof rate!=="number"||typeof yld!=="number"||typeof basis!=="number"){return"#VALUE!"}if(!moment(maturity).isValid()||!moment(settlement).isValid()||!moment(issue).isValid()){return"#VALUE!"}if(rate<0||yld<0){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(moment(settlement).diff(moment(maturity))>=0){return"#NUM!"}settlement=moment(settlement);maturity=moment(maturity);issue=moment(issue);var matFactors=getMatFactors(settlement,maturity,issue,basis);var b=matFactors[0];var dim=matFactors[1];var a=matFactors[2];var dsm=matFactors[3];var num1=100+dim/b*rate*100;var den1=1+dsm/b*yld;var fact2=a/b*rate*100;return num1/den1-fact2};scope.YIELDMAT=function(settlement,maturity,issue,rate,pr,basis){if(basis===null||basis===undefined){basis=0}if(typeof rate!=="number"||typeof pr!=="number"||typeof basis!=="number"){return"#VALUE!"}if(!moment(maturity).isValid()||!moment(settlement).isValid()||!moment(issue).isValid()){return"#VALUE!"}if(rate<0||pr<=0){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(moment(settlement).diff(moment(maturity))>=0){return"#NUM!"}settlement=moment(settlement);maturity=moment(maturity);issue=moment(issue);var matFactors=getMatFactors(settlement,maturity,issue,basis);var b=matFactors[0];var dim=matFactors[1];var a=matFactors[2];var dsm=matFactors[3];var term1=dim/b*rate+1-pr/100-a/b*rate;var term2=pr/100+a/b*rate;var term3=b/dsm;return term1/term2*term3};scope.INTRATE=function(settlement,maturity,investment,redemption,basis){if(basis===null||basis===undefined){basis=0}if(typeof investment!=="number"||typeof redemption!=="number"||typeof basis!=="number"){return"#VALUE!"}if(!moment(maturity).isValid()||!moment(settlement).isValid()){return"#VALUE!"}if(investment<=0||redemption<=0){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(moment(settlement).diff(moment(maturity))>=0){return"#NUM!"}settlement=moment(settlement);maturity=moment(maturity);var commonFactors=getCommonFactors(settlement,maturity,basis);var dim=commonFactors[0];var b=commonFactors[1];return(redemption-investment)/investment*b/dim};scope.RECEIVED=function(settlement,maturity,investment,discount,basis){if(basis===null||basis===undefined){basis=0}if(typeof discount!=="number"||typeof basis!=="number"){return"#VALUE!"}if(!moment(maturity).isValid()||!moment(settlement).isValid()){return"#VALUE!"}if(investment<=0||discount<=0){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(moment(settlement).diff(moment(maturity))>=0){return"#NUM!"}settlement=moment(settlement);maturity=moment(maturity);var commonFactors=getCommonFactors(settlement,maturity,basis);var dim=commonFactors[0];var b=commonFactors[1];var discountFactor=discount*dim/b;return investment/(1-discountFactor)};scope.DISC=function(settlement,maturity,pr,redemption,basis){if(basis===null||basis===undefined){basis=0}if(typeof pr!=="number"||typeof redemption!=="number"||typeof basis!=="number"){return"#VALUE!"}if(!moment(maturity).isValid()||!moment(settlement).isValid()){return"#VALUE!"}if(pr<=0||redemption<=0){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(moment(settlement).diff(moment(maturity))>=0){return"#NUM!"}settlement=moment(settlement);maturity=moment(maturity);var commonFactors=getCommonFactors(settlement,maturity,basis);var dim=commonFactors[0];var b=commonFactors[1];return(-pr/redemption+1)*b/dim};scope.PRICEDISC=function(settlement,maturity,discount,redemption,basis){if(basis===null||basis===undefined){basis=0}if(typeof discount!=="number"||typeof redemption!=="number"||typeof basis!=="number"){return"#VALUE!"}if(!moment(maturity).isValid()||!moment(settlement).isValid()){return"#VALUE!"}if(discount<=0||redemption<=0){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(moment(settlement).diff(moment(maturity))>=0){return"#NUM!"}settlement=moment(settlement);maturity=moment(maturity);var commonFactors=getCommonFactors(settlement,maturity,basis);var dim=commonFactors[0];var b=commonFactors[1];return redemption-discount*redemption*dim/b};scope.YIELDDISC=function(settlement,maturity,pr,redemption,basis){if(basis===null||basis===undefined){basis=0}if(typeof pr!=="number"||typeof redemption!=="number"||typeof basis!=="number"){return"#VALUE!"}if(!moment(maturity).isValid()||!moment(settlement).isValid()){return"#VALUE!"}if(pr<=0||redemption<=0){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(moment(settlement).diff(moment(maturity))>=0){return"#NUM!"}settlement=moment(settlement);maturity=moment(maturity);var commonFactors=getCommonFactors(settlement,maturity,basis);var dim=commonFactors[0];var b=commonFactors[1];return(redemption-pr)/pr*b/dim};scope.DURATION=function(settlement,maturity,coupon,yld,frequency,basis){if(basis===null||basis===undefined){basis=0}if(typeof coupon!=="number"||typeof yld!=="number"||typeof basis!=="number"||typeof frequency!=="number"){return"#VALUE!"}if(!moment(maturity).isValid()||!moment(settlement).isValid()){return"#VALUE!"}if(coupon<0||yld<0){return"#NUM!"}if([1,2,4].indexOf(frequency)===-1){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(moment(settlement).diff(moment(maturity))>=0){return"#NUM!"}settlement=moment(settlement);maturity=moment(maturity);return duration(settlement,maturity,coupon,yld,frequency,basis,false)};scope.MDURATION=function(settlement,maturity,coupon,yld,frequency,basis){if(basis===null||basis===undefined){basis=0}if(typeof coupon!=="number"||typeof yld!=="number"||typeof basis!=="number"||typeof frequency!=="number"){return"#VALUE!"}if(!moment(maturity).isValid()||!moment(settlement).isValid()){return"#VALUE!"}if(coupon<0||yld<0){return"#NUM!"}if([1,2,4].indexOf(frequency)===-1){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(moment(settlement).diff(moment(maturity))>=0){return"#NUM!"}settlement=moment(settlement);maturity=moment(maturity);return duration(settlement,maturity,coupon,yld,frequency,basis,true)};return scope})},{"../lib/common.js":4,"../lib/daycountbasis.js":5,moment:13}],4:[function(require,module,exports){(function(definition){if(typeof exports==="object"){var moment=require("moment");module.exports=definition(moment)}else if(typeof define==="function"&&define.amd){define(["moment"],definition)}})(function(moment){var scope=this.Common={};scope.isLastDayOfMonth=function(date){var lastDay=scope.lastDayOfMonth(date);return lastDay===date.date()};scope.lastDayOfMonth=function(date){return date.daysInMonth()};scope.isLastDayOfFebruary=function(date){var m=date.month();return m===2&&scope.isLastDayOfMonth(date)};var AccrIntCalcMethod={};AccrIntCalcMethod.FromFirstToSettlement=0;AccrIntCalcMethod.FromIssueToSettlement=1;scope.AccrIntCalcMethod=AccrIntCalcMethod;var VdbSwitch={};VdbSwitch.DontSwitchToStraightLine=1;VdbSwitch.SwitchToStraightLine=0;scope.VdbSwitch=VdbSwitch;var PaymentDue={};PaymentDue.EndOfPeriod=0;PaymentDue.BeginningOfPeriod=1;scope.PaymentDue=PaymentDue;scope.rest=function(x){return x-Math.floor(x)};scope.round=function(excelComplaint,x){if(excelComplaint){var k=x.toFixed(13);var k1=parseFloat(k);return Math.round(k1)}else{return Math.round(x)}};var precision=1e-4;scope.areEqual=function(x,y){if(Math.abs(x-y)<precision){return true}else{return false}};scope.log10=function(val){return Math.log(val)/Math.LN10};var fold=function(f,state,source){var index=0;var length=source.length;var value=state;var isValueSet=true;for(;length>index;index++){value=f(value,source[index],index,source)}return value};scope.map=function(f,array){var result=[];var len=array.length;for(var index=0;index<len;index++){var val=f(array[index]);result.push(val)}return result};scope.mapi=function(f,array){var result=[];var len=array.length;for(var index=0;index<len;index++){var val=f(index,array[index]);result.push(val)}return result};scope.map2=function(f,array1,array2){var result=[];var len1=array1.length;var len2=array2.length;var len=len1>=len2?len2:len1;for(var index=0;index<len;index++){var val=f(array1[index],array2[index]);result.push(val)}return result};scope.allValidDates=function(array){for(var i=0;i<array.length;i++){if(!moment(array[i]).isValid()){return false}}return true};scope.allValidNumbers=function(array){for(var i=0;i<array.length;i++){if(typeof array[i]!=="number"&&array[i]!==null){return false}}return true};scope.raisable=function(b,p){return!(1+b<0&&p%1!==0)};scope.idem=function(x){return x};scope.sumBy=function(f,array){var sumList=scope.map(f,array);var sum=0;for(var index=0;index<sumList.length;index++){sum=sum+sumList[index]}return sum};scope.aggrBetween=function(startPeriod,endPeriod,f,initialValue){var s=[];if(startPeriod<=endPeriod){for(var i=startPeriod;i<=endPeriod;i++){s.push(i)}}else{for(var i=startPeriod;i>=endPeriod;i--){s.push(i)}}return fold(f,initialValue,s)};var findBounds=function(f,guess,minBound,maxBound,precision){if(guess<=minBound||guess>=maxBound){return null}var shift=.01;var factor=1.6;var maxTries=60;var adjValueToMin=function(value){return value<=minBound?minBound+precision:value};var adjValueToMax=function(value){return value>=maxBound?maxBound-precision:value};var rfindBounds=function(low,up,tries){tries=tries-1;if(tries===0){return null}var lower=adjValueToMin(low);var upper=adjValueToMax(up);var x=f(lower);var y=f(upper);if(x*y===0){return[lower,upper]}if(x*y<0){return[lower,upper]}if(x*y>0){return rfindBounds(lower+factor*(lower-upper),upper+factor*(upper-lower),tries)}};var low=adjValueToMin(guess-shift);var high=adjValueToMax(guess+shift);return rfindBounds(low,high,maxTries)};var bisection=function(f1,a1,b1,count1,precision1){var maxCount=200;var helper=function(f,a,b,count,precision){if(a===b){return null}var fa=f(a);if(Math.abs(fa)<precision){return a}else{var fb=f(b);if(Math.abs(fb)<precision){return b}else{var newCount=count+1;if(newCount>maxCount){return null}if(fa*fb>0){return null}var midvalue=a+.5*(b-a);var fmid=f(midvalue);if(Math.abs(fmid)<precision){return midvalue}else if(fa*fmid<0){return helper(f,a,midvalue,newCount,precision)}else if(fa*fmid>0){return helper(f,midvalue,b,newCount,precision)}else{return null}}}};return helper(f1,a1,b1,count1,precision1)};var newton=function(f1,x1,count1,precision1){var maxCount=20;var helper=function(f,x,count,precision){var d=function(f,x){return(f(x+precision)-f(x-precision))/(2*precision)};var fx=f(x);var Fx=d(f,x);var newX=x-fx/Fx;if(Math.abs(newX-x)<precision){return newX}else if(count>maxCount){return null}else{return helper(f,newX,count+1,precision)}};return helper(f1,x1,count1,precision1)};scope.findRoot=function(f,guess){var precision=1e-7;var newtValue=newton(f,guess,0,precision);var sameSign=function(n1,n2){return n1*n2>0};if(newtValue!=null&&sameSign(guess,newtValue)){return newtValue}else{var bounds=findBounds(f,guess,-1,Number.MAX_VALUE,precision);var lower=bounds[0];var upper=bounds[1];return bisection(f,lower,upper,0,precision)}};return scope})},{moment:13}],5:[function(require,module,exports){(function(definition){if(typeof exports==="object"){var moment=require("moment");var Common=require("../lib/common.js");module.exports=definition(moment,Common)}else if(typeof define==="function"&&define.amd){define(["moment","common"],definition)}})(function(moment,Common){var scope=this.DayCount={};var UsPsa30_360=0;var ActualActual=1;var Actual360=2;var Actual365=3;var Europe30_360=4;var DayCountBasis={};DayCountBasis.UsPsa30_360=0;DayCountBasis.ActualActual=1;DayCountBasis.Actual360=2;DayCountBasis.Actual365=3;DayCountBasis.Europe30_360=4;scope.DayCountBasis=DayCountBasis;var Method360Us={};Method360Us.ModifyStartDate=0;Method360Us.ModifyBothDates=1;scope.Method360Us=Method360Us;var NumDenumPosition={};NumDenumPosition.Denumerator=0;NumDenumPosition.Numerator=1;scope.NumDenumPosition=NumDenumPosition;scope.dateDiff360=function(startDate,endDate){var startDate=moment(startDate);var endDate=moment(endDate);var sDay=startDate.date();var sMonth=startDate.month();var sYear=startDate.year();var eDay=endDate.date();var eMonth=endDate.month();var eYear=endDate.year();return(eYear-sYear)*360+(eMonth-sMonth)*30+(eDay-sDay)};scope.dateDiff365=function(startDate,endDate){var sDay=startDate.date();var sMonth=startDate.month();var sYear=startDate.year();var eDay=endDate.date();var eMonth=endDate.month();var eYear=endDate.year();var sd1=sDay,sm1=sMonth,sy1=sYear,ed1=eDay,em1=eMonth,ey1=eYear;var startDate1=startDate.clone(),endDate1=endDate.clone();if(sd1>28&&sm1===2){sd1=28}if(ed1>28&&em1===2){ed1=28}var startd=new moment(new Date(sy1,sm1,sd1));var endd=new moment(new Date(ey1,em1,ed1));return(ey1-sy1)*365+endd.diff(startd,"days")};scope.dateDiff360Us=function(startDate,endDate,method360){var sDay=startDate.date();var sMonth=startDate.month();var sYear=startDate.year();var eDay=endDate.date();var eMonth=endDate.month();var eYear=endDate.year();var sd1=sDay,sm1=sMonth,sy1=sYear,ed1=eDay,em1=eMonth,ey1=eYear;var startDate1=startDate.clone(),endDate1=endDate.clone();if(Common.isLastDayOfFebruary(endDate1)&&(Common.isLastDayOfFebruary(startDate1)||method360===Method360Us.ModifyStartDate)){ed1=30}if(ed1===31&&(sd1>=30||method360===Method360Us.ModifyBothDates)){ed1=30}if(sd1===31){sd1=30}if(Common.isLastDayOfFebruary(startDate1)){sd1=30}var d1=moment(new Date(sy1,sm1,sd1));var d2=moment(new Date(ey1,em1,ed1));return scope.dateDiff360(d1,d2)};scope.dateDiff360Eu=function(startDate,endDate){var sDay=startDate.date();var sMonth=startDate.month();var sYear=startDate.year();var eDay=endDate.date();var eMonth=endDate.month();var eYear=endDate.year();var sd1=sDay,sm1=sMonth,sy1=sYear,ed1=eDay,em1=eMonth,ey1=eYear;var startDate1=startDate.clone(),endDate1=endDate.clone();if(sd1===31){sd1=30}if(ed1===31){ed1=30}var sDate=new moment(new Date(sy1,sm1,sd1));var eDate=new moment(new Date(ey1,em1,ed1));return scope.dateDiff360(sDate,eDate)};var fUsPsa30_360=function(){var obj={};obj.CoupDays=function(settl,mat,freq){return 360/freq};obj.CoupPCD=function(settl,mat,freq){return scope.findPreviousCouponDate(settl,mat,freq,DayCountBasis.UsPsa30_360)};obj.CoupNCD=function(settl,mat,freq){return scope.findNextCouponDate(settl,mat,freq,DayCountBasis.UsPsa30_360)};obj.CoupNum=function(settl,mat,freq){return scope.numberOfCoupons(settl,mat,freq,DayCountBasis.UsPsa30_360)};obj.CoupDaysBS=function(settl,mat,freq){var cpcd=obj.CoupPCD(settl,mat,freq);return scope.dateDiff360Us(cpcd,settl,Method360Us.ModifyStartDate)};obj.CoupDaysNC=function(settl,mat,freq){var pdc=scope.findPreviousCouponDate(settl,mat,freq,DayCountBasis.UsPsa30_360);var ndc=scope.findNextCouponDate(settl,mat,freq,DayCountBasis.UsPsa30_360);var totDaysInCoup=scope.dateDiff360Us(pdc,ndc,Method360Us.ModifyBothDates);var daysToSettl=scope.dateDiff360Us(pdc,settl,Method360Us.ModifyStartDate);return totDaysInCoup-daysToSettl};obj.DaysBetween=function(issue,settl,position){return scope.dateDiff360Us(issue,settl,Method360Us.ModifyStartDate)};obj.DaysInYear=function(issue,settl){return 360};obj.ChangeMonth=function(date,months,returnLastDay){return scope.changeMonth(date,months,UsPsa30_360,returnLastDay)};return obj}();var fEurope30_360=function(){var obj={};obj.CoupDays=function(settl,mat,freq){return 360/freq};obj.CoupPCD=function(settl,mat,freq){return scope.findPreviousCouponDate(settl,mat,freq,DayCountBasis.Europ30_360)};obj.CoupNCD=function(settl,mat,freq){return scope.findNextCouponDate(settl,mat,freq,DayCountBasis.Europ30_360)};obj.CoupNum=function(settl,mat,freq){return scope.numberOfCoupons(settl,mat,freq,DayCountBasis.Europ30_360)};obj.CoupDaysBS=function(settl,mat,freq){var cpcd=obj.CoupPCD(settl,mat,freq);return scope.dateDiff360Eu(cpcd,settl)};obj.CoupDaysNC=function(settl,mat,freq){var cncd=obj.CoupNCD(settl,mat,freq);return scope.dateDiff360Eu(settl,cncd)};obj.DaysBetween=function(issue,settl,position){return scope.dateDiff360Eu(issue,settl)};obj.DaysInYear=function(issue,settl){return 360};obj.ChangeMonth=function(date,months,returnLastDay){return scope.changeMonth(date,months,Europe30_360,returnLastDay)};return obj}();var fActual360=function(){var obj={};obj.CoupDays=function(settl,mat,freq){return 360/freq};obj.CoupPCD=function(settl,mat,freq){return scope.findPreviousCouponDate(settl,mat,freq,DayCountBasis.Actual360)};obj.CoupNCD=function(settl,mat,freq){return scope.findNextCouponDate(settl,mat,freq,DayCountBasis.Actual360)};obj.CoupNum=function(settl,mat,freq){return scope.numberOfCoupons(settl,mat,freq,DayCountBasis.Actual360)};obj.CoupDaysBS=function(settl,mat,freq){var cpcd=obj.CoupPCD(settl,mat,freq);return settl.diff(cpcd,"days")};obj.CoupDaysNC=function(settl,mat,freq){var cncd=obj.CoupNCD(settl,mat,freq);return cncd.diff(settl,"days")};obj.DaysBetween=function(issue,settl,position){if(position===NumDenumPosition.Numerator){return settl.diff(issue,"days")}else{return scope.dateDiff360Us(issue,settl,Method360Us.ModifyStartDate)}};obj.DaysInYear=function(issue,settl){return 360};obj.ChangeMonth=function(date,months,returnLastDay){return scope.changeMonth(date,months,Actual360,returnLastDay)};return obj}();var fActual365=function(){var obj={};obj.CoupDays=function(settl,mat,freq){return 365/freq};obj.CoupPCD=function(settl,mat,freq){return scope.findPreviousCouponDate(settl,mat,freq,DayCountBasis.Actual365)};obj.CoupNCD=function(settl,mat,freq){return scope.findNextCouponDate(settl,mat,freq,DayCountBasis.Actual365)};obj.CoupNum=function(settl,mat,freq){return scope.numberOfCoupons(settl,mat,freq,DayCountBasis.Actual365)};obj.CoupDaysBS=function(settl,mat,freq){var cpcd=obj.CoupPCD(settl,mat,freq);return settl.diff(cpcd,"days")};obj.CoupDaysNC=function(settl,mat,freq){var cncd=obj.CoupNCD(settl,mat,freq);return cncd.diff(settl,"days")};obj.DaysBetween=function(issue,settl,position){if(position==NumDenumPosition.Numerator){return settl.diff(issue,"days")}else{return scope.dateDiff365(issue,settl)}};obj.DaysInYear=function(issue,settl){return 365};obj.ChangeMonth=function(date,months,returnLastDay){return scope.changeMonth(date,months,Actual365,returnLastDay)};return obj}();scope.actualCoupDays=function(settl,mat,freq){var pcd=scope.findPreviousCouponDate(settl,mat,freq,DayCountBasis.ActualActual);var ncd=scope.findNextCouponDate(settl,mat,freq,DayCountBasis.ActualActual);return ncd.diff(pcd,"days")};var fActualActual=function(){var obj={};obj.CoupDays=function(settl,mat,freq){return scope.actualCoupDays(settl,mat,freq)};obj.CoupPCD=function(settl,mat,freq){return scope.findPreviousCouponDate(settl,mat,freq,DayCountBasis.ActualActual)};obj.CoupNCD=function(settl,mat,freq){return scope.findNextCouponDate(settl,mat,freq,DayCountBasis.ActualActual)};obj.CoupNum=function(settl,mat,freq){return scope.numberOfCoupons(settl,mat,freq,DayCountBasis.ActualActual)};obj.CoupDaysBS=function(settl,mat,freq){var cpcd=obj.CoupPCD(settl,mat,freq);return settl.diff(cpcd,"days")};obj.CoupDaysNC=function(settl,mat,freq){var cncd=obj.CoupNCD(settl,mat,freq);return cncd.diff(settl,"days")};obj.DaysBetween=function(issue,settl,position){return settl.diff(issue,"days")};obj.DaysInYear=function(issue,settl){if(!scope.lessOrEqualToAYearApart(issue,settl)){var totalYears=settl.year()-issue.year()+1;var d1=moment(new Date(issue.year(),1,1));var d2=moment(new Date(settl.year()+1,1,1));var totalDays=d2.diff(d1,"days");return totalDays/totalYears}else{if(scope.considerAsBisestile(issue,settl)){return 366}else{return 365}}};obj.ChangeMonth=function(date,months,returnLastDay){return scope.changeMonth(date,months,DayCountBasis.ActualActual,returnLastDay)};return obj}();scope.DayCounts=[fUsPsa30_360,fActualActual,fActual360,fActual365,fEurope30_360];scope.dayCount=function(basis){if(basis>=0&&basis<=4){return scope.DayCounts[basis]}return null};scope.freq2months=function(freq){return 12/freq};scope.isLastDayOfMonthBasis=function(date,basis){var d=date.date();return Common.isLastDayOfMonth(date)||d===30&&basis===UsPsa30_360};scope.changeMonth=function(date,numMonths,basis,returnLastDay){var origDate=date.clone();var newDate=origDate.add("months",numMonths);var lastDay=Common.lastDayOfMonth(newDate);if(returnLastDay){return moment(new Date(newDate.year(),newDate.month(),lastDay))}else{return newDate}};scope.noActionDates=function(d1,d2){return 0};scope.datesAggregate1=function(startDate,endDate,numMonths,basis,f,acc,returnLastMonth){var frontDate=startDate.clone();var trailingDate=endDate.clone();var s1=frontDate.isAfter(endDate)||frontDate.isSame(endDate);var s2=endDate.isAfter(frontDate)||endDate.isSame(frontDate);var stop=numMonths>0?s1:s2;while(stop===false){trailingDate=frontDate;frontDate=scope.changeMonth(frontDate,numMonths,basis,returnLastMonth);var func=f(frontDate,trailingDate);acc=acc+func;s1=frontDate.isAfter(endDate)||frontDate.isSame(endDate);s2=endDate.isAfter(frontDate)||endDate.isSame(frontDate);stop=numMonths>0?s1:s2}return[frontDate,trailingDate,acc]};scope.findPcdNcd=function(startDate,endDate,numMonths,basis,returnLastMonth){var result=scope.datesAggregate1(startDate,endDate,numMonths,basis,scope.noActionDates,0,returnLastMonth);return[result[0],result[1]]};scope.findCouponDates=function(settl,mat,freq,basis){var endMonth=Common.isLastDayOfMonth(mat);var numMonths=-scope.freq2months(freq);return scope.findPcdNcd(mat,settl,numMonths,basis,endMonth)};scope.findPreviousCouponDate=function(settl,mat,freq,basis){return scope.findCouponDates(settl,mat,freq,basis)[0]};scope.findNextCouponDate=function(settl,mat,freq,basis){return scope.findCouponDates(settl,mat,freq,basis)[1]};scope.numberOfCoupons=function(settl,mat,freq,basis){var pcdate=scope.findPreviousCouponDate(settl,mat,freq,basis);var pcy=pcdate.year();var pcm=pcdate.month();var my=mat.year();var mm=mat.month();var months=(my-pcy)*12+(mm-pcm);return months*freq/12};scope.lessOrEqualToAYearApart=function(date1,date2){var y1=date1.year(),y2=date2.year();var m1=date1.month(),m2=date2.month();var d1=date1.date(),d2=date2.date();return y1===y2||y2===y1+1&&(m1>m2||m1===m2&&d1>=d2)};scope.isFeb29BetweenConsecutiveYears=function(date1,date2){var y1=date1.year(),y2=date2.year();var m1=date1.month(),m2=date2.month();var d1=date1.date(),d2=date2.date();if(y1===y2&&date1.isLeapYear()){return m1<=2&&m2>2}if(y1===y2){return false}if(y2===y1+1){if(date1.isLeapYear()){return m1<=2}else{if(date2.isLeapYear()){return m2>2}else{return false}}}else{return false}};scope.considerAsBisestile=function(date1,date2){var y1=date1.year(),y2=date2.year();var m1=date1.month(),m2=date2.month();var d1=date1.date(),d2=date2.date();return y1===y2&&date1.isLeapYear()||m2===2&&d2===29||scope.isFeb29BetweenConsecutiveYears(date1,date2)};scope.COUPDAYS=function(settlement,maturity,frequency,basis){if(basis===null||basis===undefined){basis=0}if(typeof frequency!=="number"||typeof basis!=="number"){return"#VALUE!"}if(!moment(settlement).isValid()||!moment(maturity).isValid()){return"#VALUE!"
}if([1,2,4].indexOf(frequency)===-1){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}maturity=moment(maturity);settlement=moment(settlement);if(!maturity.isAfter(settlement)){return"#NUM!"}var dc=DayCount.dayCount(basis);return dc.CoupDays(settlement,maturity,frequency)};scope.COUPPCD=function(settlement,maturity,frequency,basis){if(basis===null||basis===undefined){basis=0}if(typeof frequency!=="number"||typeof basis!=="number"){return"#VALUE!"}if(!moment(settlement).isValid()||!moment(maturity).isValid()){return"#VALUE!"}if([1,2,4].indexOf(frequency)===-1){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}maturity=moment(maturity);settlement=moment(settlement);if(!maturity.isAfter(settlement)){return"#NUM!"}var dc=DayCount.dayCount(basis);return dc.CoupPCD(settlement,maturity,frequency)};scope.COUPNCD=function(settlement,maturity,frequency,basis){if(basis===null||basis===undefined){basis=0}if(typeof frequency!=="number"||typeof basis!=="number"){return"#VALUE!"}if(!moment(settlement).isValid()||!moment(maturity).isValid()){return"#VALUE!"}if([1,2,4].indexOf(frequency)===-1){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}maturity=moment(maturity);settlement=moment(settlement);if(!maturity.isAfter(settlement)){return"#NUM!"}var dc=DayCount.dayCount(basis);return dc.CoupNCD(settlement,maturity,frequency)};scope.COUPNUM=function(settlement,maturity,frequency,basis){if(basis===null||basis===undefined){basis=0}if(typeof frequency!=="number"||typeof basis!=="number"){return"#VALUE!"}if(!moment(settlement).isValid()||!moment(maturity).isValid()){return"#VALUE!"}if([1,2,4].indexOf(frequency)===-1){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}maturity=moment(maturity);settlement=moment(settlement);if(!maturity.isAfter(settlement)){return"#NUM!"}var dc=DayCount.dayCount(basis);return dc.CoupNum(settlement,maturity,frequency)};scope.COUPDAYSBS=function(settlement,maturity,frequency,basis){if(basis===null||basis===undefined){basis=0}if(typeof frequency!=="number"||typeof basis!=="number"){return"#VALUE!"}if(!moment(settlement).isValid()||!moment(maturity).isValid()){return"#VALUE!"}if([1,2,4].indexOf(frequency)===-1){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}maturity=moment(maturity);settlement=moment(settlement);if(!maturity.isAfter(settlement)){return"#NUM!"}var dc=DayCount.dayCount(basis);return dc.CoupDaysBS(settlement,maturity,frequency)};scope.COUPDAYSNC=function(settlement,maturity,frequency,basis){if(basis===null||basis===undefined){basis=0}if(typeof frequency!=="number"||typeof basis!=="number"){return"#VALUE!"}if(!moment(settlement).isValid()||!moment(maturity).isValid()){return"#VALUE!"}if([1,2,4].indexOf(frequency)===-1){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}maturity=moment(maturity);settlement=moment(settlement);if(!maturity.isAfter(settlement)){return"#NUM!"}var dc=DayCount.dayCount(basis);return dc.CoupDaysNC(settlement,maturity,frequency)};scope.YEARFRAC=function(startDate,endDate,basis){if(basis===null||basis===undefined){basis=0}if(typeof basis!=="number"){return"#VALUE!"}if(!moment(startDate).isValid()||!moment(endDate).isValid()){return"#VALUE!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}startDate=moment(startDate);endDate=moment(endDate);if(!endDate.isAfter(startDate)){return"#NUM!"}var dc=DayCount.dayCount(basis);return dc.DaysBetween(startDate,endDate,DayCount.NumDenumPosition.Numerator)/dc.DaysInYear(startDate,endDate)};return scope})},{"../lib/common.js":4,moment:13}],6:[function(require,module,exports){(function(definition){if(typeof exports==="object"){var moment=require("moment");var Common=require("../lib/common.js");var DayCount=require("../lib/daycountbasis.js");module.exports=definition(moment,Common,DayCount)}else if(typeof define==="function"&&define.amd){define(["moment","common","daycountbasis"],definition)}})(function(moment,Common,DayCount){var scope=this.Depreciation={};var deprRate=function(cost,salvage,life){var val=1-Math.pow(salvage/cost,1/life);return parseFloat(val.toFixed(3))};var deprForPeriod=function(cost,totDepr,rate){return(cost-totDepr)*rate};var deprForFirstPeriod=function(cost,rate,month){return cost*rate*month/12};var deprForLastPeriod=function(cost,totDepr,rate,month){return(cost-totDepr)*rate*(12-month)/12};var db=function(cost,salvage,life,period,month){var rate=deprRate(cost,salvage,life);var per=0;var totDepr=0;while(per<period){if(per===0){var depr=deprForFirstPeriod(cost,rate,month);if(Math.floor(period)<=1){return depr}else{totDepr=depr;per=per+1}}else{if(period<=life){if(per===Math.floor(period)-1){return deprForPeriod(cost,totDepr,rate)}else if(per===Math.floor(life)-1){return deprForLastPeriod(cost,totDepr,rate,month)}else{var depr=deprForPeriod(cost,totDepr,rate);totDepr=totDepr+depr}}else{if(per===Math.floor(period)-1){return deprForLastPeriod(cost,totDepr,rate,month)}else{var depr=deprForPeriod(cost,totDepr,rate);totDepr=totDepr+depr}}per=per+1}}};var sln=function(cost,salvage,life){return(cost-salvage)/life};var syd=function(cost,salvage,life,per){return(cost-salvage)*(life-per+1)*2/(life*(life+1))};var totalDepr=function(cost,salvage,life,period,factor,straightLine){var _ddb=function(totDepr,per){var frac=Common.rest(period);var ddbDeprFormula=function(totDepr){return Math.min((cost-totDepr)*(factor/life),cost-salvage-totDepr)};var slnDeprFormula=function(totDepr,aPeriod){return scope.SLN(cost-totDepr,salvage,life-aPeriod)};var ddbDepr=ddbDeprFormula(totDepr);var slnDepr=slnDeprFormula(totDepr,per);var isSln=straightLine&&ddbDepr<slnDepr;var depr=isSln===true?slnDepr:ddbDepr;var newTotalDepr=totDepr+depr;if(Math.floor(period)===0){return newTotalDepr*frac}else if(Math.floor(per)===Math.floor(period)-1){var ddbDeprNextPeriod=ddbDeprFormula(newTotalDepr);var slnDeprNextPeriod=slnDeprFormula(newTotalDepr,per+1);var isSlnNextPeriod=straightLine&&ddbDeprNextPeriod<slnDeprNextPeriod;var deprNextPeriod=null;if(isSlnNextPeriod){if(Math.floor(period)===Math.floor(life)){deprNextPeriod=0}else{deprNextPeriod=slnDeprNextPeriod}}else{deprNextPeriod=ddbDeprNextPeriod}return newTotalDepr+deprNextPeriod*frac}else{return _ddb(newTotalDepr,per+1)}};return _ddb(0,0)};var deprBetweenPeriods=function(cost,salvage,life,startPeriod,endPeriod,factor,straightLine){return totalDepr(cost,salvage,life,endPeriod,factor,straightLine)-totalDepr(cost,salvage,life,startPeriod,factor,straightLine)};var ddb=function(cost,salvage,life,period,factor){if(period>=2){return deprBetweenPeriods(cost,salvage,life,period-1,period,factor,false)}else{return totalDepr(cost,salvage,life,period,factor,false)}};var vdb=function(cost,salvage,life,startPeriod,endPeriod,factor,bflag){if(bflag===Common.VdbSwitch.DontSwitchToStraightLine){return deprBetweenPeriods(cost,salvage,life,startPeriod,endPeriod,factor,false)}else{return deprBetweenPeriods(cost,salvage,life,startPeriod,endPeriod,factor,true)}};var daysInYear=function(date,basis){if(basis===DayCount.DayCountBasis.ActualActual){if(date.isLeapYear()){return 366}else{return 365}}else{var dc=DayCount.dayCount(basis);return dc.DaysInYear(date,date)}};var firstDeprLinc=function(cost,datePurch,firstP,salvage,rate,assLife,basis){var fix29February=function(d1){var y=d1.year();var m=d1.month();var d=d1.date();if((basis===DayCount.DayCountBasis.ActualActual||basis===DayCount.DayCountBasis.Actual365)&&d1.isLeapYear()&&m===2&&d>=28){return moment(new Date(y,m,28))}else{return d1}};var dc=DayCount.dayCount(basis);var daysInYr=daysInYear(datePurch,basis);var datePurchased=fix29February(datePurch);var firstPeriod=fix29February(firstP);var firstLen=dc.DaysBetween(datePurchased,firstPeriod,DayCount.NumDenumPosition.Numerator);var firstDeprTemp=firstLen/daysInYr*rate*cost;var firstDepr=firstDeprTemp===0?cost*rate:firstDeprTemp;var assetLife=firstDeprTemp===0?assLife:assLife+1;var availDepr=cost-salvage;if(firstDepr>availDepr){return[availDepr,assetLife]}else{return[firstDepr,assetLife]}};var amorlinc=function(cost,datePurchased,firstPeriod,salvage,period,rate,basis){var assetLifeTemp=Math.ceil(1/rate);var findDepr=function(countedPeriod,depr,availDepr){if(countedPeriod>period){return depr}else{var depr=depr>availDepr?availDepr:depr;var availDeprTemp=availDepr-depr;var availDepr=availDeprTemp<0?0:availDeprTemp;return findDepr(countedPeriod+1,depr,availDepr)}};if(cost===salvage||period>assetLifeTemp){return 0}else{var firstDepr=firstDeprLinc(cost,datePurchased,firstPeriod,salvage,rate,assetLifeTemp,basis)[0];if(period===0){return firstDepr}else{return findDepr(1,rate*cost,cost-salvage-firstDepr)}}};var deprCoeff=function(assetLife){var between=function(x1,x2){return assetLife>=x1&&assetLife<=x2};if(between(3,4)){return 1.5}else if(between(5,6)){return 2}else if(assetLife>6){return 2.5}else{return 1}};var amordegrc=function(cost,datePurchased,firstPeriod,salvage,period,rate,basis,excelComplaint){var assLife=Math.ceil(1/rate);if(cost===salvage||period>assLife){return 0}else{var dCoeff=deprCoeff(assLife);var deprR=rate*dCoeff;var fdl=firstDeprLinc(cost,datePurchased,firstPeriod,salvage,deprR,assLife,basis);var fDeprLinc=fdl[0];var assetLife=fdl[1];var firstDepr=Common.round(excelComplaint,fDeprLinc);var findDepr=function(countedPeriod,depr,deprRate,remainCost){if(countedPeriod>period){return Common.round(excelComplaint,depr)}else{var countedPeriod=countedPeriod+1;var calcT=assetLife-countedPeriod;var deprTemp=Common.areEqual(calcT,2)?remainCost*.5:deprRate*remainCost;var deprRate=Common.areEqual(calcT,2)?1:deprRate;var depr=null;if(remainCost<salvage){depr=remainCost-salvage<0?0:remainCost-salvage}else{return deprTemp}var remainCost=remainCost-depr;return findDepr(countedPeriod,depr,deprRate,remainCost)}};if(period===0){return firstDepr}else{return findDepr(1,0,deprR,cost-firstDepr)}}};scope.DB=function(cost,salvage,life,period,month){if(month===null||month===undefined){month=12}if(typeof cost!=="number"||typeof salvage!=="number"||typeof life!=="number"||typeof period!=="number"||typeof month!=="number"){return"#VALUE!"}if(cost<0||salvage<0||life<=0||month<=0||period<=0){return"#NUM!"}if(month>12){return"#NUM!"}return db(cost,salvage,life,period,month)};scope.SLN=function(cost,salvage,life){if(typeof cost!=="number"||typeof salvage!=="number"||typeof life!=="number"){return"#VALUE"}if(cost<0||salvage<0||life<=0){return"#NUM!"}return sln(cost,salvage,life)};scope.SYD=function(cost,salvage,life,per){if(typeof cost!=="number"||typeof salvage!=="number"||typeof life!=="number"||typeof per!=="number"){return"#VALUE!"}if(cost<0||salvage<0||life<=0||per<=0){return"#NUM!"}return syd(cost,salvage,life,per)};scope.DDB=function(cost,salvage,life,period,factor){if(factor===null||factor===undefined){factor=2}if(typeof cost!=="number"||typeof salvage!=="number"||typeof life!=="number"||typeof period!=="number"||typeof factor!=="number"){return"#VALUE!"}if(cost<0||salvage<0||life<=0||factor<=0||period<=0){return"#NUM!"}if(period===0){return Math.min(cost*(factor/life),cost-salvage)}else{return ddb(cost,salvage,life,period,factor)}};scope.VDB=function(cost,salvage,life,startPeriod,endPeriod,factor,bflag){if(factor===null||factor===undefined){factor=2}if(bflag===null||bflag===undefined){bflag=false}if(typeof cost!=="number"||typeof salvage!=="number"||typeof life!=="number"||typeof startPeriod!=="number"||typeof endPeriod!=="number"||typeof factor!=="number"||typeof bflag!=="boolean"){return"#VALUE!"}if(cost<0||salvage<0||life<=0||factor<=0||endPeriod<=0){return"#NUM!"}return vdb(cost,salvage,life,startPeriod,endPeriod,factor,bflag)};scope.AMORLINC=function(cost,datePurchased,firstPeriod,salvage,period,rate,basis){if(basis===null||basis===undefined){basis=0}if(typeof cost!=="number"||typeof salvage!=="number"||typeof period!=="number"||typeof rate!=="number"||typeof basis!=="number"){return"#VALUE"}if(!moment(datePurchased).isValid()||!moment(firstPeriod).isValid()){return"#VALUE!"}if(cost<0||salvage<0||period<0||rate<0){return"#NUM"}if(basis===2){return"#NUM"}datePurchased=moment(datePurchased);firstPeriod=moment(firstPeriod);return amorlinc(cost,datePurchased,firstPeriod,salvage,period,rate,basis)};scope.AMORDEGRC=function(cost,datePurchased,firstPeriod,salvage,period,rate,basis,excelComplaint){if(basis===null||basis===undefined){basis=0}if(typeof cost!=="number"||typeof salvage!=="number"||typeof period!=="number"||typeof rate!=="number"||typeof basis!=="number"){return"#VALUE"}if(!moment(datePurchased).isValid()||!moment(firstPeriod).isValid()){return"#VALUE!"}if(cost<0||salvage<0||period<0||rate<0){return"#NUM"}if(basis===2){return"#NUM"}datePurchased=moment(datePurchased);firstPeriod=moment(firstPeriod);return amordegrc(cost,datePurchased,firstPeriod,salvage,period,rate,basis,excelComplaint)};return scope})},{"../lib/common.js":4,"../lib/daycountbasis.js":5,moment:13}],7:[function(require,module,exports){(function(definition){if(typeof exports==="object"){var moment=require("moment");var Common=require("../lib/common.js");var Tvm=require("../lib/tvm.js");module.exports=definition(moment,Common,Tvm)}else if(typeof define==="function"&&define.amd){define(["moment","common","tvm"],definition)}})(function(moment,Common,Tvm){var scope=this.Irr={};var pvFactor=Tvm.pvFactor;var npv=function(r,cfs){var f=function(i,cf){return cf*pvFactor(r,i+1)};return Common.sumBy(Common.idem,Common.mapi(f,cfs))};var irr=function(cfs,guess){var f=function(r){return npv(r,cfs)};return Common.findRoot(f,guess)};var mirr=function(cfs,financeRate,reinvestRate){var n=cfs.length;var fp=function(cf){return cf>0?cf:0};var fn=function(cf){return cf<0?cf:0};var positives=Common.map(fp,cfs);var negatives=Common.map(fn,cfs);var num=-npv(reinvestRate,positives)*Math.pow(1+reinvestRate,n);var denom=npv(financeRate,negatives)*(1+financeRate);return Math.pow(num/denom,1/(n-1))-1};var xnpv=function(r,cfs,dates){var d0=dates[0];var f=function(d,cf){var diff=d.diff(d0,"days");return cf/Math.pow(1+r,diff/365)};return Common.sumBy(Common.idem,Common.map2(f,dates,cfs))};var xirr=function(cfs,dates,guess){var f=function(r){return xnpv(r,cfs,dates)};return Common.findRoot(f,guess)};var validCfs=function(cfs){var _validCfs=function(cfs,pos,neg){if(pos===true&&neg===true){return true}else{if(cfs.length===0){return false}else{var h=cfs[0];var t=cfs.slice(1,cfs.length);if(h>0){return _validCfs(t,true,neg)}else{return _validCfs(t,pos,true)}}}};return _validCfs(cfs,false,false)};scope.IRR=function(cfs,guess){if(guess===null||guess===undefined){guess=.1}if(typeof guess!=="number"){return"#VALUE!"}if(!validCfs(cfs)){return"#NUM!"}return irr(cfs,guess)};scope.NPV=function(r,cfs){if(typeof r!=="number"){return"#VALUE!"}if(r===-1){return"#NUM!"}return npv(r,cfs)};scope.MIRR=function(cfs,financeRate,reinvestRate){if(typeof financeRate!=="number"||typeof reinvestRate!=="number"){return"#VALUE!"}if(financeRate===-1||reinvestRate===-1){return"#NUM!"}if(cfs.length<=1){return"#NUM!"}return mirr(cfs,financeRate,reinvestRate)};scope.XNPV=function(r,cfs,dates){if(typeof r!=="number"){return"#VALUE!"}if(cfs.length!==dates.length){return"#NUM!"}dates=Common.map(function(d){return moment(d)},dates);if(r===-1){return"#NUM!"}return xnpv(r,cfs,dates)};scope.XIRR=function(cfs,dates,guess){if(guess===null||guess===undefined){guess=.1}if(typeof guess!=="number"){return"#VALUE!"}if(!validCfs(cfs)){return"#NUM!"}if(cfs.length!==dates.length){return"#NUM!"}dates=Common.map(function(d){return moment(d)},dates);return xirr(cfs,dates,guess)};return scope})},{"../lib/common.js":4,"../lib/tvm.js":12,moment:13}],8:[function(require,module,exports){(function(definition){if(typeof exports==="object"){var moment=require("moment");var Common=require("../lib/common.js");var Tvm=require("../lib/tvm.js");module.exports=definition(moment,Common,Tvm)}else if(typeof define==="function"&&define.amd){define(["moment","common","tvm"],definition)}})(function(moment,Common,Tvm){var scope=this.Loan={};var pmt=Tvm.pmt;var fvFactor=Tvm.fvFactor;var annuityCertainPvFactor=Tvm.annuityCertainPvFactor;var ipmt=function(r,per,nper,pv,fv,pd){var result=-(pv*fvFactor(r,per-1)*r+pmt(r,nper,pv,fv,Common.PaymentDue.EndOfPeriod)*(fvFactor(r,per-1)-1));if(pd===Common.PaymentDue.EndOfPeriod){return result}else{return result/(1+r)}};var ppmt=function(r,per,nper,pv,fv,pd){return pmt(r,nper,pv,fv,pd)-ipmt(r,per,nper,pv,fv,pd)};var ispmt=function(r,per,nper,pv){var coupon=-pv*r;return coupon-coupon/nper*per};scope.IPMT=function(r,per,nper,pv,fv,pd){if(fv===null||fv===undefined){fv=0}if(pd===null||pd===undefined){pd=0}if(!Common.raisable(r,nper)){return"#NUM!"}if(!Common.raisable(r,per-1)){return"#NUM!"}if(fv===0&&pv===0){return"#NUM!"}if(r===-1&&nper<=0&&per<=0&&pd!==Common.PaymentDue.EndOfPeriod){return"#NUM!"}if(annuityCertainPvFactor(r,nper,pd)===0){return"#NUM!"}if(per<1||per>nper){return"#NUM!"}if(nper<=0){return"#NUM!"}if(per===1&&pd===Common.PaymentDue.BeginningOfPeriod){return 0}else if(r===-1){return-fv}else{return ipmt(r,per,nper,pv,fv,pd)}};scope.PPMT=function(r,per,nper,pv,fv,pd){if(fv===null||fv===undefined){fv=0}if(pd===null||pd===undefined){pd=0}if(!Common.raisable(r,nper)){return"#NUM!"}if(!Common.raisable(r,per-1)){return"#NUM!"}if(fv===0&&pv===0){return"#NUM!"}if(r===-1&&nper<=0&&per<=0&&pd!==Common.PaymentDue.EndOfPeriod){return"#NUM!"}if(annuityCertainPvFactor(r,nper,pd)===0){return"#NUM!"}if(per<1||per>nper){return"#NUM!"}if(nper<=0){return"#NUM!"}if(per===1&&pd===Common.PaymentDue.BeginningOfPeriod){return pmt(r,nper,pv,fv,pd)}else if(r===-1){return 0}else{return ppmt(r,per,nper,pv,fv,pd)}};scope.CUMIPMT=function(r,nper,pv,startPeriod,endPeriod,pd){if(!Common.raisable(r,nper)){return"#NUM!"}if(!Common.raisable(r,startPeriod-1)){return"#NUM!"}if(pv<=0||r<=0||nper<=0){return"#NUM!"}if(startPeriod<1||endPeriod<1||startPeriod>endPeriod){return"#NUM!"}if(pd!==0&&pd!==1){return"#NUM!"}if(annuityCertainPvFactor(r,nper,pd)===0){return"#NUM!"}if(endPeriod>nper){return"#NUM!"}var f=function(acc,per){return acc+scope.IPMT(r,per,nper,pv,0,pd)};return Common.aggrBetween(Math.ceil(startPeriod),endPeriod,f,0)};scope.CUMPRINC=function(r,nper,pv,startPeriod,endPeriod,pd){if(!Common.raisable(r,nper)){return"#NUM!"}if(!Common.raisable(r,startPeriod-1)){return"#NUM!"}if(pv<=0||r<=0||nper<=0){return"#NUM!"}if(startPeriod<1||endPeriod<1||startPeriod>endPeriod){return"#NUM!"}if(pd!==0&&pd!==1){return"#NUM!"}if(annuityCertainPvFactor(r,nper,pd)===0){return"#NUM!"}if(endPeriod>nper){return"#NUM!"}var f=function(acc,per){return acc+scope.PPMT(r,per,nper,pv,0,pd)};return Common.aggrBetween(Math.ceil(startPeriod),endPeriod,f,0)};scope.ISPMT=function(r,per,nper,pv){if(per<1||per>nper){return"#NUM!"}if(nper<=0){return"#NUM!"}return ispmt(r,per,nper,pv)};return scope})},{"../lib/common.js":4,"../lib/tvm.js":12,moment:13}],9:[function(require,module,exports){(function(definition){if(typeof exports==="object"){var moment=require("moment");var Common=require("../lib/common.js");module.exports=definition(moment,Common)}else if(typeof define==="function"&&define.amd){define(["moment","common"],definition)}})(function(moment,Common){var scope=this.Misc={};var dollar=function(fractionalDollar,fraction,f){var aBase=Math.floor(fraction);var dollar=fractionalDollar>0?Math.floor(fractionalDollar):Math.ceil(fractionalDollar);var remainder=fractionalDollar-dollar;var digits=Math.pow(10,Math.ceil(Common.log10(aBase)));return f(aBase,dollar,remainder,digits)};var dollarDe=function(aBase,dollar,remainder,digits){return remainder*digits/aBase+dollar};var dollarFr=function(aBase,dollar,remainder,digits){var absDigits=Math.abs(digits);return remainder*aBase/absDigits+dollar};var effect=function(nominalRate,npery){var periods=Math.floor(npery);return Math.pow(nominalRate/periods+1,periods)-1};var nominal=function(effectRate,npery){var periods=Math.floor(npery);return(Math.pow(effectRate+1,1/periods)-1)*periods};scope.DOLLARDE=function(fractionalDollar,fraction){fraction=Math.floor(fraction);if(fraction<0){return"#NUM!"}if(fraction===0){return"#DIV/0!"}return dollar(fractionalDollar,fraction,dollarDe)};scope.DOLLARFR=function(fractionalDollar,fraction){fraction=Math.floor(fraction);if(fraction<0){return"#NUM!"}if(fraction===0){return"#DIV/0!"}return dollar(fractionalDollar,fraction,dollarFr)};scope.EFFECT=function(nominalRate,npery){if(typeof nominalRate!=="number"||typeof npery!=="number"){return"#VALUE!"}npery=Math.floor(npery);if(nominalRate<=0||npery<1){return"#NUM!"}return effect(nominalRate,npery)};scope.NOMINAL=function(effectRate,npery){if(typeof effectRate!=="number"||typeof npery!=="number"){return"#VALUE!"}npery=Math.floor(npery);if(effectRate<=0||npery<1){return"#NUM!"}return nominal(effectRate,npery)};return scope})},{"../lib/common.js":4,moment:13}],10:[function(require,module,exports){(function(definition){if(typeof exports==="object"){var moment=require("moment");var Common=require("../lib/common.js");var DayCountBasis=require("../lib/daycountbasis.js");module.exports=definition(moment,Common,DayCountBasis)}else if(typeof define==="function"&&define.amd){define(["moment","common","daycountbasis"],definition)}})(function(moment,Common,DayCountBasis){var scope=this.OddBonds={};var coupNumber=function(mat,settl,numMonths,basis,isWholeNumber){var my=mat.year(),mm=mat.month(),md=mat.date();var sy=settl.year(),sm=settl.month(),sd=settl.date();var couponsTemp=isWholeNumber==true?0:1;var endOfMonthTemp=Common.isLastDayOfMonth(mat);var endOfMonth=endOfMonthTemp===false&&mm!=2&&md>28&&md<mat.daysInMonth()?Common.isLastDayOfMonth(settl):endOfMonthTemp;var startDate=DayCountBasis.changeMonth(settl,0,basis,endOfMonth);var coupons=startDate.isAfter(settl)?couponsTemp+1:couponsTemp;var date=DayCountBasis.changeMonth(startDate,numMonths,basis,endOfMonth);var f=function(pcd,ncd){return 1};var result=DayCountBasis.datesAggregate1(date,mat,numMonths,basis,f,coupons,endOfMonth)[2];return result};var daysBetweenNotNeg=function(dc,startDate,endDate){var result=dc.DaysBetween(startDate,endDate,DayCountBasis.NumDenumPosition.Numerator);if(result>0){return result}else{return 0}};var daysBetweenNotNegPsaHack=function(startDate,endDate){var result=DayCountBasis.dateDiff360Us(startDate,endDate,DayCountBasis.Method360Us.ModifyBothDates);if(result>0){return result}else{return 0}};var daysBetweenNotNegWithHack=function(dc,startDate,endDate,basis){if(basis===DayCountBasis.UsPsa30_360){return daysBetweenNotNegPsaHack(startDate,endDate)}else{return daysBetweenNotNeg(dc,startDate,endDate)}};var oddFPrice=function(settlement,maturity,issue,firstCoupon,rate,yld,redemption,frequency,basis){var my=maturity.year(),mm=maturity.month(),md=maturity.date();var dc=DayCountBasis.dayCount(basis);var endMonth=Common.isLastDayOfMonth(maturity);var numMonths=DayCountBasis.freq2months(frequency);var numMonthsNeg=-numMonths;var e=dc.CoupDays(settlement,firstCoupon,frequency);var n=dc.CoupNum(settlement,maturity,frequency);var m=frequency;var dfc=daysBetweenNotNeg(dc,issue,firstCoupon);if(dfc<e){var dsc=daysBetweenNotNeg(dc,settlement,firstCoupon);var a=daysBetweenNotNeg(dc,issue,settlement);var x=yld/m+1;var y=dsc/e;var p1=x;var p3=Math.pow(p1,n-1+y);var term1=redemption/p3;var term2=100*rate/m*dfc/e/Math.pow(p1,y);var f=function(acc,index){return acc+100*rate/m/Math.pow(p1,index-1+y)};var term3=Common.aggrBetween(2,Math.floor(n),f,0);var p2=rate/m;var term4=a/e*p2*100;return term1+term2+term3-term4}else{var nc=dc.CoupNum(issue,firstCoupon,frequency);var lateCoupon=firstCoupon;var aggrFunction=function(acc,index){var earlyCoupon=DayCountBasis.changeMonth(lateCoupon,numMonthsNeg,basis,false);var nl=basis===DayCountBasis.ActualActual?daysBetweenNotNeg(dc,earlyCoupon,lateCoupon):e;var dci=index>1?nl:daysBetweenNotNeg(dc,issue,lateCoupon);var startDate=issue>earlyCoupon?issue:earlyCoupon;var endDate=settlement<lateCoupon?settlement:lateCoupon;var a=daysBetweenNotNeg(dc,startDate,endDate);lateCoupon=earlyCoupon;var dcnl=acc[0],anl=acc[1];return[dcnl+dci/nl,anl+a/nl]};var ag=Common.aggrBetween(Math.floor(nc),1,aggrFunction,[0,0]);var dcnl=ag[0],anl=ag[1];var dsc=0;if(basis===DayCountBasis.Actual360||basis===DayCountBasis.Actual365){var d=dc.CoupNCD(settlement,firstCoupon,frequency);dsc=daysBetweenNotNeg(dc,settlement,d)}else{var d=dc.CoupPCD(settlement,firstCoupon,frequency);var a=dc.DaysBetween(d,settlement,NumDenumPosition.Numerator);dsc=e-a}var nq=coupNumber(firstCoupon,settlement,numMonths,basis,true);var n=dc.CoupNum(firstCoupon,maturity,frequency);var x=yld/m+1;var y=dsc/e;var p1=x;var p3=Math.pow(p1,y+nq+n);var term1=redemption/p3;var term2=100*rate/m*dcnl/Math.pow(p1,nq+y);var f=function(acc,index){return acc+100*rate/m/Math.pow(p1,index+nq+y)};var term3=Common.aggrBetween(1,Math.floor(n),f,0);var term4=100*rate/m*anl;return term1+term2+term3-term4}};var oddFYield=function(settlement,maturity,issue,firstCoupon,rate,pr,redemption,frequency,basis){var dc=DayCountBasis.dayCount(basis);var years=dc.DaysBetween(settlement,maturity,DayCountBasis.NumDenumPosition.Numerator);var m=frequency;var px=pr-100;var num=rate*years*100-px;var denum=px/4+years*px/2+years*100;var guess=num/denum;var f=function(yld){return pr-oddFPrice(settlement,maturity,issue,firstCoupon,rate,yld,redemption,frequency,basis)};return Common.findRoot(f,guess)};var oddLFunc=function(settlement,maturity,lastInterest,rate,prOrYld,redemption,frequency,basis,isLPrice){var dc=DayCountBasis.dayCount(basis);var m=frequency;var numMonths=Math.floor(12/frequency);var lastCoupon=lastInterest;var nc=dc.CoupNum(lastCoupon,maturity,frequency);var earlyCoupon=lastCoupon;var aggrFunction=function(acc,index){var lateCoupon=DayCountBasis.changeMonth(earlyCoupon,numMonths,basis,false);var nl=daysBetweenNotNegWithHack(dc,earlyCoupon,lateCoupon,basis);var dci=index<nc?nl:daysBetweenNotNegWithHack(dc,earlyCoupon,maturity,basis);var a=0;if(lateCoupon<settlement){a=dci}else if(earlyCoupon<settlement){a=daysBetweenNotNeg(dc,earlyCoupon,settlement)}var startDate=settlement>earlyCoupon?settlement:earlyCoupon;var endDate=maturity<lateCoupon?maturity:lateCoupon;var dsc=daysBetweenNotNeg(dc,startDate,endDate);earlyCoupon=lateCoupon;var dcnl=acc[0];var anl=acc[1];var dscnl=acc[2];return[dcnl+dci/nl,anl+a/nl,dscnl+dsc/nl]};var agr=Common.aggrBetween(1,Math.floor(nc),aggrFunction,[0,0,0]);var dcnl=agr[0];var anl=agr[1];var dscnl=agr[2];var x=100*rate/m;var term1=dcnl*x+redemption;if(isLPrice){var term2=dscnl*prOrYld/m+1;var term3=anl*x;return term1/term2-term3}else{var term2=anl*x+prOrYld;var term3=m/dscnl;return(term1-term2)/term2*term3}};scope.ODDFPRICE=function(settlement,maturity,issue,firstCoupon,rate,yld,redemption,frequency,basis){if(!moment(settlement).isValid()||!moment(maturity).isValid()||!moment(issue).isValid()||!moment(firstCoupon).isValid()){return"#VALUE!"}settlement=moment(settlement);maturity=moment(maturity);issue=moment(issue);firstCoupon=moment(firstCoupon);var endMonth=Common.isLastDayOfMonth(maturity);var numMonths=Math.floor(12/Math.floor(frequency));var numMonthsNeg=-numMonths;var r=DayCountBasis.findPcdNcd(DayCountBasis.changeMonth(maturity,numMonthsNeg,basis,endMonth),firstCoupon,numMonthsNeg,basis,endMonth);var pcd=r[0];var ncd=r[1];if(!pcd.isSame(firstCoupon)){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(rate<0){return"#NUM!"}if(yld<0){return"#NUM!"}if(redemption<0){return"#NUM!"}if(!maturity.isAfter(firstCoupon)){return"#NUM!"}if(!firstCoupon.isAfter(settlement)){return"#NUM!"}if(!settlement.isAfter(issue)){return"#NUM!"}return oddFPrice(settlement,maturity,issue,firstCoupon,rate,yld,redemption,Math.floor(frequency),basis)};scope.ODDFYIELD=function(settlement,maturity,issue,firstCoupon,rate,pr,redemption,frequency,basis){if(!moment(settlement).isValid()||!moment(maturity).isValid()||!moment(issue).isValid()||!moment(firstCoupon).isValid()){return"#VALUE!"}settlement=moment(settlement);maturity=moment(maturity);issue=moment(issue);firstCoupon=moment(firstCoupon);if(rate<0||pr<=0){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(redemption<0){return"#NUM!"}if(!maturity.isAfter(firstCoupon)){return"#NUM!"}if(!firstCoupon.isAfter(settlement)){return"#NUM!"}if(!settlement.isAfter(issue)){return"#NUM!"}return oddFYield(settlement,maturity,issue,firstCoupon,rate,pr,redemption,Math.floor(frequency),basis)};scope.ODDLPRICE=function(settlement,maturity,lastInterest,rate,yld,redemption,frequency,basis){if(!moment(settlement).isValid()||!moment(maturity).isValid()||!moment(lastInterest).isValid()){return"#VALUE!"}settlement=moment(settlement);maturity=moment(maturity);lastInterest=moment(lastInterest);if(rate<0||yld<0||redemption<0){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(!maturity.isAfter(settlement)){return"#NUM!"}if(!settlement.isAfter(lastInterest)){return"#NUM!"}return oddLFunc(settlement,maturity,lastInterest,rate,yld,redemption,Math.floor(frequency),basis,true)};scope.ODDLYIELD=function(settlement,maturity,lastInterest,rate,pr,redemption,frequency,basis){if(!moment(settlement).isValid()||!moment(maturity).isValid()||!moment(lastInterest).isValid()){return"#VALUE!"}settlement=moment(settlement);maturity=moment(maturity);lastInterest=moment(lastInterest);if(rate<0||pr<=0||redemption<0){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(!maturity.isAfter(settlement)){return"#NUM!"}if(!settlement.isAfter(lastInterest)){return"#NUM!"}return oddLFunc(settlement,maturity,lastInterest,rate,pr,redemption,Math.floor(frequency),basis,false)};return scope})},{"../lib/common.js":4,"../lib/daycountbasis.js":5,moment:13}],11:[function(require,module,exports){(function(definition){if(typeof exports==="object"){var moment=require("moment");var Common=require("../lib/common.js");var DayCountBasis=require("../lib/daycountbasis.js");module.exports=definition(moment,Common,DayCountBasis)}else if(typeof define==="function"&&define.amd){define(["moment","common","daycountbasis"],definition)}})(function(moment,Common,DayCountBasis){var scope=this.TBill={};var getDsm=function(settlement,maturity,basis){var dc=DayCount.dayCount(basis);return dc.DaysBetween(settlement,maturity,DayCount.NumDenumPosition.Numerator)};var TBillEq=function(settlement,maturity,discount){var dsm=getDsm(settlement,maturity,DayCount.DayCountBasis.Actual360);if(dsm>182){var price=(100-discount*100*dsm/360)/100;var days=dsm===366?366:365;var tempTerm2=Math.pow(dsm/days,2)-(2*dsm/days-1)*(1-1/price);var term2=Math.sqrt(tempTerm2);var term3=2*dsm/days-1;return 2*(term2-dsm/days)/term3}else{return 365*discount/(360-discount*dsm)}};var TBillYield=function(settlement,maturity,pr){var dsm=getDsm(settlement,maturity,DayCount.DayCountBasis.ActualActual);return(100-pr)/pr*360/dsm};var TBillPrice=function(settlement,maturity,discount){var dsm=getDsm(settlement,maturity,DayCount.DayCountBasis.ActualActual);return 100*(1-discount*dsm/360)};scope.TBILLEQ=function(settlement,maturity,discount){if(typeof discount!=="number"){return"#VALUE!"}if(!moment(settlement).isValid()||!moment(maturity).isValid()){return"#VALUE!"}if(discount<=0){return"#NUM!"}settlement=moment(settlement);maturity=moment(maturity);if(settlement.isAfter(maturity)||maturity.isAfter(settlement)&&maturity.diff(settlement,"years",true)>1){return"#NUM!"}return TBillEq(settlement,maturity,discount)};scope.TBILLYIELD=function(settlement,maturity,pr){if(typeof pr!=="number"){return"#VALUE!"}if(!moment(settlement).isValid()||!moment(maturity).isValid()){return"#VALUE!"}if(pr<=0){return"#NUM!"}settlement=moment(settlement);maturity=moment(maturity);if(settlement.isAfter(maturity)||maturity.isAfter(settlement)&&maturity.diff(settlement,"years",true)>1){return"#NUM!"}return TBillYield(settlement,maturity,pr)};scope.TBILLPRICE=function(settlement,maturity,discount){if(typeof discount!=="number"){return"#VALUE!"}if(!moment(settlement).isValid()||!moment(maturity).isValid()){return"#VALUE!"}if(discount<=0){return"#NUM!"}settlement=moment(settlement);maturity=moment(maturity);if(settlement.isAfter(maturity)||maturity.isAfter(settlement)&&maturity.diff(settlement,"years",true)>1){return"#NUM!"
}return TBillPrice(settlement,maturity,discount)};return scope})},{"../lib/common.js":4,"../lib/daycountbasis.js":5,moment:13}],12:[function(require,module,exports){(function(definition){if(typeof exports==="object"){var moment=require("moment");var Common=require("../lib/common.js");module.exports=definition(moment,Common)}else if(typeof define==="function"&&define.amd){define(["moment","common"],definition)}})(function(moment,Common){var scope=this.Tvm={};var fvFactor=function(r,nper){return Math.pow(1+r,nper)};scope.fvFactor=fvFactor;var pvFactor=function(r,nper){return 1/fvFactor(r,nper)};scope.pvFactor=pvFactor;var annuityCertainPvFactor=function(r,nper,pd){if(r===0){return nper}else{return(1+r*pd)*(1-pvFactor(r,nper))/r}};scope.annuityCertainPvFactor=annuityCertainPvFactor;var annuityCertainFvFactor=function(r,nper,pd){return annuityCertainPvFactor(r,nper,pd)*fvFactor(r,nper)};var nperFactor=function(r,pmt,v,pd){return v*r+pmt*(1+r*pd)};var pv=function(r,nper,pmt,fv,pd){return-(fv*pvFactor(r,nper)+pmt*annuityCertainPvFactor(r,nper,pd))};var fv=function(r,nper,pmt,pv,pd){return-(pv*fvFactor(r,nper)+pmt*annuityCertainFvFactor(r,nper,pd))};var pmt=function(r,nper,pv,fv,pd){return-(pv+fv*pvFactor(r,nper))/annuityCertainPvFactor(r,nper,pd)};scope.pmt=pmt;var nper=function(r,pmt,pv,fv,pd){return Math.log(nperFactor(r,pmt,-fv,pd)/nperFactor(r,pmt,pv,pd))/Math.log(r+1)};scope.PV=function(r,nper,pmt,fv,pd){if(fv===null||fv===undefined){fv=0}if(pd===null||pd===undefined){pd=0}if(Common.raisable(r,nper)===false){return"#NUM!"}if(pmt===0&&fv===0){return"#NUM!"}if(r===-1){return"#NUM!"}return pv(r,nper,pmt,fv,pd)};scope.FV=function(r,nper,pmt,pv,pd){if(pv===null||pv===undefined){pv=0}if(pd===null||pd===undefined){pd=0}if(Common.raisable(r,nper)===false){return"#NUM!"}if(r===-1&&nper<=0){return"#NUM!"}if(pmt===0&&pv===0){return"#NUM!"}if(r===-1&&pd===Common.PaymentDue.BeginningOfPeriod){return-(pv*fvFactor(r,nper))}else if(r===-1&&pd===Common.PaymentDue.EndOfPeriod){return-(pv*fvFactor(r,nper)+pmt)}else{return fv(r,nper,pmt,pv,pd)}};scope.PMT=function(r,nper,pv,fv,pd){if(fv===null||fv===undefined){fv=0}if(pd===null||pd===undefined){pd=0}if(Common.raisable(r,nper)===false){return"#NUM!"}if(fv===0&&pv===0){return"#NUM!"}if(r===-1&&nper<=0&&pd===Common.PaymentDue.EndOfPeriod){return"#NUM!"}if(annuityCertainPvFactor(r,nper,pd)===0){return"NUM!"}if(r===-1){return-fv}else{return pmt(r,nper,pv,fv,pd)}};scope.NPER=function(r,pmt,pv,fv,pd){if(fv===null||fv===undefined){fv=0}if(pd===null||pd===undefined){pd=0}if(r===0&&pmt!==0){return-(fv+pv)/pmt}else{return nper(r,pmt,pv,fv,pd)}};scope.RATE=function(nper,pmt,pv,fv,pd,guess){if(fv===null||fv===undefined){fv=0}if(pd===null||pd===undefined){pd=0}if(guess===null||guess===undefined){guess=.1}if(pmt===0&&pv===0){return"#NUM!"}if(nper<=0){return"#NUM!"}if(fv===0&&pv===0){return pmt<0?-1:1}else{var f=function(r){return scope.FV(r,nper,pmt,pv,pd)-fv};return Common.findRoot(f,guess)}};scope.FVSCHEDULE=function(pv,interests){if(typeof pv!=="number"){return"#VALUE!"}if(Common.allValidNumbers(interests)===false){return"#VALUE!"}var result=pv;for(var i=0;i<interests.length;i++){result=result*(1+interests[i])}return result};return scope})},{"../lib/common.js":4,moment:13}],13:[function(require,module,exports){(function(global){(function(undefined){var moment,VERSION="2.6.0",globalScope=typeof global!=="undefined"?global:this,oldGlobalMoment,round=Math.round,i,YEAR=0,MONTH=1,DATE=2,HOUR=3,MINUTE=4,SECOND=5,MILLISECOND=6,languages={},momentProperties={_isAMomentObject:null,_i:null,_f:null,_l:null,_strict:null,_isUTC:null,_offset:null,_pf:null,_lang:null},hasModule=typeof module!=="undefined"&&module.exports,aspNetJsonRegex=/^\/?Date\((\-?\d+)/i,aspNetTimeSpanJsonRegex=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,isoDurationRegex=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,formattingTokens=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g,localFormattingTokens=/(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g,parseTokenOneOrTwoDigits=/\d\d?/,parseTokenOneToThreeDigits=/\d{1,3}/,parseTokenOneToFourDigits=/\d{1,4}/,parseTokenOneToSixDigits=/[+\-]?\d{1,6}/,parseTokenDigits=/\d+/,parseTokenWord=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,parseTokenTimezone=/Z|[\+\-]\d\d:?\d\d/gi,parseTokenT=/T/i,parseTokenTimestampMs=/[\+\-]?\d+(\.\d{1,3})?/,parseTokenOrdinal=/\d{1,2}/,parseTokenOneDigit=/\d/,parseTokenTwoDigits=/\d\d/,parseTokenThreeDigits=/\d{3}/,parseTokenFourDigits=/\d{4}/,parseTokenSixDigits=/[+-]?\d{6}/,parseTokenSignedNumber=/[+-]?\d+/,isoRegex=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,isoFormat="YYYY-MM-DDTHH:mm:ssZ",isoDates=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],isoTimes=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],parseTimezoneChunker=/([\+\-]|\d\d)/gi,proxyGettersAndSetters="Date|Hours|Minutes|Seconds|Milliseconds".split("|"),unitMillisecondFactors={Milliseconds:1,Seconds:1e3,Minutes:6e4,Hours:36e5,Days:864e5,Months:2592e6,Years:31536e6},unitAliases={ms:"millisecond",s:"second",m:"minute",h:"hour",d:"day",D:"date",w:"week",W:"isoWeek",M:"month",Q:"quarter",y:"year",DDD:"dayOfYear",e:"weekday",E:"isoWeekday",gg:"weekYear",GG:"isoWeekYear"},camelFunctions={dayofyear:"dayOfYear",isoweekday:"isoWeekday",isoweek:"isoWeek",weekyear:"weekYear",isoweekyear:"isoWeekYear"},formatFunctions={},ordinalizeTokens="DDD w W M D d".split(" "),paddedTokens="M D H h m s w W".split(" "),formatTokenFunctions={M:function(){return this.month()+1},MMM:function(format){return this.lang().monthsShort(this,format)},MMMM:function(format){return this.lang().months(this,format)},D:function(){return this.date()},DDD:function(){return this.dayOfYear()},d:function(){return this.day()},dd:function(format){return this.lang().weekdaysMin(this,format)},ddd:function(format){return this.lang().weekdaysShort(this,format)},dddd:function(format){return this.lang().weekdays(this,format)},w:function(){return this.week()},W:function(){return this.isoWeek()},YY:function(){return leftZeroFill(this.year()%100,2)},YYYY:function(){return leftZeroFill(this.year(),4)},YYYYY:function(){return leftZeroFill(this.year(),5)},YYYYYY:function(){var y=this.year(),sign=y>=0?"+":"-";return sign+leftZeroFill(Math.abs(y),6)},gg:function(){return leftZeroFill(this.weekYear()%100,2)},gggg:function(){return leftZeroFill(this.weekYear(),4)},ggggg:function(){return leftZeroFill(this.weekYear(),5)},GG:function(){return leftZeroFill(this.isoWeekYear()%100,2)},GGGG:function(){return leftZeroFill(this.isoWeekYear(),4)},GGGGG:function(){return leftZeroFill(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.lang().meridiem(this.hours(),this.minutes(),true)},A:function(){return this.lang().meridiem(this.hours(),this.minutes(),false)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return toInt(this.milliseconds()/100)},SS:function(){return leftZeroFill(toInt(this.milliseconds()/10),2)},SSS:function(){return leftZeroFill(this.milliseconds(),3)},SSSS:function(){return leftZeroFill(this.milliseconds(),3)},Z:function(){var a=-this.zone(),b="+";if(a<0){a=-a;b="-"}return b+leftZeroFill(toInt(a/60),2)+":"+leftZeroFill(toInt(a)%60,2)},ZZ:function(){var a=-this.zone(),b="+";if(a<0){a=-a;b="-"}return b+leftZeroFill(toInt(a/60),2)+leftZeroFill(toInt(a)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},X:function(){return this.unix()},Q:function(){return this.quarter()}},lists=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];function defaultParsingFlags(){return{empty:false,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:false,invalidMonth:null,invalidFormat:false,userInvalidated:false,iso:false}}function deprecate(msg,fn){var firstTime=true;function printMsg(){if(moment.suppressDeprecationWarnings===false&&typeof console!=="undefined"&&console.warn){console.warn("Deprecation warning: "+msg)}}return extend(function(){if(firstTime){printMsg();firstTime=false}return fn.apply(this,arguments)},fn)}function padToken(func,count){return function(a){return leftZeroFill(func.call(this,a),count)}}function ordinalizeToken(func,period){return function(a){return this.lang().ordinal(func.call(this,a),period)}}while(ordinalizeTokens.length){i=ordinalizeTokens.pop();formatTokenFunctions[i+"o"]=ordinalizeToken(formatTokenFunctions[i],i)}while(paddedTokens.length){i=paddedTokens.pop();formatTokenFunctions[i+i]=padToken(formatTokenFunctions[i],2)}formatTokenFunctions.DDDD=padToken(formatTokenFunctions.DDD,3);function Language(){}function Moment(config){checkOverflow(config);extend(this,config)}function Duration(duration){var normalizedInput=normalizeObjectUnits(duration),years=normalizedInput.year||0,quarters=normalizedInput.quarter||0,months=normalizedInput.month||0,weeks=normalizedInput.week||0,days=normalizedInput.day||0,hours=normalizedInput.hour||0,minutes=normalizedInput.minute||0,seconds=normalizedInput.second||0,milliseconds=normalizedInput.millisecond||0;this._milliseconds=+milliseconds+seconds*1e3+minutes*6e4+hours*36e5;this._days=+days+weeks*7;this._months=+months+quarters*3+years*12;this._data={};this._bubble()}function extend(a,b){for(var i in b){if(b.hasOwnProperty(i)){a[i]=b[i]}}if(b.hasOwnProperty("toString")){a.toString=b.toString}if(b.hasOwnProperty("valueOf")){a.valueOf=b.valueOf}return a}function cloneMoment(m){var result={},i;for(i in m){if(m.hasOwnProperty(i)&&momentProperties.hasOwnProperty(i)){result[i]=m[i]}}return result}function absRound(number){if(number<0){return Math.ceil(number)}else{return Math.floor(number)}}function leftZeroFill(number,targetLength,forceSign){var output=""+Math.abs(number),sign=number>=0;while(output.length<targetLength){output="0"+output}return(sign?forceSign?"+":"":"-")+output}function addOrSubtractDurationFromMoment(mom,duration,isAdding,updateOffset){var milliseconds=duration._milliseconds,days=duration._days,months=duration._months;updateOffset=updateOffset==null?true:updateOffset;if(milliseconds){mom._d.setTime(+mom._d+milliseconds*isAdding)}if(days){rawSetter(mom,"Date",rawGetter(mom,"Date")+days*isAdding)}if(months){rawMonthSetter(mom,rawGetter(mom,"Month")+months*isAdding)}if(updateOffset){moment.updateOffset(mom,days||months)}}function isArray(input){return Object.prototype.toString.call(input)==="[object Array]"}function isDate(input){return Object.prototype.toString.call(input)==="[object Date]"||input instanceof Date}function compareArrays(array1,array2,dontConvert){var len=Math.min(array1.length,array2.length),lengthDiff=Math.abs(array1.length-array2.length),diffs=0,i;for(i=0;i<len;i++){if(dontConvert&&array1[i]!==array2[i]||!dontConvert&&toInt(array1[i])!==toInt(array2[i])){diffs++}}return diffs+lengthDiff}function normalizeUnits(units){if(units){var lowered=units.toLowerCase().replace(/(.)s$/,"$1");units=unitAliases[units]||camelFunctions[lowered]||lowered}return units}function normalizeObjectUnits(inputObject){var normalizedInput={},normalizedProp,prop;for(prop in inputObject){if(inputObject.hasOwnProperty(prop)){normalizedProp=normalizeUnits(prop);if(normalizedProp){normalizedInput[normalizedProp]=inputObject[prop]}}}return normalizedInput}function makeList(field){var count,setter;if(field.indexOf("week")===0){count=7;setter="day"}else if(field.indexOf("month")===0){count=12;setter="month"}else{return}moment[field]=function(format,index){var i,getter,method=moment.fn._lang[field],results=[];if(typeof format==="number"){index=format;format=undefined}getter=function(i){var m=moment().utc().set(setter,i);return method.call(moment.fn._lang,m,format||"")};if(index!=null){return getter(index)}else{for(i=0;i<count;i++){results.push(getter(i))}return results}}}function toInt(argumentForCoercion){var coercedNumber=+argumentForCoercion,value=0;if(coercedNumber!==0&&isFinite(coercedNumber)){if(coercedNumber>=0){value=Math.floor(coercedNumber)}else{value=Math.ceil(coercedNumber)}}return value}function daysInMonth(year,month){return new Date(Date.UTC(year,month+1,0)).getUTCDate()}function weeksInYear(year,dow,doy){return weekOfYear(moment([year,11,31+dow-doy]),dow,doy).week}function daysInYear(year){return isLeapYear(year)?366:365}function isLeapYear(year){return year%4===0&&year%100!==0||year%400===0}function checkOverflow(m){var overflow;if(m._a&&m._pf.overflow===-2){overflow=m._a[MONTH]<0||m._a[MONTH]>11?MONTH:m._a[DATE]<1||m._a[DATE]>daysInMonth(m._a[YEAR],m._a[MONTH])?DATE:m._a[HOUR]<0||m._a[HOUR]>23?HOUR:m._a[MINUTE]<0||m._a[MINUTE]>59?MINUTE:m._a[SECOND]<0||m._a[SECOND]>59?SECOND:m._a[MILLISECOND]<0||m._a[MILLISECOND]>999?MILLISECOND:-1;if(m._pf._overflowDayOfYear&&(overflow<YEAR||overflow>DATE)){overflow=DATE}m._pf.overflow=overflow}}function isValid(m){if(m._isValid==null){m._isValid=!isNaN(m._d.getTime())&&m._pf.overflow<0&&!m._pf.empty&&!m._pf.invalidMonth&&!m._pf.nullInput&&!m._pf.invalidFormat&&!m._pf.userInvalidated;if(m._strict){m._isValid=m._isValid&&m._pf.charsLeftOver===0&&m._pf.unusedTokens.length===0}}return m._isValid}function normalizeLanguage(key){return key?key.toLowerCase().replace("_","-"):key}function makeAs(input,model){return model._isUTC?moment(input).zone(model._offset||0):moment(input).local()}extend(Language.prototype,{set:function(config){var prop,i;for(i in config){prop=config[i];if(typeof prop==="function"){this[i]=prop}else{this["_"+i]=prop}}},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(m){return this._months[m.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(m){return this._monthsShort[m.month()]},monthsParse:function(monthName){var i,mom,regex;if(!this._monthsParse){this._monthsParse=[]}for(i=0;i<12;i++){if(!this._monthsParse[i]){mom=moment.utc([2e3,i]);regex="^"+this.months(mom,"")+"|^"+this.monthsShort(mom,"");this._monthsParse[i]=new RegExp(regex.replace(".",""),"i")}if(this._monthsParse[i].test(monthName)){return i}}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(m){return this._weekdays[m.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(m){return this._weekdaysShort[m.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(m){return this._weekdaysMin[m.day()]},weekdaysParse:function(weekdayName){var i,mom,regex;if(!this._weekdaysParse){this._weekdaysParse=[]}for(i=0;i<7;i++){if(!this._weekdaysParse[i]){mom=moment([2e3,1]).day(i);regex="^"+this.weekdays(mom,"")+"|^"+this.weekdaysShort(mom,"")+"|^"+this.weekdaysMin(mom,"");this._weekdaysParse[i]=new RegExp(regex.replace(".",""),"i")}if(this._weekdaysParse[i].test(weekdayName)){return i}}},_longDateFormat:{LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D YYYY",LLL:"MMMM D YYYY LT",LLLL:"dddd, MMMM D YYYY LT"},longDateFormat:function(key){var output=this._longDateFormat[key];if(!output&&this._longDateFormat[key.toUpperCase()]){output=this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(val){return val.slice(1)});this._longDateFormat[key]=output}return output},isPM:function(input){return(input+"").toLowerCase().charAt(0)==="p"},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(hours,minutes,isLower){if(hours>11){return isLower?"pm":"PM"}else{return isLower?"am":"AM"}},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(key,mom){var output=this._calendar[key];return typeof output==="function"?output.apply(mom):output},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(number,withoutSuffix,string,isFuture){var output=this._relativeTime[string];return typeof output==="function"?output(number,withoutSuffix,string,isFuture):output.replace(/%d/i,number)},pastFuture:function(diff,output){var format=this._relativeTime[diff>0?"future":"past"];return typeof format==="function"?format(output):format.replace(/%s/i,output)},ordinal:function(number){return this._ordinal.replace("%d",number)},_ordinal:"%d",preparse:function(string){return string},postformat:function(string){return string},week:function(mom){return weekOfYear(mom,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}});function loadLang(key,values){values.abbr=key;if(!languages[key]){languages[key]=new Language}languages[key].set(values);return languages[key]}function unloadLang(key){delete languages[key]}function getLangDefinition(key){var i=0,j,lang,next,split,get=function(k){if(!languages[k]&&hasModule){try{require("./lang/"+k)}catch(e){}}return languages[k]};if(!key){return moment.fn._lang}if(!isArray(key)){lang=get(key);if(lang){return lang}key=[key]}while(i<key.length){split=normalizeLanguage(key[i]).split("-");j=split.length;next=normalizeLanguage(key[i+1]);next=next?next.split("-"):null;while(j>0){lang=get(split.slice(0,j).join("-"));if(lang){return lang}if(next&&next.length>=j&&compareArrays(split,next,true)>=j-1){break}j--}i++}return moment.fn._lang}function removeFormattingTokens(input){if(input.match(/\[[\s\S]/)){return input.replace(/^\[|\]$/g,"")}return input.replace(/\\/g,"")}function makeFormatFunction(format){var array=format.match(formattingTokens),i,length;for(i=0,length=array.length;i<length;i++){if(formatTokenFunctions[array[i]]){array[i]=formatTokenFunctions[array[i]]}else{array[i]=removeFormattingTokens(array[i])}}return function(mom){var output="";for(i=0;i<length;i++){output+=array[i]instanceof Function?array[i].call(mom,format):array[i]}return output}}function formatMoment(m,format){if(!m.isValid()){return m.lang().invalidDate()}format=expandFormat(format,m.lang());if(!formatFunctions[format]){formatFunctions[format]=makeFormatFunction(format)}return formatFunctions[format](m)}function expandFormat(format,lang){var i=5;function replaceLongDateFormatTokens(input){return lang.longDateFormat(input)||input}localFormattingTokens.lastIndex=0;while(i>=0&&localFormattingTokens.test(format)){format=format.replace(localFormattingTokens,replaceLongDateFormatTokens);localFormattingTokens.lastIndex=0;i-=1}return format}function getParseRegexForToken(token,config){var a,strict=config._strict;switch(token){case"Q":return parseTokenOneDigit;case"DDDD":return parseTokenThreeDigits;case"YYYY":case"GGGG":case"gggg":return strict?parseTokenFourDigits:parseTokenOneToFourDigits;case"Y":case"G":case"g":return parseTokenSignedNumber;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return strict?parseTokenSixDigits:parseTokenOneToSixDigits;case"S":if(strict){return parseTokenOneDigit}case"SS":if(strict){return parseTokenTwoDigits}case"SSS":if(strict){return parseTokenThreeDigits}case"DDD":return parseTokenOneToThreeDigits;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return parseTokenWord;case"a":case"A":return getLangDefinition(config._l)._meridiemParse;case"X":return parseTokenTimestampMs;case"Z":case"ZZ":return parseTokenTimezone;case"T":return parseTokenT;case"SSSS":return parseTokenDigits;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return strict?parseTokenTwoDigits:parseTokenOneOrTwoDigits;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return parseTokenOneOrTwoDigits;case"Do":return parseTokenOrdinal;default:a=new RegExp(regexpEscape(unescapeFormat(token.replace("\\","")),"i"));return a}}function timezoneMinutesFromString(string){string=string||"";var possibleTzMatches=string.match(parseTokenTimezone)||[],tzChunk=possibleTzMatches[possibleTzMatches.length-1]||[],parts=(tzChunk+"").match(parseTimezoneChunker)||["-",0,0],minutes=+(parts[1]*60)+toInt(parts[2]);return parts[0]==="+"?-minutes:minutes}function addTimeToArrayFromToken(token,input,config){var a,datePartArray=config._a;switch(token){case"Q":if(input!=null){datePartArray[MONTH]=(toInt(input)-1)*3}break;case"M":case"MM":if(input!=null){datePartArray[MONTH]=toInt(input)-1}break;case"MMM":case"MMMM":a=getLangDefinition(config._l).monthsParse(input);if(a!=null){datePartArray[MONTH]=a}else{config._pf.invalidMonth=input}break;case"D":case"DD":if(input!=null){datePartArray[DATE]=toInt(input)}break;case"Do":if(input!=null){datePartArray[DATE]=toInt(parseInt(input,10))}break;case"DDD":case"DDDD":if(input!=null){config._dayOfYear=toInt(input)}break;case"YY":datePartArray[YEAR]=moment.parseTwoDigitYear(input);break;case"YYYY":case"YYYYY":case"YYYYYY":datePartArray[YEAR]=toInt(input);break;case"a":case"A":config._isPm=getLangDefinition(config._l).isPM(input);break;case"H":case"HH":case"h":case"hh":datePartArray[HOUR]=toInt(input);break;case"m":case"mm":datePartArray[MINUTE]=toInt(input);break;case"s":case"ss":datePartArray[SECOND]=toInt(input);break;case"S":case"SS":case"SSS":case"SSSS":datePartArray[MILLISECOND]=toInt(("0."+input)*1e3);break;case"X":config._d=new Date(parseFloat(input)*1e3);break;case"Z":case"ZZ":config._useUTC=true;config._tzm=timezoneMinutesFromString(input);break;case"w":case"ww":case"W":case"WW":case"d":case"dd":case"ddd":case"dddd":case"e":case"E":token=token.substr(0,1);case"gg":case"gggg":case"GG":case"GGGG":case"GGGGG":token=token.substr(0,2);if(input){config._w=config._w||{};config._w[token]=input}break}}function dateFromConfig(config){var i,date,input=[],currentDate,yearToUse,fixYear,w,temp,lang,weekday,week;if(config._d){return}currentDate=currentDateArray(config);if(config._w&&config._a[DATE]==null&&config._a[MONTH]==null){fixYear=function(val){var intVal=parseInt(val,10);return val?val.length<3?intVal>68?1900+intVal:2e3+intVal:intVal:config._a[YEAR]==null?moment().weekYear():config._a[YEAR]};w=config._w;if(w.GG!=null||w.W!=null||w.E!=null){temp=dayOfYearFromWeeks(fixYear(w.GG),w.W||1,w.E,4,1)}else{lang=getLangDefinition(config._l);weekday=w.d!=null?parseWeekday(w.d,lang):w.e!=null?parseInt(w.e,10)+lang._week.dow:0;week=parseInt(w.w,10)||1;if(w.d!=null&&weekday<lang._week.dow){week++}temp=dayOfYearFromWeeks(fixYear(w.gg),week,weekday,lang._week.doy,lang._week.dow)}config._a[YEAR]=temp.year;config._dayOfYear=temp.dayOfYear}if(config._dayOfYear){yearToUse=config._a[YEAR]==null?currentDate[YEAR]:config._a[YEAR];if(config._dayOfYear>daysInYear(yearToUse)){config._pf._overflowDayOfYear=true}date=makeUTCDate(yearToUse,0,config._dayOfYear);config._a[MONTH]=date.getUTCMonth();config._a[DATE]=date.getUTCDate()}for(i=0;i<3&&config._a[i]==null;++i){config._a[i]=input[i]=currentDate[i]}for(;i<7;i++){config._a[i]=input[i]=config._a[i]==null?i===2?1:0:config._a[i]}input[HOUR]+=toInt((config._tzm||0)/60);input[MINUTE]+=toInt((config._tzm||0)%60);config._d=(config._useUTC?makeUTCDate:makeDate).apply(null,input)}function dateFromObject(config){var normalizedInput;if(config._d){return}normalizedInput=normalizeObjectUnits(config._i);config._a=[normalizedInput.year,normalizedInput.month,normalizedInput.day,normalizedInput.hour,normalizedInput.minute,normalizedInput.second,normalizedInput.millisecond];dateFromConfig(config)}function currentDateArray(config){var now=new Date;if(config._useUTC){return[now.getUTCFullYear(),now.getUTCMonth(),now.getUTCDate()]}else{return[now.getFullYear(),now.getMonth(),now.getDate()]}}function makeDateFromStringAndFormat(config){config._a=[];config._pf.empty=true;var lang=getLangDefinition(config._l),string=""+config._i,i,parsedInput,tokens,token,skipped,stringLength=string.length,totalParsedInputLength=0;tokens=expandFormat(config._f,lang).match(formattingTokens)||[];for(i=0;i<tokens.length;i++){token=tokens[i];parsedInput=(string.match(getParseRegexForToken(token,config))||[])[0];if(parsedInput){skipped=string.substr(0,string.indexOf(parsedInput));if(skipped.length>0){config._pf.unusedInput.push(skipped)}string=string.slice(string.indexOf(parsedInput)+parsedInput.length);totalParsedInputLength+=parsedInput.length}if(formatTokenFunctions[token]){if(parsedInput){config._pf.empty=false}else{config._pf.unusedTokens.push(token)}addTimeToArrayFromToken(token,parsedInput,config)}else if(config._strict&&!parsedInput){config._pf.unusedTokens.push(token)}}config._pf.charsLeftOver=stringLength-totalParsedInputLength;if(string.length>0){config._pf.unusedInput.push(string)}if(config._isPm&&config._a[HOUR]<12){config._a[HOUR]+=12}if(config._isPm===false&&config._a[HOUR]===12){config._a[HOUR]=0}dateFromConfig(config);checkOverflow(config)}function unescapeFormat(s){return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(matched,p1,p2,p3,p4){return p1||p2||p3||p4})}function regexpEscape(s){return s.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function makeDateFromStringAndArray(config){var tempConfig,bestMoment,scoreToBeat,i,currentScore;if(config._f.length===0){config._pf.invalidFormat=true;config._d=new Date(NaN);return}for(i=0;i<config._f.length;i++){currentScore=0;tempConfig=extend({},config);tempConfig._pf=defaultParsingFlags();tempConfig._f=config._f[i];makeDateFromStringAndFormat(tempConfig);if(!isValid(tempConfig)){continue}currentScore+=tempConfig._pf.charsLeftOver;currentScore+=tempConfig._pf.unusedTokens.length*10;tempConfig._pf.score=currentScore;if(scoreToBeat==null||currentScore<scoreToBeat){scoreToBeat=currentScore;bestMoment=tempConfig}}extend(config,bestMoment||tempConfig)}function makeDateFromString(config){var i,l,string=config._i,match=isoRegex.exec(string);if(match){config._pf.iso=true;for(i=0,l=isoDates.length;i<l;i++){if(isoDates[i][1].exec(string)){config._f=isoDates[i][0]+(match[6]||" ");break}}for(i=0,l=isoTimes.length;i<l;i++){if(isoTimes[i][1].exec(string)){config._f+=isoTimes[i][0];break}}if(string.match(parseTokenTimezone)){config._f+="Z"}makeDateFromStringAndFormat(config)}else{moment.createFromInputFallback(config)}}function makeDateFromInput(config){var input=config._i,matched=aspNetJsonRegex.exec(input);if(input===undefined){config._d=new Date}else if(matched){config._d=new Date(+matched[1])}else if(typeof input==="string"){makeDateFromString(config)}else if(isArray(input)){config._a=input.slice(0);dateFromConfig(config)}else if(isDate(input)){config._d=new Date(+input)}else if(typeof input==="object"){dateFromObject(config)}else if(typeof input==="number"){config._d=new Date(input)}else{moment.createFromInputFallback(config)}}function makeDate(y,m,d,h,M,s,ms){var date=new Date(y,m,d,h,M,s,ms);if(y<1970){date.setFullYear(y)}return date}function makeUTCDate(y){var date=new Date(Date.UTC.apply(null,arguments));if(y<1970){date.setUTCFullYear(y)}return date}function parseWeekday(input,language){if(typeof input==="string"){if(!isNaN(input)){input=parseInt(input,10)}else{input=language.weekdaysParse(input);if(typeof input!=="number"){return null}}}return input}function substituteTimeAgo(string,number,withoutSuffix,isFuture,lang){return lang.relativeTime(number||1,!!withoutSuffix,string,isFuture)}function relativeTime(milliseconds,withoutSuffix,lang){var seconds=round(Math.abs(milliseconds)/1e3),minutes=round(seconds/60),hours=round(minutes/60),days=round(hours/24),years=round(days/365),args=seconds<45&&["s",seconds]||minutes===1&&["m"]||minutes<45&&["mm",minutes]||hours===1&&["h"]||hours<22&&["hh",hours]||days===1&&["d"]||days<=25&&["dd",days]||days<=45&&["M"]||days<345&&["MM",round(days/30)]||years===1&&["y"]||["yy",years];args[2]=withoutSuffix;args[3]=milliseconds>0;args[4]=lang;return substituteTimeAgo.apply({},args)}function weekOfYear(mom,firstDayOfWeek,firstDayOfWeekOfYear){var end=firstDayOfWeekOfYear-firstDayOfWeek,daysToDayOfWeek=firstDayOfWeekOfYear-mom.day(),adjustedMoment;if(daysToDayOfWeek>end){daysToDayOfWeek-=7}if(daysToDayOfWeek<end-7){daysToDayOfWeek+=7}adjustedMoment=moment(mom).add("d",daysToDayOfWeek);return{week:Math.ceil(adjustedMoment.dayOfYear()/7),year:adjustedMoment.year()}}function dayOfYearFromWeeks(year,week,weekday,firstDayOfWeekOfYear,firstDayOfWeek){var d=makeUTCDate(year,0,1).getUTCDay(),daysToAdd,dayOfYear;weekday=weekday!=null?weekday:firstDayOfWeek;daysToAdd=firstDayOfWeek-d+(d>firstDayOfWeekOfYear?7:0)-(d<firstDayOfWeek?7:0);dayOfYear=7*(week-1)+(weekday-firstDayOfWeek)+daysToAdd+1;return{year:dayOfYear>0?year:year-1,dayOfYear:dayOfYear>0?dayOfYear:daysInYear(year-1)+dayOfYear}}function makeMoment(config){var input=config._i,format=config._f;if(input===null||format===undefined&&input===""){return moment.invalid({nullInput:true})}if(typeof input==="string"){config._i=input=getLangDefinition().preparse(input)}if(moment.isMoment(input)){config=cloneMoment(input);config._d=new Date(+input._d)}else if(format){if(isArray(format)){makeDateFromStringAndArray(config)}else{makeDateFromStringAndFormat(config)}}else{makeDateFromInput(config)}return new Moment(config)}moment=function(input,format,lang,strict){var c;if(typeof lang==="boolean"){strict=lang;lang=undefined}c={};c._isAMomentObject=true;c._i=input;c._f=format;c._l=lang;c._strict=strict;c._isUTC=false;c._pf=defaultParsingFlags();return makeMoment(c)};moment.suppressDeprecationWarnings=false;moment.createFromInputFallback=deprecate("moment construction falls back to js Date. This is "+"discouraged and will be removed in upcoming major "+"release. Please refer to "+"https://github.com/moment/moment/issues/1407 for more info.",function(config){config._d=new Date(config._i)});moment.utc=function(input,format,lang,strict){var c;if(typeof lang==="boolean"){strict=lang;lang=undefined}c={};c._isAMomentObject=true;c._useUTC=true;c._isUTC=true;c._l=lang;c._i=input;c._f=format;c._strict=strict;c._pf=defaultParsingFlags();return makeMoment(c).utc()};moment.unix=function(input){return moment(input*1e3)};moment.duration=function(input,key){var duration=input,match=null,sign,ret,parseIso;if(moment.isDuration(input)){duration={ms:input._milliseconds,d:input._days,M:input._months}}else if(typeof input==="number"){duration={};if(key){duration[key]=input}else{duration.milliseconds=input}}else if(!!(match=aspNetTimeSpanJsonRegex.exec(input))){sign=match[1]==="-"?-1:1;duration={y:0,d:toInt(match[DATE])*sign,h:toInt(match[HOUR])*sign,m:toInt(match[MINUTE])*sign,s:toInt(match[SECOND])*sign,ms:toInt(match[MILLISECOND])*sign}}else if(!!(match=isoDurationRegex.exec(input))){sign=match[1]==="-"?-1:1;parseIso=function(inp){var res=inp&&parseFloat(inp.replace(",","."));return(isNaN(res)?0:res)*sign};duration={y:parseIso(match[2]),M:parseIso(match[3]),d:parseIso(match[4]),h:parseIso(match[5]),m:parseIso(match[6]),s:parseIso(match[7]),w:parseIso(match[8])}}ret=new Duration(duration);if(moment.isDuration(input)&&input.hasOwnProperty("_lang")){ret._lang=input._lang}return ret};moment.version=VERSION;moment.defaultFormat=isoFormat;moment.momentProperties=momentProperties;moment.updateOffset=function(){};moment.lang=function(key,values){var r;if(!key){return moment.fn._lang._abbr}if(values){loadLang(normalizeLanguage(key),values)}else if(values===null){unloadLang(key);key="en"}else if(!languages[key]){getLangDefinition(key)}r=moment.duration.fn._lang=moment.fn._lang=getLangDefinition(key);return r._abbr};moment.langData=function(key){if(key&&key._lang&&key._lang._abbr){key=key._lang._abbr}return getLangDefinition(key)};moment.isMoment=function(obj){return obj instanceof Moment||obj!=null&&obj.hasOwnProperty("_isAMomentObject")
};moment.isDuration=function(obj){return obj instanceof Duration};for(i=lists.length-1;i>=0;--i){makeList(lists[i])}moment.normalizeUnits=function(units){return normalizeUnits(units)};moment.invalid=function(flags){var m=moment.utc(NaN);if(flags!=null){extend(m._pf,flags)}else{m._pf.userInvalidated=true}return m};moment.parseZone=function(){return moment.apply(null,arguments).parseZone()};moment.parseTwoDigitYear=function(input){return toInt(input)+(toInt(input)>68?1900:2e3)};extend(moment.fn=Moment.prototype,{clone:function(){return moment(this)},valueOf:function(){return+this._d+(this._offset||0)*6e4},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().lang("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var m=moment(this).utc();if(0<m.year()&&m.year()<=9999){return formatMoment(m,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}else{return formatMoment(m,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}},toArray:function(){var m=this;return[m.year(),m.month(),m.date(),m.hours(),m.minutes(),m.seconds(),m.milliseconds()]},isValid:function(){return isValid(this)},isDSTShifted:function(){if(this._a){return this.isValid()&&compareArrays(this._a,(this._isUTC?moment.utc(this._a):moment(this._a)).toArray())>0}return false},parsingFlags:function(){return extend({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(){return this.zone(0)},local:function(){this.zone(0);this._isUTC=false;return this},format:function(inputString){var output=formatMoment(this,inputString||moment.defaultFormat);return this.lang().postformat(output)},add:function(input,val){var dur;if(typeof input==="string"){dur=moment.duration(+val,input)}else{dur=moment.duration(input,val)}addOrSubtractDurationFromMoment(this,dur,1);return this},subtract:function(input,val){var dur;if(typeof input==="string"){dur=moment.duration(+val,input)}else{dur=moment.duration(input,val)}addOrSubtractDurationFromMoment(this,dur,-1);return this},diff:function(input,units,asFloat){var that=makeAs(input,this),zoneDiff=(this.zone()-that.zone())*6e4,diff,output;units=normalizeUnits(units);if(units==="year"||units==="month"){diff=(this.daysInMonth()+that.daysInMonth())*432e5;output=(this.year()-that.year())*12+(this.month()-that.month());output+=(this-moment(this).startOf("month")-(that-moment(that).startOf("month")))/diff;output-=(this.zone()-moment(this).startOf("month").zone()-(that.zone()-moment(that).startOf("month").zone()))*6e4/diff;if(units==="year"){output=output/12}}else{diff=this-that;output=units==="second"?diff/1e3:units==="minute"?diff/6e4:units==="hour"?diff/36e5:units==="day"?(diff-zoneDiff)/864e5:units==="week"?(diff-zoneDiff)/6048e5:diff}return asFloat?output:absRound(output)},from:function(time,withoutSuffix){return moment.duration(this.diff(time)).lang(this.lang()._abbr).humanize(!withoutSuffix)},fromNow:function(withoutSuffix){return this.from(moment(),withoutSuffix)},calendar:function(){var sod=makeAs(moment(),this).startOf("day"),diff=this.diff(sod,"days",true),format=diff<-6?"sameElse":diff<-1?"lastWeek":diff<0?"lastDay":diff<1?"sameDay":diff<2?"nextDay":diff<7?"nextWeek":"sameElse";return this.format(this.lang().calendar(format,this))},isLeapYear:function(){return isLeapYear(this.year())},isDST:function(){return this.zone()<this.clone().month(0).zone()||this.zone()<this.clone().month(5).zone()},day:function(input){var day=this._isUTC?this._d.getUTCDay():this._d.getDay();if(input!=null){input=parseWeekday(input,this.lang());return this.add({d:input-day})}else{return day}},month:makeAccessor("Month",true),startOf:function(units){units=normalizeUnits(units);switch(units){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}if(units==="week"){this.weekday(0)}else if(units==="isoWeek"){this.isoWeekday(1)}if(units==="quarter"){this.month(Math.floor(this.month()/3)*3)}return this},endOf:function(units){units=normalizeUnits(units);return this.startOf(units).add(units==="isoWeek"?"week":units,1).subtract("ms",1)},isAfter:function(input,units){units=typeof units!=="undefined"?units:"millisecond";return+this.clone().startOf(units)>+moment(input).startOf(units)},isBefore:function(input,units){units=typeof units!=="undefined"?units:"millisecond";return+this.clone().startOf(units)<+moment(input).startOf(units)},isSame:function(input,units){units=units||"ms";return+this.clone().startOf(units)===+makeAs(input,this).startOf(units)},min:function(other){other=moment.apply(null,arguments);return other<this?this:other},max:function(other){other=moment.apply(null,arguments);return other>this?this:other},zone:function(input,keepTime){var offset=this._offset||0;if(input!=null){if(typeof input==="string"){input=timezoneMinutesFromString(input)}if(Math.abs(input)<16){input=input*60}this._offset=input;this._isUTC=true;if(offset!==input){if(!keepTime||this._changeInProgress){addOrSubtractDurationFromMoment(this,moment.duration(offset-input,"m"),1,false)}else if(!this._changeInProgress){this._changeInProgress=true;moment.updateOffset(this,true);this._changeInProgress=null}}}else{return this._isUTC?offset:this._d.getTimezoneOffset()}return this},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){if(this._tzm){this.zone(this._tzm)}else if(typeof this._i==="string"){this.zone(this._i)}return this},hasAlignedHourOffset:function(input){if(!input){input=0}else{input=moment(input).zone()}return(this.zone()-input)%60===0},daysInMonth:function(){return daysInMonth(this.year(),this.month())},dayOfYear:function(input){var dayOfYear=round((moment(this).startOf("day")-moment(this).startOf("year"))/864e5)+1;return input==null?dayOfYear:this.add("d",input-dayOfYear)},quarter:function(input){return input==null?Math.ceil((this.month()+1)/3):this.month((input-1)*3+this.month()%3)},weekYear:function(input){var year=weekOfYear(this,this.lang()._week.dow,this.lang()._week.doy).year;return input==null?year:this.add("y",input-year)},isoWeekYear:function(input){var year=weekOfYear(this,1,4).year;return input==null?year:this.add("y",input-year)},week:function(input){var week=this.lang().week(this);return input==null?week:this.add("d",(input-week)*7)},isoWeek:function(input){var week=weekOfYear(this,1,4).week;return input==null?week:this.add("d",(input-week)*7)},weekday:function(input){var weekday=(this.day()+7-this.lang()._week.dow)%7;return input==null?weekday:this.add("d",input-weekday)},isoWeekday:function(input){return input==null?this.day()||7:this.day(this.day()%7?input:input-7)},isoWeeksInYear:function(){return weeksInYear(this.year(),1,4)},weeksInYear:function(){var weekInfo=this._lang._week;return weeksInYear(this.year(),weekInfo.dow,weekInfo.doy)},get:function(units){units=normalizeUnits(units);return this[units]()},set:function(units,value){units=normalizeUnits(units);if(typeof this[units]==="function"){this[units](value)}return this},lang:function(key){if(key===undefined){return this._lang}else{this._lang=getLangDefinition(key);return this}}});function rawMonthSetter(mom,value){var dayOfMonth;if(typeof value==="string"){value=mom.lang().monthsParse(value);if(typeof value!=="number"){return mom}}dayOfMonth=Math.min(mom.date(),daysInMonth(mom.year(),value));mom._d["set"+(mom._isUTC?"UTC":"")+"Month"](value,dayOfMonth);return mom}function rawGetter(mom,unit){return mom._d["get"+(mom._isUTC?"UTC":"")+unit]()}function rawSetter(mom,unit,value){if(unit==="Month"){return rawMonthSetter(mom,value)}else{return mom._d["set"+(mom._isUTC?"UTC":"")+unit](value)}}function makeAccessor(unit,keepTime){return function(value){if(value!=null){rawSetter(this,unit,value);moment.updateOffset(this,keepTime);return this}else{return rawGetter(this,unit)}}}moment.fn.millisecond=moment.fn.milliseconds=makeAccessor("Milliseconds",false);moment.fn.second=moment.fn.seconds=makeAccessor("Seconds",false);moment.fn.minute=moment.fn.minutes=makeAccessor("Minutes",false);moment.fn.hour=moment.fn.hours=makeAccessor("Hours",true);moment.fn.date=makeAccessor("Date",true);moment.fn.dates=deprecate("dates accessor is deprecated. Use date instead.",makeAccessor("Date",true));moment.fn.year=makeAccessor("FullYear",true);moment.fn.years=deprecate("years accessor is deprecated. Use year instead.",makeAccessor("FullYear",true));moment.fn.days=moment.fn.day;moment.fn.months=moment.fn.month;moment.fn.weeks=moment.fn.week;moment.fn.isoWeeks=moment.fn.isoWeek;moment.fn.quarters=moment.fn.quarter;moment.fn.toJSON=moment.fn.toISOString;extend(moment.duration.fn=Duration.prototype,{_bubble:function(){var milliseconds=this._milliseconds,days=this._days,months=this._months,data=this._data,seconds,minutes,hours,years;data.milliseconds=milliseconds%1e3;seconds=absRound(milliseconds/1e3);data.seconds=seconds%60;minutes=absRound(seconds/60);data.minutes=minutes%60;hours=absRound(minutes/60);data.hours=hours%24;days+=absRound(hours/24);data.days=days%30;months+=absRound(days/30);data.months=months%12;years=absRound(months/12);data.years=years},weeks:function(){return absRound(this.days()/7)},valueOf:function(){return this._milliseconds+this._days*864e5+this._months%12*2592e6+toInt(this._months/12)*31536e6},humanize:function(withSuffix){var difference=+this,output=relativeTime(difference,!withSuffix,this.lang());if(withSuffix){output=this.lang().pastFuture(difference,output)}return this.lang().postformat(output)},add:function(input,val){var dur=moment.duration(input,val);this._milliseconds+=dur._milliseconds;this._days+=dur._days;this._months+=dur._months;this._bubble();return this},subtract:function(input,val){var dur=moment.duration(input,val);this._milliseconds-=dur._milliseconds;this._days-=dur._days;this._months-=dur._months;this._bubble();return this},get:function(units){units=normalizeUnits(units);return this[units.toLowerCase()+"s"]()},as:function(units){units=normalizeUnits(units);return this["as"+units.charAt(0).toUpperCase()+units.slice(1)+"s"]()},lang:moment.fn.lang,toIsoString:function(){var years=Math.abs(this.years()),months=Math.abs(this.months()),days=Math.abs(this.days()),hours=Math.abs(this.hours()),minutes=Math.abs(this.minutes()),seconds=Math.abs(this.seconds()+this.milliseconds()/1e3);if(!this.asSeconds()){return"P0D"}return(this.asSeconds()<0?"-":"")+"P"+(years?years+"Y":"")+(months?months+"M":"")+(days?days+"D":"")+(hours||minutes||seconds?"T":"")+(hours?hours+"H":"")+(minutes?minutes+"M":"")+(seconds?seconds+"S":"")}});function makeDurationGetter(name){moment.duration.fn[name]=function(){return this._data[name]}}function makeDurationAsGetter(name,factor){moment.duration.fn["as"+name]=function(){return+this/factor}}for(i in unitMillisecondFactors){if(unitMillisecondFactors.hasOwnProperty(i)){makeDurationAsGetter(i,unitMillisecondFactors[i]);makeDurationGetter(i.toLowerCase())}}makeDurationAsGetter("Weeks",6048e5);moment.duration.fn.asMonths=function(){return(+this-this.years()*31536e6)/2592e6+this.years()*12};moment.lang("en",{ordinal:function(number){var b=number%10,output=toInt(number%100/10)===1?"th":b===1?"st":b===2?"nd":b===3?"rd":"th";return number+output}});function makeGlobal(shouldDeprecate){if(typeof ender!=="undefined"){return}oldGlobalMoment=globalScope.moment;if(shouldDeprecate){globalScope.moment=deprecate("Accessing Moment through the global scope is "+"deprecated, and will be removed in an upcoming "+"release.",moment)}else{globalScope.moment=moment}}if(hasModule){module.exports=moment}else if(typeof define==="function"&&define.amd){define("moment",function(require,exports,module){if(module.config&&module.config()&&module.config().noGlobal===true){globalScope.moment=oldGlobalMoment}return moment});makeGlobal(true)}else{makeGlobal()}}).call(this)}).call(this,typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}]},{},[]);require("console-log").show(true);var Financial=require("financial");var Money=require("accounting");var calcPayment=function(loanRate,loanYears,loanAmt){var monthlyPayment=Financial.PMT(loanRate/100/12,loanYears*12,loanAmt);monthlyPayment=Math.abs(monthlyPayment);return makeMoney(monthlyPayment)};var calcInterest=function(loanRate,loanYears,loanAmt,startPeriod,endPeriod,type){var totalInterest=Financial.CUMIPMT(loanRate/100/12,loanYears*12,loanAmt,startPeriod,endPeriod*12,type);totalInterest=Math.abs(totalInterest);return makeMoney(totalInterest)};var makeMoney=function(num){return Money.accounting.formatMoney(num)};console.log("You will pay "+calcPayment(5,30,2e5)+" per month");console.log("You will have paid "+calcInterest(5,30,2e5,1,30,0)+" in total interest");
{
"name": "requirebin-sketch",
"version": "1.0.0",
"dependencies": {
"console-log": "1.0.0",
"accounting": "0.3.2",
"financial": "0.0.4"
}
}
<style type='text/css'>html, body { margin: 0; padding: 0; border: 0; }
body, html { height: 100%; width: 100%; }</style>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment