forked from lichen-community-systems/Flocking
/
flocking-no-jquery.min.js
12 lines (11 loc) · 311 KB
/
flocking-no-jquery.min.js
1
2
3
4
5
6
7
8
9
10
11
12
/*! Flocking 0.2.0-dev, Copyright 2016 Colin Clark | flockingjs.org */
!function(a,b){"object"==typeof exports?(a.flock=exports,b(exports,require("jquery"))):"function"==typeof define&&define.amd?define(["exports","jquery"],function(c,d){return a.flock=c,a.flock,b(c,d)}):(a.flock={},b(a.flock,jQuery))}(this,function(a,b){window.jQuery=b;var c=c||{},d=d||c;!function(a,b){"use strict";function c(a,b,c,d){for(var e=a[c],f=0;f<d.length-1;++f)e=d[f+1](e,c);b[c]=e}function d(a,c,d,e){for(var f=0;d>f;++f)a=e(a,c[f],f,b.makeArray(c));return a}function e(a,b,c,e){for(var f=[],g=0;g<a.length;++g){var h=d(a[g],b,c,e[g]);void 0!==h&&f.push(h)}return f}b.version="Infusion 2.0.0",b.Error=Error,b.environment={fluid:b},b.global=b.global||"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},b.invokeLater=function(a){return setTimeout(a,1)},b.defeatLogging=!0,b.activityTracing=!1,b.activityTrace=[];var f=/(%\w+)/g;b.renderOneActivity=function(a,b){for(var c=b===!0?[]:[" while "],d=a.message,e=f.lastIndex=0;;){var g=f.exec(d);if(!g)break;var h=g[1].substring(1);c.push(d.substring(e,g.index)),c.push(a.args[h]),e=f.lastIndex}return e<d.length&&c.push(d.substring(e)),c},b.renderActivity=function(a,c){return c=c||b.renderOneActivity,b.transform(a,c)},b.singleThreadLocal=function(a){var b=a();return function(a){return void 0===a?b:b=a}},b.threadLocal=b.singleThreadLocal,b.globalThreadLocal=b.threadLocal(function(){return{}}),b.getActivityStack=function(){var a=b.globalThreadLocal();return a.activityStack||(a.activityStack=[]),a.activityStack},b.describeActivity=b.getActivityStack,b.logActivity=function(a){a=a||b.describeActivity();var c=b.renderActivity(a).reverse();b.log("Current activity: "),b.each(c,function(a){b.doLog(a)})},b.pushActivity=function(a,c,d){var e={type:a,message:c,args:d,time:(new Date).getTime()};b.activityTracing&&b.activityTrace.push(e),b.passLogLevel(b.logLevel.TRACE)&&b.doLog(b.renderOneActivity(e,!0));var f=b.getActivityStack();f.push(e)},b.popActivity=function(a){a=a||1,b.activityTracing&&b.activityTrace.push({pop:a});var c=b.getActivityStack(),d=c.length-a;c.length=0>d?0:d},b.FluidError=function(){var a=Error.apply(this,arguments);this.message=a.message;try{throw a}catch(a){this.stack=a.stack}return this},b.FluidError.prototype=Object.create(Error.prototype),b.logFailure=function(a,c){b.log.apply(null,[b.logLevel.FAIL,"ASSERTION FAILED: "].concat(a)),b.logActivity(c)},b.renderLoggingArg=function(a){return b.isPrimitive(a)||!b.isPlainObject(a)?a:JSON.stringify(a)},b.builtinFail=function(a){var c=b.transform(a,b.renderLoggingArg).join("");throw new b.FluidError("Assertion failure - check console for more details: "+c)},b.fail=function(){var a=b.makeArray(arguments),c=b.makeArray(b.describeActivity());b.popActivity(c.length),b.failureEvent?b.failureEvent.fire(a,c):(b.logFailure(a,c),b.builtinFail(a,c))},b.expect=function(a,c,d){b.transform(b.makeArray(d),function(d){"undefined"==typeof c[d]&&b.fail(a+" missing required parameter "+d)})},b.isLogging=function(){return g[0].priority>b.logLevel.IMPORTANT.priority},b.isLogLevel=function(a){return b.isMarker(a)&&void 0!==a.priority},b.passLogLevel=function(a){return a.priority<=g[0].priority},b.setLogging=function(a){var c;"boolean"==typeof a?c=b.logLevel[a?"INFO":"IMPORTANT"]:b.isLogLevel(a)?c=a:b.fail("Unrecognised fluid logging level ",a),g.unshift(c),b.defeatLogging=!b.isLogging()},b.setLogLevel=b.setLogging,b.popLogging=function(){var a=1===g.length?g[0]:g.shift();return b.defeatLogging=!b.isLogging(),a},b.doLog=function(a){"undefined"!=typeof console&&(console.debug?console.debug.apply(console,a):"function"==typeof console.log&&console.log.apply(console,a))},b.log=function(){var a=b.makeArray(arguments),c=b.logLevel.INFO;if(b.isLogLevel(a[0])&&(c=a.shift()),b.passLogLevel(c)){var d=b.renderTimestamp(new Date)+": ",e=[d].concat(a);b.doLog(e)}},b.isValue=function(a){return void 0!==a&&null!==a},b.isPrimitive=function(a){var b=typeof a;return!a||"string"===b||"boolean"===b||"number"===b||"function"===b},b.isArrayable=function(a){return a&&(a.jquery||"[object Array]"===Object.prototype.toString.call(a))},b.isPlainObject=function(a){var b=Object.prototype.toString.call(a);return"[object Array]"===b?!0:"[object Object]"!==b?!1:!a.constructor||!a.constructor.prototype||Object.prototype.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf")},b.typeCode=function(a){return b.isPrimitive(a)||!b.isPlainObject(a)?"primitive":b.isArrayable(a)?"array":"object"},b.isDOMNode=function(a){return a&&"number"==typeof a.nodeType},b.isComponent=function(a){return a&&a.constructor===b.componentConstructor},b.identity=function(a){return a},b.notImplemented=function(){b.fail("This operation is not implemented")},b.freshContainer=function(a){return b.isArrayable(a)?[]:{}},b.isUncopyable=function(a){return b.isPrimitive(a)||!b.isPlainObject(a)},b.copyRecurse=function(a,c){return c.length>b.strategyRecursionBailout&&b.fail("Runaway recursion encountered in fluid.copy - reached path depth of "+b.strategyRecursionBailout+" via path of "+c.join(".")+"this object is probably circularly connected. Either adjust your object structure to remove the circularity or increase fluid.strategyRecursionBailout"),b.isUncopyable(a)?a:b.transform(a,function(a,d){c.push(d);var e=b.copyRecurse(a,c);return c.pop(),e})},b.copy=function(a){return b.copyRecurse(a,[])},b.extend=a.extend,b.makeArray=function(a){var c=[];if(null!==a&&void 0!==a)if(b.isPrimitive(a)||"number"!=typeof a.length)c.push(a);else for(var d=0;d<a.length;++d)c[d]=a[d];return c},b.pushArray=function(a,c,d){var e=a[c]?a[c]:a[c]=[];b.isArrayable(d)?e.push.apply(e,d):e.push(d)},b.transform=function(a){if(b.isPrimitive(a))return a;var d=b.freshContainer(a);if(b.isArrayable(a))for(var e=0;e<a.length;++e)c(a,d,e,arguments);else for(var f in a)c(a,d,f,arguments);return d},b.each=function(a,c){if(b.isArrayable(a))for(var d=0;d<a.length;++d)c(a[d],d);else for(var e in a)c(a[e],e)},b.make_find=function(a){var c=a?!1:void 0;return function(d,e,f){var g;if(b.isArrayable(d)){for(var h=0;h<d.length;++h)if(g=e(d[h],h),g!==c)return a?d[h]:g}else for(var i in d)if(g=e(d[i],i),g!==c)return a?d[i]:g;return f}},b.find=b.make_find(!1),b.find_if=b.make_find(!0),b.accumulate=function(a,b,c){for(var d=0;d<a.length;++d)c=b(a[d],c,d);return c},b.add=function(a,b){return a+b},b.remove_if=function(a,c,d){if(b.isArrayable(a))for(var e=a.length-1;e>=0;--e)c(a[e],e)&&(d&&d.unshift(a[e]),a.splice(e,1));else for(var f in a)c(a[f],f)&&(d&&(d[f]=a[f]),delete a[f]);return d||a},b.generate=function(a,b,c){for(var d=[],e=0;a>e;++e)d[e]=c?b(e):b;return d},b.iota=function(a,b){b=b||0;for(var c=[],d=0;a>d;++d)c[c.length]=b++;return c},b.getMembers=function(a,c){return b.transform(a,function(a){return b.get(a,c)})},b.filterKeys=function(c,d,e){return b.remove_if(a.extend({},c),function(a,b){return e^-1===d.indexOf(b)})},b.censorKeys=function(a,c){return b.filterKeys(a,c,!0)},b.makeFlatten=function(a){return function(c){var d=[];return b.each(c,function(){d.push(arguments[a])}),d}},b.keys=b.makeFlatten(1),b.values=b.makeFlatten(0),b.contains=function(a,c){return a?b.isArrayable(a)?-1!==a.indexOf(c):b.find(a,function(a){return c===a?!0:void 0}):void 0},b.keyForValue=function(a,c){return b.find(a,function(a,b){return c===a?b:void 0})},b.arrayToHash=function(a){var c={};return b.each(a,function(a){c[a]=!0}),c},b.stableSort=function(a,b){for(var c=0;c<a.length;c++){for(var d=a[c],e=c;e>0&&b(d,a[e-1])<0;e--)a[e]=a[e-1];a[e]=d}},b.hashToArray=function(c,d,e){var f=[];return b.each(c,function(b,c){var g={};g[d]=c,e?g=e(g,b,c)||g:a.extend(!0,g,b),f.push(g)}),f},b.flatten=function(a){var c=[];return b.each(a,function(a){b.isArrayable(a)?c=c.concat(a):c.push(a)}),c},b.clear=function(a){if(b.isArrayable(a))a.length=0;else for(var c in a)delete a[c]},b.compareStringLength=function(a){return a?function(a,b){return a.length-b.length}:function(a,b){return b.length-a.length}},b.parseInteger=function(a){return isFinite(a)&&a%1===0?Number(a):NaN},b.freezeRecursive=function(a){return b.each(a,function(a){b.freezeRecursive(a)}),b.isPlainObject(a)?Object.freeze(a):a},b.marker=function(){},b.makeMarker=function(c,d){var e=Object.create(b.marker.prototype);return e.value=c,a.extend(e,d),Object.freeze(e)},b.VALUE=b.makeMarker("VALUE"),b.NO_VALUE=b.makeMarker("NO_VALUE"),b.EXPAND=b.makeMarker("EXPAND"),b.isMarker=function(a,c){return a instanceof b.marker?c?a.value===c.value:!0:!1},b.logLevelsSpec={FATAL:0,FAIL:5,WARN:10,IMPORTANT:12,INFO:15,TRACE:20},b.logLevel=b.transform(b.logLevelsSpec,function(a,c){return b.makeMarker(c,{priority:a})});var g=[b.logLevel.IMPORTANT];b.model={},b.model.copyModel=function(c,d){b.clear(c),a.extend(!0,c,d)},b.model.parseEL=function(a){return""===a?[]:String(a).split(".")},b.model.composePath=function(a,b){return""===a?b:""===b?a:a+"."+b},b.model.composeSegments=function(){return b.makeArray(arguments).join(".")},b.lastDotIndex=function(a){return a.lastIndexOf(".")},b.model.getToTailPath=function(a){var c=b.lastDotIndex(a);return-1===c?"":a.substring(0,c)},b.model.getTailPath=function(a){var c=b.lastDotIndex(a);return a.substring(c+1)},b.path=b.model.composeSegments,b.composePath=b.model.composePath,b.requireDataBinding=function(){b.fail("Please include DataBinding.js in order to operate complex model accessor configuration")},b.model.setWithStrategy=b.model.getWithStrategy=b.requireDataBinding,b.model.resolvePathSegment=function(a,b,c,d){return!d&&a.resolvePathSegment?a.resolvePathSegment(b):c&&void 0===a[b]?a[b]={}:a[b]},b.model.parseToSegments=function(a,c,d){return"number"==typeof a||"string"==typeof a?c(a):d?b.makeArray(a):a},b.model.pathToSegments=function(a,c){var d=c&&c.parser?c.parser.parse:b.model.parseEL;return b.model.parseToSegments(a,d)},b.model.accessImpl=function(a,c,d,e,f,g,h){var i=b.model.pathToSegments(c,e),j=0;f&&(j=f.length,i=f.concat(i));var k=d===b.NO_VALUE?0:1;return a=h(a,i,j,e,k),d===b.NO_VALUE||d===b.VALUE?g?{root:a,segs:i}:a:void(a[i[i.length-1]]=d)},b.model.accessSimple=function(a,c,d,e,f,g){return b.model.accessImpl(a,c,d,e,f,g,b.model.traverseSimple)},b.model.traverseSimple=function(a,c,d,e,f){for(var g=e,h=c.length-f,i=0;h>i;++i){if(!a)return a;var j=c[i];a=e&&e[j]?e[j]:b.model.resolvePathSegment(a,j,1===f,g),e=null}return a},b.model.setSimple=function(a,c,d,e,f){b.model.accessSimple(a,c,d,e,f,!1)},b.model.getSimple=function(a,c,d,e){return null===c||void 0===c||0===c.length?a:b.model.accessSimple(a,c,b.NO_VALUE,d,e,!1)},b.getImmediate=function(a,b,c){for(var d=void 0===c?b.length:c+1,e=0;d>e;++e)a=a?a[b[e]]:void 0;return a},b.decodeAccessorArg=function(a){return a&&a!==b.model.defaultGetConfig&&a!==b.model.defaultSetConfig?"environment"===a.type?a.value:void 0:null},b.set=function(a,c,d,e,f){var g=b.decodeAccessorArg(e);void 0===g?b.model.setWithStrategy(a,c,d,e,f):b.model.setSimple(a,c,d,g,f)},b.get=function(a,c,d,e){var f=b.decodeAccessorArg(d);return void 0===f?b.model.getWithStrategy(a,c,d,e):b.model.accessImpl(a,c,b.NO_VALUE,f,null,!1,b.model.traverseSimple)},b.getGlobalValue=function(a,c){return a?(c=c||b.environment,b.get(b.global,a,{type:"environment",value:c})):void 0},b.bind=function(a,c,d){return a[c].apply(a,b.makeArray(d))},b.invokeGlobalFunction=function(a,c,d){var e=b.getGlobalValue(a,d);return e?e.apply(null,b.isArrayable(c)?c:b.makeArray(c)):void b.fail("Error invoking global function: "+a+" could not be located")},b.registerGlobalFunction=function(a,c,d){d=d||b.environment,b.set(b.global,a,c,{type:"environment",value:d})},b.setGlobalValue=b.registerGlobalFunction,b.registerNamespace=function(a,c){c=c||b.environment;var d=b.getGlobalValue(a,c);return d||(d={},b.setGlobalValue(a,d,c)),d},b.dumpEl=b.identity,b.renderTimestamp=b.identity,b.generateUniquePrefix=function(){return Math.floor(1e12*Math.random()).toString(36)+"-"};var h=b.generateUniquePrefix();b.fluidInstance=h;var i=1;b.allocateGuid=function(){return h+i++},b.registerNamespace("fluid.event"),b.extremePriority=4e9,b.priorityTypes={first:-1,last:1,before:0,after:0},b.extremalPriorities={none:0,testing:10,authoring:20},b.parsePriorityConstraint=function(a,c,d){var e=a.split(":"),f=e[0],g=b.priorityTypes[f];return void 0===g&&b.fail("Invalid constraint type in priority field "+a+": the only supported values are "+b.keys(b.priorityTypes).join(", ")+" or numeric"),c&&0===g&&b.fail("Constraint type in priority field "+a+" is not supported in a "+d+" record - you must use either a numeric value or first, last"),{type:e[0],target:e[1]}},b.parsePriority=function(a,c,d,e){a=a||0;var f={count:c||0,fixed:null,constraint:null,site:e};"number"==typeof a?f.fixed=-a:f.constraint=b.parsePriorityConstraint(a,d,e);var g=f.constraint?b.priorityTypes[f.constraint.type]:0;if(0!==g){var h=f.constraint.target||"none",i=b.extremalPriorities[h];void 0===i&&b.fail("Unrecognised extremal priority target "+h+": the currently supported values are "+b.keys(b.extremalPriorities).join(", ")+": register your value in fluid.extremalPriorities"),f.fixed=g*(b.extremePriority+i)}return null!==f.fixed&&(f.fixed+=f.count/1024),f},b.renderPriority=function(a){return a.constraint?a.constraint.target?a.constraint.type+":"+a.constraint.target:a.constraint.type:Math.floor(a.fixed)},b.compareByPriority=function(a,b){return null!==a.priority.fixed&&null!==b.priority.fixed?a.priority.fixed-b.priority.fixed:(null===a.priority.fixed)-(null===b.priority.fixed)},b.honourConstraint=function(a,c,d){var e=a[d].priority.constraint,f=b.find(a,function(a,b){return a.namespace===e.target?b:void 0},-1);if(-1===f)return!0;if(f>=c)return!1;for(var g="after"===e.type?1:0,h=f+g,i=a[d],j=d;j>=h;--j)a[j]=a[j-1];return a[h]=i,!0},b.sortByPriority=function(a){b.stableSort(a,b.compareByPriority);for(var c=b.find(a,function(a,c){return a.priority.constraint&&0===b.priorityTypes[a.priority.constraint.type]?c:void 0},a.length);;){if(c===a.length)return a;for(var d=c,e=c;e<a.length;++e){var f=b.honourConstraint(a,c,e);f&&++c}if(c===d){var g=a.slice(c);b.fail("Could not find targets for any constraints in "+g[0].priority.site+" ",g,": none of the targets ("+b.getMembers(g,"priority.constraint.target").join(", ")+") matched any namespaces of the elements in (",a.slice(0,c)+") - this is caused by either an invalid or circular reference")}}},b.parsePriorityRecords=function(c,d,e){var f=b.hashToArray(c,"namespace",function(c,f,g){e||a.extend(c,f),c.priority=b.parsePriority(e?f:f.priority,g,!1,d)});return b.sortByPriority(f),f},b.event.identifyListener=function(a,c){return"string"==typeof a||a.$$fluid_guid||c||(a.$$fluid_guid=b.allocateGuid()),a.$$fluid_guid},b.event.impersonateListener=function(a,c){b.event.identifyListener(a),c.$$fluid_guid=a.$$fluid_guid},b.event.sortListeners=function(a){var c=[];return b.each(a,function(a){for(var b,d=0;d<a.length;++d){var e=a[d];e.softNamespace||b||(b=e)}b?c.push(b):c=c.concat(a)}),b.sortByPriority(c)},b.event.resolveListener=function(a){var c=a.globalName||("string"==typeof a?a:null);if(c){var d=b.getGlobalValue(c);d?a=d:b.fail("Unable to look up name "+c+" as a global function")}return a},b.nameComponent=function(a){return a?"component with typename "+a.typeName+" and id "+a.id:"[unknown component]"},b.event.nameEvent=function(a,c){return c+" of "+b.nameComponent(a)},b.makeEventFirer=function(a){a=a||{};var c,d=a.name||"<anonymous>",e=function(){c.listeners={},c.byId={},c.sortedListeners=[],c.addListener=function(a,d,e,f,g){if(c.destroyed&&b.fail("Cannot add listener to destroyed event firer "+c.name),a){"string"==typeof a&&(a={globalName:a});var h=g||b.event.identifyListener(a);d=d||h;var i={listener:a,namespace:d,softNamespace:f,listenerId:g,priority:b.parsePriority(e,c.sortedListeners.length,!1,"listeners")};c.byId[h]=i;var j=c.listeners[d]=b.makeArray(c.listeners[d]);j[f?"push":"unshift"](i),c.sortedListeners=b.event.sortListeners(c.listeners)}},c.addListener.apply(null,arguments)};return c={eventId:b.allocateGuid(),name:d,ownerId:a.ownerId,typeName:"fluid.event.firer",destroy:function(){c.destroyed=!0},addListener:function(){e.apply(null,arguments)},removeListener:function(a){if(c.listeners){var d,e,f;"string"==typeof a?(d=a,f=c.listeners[d],f||(e=d,d=null)):"function"==typeof a&&(e=b.event.identifyListener(a,!0),e||b.fail("Cannot remove unregistered listener function ",a," from event "+c.name));var g=c.byId[e],h=g&&g.softNamespace;d=d||g&&g.namespace||e,delete c.byId[e],f=c.listeners[d],f&&(h?b.remove_if(f,function(a){return a.listener.$$fluid_guid===e||a.listenerId===e}):f.shift(),0===f.length&&delete c.listeners[d]),c.sortedListeners=b.event.sortListeners(c.listeners)}},fire:function(){var e=c.sortedListeners;if(e&&!c.destroyed){b.log(b.logLevel.TRACE,"Firing event "+d+" to list of "+e.length+" listeners");for(var f=0;f<e.length;++f){var g=e[f];g.listener=b.event.resolveListener(g.listener);var h,i=g.listener,j=i.apply(null,arguments);if((a.preventable&&j===!1||c.destroyed)&&(h=!1),void 0!==h)return h}}}}},b.event.addListenerToFirer=function(a,c,d,e){if(e=e||b.identity,b.isArrayable(c))for(var f=0;f<c.length;++f)b.event.addListenerToFirer(a,c[f],d,e);else"function"==typeof c||"string"==typeof c?e(a).addListener(c,d):c&&"object"==typeof c&&e(a).addListener(c.listener,d||c.namespace,c.priority,c.softNamespace,c.listenerId)},b.event.resolveListenerRecord=function(a){return{records:a}},b.expandImmediate=function(a){b.fail("fluid.expandImmediate could not be loaded - please include FluidIoC.js in order to operate IoC-driven event with descriptor "+a)},b.mergeListeners=function(a,c,d){b.each(d,function(d,e){var f,g;if("{"===e.charAt(0))f=b.expandImmediate(e,a),f||b.fail("Error in listener record: key "+e+' could not be looked up to an event firer - did you miss out "events." when referring to an event firer?');else{var h=e.indexOf(".");-1!==h&&(g=e.substring(h+1),e=e.substring(0,h)),c[e]||b.fail("Listener registered for event "+e+" which is not defined for this component"),f=c[e]}var i=b.event.resolveListenerRecord(d,a,e,g,!0);b.event.addListenerToFirer(f,i.records,g,i.adderWrapper)})},b.eventFromRecord=function(a,c,d){var e,f=a&&("string"!=typeof a||"{"===a.charAt(0));return f?b.event.resolveEvent?e=b.event.resolveEvent(d,c,a):b.fail("fluid.event.resolveEvent could not be loaded - please include FluidIoC.js in order to operate IoC-driven event with descriptor ",a):e=b.makeEventFirer({name:b.event.nameEvent(d,c),preventable:"preventable"===a,ownerId:d.id}),e},b.instantiateFirers=function(a,c){b.each(c.events,function(c,d){a.events[d]=b.eventFromRecord(c,d,a)})},b.mergeListenerPolicy=function(a,c,d){"string"!=typeof d&&b.fail("Error in listeners declaration - the keys in this structure must resolve to event names - got "+d+" from ",c);var e="{"!==d.charAt(0)&&-1!==d.indexOf(".");return e?c||a:b.arrayConcatPolicy(a,c)},b.makeMergeListenersPolicy=function(a,c){return function(d,e){return d=d||{},c&&(b.isArrayable(e)||"string"==typeof e.target)?d[""]=a(d[""],e,""):b.each(e,function(b,c){d[c]=a(d[c],b,c)}),d}},b.validateListenersImplemented=function(a){var c=[];return b.each(a.events,function(d,e){b.each(d.sortedListeners,function(d){(d.listener===b.notImplemented||"fluid.notImplemented"===d.listener.globalName)&&c.push({name:e,namespace:d.namespace,componentSource:b.model.getSimple(a.options.listeners,[e+"."+d.namespace,0,"componentSource"])})})}),c},b.unique=function(a){return b.remove_if(a,function(b,c){return!b||c>0&&b===a[c-1]})},b.arrayConcatPolicy=function(a,c){return b.makeArray(a).concat(b.makeArray(c))},b.failureEvent=b.makeEventFirer({name:"failure event"}),b.failureEvent.addListener(b.builtinFail,"fail"),b.failureEvent.addListener(b.logFailure,"log","before:fail"),b.pushSoftFailure=function(a){"function"==typeof a?b.failureEvent.addListener(a,"fail"):-1===a?b.failureEvent.removeListener("fail"):"boolean"==typeof a&&b.fail("pushSoftFailure with boolean value is no longer supported")},b.componentConstructor=function(){},b.typeTag=function(a){var c=Object.create(b.componentConstructor.prototype);return c.typeName=a,c.id=b.allocateGuid(),c};var j=1,k={};b.defaultsStore={};var l=function(a,c,d){var e=!0;d?e=1===c.length:c=b.makeArray(c);for(var f=c.length-1;f>=0;--f){var g=c[f];if(g&&!a.gradeHash[g]){var h="{"===g.charAt(0),i=(h?null:e?b.rawDefaults(g):b.getGradedDefaults(g))||{},m=k[g]||j-1;a.lastTick=Math.max(a.lastTick,m),a.gradeHash[g]=!0,a.gradeChain.push(g),a.optionsChain.push(i);for(var n=b.makeArray(i.gradeNames),o=n.length-1;o>=0;--o){var p=n[o];e?l(a,p):a.gradeHash[p]||(a.gradeHash[p]=!0,a.gradeChain.push(p))}}}return a};b.resolveGradeStructure=function(a,c){var d={lastTick:0,gradeChain:[],gradeHash:{},optionsChain:[]};return l(d,[a].concat(b.makeArray(c)),!0)};var m={};b.gradeNamesToKey=function(a,b){return a+"|"+b.join("|")},b.hasGrade=function(a,c){return a&&a.gradeNames?b.contains(a.gradeNames,c):!1},b.resolveGrade=function(c,d,e){for(var f=b.resolveGradeStructure(d,e),g=f.optionsChain.reverse(),h={},i=0;i<g.length;++i)g[i]&&g[i].mergePolicy&&(h=a.extend(!0,h,g[i].mergePolicy));g=[h,{}].concat(g);var j=b.merge.apply(null,g);return j.gradeNames=f.gradeChain.reverse(),{defaults:j,lastTick:f&&f.lastTick}},b.getGradedDefaults=function(a,c){c=b.makeArray(c);var d=b.gradeNamesToKey(a,c),e=m[d];if(e){for(var f=0,g=e.defaults.gradeNames||[],h=0;h<g.length;++h)f=Math.max(f,k[g[h]]||0);f>e.lastTick&&(b.log("Clearing cache for component "+a+" with gradeNames ",g),e=null)}if(!e){var i=b.rawDefaults(a);if(!i)return i;e=m[d]=b.resolveGrade(i,a,c)}return e.defaults},b.upgradePrimitiveFunc=function(a,c){if(a&&b.isPrimitive(a)){var d={};return d[c||("string"==typeof a&&"{"!==a.charAt(0)?"funcName":"func")]=a,d.args=b.NO_VALUE,d}return a},b.annotateListeners=function(a,c){c.listeners=b.transform(c.listeners,function(c){var d=b.makeArray(c);return b.transform(d,function(c){return c=b.upgradePrimitiveFunc(c,"listener"),c.componentSource=a,c})}),c.invokers=b.transform(c.invokers,function(c){return c=b.upgradePrimitiveFunc(c),c&&(c.componentSource=a),c})},b.rawDefaults=function(a,c){if(void 0===c){var d=b.defaultsStore[a];return d&&d.options}b.pushActivity("registerDefaults","registering defaults for grade %componentName with options %options",{componentName:a,options:c});var e=b.expandCompact?b.expandCompact(c):b.copy(c);b.annotateListeners(a,e);var f=b.getCallerInfo&&b.getCallerInfo(6);b.defaultsStore[a]={options:e,callerInfo:f},k[a]=j++,b.popActivity()},b.doIndexDefaults=function(a,c,d,e){for(var f=b.makeArray(e.gradeNames),g=0;g<f.length;++g)if(!b.hasGrade(c,f[g]))return;for(var h="function"==typeof e.indexFunc?e.indexFunc:b.getGlobalValue(e.indexFunc),i=h(c)||[],j=0;j<i.length;++j)b.pushArray(d,i[j],a)},b.indexDefaults=function(a,c){var d={};for(var e in b.defaultsStore){var f=b.getGradedDefaults(e);b.doIndexDefaults(e,f,d,c)}return d},b.defaults=function(a,c){if(void 0===c)return b.getGradedDefaults(a);c&&c.options&&b.fail("Probable error in options structure for "+a+' with option named "options" - perhaps you meant to write these options at top level in fluid.defaults? - ',c),b.rawDefaults(a,c);var d=b.getGradedDefaults(a);b.hasGrade(d,"fluid.function")||b.makeComponentCreator(a)},b.makeComponentCreator=function(c){var d=function(){var a=b.getGradedDefaults(c);if(a.gradeNames&&0!==a.gradeNames.length){if(a.initFunction)return b.initComponent(c,arguments);for(var d=[],e=0;e<a.gradeNames.length;++e){var f=a.gradeNames[e],g=b.rawDefaults(f);g||d.push(f)}0===d.length?b.fail("Cannot make component creator for type "+c+" which does not have an initFunction defined"):b.fail("The grade hierarchy of component with type "+c+" is incomplete - it inherits from the following grade(s): "+d.join(", ")+" for which the grade definitions are corrupt or missing. Please check the files which might include these grades and ensure they are readable and have been loaded by this instance of Infusion")}else b.fail("Cannot make component creator for type "+c+" which does not have any gradeNames defined")},e=b.getGlobalValue(c);e&&a.extend(d,e),b.setGlobalValue(c,d)};var n={};b.derefMergePolicy=function(a){return(a?a["*"]:n)||n},b.compileMergePolicy=function(a){var c={},d={},e={builtins:c,defaultValues:d};return a?(b.each(a,function(a,f){var g={},h=!0;if("function"==typeof a)g.func=a;else if("object"==typeof a)g=a;else if(b.isDefaultValueMergePolicy(a))b.set(d,f,"{that}.options."+a),e.hasDefaults=!0,h=!1;else for(var i=a.split(/\s*,\s*/),j=0;j<i.length;++j)g[i[j]]=!0;h&&b.set(c,b.composePath(f,"*"),g)}),e):e},b.isDefaultValueMergePolicy=function(a){return"string"==typeof a&&-1===a.indexOf(",")&&!/replace|nomerge|noexpand/.test(a)},b.mergeOneImpl=function(a,c,d,e,f,g,h){var i=a,j=b.isPrimitive(a);return void 0!==c&&(f.func||null===c||!b.isPlainObject(c)||f.nomerge?(e[d]=void 0,i=f.func?f.func.call(null,a,c,h[g-1],h,g):c):j&&(i=a=b.freshContainer(c))),i},b.fetchMergeChildren=function(a,c,d,e,f,g){for(var h=b.derefMergePolicy(f),i=e.length-1;i>=0;--i){var j=e[i];if(void 0!==j&&(b.each(j,function(h,i){i in a||(d[c]=i,b.getImmediate(g.exceptions,d,c)||g.strategy(a,i,c+1,d,e,f))}),h.replace))break}return a},b.inEvaluationMarker=Object.freeze({__CURRENTLY_IN_EVALUATION__:!0}),b.strategyRecursionBailout=50,b.makeMergeStrategy=function(a){var c=function(c,f,g,h,i,j){if(g>b.strategyRecursionBailout&&b.fail("Overflow/circularity in options merging, current path is ",h," at depth ",g,' - please protect components from merging using the "nomerge" merge policy'),b.isPrimitive(c))return void 0;b.isTracing&&b.tracing.pathCount.push(b.path(h.slice(0,g)));var k;if(f in c){if(k=c[f],!a.evaluateFully)return k}else c!==b.inEvaluationMarker&&(c[f]=b.inEvaluationMarker);void 0===i&&(h=b.makeArray(h),i=e(a.sources,h,g-1,a.sourceStrategies),j=d(a.mergePolicy,h,g-1,b.concreteTrundler));var l,m,n,o=b.concreteTrundler(j,f),p=b.derefMergePolicy(o);p.replace?(l=1-i.length,m=0,n=-1):(l=0,m=i.length-1,n=1);for(var q,r=[],s=l;m>=s;++s){var t=n*s,u=a.sourceStrategies[t](i[t],f,g,h);if(void 0!==u&&(r[t]=u,void 0===k)){if(-1===n){q=c[f]=u;break}q=b.mergeOneImpl(q,u,s,r,p,g,h,a),c!==b.inEvaluationMarker&&(c[f]=q)}}return void 0!==k&&(q=k),r.length>0&&b.isPlainObject(q)&&b.fetchMergeChildren(q,g,h,r,o,a),void 0===k&&0===r.length&&delete c[f],q};return a.strategy=c,c},b.driveStrategy=function(a,c,d){c=b.makeArray(c);for(var e=0;e<c.length;++e){if(!a)return void 0;a=d(a,c[e],e+1,c)}return a},b.concreteTrundler=function(a,b){return a?a[b]:void 0},b.merge=function(a){var c=Array.prototype.slice.call(arguments,1),d=b.compileMergePolicy(a).builtins,e=b.makeMergeOptions(d,c,{});return e.initter(),e.target},b.simpleGingerBlock=function(a,c){var d={target:a,simple:!0,strategy:b.concreteTrundler,initter:b.identity,recordType:c,priority:b.mergeRecordTypes[c]};return d},b.makeMergeOptions=function(c,d,e){var f={mergePolicy:c,sources:d};return f=a.extend(f,e),f.target=f.target||b.freshContainer(f.sources[0]),f.sourceStrategies=f.sourceStrategies||b.generate(f.sources.length,b.concreteTrundler),f.initter=function(){f.evaluateFully=!0,b.fetchMergeChildren(f.target,0,[],f.sources,f.mergePolicy,f)},b.makeMergeStrategy(f),f},b.transformOptions=function(a,c){b.expect("Options transformation record",c,["transformer","config"]);var d=b.getGlobalValue(c.transformer);return d.call(null,a,c.config)},b.findMergeBlocks=function(a,c){return b.remove_if(b.makeArray(a),function(a){return a.recordType!==c})},b.transformOptionsBlocks=function(a,c,d){b.each(d,function(d){var e=b.findMergeBlocks(a,d);b.each(e,function(a){var d=a.source?"source":"target";a[a.simple||"target"===d?"target":"source"]=b.transformOptions(a[d],c)})})},b.dedupeDistributionNamespaces=function(a){var c={};b.remove_if(a,function(a){var b=a.namespace;if(b){if(c[b]&&c[b]!==a.contextThat.id)return!0;c[b]=a.contextThat.id}})},b.deliverOptionsStrategy=b.identity,b.computeComponentAccessor=b.identity,b.computeDynamicComponents=b.identity,b.mergeRecordTypes={defaults:1e3,defaultValueMerge:900,subcomponentRecord:800,user:700,distribution:100},b.model.applyChangeRequest=function(c,d){var e=d.segs;if(0===e.length)"ADD"===d.type?a.extend(!0,c,d.value):b.clear(c);else if("ADD"===d.type)b.model.setSimple(c,d.segs,d.value);else{for(var f=0;f<e.length-1;++f)if(c=c[e[f]],!c)return;var g=e[e.length-1];delete c[g]}},b.destroyValue=function(a,c){a&&b.model.applyChangeRequest(a,{type:"DELETE",segs:c})},b.mergeComponentOptions=function(c,d,e,f){function g(){s=b.driveStrategy(l,"mergePolicy",q.strategy),s=a.extend({},b.rootMergePolicy,s),r=b.compileMergePolicy(s),a.extend(!0,j,r.builtins)}var h=b.rawDefaults(d),i=b.getGradedDefaults(d,h&&h.gradeNames?null:f.gradeNames),j={},k=[];k=b.expandComponentOptions?k.concat(b.expandComponentOptions(j,i,e,c)):k.concat([b.simpleGingerBlock(i,"defaults"),b.simpleGingerBlock(e,"user")]);var l={},m=[],n=[],o={target:l,sourceStrategies:m},p=function(){b.each(k,function(a){b.isPrimitive(a.priority)&&(a.priority=b.parsePriority(a.priority,0,!1,"options distribution"))}),b.sortByPriority(k),b.dedupeDistributionNamespaces(k),m.length=0,n.length=0,b.each(k,function(a){m.push(a.strategy),n.push(a.target)})};p();var q=b.makeMergeOptions(j,n,o);q.mergeBlocks=k,q.updateBlocks=p,q.destroyValue=function(a){for(var c=0;c<k.length;++c)b.destroyValue(k[c].target,a);b.destroyValue(o.target,a)};var r,s;g(),q.computeMergePolicy=g,r.hasDefaults&&(b.generateExpandBlock?(k.push(b.generateExpandBlock({options:r.defaultValues,recordType:"defaultValueMerge",priority:b.mergeRecordTypes.defaultValueMerge},c,{})),p()):b.fail("Cannot operate mergePolicy ",s," for component ",c," without including FluidIoC.js")),c.options=l,b.driveStrategy(l,"gradeNames",q.strategy),b.deliverOptionsStrategy(c,l,q),b.computeComponentAccessor(c,e&&e.localRecord);var t=b.driveStrategy(l,"transformOptions",q.strategy);return t&&(b.transformOptionsBlocks(k,t,["user","subcomponentRecord"]),p()),o.target.mergePolicy||g(),q},b.defaults("fluid.function",{}),b.invokeGradedFunction=function(a,c){var d=b.defaults(a);d&&d.argumentMap&&b.hasGrade(d,"fluid.function")||b.fail("Cannot look up name "+a+" to a function with registered argumentMap - got defaults ",d);var e=[];return b.each(d.argumentMap,function(a,b){e[a]=c[b]}),b.invokeGlobalFunction(a,e)},b.noNamespaceDistributionPrefix="no-namespace-distribution-",b.mergeOneDistribution=function(c,d,e){var f=d.namespace||e||b.noNamespaceDistributionPrefix+b.allocateGuid();d.namespace=f,c[f]=a.extend(!0,{},c[f],d)},b.distributeOptionsPolicy=function(a,c){if(a=a||{},b.isArrayable(c))for(var d=0;d<c.length;++d)b.mergeOneDistribution(a,c[d]);else"string"==typeof c.target?b.mergeOneDistribution(a,c):b.each(c,function(c,d){b.mergeOneDistribution(a,c,d)});return a},b.mergingArray=function(){},b.mergingArray.prototype=[],b.membersMergePolicy=function(a,c){return a=a||{},b.each(c,function(c,d){a[d]||(a[d]=new b.mergingArray),c instanceof b.mergingArray?a[d].push.apply(a[d],c):void 0!==c&&a[d].push(c)}),a},b.invokerStrategies=b.arrayToHash(["func","funcName","listener","this","method"]),b.invokersMergePolicy=function(c,d){return c=c||{},b.each(d,function(d,e){if(!d)return void(c[e]=d);d=b.upgradePrimitiveFunc(d);var f=c[e];f||(f=c[e]={});for(var g in b.invokerStrategies)if(g in d)for(var h in b.invokerStrategies)f[h]=void 0;a.extend(f,d)}),c},b.rootMergePolicy={gradeNames:b.arrayConcatPolicy,distributeOptions:b.distributeOptionsPolicy,members:{noexpand:!0,func:b.membersMergePolicy},invokers:{noexpand:!0,func:b.invokersMergePolicy},transformOptions:"replace",listeners:b.makeMergeListenersPolicy(b.mergeListenerPolicy)},b.defaults("fluid.component",{initFunction:"fluid.initLittleComponent",mergePolicy:b.rootMergePolicy,argumentMap:{options:0},events:{onCreate:null,onDestroy:null,afterDestroy:null}}),b.defaults("fluid.emptySubcomponent",{gradeNames:["fluid.component"]}),b.computeNickName=function(a){var c=b.model.parseEL(a);return c[c.length-1]},b.defaults("fluid.typeFount",{gradeNames:["fluid.component"]}),b.initLittleComponent=function(a,c,d,e){var f=b.typeTag(a);f.lifecycleStatus="constructing",d=d||{gradeNames:"fluid.component"},f.destroy=b.makeRootDestroy(f);
var g=b.mergeComponentOptions(f,a,c,d);g.exceptions={members:{model:!0,modelRelay:!0}};var h=f.options;f.events={},(e||b.identity)(f,h,g.strategy),b.computeDynamicComponents(f,g);for(var i=0;i<g.mergeBlocks.length;++i)g.mergeBlocks[i].initter();return g.initter(),delete h.mergePolicy,b.instantiateFirers(f,h),b.mergeListeners(f,f.events,h.listeners),f},b.diagnoseFailedView=b.identity,b.makeRootDestroy=function(a){return function(){b.doDestroy(a),a.events.afterDestroy.fire(a,"",null)}},b.isDestroyed=function(a){return"destroyed"===a.lifecycleStatus},b.doDestroy=function(a,b,c){a.events.onDestroy.fire(a,b||"",c),a.lifecycleStatus="destroyed";for(var d in a.events)"afterDestroy"!==d&&"function"==typeof a.events[d].destroy&&a.events[d].destroy();a.applier&&a.applier.destroy()},b.initComponent=function(a,c){var d=b.defaults(a);d.gradeNames||b.fail("Cannot initialise component "+a+" which has no gradeName registered");var e,f=[a].concat(b.makeArray(c));b.pushActivity("initComponent","constructing component of type %componentName with arguments %initArgs",{componentName:a,initArgs:c}),e=b.invokeGlobalFunction(d.initFunction,f),b.diagnoseFailedView(a,e,d,f),b.initDependents&&b.initDependents(e);var g=b.validateListenersImplemented(e);return g.length>0&&b.fail(b.transform(g,function(a){return" - the listener for event "+a.name+" with namespace "+a.namespace+((a.componentSource?" which was defined in grade "+a.componentSource:"")+" needs to be overridden with a concrete implementation")})).join("\n"),"constructing"===e.lifecycleStatus&&(e.lifecycleStatus="constructed"),e.events.onCreate.fire(e),b.popActivity(),e},b.initSubcomponentImpl=function(a,c,d){var e;if("function"!=typeof c){var f="string"==typeof c?c:c.type;e="fluid.emptySubcomponent"===f?null:b.invokeGlobalFunction(f,d)}else e=c.apply(null,d);return e};var o="(?:[\\w\\u00c0-\\uFFFF*_-";b.simpleCSSMatcher={regexp:new RegExp("([#.]?)("+o+"]|\\\\.)+)","g"),charToTag:{"":"tag","#":"id",".":"clazz"}},b.IoCSSMatcher={regexp:new RegExp("([&#]?)("+o+"]|\\.|\\/)+)","g"),charToTag:{"":"context","&":"context","#":"id"}};var p=new RegExp("\\s*(>)?\\s*","g");b.parseSelector=function(a,c){var d=[];a=a.trim();var e=c.regexp;e.lastIndex=0;for(var f=0;;){for(var g=[],h=!0;;){var i=e.exec(a);if(!i)break;if(i.index!==f){if(!h)break;b.fail("Error in selector string - cannot match child selector expression starting at "+a.substring(f))}var j={},k=i[2],l=c.charToTag[i[1]];l&&(j[l]=k),g[g.length]=j,f=e.lastIndex,h=!1}p.lastIndex=f;var m={predList:g},n=p.exec(a);if(n&&n.index===f||b.fail("Error in selector string - can not match child selector expression at "+a.substring(f)),">"===n[1]&&(m.child=!0),d[d.length]=m,p.lastIndex>=a.length)break;f=p.lastIndex,e.lastIndex=p.lastIndex}return d},b.stringToRegExp=function(a,b){return new RegExp(a.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),b)},b.stringTemplate=function(a,c){var d=b.keys(c);d=d.sort(b.compareStringLength());for(var e=0;e<d.length;++e){var f=d[e],g=b.stringToRegExp("%"+f,"g");a=a.replace(g,c[f])}return a}}(b,c);var c=c||{},d=d||c;!function(a,b){"use strict";function c(a,d,e){function f(a){e.output+=a}var g=d+e.indentChars,h="function"==typeof a;if(void 0!==e.maxRenderChars&&e.output.length>e.maxRenderChars)return!0;if(null===a)f("null");else if(void 0===a)f("undefined");else if(a===b.SYNTHETIC_PROPERTY)f("[Synthetic property]");else if(b.isPrimitive(a)&&!h)f(JSON.stringify(a));else{if(-1!==e.stack.indexOf(a))return void f("(CIRCULAR)");e.stack.push(a);var i;if(b.isArrayable(a))if(0===a.length)f("[]");else{for(f("[\n"+g),i=0;i<a.length;++i){if(c(a[i],g,e))return!0;i!==a.length-1&&f(",\n"+g)}f("\n"+d+"]")}else{f("{"+(h?" Function":"")+"\n"+g);var j=b.keys(a);for(i=0;i<j.length;++i){var k=j[i],l=b.getSafeProperty(a,k);if(f(JSON.stringify(k)+": "),c(l,g,e))return!0;i!==j.length-1&&f(",\n"+g)}f("\n"+d+"}")}e.stack.pop()}}b.renderTimestamp=function(a){var b=function(a,b){b||(b=2);var c=void 0===a?"":a.toString();return"00000".substring(5-b+c.length)+c};return b(a.getHours())+":"+b(a.getMinutes())+":"+b(a.getSeconds())+"."+b(a.getMilliseconds(),3)},b.isTracing=!1,b.registerNamespace("fluid.tracing"),b.tracing.pathCount=[],b.tracing.summarisePathCount=function(a){a=a||b.tracing.pathCount;for(var c={},d=0;d<a.length;++d){var e=a[d];c[e]?++c[e]:c[e]=1}var f=[];return b.each(c,function(a,b){f.push({path:b,count:a})}),f.sort(function(a,b){return b.count-a.count}),f},b.tracing.condensePathCount=function(a,c){a=b.makeArray(a);var d={};b.each(a,function(a){d[a]=0});var e=[];return b.each(c,function(c){var f=c.path;b.find(a,function(a){return 0===f.indexOf(a)?(d[a]+=c.count,!0):void 0})||e.push(c)}),b.each(d,function(a,b){e.unshift({path:b,count:a})}),e},b.detectStackStyle=function(a){var b="other",c={offset:0};return a.arguments?b="chrome":"undefined"!=typeof window&&window.opera&&a.stacktrace?b="opera10":a.stack?(b="firefox",c.offset=-1===a.stack.indexOf("Trace exception")?1:0):"undefined"==typeof window||!window.opera||"stacktrace"in a||(b="opera"),c.style=b,c},b.obtainException=function(){try{throw new Error("Trace exception")}catch(a){return a}};var d=b.detectStackStyle(b.obtainException());b.registerNamespace("fluid.exceptionDecoders"),b.decodeStack=function(){if("firefox"!==d.style)return null;var a=b.obtainException();return b.exceptionDecoders[d.style](a)},b.exceptionDecoders.firefox=function(a){var c="at ",d=a.stack.replace(/(?:\n@:0)?\s+$/m,"").replace(/^\(/gm,"{anonymous}(").split("\n");return b.transform(d,function(a){a=a.replace(/\)/g,"");var b=a.indexOf(c);return-1===b?[a]:[a.substring(b+c.length),a.substring(0,b)]})},b.getCallerInfo=function(a){a=(a||3)-d.offset;var c=b.decodeStack(),e=c&&c[a][0];if(e){var f=e.lastIndexOf("/");-1===f&&(f=0);var g=e.indexOf(":",f);return{path:e.substring(0,f),filename:e.substring(f+1,g),index:e.substring(g+1)}}return null},b.generatePadding=function(a,b){for(var c="",d=0;b>d;++d)c+=a;return c},b.SYNTHETIC_PROPERTY={},b.getSafeProperty=function(a,c){var d=Object.getOwnPropertyDescriptor(a,c);return d&&!d.get?a[c]:b.SYNTHETIC_PROPERTY},b.prettyPrintJSON=function(d,e){return e=a.extend({indent:4,stack:[],output:""},e),e.indentChars=b.generatePadding(" ",e.indent),c(d,"",e),e.output},b.dumpEl=function(c){var d;if(!c)return"null";if(3===c.nodeType||8===c.nodeType)return"[data: "+c.data+"]";if(9===c.nodeType)return"[document: location "+c.location+"]";if(!c.nodeType&&b.isArrayable(c)){d="[";for(var e=0;e<c.length;++e)d+=b.dumpEl(c[e]),e<c.length-1&&(d+=", ");return d+"]"}return c=a(c),d=c.get(0).tagName,c.id&&(d+="#"+c.id),c.attr("class")&&(d+="."+c.attr("class")),d}}(b,c);var c=c||{};!function(a,b){"use strict";function c(a,c,d,e){for(var f=0;d>f;++f)a=e(a,c[f],f,b.makeArray(c));return a}b.visitComponentChildren=function(a,c,d,e){e=e||[];for(var f in a){var g=a[f];if(!(!b.isComponent(g)||d.visited&&d.visited[g.id])){if(e.push(f),d.visited&&(d.visited[g.id]=!0),c(g,f,e,e.length-1))return!0;d.flat||b.visitComponentChildren(g,c,d,e),e.pop()}}},b.getContextHash=function(a,b){var c=a.idToShadow[b.id];return c&&c.contextHash},b.componentHasGrade=function(a,c){var d=b.getContextHash(b.globalInstantiator,a);return!(!d||!d[c])},b.visitComponentsForMatching=function(c,d,e){var f=b.getInstantiator(c);d=a.extend({visited:{},instantiator:f},d);var g=[c],h=[b.getContextHash(f,c)],i=function(a,c,d){g.length=1,h.length=1;for(var i=0;i<d.length;++i){var j=g[i][d[i]];g[i+1]=j,h[i+1]=b.getContextHash(f,j)||{}}return e(a,g,h,d,d.length)};b.visitComponentChildren(c,i,d,[])},b.getMemberNames=function(a,c){var d=a.idToPath(c[c.length-1].id),e=a.parseEL(d);return e.unshift.apply(e,b.generate(c.length-e.length,"")),e},b.visitComponentsForVisibility=function(a,c,d,e){e=e||{visited:{},flat:!0,instantiator:a};for(var f=b.getMemberNames(a,c),g=c.length-1;g>=0;--g){var h=c[g];if(e.visited[h.id]=!0,d(h,f[g],f,g))return;if(b.visitComponentChildren(h,d,e,f))return;f.pop()}},b.mountStrategy=function(a,b,c){var d=a.length;return function(b,e,f,g){if(!(f<=a.length)){for(var h=0;h<a.length;++h)if(g[h]!==a[h])return;return c(b,e,f-a.length,g.slice(d))}}},b.invokerFromRecord=function(a,c,d){b.pushActivity("makeInvoker","beginning instantiation of invoker with name %name and record %record as child of %that",{name:c,record:a,that:d});var e=a?b.makeInvoker(d,a,c):void 0;return b.popActivity(),e},b.memberFromRecord=function(c,d,e){for(var f,g=0;g<c.length;++g){var h=b.expandImmediate(c[g],e);f=b.isPlainObject(f)?a.extend(!0,f,h):h}return f},b.recordStrategy=function(a,c,d,e,f,g,h){return g=g||[],{strategy:function(g,h,i){if(1===i){var j=b.driveStrategy(c,[e,h],d);if(void 0!==j){b.set(g,[h],b.inEvaluationMarker);var k=f(j,h,a);return b.set(g,[h],k),k}}},initter:function(){var f=b.driveStrategy(c,e,d)||{};for(var i in f)h&&h[i]||b.getForComponent(a,g.concat([i]))}}},b.instantiateFirers=function(a){var c=b.shadowForComponent(a),d=b.get(c,["eventStrategyBlock","initter"])||b.identity;d()},b.makeDistributionRecord=function(c,d,e,f,g,h){h=h||"distribution",b.pushActivity("makeDistributionRecord","Making distribution record from source record %sourceRecord path %sourcePath to target path %targetSegs",{sourceRecord:d,sourcePath:e,targetSegs:f});var i=b.copy(b.get(d,e));b.each(g,function(a){b.model.applyChangeRequest(i,{segs:a,type:"DELETE"})});var j={options:{}};return b.model.applyChangeRequest(j,{segs:f,type:"ADD",value:i}),b.checkComponentRecord(j),b.popActivity(),a.extend(j,{contextThat:c,recordType:h})},b.filterBlocks=function(c,d,e,f,g,h){var i=[];return b.each(d,function(d){var j=b.get(d.source,e);if(j){i.push(b.makeDistributionRecord(c,d.source,e,f,g,d.recordType));var k=a.extend({},j);h&&b.model.applyChangeRequest(d.source,{segs:e,type:"DELETE"}),b.each(g,function(a){var c=b.get(k,a);b.set(d.source,e.concat(a),c)})}}),i},b.noteCollectedDistribution=function(a,c,d){b.model.setSimple(a,["collectedDistributions",c,d.id],!0)},b.isCollectedDistribution=function(a,c,d){return b.model.getSimple(a,["collectedDistributions",c,d.id])},b.clearCollectedDistributions=function(a,c){b.model.applyChangeRequest(a,{segs:["collectedDistributions",c],type:"DELETE"})},b.collectDistributions=function(a,c,d,e,f,g,h){var i=g[g.length-1];!b.isCollectedDistribution(c,i,d)&&b.matchIoCSelector(d.selector,e,f,g,h)&&(a.push.apply(a,d.blocks),b.noteCollectedDistribution(c,i,d))},b.registerCollectedClearer=function(a,c,d){!a.collectedClearer&&c&&(a.collectedClearer=function(){b.clearCollectedDistributions(c,d)})},b.receiveDistributions=function(a,c,d,e){var f=b.getInstantiator(a||e),g=f.getThatStack(a||e);g.unshift(b.rootComponent);var h=b.getMemberNames(f,g),i=b.transform(g,function(a){return f.idToShadow[a.id]}),j=i[i.length-(a?1:2)],k=b.getMembers(i,"contextHash");a?(h.push(d),k.push(b.gradeNamesToHash(c)),g.push(e)):b.registerCollectedClearer(i[i.length-1],j,h[h.length-1]);for(var l=[],m=0;m<g.length-1;++m)b.each(i[m].distributions,function(a){b.collectDistributions(l,j,a,g,k,h,m)});return l},b.computeTreeDistance=function(a,b){for(var c=0;c<a.length&&c<b.length&&a[c]===b[c];)++c;return a.length+b.length-2*c},b.computeDistributionPriority=function(a,c){if(!c.priority){var d=b.getInstantiator(a),e=d.getThatStack(a),f=b.getMemberNames(d,e),g=d.getThatStack(c.contextThat),h=b.getMemberNames(d,g),i=b.computeTreeDistance(f,h);c.priority=b.mergeRecordTypes.distribution-i}return c},b.applyDistributions=function(a,c,d){var e=b.transform(c,function(c){return b.generateExpandBlock(c,a,d.mergePolicy)},function(c){return b.computeDistributionPriority(a,c)}),f=d.mergeOptions;return f.mergeBlocks.push.apply(f.mergeBlocks,e),f.updateBlocks(),e},b.matchIoCSelector=function(a,b,c,d,e){for(var f=b.length-1,g=a.length-1;;){for(var h=f===b.length-1||a[g].child,i=b[f],j=a[g],k=!0,l=0;l<j.predList.length;++l){var m=j.predList[l];if(m.context&&!c[f][m.context]&&d[f]!==m.context){k=!1;break}if(m.id&&i.id!==m.id){k=!1;break}}if(0===g&&f>e&&h&&(k=!1),k){if(0===g)return!0;--f,--g}else{if(h)return!1;--f}if(e>f)return!1}},b.queryIoCSelector=function(a,c,d){var e=b.parseSelector(c,b.IoCSSMatcher),f=[];return b.visitComponentsForMatching(a,{flat:d},function(a,c,d,g,h){b.matchIoCSelector(e,c,d,g,h)&&f.push(a)}),f},b.isIoCSSSelector=function(a){return-1!==a.indexOf(" ")},b.pushDistributions=function(a,c,d,e){var f=b.shadowForComponent(a),g=b.allocateGuid(),h={id:g,target:d,selector:c,blocks:e};return Object.freeze(h),Object.freeze(h.blocks),b.pushArray(f,"distributions",h),g},b.clearDistribution=function(a,c){var d=b.shadowForComponent(a);b.remove_if(d.distributions,function(a){return a.id===c})},b.clearDistributions=function(a){b.each(a.outDistributions,function(a){b.clearDistribution(a.targetComponent,a.distributionId)})},b.extractSelectorHead=function(a){var b=a[0].predList,c=b[0].context;return b.length=0,c},b.parseExpectedOptionsPath=function(a,c){var d=b.model.parseEL(a);return"options"!==d[0]&&b.fail("Error in options distribution path ",a," - only "+c+' paths beginning with "options" are supported'),d.slice(1)},b.replicateProperty=function(a,c,d){void 0!==a[c]&&b.each(d,function(b){b[c]=a[c]})},b.undistributableOptions=["gradeNames","distributeOptions","argumentMap","initFunction","mergePolicy","progressiveCheckerOptions"],b.distributeOptions=function(a,c){var d=b.shadowForComponent(a),e=b.driveStrategy(a.options,"distributeOptions",c);b.each(e,function(c){b.pushActivity("distributeOptions","parsing distributeOptions block %record %that ",{that:a,record:c}),"string"!=typeof c.target&&b.fail("Error in options distribution record ",c,' a member named "target" must be supplied holding an IoC reference'),"string"==typeof c.source^void 0===c.record&&b.fail("Error in options distribution record ",c,': must supply either a member "source" holding an IoC reference or a member "record" holding a literal record');var e,f,g,h=b.parseContextReference(c.target);if(b.isIoCSSSelector(h.context)){f=b.parseSelector(h.context,b.IoCSSMatcher);var i=b.extractSelectorHead(f);"/"===i?e=b.rootComponent:g=i}else g=h.context;e=e||b.resolveContext(g,a),e||b.fail("Error in options distribution record ",c," - could not resolve context {"+g+"} to a root component");var j,k=b.model.parseEL(h.path);if(void 0!==c.record)j=[b.makeDistributionRecord(a,c.record,[],k,[])];else{var l=b.parseContextReference(c.source);"that"!==l.context&&b.fail("Error in options distribution record ",c," only a context of {that} is supported");var m=b.parseExpectedOptionsPath(l.path,"source"),n=b.makeArray(c.exclusions).concat(0===m.length?b.undistributableOptions:[]),o=b.transform(n,function(a){return b.model.parseEL(a)});j=b.filterBlocks(a,d.mergeOptions.mergeBlocks,m,k,o,c.removeSource),d.mergeOptions.updateBlocks()}if(b.replicateProperty(c,"priority",j),b.replicateProperty(c,"namespace",j),f){var p=b.pushDistributions(e,f,c.target,j);d.outDistributions=d.outDistributions||[],d.outDistributions.push({targetComponent:e,distributionId:p})}else{var q=b.shadowForComponent(e);b.applyDistributions(a,j,q)}b.popActivity()})},b.gradeNamesToHash=function(a){var c={};return b.each(a,function(a){c[a]=!0,c[b.computeNickName(a)]=!0}),c},b.cacheShadowGrades=function(a,c){var d=b.gradeNamesToHash(a.options.gradeNames);d[c.memberName]||(d[c.memberName]="memberName"),c.contextHash=d,b.each(d,function(b,d){c.ownScope[d]=a,c.parentShadow&&"fluid.rootComponent"!==c.parentShadow.that.type&&(c.parentShadow.childrenScope[d]=a)})},b.deliverOptionsStrategy=function(a,c,d){var e=b.shadowForComponent(a,e);b.cacheShadowGrades(a,e),e.mergeOptions=d},b.collectDistributedGrades=function(a){var c=b.receiveDistributions(null,null,null,a.that);if(c.length>0){var d=b.applyDistributions(a.that,c,a.shadow),e=b.transform(b.getMembers(d,["source","gradeNames"]),b.makeArray);b.accumulateDynamicGrades(a,b.flatten(e))}},b.applyDynamicGrades=function(a){a.oldGradeNames=b.makeArray(a.gradeNames);var c=b.copy(b.getGradedDefaults(a.that.typeName,a.gradeNames));a.gradeNames.length=0,a.gradeNames.push.apply(a.gradeNames,c.gradeNames),b.each(a.gradeNames,function(b){"{"!==b.charAt(0)&&(a.seenGrades[b]=!0)});var d=a.shadow;b.cacheShadowGrades(a.that,d),d.mergeOptions.destroyValue(["mergePolicy"]),d.mergeOptions.destroyValue(["components"]),d.mergeOptions.destroyValue(["invokers"]),a.defaultsBlock.source=c,d.mergeOptions.updateBlocks(),d.mergeOptions.computeMergePolicy(),b.accumulateDynamicGrades(a,c.gradeNames)},b.accumulateDynamicGrades=function(a,c){b.each(c,function(c){a.seenGrades[c]||("{"===c.charAt(0)?(a.rawDynamic.push(c),a.seenGrades[c]=!0):b.contains(a.oldGradeNames,c)||a.plainDynamic.push(c))})},b.computeDynamicGrades=function(a,c,d){delete a.options.gradeNames;var e=b.driveStrategy(a.options,"gradeNames",d);e.length=0;var f=b.findMergeBlocks(c.mergeOptions.mergeBlocks,"defaults")[0],g={that:a,shadow:c,defaultsBlock:f,gradeNames:e,seenGrades:{},plainDynamic:[],rawDynamic:[]};for(b.each(c.mergeOptions.mergeBlocks,function(a){e.push.apply(e,b.makeArray(a.source&&a.source.gradeNames)),b.applyDynamicGrades(g)}),b.collectDistributedGrades(g);;){for(;g.plainDynamic.length>0;)e.push.apply(e,g.plainDynamic),g.plainDynamic.length=0,b.applyDynamicGrades(g),b.collectDistributedGrades(g);if(!(g.rawDynamic.length>0))break;var h=b.expandImmediate(g.rawDynamic.shift(),a,c.localDynamic);"function"==typeof h&&(h=h()),h&&(g.plainDynamic=g.plainDynamic.concat(h))}c.collectedClearer&&(c.collectedClearer(),delete c.collectedClearer)},b.computeDynamicComponentKey=function(a,b){return a+(0===b?"":"-"+b)},b.registerDynamicRecord=function(a,c,d,e,f){var g=b.computeDynamicComponentKey(c,d),h=b.copy(e);return delete h[f],b.set(a.options,["components",g],h),g},b.computeDynamicComponents=function(a,c){var d=b.shadowForComponent(a),e=d.subcomponentLocal={},f=b.driveStrategy(a.options,"dynamicComponents",c.strategy);b.each(f,function(c,f){if(c.sources||c.createOnEvent||b.fail("Cannot process dynamicComponents record ",c,' without a "sources" or "createOnEvent" entry'),c.sources){var g=b.expandOptions(c.sources,a);b.each(g,function(d,g){var h=b.registerDynamicRecord(a,f,g,c,"sources");e[h]={source:d,sourcePath:g}})}else if(c.createOnEvent){var h=b.event.expandOneEvent(a,c.createOnEvent);b.set(d,["dynamicComponentCount",f],0);var i=function(){var e=b.registerDynamicRecord(a,f,d.dynamicComponentCount[f]++,c,"createOnEvent"),g={arguments:b.makeArray(arguments)};b.initDependent(a,e,g)};h.addListener(i),b.recordListener(h,i,d)}})},b.computeComponentAccessor=function(a,c){var d=b.globalInstantiator,e=b.shadowForComponent(a);e.localDynamic=c;var f=a.options,g=e.mergeOptions.strategy,h=b.mountStrategy(["options"],f,g);e.invokerStrategy=b.recordStrategy(a,f,g,"invokers",b.invokerFromRecord),e.eventStrategyBlock=b.recordStrategy(a,f,g,"events",b.eventFromRecord,["events"]);var i=b.mountStrategy(["events"],a,e.eventStrategyBlock.strategy,["events"]);if(e.memberStrategy=b.recordStrategy(a,f,g,"members",b.memberFromRecord,null,{model:!0,modelRelay:!0}),e.getConfig={strategies:[b.model.funcResolverStrategy,b.makeGingerStrategy(a),h,e.invokerStrategy.strategy,e.memberStrategy.strategy,i]},b.computeDynamicGrades(a,e,g,e.mergeOptions.mergeBlocks),b.distributeOptions(a,g),e.contextHash["fluid.resolveRoot"]){var j;if(e.contextHash["fluid.resolveRootSingle"]){var k=b.getForComponent(a,["options","singleRootType"]);k||b.fail("Cannot register object with grades "+Object.keys(e.contextHash).join(", ")+" as fluid.resolveRootSingle since it has not defined option singleRootType"),j=b.typeNameToMemberName(k)}else j=b.computeGlobalMemberName(a);var l=b.resolveRootComponent;l[j]&&d.clearComponent(l,j),d.recordKnownComponent(l,a,j,!1)}return e.getConfig},b.shadowForComponent=function(a){var c=b.getInstantiator(a);return c&&a?c.idToShadow[a.id]:null},b.getForComponent=function(a,c){var d=b.shadowForComponent(a),e=d?d.getConfig:void 0;return b.get(a,c,e)},b.makeGingerStrategy=function(a){var c=b.getInstantiator(a);return function(a,d,e,f){var g=a[d];if(g===b.inEvaluationMarker&&e===f.length&&b.fail('Error in component configuration - a circular reference was found during evaluation of path segment "'+d+'": for more details, see the activity records following this message in the console, or issue fluid.setLogging(fluid.logLevel.TRACE) when running your application'),e>1)return g;if(void 0===g&&a.hasOwnProperty(d))return b.NO_VALUE;if(void 0===g){var h=c.idToShadow[a.id].path,i=c.composePath(h,d);g=c.pathToComponent[i]}if(void 0===g){var j=b.getForComponent(a,["options","components",d]);j&&(j.createOnEvent&&b.fail('Error resolving path segment "'+d+'" of path '+f.join(".")+" since component with record ",j,' has annotation "createOnEvent" - this very likely represents an implementation error. Either alter the reference so it does not match this component, or alter your workflow to ensure that the component is instantiated by the time this reference resolves'),b.initDependent(a,d),g=a[d])}return g}},b.frameworkGrades=["fluid.component","fluid.modelComponent","fluid.viewComponent","fluid.rendererComponent"],b.filterBuiltinGrades=function(a){return b.remove_if(b.makeArray(a),function(a){return-1!==b.frameworkGrades.indexOf(a)})},b.dumpGradeNames=function(a){return a.options&&a.options.gradeNames?" gradeNames: "+JSON.stringify(b.filterBuiltinGrades(a.options.gradeNames)):""},b.dumpThat=function(a){return'{ typeName: "'+a.typeName+'"'+b.dumpGradeNames(a)+" id: "+a.id+"}"},b.dumpThatStack=function(a,c){var d=b.transform(a,function(a){var d=c.idToPath(a.id);return b.dumpThat(a)+(d?" - path: "+d:"")});return d.join("\n")},b.resolveContext=function(a,c,d){if("that"===a)return c;var e,f=b.globalInstantiator;if(d){var g=f.idToShadow[c.id];return g.ownScope[a]}var h=f.getFullStack(c);return b.visitComponentsForVisibility(f,h,function(c,d){var f=b.shadowForComponent(c);return a===d||f&&f.contextHash&&f.contextHash[a]||a===c.typeName?(e=c,!0):b.getForComponent(c,["options","components",a])&&!c[a]?(e=b.getForComponent(c,a),!0):void 0}),e},b.makeStackFetcher=function(a,c,d){var e=function(e){a&&"destroyed"===a.lifecycleStatus&&b.fail("Cannot resolve reference "+b.renderContextReference(e)+" from component "+b.dumpThat(a)+" which has been destroyed");var f=e.context;if(c&&f in c)return b.get(c[f],e.path);var g=b.resolveContext(f,a,d);if(!g&&""!==e.path){var h=b.renderContextReference(e);b.fail("Failed to resolve reference "+h+" - could not match context with name "+f+" from component "+b.dumpThat(a)+" at path "+b.pathForComponent(a).join(".")+" component: ",a)}return b.getForComponent(g,e.path)};return e},b.makeStackResolverOptions=function(c,d,e){return a.extend(b.copy(b.rawDefaults("fluid.makeExpandOptions")),{localRecord:d||{},fetcher:b.makeStackFetcher(c,d,e),contextThat:c,exceptions:{members:{model:!0,modelRelay:!0}}})},b.clearListeners=function(a){b.each(a.listeners,function(a){a.event.removeListener(a.listenerId||a.listener)}),delete a.listeners},b.recordListener=function(a,c,d,e){a.ownerId!==d.that.id&&b.pushArray(d,"listeners",{event:a,listener:c,listenerId:e})},b.constructScopeObjects=function(a,b,c,d){var e=b?a.idToShadow[b.id]:null;d.childrenScope=e?Object.create(e.ownScope):{},d.ownScope=Object.create(d.childrenScope),d.parentShadow=e},b.clearChildrenScope=function(a,c,d,e){b.each(e.contextHash,function(a,b){c.childrenScope[b]===d&&delete c.childrenScope[b]})},b.instantiator=function(){function c(a,c,e,f,g){var h;if(g)h=d.idToShadow[c.id]={},h.that=c,h.path=e,h.memberName=f,b.constructScopeObjects(d,a,c,h);else{h=d.idToShadow[c.id],h.injectedPaths=h.injectedPaths||{},h.injectedPaths[e]=!0;var i=d.idToShadow[a.id],j=b.keys(h.contextHash);b.remove_if(j,function(a){return h.contextHash&&"memberName"===h.contextHash[a]}),j.push(f),b.each(j,function(a){i.childrenScope[a]||(i.childrenScope[a]=c)})}d.pathToComponent[e]&&b.fail("Error during instantiation - path "+e+" which has just created component "+b.dumpThat(c)+" has already been used for component "+b.dumpThat(d.pathToComponent[e])+" - this is a circular instantiation or other oversight. Please clear the component using instantiator.clearComponent() before reusing the path."),d.pathToComponent[e]=c}var d=b.typeTag("instantiator");return a.extend(d,{lifecycleStatus:"constructed",pathToComponent:{},idToShadow:{},modelTransactions:{init:{}},composePath:b.model.composePath,composeSegments:b.model.composeSegments,parseEL:b.model.parseEL,events:{onComponentAttach:b.makeEventFirer({name:"instantiator's onComponentAttach event"}),onComponentClear:b.makeEventFirer({name:"instantiator's onComponentClear event"})}}),d.idToPath=function(a){var b=d.idToShadow[a];return b?b.path:""},d.getThatStack=function(a){var b=d.idToShadow[a.id];if(b){for(var c=b.path,e=d.parseEL(c),f=d.pathToComponent[""],g=[],h=0;h<e.length;++h)f=f[e[h]],g.push(f);return g}return[]},d.getFullStack=function(a){var c=a?d.getThatStack(a):[];return c.unshift(b.resolveRootComponent),c},d.recordRoot=function(a){c(null,a,"","",!0)},d.recordKnownComponent=function(a,e,f,g){if(a[f]=e,b.isComponent(e)||"instantiator"===e.type){var h=d.idToShadow[a.id].path,i=d.composePath(h,f);c(a,e,i,f,g),d.events.onComponentAttach.fire(e,i,d,g)}else b.fail("Cannot record non-component with value ",e,' at path "'+f+'" of parent ',a)},d.clearComponent=function(a,c,e,f,g,h){var i=d.idToShadow[a.id];f=f||{flat:!0,instantiator:d},e=e||a[c],h=h||i.path,void 0===h&&b.fail("Cannot clear component "+c+" from component ",a," which was not created by this instantiator");var j=d.composePath(h,c),k=d.idToShadow[e.id];if(k){var l=k.path===j;d.events.onComponentClear.fire(e,j,a,l),l?(b.each(k.injectedPaths,function(a,c){var f=b.model.getToTailPath(c),g=d.pathToComponent[f];d.clearComponent(g,b.model.getTailPath(c),e)}),b.visitComponentChildren(e,function(a,b,c,g){var h=d.composeSegments.apply(null,c.slice(0,g));d.clearComponent(e,b,null,f,!0,h)},f,d.parseEL(j)),b.doDestroy(e,c,a),b.clearDistributions(k),b.clearListeners(k),e.events.afterDestroy.fire(e,c,a),delete d.idToShadow[e.id]):b.remove_if(k.injectedPaths,function(a,b){return b===j}),b.clearChildrenScope(d,i,e,k),delete d.pathToComponent[j],g||delete a[c]}},d},b.globalInstantiator=b.instantiator(),b.getInstantiator=function(a){var c=b.globalInstantiator;return a&&c.idToShadow[a.id]?c:null},b.defaults("fluid.resolveRoot"),b.defaults("fluid.resolveRootSingle",{gradeNames:"fluid.resolveRoot"}),b.constructRootComponents=function(a){b.rootComponent=a.rootComponent=b.typeTag("fluid.rootComponent"),a.recordRoot(b.rootComponent),b.resolveRootComponent=a.resolveRootComponent=b.typeTag("fluid.resolveRootComponent"),a.recordKnownComponent(b.rootComponent,b.resolveRootComponent,"resolveRootComponent",!0);var c=a.idToShadow[b.rootComponent.id],d=a.idToShadow[b.resolveRootComponent.id];d.ownScope=c.ownScope,d.childrenScope=c.childrenScope,a.recordKnownComponent(b.resolveRootComponent,a,"instantiator",!0),d.childrenScope.instantiator=a},b.constructRootComponents(b.globalInstantiator),b.expandOptions=function(a,c,d,e,f){if(!a)return a;b.pushActivity("expandOptions","expanding options %args for component %that ",{that:c,args:a});var g=b.makeStackResolverOptions(c,e);g.mergePolicy=d;var h=f&&f.defer?b.makeExpandOptions(a,g):b.expand(a,g);return b.popActivity(),h},b.localRecordExpected=b.arrayToHash(["type","options","container","createOnEvent","priority","recordType"]),b.checkComponentRecord=function(a){b.each(a,function(c,d){b.localRecordExpected[d]||b.fail("Probable error in subcomponent record ",a,' - key "'+d+'" found, where the only legal options are '+b.keys(b.localRecordExpected).join(", "))})},b.mergeRecordsToList=function(a,c){var d=[];return b.each(c,function(c,e){if(c.recordType=e,"distributions"===e)d.push.apply(d,b.transform(c,function(c){return b.computeDistributionPriority(a,c)}));else{if(!c.options)return;c.priority=b.mergeRecordTypes[e],void 0===c.priority&&b.fail("Merge record with unrecognised type "+e+": ",c),d.push(c)}}),d};var d=function(a){return b.each(["gradeNames","mergePolicy","argumentMap","components","dynamicComponents","events","listeners","modelListeners","modelRelay","distributeOptions","transformOptions"],function(c){b.set(a,[c,"*","noexpand"],!0)}),a};b.generateExpandBlock=function(a,c,d,e){var f=b.expandOptions(a.options,a.contextThat||c,d,e,{defer:!0});return f.priority=a.priority,f.namespace=a.namespace,f.recordType=a.recordType,f};var e=function(c,e,f,g){var h=b.copy(e);d(c);var i=b.shadowForComponent(g);i.mergePolicy=c;var j={defaults:{options:h}};a.extend(j,f.mergeRecords),j.subcomponentRecord&&b.checkComponentRecord(j.subcomponentRecord);var k=b.mergeRecordsToList(g,j),l=b.transform(k,function(a){return b.generateExpandBlock(a,g,c,f.localRecord)});return l};b.fabricateDestroyMethod=function(a,b,c,d){return function(){c.clearComponent(a,b,d)}},b.computeGlobalMemberName=function(a){var c=b.computeNickName(a.typeName);return c+"-"+a.id},b.typeNameToMemberName=function(a){return a.replace(/\./g,"_")},b.expandComponentOptions=function(a,c,d,f){var g=d,h=d&&d.marker===b.EXPAND?d.instantiator:null;b.pushActivity("expandComponentOptions","expanding component options %options with record %record for component %that",{options:h?d.mergeRecords.user:d,record:g,that:f}),h||(h=b.globalInstantiator,g={mergeRecords:{user:{options:b.expandCompact(d,!0)}},memberName:b.computeGlobalMemberName(f),instantiator:h,parentThat:b.rootComponent}),f.destroy=b.fabricateDestroyMethod(g.parentThat,g.memberName,h,f),h.recordKnownComponent(g.parentThat,f,g.memberName,!0);var i=e(a,c,g,f);return b.popActivity(),i},b.assembleCreatorArguments=function(c,d,e){var f=b.defaults(d);f&&f.argumentMap||b.fail("Error in assembleCreatorArguments: cannot look up component type name "+d+" to a component creator grade with an argumentMap");var g={},h=c?b.receiveDistributions(c,f.gradeNames,e.memberName,g):[];b.each(h,function(a){b.computeDistributionPriority(c,a),b.isPrimitive(a.priority)&&(a.priority=b.parsePriority(a.priority,0,!1,"options distribution"))}),b.sortByPriority(h);var i=e.localDynamic,j=a.extend({},b.censorKeys(e.componentRecord,["type"]),i),k=f.argumentMap,l=Object.keys(k).concat(["type"]);b.each(l,function(a){for(var b=0;b<h.length;++b)void 0!==h[b][a]&&(j[a]=h[b][a])}),d=j.type||d,delete j.type,delete j.options;var m={distributions:h};void 0!==e.componentRecord&&(m.subcomponentRecord=a.extend({},e.componentRecord));var n=[];b.each(k,function(a,d){var f;if("options"===d)f={marker:b.EXPAND,localRecord:i,mergeRecords:m,instantiator:b.getInstantiator(c),parentThat:c,memberName:e.memberName};else{var g=j[d];f=b.expandImmediate(g,c,j)}n[a]=f});var o={args:n,funcName:d};return o},b.initDependent=function(a,c,d){if(!a[c]){var e,f=a.options.components[c],g=b.globalInstantiator,h=g.idToShadow[a.id],i=d||h.subcomponentLocal&&h.subcomponentLocal[c];if(b.pushActivity("initDependent",'instantiating dependent component at path "%path" with record %record as child of %parent',{path:h.path+"."+c,record:f,parent:a}),"string"==typeof f)a[c]=b.inEvaluationMarker,e=b.expandImmediate(f,a),e?g.recordKnownComponent(a,e,c,!1):delete a[c];else if(f.type){var j=b.expandImmediate(f.type,a,i);j||b.fail("Error in subcomponent record: ",f.type," could not be resolved to a type for component ",c," of parent ",a);var k=b.assembleCreatorArguments(a,j,{componentRecord:f,memberName:c,localDynamic:i});e=b.initSubcomponentImpl(a,{type:k.funcName},k.args)}else b.fail("Unrecognised material in place of subcomponent "+c+' - no "type" field found');return b.popActivity(),e}},b.bindDeferredComponent=function(a,c,d){var e=b.makeArray(d.createOnEvent);b.each(e,function(e){var f="{"===e.charAt(0)?b.expandOptions(e,a):a.events[e];f&&f.addListener||b.fail("Error instantiating createOnEvent component with name "+c+" of parent ",a," since event specification "+e+" could not be expanded to an event - got ",f),f.addListener(function(){b.pushActivity("initDeferred","instantiating deferred component %componentName of parent %that due to event %eventName",{componentName:c,that:a,eventName:e}),a[c]&&b.globalInstantiator.clearComponent(a,c),b.initDependent(a,c),
b.popActivity()},null,d.priority)})},b.priorityForComponent=function(a){return a.priority?a.priority:"fluid.typeFount"===a.type||b.hasGrade(b.defaults(a.type),"fluid.typeFount")?"first":void 0},b.initDependents=function(a){b.pushActivity("initDependents","instantiating dependent components for component %that",{that:a});var c=b.shadowForComponent(a);if(c.memberStrategy.initter(),c.invokerStrategy.initter(),b.getForComponent(a,"modelRelay"),b.getForComponent(a,"model"),!b.isDestroyed(a)){var d=a.options,e=d.components||{},f=[];b.each(e,function(c,d){if(c.createOnEvent)b.bindDeferredComponent(a,d,c);else{var e=b.priorityForComponent(c);f.push({namespace:d,priority:b.parsePriority(e)})}}),b.sortByPriority(f),b.each(f,function(c){b.initDependent(a,c.namespace)}),c.subcomponentLocal&&b.clear(c.subcomponentLocal),a.lifecycleStatus="constructed",b.assessTreeConstruction(a,c),b.popActivity()}},b.assessTreeConstruction=function(a,c){var d=b.globalInstantiator,e=d.getThatStack(a),f=b.find_if(e,function(a){return"constructing"===a.lifecycleStatus});f?a.lifecycleStatus="constructed":b.markSubtree(d,a,c.path,"treeConstructed")},b.markSubtree=function(a,c,d,e){c.lifecycleStatus=e,b.visitComponentChildren(c,function(c,f){var g=a.composePath(d,f),h=a.idToShadow[c.id],i=h&&h.path===g;i&&b.markSubtree(a,c,g,e)},{flat:!0})},b.pathForComponent=function(a,c){c=c||b.getInstantiator(a);var d=c.idToShadow[a.id];return d||b.fail("Cannot get path for ",a," which is not a component"),c.parseEL(d.path)},b.construct=function(a,c,d){var e=b.destroy(a,d);return b.set(e.parent,["options","components",e.memberName],{type:c.type,options:c}),b.initDependent(e.parent,e.memberName)},b.destroy=function(a,c){c=c||b.globalInstantiator;var d=b.model.parseToSegments(a,c.parseEL,!0);0===d.length&&b.fail("Cannot destroy the root component");var e=d.pop(),f=c.composeSegments.apply(null,d),g=c.pathToComponent[f];return g||b.fail("Cannot modify component with nonexistent parent at path ",a),g[e]&&g[e].destroy(),{parent:g,memberName:e}},b.constructSingle=function(c,d,e){e=e||b.globalInstantiator,c=c||"";var f=b.model.parseToSegments(c,e.parseEL,!0);"string"==typeof d&&(d={type:d});var g=d.type;g||b.fail("Cannot construct singleton object without a type entry"),d=a.extend({},d);var h=d.gradeNames=b.makeArray(d.gradeNames);h.unshift(g),d.type="fluid.component";var i=0===f.length;i&&h.push("fluid.resolveRoot");var j=b.typeNameToMemberName(d.singleRootType||g);f.push(j),b.construct(f,d,e)},b.destroySingle=function(a,c,d){d=d||b.globalInstantiator;var e=b.model.parseToSegments(a,d.parseEL,!0),f=b.typeNameToMemberName(c);e.push(f),b.destroy(e,d)},b.makeGradeLinkage=function(a,c,d){b.defaults(a,{gradeNames:"fluid.component",distributeOptions:{record:d,target:"{/ "+c.join("&")+"}.options.gradeNames"}}),b.constructSingle([],a)},b["debugger"]=function(){},b.defaults("fluid.debuggingProbe",{gradeNames:["fluid.component"]}),b.probeToDistribution=function(a){var c=b.globalInstantiator,d=b.parseContextReference(a.target),e=b.model.parseToSegments(d.path,c.parseEL,!0);"options"!==e[0]&&e.unshift("options");var f=b.parsePriority(a.priority);return f.constraint&&!f.constraint.target&&(f.constraint.target="authoring"),{target:"{/ "+d.context+"}."+c.composeSegments.apply(null,e),record:{func:a.func,funcName:a.funcName,args:a.args,priority:b.renderPriority(f)}}},b.registerProbes=function(a){var c=b.transform(a,b.probeToDistribution),d="fluid_debuggingProbe_"+b.allocateGuid();return b.construct([d],{type:"fluid.debuggingProbe",distributeOptions:c}),d},b.deregisterProbes=function(a){b.destroy([a])},b.thisistToApplicable=function(a,c,d){return{apply:function(e,f){var g=b.expandOptions(c,d);"string"==typeof g&&(g=b.getGlobalValue(g)),g||b.fail("Could not resolve reference "+c+" to a value");var h=g[a.method];return"function"!=typeof h&&b.fail("Object ",g," at reference "+c+" has no member named "+a.method+" which is a function "),b.log("Applying arguments ",f," to method "+a.method+" of instance ",g),h.apply(g,f)}}},b.changeToApplicable=function(a,c){return{apply:function(d,e,f,g){var h=b.parseValidModelReference(c,"changePath listener record",a.changePath),i=b.expandOptions(a.value,c,{},b.extend(f,{arguments:e})),j=g&&g.source&&g.source.length?b.makeArray(a.source).concat(g.source):a.source;h.applier.change(h.modelSegs,i,a.type,j)}}},b.recordToApplicable=function(a,c,d){if(void 0!==a.changePath)return b.changeToApplicable(a,c,d);var e=a["this"];return a.method^e&&b.fail("Record ",c,' must contain both entries "method" and "this" if it contains either'),a.method?b.thisistToApplicable(a,e,c):null},b.getGlobalValueNonComponent=function(a,c){var d=b.defaults(a);return d&&b.hasGrade(d,"fluid.component")&&b.fail("Error in function specification - cannot invoke function "+a+" in the context of "+c+": component creator functions can only be used as subcomponents"),b.getGlobalValue(a)},b.makeInvoker=function(a,c,d){c=b.upgradePrimitiveFunc(c),void 0===c.args||c.args===b.NO_VALUE||b.isArrayable(c.args)||(c.args=b.makeArray(c.args));var e=b.recordToApplicable(c,a),f=b.preExpand(c.args),g={},h=b.makeStackResolverOptions(a,g,!0);return e=e||(c.funcName?b.getGlobalValueNonComponent(c.funcName,"an invoker"):b.expandImmediate(c.func,a)),e&&e.apply?e===b.notImplemented&&b.fail("Error constructing component ",a," - the invoker named "+d+" which was defined in grade "+c.componentSource+" needs to be overridden with a concrete implementation"):b.fail("Error in invoker record: could not resolve members func, funcName or method to a function implementation - got "+e+" from ",c),function(){b.defeatLogging===!1&&b.pushActivity("invokeInvoker","invoking invoker with name %name and record %record from component %that",{name:d,record:c,that:a});var i,j;return g.arguments=arguments,void 0===c.args||c.args===b.NO_VALUE?j=arguments:(b.expandImmediateImpl(f,h),j=f.source),i=e.apply(null,j),b.defeatLogging===!1&&b.popActivity(),i}},b.event.makeTrackedListenerAdder=function(a){var c=b.shadowForComponent(a);return function(a){return{addListener:function(d,e,f,g,h){b.recordListener(a,d,c,h),a.addListener.apply(null,arguments)}}}},b.event.listenerEngine=function(a,c,d){function e(){var d=b.find(a,function(a,b){return void 0===f[b]?!0:void 0});if(!d){var e=f;f={},c(e)}}var f={};b.each(a,function(a,c){d(a).addListener(function(){f[c]=b.makeArray(arguments),e()})})},b.event.dispatchListener=function(a,c,d,e,f){void 0===e.args||e.args===b.NO_VALUE||b.isArrayable(e.args)||(e.args=b.makeArray(e.args)),c=b.event.resolveListener(c);var g=b.preExpand(e.args),h={},i=b.makeStackResolverOptions(a,h,!0),j=function(){b.defeatLogging===!1&&b.pushActivity("dispatchListener","firing to listener to event named %eventName of component %that",{eventName:d,that:a});var j,k=f?arguments[0]:arguments;h.arguments=k,void 0!==e.args&&e.args!==b.NO_VALUE?(b.expandImmediateImpl(g,i),j=g.source):j=k;var l=c.apply(null,j);return b.defeatLogging===!1&&b.popActivity(),l};return b.event.impersonateListener(c,j),j},b.event.resolveSoftNamespace=function(a){if("string"!=typeof a)return null;var b=Math.max(a.lastIndexOf("."),a.lastIndexOf("}"));return a.substring(b+1)},b.event.resolveListenerRecord=function(a,c,d,e,f){var g=function(a,c){b.fail("Error in listener record - could not resolve reference ",a,' to a listener or firer. Did you miss out "events." when referring to an event firer?'+c)};b.pushActivity("resolveListenerRecord","resolving listener record for event named %eventName for component %that",{eventName:d,that:c});var h=b.makeArray(a),i=b.transform(h,function(a){var h=b.isPrimitive(a)||a.expander?{listener:a}:b.copy(a),i=b.recordToApplicable(a,c,f);i?h.listener=i:h.listener=h.listener||h.func||h.funcName,h.listener||g(a,' Listener record must contain a member named "listener", "func", "funcName" or "method"');var j=a.method?b.event.resolveSoftNamespace(a["this"])+"."+a.method:b.event.resolveSoftNamespace(h.listener);h.namespace||e||!j||(h.softNamespace=!0,h.namespace=(a.componentSource?a.componentSource:c.typeName)+"."+j);var k=h.listener=b.expandOptions(h.listener,c);k||g(a,"");var l=!1;return"fluid.event.firer"===k.typeName&&(k=k.fire,l=!0),h.listener=f&&(h.args&&"fluid.notImplemented"!==k||l)?b.event.dispatchListener(c,k,d,h):k,h.listenerId=b.allocateGuid(),h}),j={records:i,adderWrapper:f?b.event.makeTrackedListenerAdder(c):null};return b.popActivity(),j},b.event.expandOneEvent=function(a,c){var d;return d="string"==typeof c&&"{"!==c.charAt(0)?b.getForComponent(a,["events",c]):b.expandOptions(c,a),d&&"fluid.event.firer"===d.typeName||b.fail("Error in event specification - could not resolve base event reference ",c," to an event firer: got ",d),d},b.event.expandEvents=function(a,c){return"string"==typeof c?b.event.expandOneEvent(a,c):b.transform(c,function(c){return b.event.expandOneEvent(a,c)})},b.event.resolveEvent=function(a,c,d){b.pushActivity("resolveEvent","resolving event with name %eventName attached to component %that",{eventName:c,that:a});var e=b.event.makeTrackedListenerAdder(a);"string"==typeof d&&(d={event:d});var f="fluid.event.firer"===d.typeName?d:d.event||d.events;f||b.fail("Event specification for event with name "+c+" does not include a base event specification: ",d);var g,h="fluid.event.firer"===f.typeName?f:b.event.expandEvents(a,f),i="fluid.event.firer"!==h.typeName,j=d.args||i;if(j){g=b.makeEventFirer({name:" [composite] "+b.event.nameEvent(a,c)});var k=b.event.dispatchListener(a,g.fire,c,d,i);i?b.event.listenerEngine(h,k,e):e(h).addListener(k)}else g={typeName:"fluid.event.firer"},g.fire=function(){var a=b.makeArray(arguments);b.pushActivity("fireSynthetic","firing synthetic event %eventName ",{eventName:c});var d=h.fire.apply(null,a);return b.popActivity(),d},g.addListener=function(f,g,i,j,k){var l=b.event.dispatchListener(a,f,c,d);e(h).addListener(l,g,i,j,k)},g.removeListener=function(a){h.removeListener(a)};return b.popActivity(),g},b.withEnvironment=function(c,d,e){e=e||b.globalThreadLocal();try{for(var f in c)e[f]=c[f];return a.extend(e,c),d()}finally{for(var f in c)delete e[f]}},b.fetchContextReference=function(a,c,d,e,f){e&&(a=e(a,d));var g=a.context?d[a.context]:c;if(!g){var h=f&&f(a);return h||g}return a.noDereference?a.path:b.get(g,a.path)},b.makeEnvironmentFetcher=function(a,c,d,e){return d=d||b.globalThreadLocal,function(f){var g=d();return b.fetchContextReference(f,a,g,c,e)}},b.coerceToPrimitive=function(a){return"false"===a?!1:"true"===a?!0:isFinite(a)?Number(a):a},b.compactStringToRec=function(c,d){var e=c.indexOf("("),f=c.indexOf(")");if((-1===e^-1===f||e>f)&&b.fail("Badly-formed compact "+d+" record without matching parentheses: "+c),-1!==e&&-1!==f){var g=c.substring(f+1);""!==a.trim(g)&&b.fail("Badly-formed compact "+d+" record "+c+" - unexpected material following close parenthesis: "+g);var h=c.substring(0,e),i=c.substring(e+1,f),j=b.transform(i.split(","),a.trim,b.coerceToPrimitive),k=b.upgradePrimitiveFunc(h,null);return k.args=j,k}return"expander"===d&&b.fail("Badly-formed compact expander record without parentheses: "+c),c},b.expandPrefix="@expand:",b.expandCompactString=function(a,c){var d=a;if(0===a.indexOf(b.expandPrefix)){var e=a.substring(b.expandPrefix.length);d={expander:b.compactStringToRec(e,"expander")}}else c&&(d=b.compactStringToRec(a,c));return d};var f={listeners:"listener",modelListeners:"modelListener"},g=a.extend({invokers:"invoker"},f);b.expandCompactRec=function(a,c,d){b.guardCircularExpansion(a,a.length);var e=a.length>0?a[a.length-1]:"",h=g[e];!h&&a.length>1&&(h=f[a[a.length-2]]),b.each(d,function(d,e){return b.isPlainObject(d)?(c[e]=b.freshContainer(d),a.push(e),b.expandCompactRec(a,c[e],d),void a.pop()):("string"==typeof d&&(d=b.expandCompactString(d,h)),void(c[e]=d))})},b.expandCompact=function(a){var c={};return b.expandCompactRec([],c,a),c},b.isIoCReference=function(a){return"string"==typeof a&&"{"===a.charAt(0)&&a.indexOf("}")>0},b.extractEL=function(a,b){if("ALL"===b.ELstyle)return a;if(1===b.ELstyle.length){if(a.charAt(0)===b.ELstyle)return a.substring(1)}else if("${}"===b.ELstyle){var c=a.indexOf("${"),d=a.lastIndexOf("}");if(0===c&&-1!==d)return a.substring(2,d)}},b.extractELWithContext=function(a,c){var d=b.extractEL(a,c);return b.isIoCReference(d)?b.parseContextReference(d):d?{path:d}:d},b.parseContextReference=function(a,c,d){c=c||0;var e=a.indexOf("}",c+1);-1===e&&b.fail('Cannot parse context reference "'+a+'": Malformed context reference without }');var f=a.substring(c+1,e),g=d?a.indexOf(d,e+1):a.length,h=a.substring(e+1,g);return"."===h.charAt(0)&&(h=h.substring(1)),{context:f,path:h,endpos:g}},b.renderContextReference=function(a){return"{"+a.context+"}"+(a.path?"."+a.path:"")},b.resolveContextValue=function(a,c){function d(d){b.pushActivity("resolveContextValue","resolving context value %string",{string:a});var e=c.fetcher(d);return b.pushActivity("resolvedContextValue","resolved value %string to value %value",{string:a,value:e}),b.popActivity(2),e}var e;if(c.bareContextRefs&&b.isIoCReference(a))return e=b.parseContextReference(a),d(e);if(c.ELstyle&&"${}"!==c.ELstyle&&(e=b.extractELWithContext(a,c)))return d(e);for(;"string"==typeof a;){var f=a.indexOf("${"),g=a.indexOf("}",f+2);if(-1===f||-1===g)break;"{"===a.charAt(f+2)?(e=b.parseContextReference(a,f+2,"}"),g=e.endpos):e={path:a.substring(f+2,g)};var h=d(e),i=0===f&&g===a.length-1;if(void 0===h||null===h)return h;a=i?h:a.substring(0,f)+h+a.substring(g+1)}return a},b.fetchExpandChildren=function(c,d,e,f,g,h){if(f.expander){var i=b.expandExpander(c,f,h);if(b.isPrimitive(i)||!b.isPlainObject(i)||b.isArrayable(i)^b.isArrayable(c))return i;a.extend(!0,c,i)}return b.each(f,function(a,i){void 0===a?c[i]=void 0:"expander"!==i&&(e[d]=i,b.getImmediate(h.exceptions,e,d)!==!0&&h.strategy(c,i,d+1,e,f,g))}),c},b.isUnexpandable=function(a){return b.isPrimitive(a)||!b.isPlainObject(a)},b.expandSource=function(a,c,d,e,f,g,h,i){var j,k,l=b.derefMergePolicy(h);return"string"!=typeof g||l.noexpand?l.noexpand||b.isUnexpandable(g)?j=g:g.expander?j=b.expandExpander(f,g,a):(j=b.freshContainer(g),k=!0):a.defaultEL&&"{"!==g.charAt(0)?j=g:(b.pushActivity("expandContextValue","expanding context value %source held at path %path",{source:g,path:b.path.apply(null,e.slice(0,d))}),j=b.resolveContextValue(g,a),b.popActivity(1)),j!==b.NO_VALUE&&f(j),k&&i(j,g,d,e,h),j},b.guardCircularExpansion=function(a,c){c>b.strategyRecursionBailout&&b.fail("Overflow/circularity in options expansion, current path is ",a," at depth ",c,' - please ensure options are not circularly connected, or protect from expansion using the "noexpand" policy or expander')},b.makeExpandStrategy=function(a){var d=function(c,d,e,f,g){return b.fetchExpandChildren(c,e||0,f||[],d,g,a)},e=function(e,f,g,h,i,j){function k(a){e[f]=a}if(b.guardCircularExpansion(h,g),e){if(e.hasOwnProperty(f))return e[f];void 0===i&&(i=c(a.source,h,g-1,a.sourceStrategy),j=c(a.mergePolicy,h,g-1,b.concreteTrundler));var l=a.sourceStrategy(i,f,g,h),m=b.concreteTrundler(j,f);return b.expandSource(a,e,g,h,k,l,m,d)}};return a.recurse=d,a.strategy=e,e},b.defaults("fluid.makeExpandOptions",{ELstyle:"${}",bareContextRefs:!0,target:b.inCreationMarker}),b.makeExpandOptions=function(c,d){return d=a.extend({},b.rawDefaults("fluid.makeExpandOptions"),d),d.defaultEL="${}"===d.ELStyle&&d.bareContextRefs,d.expandSource=function(a){return b.expandSource(d,null,0,[],b.identity,a,d.mergePolicy,!1)},b.isUnexpandable(c)?(d.strategy=b.concreteTrundler,d.initter=b.identity,"string"==typeof c?d.target=d.expandSource(c):d.target=c):(d.source=c,d.target=b.freshContainer(c),d.sourceStrategy=d.sourceStrategy||b.concreteTrundler,b.makeExpandStrategy(d),d.initter=function(){d.target=b.fetchExpandChildren(d.target,0,[],d.source,d.mergePolicy,d)}),d},b.expand=function(a,c){var d=b.makeExpandOptions(a,c);return d.initter(),d.target},b.preExpandRecurse=function(a,c,d,e,f){function g(b){a.expanders.push({expander:b,holder:d,member:e}),delete d[e]}if(b.guardCircularExpansion(f,f.length),b.isIoCReference(c)){var h=b.parseContextReference(c),i=b.model.parseEL(h.path);g({typeFunc:b.expander.fetch,context:h.context,segs:i})}else b.isPlainObject(c)&&(c.expander?(c.expander.typeFunc=b.getGlobalValue(c.expander.type||"fluid.invokeFunc"),g(c.expander)):b.each(c,function(d,e){f.push(e),b.preExpandRecurse(a,d,c,e,f),f.pop()}))},b.preExpand=function(a){var c={expanders:[],source:b.isUnexpandable(a)?a:b.copy(a)};return b.preExpandRecurse(c,c.source,c,"source",[]),c},b.expandImmediate=function(a,c,d){var e=b.makeStackResolverOptions(c,d,!0),f=b.preExpand(a);return b.expandImmediateImpl(f,e),f.source},b.expandImmediateImpl=function(a,b){for(var c=a.expanders,d=0;d<c.length;++d){var e=c[d];e.holder[e.member]=e.expander.typeFunc(null,e,b)}},b.expandExpander=function(a,c,d){var e=b.getGlobalValue(c.expander.type||"fluid.invokeFunc");return e||b.fail("Unknown expander with type "+c.expander.type),e(a,c,d)},b.registerNamespace("fluid.expander"),b.expander.fetch=function(a,c,d){var e=d.localRecord,f=c.expander.context,g=c.expander.segs,h=void 0!==e[f],i=h?e[f]:b.resolveContext(f,d.contextThat,"treeConstructed"===d.contextThat.lifecycleStatus);if(i){var j=i;if(h||"constructed"===i.lifecycleStatus||"treeConstructed"===i.lifecycleStatus)for(var k=0;k<g.length;++k)j=j?j[g[k]]:void 0;else"destroyed"!==i.lifecycleStatus?j=b.getForComponent(i,g):b.fail("Cannot resolve path "+g.join(".")+" into component ",i," which has been destroyed");return void 0!==j||h||(j=b.getForComponent(i,g)),j}},b.invokeFunc=function(a,c,d){var e=c.expander,f=b.makeArray(e.args);e.args=f,d.recurse?f=d.recurse([],f):(e=b.expandImmediate(e,d.contextThat,d.localRecord),f=e.args);var g=e.func||e.funcName,h=(d.expandSource?d.expandSource(g):g)||b.recordToApplicable(e,d.contextThat);return"string"==typeof h&&(h=b.getGlobalValue(h)),h||b.fail("Error in expander record ",e,": "+g+" could not be resolved to a function for component ",d.contextThat),h.apply(null,f)},b.noexpand=function(a,b){return b.expander.value?b.expander.value:b.expander.tree}}(b,c);var c=c||{};!function(a,b){"use strict";b.model.makeEnvironmentStrategy=function(a){return function(b,c,d){return 0===d&&a[c]?a[c]:void 0}},b.model.defaultCreatorStrategy=function(a,b){return void 0===a[b]?(a[b]={},a[b]):void 0},b.model.defaultFetchStrategy=function(a,b){return a[b]},b.model.funcResolverStrategy=function(a,b){return a.resolvePathSegment?a.resolvePathSegment(b):void 0},b.model.traverseWithStrategy=function(a,c,d,e,f){for(var g=e.strategies,h=c.length-f,i=d;h>i;++i){if(!a)return a;for(var j,k=0;k<g.length&&(j=g[k](a,c[i],i+1,c),void 0===j);++k);j===b.NO_VALUE&&(j=void 0),a=j}return a},b.model.getValueAndSegments=function(a,c,d,e){return b.model.accessWithStrategy(a,c,b.NO_VALUE,d,e,!0)},b.model.makeTrundler=function(a){return function(c,d){return b.model.getValueAndSegments(c.root,d,a,c.segs)}},b.model.getWithStrategy=function(a,c,d,e){return b.model.accessWithStrategy(a,c,b.NO_VALUE,d,e)},b.model.setWithStrategy=function(a,c,d,e,f){b.model.accessWithStrategy(a,c,d,e,f)},b.model.accessWithStrategy=function(a,c,d,e,f,g){if(b.isPrimitive(c)||b.isArrayable(c))return b.model.accessImpl(a,c,d,e,f,g,b.model.traverseWithStrategy);var h=c.type||"default",i=e.resolvers[h];i||b.fail("Unable to find resolver of type "+h);var j=b.model.makeTrundler(e),k={root:a,segs:f};return k=i(k,c,j),c.path&&k&&(k=j(k,c.path)),g?k:k?k.root:void 0},b.registerNamespace("fluid.pathUtil"),b.pathUtil.getPathSegmentImpl=function(a,b,c){var d=null;a&&(d="");for(var e=!1,f=b.length;f>c;++c){var g=b.charAt(c);if(e)e=!1,null!==d&&(d+=g);else{if("."===g)break;"\\"===g?e=!0:null!==d&&(d+=g)}}return null!==d&&(a[0]=d),c};var c=[];b.pathUtil.parseEL=function(a){for(var d=[],e=0,f=a.length;f>e;){var g=b.pathUtil.getPathSegmentImpl(c,a,e);d.push(c[0]),e=g+1}return d},b.pathUtil.composeSegment=function(a,b){b=b.toString();for(var c=0;c<b.length;++c){var d=b.charAt(c);("."===d||"\\"===d||"}"===d)&&(a+="\\"),a+=d}return a},b.pathUtil.escapeSegment=function(a){return b.pathUtil.composeSegment("",a)},b.pathUtil.composePath=function(a,c){return 0!==a.length&&(a+="."),b.pathUtil.composeSegment(a,c)},b.pathUtil.composeSegments=function(){for(var a="",c=0;c<arguments.length;++c)a=b.pathUtil.composePath(a,arguments[c]);return a},b.pathUtil.matchSegments=function(a,b,c,d){if(d-c!==a.length)return!1;for(var e=c;d>e;++e)if(b[e]!==a[e-c])return!1;return!0},b.model.unescapedParser={parse:b.model.parseEL,compose:b.model.composeSegments},b.model.defaultGetConfig={parser:b.model.unescapedParser,strategies:[b.model.funcResolverStrategy,b.model.defaultFetchStrategy]},b.model.defaultSetConfig={parser:b.model.unescapedParser,strategies:[b.model.funcResolverStrategy,b.model.defaultFetchStrategy,b.model.defaultCreatorStrategy]},b.model.escapedParser={parse:b.pathUtil.parseEL,compose:b.pathUtil.composeSegments},b.model.escapedGetConfig={parser:b.model.escapedParser,strategies:[b.model.defaultFetchStrategy]},b.model.escapedSetConfig={parser:b.model.escapedParser,strategies:[b.model.defaultFetchStrategy,b.model.defaultCreatorStrategy]},b.initRelayModel=function(a){return b.deenlistModelComponent(a),a.model},b.isModelComplete=function(a){return"model"in a&&a.model!==b.inEvaluationMarker},b.enlistModelComponent=function(a){var c=b.getInstantiator(a),d=c.modelTransactions.init[a.id];return d||(d={that:a,applier:b.getForComponent(a,"applier"),complete:b.isModelComplete(a)},c.modelTransactions.init[a.id]=d),d},b.clearTransactions=function(){var a=b.globalInstantiator;b.clear(a.modelTransactions),a.modelTransactions.init={}},b.failureEvent.addListener(b.clearTransactions,"clearTransactions","before:fail"),b.clearLinkCounts=function(a,c){b.each(a,function(b,d){"number"==typeof b?a[d]=0:c&&b.options&&"number"==typeof b.relayCount&&(b.relayCount=0)})},b.sortCompleteLast=function(a,b){return(a.completeOnInit?1:0)-(b.completeOnInit?1:0)},b.operateInitialTransaction=function(a,c){var d,e=b.allocateGuid(),f=b.getModelTransactionRec(a,e),g=b.transform(c,function(a){return d=a.that.applier.initiate(null,"init",e),f[a.that.applier.applierId]={transaction:d},d}),h=b.values(c).sort(b.sortCompleteLast);b.each(h,function(a){var c=a.that,d=g[c.id];a.completeOnInit?b.initModelEvent(c,c.applier,d,c.applier.changeListeners.listeners):b.each(a.initModels,function(a){d.fireChangeRequest({type:"ADD",segs:[],value:a}),b.clearLinkCounts(f,!0)});var e=b.shadowForComponent(c);e&&(e.modelComplete=!0)}),d.commit()},b.deenlistModelComponent=function(a){var c=b.getInstantiator(a),d=c.modelTransactions.init;if(d[a.id]){a.model=void 0,d[a.id].complete=!0;var e=b.find_if(d,function(a){return a.complete!==!0});e||(b.operateInitialTransaction(a,d),c.modelTransactions.init={})}},b.parseModelReference=function(a,c){var d=b.parseContextReference(c);return d.segs=a.applier.parseEL(d.path),d},b.parseValidModelReference=function(a,c,d,e){var f,g=function(a){b.fail("Error in "+c+": ",d,a)};if("string"==typeof d)if("{"===d.charAt(0)){f=b.parseModelReference(a,d);var h=f.segs.indexOf("model");-1===h?e?f.nonModel=!0:g(' must be a reference into a component model via a path including the segment "model"'):(f.modelSegs=f.segs.slice(h+1),f.contextSegs=f.segs.slice(0,h),delete f.path)}else f={path:d,modelSegs:a.applier.parseEL(d)};else b.isArrayable(d.segs)||g(' must contain an entry "segs" holding path segments referring a model path within a component'),f={context:d.context,modelSegs:b.expandOptions(d.segs,a)};var i;return f.context?(i=b.resolveContext(f.context,a),i||g(" must be a reference to an existing component"),f.contextSegs&&(i=b.getForComponent(i,f.contextSegs))):i=a,f.nonModel||(i.applier||b.getForComponent(i,["applier"]),i.applier||g(" must be a reference to a component with a ChangeApplier (descended from fluid.modelComponent)")),f.that=i,f.applier=i.applier,f.path||(f.path=i.applier.composeSegments.apply(null,f.modelSegs)),f},b.getModelTransactionRec=function(a,c){var d=b.getInstantiator(a);if(c||b.fail("Cannot get transaction record without transaction id"),!d)return null;var e=d.modelTransactions[c];return e||(e=d.modelTransactions[c]={relays:[],sources:{},externalChanges:{}}),e},b.recordChangeListener=function(a,c,d,e){var f=b.shadowForComponent(a);b.recordListener(c.modelChanged,d,f,e)},b.registerRelayTransaction=function(a,c,d,e,f){var g=c.initiate("relay",null,d),h=a[c.applierId]={transaction:g,relayCount:0,namespace:f.namespace,priority:f.priority,options:e};return h.priority=b.parsePriority(h.priority,a.relays.length,!1,"model relay"),a.relays.push(h),h},b.relayRecursionBailout=100,b.registerDirectChangeRelay=function(a,c,d,e,f,g,h,i){var j=h.targetApplier||a.applier,k=h.sourceApplier||d.applier,l=j.applierId;c=b.makeArray(c),e=e?b.makeArray(e):e;var m=function(d,k,m,n,o,p){var q=o.id,r=b.getModelTransactionRec(a,q);p&&o&&!r[p.applierId]&&(r[p.applierId]={transaction:o});var s=r[l];r[f]=r[f]||0;var t=!0;t&&(++r[f],r[f]>b.relayRecursionBailout&&b.fail("Error in model relay specification at component ",a," - operated more than "+b.relayRecursionBailout+" relays without model value settling - current model contents are ",o.newHolder.model),s||(s=b.registerRelayTransaction(r,j,q,h,i)),g&&!h.targetApplier?g(s.transaction,h.sourceApplier?void 0:d,e,c):void 0!==d&&s.transaction.fireChangeRequest({type:"ADD",segs:c,value:d}))};m.relayListenerId=b.allocateGuid(),e&&(b.log(b.logLevel.TRACE,"Adding relay listener with id "+m.relayListenerId+" to source applier with id "+k.applierId+" from target applier with id "+l+" for target component with id "+a.id),k.modelChanged.addListener({isRelay:!0,segs:e,transactional:h.transactional},m)),d&&(b.recordChangeListener(d,k,m),a!==d&&b.recordChangeListener(a,k,m))},b.connectModelRelay=function(a,c,d,e,f){function g(a){var c=b.enlistModelComponent(a);if(c.complete){var d=b.shadowForComponent(a);d.modelComplete&&(c.completeOnInit=!0)}}var h=b.allocateGuid();g(d),g(a);var i=b.filterKeys(f,["namespace","priority"]);f.update?f.targetApplier?b.registerDirectChangeRelay(a,c,d,e,h,null,{transactional:!1,targetApplier:f.targetApplier,update:f.update},i):b.registerDirectChangeRelay(d,e,a,[],h+"-transform",f.forwardAdapter,{transactional:!0,sourceApplier:f.forwardApplier},i):(b.registerDirectChangeRelay(d,e,a,c,h,f.forwardAdapter,{transactional:!1},i),c&&b.registerDirectChangeRelay(a,c,d,e,h,f.backwardAdapter,{transactional:!1},i))},b.parseSourceExclusionSpec=function(a,c){return a.excludeSource=b.arrayToHash(b.makeArray(c.excludeSource||(c.includeSource?"*":void 0))),a.includeSource=b.arrayToHash(b.makeArray(c.includeSource)),a},b.isExcludedChangeSource=function(a,b){if(!b||!b.excludeSource)return!1;var c=b.excludeSource["*"];for(var d in a.fullSources)b.excludeSource[d]&&(c=!0),b.includeSource[d]&&(c=!1);return c},b.model.guardedAdapter=function(a,c,d,e){b.isExcludedChangeSource(a,c)||d.apply(null,e)},b.transformToAdapter=function(a,c){var d={};return d[c]=a,function(a,c){b.model.transformWithRules(c,d,{finalApplier:a})}},b.makeTransformPackage=function(a,c,d,e,f,g,h,i){var j={forwardHolder:{model:c},backwardHolder:{model:null}};j.generateAdapters=function(a){j.forwardAdapterImpl=b.transformToAdapter(a?a.newHolder.model:j.forwardHolder.model,e),null!==d&&(j.backwardHolder.model=b.model.transform.invertConfiguration(c),j.backwardAdapterImpl=b.transformToAdapter(j.backwardHolder.model,d))},j.forwardAdapter=function(a,c){void 0===c&&j.generateAdapters(),b.model.guardedAdapter(a,f,j.forwardAdapterImpl,arguments)},j.runTransform=function(a){a.commit(),a.reset()},j.forwardApplier=b.makeHolderChangeApplier(j.forwardHolder),j.forwardApplier.isRelayApplier=!0,j.invalidator=b.makeEventFirer({name:"Invalidator for model relay with applier "+j.forwardApplier.applierId}),null!==d&&(j.backwardApplier=b.makeHolderChangeApplier(j.backwardHolder),j.backwardAdapter=function(a){b.model.guardedAdapter(a,g,j.backwardAdapterImpl,arguments)}),j.update=j.invalidator.fire;var k={targetApplier:j.forwardApplier,update:j.update,namespace:h,priority:i,refCount:0};return j.forwardHolder.model=b.parseImplicitRelay(a,c,[],k),j.refCount=k.refCount,j.namespace=h,j.priority=i,j.generateAdapters(),j.invalidator.addListener(j.generateAdapters),j.invalidator.addListener(j.runTransform),j},b.singleTransformToFull=function(b){var c=a.extend(!0,{valuePath:""},b);return{"":{transform:c}}},b.model.relayConditions={initOnly:{includeSource:"init"},liveOnly:{excludeSource:"init"},never:{includeSource:[]},always:{}},b.model.parseRelayCondition=function(a){"initOnly"===a?b.log(b.logLevel.WARN,'The relay condition "initOnly" is deprecated: Please use the form \'includeSource: "init"\' instead'):"liveOnly"===a&&b.log(b.logLevel.WARN,'The relay condition "initOnly" is deprecated: Please use the form \'excludeSource: "init"\' instead');var c;return a?"string"==typeof a?(c=b.model.relayConditions[a],c||b.fail('Unrecognised model relay condition string "'+a+'": the supported values are "never" or a record with members "includeSource" and/or "excludeSource"')):c=a:c={},b.parseSourceExclusionSpec({},c)},b.parseModelRelay=function(a,c,d){var e=c.source?b.parseValidModelReference(a,'modelRelay record member "source"',c.source):{path:null,modelSegs:null},f=b.parseValidModelReference(a,'modelRelay record member "target"',c.target),g=c.namespace||d,h=c.singleTransform?b.singleTransformToFull(c.singleTransform):c.transform;h||b.fail('Cannot parse modelRelay record without element "singleTransform" or "transform":',c);var i=b.model.parseRelayCondition(c.forward),j=b.model.parseRelayCondition(c.backward),k=b.makeTransformPackage(a,h,e.path,f.path,i,j,g,c.priority);0===k.refCount?b.connectModelRelay(e.that||a,e.modelSegs,f.that,f.modelSegs,b.filterKeys(k,["forwardAdapter","backwardAdapter","namespace","priority"])):(e.modelSegs&&b.fail('Error in model relay definition: If a relay transform has a model dependency, you can not specify a "source" entry - please instead enter this as "input" in the transform specification. Definition was ',c," for component ",a),b.connectModelRelay(e.that||a,e.modelSegs,f.that,f.modelSegs,k))},b.parseImplicitRelay=function(a,c,d,e){var f;if("string"==typeof c&&"{"===c.charAt(0)){var g=b.parseValidModelReference(a,"model reference from model (implicit relay)",c,!0);g.nonModel?f=b.getForComponent(g.that,g.segs):(++e.refCount,b.connectModelRelay(a,d,g.that,g.modelSegs,e))}else b.isPrimitive(c)||!b.isPlainObject(c)?f=c:c.expander&&b.isPlainObject(c.expander)?f=b.expandOptions(c,a):(f=b.freshContainer(c),b.each(c,function(c,g){d.push(g);var h=b.parseImplicitRelay(a,c,d,e);void 0!==h&&(f[g]=h),d.pop()}));return f},b.model.notifyExternal=function(a){var c=a?b.values(a.externalChanges):[];b.sortByPriority(c);for(var d=0;d<c.length;++d){var e=c[d],f=e.args[5];f.destroyed||e.listener.apply(null,e.args)}b.clearLinkCounts(a,!0)},b.model.commitRelays=function(a,c){var d=a.modelTransactions[c];b.each(d,function(a){a.transaction&&(a.transaction.commit("relay"),a.transaction.reset())})},b.model.updateRelays=function(a,c){var d=a.modelTransactions[c],e=0;return b.sortByPriority(d.relays),b.each(d.relays,function(a){a.transaction.changeRecord.changes>0&&a.relayCount<2&&a.options.update&&(a.relayCount++,b.clearLinkCounts(d),a.options.update(a.transaction,d),++e)}),e},b.establishModelRelay=function(a,c,d,e,f){function g(a){for(;b.model.updateRelays(l,a.id)>0;);}function h(a,c,d){"relay"!==d&&b.model.commitRelays(l,a.id)}function i(a,c,d){"relay"!==d&&(b.model.notifyExternal(l.modelTransactions[a.id]),delete l.modelTransactions[a.id])}b.mergeModelListeners(a,d);var j=b.enlistModelComponent(a);b.each(e,function(c,d){for(var e=0;e<c.length;++e)b.parseModelRelay(a,c[e],d)});var k=b.transform(c,function(c){return b.parseImplicitRelay(a,c,[],{refCount:0,priority:"first"})});j.initModels=k;var l=b.getInstantiator(a);return f.preCommit.addListener(g),f.preCommit.addListener(h),f.postCommit.addListener(i),null},b.defaults("fluid.modelComponent",{gradeNames:["fluid.component"],changeApplierOptions:{relayStyle:!0,cullUnchanged:!0},members:{
model:"@expand:fluid.initRelayModel({that}, {that}.modelRelay)",applier:"@expand:fluid.makeHolderChangeApplier({that}, {that}.options.changeApplierOptions)",modelRelay:"@expand:fluid.establishModelRelay({that}, {that}.options.model, {that}.options.modelListeners, {that}.options.modelRelay, {that}.applier)"},mergePolicy:{model:{noexpand:!0,func:b.arrayConcatPolicy},modelListeners:b.makeMergeListenersPolicy(b.arrayConcatPolicy),modelRelay:b.makeMergeListenersPolicy(b.arrayConcatPolicy,!0)}}),b.defaults("fluid.priorityHolder",{gradeNames:"fluid.component",members:{priorities:"@expand:fluid.priorityHolder.expand({that}.options.priorities)"}}),b.priorityHolder.expand=function(a){var c=b.parsePriorityRecords(a,"priorityHolder entry",!0),d={};return b.each(c,function(a,b){d[a.namespace]=10*-b}),d},b.modelChangedToChange=function(a){return{value:a[0],oldValue:a[1],path:a[2],transaction:a[4]}},b.event.invokeListener=function(a,c,d,e){return"string"==typeof a&&(a=b.event.resolveListener(a)),a.apply(null,c,d,e)},b.resolveModelListener=function(a,c){var d=function(){if(!b.isDestroyed(a)){var d=b.modelChangedToChange(arguments),e=arguments,f={change:d,arguments:e},g={source:Object.keys(d.transaction.sources)};c.args&&(e=b.expandOptions(c.args,a,{},f)),b.event.invokeListener(c.listener,b.makeArray(e),f,g)}};return b.event.impersonateListener(c.listener,d),d},b.registerModelListeners=function(a,c,d,e){var f=b.resolveModelListener(a,c);b.each(c.byTarget,function(d){function g(){if(b.isModelComplete(h.that)){var c=h.applier.initiate(null,"init");b.initModelEvent(a,h.applier,c,[i]),c.commit()}}var h=d[0],i={listener:f,listenerId:b.allocateGuid(),segsArray:b.getMembers(d,"modelSegs"),pathArray:b.getMembers(d,"path"),includeSource:c.includeSource,excludeSource:c.excludeSource,priority:b.expandOptions(c.priority,a),transactional:!0};if(i=h.applier.modelChanged.addListener(i,f,e,c.softNamespace),b.recordChangeListener(a,h.applier,f,i.listenerId),a!==h.that&&!b.isModelComplete(a)){var j=b.getForComponent(a,["events","onCreate"]);j.addListener(g)}})},b.mergeModelListeners=function(a,c){b.each(c,function(c,d){"string"==typeof c&&(c={funcName:c});var e=b.event.resolveListenerRecord(c,a,"modelListeners",null,!1).records;b.each(e,function(c){c.byTarget={};var e=b.makeArray(void 0===c.path?d:c.path);b.each(e,function(d){var e=b.parseValidModelReference(a,"modelListeners entry",d);b.pushArray(c.byTarget,e.that.id,e)});var f=(c.namespace&&!c.softNamespace?c.namespace:null)||(void 0!==c.path?d:null);b.registerModelListeners(a,c,e,f)})})},b.fireChanges=function(a,b){for(var c=0;c<b.length;++c)a.fireChangeRequest(b[c])},b.model.isChangedPath=function(a,b){for(var c=0;c<=b.length;++c){if("string"==typeof a)return!0;c<b.length&&a&&(a=a[b[c]])}return!1},b.model.setChangedPath=function(a,c,d){var e=function(e){c.unshift(e),b.model.setSimple(a,c,d),c.shift()};b.model.isChangedPath(a.changeMap,c)||(++a.changes,e("changeMap")),b.model.isChangedPath(a.deltaMap,c)||(++a.deltas,e("deltaMap"))},b.model.fetchChangeChildren=function(a,c,d,e,f){b.each(e,function(e,g){d[c]=g,b.model.applyChangeStrategy(a,g,c,d,e,f),d.length=c})},b.model.isSameValue=function(a,b){if("number"!=typeof a||"number"!=typeof b)return a===b;if(a===b||a!==a&&b!==b)return!0;var c=Math.abs((a-b)/b);return 1e-12>c},b.model.applyChangeStrategy=function(a,c,d,e,f,g){var h=a[c],i=b.typeCode(f),j=b.typeCode(h),k=b.NO_VALUE;"primitive"===i?b.model.isSameValue(h,f)||(k=f,++g.unchanged):(j!==i||"array"===i&&f.length!==h.length)&&(k=b.freshContainer(f)),k!==b.NO_VALUE&&(a[c]=k,g.changeMap&&b.model.setChangedPath(g,e,g.inverse?"DELETE":"ADD")),"primitive"!==i&&b.model.fetchChangeChildren(a[c],d+1,e,f,g)},b.model.stepTargetAccess=function(a,c,d,e,f,g){for(var h=e;f>h;++h)if(a){var i=a[d[h]];a=b.model.traverseWithStrategy(a,d,h,g["ADD"===c?"resolverSetConfig":"resolverGetConfig"],d.length-h-1),i!==a&&g.changeMap&&b.model.setChangedPath(g,d.slice(0,h+1),"ADD")}return{root:a,last:d[f]}},b.model.defaultAccessorConfig=function(a){return a=a||{},a.resolverSetConfig=a.resolverSetConfig||b.model.escapedSetConfig,a.resolverGetConfig=a.resolverGetConfig||b.model.escapedGetConfig,a},b.model.applyHolderChangeRequest=function(a,c,d){d=b.model.defaultAccessorConfig(d),d.deltaMap=d.changeMap?{}:null,d.deltas=0;var e,f=c.segs.length,g=0===f;if(g?e={root:a,last:"model"}:(a.model||(a.model={},b.model.setChangedPath(d,[],d.inverse?"DELETE":"ADD")),e=b.model.stepTargetAccess(a.model,c.type,c.segs,0,f-1,d)),"ADD"===c.type){var h=c.value,i=b.makeArray(c.segs);b.model.applyChangeStrategy(e.root,e.last,f-1,i,h,d,g)}else"DELETE"===c.type?e.root&&void 0!==e.root[e.last]&&(delete e.root[e.last],d.changeMap&&b.model.setChangedPath(d,c.segs,"DELETE")):b.fail("Unrecognised change type of "+c.type);return d.deltas?d.deltaMap:null},b.model.diff=function(a,c,d){d=d||{changes:0,unchanged:0,changeMap:{}};var e,f=b.typeCode(a),g=b.typeCode(c);if("primitive"===f&&"primitive"===g)e=b.model.isSameValue(a,c);else if("primitive"===f^"primitive"===g)e=!1;else{var h={model:b.copy(a)};b.model.applyHolderChangeRequest(h,{value:c,segs:[],type:"ADD"},d);var i={model:b.copy(c)};d.inverse=!0,b.model.applyHolderChangeRequest(i,{value:a,segs:[],type:"ADD"},d),e=0===d.changes}return e===!1&&0===d.changes?(d.changes=1,d.changeMap=void 0===c?"DELETE":"ADD"):e===!0&&0===d.unchanged&&(d.unchanged=1),e},b.matchChanges=function(a,c,d){for(var e=d.model,f=a,g=["model"],h=!1,i=[],j=0;j<c.length;++j){var k=c[j];"*"===k?j===c.length-1?h=!0:b.fail("Wildcard specification in modelChanged listener is only supported for the final path segment: "+c.join(".")):(g.push(k),f=b.isPrimitive(f)?f:f[k],e=e?e[k]:void 0)}return f&&(h?b.each(e,function(a,b){i.push(g.concat(b))}):i.push(g)),i},b.storeExternalChange=function(a,b,c,d,e){var f=b.composeSegments.apply(null,c),g=[b.holder.id,d.listenerId,d.wildcard?f:""],h=g.join("|");a.externalChanges[h]={listener:d.listener,namespace:d.namespace,priority:d.priority,args:e}},b.notifyModelChanges=function(a,c,d,e,f,g,h,i){for(var j=g&&b.getModelTransactionRec(i,g.id),k=0;k<a.length;++k)for(var l=a[k],m=l.segsArray.length>1,n=0;n<l.segsArray.length;++n)for(var o=b.matchChanges(c,l.segsArray[n],d),p=0;p<o.length;++p){if(h.destroyed)return;var q=o[p];l.listener=b.event.resolveListener(l.listener);var r=[m?d.model:b.model.getSimple(d,q),m?e.model:b.model.getSimple(e,q),m?[]:q.slice(1),f,g,h];if(!l.isRelay){var s=b.model.diff(r[0],r[1]);if(s)continue;var t=b.isExcludedChangeSource(g,l);if(t)continue}j&&!l.isRelay&&l.transactional?b.storeExternalChange(j,h,q,l,r):l.listener.apply(null,r)}},b.bindELMethods=function(a){a.parseEL=function(c){return b.model.pathToSegments(c,a.options.resolverSetConfig)},a.composeSegments=function(){return a.options.resolverSetConfig.parser.compose.apply(null,arguments)}},b.initModelEvent=function(a,c,d,e){b.notifyModelChanges(e,"ADD",d.oldHolder,b.emptyHolder,null,d,c,a)},b.emptyHolder=b.freezeRecursive({model:void 0}),b.preFireChangeRequest=function(a,b){b.type||(b.type="ADD"),b.segs=b.segs||a.parseEL(b.path)},b.bindRequestChange=function(a){a.change=function(b,c,d,e){var f={path:b,value:c,type:d,source:e};a.fireChangeRequest(f)}},b.isObjectSimple=function(a){return"[object Object]"===Object.prototype.toString.call(a)},b.mergeChangeSources=function(a,c){b.isObjectSimple(c)?b.extend(a,c):b.each(b.makeArray(c),function(b){a[b]=!0})},b.ChangeApplier=function(){},b.makeHolderChangeApplier=function(c,d){d=b.model.defaultAccessorConfig(d);var e=b.allocateGuid(),f=new b.ChangeApplier;return a.extend(f,{applierId:e,holder:c,changeListeners:{listeners:[],transListeners:[]},options:d,modelChanged:{},preCommit:b.makeEventFirer({name:"preCommit event for ChangeApplier "}),postCommit:b.makeEventFirer({name:"postCommit event for ChangeApplier "})}),f.destroy=function(){f.preCommit.destroy(),f.postCommit.destroy(),f.destroyed=!0},f.modelChanged.addListener=function(a,c,d,e){a="string"==typeof a?{path:a,listenerId:b.event.identifyListener(c)}:b.copy(a),a.listenerId=a.listenerId||b.event.identifyListener(c),a.namespace=d,a.softNamespace=e,"string"==typeof c&&(c={globalName:c}),a.listener=c,a.transactional!==!1&&(a.transactional=!0),a.segsArray||(void 0!==a.path&&(a.segs=a.segs||f.parseEL(a.path)),a.segsArray||(a.segsArray=[a.segs]));var g=f.changeListeners[a.transactional?"transListeners":"listeners"];return b.parseSourceExclusionSpec(a,a),a.wildcard=b.accumulate(b.transform(a.segsArray,function(a){return b.contains(a,"*")}),b.add,0),a.wildcard&&a.segsArray.length>1&&b.fail("Error in model listener specification ",a," - you may not supply a wildcard pattern as one of a set of multiple paths to be matched"),a.priority=b.parsePriority(a.priority,g.length,!1,"model listener"),g.push(a),a},f.modelChanged.removeListener=function(a){var c=b.event.identifyListener(a),d="string"==typeof a?a:null,e=function(a){return a.listenerId===c||a.listenerId===d||d&&a.namespace===d};b.remove_if(f.changeListeners.listeners,e),b.remove_if(f.changeListeners.transListeners,e)},f.fireChangeRequest=function(a){var b=f.initiate("local",a.source);b.fireChangeRequest(a),b.commit()},f.initiate=function(a,e,g){a="init"===e?null:a||"local";var h="relay"===a,i={instanceId:b.allocateGuid(),id:g||b.allocateGuid(),changeRecord:{resolverSetConfig:d.resolverSetConfig,resolverGetConfig:d.resolverGetConfig},reset:function(){i.oldHolder=c,i.newHolder={model:b.copy(c.model)},i.changeRecord.changes=0,i.changeRecord.unchanged=0,i.changeRecord.changeMap={}},commit:function(a){if(f.preCommit.fire(i,f,a),i.changeRecord.changes>0){var d={model:c.model};c.model=i.newHolder.model,b.notifyModelChanges(f.changeListeners.transListeners,i.changeRecord.changeMap,c,d,null,i,f,c)}h||f.postCommit.fire(i,f,a)},fireChangeRequest:function(a){b.preFireChangeRequest(f,a),a.transactionId=i.id;var d=b.model.applyHolderChangeRequest(i.newHolder,a,i.changeRecord);b.notifyModelChanges(f.changeListeners.listeners,d,i.newHolder,c,a,i,f,c)},hasChangeSource:function(a){return i.fullSources[a]}},j=b.getModelTransactionRec(c,i.id);return j&&(b.mergeChangeSources(j.sources,e),i.sources=j.sources,i.fullSources=Object.create(j.sources),i.fullSources[a]=!0),i.reset(),b.bindRequestChange(i),i},b.bindRequestChange(f),b.bindELMethods(f),f}}(b,c);var c=c||{},d=d||c;!function(a,b){"use strict";b.registerNamespace("fluid.model.transform"),b.defaults("fluid.transformFunction",{gradeNames:"fluid.function"}),b.defaults("fluid.standardInputTransformFunction",{gradeNames:"fluid.transformFunction"}),b.defaults("fluid.standardOutputTransformFunction",{gradeNames:"fluid.transformFunction"}),b.defaults("fluid.multiInputTransformFunction",{gradeNames:"fluid.transformFunction"}),b.defaults("fluid.standardTransformFunction",{gradeNames:["fluid.standardInputTransformFunction","fluid.standardOutputTransformFunction"]}),b.defaults("fluid.lens",{gradeNames:"fluid.transformFunction",invertConfiguration:null}),b.model.transform.pathToRule=function(a){return{transform:{type:"fluid.transforms.value",inputPath:a}}},b.model.transform.literalValueToRule=function(a){return{transform:{type:"fluid.transforms.literalValue",value:a}}},b.model.composePaths=function(a,b){return a=0===a?"0":a||"",b=0===b?"0":b||"",a?b?a+"."+b:a:b},b.model.transform.accumulateInputPath=function(a,c,d){void 0!==a&&d.push(b.model.composePaths(c.inputPrefix,a))},b.model.transform.accumulateStandardInputPath=function(a,c,d,e){b.model.transform.getValue(void 0,c[a],d),b.model.transform.accumulateInputPath(c[a+"Path"],d,e)},b.model.transform.accumulateMultiInputPaths=function(a,c,d,e){b.each(a,function(a,f){b.model.transform.accumulateStandardInputPath(f,c,d,e)})},b.model.transform.getValue=function(a,c,d){var e;return void 0!==a&&(e=b.get(d.source,b.model.composePaths(d.inputPrefix,a),d.resolverGetConfig)),void 0===e&&(e=b.isPrimitive(c)?c:"literalValue"in c?c.literalValue:void 0===c.transform?c:d.expand(c)),e},b.model.transform.NONDEFAULT_OUTPUT_PATH_RETURN={},b.model.transform.setValue=function(a,c,d){var e=b.copy(c),f=b.model.composePaths(d.outputPrefix,a);return void 0!==e&&d.applier.change(f,e),a?b.model.transform.NONDEFAULT_OUTPUT_PATH_RETURN:e},b.model.transform.resolveParam=function(a,c,d,e){var f=b.model.transform.getValue(a[d+"Path"],a[d],c);return void 0!==f?f:e},b.model.transform.matchValue=function(a,c,d){var e={changes:0,unchanged:0,changeMap:{}};return b.model.diff(a,c,e),0===e.unchanged?0:d?0xffffff000000-16777216*e.changes+e.unchanged:e.changes?0:0xffffff000000+e.unchanged},b.firstDefined=function(a,b){return void 0===a?b:a},b.model.transform.copyInversePaths=function(a,c){var d=b.copy(a);return d.inputPath=b.model.composePaths(c.outputPrefix,a.outputPath),a.valuePath?(d.outputPath=b.model.composePaths(c.inputPrefix,a.valuePath),delete d.valuePath):d.outputPath=b.model.composePaths(c.inputPrefix,a.inputPath),d},b.model.transform.prefixApplier=function(a,b){a.inputPrefix&&b.inputPrefixOp.push(a.inputPrefix),a.outputPrefix&&b.outputPrefixOp.push(a.outputPrefix),b.expand(a.value),a.inputPrefix&&b.inputPrefixOp.pop(),a.outputPrefix&&b.outputPrefixOp.pop()},b.defaults("fluid.model.transform.prefixApplier",{gradeNames:["fluid.transformFunction"]}),b.model.makePathStack=function(a,c){var d=a[c+"Stack"]=[];return a[c]="",{push:function(e){var f=b.model.composePaths(a[c],e);d.push(a[c]),a[c]=f},pop:function(){a[c]=d.pop()}}},b.model.transform.aliasStandardInput=function(a){return{value:void 0===a.value?a.input:a.value,valuePath:void 0===a.valuePath?a.inputPath:a.valuePath}},b.model.transform.doTransform=function(a,c,d){var e=d.defaults,f=b.getGlobalValue(d.typeName);"function"!=typeof f&&b.fail("Transformation record specifies transformation function with name "+a.type+" which is not a function - ",f),b.hasGrade(e,"fluid.transformFunction")||(e=b.defaults("fluid.standardTransformFunction"));var g=[a,c];if(b.hasGrade(e,"fluid.standardInputTransformFunction")){var h=b.model.transform.aliasStandardInput(a),i=b.model.transform.getValue(h.valuePath,h.value,c);if(g.unshift(i),void 0===i)return void 0}else if(b.hasGrade(e,"fluid.multiInputTransformFunction")){var j={};b.each(e.inputVariables,function(d,e){j[e]=function(){var f=b.model.transform.getValue(a[e+"Path"],a[e],c);return f=void 0===f&&null!==d?d:f}}),g.unshift(j)}var k=f.apply(null,g);if(b.hasGrade(e,"fluid.standardOutputTransformFunction")){var l=void 0!==a.outputPath?a.outputPath:d.doOutput?"":void 0;void 0!==l&&void 0!==k&&(b.model.transform.setValue(a.outputPath,k,c),k=void 0)}return k};var c=[];b.registerNamespace("fluid.pathUtil"),b.pathUtil.getPathSegment=function(a,d){return b.pathUtil.getPathSegmentImpl(c,a,d),c[0]},b.pathUtil.getHeadPath=function(a){return b.pathUtil.getPathSegment(a,0)},b.pathUtil.getFromHeadPath=function(a){var c=b.pathUtil.getPathSegmentImpl(null,a,0);return c===a.length?"":a.substring(c+1)},b.pathUtil.matchPath=function(a,c,d){for(var e=[];;){if(""===c^""===a&&d)return null;if(!a||!c)break;var f=b.pathUtil.getHeadPath(a),g=b.pathUtil.getHeadPath(c);if("*"!==f&&f!==g)return null;e.push(g),a=b.pathUtil.getFromHeadPath(a),c=b.pathUtil.getFromHeadPath(c)}return e},b.model.transform.expandWildcards=function(a,c){b.each(c,function(c,d){var e=a.queuedTransforms;a.pathOp.push(b.pathUtil.escapeSegment(d.toString()));for(var f=0;f<e.length;++f)if(b.pathUtil.matchPath(e[f].matchPath,a.path,!0)){var g=b.copy(e[f].transformSpec);(void 0===g.inputPath||b.model.transform.hasWildcard(g.inputPath))&&(g.inputPath=""),a.inputPrefixOp.push(a.path),a.outputPrefixOp.push(a.path);var h=b.model.transform.lookupType(g.type),i=b.model.transform.doTransform(g,a,h);void 0!==i&&b.model.transform.setValue(null,i,a),a.outputPrefixOp.pop(),a.inputPrefixOp.pop()}b.isPrimitive(c)||b.model.transform.expandWildcards(a,c),a.pathOp.pop()})},b.model.transform.hasWildcard=function(a){return"string"==typeof a&&-1!==a.indexOf("*")},b.model.transform.maybePushWildcard=function(a,c){var d,e=b.model.transform.hasWildcard;return e(a.inputPath)?d=b.model.composePaths(c.inputPrefix,a.inputPath):(e(c.outputPrefix)||e(a.outputPath))&&(d=b.model.composePaths(c.outputPrefix,a.outputPath)),d?(c.queuedTransforms.push({transformSpec:a,outputPrefix:c.outputPrefix,inputPrefix:c.inputPrefix,matchPath:d}),!0):!1},b.model.sortByKeyLength=function(a){var c=b.keys(a);return c.sort(b.compareStringLength(!0))},b.model.transform.handleTransformStrategy=function(a,c,d){return b.model.transform.maybePushWildcard(a,c)?void 0:b.model.transform.doTransform(a,c,d)},b.model.transform.handleInvertStrategy=function(a,c,d){var e=d.defaults&&d.defaults.invertConfiguration;if(e){var f=b.invokeGlobalFunction(e,[a,c]);c.inverted.push(f)}},b.model.transform.handleCollectStrategy=function(a,c,d){var e=d.defaults,f=b.hasGrade(e,"fluid.standardInputTransformFunction"),g=b.hasGrade(e,"fluid.multiInputTransformFunction");if(f)b.model.transform.accumulateStandardInputPath("input",a,c,c.inputPaths);else if(g)b.model.transform.accumulateMultiInputPaths(e.inputVariables,a,c,c.inputPaths);else{var h=e.collectInputPaths;if(h){var i=b.makeArray(b.invokeGlobalFunction(h,[a,c]));c.inputPaths=c.inputPaths.concat(i)}}},b.model.transform.lookupType=function(a,c){a||b.fail("Transformation record is missing a type name: ",c),-1===a.indexOf(".")&&(a="fluid.transforms."+a);var d=b.defaults(a);return{defaults:d,typeName:a}},b.model.transform.literaliseValue=function(a){return b.isPrimitive(a)?a:{literalValue:a}},b.model.transform.processRule=function(a,c){"string"==typeof a?a=b.model.transform.pathToRule(a):void 0!==a.literalValue&&(a=b.model.transform.literalValueToRule(a.literalValue));var d;if(a.transform){var e,f;if(b.isArrayable(a.transform)){var g=a.transform;d=void 0;for(var h=0;h<g.length;++h)e=g[h],f=b.model.transform.lookupType(e.type),c.transformHandler(e,c,f)}else e=a.transform,f=b.model.transform.lookupType(e.type),d=c.transformHandler(e,c,f)}return b.isArrayable(a)&&(c.collectedFlatSchemaOpts=c.collectedFlatSchemaOpts||{},c.collectedFlatSchemaOpts[c.outputPrefix]="array"),b.each(a,function(a,d){if("transform"!==d){c.outputPrefixOp.push(d);var e=c.expand(a,c);void 0!==e&&(b.model.transform.setValue(null,e,c),e=void 0),c.outputPrefixOp.pop()}}),d},b.model.transform.makeStrategy=function(a,c,d){d=d||b.model.transform.processRule,a.expand=function(b){return d(b,a)},a.outputPrefixOp=b.model.makePathStack(a,"outputPrefix"),a.inputPrefixOp=b.model.makePathStack(a,"inputPrefix"),a.transformHandler=c},b.model.transform.invertConfiguration=function(a){var c={inverted:[]};return b.model.transform.makeStrategy(c,b.model.transform.handleInvertStrategy),c.expand(a),{transform:c.inverted}},b.model.transform.collectInputPaths=function(a){var c={inputPaths:[]};return b.model.transform.makeStrategy(c,b.model.transform.handleCollectStrategy),c.expand(a),c.inputPaths},b.model.transform.flatSchemaStrategy=function(a,c){var d=b.model.sortByKeyLength(a);return function(e,f,g,h){for(var i=c.parser.compose.apply(null,h.slice(0,g)),j=0;j<d.length;++j){var k=d[j];if(null!==b.pathUtil.matchPath(k,i,!0))return a[k]}}},b.model.transform.defaultSchemaValue=function(a){var c=b.isPrimitive(a)?a:a.type;return"array"===c?[]:{}},b.model.transform.isomorphicSchemaStrategy=function(a,c){return function(d,e,f,g){var h=b.get(a,g.slice(0,f),c);return b.isArrayable(h)?"array":"object"}},b.model.transform.decodeStrategy=function(a,c,d){return c.isomorphic?b.model.transform.isomorphicSchemaStrategy(a,d):c.flatSchema?b.model.transform.flatSchemaStrategy(c.flatSchema,d):void 0},b.model.transform.schemaToCreatorStrategy=function(a){return function(c,d,e,f){if(void 0===c[d]){var g=a(c,d,e,f);return c[d]=b.model.transform.defaultSchemaValue(g),c[d]}}},b.model.transform.sequence=function(a,c,d){for(var e=0;e<c.length;++e)a=b.model.transform(a,c[e],d);return a},b.model.compareByPathLength=function(a,b){var c=a.path.length-b.path.length;return 0===c?a.sequence-b.sequence:c},b.model.fireSortedChanges=function(a,c){a.sort(b.model.compareByPathLength),b.fireChanges(c,a)},b.model.transformWithRules=function(c,d,e){e=e||{};var f=b.model.escapedGetConfig,g=b.model.transform.decodeStrategy(c,e,f),h={source:c,target:{model:g?b.model.transform.defaultSchemaValue(g(null,"",0,[""])):{}},resolverGetConfig:f,collectedFlatSchemaOpts:void 0,queuedChanges:[],queuedTransforms:[]};b.model.transform.makeStrategy(h,b.model.transform.handleTransformStrategy),h.applier={fireChangeRequest:function(a){a.sequence=h.queuedChanges.length,h.queuedChanges.push(a)}},b.bindRequestChange(h.applier),h.expand(d);var i=b.copy(b.model.escapedSetConfig);return void 0!==h.collectedFlatSchemaOpts&&(a.extend(h.collectedFlatSchemaOpts,e.flatSchema),g=b.model.transform.flatSchemaStrategy(h.collectedFlatSchemaOpts,f)),i.strategies=[b.model.defaultFetchStrategy,g?b.model.transform.schemaToCreatorStrategy(g):b.model.defaultCreatorStrategy],h.finalApplier=e.finalApplier||b.makeHolderChangeApplier(h.target,{resolverSetConfig:i}),h.queuedTransforms.length>0&&(h.typeStack=[],h.pathOp=b.model.makePathStack(h,"path"),b.model.transform.expandWildcards(h,c)),b.model.fireSortedChanges(h.queuedChanges,h.finalApplier),h.target.model},a.extend(b.model.transformWithRules,b.model.transform),b.model.transform=b.model.transformWithRules,b.transformOne=function(a){return{transformOptions:{transformer:"fluid.model.transformWithRules",config:a}}},b.transformMany=function(a){return{transformOptions:{transformer:"fluid.model.transform.sequence",config:a}}}}(b,c);var c=c||{},d=d||c;!function(a,b){"use strict";b.registerNamespace("fluid.model.transform"),b.registerNamespace("fluid.transforms"),b.defaults("fluid.transforms.value",{gradeNames:"fluid.standardTransformFunction",invertConfiguration:"fluid.transforms.value.invert"}),b.transforms.value=b.identity,b.transforms.value.invert=function(a,c){return b.model.transform.copyInversePaths(a,c)},b.transforms.identity=b.transforms.value,b.defaults("fluid.transforms.identity",{gradeNames:"fluid.transforms.value"}),b.transforms.invertToIdentity=function(a,c){var d=b.model.transform.copyInversePaths(a,c);return d.type="fluid.transforms.identity",d},b.defaults("fluid.transforms.literalValue",{gradeNames:"fluid.standardOutputTransformFunction"}),b.transforms.literalValue=function(a){return a.value},b.defaults("fluid.transforms.arrayValue",{gradeNames:"fluid.standardTransformFunction"}),b.transforms.arrayValue=b.makeArray,b.defaults("fluid.transforms.stringToNumber",{gradeNames:["fluid.standardTransformFunction"]}),b.transforms.stringToNumber=function(a){var b=Number(a);return isNaN(b)?void 0:b},b.defaults("fluid.transforms.count",{gradeNames:"fluid.standardTransformFunction"}),b.transforms.count=function(a){return b.makeArray(a).length},b.defaults("fluid.transforms.round",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.invertToIdentity"}),b.transforms.round=function(a){return Math.round(a)},b.defaults("fluid.transforms.delete",{gradeNames:"fluid.transformFunction"}),b.transforms["delete"]=function(a,c){var d=b.model.composePaths(c.outputPrefix,a.outputPath);c.applier.change(d,null,"DELETE")},b.defaults("fluid.transforms.firstValue",{gradeNames:"fluid.transformFunction"}),b.transforms.firstValue=function(a,c){a.values&&a.values.length||b.fail('firstValue transformer requires an array of values at path named "values", supplied',a);for(var d=0;d<a.values.length;d++){var e=a.values[d],f=c.expand(e);if(void 0!==f)return f}},b.defaults("fluid.transforms.linearScale",{gradeNames:["fluid.multiInputTransformFunction","fluid.standardOutputTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.linearScale.invert",inputVariables:{value:null,input:null,factor:1,offset:0}}),b.transforms.linearScale=function(a){var c=a.value();b.isValue(c)?b.log(b.logLevel.WARN,'The input "value" is deprecated and will be renamed to "input" for all transforms'):c=a.input();var d=a.factor(),e=a.offset();return"number"!=typeof c||"number"!=typeof d||"number"!=typeof e?void 0:c*d+e},b.transforms.linearScale.invert=function(a,c){var d=b.model.transform.copyInversePaths(a,c);return void 0!==d.factor&&(d.factor=0===d.factor?0:1/d.factor),void 0!==d.offset&&(d.offset=-d.offset*(void 0!==d.factor?d.factor:1)),d},b.defaults("fluid.transforms.binaryOp",{gradeNames:["fluid.multiInputTransformFunction","fluid.standardOutputTransformFunction"],inputVariables:{left:null,right:null}}),b.transforms.binaryLookup={"===":function(a,c){return b.model.isSameValue(a,c)},"!==":function(a,c){return!b.model.isSameValue(a,c)},"<=":function(a,b){return b>=a},"<":function(a,b){return b>a},">=":function(a,b){return a>=b},">":function(a,b){return a>b},"+":function(a,b){return a+b},"-":function(a,b){return a-b},"*":function(a,b){return a*b},"/":function(a,b){return a/b},"%":function(a,b){return a%b},"&&":function(a,b){return a&&b},"||":function(a,b){return a||b}},b.transforms.binaryOp=function(a,c,d){var e=a.left(),f=a.right(),g=b.model.transform.getValue(void 0,c.operator,d),h=b.transforms.binaryLookup[g];return void 0===h||void 0===e||void 0===f?void 0:h(e,f)},b.defaults("fluid.transforms.condition",{gradeNames:["fluid.multiInputTransformFunction","fluid.standardOutputTransformFunction"],inputVariables:{"true":null,"false":null,condition:null}}),b.transforms.condition=function(a){var b=a.condition();return null===b?void 0:a[b?"true":"false"]()},b.defaults("fluid.transforms.valueMapper",{gradeNames:["fluid.transformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.valueMapper.invert",collectInputPaths:"fluid.transforms.valueMapper.collect"}),b.model.transform.compareMatches=function(a,b){return b.matchValue-a.matchValue},b.model.transform.matchValueMapperFull=function(a,c,d){var e=c.options;0===e.length&&b.fail("valueMapper supplied empty list of options: ",c);for(var f=[],g=0;g<e.length;++g){var h=e[g],i=b.firstDefined(b.model.transform.getValue(h.inputPath,void 0,d),a),j=b.model.transform.matchValue(h.undefinedInputValue?void 0:void 0===h.inputValue?c.defaultInputValue:h.inputValue,i,c.partialMatches||h.partialMatches);f[g]={index:g,matchValue:j}}return f.sort(b.model.transform.compareMatches),f[0].matchValue<=0||e.length>1&&f[0].matchValue===f[1].matchValue?-1:f[0].index},b.transforms.valueMapper=function(a,c){a.options||b.fail('valueMapper requires a list or hash of options at path named "options", supplied ',a);var d=b.model.transform.getValue(a.inputPath,void 0,c),e=b.isArrayable(a.options)?function(d){var e=b.model.transform.matchValueMapperFull(d,a,c);return-1===e?null:a.options[e]}:function(b){return a.options[b]},f=e(d);if(f||(f=e(a.defaultInputValue)),f){var g=void 0===f.outputPath?a.defaultOutputPath:f.outputPath;c.outputPrefixOp.push(g);var h;return b.isPrimitive(f)?h=f:f.undefinedOutputValue?h=void 0:(h=b.model.transform.resolveParam(f,c,"outputValue",void 0),h=void 0===h?a.defaultOutputValue:h),"string"==typeof g&&void 0!==h&&(b.model.transform.setValue(void 0,h,c,a.merge),h=void 0),c.outputPrefixOp.pop(),h}},b.transforms.valueMapper.invert=function(a,c){var d=[],e={type:"fluid.transforms.valueMapper",options:d},f=b.isArrayable(a.options),g=function(c){return b.find(a.options,function(a){return a[c]?!0:void 0})},h=g("outputPath"),i=g("inputPath");h||(e.inputPath=b.model.composePaths(c.outputPrefix,a.defaultOutputPath)),i||(e.defaultOutputPath=b.model.composePaths(c.inputPrefix,a.inputPath));var j=b.firstDefined;return b.each(a.options,function(e,g){var k={},l=j(f?e.inputValue:g,a.defaultInputValue);void 0===l&&b.fail("Failure inverting configuration for valueMapper - inputValue could not be resolved for record "+g+": ",a),k.outputValue=b.model.transform.literaliseValue(l);var m=j(e.outputValue,a.defaultOutputValue);k.inputValue=b.model.transform.getValue(e.outputValuePath,m,c),h&&(k.inputPath=b.model.composePaths(c.outputPrefix,j(e.outputPath,a.outputPath))),i&&(k.outputPath=b.model.composePaths(c.inputPrefix,j(e.inputPath,a.inputPath))),e.outputValuePath&&(k.inputValuePath=e.outputValuePath),d.push(k)}),e},b.transforms.valueMapper.collect=function(a,c){var d=[];return b.model.transform.accumulateInputPath(a.inputPath,c,d),b.each(a.options,function(a){b.model.transform.accumulateInputPath(a.inputPath,c,d)}),d},b.defaults("fluid.transforms.arrayToSetMembership",{gradeNames:["fluid.standardInputTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.arrayToSetMembership.invert"}),b.transforms.arrayToSetMembership=function(a,c,d){var e=c.options;a&&b.isArrayable(a)||b.fail("arrayToSetMembership didn't find array at inputPath nor passed as value.",c),e||b.fail("arrayToSetMembership requires an options block set"),void 0===c.presentValue&&(c.presentValue=!0),void 0===c.missingValue&&(c.missingValue=!1),b.each(e,function(e,f){var g=-1!==a.indexOf(f)?c.presentValue:c.missingValue;b.model.transform.setValue(e,g,d)})},b.transforms.arrayToSetMembership.invert=function(a,c){var d=b.copy(a);delete d.inputPath,d.type="fluid.transforms.setMembershipToArray",d.outputPath=b.model.composePaths(c.inputPrefix,a.inputPath);var e={};return b.each(a.options,function(a,d){var f=b.model.composePaths(c.outputPrefix,a);e[f]=d}),d.options=e,d},b.defaults("fluid.transforms.setMembershipToArray",{gradeNames:["fluid.standardOutputTransformFunction"]}),b.transforms.setMembershipToArray=function(a,c){var d=a.options;d||b.fail("setMembershipToArray requires an options block specified"),void 0===a.presentValue&&(a.presentValue=!0),void 0===a.missingValue&&(a.missingValue=!1);var e=[];return b.each(d,function(d,f){var g=b.model.transform.getValue(f,void 0,c);g===a.presentValue&&e.push(d)}),e},b.model.transform.applyPaths=function(a,b,c){for(var d=0;d<c.length;++d)"push"===a?b.push(c[d]):b.pop()},b.model.transform.expandInnerValues=function(c,d,e,f){var g=e.inputPrefixOp,h=e.outputPrefixOp,i=b.model.transform.applyPaths;i("push",g,c),i("push",h,d);var j={};return b.each(f,function(c){var d=e.expand(c);b.isPrimitive(d)?j=d:a.extend(!0,j,d)}),i("pop",h,d),i("pop",g,c),j},b.defaults("fluid.transforms.arrayToObject",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.arrayToObject.invert"}),b.transforms.arrayToObject=function(a,c,d){void 0===c.key&&b.fail("arrayToObject requires a 'key' option.",c),b.isArrayable(a)||b.fail("arrayToObject didn't find array at inputPath.",c);var e={},f=c.key;return b.each(a,function(a,g){var h=a[f],i=typeof h;"string"!==i&&"boolean"!==i&&"number"!==i&&b.fail("arrayToObject encountered untransformable array due to missing or invalid key",a);var j=b.copy(a);delete j[f],c.innerValue&&(j=b.model.transform.expandInnerValues([d.inputPrefix,c.inputPath,g.toString()],[h],d,c.innerValue)),e[h]=j}),e},b.transforms.arrayToObject.invert=function(a,c){var d=b.copy(a);if(d.type="fluid.transforms.objectToArray",d.inputPath=b.model.composePaths(c.outputPrefix,a.outputPath),d.outputPath=b.model.composePaths(c.inputPrefix,a.inputPath),d.innerValue)for(var e=d.innerValue,f=0;f<e.length;++f)e[f]=b.model.transform.invertConfiguration(e[f]);return d},b.defaults("fluid.transforms.objectToArray",{gradeNames:"fluid.standardTransformFunction"}),b.transforms.objectToArray=function(c,d,e){void 0===d.key&&b.fail('objectToArray requires a "key" option.',d);var f=[],g=d.key;return b.each(c,function(c,h){var i={};i[g]=h,d.innerValue&&(c=b.model.transform.expandInnerValues([d.inputPath,h],[d.outputPath,f.length.toString()],e,d.innerValue)),a.extend(!0,i,c),f.push(i)}),f},b.defaults("fluid.transforms.limitRange",{gradeNames:"fluid.standardTransformFunction"}),b.transforms.limitRange=function(a,b){var c=b.min;if(void 0!==c){var d=b.excludeMin||0;c+=d,c>a&&(a=c)}var e=b.max;if(void 0!==e){var f=b.excludeMax||0;e-=f,a>e&&(a=e)}return a},b.defaults("fluid.transforms.indexOf",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.indexOf.invert"}),b.transforms.indexOf=function(a,c){var d=b.transforms.parseIndexationOffset(c.offset,"indexOf"),e=b.makeArray(c.array),f=e.indexOf(a);return-1===f&&c.notFound?c.notFound:f+d;
},b.transforms.indexOf.invert=function(a,c){var d=b.transforms.invertArrayIndexation(a,c);return d.type="fluid.transforms.dereference",d},b.defaults("fluid.transforms.dereference",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.dereference.invert"}),b.transforms.dereference=function(a,c){"number"!=typeof a&&b.fail('dereference requires "value" to be a number. '+a+" is invalid.");var d=b.transforms.parseIndexationOffset(c.offset,"dereference"),e=b.makeArray(c.array),f=a+d;return-1===f&&c.notFound?c.notFound:e[f]},b.transforms.dereference.invert=function(a,c){var d=b.transforms.invertArrayIndexation(a,c);return d.type="fluid.transforms.indexOf",d},b.transforms.parseIndexationOffset=function(a,c){var d=0;return void 0!==a&&(d=b.parseInteger(a),isNaN(d)&&b.fail(c+' requires the value of "offset" to be an integer or a string that can be converted to an integer. '+a+" is invalid.")),d},b.transforms.invertArrayIndexation=function(a,c){var d=b.model.transform.copyInversePaths(a,c);return isNaN(Number(d.offset))||(d.offset=-1*Number(d.offset)),d},b.defaults("fluid.transforms.stringTemplate",{gradeNames:"fluid.standardOutputTransformFunction"}),b.transforms.stringTemplate=function(a){return b.stringTemplate(a.template,a.terms)},b.defaults("fluid.transforms.free",{gradeNames:"fluid.transformFunction"}),b.transforms.free=function(a){var c=b.makeArray(a.args);return b.invokeGlobalFunction(a.func,c)}}(b,c);var c=c||{};!function(a,b){"use strict";b.registerNamespace("fluid.contextAware"),b.defaults("fluid.contextAware.marker",{gradeNames:["fluid.component"]}),b.contextAware.makeCheckMarkers=function(a,c,d){b.each(a,function(a,e){b.constructSingle(c,{type:e,gradeNames:"fluid.contextAware.marker",value:a},d)})},b.contextAware.performChecks=function(a){return b.transform(a,function(a){return"function"==typeof a?a={func:a}:"string"==typeof a&&(a={funcName:a}),b.isPrimitive(a)?a:"value"in a?a.value:"func"in a?a.func():"funcName"in a?b.invokeGlobalFunction(a.funcName):void b.fail("Error in contextAwareness check record ",a," - must contain an entry with name value, func, or funcName")})},b.contextAware.makeChecks=function(a,c,d){var e=b.contextAware.performChecks(a);b.contextAware.makeCheckMarkers(e,c,d)},b.contextAware.forgetChecks=function(a,c,d){d=d||b.globalInstantiator,c=c||[];var e=b.makeArray(a);b.each(e,function(a){var e=b.typeNameToMemberName(a),f=b.model.parseToSegments(c,d.parseEL,!0);f.push(e),b.destroy(f,d)})},b.defaults("fluid.contextAware",{gradeNames:["{that}.check"],mergePolicy:{contextAwareness:"noexpand"},contextAwareness:{},invokers:{check:{funcName:"fluid.contextAware.check",args:["{that}","{that}.options.contextAwareness"]}}}),b.contextAware.getCheckValue=function(a,c){var d=b.parseContextReference(c),e=b.resolveContext(d.context,a),f=d.path||["options","value"],g=b.getForComponent(e,f);return g},b.contextAware.checkOne=function(a,c){c.checks&&c.checks.contextValue&&b.fail("Nesting error in contextAwareness record ",c,' - the "checks" entry must contain a hash and not a contextValue/gradeNames record at top level');var d=b.parsePriorityRecords(c.checks,"contextAwareness checkRecord");return b.find(d,function(c){c.contextValue||b.fail("Cannot perform check for contextAwareness record ",c,' without a valid field named "contextValue"');var d=b.contextAware.getCheckValue(a,c.contextValue);return(void 0===c.equals?d:d===c.equals)?c.gradeNames:void 0},c.defaultGradeNames)},b.contextAware.check=function(a,c){var d=[],e=b.parsePriorityRecords(c,"contextAwareness adaptationRecord");return b.each(e,function(c){var e=b.contextAware.checkOne(a,c);d=d.concat(b.makeArray(e))}),d},b.contextAware.makeAdaptation=function(a){b.expect("fluid.contextAware.makeAdaptation",a,["distributionName","targetName","adaptationName","checkName","record"]),b.defaults(a.distributionName,{gradeNames:["fluid.component"],distributeOptions:{target:"{/ "+a.targetName+"}.options.contextAwareness."+a.adaptationName+".checks."+a.checkName,record:a.record}}),b.constructSingle([],a.distributionName)},b.contextAware.isBrowser=function(){return"undefined"!=typeof window&&window.document},b.contextAware.makeChecks({"fluid.browser":{funcName:"fluid.contextAware.isBrowser"}})}(b,c),function(){var a="undefined"!=typeof window?window:"undefined"!=typeof self?self:"undefined"!=typeof module&&module.exports?module.exports:global;if(!a.ArrayMath){var b={};b.add=function(a,b,c){var d;if(b instanceof Float32Array)for(d=Math.min(a.length,b.length,c.length)-1;d>=0;--d)a[d]=b[d]+c[d];else for(d=Math.min(a.length,c.length)-1;d>=0;--d)a[d]=b+c[d]},b.sub=function(a,b,c){var d;if(b instanceof Float32Array)for(d=Math.min(a.length,b.length,c.length)-1;d>=0;--d)a[d]=b[d]-c[d];else for(d=Math.min(a.length,c.length)-1;d>=0;--d)a[d]=b-c[d]},b.mul=function(a,b,c){var d;if(b instanceof Float32Array)for(d=Math.min(a.length,b.length,c.length)-1;d>=0;--d)a[d]=b[d]*c[d];else for(d=Math.min(a.length,c.length)-1;d>=0;--d)a[d]=b*c[d]},b.mulCplx=function(a,b,c,d,e,f){var g,h,i,j,k;if(c instanceof Float32Array)for(g=Math.min(a.length,b.length,c.length,d.length,e.length,f.length)-1;g>=0;--g)h=c[g],i=d[g],j=e[g],k=f[g],a[g]=h*j-i*k,b[g]=h*k+i*j;else for(g=Math.min(a.length,b.length,e.length,f.length)-1;g>=0;--g)j=e[g],k=f[g],a[g]=c*j-d*k,b[g]=c*k+d*j},b.div=function(a,b,c){var d;if(b instanceof Float32Array)for(d=Math.min(a.length,b.length,c.length)-1;d>=0;--d)a[d]=b[d]/c[d];else for(d=Math.min(a.length,c.length)-1;d>=0;--d)a[d]=b/c[d]},b.divCplx=function(a,b,c,d,e,f){var g,h,i,j,k,l;if(c instanceof Float32Array)for(g=Math.min(a.length,b.length,c.length,d.length,e.length,f.length)-1;g>=0;--g)h=c[g],i=d[g],j=e[g],k=f[g],l=1/(j*j+k*k),a[g]=(h*j+i*k)*l,b[g]=(i*j-h*k)*l;else for(g=Math.min(a.length,b.length,e.length,f.length)-1;g>=0;--g)j=e[g],k=f[g],l=1/(j*j+k*k),a[g]=(c*j+d*k)*l,b[g]=(d*j-c*k)*l},b.madd=function(a,b,c,d){var e;if(b instanceof Float32Array)for(e=Math.min(a.length,b.length,c.length,d.length)-1;e>=0;--e)a[e]=b[e]*c[e]+d[e];else for(e=Math.min(a.length,c.length,d.length)-1;e>=0;--e)a[e]=b*c[e]+d[e]},b.abs=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.abs(b[c])},b.absCplx=function(a,b,c){for(var d=Math.min(a.length,b.length,c.length)-1;d>=0;--d)a[d]=Math.sqrt(b[d]*b[d]+c[d]*c[d])},b.acos=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.acos(b[c])},b.asin=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.asin(b[c])},b.atan=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.atan(b[c])},b.atan2=function(a,b,c){for(var d=Math.min(a.length,c.length,b.length)-1;d>=0;--d)a[d]=Math.atan2(b[d],c[d])},b.ceil=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.ceil(b[c])},b.cos=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.cos(b[c])},b.exp=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.exp(b[c])},b.floor=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.floor(b[c])},b.log=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.log(b[c])},b.max=function(a){for(var b=-(1/0),c=a.length-1;c>=0;--c){var d=a[c];d>b&&(b=d)}return b},b.min=function(a){for(var b=1/0,c=a.length-1;c>=0;--c){var d=a[c];b>d&&(b=d)}return b},b.pow=function(a,b,c){var d;if(c instanceof Float32Array)for(d=Math.min(a.length,b.length,c.length)-1;d>=0;--d)a[d]=Math.pow(b[d],c[d]);else for(d=Math.min(a.length,b.length)-1;d>=0;--d)a[d]=Math.pow(b[d],c)},b.random=function(a,b,c){b||(b=0),isNaN(parseFloat(c))&&(c=1);for(var d=c-b,e=a.length-1;e>=0;--e)a[e]=Math.random()*d+b},b.round=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.round(b[c])},b.sin=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.sin(b[c])},b.sqrt=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.sqrt(b[c])},b.tan=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.tan(b[c])},b.clamp=function(a,b,c,d){for(var e=Math.min(a.length,b.length)-1;e>=0;--e){var f=b[e];a[e]=c>f?c:f>d?d:f}},b.fract=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c){var d=b[c];a[c]=d-Math.floor(d)}},b.fill=function(a,b){for(var c=a.length-1;c>=0;--c)a[c]=b},b.ramp=function(a,b,c){var d=a.length-1;if(d>=0&&(a[0]=b),d>0)for(var e=(c-b)/d,f=1;d>=f;++f)a[f]=b+e*f},b.sign=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=b[c]<0?-1:1},b.sum=function(a){for(var b=0,c=a.length-1;c>=0;--c)b+=a[c];return b},b.sampleLinear=function(a,b,c){for(var d=b.length,e=d-1,f=Math.min(a.length,c.length)-1;f>=0;--f){var g=c[f];g=0>g?0:g>e?e:g;var h=Math.floor(g),i=g-h,j=b[h],k=b[e>h?h+1:e];a[f]=j+i*(k-j)}},b.sampleLinearRepeat=function(a,b,c){for(var d=b.length,e=d-1,f=Math.min(a.length,c.length)-1;f>=0;--f){var g=c[f];g-=Math.floor(g/d)*d;var h=Math.floor(g),i=g-h,j=b[h],k=b[e>h?h+1:0];a[f]=j+i*(k-j)}},b.sampleCubic=function(a,b,c){for(var d=b.length,e=d-1,f=Math.min(a.length,c.length)-1;f>=0;--f){var g=c[f];g=0>g?0:g>e?e:g;var h=Math.floor(g),i=g-h,j=i*i,k=j*i,l=-2*k+3*j,m=1-l,n=k-j,o=n-j+i,p=b[h>0?h-1:0],q=b[h],r=b[e>h?h+1:e],s=b[e-1>h?h+2:e];a[f]=m*q+l*r+.5*(o*(r-p)+n*(s-q))}},b.sampleCubicRepeat=function(a,b,c){for(var d=b.length,e=d-1,f=Math.min(a.length,c.length)-1;f>=0;--f){var g=c[f];g-=Math.floor(g/d)*d;var h=Math.floor(g),i=g-h,j=i*i,k=j*i,l=-2*k+3*j,m=1-l,n=k-j,o=n-j+i,p=b[h>0?h-1:e],q=b[h],r=b[e>h?h+1:0],s=b[e-1>h?h+2:h+2-Math.floor((h+2)/d)*d];a[f]=m*q+l*r+.5*(o*(r-p)+n*(s-q))}},b.pack=function(a,b,c,d,e,f,g){var h=Math.floor(Math.max(0,a.length-b)/c),i=Math.min(h,d.length);if(e){var i=Math.min(i,e.length);if(f){var i=Math.min(i,f.length);if(g)for(var i=Math.min(i,g.length),j=0;i>j;++j)a[b]=d[j],a[b+1]=e[j],a[b+2]=f[j],a[b+3]=g[j],b+=c;else for(var j=0;i>j;++j)a[b]=d[j],a[b+1]=e[j],a[b+2]=f[j],b+=c}else for(var j=0;i>j;++j)a[b]=d[j],a[b+1]=e[j],b+=c}else for(var j=0;i>j;++j)a[b]=d[j],b+=c},b.unpack=function(a,b,c,d,e,f,g){var h=Math.floor(Math.max(0,a.length-b)/c),i=Math.min(h,d.length);if(e){var i=Math.min(i,e.length);if(f){var i=Math.min(i,f.length);if(g)for(var i=Math.min(i,g.length),j=0;i>j;++j)d[j]=a[b],e[j]=a[b+1],f[j]=a[b+2],g[j]=a[b+3],b+=c;else for(var j=0;i>j;++j)d[j]=a[b],e[j]=a[b+1],f[j]=a[b+2],b+=c}else for(var j=0;i>j;++j)d[j]=a[b],e[j]=a[b+1],b+=c}else for(var j=0;i>j;++j)d[j]=a[b],b+=c},a.ArrayMath=b}}(),function(){var a="undefined"!=typeof window?window:"undefined"!=typeof self?self:"undefined"!=typeof module&&module.exports?module.exports:global;if(!a.Filter){var b=function(a,b){(isNaN(parseFloat(a))||!isFinite(a))&&(a=1),b||(b=0),this._b=new Float32Array(a),this._b[0]=1,this._a=new Float32Array(b),this._bHist=new Float32Array(a),this._aHist=new Float32Array(b)};b.prototype.filter=function(a,b){var c,d=this._a,e=d.length,f=this._b,g=f.length,h=this._aHist,i=this._bHist,j=b.length,k=a.length,l=g-1,m=e;for(c=0;(l||m)&&j>c;++c){var n,o;o=g-l,l&&l--;var p=f[0]*b[c];for(n=1;o>n;++n)p+=f[n]*b[c-n];for(;g>n;++n)p+=f[n]*i[n-o];for(o=e-m,m&&m--,n=0;o>n;++n)p-=d[n]*a[c-1-n];for(;e>n;++n)p-=d[n]*h[n-o];a[c]=p}if(3==g&&2==e)for(var q,r,s=f[0],t=f[1],u=f[2],v=d[0],w=d[1],x=b[c-1],y=b[c-2],z=a[c-1],A=a[c-2];j>c;++c)q=y,y=x,x=b[c],r=A,A=z,z=s*x+t*y+u*q-v*A-w*r,a[c]=z;else for(;j>c;++c){var n,p=f[0]*b[c];for(n=1;g>n;++n)p+=f[n]*b[c-n];for(n=0;e>n;++n)p-=d[n]*a[c-1-n];a[c]=p}var B=Math.min(g-1,j);for(c=g-2;c>=B;--c)i[c]=i[c-B];for(c=0;B>c;++c)i[c]=b[j-1-c];for(B=Math.min(e,k),c=e-1;c>=B;--c)h[c]=h[c-B];for(c=0;B>c;++c)h[c]=a[j-1-c]},b.prototype.clearHistory=function(){for(var a=this._bHist.length-1;a>=0;--a)this._bHist[a]=0;for(var a=this._aHist.length-1;a>=0;--a)this._aHist[a]=0},b.prototype.setB=function(a){for(var b=Math.min(this._b.length,a.length),c=0;b>c;++c)this._b[c]=a[c]},b.prototype.setA=function(a){for(var b=Math.min(this._a.length,a.length),c=0;b>c;++c)this._a[c]=a[c]},a.Filter=b}}(),function(){var a="undefined"!=typeof window?window:"undefined"!=typeof self?self:"undefined"!=typeof module&&module.exports?module.exports:global;if(!a.FFT){var b=function(a,b,c,d,e,f,g){for(var h,i,j,k,l,m,n,o,p=0,q=c,r=c+g,s=.7071067811865475,t=q+g;t>q;)j=a[q]*s,k=b[q]*s,l=a[r]*s,m=b[r]*s,n=e[p],o=f[p],h=l*n-m*o,i=l*o+m*n,a[r]=j-h,b[r]=k-i,a[q]=j+h,b[q]=k+i,p+=d,++q,++r},c=function(a,b,c,d,e,f,g){for(var h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x=0,y=0,z=2*d,A=c,B=c+g,C=c+2*g,D=f[d*g],E=.5773502691896258,F=A+g;F>A;)p=a[A]*E,q=b[A]*E,r=a[B]*E,s=b[B]*E,t=a[C]*E,u=b[C]*E,v=e[x],w=f[x],j=r*v-s*w,k=r*w+s*v,v=e[y],w=f[y],l=t*v-u*w,m=t*w+u*v,n=j+l,o=k+m,h=j-l,i=k-m,r=p-.5*n,s=q-.5*o,h*=D,i*=D,a[A]=p+n,b[A]=q+o,a[C]=r+i,b[C]=s-h,a[B]=r-i,b[B]=s+h,x+=d,y+=z,++A,++B,++C},d=function(a,b,c,d,e,f,g,h){for(var i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E=0,F=0,G=0,H=2*d,I=3*d,J=c,K=c+g,L=c+2*g,M=c+3*g,N=.5,O=J+g;O>J;)u=a[J]*N,v=b[J]*N,w=a[K]*N,x=b[K]*N,y=a[L]*N,z=b[L]*N,A=a[M]*N,B=b[M]*N,C=e[E],D=f[E],i=w*C-x*D,j=w*D+x*C,C=e[F],D=f[F],k=y*C-z*D,l=y*D+z*C,C=e[G],D=f[G],m=A*C-B*D,n=A*D+B*C,s=u-k,t=v-l,u+=k,v+=l,o=i+m,p=j+n,q=i-m,r=j-n,a[L]=u-o,b[L]=v-p,a[J]=u+o,b[J]=v+p,h?(a[K]=s-r,b[K]=t+q,a[M]=s+r,b[M]=t-q):(a[K]=s+r,b[K]=t-q,a[M]=s-r,b[M]=t+q),E+=d,F+=H,G+=I,++J,++K,++L,++M},e=function(a,b,c,d,e,f,g){for(var h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T=0,U=0,V=0,W=0,X=2*d,Y=3*d,Z=4*d,$=c,_=c+g,aa=c+2*g,ba=c+3*g,ca=c+4*g,da=e[d*g],ea=f[d*g],fa=e[2*d*g],ga=f[2*d*g],ha=.4472135954999579,ia=$+g;ia>$;)H=a[$]*ha,I=b[$]*ha,J=a[_]*ha,K=b[_]*ha,L=a[aa]*ha,M=b[aa]*ha,N=a[ba]*ha,O=b[ba]*ha,P=a[ca]*ha,Q=b[ca]*ha,h=H,i=I,R=e[T],S=f[T],j=J*R-K*S,k=J*S+K*R,R=e[U],S=f[U],l=L*R-M*S,m=L*S+M*R,R=e[V],S=f[V],n=N*R-O*S,o=N*S+O*R,R=e[W],S=f[W],p=P*R-Q*S,q=P*S+Q*R,v=j+p,w=k+q,B=j-p,C=k-q,x=l+n,y=m+o,z=l-n,A=m-o,a[$]=H+v+x,b[$]=I+w+y,r=h+v*da+x*fa,s=i+w*da+y*fa,t=C*ea+A*ga,u=-B*ea-z*ga,a[_]=r-t,b[_]=s-u,a[ca]=r+t,b[ca]=s+u,D=h+v*fa+x*da,E=i+w*fa+y*da,F=-C*ga+A*ea,G=B*ga-z*ea,a[aa]=D+F,b[aa]=E+G,a[ba]=D-F,b[ba]=E-G,T+=d,U+=X,V+=Y,W+=Z,++$,++_,++aa,++ba,++ca},f=function(a,b,c,d,e,f,g,h,i){var j,k,l,m,n,o,p,q,r,s,t=new Float32Array(h),u=new Float32Array(h),v=Math.sqrt(1/h);for(j=0;g>j;++j){for(m=c+j,k=0;h>k;++k)t[k]=a[m]*v,u[k]=b[m]*v,m+=g;m=c+j;var w=d*j;for(k=0;h>k;++k){n=t[0],o=u[0];var x=0;for(l=1;h>l;++l)x+=w,x>=i&&(x-=i),p=t[l],q=u[l],r=e[x],s=f[x],n+=p*r-q*s,o+=p*s+q*r;a[m]=n,b[m]=o,m+=g,w+=d}}},g=function(a,h,i,j,k,l,m,n,o,p,q,r,s,t){var u=o[p++],v=o[p++],w=i,x=i+u*v,y=m*n;if(1==v){do a[i]=j[l],h[i]=k[l],l+=y,++i;while(i!=x)}else do g(a,h,i,j,k,l,m*u,n,o,p,q,r,s,t),l+=y,i+=v;while(i!=x);switch(i=w,u){case 2:b(a,h,i,m,q,r,v);break;case 3:c(a,h,i,m,q,r,v);break;case 4:d(a,h,i,m,q,r,v,t);break;case 5:e(a,h,i,m,q,r,v);break;default:f(a,h,i,m,q,r,v,u,s)}},h=function(a,b){var c=4,d=Math.floor(Math.sqrt(a)),e=0;do{for(;a%c;){switch(c){case 4:c=2;break;case 2:c=3;break;default:c+=2}c>d&&(c=a)}a=Math.floor(a/c),b[e++]=c,b[e++]=a}while(a>1)},i=function(a){a||(a=256),Object.defineProperty(this,"size",{configurable:!1,writable:!1,value:a}),this._twiddlesFwdRe=new Float32Array(a),this._twiddlesFwdIm=new Float32Array(a),this._twiddlesInvRe=this._twiddlesFwdRe,this._twiddlesInvIm=new Float32Array(a);for(var b=0;a>b;++b){var c=-2*Math.PI*b/a,d=Math.cos(c),e=Math.sin(c);this._twiddlesFwdRe[b]=d,this._twiddlesFwdIm[b]=e,this._twiddlesInvIm[b]=-e}this._factors=new Int32Array(64),h(a,this._factors)};i.prototype.forwardCplx=function(a,b,c,d){var e=this._twiddlesFwdRe,f=this._twiddlesFwdIm;g(a,b,0,c,d,0,1,1,this._factors,0,e,f,this.size,!1)},i.prototype.forward=function(a,b,c){this.forwardCplx(a,b,c,new Float32Array(this.size))},i.prototype.inverseCplx=function(a,b,c,d){var e=this._twiddlesInvRe,f=this._twiddlesInvIm;g(a,b,0,c,d,0,1,1,this._factors,0,e,f,this.size,!0)},i.prototype.inverse=function(a,b,c){this.inverseCplx(a,new Float32Array(this.size),b,c)},a.FFT=i}}();var e=function(a){if(a=void 0===a?(new Date).getTime():a,"number"!=typeof a||Math.ceil(a)!=Math.floor(a))throw new TypeError("seed value must be an integer");this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_by_array([a],1)};e.prototype.init_genrand=function(a){for(this.mt[0]=a>>>0,this.mti=1;this.mti<this.N;this.mti++){var a=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(1812433253*((4294901760&a)>>>16)<<16)+1812433253*(65535&a)+this.mti,this.mt[this.mti]>>>=0}},e.prototype.init_by_array=function(a,b){var c,d,e;for(this.init_genrand(19650218),c=1,d=0,e=this.N>b?this.N:b;e;e--){var f=this.mt[c-1]^this.mt[c-1]>>>30;this.mt[c]=(this.mt[c]^(1664525*((4294901760&f)>>>16)<<16)+1664525*(65535&f))+a[d]+d,this.mt[c]>>>=0,c++,d++,c>=this.N&&(this.mt[0]=this.mt[this.N-1],c=1),d>=b&&(d=0)}for(e=this.N-1;e;e--){var f=this.mt[c-1]^this.mt[c-1]>>>30;this.mt[c]=(this.mt[c]^(1566083941*((4294901760&f)>>>16)<<16)+1566083941*(65535&f))-c,this.mt[c]>>>=0,c++,c>=this.N&&(this.mt[0]=this.mt[this.N-1],c=1)}this.mt[0]=2147483648},e.prototype.genrand_int32=function(){var a,b=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var c;for(this.mti==this.N+1&&this.init_genrand(5489),c=0;c<this.N-this.M;c++)a=this.mt[c]&this.UPPER_MASK|this.mt[c+1]&this.LOWER_MASK,this.mt[c]=this.mt[c+this.M]^a>>>1^b[1&a];for(;c<this.N-1;c++)a=this.mt[c]&this.UPPER_MASK|this.mt[c+1]&this.LOWER_MASK,this.mt[c]=this.mt[c+(this.M-this.N)]^a>>>1^b[1&a];a=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^a>>>1^b[1&a],this.mti=0}return a=this.mt[this.mti++],a^=a>>>11,a^=a<<7&2636928640,a^=a<<15&4022730752,a^=a>>>18,a>>>0},e.prototype.genrand_int31=function(){return this.genrand_int32()>>>1},e.prototype.genrand_real1=function(){return this.genrand_int32()*(1/4294967295)},e.prototype.random=function(){return this.pythonCompatibility&&(this.skip&&this.genrand_int32(),this.skip=!0),this.genrand_int32()*(1/4294967296)},e.prototype.genrand_real3=function(){return(this.genrand_int32()+.5)*(1/4294967296)},e.prototype.genrand_res53=function(){var a=this.genrand_int32()>>>5,b=this.genrand_int32()>>>6;return(67108864*a+b)*(1/9007199254740992)},e.prototype.LOG4=Math.log(4),e.prototype.SG_MAGICCONST=1+Math.log(4.5),e.prototype.exponential=function(a){if(1!=arguments.length)throw new SyntaxError("exponential() must be called with 'lambda' parameter");var b=this.random();return-Math.log(b)/a},e.prototype.gamma=function(a,b){if(2!=arguments.length)throw new SyntaxError("gamma() must be called with alpha and beta parameters");if(!(a>1)){if(1==a){for(var c=this.random();1e-7>=c;)c=this.random();return-Math.log(c)*b}for(;;){var c=this.random(),d=(Math.E+a)/Math.E,e=d*c;if(1>=e)var f=Math.pow(e,1/a);else var f=-Math.log((d-e)/a);var g=this.random();if(e>1){if(g<=Math.pow(f,a-1))break}else if(g<=Math.exp(-f))break}return f*b}for(var h=Math.sqrt(2*a-1),i=a-this.LOG4,j=a+h;;){var g=this.random();if(!(1e-7>g||c>.9999999)){var k=1-this.random(),l=Math.log(g/(1-g))/h,f=a*Math.exp(l),m=g*g*k,n=i+j*l-f;if(n+this.SG_MAGICCONST-4.5*m>=0||n>=Math.log(m))return f*b}}},e.prototype.normal=function(a,b){if(2!=arguments.length)throw new SyntaxError("normal() must be called with mu and sigma parameters");var c=this.lastNormal;if(this.lastNormal=NaN,!c){var d=2*this.random()*Math.PI,e=Math.sqrt(-2*Math.log(1-this.random()));c=Math.cos(d)*e,this.lastNormal=Math.sin(d)*e}return a+c*b},e.prototype.pareto=function(a){if(1!=arguments.length)throw new SyntaxError("pareto() must be called with alpha parameter");var b=this.random();return 1/Math.pow(1-b,1/a)},e.prototype.triangular=function(a,b,c){if(3!=arguments.length)throw new SyntaxError("triangular() must be called with lower, upper and mode parameters");var d=(c-a)/(b-a),e=this.random();return d>=e?a+Math.sqrt(e*(b-a)*(c-a)):b-Math.sqrt((1-e)*(b-a)*(b-c))},e.prototype.uniform=function(a,b){if(2!=arguments.length)throw new SyntaxError("uniform() must be called with lower and upper parameters");return a+this.random()*(b-a)},e.prototype.weibull=function(a,b){if(2!=arguments.length)throw new SyntaxError("weibull() must be called with alpha and beta parameters");var c=1-this.random();return a*Math.pow(-Math.log(c),1/b)},"undefined"==typeof window&&"undefined"!=typeof module&&module.exports&&(module.exports=e);var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";var a=d.registerNamespace("jQuery");if(f.fluid=d,f.init=function(a){var b=a?{components:{audioSystem:{options:{model:a}}}}:void 0,c=f.enviro(b);return c},f.ALL_CHANNELS=32,f.OUT_UGEN_ID="flocking-out",f.PI=Math.PI,f.TWOPI=2*Math.PI,f.HALFPI=Math.PI/2,f.LOG01=Math.log(.1),f.LOG001=Math.log(.001),f.ROOT2=Math.sqrt(2),f.rates={AUDIO:"audio",CONTROL:"control",SCHEDULED:"scheduled",DEMAND:"demand",CONSTANT:"constant"},d.registerNamespace("flock.debug"),f.debug.failHard=!0,f.browser=function(){if("undefined"==typeof navigator)return{};var a,b,c=navigator.userAgent.toLowerCase(),d={};return a=/(chrome)[ \/]([\w.]+)/.exec(c)||/(webkit)[ \/]([\w.]+)/.exec(c)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(c)||/(msie) ([\w.]+)/.exec(c)||c.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(c)||[],b={browser:a[1]||"",version:a[2]||"0"},b.browser&&(d[b.browser]=!0,d.version=b.version),d.chrome?d.webkit=!0:d.webkit&&(d.safari=!0),d},d.registerNamespace("flock.platform"),f.platform.isBrowser="undefined"!=typeof window,f.platform.hasRequire="undefined"!=typeof require,f.platform.os=f.platform.isBrowser?window.navigator.platform:require("os").platform(),f.platform.isLinux=f.platform.os.indexOf("Linux")>-1,f.platform.isAndroid=f.platform.isLinux&&f.platform.os.indexOf("arm")>-1,f.platform.isIOS="iPhone"===f.platform.os||"iPad"===f.platform.os||"iPod"===f.platform.os,f.platform.isMobile=f.platform.isAndroid||f.platform.isIOS,f.platform.browser=f.browser(),f.platform.isWebAudio="undefined"!=typeof AudioContext||"undefined"!=typeof webkitAudioContext,f.platform.audioEngine=f.platform.isBrowser?"webAudio":"nodejs",f.platform.browser&&void 0!==f.platform.browser.version){var b=f.platform.browser.version.indexOf(".");f.platform.browser.majorVersionNumber=Number(0>b?f.platform.browser.version:f.platform.browser.version.substring(0,b))}f.shim={URL:f.platform.isBrowser?window.URL||window.webkitURL||window.msURL:void 0},f.requireModule=function(a,b){if(f.platform.isBrowser)return window[b||a];if(!f.platform.hasRequire)return void 0;var c=f.requireModule.paths[a]||a,d=require(c);return b?d[b]:d},f.requireModule.paths={webarraymath:"../third-party/webarraymath/js/webarraymath.js",Random:"../third-party/simjs/js/random-0.26.js"},f.noOp=function(){},f.isIterable=function(a){var b=typeof a;return a&&void 0!==a.length&&"string"!==b&&"function"!==b},f.hasValue=function(a,b){var c=!1;for(var d in a)if(a[d]===b){c=!0;break}return c},f.hasTag=function(a,b){return a&&b?a.tags&&a.tags.indexOf(b)>-1:!1},f.randomValue=function(a,b){var c=b-a;return Math.random()*c+a},f.randomAudioValue=function(){return 2*Math.random()-1},f.fillBuffer=function(a,b){for(var c=0;c<a.length;c++)a[c]=b(c,a);return a},f.fillBufferWithValue=function(a,b){for(var c=0;c<a.length;c++)a[c]=b;return a},f.generateBuffer=function(a,b){var c=new Float32Array(a);return f.fillBuffer(c,b)},f.generateBufferWithValue=function(a,b){var c=new Float32Array(a);return f.fillBufferWithValue(c,b)},f.generate=function(a,b){var c="function"==typeof b,d="number"==typeof a,e=c?d?f.generateBuffer:f.fillBuffer:d?f.generateBufferWithValue:f.fillBufferWithValue;return e(a,b)},f.generate.silence=function(a){return new Float32Array(a)},f.clearBuffer=function(a){for(var b=0;b<a.length;b++)a[b]=0;return a},f.reverse=function(a){if(!a||!f.isIterable(a)||a.length<2)return a;if("function"==typeof a.reverse)return a.reverse();for(var b,c=0,d=a.length-1;d>c;c++,d--)b=a[c],a[c]=a[d],a[d]=b;return a},f.randomIndex=function(a){var b=a.length-1;return Math.round(Math.random()*b)},f.arrayChoose=function(a,b){b=b||f.randomIndex,a=d.makeArray(a);var c=b(a);return a[c]},f.choose=function(a,b){var c,d;return f.isIterable(a)?d=f.arrayChoose(a,b):(c=f.arrayChoose(a.keys,b),d=a[c])},f.shuffle=function(a){for(var b=a.length-1;b>0;b-=1){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},f.normalize=function(a,b,c){c=c||a;var d,e,f,g=0;for(b=void 0===b?1:b,d=0;d<a.length;d++)e=Math.abs(a[d]),e>g&&(g=e);if(g>0)for(d=0;d<a.length;d++)f=a[d],c[d]=f/g*b;return c},f.generateFourierTable=function(a,b,c,d,e){return d*=f.TWOPI,f.generateBuffer(a,function(a){var f,g,h,i=0;for(f=0;c>f;f++)g=e?e[f]:1,h=(f+1)*(a*b),i+=g*Math.cos(h+d);return i})},f.generateNormalizedFourierTable=function(a,b,c,d,e){var g=f.generateBuffer(c,function(a){return e(a+1)}),h=f.generateFourierTable(a,b,c,d,g);return f.normalize(h)},f.fillTable=function(a,b){var c="number"==typeof a?a:a.length;return b(a,f.TWOPI/c)},f.tableGenerators={sin:function(a,b){return f.generateBuffer(a,function(a){return Math.sin(a*b)})},tri:function(a,b){return f.generateNormalizedFourierTable(a,b,1e3,1,function(a){return a%2===0?0:1/(a*a)})},saw:function(a,b){return f.generateNormalizedFourierTable(a,b,10,-.25,function(a){return 1/a})},square:function(a,b){return f.generateNormalizedFourierTable(a,b,10,-.25,function(a){return a%2===0?0:1/a})},hann:function(a){return f.generateBuffer(a,function(b){var c=Math.sin(Math.PI*b/a);return c*c})},sinWindow:function(a){return f.generateBuffer(a,function(b){return Math.sin(Math.PI*b/a)})}},f.range=function(a){var b,c,d={max:Number.NEGATIVE_INFINITY,min:1/0};for(b=0;b<a.length;b++)c=a[b],c>d.max&&(d.max=c),c<d.min&&(d.min=c);return d},f.scale=function(a){if(a){var b,c=f.range(a),d=(c.max-c.min)/2,e=(c.max+c.min)/2;for(b=0;b<a.length;b++)a[b]=(a[b]-e)/d;return a}},f.copyBuffer=function(a,b,c){void 0===c&&(c=a.length);var d,e,f=c-b,g=new Float32Array(f);for(d=b,e=0;c>d;d++,e++)g[e]=a[d];return g},f.copyToBuffer=function(a,b){for(var c=Math.min(a.length,b.length),d=0;c>d;d++)b[d]=a[d]},f.parseMidiString=function(a){if(!a||a.length<2)return NaN;a=a.toLowerCase();var b=a.charAt(1),c="#"===b||"b"===b?2:1,d=a.substring(0,c),e=Number(a.substring(c)),g=f.midiFreq.noteNames[d],h=12*e+g;return h},f.midiFreq=function(a,b,c,d){return b=void 0===b?440:b,c=void 0===c?69:c,d=d||12,"string"==typeof a&&(a=f.parseMidiString(a)),b*Math.pow(2,1*(a-c)/d)},f.midiFreq.noteNames={"b#":0,c:0,"c#":1,db:1,d:2,"d#":3,eb:3,e:4,"e#":5,f:5,"f#":6,gb:6,g:7,"g#":8,ab:8,a:9,"a#":10,bb:10,b:11,cb:11},f.interpolate={none:function(a,b){return a%=b.length,b[0|a]},linear:function(a,b){var c=b.length;a%=c;var d=0|a,e=(d+1)%c,f=a-d,g=b[d],h=b[e];return g+f*(h-g)},hermite:function(a,b){var c=b.length,d=Math.floor(a),e=d%c,f=a-d,g=e>0?e-1:c-1,h=(e+1)%c,i=(e+2)%c,j=b[g],k=b[e],l=b[h],m=b[i],n=.5*(l-j),o=k-l,p=n+o,q=p+o+.5*(m-k),r=p+q,s=((q*f-r)*f+n)*f+k;return s}},f.interpolate.cubic=f.interpolate.hermite,f.log={fail:function(a){d.log(d.logLevel.FAIL,a)},warn:function(a){d.log(d.logLevel.WARN,a)},debug:function(a){d.log(d.logLevel.INFO,a)}},f.fail=function(a){if(f.debug.failHard)throw new Error(a);f.log.fail(a)},f.pathParseError=function(a,b,c){var e="Error parsing path '"+b+"'. Segment '"+c+"' could not be resolved. Root object was: "+d.prettyPrintJSON(a);f.fail(e)},f.get=function(a,b){if(!a)return d.getGlobalValue(b);if(1===arguments.length&&"string"==typeof a)return d.getGlobalValue(a);if(b&&""!==b){var c,e=""===b?[]:String(b).split("."),g=a[e[0]];for(c=1;c<e.length;c++){if(null===g||void 0===g)return void f.pathParseError(a,b,e[c-1]);g=g[e[c]]}return g}},f.set=function(a,b,c){if(a&&b&&""!==b){var d,e,g=String(b).split("."),h=g.length,i=g[0];for(d=1;h>d;d++){if(a=a[i],e=typeof a,"object"!==e)return void f.fail("Error while setting a value at path '"+b+"'. A non-container object was found at segment '"+i+"'. Value: "+a);i=g[d],void 0===a[i]&&(a[i]={})}return a[i]=c,c}},f.invoke=function(a,b,c){var d="function"==typeof a?a:f.get(a,b);return"function"!=typeof d?void f.fail("Path '"+b+"' does not resolve to a function."):d.apply(null,c)},f.input={},f.input.shouldExpand=function(a){return f.parse.specialInputs.indexOf(a)<0},f.input.pathExpander=function(a){var b,c=d.model.parseEL(a),e="inputs",f=c.length,g=f-1,h=[];for(b=0;g>b;b++){var i=c[b],j=c[b+1];if(h.push(i),"model"===j||"options"===j){h=h.concat(c.slice(b+1,g));break}isNaN(Number(j))&&h.push(e)}return h.push(c[g]),h.join(".")},f.input.expandPaths=function(a){var b,c,d,e={};for(b in a)c=f.input.pathExpander(b),d=a[b],e[c]=d;return e},f.input.expandPath=function(a){return"string"==typeof a?f.input.pathExpander(a):f.input.expandPaths(a)},f.input.getValueForPath=function(a,b){b=f.input.expandPath(b);var c=f.get(a,b);return f.hasTag(c,"flock.ugen.valueType")?c.inputs.value:c},f.input.getValuesForPathArray=function(a,b){var c,d,e={};for(c=0;c<b.length;c++)d=b[c],e[d]=f.input.get(a,d);return e},f.input.getValuesForPathObject=function(a,b){var c;for(c in b)b[c]=f.input.get(a,c);return b},f.input.get=function(a,b){return"string"==typeof b?f.input.getValueForPath(a,b):f.isIterable(b)?f.input.getValuesForPathArray(a,b):f.input.getValuesForPathObject(a,b)},f.input.resolveValue=function(a,b,c,e,g,h,i){if("string"==typeof c){var j=d.extractEL(c,f.input.valueExpressionSpec);if(j){var k=f.input.getValueForPath(a,j);return void 0===k&&f.log.debug("The value expression '"+c+"' resolved to undefined. If this isn't expected, check to ensure that your path is valid."),k}}return f.input.shouldExpand(g)&&i?i(c,b,e,h):c},f.input.valueExpressionSpec={ELstyle:"${}"},f.input.setValueForPath=function(a,b,c,d,e){b=f.input.expandPath(b);var g=f.get(a,b),h=b.lastIndexOf("."),i=b.slice(h+1),j=h>-1?f.get(a,b.slice(0,b.lastIndexOf(".inputs"))):d,k=f.input.resolveValue(a,b,c,j,i,g,e);return f.set(a,b,k),j&&j.onInputChanged&&j.onInputChanged(i),k},f.input.setValuesForPaths=function(a,b,c,d){var e,g,h,i={};for(e in b)g=b[e],h=f.input.set(a,e,g,c,d),i[e]=h;return i},f.input.set=function(a,b,c,d,e){return"string"==typeof b?f.input.setValueForPath(a,b,c,d,e):f.input.setValuesForPaths(a,b,d,e)},d.defaults("flock.audioSystem",{gradeNames:["fluid.modelComponent"],channelRange:{min:1,max:32},outputBusRange:{min:2,max:1024},inputBusRange:{min:1,max:32},model:{rates:{audio:44100,control:689.0625,scheduled:0,demand:0,constant:0},blockSize:64,numBlocks:16,chans:2,numInputBuses:2,numBuses:8,bufferSize:"@expand:flock.audioSystem.defaultBufferSize()"},modelRelay:[{target:"rates.control",singleTransform:{type:"fluid.transforms.binaryOp",left:"{that}.model.rates.audio",operator:"/",right:"{that}.model.blockSize"}},{target:"numBlocks",singleTransform:{type:"fluid.transforms.binaryOp",left:"{that}.model.bufferSize",operator:"/",right:"{that}.model.blockSize"}},{target:"chans",singleTransform:{type:"fluid.transforms.limitRange",input:"{that}.model.chans",min:"{that}.options.channelRange.min",max:"{that}.options.channelRange.max"}},{target:"numInputBuses",singleTransform:{type:"fluid.transforms.limitRange",input:"{that}.model.numInputBuses",min:"{that}.options.inputBusRange.min",max:"{that}.options.inputBusRange.max"}},{target:"numBuses",singleTransform:{type:"fluid.transforms.free",func:"flock.audioSystem.clampNumBuses",args:["{that}.model.numBuses","{that}.options.outputBusRange","{that}.model.chans"]}}]}),f.audioSystem.clampNumBuses=function(a,b,c){return a=Math.max(a,Math.max(c,b.min)),a=Math.min(a,b.max)},f.audioSystem.defaultBufferSize=function(){return f.platform.isMobile?8192:f.platform.browser.mozilla?2048:1024},d.defaults("flock.busManager",{gradeNames:["fluid.modelComponent"],model:{nextAvailableBus:{input:0,interconnect:0}},members:{buses:{expander:{funcName:"flock.enviro.createAudioBuffers",args:["{audioSystem}.model.numBuses","{audioSystem}.model.blockSize"]}}},invokers:{acquireNextBus:{funcName:"flock.busManager.acquireNextBus",args:["{arguments}.0","{that}.buses","{that}.applier","{that}.model","{audioSystem}.model.chans","{audioSystem}.model.numInputBuses"]},reset:{changePath:"nextAvailableBus",value:{input:0,interconnect:0}}}}),f.busManager.acquireNextBus=function(a,b,c,d,e,g){var h=d.nextAvailableBus[a];
if(void 0===h)return void f.fail("An invalid bus type was specified when invoking flock.busManager.acquireNextBus(). Type was: "+a);var i=h+e,j=e+g;return"interconnect"===a&&(i+=g,j=b.length),i>=j?void f.fail("Unable to aquire a bus. There are insufficient buses available. Please use an existing bus or configure additional buses using the enviroment's numBuses and numInputBuses parameters."):(c.change("nextAvailableBus."+a,++h),i)},d.defaults("flock.outputManager",{gradeNames:["fluid.modelComponent"],model:{audioSettings:"{audioSystem}.model"},invokers:{start:"{that}.events.onStart.fire()",stop:"{that}.events.onStop.fire()",reset:"{that}.events.onReset.fire"},events:{onStart:"{enviro}.events.onStart",onStop:"{enviro}.events.onStop",onReset:"{enviro}.events.onReset"}}),d.defaults("flock.nodeListComponent",{gradeNames:"fluid.component",members:{nodeList:"@expand:flock.nodeList()"},invokers:{insert:"flock.nodeList.insert({that}.nodeList, {arguments}.0, {arguments}.1)",head:"flock.nodeList.head({that}.nodeList, {arguments}.0)",tail:"flock.nodeList.tail({that}.nodeList, {arguments}.0)",before:"flock.nodeList.before({that}.nodeList, {arguments}.0, {arguments}.1)",after:"flock.nodeList.after({that}.nodeList, {arguments}.0, {arguments}.1)",remove:"flock.nodeList.remove({that}.nodeList, {arguments}.0)",replace:"flock.nodeList.after({that}.nodeList, {arguments}.0, {arguments}.1)"}}),d.defaults("flock.enviro",{gradeNames:["fluid.modelComponent","flock.nodeListComponent","fluid.resolveRootSingle"],singleRootType:"flock.enviro",isGlobalSingleton:!0,members:{buffers:{},bufferSources:{}},components:{asyncScheduler:{type:"flock.scheduler.async"},audioSystem:{type:"flock.audioSystem"},busManager:{type:"flock.busManager"}},model:{isPlaying:!1},invokers:{gen:{funcName:"flock.enviro.gen",args:["{busManager}.buses","{audioSystem}.model","{that}.nodeList.nodes"]},start:"flock.enviro.start({that}.model, {that}.events.onStart.fire)",play:"{that}.start",stop:"flock.enviro.stop({that}.model, {that}.events.onStop.fire)",reset:"{that}.events.onReset.fire()",registerBuffer:"flock.enviro.registerBuffer({arguments}.0, {that}.buffers)",releaseBuffer:"flock.enviro.releaseBuffer({arguments}.0, {that}.buffers)",saveBuffer:{funcName:"flock.enviro.saveBuffer",args:["{arguments}.0","{that}.buffers","{audioSystem}"]}},events:{onStart:null,onPlay:"{that}.events.onStart",onStop:null,onReset:null},listeners:{onCreate:["flock.enviro.registerGlobalSingleton({that})"],onStart:["{that}.applier.change(isPlaying, true)"],onStop:["{that}.applier.change(isPlaying, false)"],onReset:["{that}.stop()","{asyncScheduler}.clearAll()","flock.nodeList.clearAll({that}.nodeList)","{busManager}.reset()","fluid.clear({that}.buffers)"],onDestroy:["{that}.reset()"]}}),f.enviro.registerGlobalSingleton=function(a){a.options.isGlobalSingleton&&(f.environment=f.enviro.shared=a)},f.enviro.registerBuffer=function(a,b){a.id&&(b[a.id]=a)},f.enviro.releaseBuffer=function(a,b){if(a){var c="string"==typeof a?a:a.id;delete b[c]}},f.enviro.saveBuffer=function(a,b,c){if("string"==typeof a&&(a={buffer:a}),"string"==typeof a.buffer){var d=a.buffer;a.buffer=b[d],a.buffer.id=d}return a.type=a.type||"wav",a.path=a.path||a.buffer.id+"."+a.type,a.format=a.format||"int16",c.bufferWriter.save(a,a.buffer)},f.enviro.gen=function(a,b,c){f.evaluate.clearBuses(a,b.numBuses,b.blockSize),f.evaluate.synths(c)},f.enviro.start=function(a,b){a.isPlaying||b()},f.enviro.stop=function(a,b){a.isPlaying&&b()},f.enviro.createAudioBuffers=function(a,b){var c,d=[];for(c=0;a>c;c++)d[c]=new Float32Array(b);return d},d.defaults("flock.autoEnviro",{gradeNames:["fluid.component"],members:{enviro:"@expand:flock.autoEnviro.initEnvironment()"}}),f.autoEnviro.initEnvironment=function(){return f.environment?f.environment:f.init()},d.defaults("flock.silentEnviro",{gradeNames:"flock.enviro",listeners:{onCreate:["flock.silentEnviro.insertOutputGainNode({that})"]}}),f.silentEnviro.insertOutputGainNode=function(a){a.audioSystem.nativeNodeManager&&a.audioSystem.nativeNodeManager.createOutputNode({node:"Gain",params:{gain:0}})},d.defaults("flock.node",{gradeNames:["flock.autoEnviro","fluid.modelComponent"],addToEnvironment:"tail",model:{},components:{enviro:"{flock.enviro}"},invokers:{play:{funcName:"flock.node.play",args:["{that}","{that}.enviro","{that}.addToEnvironment"]},pause:"{that}.removeFromEnvironment()",addToEnvironment:{funcName:"flock.node.addToEnvironment",args:["{that}","{arguments}.0","{enviro}.nodeList"]},removeFromEnvironment:{funcName:"flock.node.removeFromEnvironment",args:["{that}","{enviro}.nodeList"]},isPlaying:{funcName:"flock.nodeList.isNodeActive",args:["{enviro}.nodeList","{that}"]}},listeners:{onCreate:["{that}.addToEnvironment({that}.options.addToEnvironment)"],onDestroy:["{that}.removeFromEnvironment()"]}}),f.node.addToEnvironment=function(a,b,c){if(void 0===b&&(b=a.options.addToEnvironment),void 0!==b&&null!==b&&b!==!1){var d=typeof b;"string"===d&&"head"===b||"tail"===b?f.nodeList[b](c,a):"number"===d?f.nodeList.insert(c,a,b):f.nodeList.tail(c,a)}},f.node.removeFromEnvironment=function(a,b){f.nodeList.remove(b,a)},f.node.play=function(a,b,c){if(-1===b.nodeList.nodes.indexOf(a)){var d=a.options.addToEnvironment||"tail";c(d)}b.model.isPlaying||b.play()},d.defaults("flock.noteTarget",{gradeNames:"fluid.component",noteChanges:{on:{"env.gate":1},off:{"env.gate":0}},invokers:{set:{funcName:"fluid.notImplemented"},noteOn:{func:"{that}.events.noteOn.fire"},noteOff:{func:"{that}.events.noteOff.fire"},noteChange:{funcName:"flock.noteTarget.change",args:["{that}","{arguments}.0","{arguments}.1"]}},events:{noteOn:null,noteOff:null},listeners:{"noteOn.handleChange":["{that}.noteChange(on, {arguments}.0)"],"noteOff.handleChange":["{that}.noteChange(off, {arguments}.0)"]}}),f.noteTarget.change=function(b,c,d){var e=b.options.noteChanges[c],f=a.extend({},e,d);b.set(f)},d.defaults("flock.synth",{gradeNames:["flock.node","flock.noteTarget"],rate:f.rates.AUDIO,addToEnvironment:!0,mergePolicy:{ugens:"nomerge"},ugens:{expander:{funcName:"flock.makeUGens",args:["{that}.options.synthDef","{that}.rate","{that}.nodeList","{enviro}","{that}.audioSettings"]}},members:{rate:"{that}.options.rate",audioSettings:"{enviro}.audioSystem.model",nodeList:"@expand:flock.nodeList()",out:"{that}.options.ugens",genFn:"@expand:fluid.getGlobalValue(flock.evaluate.ugens)"},model:{blockSize:"@expand:flock.synth.calcBlockSize({that}.rate, {enviro}.audioSystem.model)"},invokers:{set:{funcName:"flock.synth.set",args:["{that}","{that}.nodeList.namedNodes","{arguments}.0","{arguments}.1","{arguments}.2"]},get:{funcName:"flock.input.get",args:["{that}.nodeList.namedNodes","{arguments}.0"]},input:{funcName:"flock.synth.input",args:["{arguments}","{that}.get","{that}.set"]}}}),f.synth.createUGenTree=function(a,b,c){return new f.UGenTree(a,b,c)},f.synth.calcBlockSize=function(a,b){return a===f.rates.AUDIO?b.blockSize:1},f.synth.set=function(a,b,c,d,e){return f.input.set(b,c,d,void 0,function(b,c,d,g){return f.synth.ugenValueParser(a,b,g,e)})},f.synth.input=function(a,b,c){var d=a[0];return d?"string"==typeof d?a.length<2?b(d):c.apply(null,a):f.isIterable(d)?b(d):c.apply(null,a):void 0},f.synth.ugenValueParser=function(a,b,c,d){if(null===b||void 0===b)return c;var e,g,h,i=f.parse.ugenDef(b,a.enviro,{audioSettings:a.audioSettings,buses:a.enviro.busManager.buses,buffers:a.enviro.buffers}),j=f.isIterable(i)?i:void 0!==i?[i]:[],k=f.isIterable(c)?c:void 0!==c?[c]:[],l=Math.min(j.length,k.length),m=d?"swapTree":"replaceTree";for(e=0;l>e;e++)g=f.ugenNodeList[m](a.nodeList,j[e],k[e]);for(h=e;h<j.length;h++)g++,f.ugenNodeList.insertTree(a.nodeList,j[h],g);for(h=e;h<k.length;h++)f.ugenNodeList.removeTree(a.nodeList,k[h]);return i},d.defaults("flock.synth.value",{gradeNames:["flock.synth"],rate:"demand",addToEnvironment:!1,invokers:{value:{funcName:"flock.evaluate.synthValue",args:["{that}"]}}}),d.defaults("flock.synth.frameRate",{gradeNames:["flock.synth.value"],rate:"scheduled",fps:60,members:{audioSettings:{rates:{scheduled:"{that}.options.fps"}}}}),f.bufferDesc=function(){throw new Error("flock.bufferDesc is not defined. Did you forget to include the buffers.js file?")}}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";f.nodeList=function(){return{nodes:[],namedNodes:{}}},f.nodeList.insert=function(a,b,c){return 0>c&&(c=0),a.nodes.splice(c,0,b),f.nodeList.registerNode(a,b),c},f.nodeList.registerNode=function(a,b){var c=b.name||b.id;c&&(a.namedNodes[c]=b)},f.nodeList.head=function(a,b){return f.nodeList.insert(a,b,0)},f.nodeList.before=function(a,b,c){var d=a.nodes.indexOf(c);return f.nodeList.insert(a,b,d)},f.nodeList.after=function(a,b,c){var d=a.nodes.indexOf(c),e=d+1;return f.nodeList.insert(a,b,e)},f.nodeList.tail=function(a,b){var c=a.nodes.length;return f.nodeList.insert(a,b,c)},f.nodeList.unregisterNode=function(a,b){var c=b.name||b.id;c&&delete a.namedNodes[c]},f.nodeList.isNodeActive=function(a,b){var c=a.nodes.indexOf(b);return c>-1},f.nodeList.remove=function(a,b){if(a){var c=a.nodes.indexOf(b);return c>-1&&(a.nodes.splice(c,1),f.nodeList.unregisterNode(a,b)),c}},f.nodeList.replace=function(a,b,c){var d=a.nodes.indexOf(c);return 0>d?f.nodeList.tail(a,b):(a.nodes[d]=b,f.nodeList.unregisterNode(a,c),f.nodeList.registerNode(a,b),d)},f.nodeList.clearAll=function(a){a.nodes.length=0;for(var b in a.namedNodes)delete a.namedNodes[b]},f.ugenNodeList=function(){return f.nodeList()},f.ugenNodeList.insertTree=function(a,b,c){var d,e,g=b.inputs;for(d in g)e=g[d],f.isUGen(e)&&(c=f.ugenNodeList.insertTree(a,e,c),c++);return f.nodeList.insert(a,b,c)},f.ugenNodeList.removeTree=function(a,b){var c,d,e=b.inputs;for(c in e)d=e[c],f.isUGen(d)&&f.ugenNodeList.removeTree(a,d);return f.nodeList.remove(a,b)},f.ugenNodeList.tailTree=function(a,b){var c=a.nodes.length;return f.ugenNodeList.insertTree(a,b,c)},f.ugenNodeList.replaceTree=function(a,b,c){if(!c)return f.ugenNodeList.tailTree(a,b);var d=f.ugenNodeList.removeTree(a,c);return f.ugenNodeList.insertTree(a,b,d),d},f.ugenNodeList.swapTree=function(a,b,c,d){return d?(f.ugenNodeList.reattachInputs(a,b,c,d),f.ugenNodeList.replaceInputs(a,b,c,d)):b.inputs=c.inputs,f.nodeList.replace(a,b,c)},f.ugenNodeList.reattachInputs=function(a,b,c,d){for(var e in c.inputs)d.indexOf(e)<0?f.ugenNodeList.removeTree(a,c.inputs[e]):b.inputs[e]=c.inputs[e]},f.ugenNodeList.replaceInputs=function(a,b,c,d){for(var e in b.inputs)d.indexOf(e)<0&&f.ugenNodeList.replaceTree(a,b.inputs[e],c.inputs[e])},f.makeUGens=function(a,b,c,e,g){a||d.log(d.logLevel.IMPORTANT,"Warning: An empy synthDef was found while instantiating a unit generator tree.Did you forget to include a 'synthDef' option for your Synth?");var h=b===f.rates.SCHEDULED||b===f.rates.DEMAND;return f.parse.synthDef(a,e,{rate:b,overrideRate:h,visitors:[f.makeUGens.visitor(c)],buffers:e.buffers,buses:e.busManager.buses,audioSettings:g||e.audioSystem.model})},f.makeUGens.visitor=function(a){return function(b){f.nodeList.tail(a,b)}}}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";f.evaluate={synth:function(a){a.genFn(a.nodeList.nodes),a.out&&(a.model.value=a.out.model.value)},synthValue:function(a){return f.evaluate.synth(a),a.model.value},synths:function(a){for(var b=0;b<a.length;b++)f.evaluate.synth(a[b])},clearBuses:function(a,b,c){for(var d=0;b>d;d++)for(var e=a[d],f=0;c>f;f++)e[f]=0},ugens:function(a){for(var b,c=0;c<a.length;c++)b=a[c],void 0!==b.gen&&b.gen(b.model.blockSize)}}}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";d.defaults("flock.modelSynth",{gradeNames:"flock.synth",model:{inputs:{}},modelListeners:{inputs:[{funcName:"flock.modelSynth.updateUGens",args:["{that}.set","{that}.options.ugens","{change}"]}]},invokers:{value:"{that}.events.onEvaluate.fire()"},events:{onEvaluate:null},listeners:{onEvaluate:["{that}.genFn({that}.nodeList.nodes)",{changePath:"value",value:"{that}.out.model.value"}]}}),f.modelSynth.updateUGens=function(a,b,c){var d={};f.modelSynth.flattenModel("",c.value,d),a(d)},f.modelSynth.shouldFlattenValue=function(a){return d.isPrimitive(a)||f.isIterable(a)||a.ugen},f.modelSynth.flattenModel=function(a,b,c){for(var e in b){var g=b[e],h=d.pathUtil.composePath(a,e.toString());f.modelSynth.shouldFlattenValue(g)?c[h]=g:f.modelSynth.flattenModel(h,g,c)}return c}}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";d.defaults("flock.synth.group",{gradeNames:["flock.node","flock.noteTarget"],methodEventMap:{onSet:"set"},members:{nodeList:"@expand:flock.nodeList()",genFn:"@expand:fluid.getGlobalValue(flock.evaluate.synths)"},invokers:{play:"{that}.events.onPlay.fire",pause:"{that}.events.onPause.fire",set:"{that}.events.onSet.fire",get:"flock.synth.group.get({arguments}, {that}.nodeList.nodes)",head:"flock.synth.group.head({arguments}.0, {that})",tail:"flock.synth.group.tail({arguments}.0, {that})",insert:"flock.synth.group.insert({arguments}.0, {arguments}.1, {that})",before:"flock.synth.group.before({arguments}.0, {arguments}.1, {that})",after:"flock.synth.group.after({arguments}.0, {arguments}.1, {that})",remove:"{that}.events.onRemove.fire",input:{funcName:"flock.synth.group.input",args:["{arguments}","{that}.get","{that}.events.onSet.fire"]}},events:{onSet:null,onGen:null,onPlay:null,onPause:null,onInsert:null,onRemove:null},listeners:{onInsert:[{funcName:"flock.synth.group.bindMethods",args:["{arguments}.0","{that}.options.methodEventMap","{that}.events","addListener"]},"flock.synth.group.removeNodeFromEnvironment({arguments}.0)"],onRemove:[{funcName:"flock.synth.group.bindMethods",args:["{arguments}.0","{that}.options.methodEventMap","{that}.events","removeListener"]},{"this":"{that}.nodeList",method:"remove",args:["{arguments}.0"]}]}}),f.synth.group.head=function(a,b){f.nodeList.head(b.nodeList,a),b.events.onInsert.fire(a)},f.synth.group.tail=function(a,b){f.nodeList.tail(b.nodeList,a),b.events.onInsert.fire(a)},f.synth.group.insert=function(a,b,c){f.nodeList.insert(c.nodeList,a,b),c.events.onInsert.fire(a)},f.synth.group.before=function(a,b,c){f.nodeList.before(c.nodeList,a,b),c.events.onInsert.fire(a)},f.synth.group.after=function(a,b,c){f.nodeList.after(c.nodeList,a,b),c.events.onInsert.fire(a)},f.synth.group.removeNodeFromEnvironment=function(a){a.removeFromEnvironment()},f.synth.group.get=function(a,b){var c=b.length-1,d=b[c];return d.get.apply(d,a)},f.synth.group.input=function(a,b,c){var d=a.length>1?c:b;return d.apply(null,a)},f.synth.group.bindMethods=function(a,b,c,d){for(var e in b){var f=b[e],g=a[f],h=c[e],i=h[d];i(g)}}}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";var a=d.registerNamespace("jQuery");d.defaults("flock.synth.polyphonic",{gradeNames:["flock.synth.group"],maxVoices:16,amplitudeNormalizer:"static",amplitudeKey:"env.sustain",noteSpecs:"{that}.options.noteChanges",distributeOptions:{source:"{that}.options.voiceAllocatorOptions",target:"{that flock.synth.voiceAllocator}.options",removeSource:!0},voiceAllocatorOptions:{synthDef:"{polyphonic}.options.synthDef",maxVoices:"{polyphonic}.options.maxVoices",amplitudeNormalizer:"{polyphonic}.options.amplitudeNormalizer",amplitudeKey:"{polyphonic}.options.amplitudeKey",listeners:{onCreateVoice:{funcName:"flock.nodeList.tail",args:["{polyphonic}.nodeList","{arguments}.0"]}}},components:{voiceAllocator:{type:"flock.synth.voiceAllocator.lazy"}},invokers:{noteChange:{funcName:"flock.synth.polyphonic.noteChange",args:["{that}","{arguments}.0","{arguments}.1","{arguments}.2"]},createVoice:{func:"{voiceAllocator}.createVoice",args:["{that}.options","{that}.insert"]}},listeners:{"noteOn.handleChange":[{funcName:"flock.synth.polyphonic.noteOn",args:["{that}","{arguments}.0","{arguments}.1"]}],"noteOff.handleChange":[{funcName:"flock.synth.polyphonic.noteOff",args:["{that}","{arguments}.0","{arguments}.1"]}]}}),f.synth.polyphonic.noteChange=function(b,c,d,e){var f=b.options.noteChanges[c],g=a.extend({},f,e);d.set(g)},f.synth.polyphonic.noteOn=function(a,b,c){var d=a.voiceAllocator.getFreeVoice();return a.voiceAllocator.activeVoices[b]&&a.noteOff(b),a.voiceAllocator.activeVoices[b]=d,a.noteChange("on",d,c),d},f.synth.polyphonic.noteOff=function(a,b,c){var d=a.voiceAllocator.activeVoices[b];return d?(a.noteChange("off",d,c),delete a.voiceAllocator.activeVoices[b],a.voiceAllocator.freeVoices.push(d),d):null},d.defaults("flock.synth.voiceAllocator",{gradeNames:["fluid.component"],maxVoices:16,amplitudeNormalizer:"static",amplitudeKey:"env.sustain",members:{activeVoices:{},freeVoices:[]},invokers:{createVoice:{funcName:"flock.synth.voiceAllocator.createVoice",args:["{that}.options","{that}.events.onCreateVoice.fire"]}},events:{onCreateVoice:null}}),f.synth.voiceAllocator.createVoice=function(a,b){var c,d=f.synth({synthDef:a.synthDef,addToEnvironment:!1}),e=a.amplitudeNormalizer,g=a.amplitudeKey;return e&&("function"==typeof e?e(d,g):"static"===e&&(c=1/a.maxVoices,d.input(g,c))),b(d),d},d.defaults("flock.synth.voiceAllocator.lazy",{gradeNames:["flock.synth.voiceAllocator"],invokers:{getFreeVoice:{funcName:"flock.synth.voiceAllocator.lazy.get",args:["{that}.freeVoices","{that}.activeVoices","{that}.createVoice","{that}.options.maxVoices"]}}}),f.synth.voiceAllocator.lazy.get=function(a,b,c,d){return a.length>1?a.pop():Object.keys(b).length>d?null:c()},d.defaults("flock.synth.voiceAllocator.pool",{gradeNames:["flock.synth.voiceAllocator"],invokers:{getFreeVoice:"flock.synth.voiceAllocator.pool.get({that}.freeVoices)"}}),f.synth.voiceAllocator.pool.get=function(a){return a.length>0?a.pop():void 0},f.synth.voiceAllocator.pool.allocateVoices=function(a,b,c){for(var d=0;c>d;d++)a[d]=b()}}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";d.defaults("flock.band",{gradeNames:["fluid.component"],invokers:{play:{func:"{that}.events.onPlay.fire"},pause:{func:"{that}.events.onPause.fire"},set:{func:"{that}.events.onSet.fire"},getSynths:{funcName:"flock.band.getSynths",args:["{that}"]}},events:{onPlay:null,onPause:null,onSet:null},distributeOptions:[{source:"{that}.options.childListeners",removeSource:!0,target:"{that fluid.component}.options.listeners"},{source:"{that}.options.synthListeners",removeSource:!0,target:"{that flock.synth}.options.listeners"}],childListeners:{"{band}.events.onDestroy":{func:"{that}.destroy"}},synthListeners:{"{band}.events.onPlay":{func:"{that}.play"},"{band}.events.onPause":{func:"{that}.pause"},"{band}.events.onSet":{func:"{that}.set"}}}),f.band.getSynths=function(a){var b=[];return d.each(a.options.components,function(c,e){d.hasGrade(a[e].options,"flock.synth")&&b.push(a[e])}),b}}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";function a(){function a(a,c){var d=function(a,b){return b(c),this},e=function(a){return a(c),this};g.value=c,g.then="reject"===a?d:e,g.resolve=g.reject=function(){throw new Error("Promise already completed")},b(a,c)}function b(a,b){var c,d;for(c=0;c<f.length;c++)d=f[c],d[a]&&d[a](b);f=null}var c=function(b){a("resolve",b),g.state="fulfilled"},d=function(b){a("reject",b),g.state="rejected"},e=function(a,b){if(f)f.push({resolve:a,reject:b});else{var c="fulfilled"===g.state?a:b;c(g.value)}return this},f=[],g={state:"pending",value:void 0,resolve:c,reject:d,then:e,safe:{then:function(a,b){return g.then(a,b),this}}};return g}d.defaults("flock.promise",{gradeNames:["fluid.component"],members:{promise:{expander:{funcName:"flock.promise.make"}}}}),f.promise.make=function(){return new a},f.bufferDesc=function(a,b,c){var d=f.platform.isWebAudio&&a instanceof AudioBuffer?f.bufferDesc.fromAudioBuffer:f.isIterable(a)?f.bufferDesc.fromChannelArray:f.bufferDesc.expand;return d(a,b,c)},f.bufferDesc.inferFormat=function(a,b,c){var d=a.format,e=a.data;return d.sampleRate=b||d.sampleRate||44100,d.numChannels=c||d.numChannels||a.data.channels.length,d.numSampleFrames=d.numSampleFrames||e.channels.length>0?e.channels[0].length:0,d.duration=d.numSampleFrames/d.sampleRate,a},f.bufferDesc.fromChannelArray=function(a,b,c){a instanceof Float32Array&&(a=[a]);var d={container:{},format:{numChannels:c,sampleRate:b,numSampleFrames:a[0].length},data:{channels:a}};return f.bufferDesc.inferFormat(d,b,c)},f.bufferDesc.expand=function(a,b,c){if(a=a||{data:{channels:[]}},a.container=a.container||{},a.format=a.format||{},a.format.numChannels=c||a.format.numChannels||a.data.channels.length,a.data&&a.data.channels&&(1===a.format.numChannels&&1!==a.data.channels.length&&(a.data.channels=[a.data.channels]),a.format.numChannels!==a.data.channels.length))throw new Error("The specified number of channels does not match the actual channel data. numChannels was: "+a.format.numChannels+" but the sample data contains "+a.data.channels.length+" channels.");return f.bufferDesc.inferFormat(a,b,c)},f.bufferDesc.fromAudioBuffer=function(a){var b,c={container:{},format:{sampleRate:a.sampleRate,numChannels:a.numberOfChannels,numSampleFrames:a.length,duration:a.duration},data:{channels:[]}};for(b=0;b<a.numberOfChannels;b++)c.data.channels.push(a.getChannelData(b));return c},f.bufferDesc.toAudioBuffer=function(a,b){for(var c=a.createBuffer(b.format.numChannels,b.format.numSampleFrames,b.format.sampleRate),d=0;d<b.format.numChannels;d++)c.copyToChannel(b.data.channels[d],d);return c},d.defaults("flock.bufferSource",{gradeNames:["fluid.modelComponent"],sampleRate:"{flock.enviro}.audioSystem.model.sampleRate",model:{state:"start",src:null},components:{bufferPromise:{createOnEvent:"onRefreshPromise",type:"flock.promise",options:{listeners:{onCreate:{"this":"{that}.promise",method:"then",args:["{bufferSource}.events.afterFetch.fire","{bufferSource}.events.onError.fire"]}}}}},invokers:{get:{funcName:"flock.bufferSource.get",args:["{that}","{arguments}.0"]},set:{funcName:"flock.bufferSource.set",args:["{that}","{arguments}.0"]},error:{funcName:"flock.bufferSource.error",args:["{that}","{arguments}.0"]}},listeners:{onCreate:{funcName:"{that}.events.onRefreshPromise.fire"},onRefreshPromise:{changePath:"state",value:"start"},onFetch:{changePath:"state",value:"in-progress"},afterFetch:[{changePath:"state",value:"fetched"},{funcName:"{that}.events.onBufferUpdated.fire",args:["{arguments}.0"]}],onBufferUpdated:"{enviro}.registerBuffer({arguments}.0)",onError:{changePath:"state",value:"error"}},events:{onRefreshPromise:null,onError:null,onFetch:null,afterFetch:null,onBufferUpdated:null}}),f.bufferSource.get=function(a,b){return"in-progress"===a.model.state||b.src===a.model.src&&!b.replace?a.bufferPromise.promise:(b.src&&("fetched"!==a.model.state&&"errored"!==a.model.state||a.model.src===b.src&&!b.replace||a.events.onRefreshPromise.fire(),"start"===a.model.state&&(a.model.src=b.src,a.events.onFetch.fire(b),f.audio.decode({src:b.src,sampleRate:a.options.sampleRate,success:function(c){b.id&&(c.id=b.id),a.set(c)},error:a.error}))),a.bufferPromise.promise)},f.bufferSource.set=function(a,b){var c=a.model.state;return("start"===c||"in-progress"===c)&&a.bufferPromise.promise.resolve(b),a.bufferPromise.promise},f.bufferSource.error=function(a,b){return a.bufferPromise.promise.reject(b),a.bufferPromise.promise},d.defaults("flock.bufferLoader",{gradeNames:["fluid.component"],bufferDefs:[],members:{buffers:[],bufferDefs:"@expand:flock.bufferLoader.expandBufferDefs({that}.options.bufferDefs)"},components:{enviro:"{flock.enviro}"},events:{afterBuffersLoaded:null,onError:null},listeners:{"onCreate.loadBuffers":{funcName:"flock.bufferLoader.loadBuffers",args:["{that}"]},"onError.logError":{funcName:"flock.log.fail"}}}),f.bufferLoader.idFromURL=function(a){var b=a.lastIndexOf("/"),c=b>-1?b+1:0,d=a.lastIndexOf("."),e=d>-1?d:a.length;return a.substring(c,e)},f.bufferLoader.idsFromURLs=function(a){return d.transform(a,f.bufferLoader.idFromURL)},f.bufferLoader.expandFileSequence=function(a){a=a||[];var b,c,d,e=[];for(b=0;b<a.length;b++)c=a[b],d=f.bufferLoader.idFromURL(c),e.push({id:d,url:c});return e},f.bufferLoader.expandBufferDef=function(a){return"string"==typeof a&&(a={url:a}),void 0===a.id&&void 0!==a.url&&(a.id=f.bufferLoader.idFromURL(a.url)),a},f.bufferLoader.expandBufferDefs=function(a){return a?(a=d.makeArray(a),d.transform(a,f.bufferLoader.expandBufferDef)):[]},f.bufferLoader.loadBuffer=function(a,b,c){try{f.parse.bufferForDef(a,b,c.enviro)}catch(d){c.events.onError.fire(d.message)}},f.bufferLoader.loadBuffers=function(a){var b=1,c={setBuffer:function(d){if(a.buffers.push(d),a.buffers.length===a.options.bufferDefs.length)a.events.afterBuffersLoaded.fire(a.buffers);else if(b<a.bufferDefs.length){var e=a.bufferDefs[b];f.bufferLoader.loadBuffer(e,c,a),b++}}};f.bufferLoader.loadBuffer(a.bufferDefs[0],c,a)}}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";var a=d.registerNamespace("jQuery");d.registerNamespace("flock.parse"),f.parse.synthDef=function(a,b,c){return a||(a=[]),f.parse.synthDef.hasOutUGen(a)||(a=f.parse.synthDef.makeOutUGenDef(a,c)),f.parse.ugenForDef(a,b,c)},f.parse.synthDef.hasOutUGen=function(a){return!f.isIterable(a)&&(a.id===f.OUT_UGEN_ID||"flock.ugen.out"===a.ugen||"flock.ugen.valueOut"===a.ugen)},f.parse.synthDef.makeOutUGenDef=function(a,b){return a={id:f.OUT_UGEN_ID,ugen:"flock.ugen.valueOut",inputs:{sources:a}},b.rate===f.rates.AUDIO&&(a.ugen="flock.ugen.out",a.inputs.bus=0,a.inputs.expand=b.audioSettings.chans),a},f.parse.makeUGen=function(b,c,e,g){var h=g.audioSettings.rates,i=g.audioSettings.blockSize;if(b.rate||(b.rate=f.rates.AUDIO),!f.hasValue(f.rates,b.rate)&&(f.fail("An invalid rate was specified for a unit generator. ugenDef was: "+d.prettyPrintJSON(b)),!f.debug.failHard)){var j=b.rate;b.rate=f.rates.AUDIO,f.log.warn("Overriding invalid unit generator rate. Rate is now '"+b.rate+"'; was: "+d.prettyPrintJSON(j))}var k;k=b.options&&void 0!==b.options.sampleRate?b.options.sampleRate:h[b.rate],b.options=a.extend(!0,{},b.options,{sampleRate:k,rate:b.rate,audioSettings:{rates:h,blockSize:i}});var l,m=b.rate===f.rates.AUDIO?i:1;if(f.hasTag(b.options,"flock.ugen.multiChannelOutput")){var n=b.options.numOutputs||1;l=[];for(var o=0;n>o;o++)l.push(new Float32Array(m))}else l=new Float32Array(m);var p=d.copy(b.options);return p.buffers=g.buffers,p.buses=g.buses,p.enviro=e,f.invoke(void 0,b.ugen,[c,l,p])},f.parse.reservedWords=["id","ugen","rate","inputs","options"],f.parse.specialInputs=["value","buffer","list","table","envelope","durations","values"],f.parse.expandInputs=function(a){if(a.inputs)return a;var b,c={};for(b in a)-1===f.parse.reservedWords.indexOf(b)&&(c[b]=a[b],delete a[b]);return a.inputs=c,a},f.parse.ugenDefForConstantValue=function(a){return{ugen:"flock.ugen.value",rate:f.rates.CONSTANT,inputs:{value:a}}},f.parse.expandValueDef=function(a){var b=typeof a;if("number"===b)return f.parse.ugenDefForConstantValue(a);if("object"===b)return a;throw new Error("Invalid value type found in ugen definition. UGenDef was: "+d.prettyPrintJSON(a))},f.parse.rateMap={ar:f.rates.AUDIO,kr:f.rates.CONTROL,sr:f.rates.SCHEDULED,dr:f.rates.DEMAND,cr:f.rates.CONSTANT},f.parse.expandRate=function(a,b){return a.rate=f.parse.rateMap[a.rate]||a.rate,b.overrideRate&&a.rate!==f.rates.CONSTANT&&(a.rate=b.rate),a},f.parse.ugenDef=function(a,b,c){var d=f.isIterable(a)?f.parse.ugensForDefs:f.parse.ugenForDef,e=d(a,b,c);return e},f.parse.ugenDef.mergeOptions=function(b){var c=f.ugenDefaults(b.ugen)||{};return c=d.copy(c),c.options=c.ugenOptions,delete c.ugenOptions,a.extend(!0,{},c,b)},f.parse.ugensForDefs=function(a,b,c){var d,e=[];for(d=0;d<a.length;d++)e[d]=f.parse.ugenForDef(a[d],b,c);return e},f.parse.ugenForDef=function(b,c,e){c=c||f.environment,e=a.extend(!0,{audioSettings:c.audioSystem.model,buses:c.busManager.buses,buffers:c.buffers},e);var g=e,h=g.visitors,i=g.audioSettings.rates;if(b=f.parse.expandValueDef(b),f.isIterable(b))return f.parse.ugensForDefs(b,c,e);b=f.parse.expandInputs(b),f.parse.expandRate(b,e),b=f.parse.ugenDef.mergeOptions(b,e);var j,k=b.inputs,l={};for(j in k){var m=k[j];null!==m&&(l[j]=f.input.shouldExpand(j,b)?f.parse.ugenForDef(m,c,e):m)}if(!b.ugen)throw new Error("Unit generator definition lacks a 'ugen' property; can't initialize the synth graph. Value: "+d.prettyPrintJSON(b));var n=f.parse.makeUGen(b,l,c,e);if(b.id&&(n.id=b.id),n.options.ugenDef=b,h)for(var o=0;o<h.length;o++)h[o](n,b,i);return n},f.parse.expandBufferDef=function(a){return"string"==typeof a?{id:a}:f.isIterable(a)||a.data||a.format?f.bufferDesc(a):a},f.parse.bufferForDef=function(a,b,c){a=f.parse.expandBufferDef(a),a.data&&a.data.channels?(a=f.bufferDesc(a),f.parse.bufferForDef.resolveBuffer(a,b,c)):f.parse.bufferForDef.resolveDef(a,b,c)},f.parse.bufferForDef.createBufferSource=function(a){return f.bufferSource({sampleRate:a.audioSystem.model.sampleRate})},f.parse.bufferForDef.findSource=function(a,b){var c;return b&&a.id?(c=b.bufferSources[a.id],c||(c=f.parse.bufferForDef.createBufferSource(b),b.bufferSources[a.id]=c)):c=f.parse.bufferForDef.createBufferSource(b),c},f.parse.bufferForDef.bindToPromise=function(a,b,c){var d=function(a){b.events.onBufferUpdated.addListener(d),c&&c.setBuffer(a)},e=function(a){throw!a&&b.model.src&&b.model.src.indexOf(".aif")&&(a="if this is an AIFF file, you might need to include flocking-audiofile-compatibility.js in some browsers."),new Error("Error while resolving buffer "+b.model.src+": "+a)};a.then(d,e)},f.parse.bufferForDef.resolveDef=function(a,b,c){var d,e=f.parse.bufferForDef.findSource(a,c);a.src=a.url||a.src,a.selector&&"undefined"!=typeof document&&(a.src=document.querySelector(a.selector).files[0]),d=e.get(a),f.parse.bufferForDef.bindToPromise(d,e,b)},f.parse.bufferForDef.resolveBuffer=function(a,b,c){var d=f.parse.bufferForDef.findSource(a,c),e=d.set(a);f.parse.bufferForDef.bindToPromise(e,d,b)}}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";f.applyDeferred=function(a,b,c){a&&(c="undefined"==typeof c?0:c,setTimeout(function(){a.apply(null,b)},c))},d.registerNamespace("flock.net"),f.net.readBufferFromUrl=function(a){var b=a.src,c=new XMLHttpRequest;c.onreadystatechange=function(){if(4===c.readyState)if(f.net.isXHRSuccessful(c))a.success(c.response,f.file.parseFileExtension(b));else{if(!a.error)throw new Error(c.statusText);a.error(c.statusText)}},c.open(a.method||"GET",b,!0),c.responseType=a.responseType||"arraybuffer",c.send(a.data)},f.net.isXHRSuccessful=function(a){return 200===a.status||0===a.responseURL.indexOf("file://")&&0===a.status&&a.response},d.registerNamespace("flock.file"),f.file.mimeTypes={"audio/wav":"wav","audio/x-wav":"wav","audio/wave":"wav","audio/x-aiff":"aiff","audio/aiff":"aiff","sound/aiff":"aiff"},f.file.typeAliases={aif:"aiff",wave:"wav"},f.file.parseFileExtension=function(a){var b,c,d=a.lastIndexOf(".");return 0>d?void 0:(b=a.substring(d+1),b=b.toLowerCase(),c=f.file.typeAliases[b],c||b)},f.file.parseMIMEType=function(a){return f.file.mimeTypes[a]},f.file.stringToBuffer=function(a){var b,c=a.length,d=new ArrayBuffer(c),e=new Uint8Array(d);for(b=0;c>b;b++)e[b]=a.charCodeAt(b);return e.buffer},f.file.readBufferFromDataUrl=function(a){var b=a.src,c=b.indexOf(","),d=b.substring(0,c),e=b.substring(c+1),g=d.indexOf(";base64"),h=g>-1,i=b.indexOf("data:")+5,j=h?g:c,k=b.substring(i,j);h&&(e=atob(e)),f.applyDeferred(function(){var b=f.file.stringToBuffer(e);a.success(b,f.file.parseMIMEType(k))})},f.file.readBufferFromFile=function(a){var b=new FileReader;return b.onload=function(b){a.success(b.target.result,f.file.parseFileExtension(a.src.name))},b.readAsArrayBuffer(a.src),b},d.registerNamespace("flock.audio"),f.audio.loadBuffer=function(a){var b=a.src||a.url;if(b){b instanceof ArrayBuffer&&f.applyDeferred(a.success,[b,a.type]);var c=f.audio.loadBuffer.readerForSource(b);c(a)}},f.audio.loadBuffer.readerForSource=function(a){return"undefined"!=typeof File&&a instanceof File?f.file.readBufferFromFile:0===a.indexOf("data:")?f.file.readBufferFromDataUrl:f.net.readBufferFromUrl},f.audio.decode=function(a){var b=a.success,c=function(c,e){
var g=f.audio.decoderStrategies,h=g[e]||g["default"];a.decoder&&(h="string"==typeof a.decoder?d.getGlobalValue(a.decoder):a.decoder),h({rawData:c,type:e,success:b,error:a.error,sampleRate:a.sampleRate})};a.success=c,f.audio.loadBuffer(a)},f.audio.decode.webAudio=function(a){var b=f.webAudio.audioSystem.audioContextSingleton,c=function(b){var c=f.bufferDesc.fromAudioBuffer(b);a.success(c)};b.decodeAudioData(a.rawData,c,a.error)},f.audio.decoderStrategies={"default":f.audio.decode.webAudio},f.audio.registerDecoderStrategy=function(a,b){if(a)if("object"!=typeof a)"string"==typeof b&&(b=d.getGlobalValue(b)),f.audio.decoderStrategies[a]=b;else for(var c in a)f.audio.decoderStrategies[c]=a[c]}}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";d.registerNamespace("flock.audio.encode"),f.audio.interleave=function(a){var b,c,d=a.format.numSampleFrames,e=a.data.channels,f=a.format.numChannels,g=d*f,h=new Float32Array(g),i=0;for(b=0;d>b;b++)for(c=0;f>c;c++)h[i]=e[c][b],i++;return h},f.audio.encode=function(a,b,c){return b=b||"wav","wav"!==b.toLowerCase()&&f.fail("Flocking currently only supports encoding WAVE files."),f.audio.encode.wav(a,c)},f.audio.encode.writeFloat32Array=function(a,b,c){for(var d=0;d<c.length;d++)b.setFloat32(a,c[d],!0),a+=4;return b},f.audio.encode.setString=function(a,b,c){for(var d=0;d<c.length;d++)a.setUint8(b+d,c.charCodeAt(d))},f.audio.encode.setBytes=function(a,b,c){for(var d=0;d<c.length;d++)a.setUint8(b+d,c[d])},f.audio.encode.writeAsPCM=function(a,b,c,d){if("setFloat32"===a.setter&&d instanceof Float32Array)return f.audio.encode.writeFloat32Array(b,c,d);for(var e=0;e<d.length;e++){var g=Math.min(1,d[e]);g=Math.max(-1,g),g=0>g?g*a.scaleNeg:g*a.scalePos,c[a.setter](b,g,!0),b+=a.width}return c},f.audio.pcm={int16:{scalePos:32767,scaleNeg:32768,setter:"setInt16",width:2},int32:{scalePos:2147483647,scaleNeg:2147483648,setter:"setInt32",width:4},float32:{scalePos:1,scaleNeg:1,setter:"setFloat32",width:4}},f.audio.encode.wav=function(a,b){b=b||f.audio.pcm.int16;var c="string"==typeof b?f.audio.pcm[b]:b;c||f.fail("Flocking does not support encoding "+b+" format PCM wave files.");var d=f.audio.interleave(a),e=a.format.numChannels,g=a.format.sampleRate,h="setFloat32"!==c.setter,i=8,j=12,k=16,l=1,m=8,n=d.length*c.width,o=m+n,p=8*c.width;if(e>2||!h){var q=8,r=4,s=q+r;k+=s,e>2?(k+=24,l=65534):(k+=2,l=3)}var t=j+k,u=t+o,v=i+u,w=new ArrayBuffer(v),x=new DataView(w);f.audio.encode.setString(x,0,"RIFF"),x.setUint32(4,u,!0),f.audio.encode.setString(x,8,"WAVE"),f.audio.encode.setString(x,12,"fmt "),x.setUint32(16,k,!0),x.setUint16(20,l,!0),x.setUint16(22,e,!0),x.setUint32(24,g,!0),x.setUint32(28,4*g,!0),x.setUint16(32,e*c.width,!0),x.setUint16(34,p,!0);var y=36;return 3===l?(x.setUint16(y,0,!0),y+=2,y=f.audio.encode.wav.writeFactChunk(x,y,a.format.numSampleFrames)):65534===l&&(x.setUint16(y,22,!0),y+=2,y=f.audio.encode.wav.additionalFormat(y,x,p,h),y=f.audio.encode.wav.writeFactChunk(x,y,a.format.numSampleFrames)),f.audio.encode.wav.writeDataChunk(c,y,x,d,n),x.buffer},f.audio.encode.wav.subformats={pcm:new Uint8Array([1,0,0,0,0,0,16,0,128,0,0,170,0,56,155,113]),"float":new Uint8Array([3,0,0,0,0,0,16,0,128,0,0,170,0,56,155,113])},f.audio.encode.wav.additionalFormat=function(a,b,c,d){b.setUint16(a,c,!0),a+=2,b.setUint32(a,2147483648,!0),a+=4;var e=f.audio.encode.wav.subformats[d?"pcm":"float"];return f.audio.encode.setBytes(b,a,e),a+=16},f.audio.encode.wav.writeFactChunk=function(a,b,c){return f.audio.encode.setString(a,b,"fact"),b+=4,a.setUint32(b,4,!0),b+=4,a.setUint32(b,c,!0),b+=4},f.audio.encode.wav.writeDataChunk=function(a,b,c,d,e){f.audio.encode.setString(c,b,"data"),b+=4,c.setUint32(b,e,!0),b+=4,f.audio.encode.writeAsPCM(a,b,c,d)}}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";f.shim={URL:"undefined"!=typeof window?window.URL||window.webkitURL||window.msURL:void 0},f.worker=function(a){var b,c,d=typeof a;if("function"===d)a="("+a.toString()+")();";else if("string"!==d)throw new Error("A flock.worker must be initialized with a String or a Function.");return window.Blob?(c=new Blob([a],{type:"text/javascript"}),b=f.shim.URL.createObjectURL(c)):b="data:text/javascript;base64,"+window.btoa(a),new Worker(b)},d.registerNamespace("flock.scheduler"),d.defaults("flock.scheduler.clock",{gradeNames:["fluid.component"],events:{tick:null}}),d.defaults("flock.scheduler.intervalClock",{gradeNames:["flock.scheduler.clock"],members:{scheduled:{}},invokers:{schedule:{funcName:"flock.scheduler.intervalClock.schedule",args:["{arguments}.0","{that}.scheduled","{that}.events.tick.fire","{that}.events.onClear.fire"]},clear:{funcName:"flock.scheduler.intervalClock.clear",args:["{arguments}.0","{that}.scheduled","{that}.events.onClear.fire"]},clearAll:{funcName:"flock.scheduler.intervalClock.clearAll",args:["{that}.scheduled","{that}.events.onClear.fire"]},end:"{that}.clearAll"}}),f.scheduler.intervalClock.schedule=function(a,b,c){var d=setInterval(function(){c(a)},a);b[a]=d},f.scheduler.intervalClock.clear=function(a,b){var c=b[a];clearInterval(c),delete b[a]},f.scheduler.intervalClock.clearAll=function(a,b){for(var c in a)f.scheduler.intervalClock.clear(c,a,b)},d.defaults("flock.scheduler.scheduleClock",{gradeNames:["flock.scheduler.clock"],members:{scheduled:[]},invokers:{schedule:{funcName:"flock.scheduler.scheduleClock.schedule",args:["{arguments}.0","{that}.scheduled","{that}.events"]},clear:{funcName:"flock.scheduler.scheduleClock.clear",args:["{arguments}.0","{arguments}.1","{that}.scheduled","{that}.events.onClear.fire"]},clearAll:{funcName:"flock.scheduler.scheduleClock.clearAll",args:["{that}.scheduled","{that}.events.onClear.fire"]},end:"{that}.clearAll"}}),f.scheduler.scheduleClock.schedule=function(a,b,c){var d;d=setTimeout(function(){clearTimeout(d),c.tick.fire(a)},a),b.push(d)},f.scheduler.scheduleClock.clear=function(a,b,c){b=void 0===b?c.indexOf(a):b,b>-1&&(c.splice(b,1),clearTimeout(a))},f.scheduler.scheduleClock.clearAll=function(a){for(var b=0;b<a.length;b++){var c=a[b];clearTimeout(c)}a.length=0},d.defaults("flock.scheduler.webWorkerClock",{gradeNames:["fluid.component"],members:{worker:{expander:{funcName:"flock.worker",args:"@expand:fluid.getGlobalValue(flock.scheduler.webWorkerClock.workerImpl)"}}},invokers:{postToWorker:{funcName:"flock.scheduler.webWorkerClock.postToWorker",args:["{arguments}.0","{arguments}.1","{that}.options.messages","{that}.worker"]},schedule:"{that}.postToWorker(schedule, {arguments}.0)",clear:"{that}.postToWorker(clear, {arguments}.0)",clearAll:"{that}.postToWorker(clearAll)",end:"{that}.postToWorker(end)"},events:{tick:null},listeners:{onCreate:{funcName:"flock.scheduler.webWorkerClock.init",args:["{that}"]}},startMsg:{msg:"start",value:"{that}.options.clockType"},messages:{schedule:{msg:"schedule"},clear:{msg:"clear"},clearAll:{msg:"clearAll"},end:{msg:"end"}}}),f.scheduler.webWorkerClock.init=function(a){a.worker.addEventListener("message",function(b){a.events.tick.fire(b.data.value)},!1),a.worker.postMessage(a.options.startMsg)},f.scheduler.webWorkerClock.postToWorker=function(a,b,c,d){var e=c[a];void 0!==b&&(e.value=b),d.postMessage(e)},f.scheduler.webWorkerClock.workerImpl=function(){var a=a||{};a.worker=a.worker||{},a.worker.clock=function(){var a={};return a.tick=function(a){self.postMessage({msg:"tick",value:a})},a},a.worker.intervalClock=function(){var b=a.worker.clock();return b.scheduled={},b.schedule=function(a){var c=setInterval(function(){b.tick(a)},a);b.scheduled[a]=c},b.clear=function(a){var c=b.scheduled[a];clearInterval(c),delete b.scheduled[a]},b.clearAll=function(){for(var a in b.scheduled)b.clear(a)},b},a.worker.scheduleClock=function(){var b=a.worker.clock();return b.scheduled=[],b.schedule=function(a){var c;c=setTimeout(function(){b.clear(c),b.tick(a)},a),b.scheduled.push(c)},b.clear=function(a,c){c=void 0===c?b.scheduled.indexOf(a):c,c>-1&&b.scheduled.splice(c,1),clearTimeout(a)},b.clearAll=function(){for(var a=0;a<b.scheduled.length;a++){var c=b.scheduled[a];clearTimeout(c)}b.scheduled.length=0},b},self.addEventListener("message",function(b){"start"===b.data.msg?a.clock=a.worker[b.data.value]():"end"===b.data.msg?a.clock&&(a.clock.clearAll(),self.close()):a.clock&&a.clock[b.data.msg](b.data.value)},!1)},d.defaults("flock.scheduler.webWorkerIntervalClock",{gradeNames:["flock.scheduler.webWorkerClock"],clockType:"intervalClock"}),d.defaults("flock.scheduler.webWorkerScheduleClock",{gradeNames:["flock.scheduler.webWorkerClock"],clockType:"scheduleClock"}),d.defaults("flock.scheduler",{gradeNames:["fluid.component"],events:{onScheduled:null,onFinished:null,onClearAll:null},listeners:{onClearAll:["{that}.clock.clearAll()"]}}),f.scheduler.addListener=function(a,b,c){return b.push(a),c(a),a},f.scheduler.removeListener=function(a,b,c){if(a){var d=b.indexOf(a);d>-1?(b.splice(d,1),c(a)):a.wrappedListener&&f.scheduler.removeListener(a.wrappedListener,b,c)}},d.defaults("flock.scheduler.repeat",{gradeNames:["flock.scheduler"],members:{listeners:{}},components:{clock:{type:"flock.scheduler.webWorkerIntervalClock"}},invokers:{schedule:{funcName:"flock.scheduler.repeat.schedule",args:["{arguments}.0","{arguments}.1","{timeConverter}","{synthContext}","{that}.listeners","{that}.events.onScheduled.fire"]},clear:"{that}.events.onFinished.fire",clearAll:{funcName:"flock.scheduler.repeat.clearAll",args:["{that}.listeners","{that}.events.onFinished.fire","{that}.events.onClearAll.fire"]},clearInterval:{funcName:"flock.scheduler.repeat.clearInterval",args:["{arguments}.0","{that}.listeners","{that}.events.onFinished.fire"]},addIntervalListener:{funcName:"flock.scheduler.repeat.addIntervalListener",args:["{arguments}.0","{arguments}.1","{that}.listeners","{that}.clock.events.tick.addListener"]},removeIntervalListener:{funcName:"flock.scheduler.repeat.removeIntervalListener",args:["{arguments}.0","{arguments}.1","{that}.listeners","{that}.clock.events.tick.removeListener"]}},listeners:{onScheduled:["{that}.addIntervalListener({arguments}.0, {arguments}.1)","{that}.clock.schedule({arguments}.0)"],onFinished:["{that}.removeIntervalListener({arguments}.0, {arguments}.1)"]}}),f.scheduler.repeat.intervalListeners=function(a,b){return b[a]},f.scheduler.repeat.addIntervalListener=function(a,b,c,d){var e=f.scheduler.repeat.intervalListeners(a,c);f.scheduler.addListener(b,e,d)},f.scheduler.repeat.removeIntervalListener=function(a,b,c,d){var e=f.scheduler.repeat.intervalListeners(a,c);f.scheduler.removeListener(b,e,d)},f.scheduler.repeat.schedule=function(a,b,c,d,e,g){a=c.value(a),b=f.scheduler.async.prepareListener(b,d);var h=f.scheduler.repeat.wrapValueListener(a,b);return f.scheduler.repeat.addInterval(a,e),g(a,h),h},f.scheduler.repeat.wrapValueListener=function(a,b){var c=function(c){c===a&&b(c)};return c.wrappedListener=b,c},f.scheduler.repeat.addInterval=function(a,b){var c=b[a];c||(c=b[a]=[])},f.scheduler.repeat.clearAll=function(a,b,c){for(var d in a)f.scheduler.repeat.clearInterval(d,a,b);c()},f.scheduler.repeat.clearInterval=function(a,b,c){var d=b[a];if(d)for(var e=0;e<d.length;e++){var f=d[e];c(a,f)}},d.defaults("flock.scheduler.once",{gradeNames:["flock.scheduler"],members:{listeners:[]},components:{clock:{type:"flock.scheduler.webWorkerScheduleClock"}},invokers:{schedule:{funcName:"flock.scheduler.once.schedule",args:["{arguments}.0","{arguments}.1","{timeConverter}","{synthContext}","{that}.clear","{that}.events.onScheduled.fire"]},clear:"{that}.events.onFinished.fire",clearAll:{funcName:"flock.scheduler.once.clearAll",args:["{that}.listeners","{that}.events.onFinished.fire","{that}.events.onClearAll.fire"]}},listeners:{onScheduled:[{funcName:"flock.scheduler.addListener",args:["{arguments}.1","{that}.listeners","{that}.clock.events.tick.addListener"]},{func:"{that}.clock.schedule",args:["{arguments}.0"]}],onFinished:{funcName:"flock.scheduler.removeListener",args:["{arguments}.0","{that}.listeners","{that}.clock.events.tick.removeListener"]}}}),f.scheduler.once.wrapValueListener=function(a,b,c){var d=function(e){e===a&&(b(e),c(d))};return d.wrappedListener=b,d},f.scheduler.once.schedule=function(a,b,c,d,e,g){a=c.value(a),b=f.scheduler.async.prepareListener(b,d);var h=f.scheduler.once.wrapValueListener(a,b,e);return g(a,h),h},f.scheduler.once.clearAll=function(a,b,c){for(var d=0;d<a.length;d++)b(a[d]);c()},d.defaults("flock.scheduler.async",{gradeNames:["fluid.component"],subSchedulerOptions:{components:{timeConverter:"{async}.timeConverter"},listeners:{"{async}.events.onClear":"{that}.clear()","{async}.events.onClearAll":"{that}.clearAll()","{async}.events.onEnd":"{that}.clock.end()"}},distributeOptions:{source:"{that}.options.subSchedulerOptions",removeSource:!0,target:"{that flock.scheduler}.options"},components:{timeConverter:{type:"flock.convert.seconds"},onceScheduler:{type:"flock.scheduler.once"},repeatScheduler:{type:"flock.scheduler.repeat"},synthContext:void 0},invokers:{repeat:{func:"{repeatScheduler}.schedule",args:["{arguments}.0","{arguments}.1"]},once:{func:"{onceScheduler}.schedule",args:["{arguments}.0","{arguments}.1"]},sequence:{funcName:"flock.scheduler.async.sequence",args:["{arguments}.0","{arguments}.1","{that}.once"]},schedule:{funcName:"flock.scheduler.async.schedule",args:["{arguments}.0","{that}"]},clear:"{that}.events.onClear.fire",clearAll:"{that}.events.onClearAll.fire",end:"{that}.events.onEnd.fire"},events:{onClear:null,onClearAll:null,onEnd:null},listeners:{onCreate:"{that}.schedule({that}.options.score)",onEnd:"{that}.clearAll",onDestroy:"{that}.end()"}}),f.scheduler.async.sequence=function(a,b,c){for(var d=[],e=0;e<a.length;e++){var f=c(a[e],b);d.push(f)}return d},f.scheduler.async.schedule=function(a,b){if(a){a=f.isIterable(a)?a:[a];for(var c=0;c<a.length;c++){var d=a[c];f.invoke(b,d.interval,[d.time,d.change])}}},f.scheduler.async.prepareListener=function(a,b){return"function"==typeof a?a:f.scheduler.async.evaluateChangeSpec(a,b)},f.scheduler.async.getTargetSynth=function(a,b){var c=a.synth;return c?"string"!=typeof c?c:d.get(b,c):b},f.scheduler.async.makeSynthUpdater=function(a,b,c,d){return function(){for(var e in a){var g=a[e];c[e]=f.evaluate.synthValue(g)}var h=f.scheduler.async.getTargetSynth(b,d);h?h.set(c):f.fail("A target synth named "+b.synth+" could not be found in the specified synthContext. Synth context was: "+d)}},f.scheduler.async.evaluateChangeSpec=function(a,b){var c={},d={};for(var e in a.values){var g=a.values[e];g.synthDef?c[e]=f.synth.value(g):d[e]=g}return f.scheduler.async.makeSynthUpdater(c,a,d,b)},d.defaults("flock.scheduler.async.tempo",{gradeNames:["flock.scheduler.async"],bpm:60,components:{timeConverter:{type:"flock.convert.beats",options:{bpm:"{tempo}.options.bpm"}}}}),d.registerNamespace("flock.convert"),d.defaults("flock.convert.ms",{gradeNames:["fluid.component"],invokers:{value:"fluid.identity({arguments}.0)"}}),d.defaults("flock.convert.seconds",{gradeNames:["fluid.component"],invokers:{value:"flock.convert.seconds.toMillis({arguments}.0)"}}),f.convert.seconds.toMillis=function(a){return 1e3*a},d.defaults("flock.convert.beats",{gradeNames:["fluid.component"],bpm:60,invokers:{value:"flock.convert.beats.toMillis({arguments}.0, {that}.options.bpm)"}}),f.convert.beats.toMillis=function(a,b){return 0>=b?0:a/b*6e4}}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";d.registerNamespace("flock.webAudio"),f.webAudio.createNode=function(a,b){var c=b.args?d.makeArray(b.args):void 0,e="create"+b.node,g=e.indexOf("Node");g>-1&&(e=e.substring(0,g));var h=a[e].apply(a,c);return f.webAudio.initNodeParams(a,h,b),f.webAudio.initNodeProperties(h,b),f.webAudio.initNodeInputs(h,b),h},f.webAudio.setAudioParamValue=function(a,b,c,d){d=d||0;var e=a.currentTime+d;b.setValueAtTime(c,e)},f.webAudio.initNodeParams=function(a,b,c){var d=c.params;if(b&&d){for(var e in d){var g=b[e],h=d[e];f.webAudio.setAudioParamValue(a,g,h)}return b}},f.webAudio.safariPropertyProhibitions=["channelCount","channelCountMode"],f.webAudio.shouldSetProperty=function(a){return f.platform.browser.safari?f.webAudio.safariPropertyProhibitions.indexOf(a)<0:!0},f.webAudio.initNodeProperties=function(a,b){var c=b.props;if(c){for(var d in c){var e=c[d];f.webAudio.shouldSetProperty(d)&&(a[d]=e)}return a}},f.webAudio.connectInput=function(a,b,c,d){c.connect(a,d,b)},f.webAudio.initNodeInputs=function(a,b){var c=b.inputs;for(var e in c){var g=c[e],h=parseInt(e,10);g=d.makeArray(g);for(var i=0;i<g.length;i++){var j=g[i];f.webAudio.connectInput(a,h,j)}}},d.defaults("flock.webAudio.node",{gradeNames:["fluid.modelComponent"],members:{node:"@expand:flock.webAudio.createNode({audioSystem}.context, {that}.options.nodeSpec)"},nodeSpec:{args:[],params:{},properties:{}}}),d.defaults("flock.webAudio.gain",{gradeNames:["flock.webAudio.node"],members:{node:"@expand:flock.webAudio.createNode({audioSystem}.context, {that}.options.nodeSpec)"},nodeSpec:{node:"Gain"}}),d.defaults("flock.webAudio.scriptProcessor",{gradeNames:["flock.webAudio.node"],nodeSpec:{node:"ScriptProcessor",args:["{audioSystem}.model.bufferSize","{audioSystem}.model.numInputBuses","{audioSystem}.model.chans"],params:{},properties:{channelCountMode:"explicit"}}}),d.defaults("flock.webAudio.channelMerger",{gradeNames:["flock.webAudio.node"],nodeSpec:{node:"ChannelMerger",args:["{audioSystem}.model.numInputBuses"],properties:{channelCountMode:"discrete"}}}),d.defaults("flock.webAudio.outputFader",{gradeNames:["fluid.component"],fadeDuration:.5,gainSpec:{node:"Gain",params:{gain:0},properties:{channelCount:"{flock.enviro}.audioSystem.model.chans",channelCountMode:"explicit"}},members:{gainNode:"@expand:flock.webAudio.outputFader.createGainNode({flock.enviro}.audioSystem.nativeNodeManager, {that}.options.gainSpec)",context:"{flock.enviro}.audioSystem.context"},invokers:{fadeIn:{funcName:"flock.webAudio.outputFader.fadeIn",args:["{that}.context","{that}.gainNode","{arguments}.0","{that}.options.fadeDuration"]},fadeTo:{funcName:"flock.webAudio.outputFader.fadeTo",args:["{that}.context","{that}.gainNode","{arguments}.0","{that}.options.fadeDuration"]}}}),f.webAudio.outputFader.createGainNode=function(a,b){var c=a.createOutputNode(b);return c},f.webAudio.outputFader.fade=function(a,b,c,d,e){e=e||0;var g=a.currentTime,h=g+e;f.webAudio.setAudioParamValue(a,b.gain,c),b.gain.linearRampToValueAtTime(d,h)},f.webAudio.outputFader.fadeTo=function(a,b,c,d){f.webAudio.outputFader.fade(a,b,b.gain.value,c,d)},f.webAudio.outputFader.fadeIn=function(a,b,c,d){f.webAudio.outputFader.fade(a,b,0,c,d)}}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";d.defaults("flock.webAudio.audioSystem",{gradeNames:["flock.audioSystem"],channelRange:{min:"@expand:flock.webAudio.audioSystem.calcMinChannels()",max:"@expand:flock.webAudio.audioSystem.calcMaxChannels({that}.context.destination)"},members:{context:"@expand:flock.webAudio.audioSystem.createContext()"},model:{rates:{audio:"{that}.context.sampleRate"}},components:{outputManager:{type:"flock.webAudio.outputManager"},nativeNodeManager:{type:"flock.webAudio.nativeNodeManager"},inputDeviceManager:{type:"flock.webAudio.inputDeviceManager"},bufferWriter:{type:"flock.webAudio.bufferWriter"}},listeners:{onCreate:["flock.webAudio.audioSystem.configureDestination({that}.context, {that}.model.chans)"]}}),f.webAudio.audioSystem.createContext=function(){var a=f.webAudio.audioSystem;return a.audioContextSingleton||(a.audioContextSingleton=new f.shim.AudioContext),a.audioContextSingleton},f.webAudio.audioSystem.calcMaxChannels=function(a){return f.platform.browser.safari?a.channelCount:a.maxChannelCount},f.webAudio.audioSystem.calcMinChannels=function(){return f.platform.browser.safari?2:1},f.webAudio.audioSystem.configureDestination=function(a,b){f.platform.browser.safari||(a.destination.channelCount=b,a.destination.channelCountMode="explicit",a.destination.channelInterpretation="discrete")},d.defaults("flock.webAudio.enviroContextDistributor",{gradeNames:["fluid.component"],distributeOptions:[{target:"{/ flock.enviro > audioSystem}.options",record:{gradeNames:"flock.webAudio.audioSystem"}}]}),d.constructSingle([],{singleRootType:"flock.enviroContextDistributor",type:"flock.webAudio.enviroContextDistributor"})}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";d.defaults("flock.webAudio.bufferWriter",{gradeNames:"fluid.component",invokers:{save:"flock.webAudio.bufferWriter.saveBuffer({arguments}.0)"}}),f.webAudio.bufferWriter.saveBuffer=function(a){try{var b=f.audio.encode.wav(a.buffer,a.format),c=new Blob([b],{type:"audio/wav"});return f.webAudio.bufferWriter.download(a.path,c),a.success&&a.success(b),b}catch(d){a.error?a.error(d):f.fail("There was an error while trying to download the buffer named "+a.buffer.id+". Error: "+d)}},f.webAudio.bufferWriter.download=function(a,b){var c=f.shim.URL.createObjectURL(b),d=window.document.createElement("a"),e=document.createEvent("Event");d.href=c,d.download=a,e.initEvent("click",!0,!0),d.dispatchEvent(e)}}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";d.registerNamespace("flock.webAudio.chrome"),f.webAudio.chrome.getSources=function(a){return MediaStreamTrack.getSources(function(b){var c=d.transform(b,function(a){return a.deviceId=a.id,a});a(c)})},f.webAudio.mediaStreamFailure=function(){f.fail("Media Capture and Streams are not supported on this browser.")};var a={AudioContext:window.AudioContext||window.webkitAudioContext,getUserMediaImpl:navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia||f.webAudio.mediaStreamFailure,getUserMedia:function(){f.shim.getUserMediaImpl.apply(navigator,arguments)},getMediaDevicesImpl:navigator.getMediaDevices?navigator.getMediaDevices:"undefined"!=typeof window.MediaStreamTrack?f.webAudio.chrome.getSources:f.webAudio.mediaStreamFailure,getMediaDevice:function(){f.shim.getMediaDevicesImpl.apply(navigator,arguments)}};b.extend(f.shim,a),d.defaults("flock.webAudio.inputDeviceManager",{gradeNames:["fluid.component"],invokers:{openAudioDevice:{funcName:"flock.webAudio.inputDeviceManager.openAudioDevice",args:["{arguments}.0","{that}.openAudioDeviceWithId","{that}.openFirstAudioDeviceWithLabel","{that}.openAudioDeviceWithConstraints"]},openAudioDeviceWithConstraints:{funcName:"flock.webAudio.inputDeviceManager.openAudioDeviceWithConstraints",args:["{audioSystem}.context","{enviro}","{nativeNodeManager}.createMediaStreamInput","{arguments}.0"]},openAudioDeviceWithId:{funcName:"flock.webAudio.inputDeviceManager.openAudioDeviceWithId",args:["{arguments}.0","{that}.openAudioDeviceWithConstraints"]},openFirstAudioDeviceWithLabel:{funcName:"flock.webAudio.inputDeviceManager.openFirstAudioDeviceWithLabel",args:["{arguments}.0","{that}.openAudioDeviceWithId"]}}}),f.webAudio.inputDeviceManager.openAudioDevice=function(a,b,c,d){if(a){if(a.id)return b(a.id);if(a.label)return c(a.label)}return d()},f.webAudio.inputDeviceManager.openAudioDeviceWithId=function(a,b){var c={audio:{optional:[{sourceId:a}]}};b(c)},f.webAudio.inputDeviceManager.openFirstAudioDeviceWithLabel=function(a,b){a&&f.shim.getMediaDevices(function(c){var e=c.filter(function(b){return b.label.toLowerCase()===a.toLowerCase()?!0:void 0});e.length>0?b(e[0].deviceId):d.log(d.logLevel.IMPORTANT,"An audio device named '"+a+"' could not be found.")})},f.webAudio.inputDeviceManager.openAudioDeviceWithConstraints=function(a,b,c,e){function g(a){d.log(d.logLevel.IMPORTANT,"An error occurred while trying to access the user's microphone. "+a)}function h(a){c(a,i)}e=e||{audio:!0};var i=b.busManager.acquireNextBus("input");return f.shim.getUserMedia(e,h,g),i}}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";d.registerNamespace("flock.midi"),f.midi.requestAccess=function(a,b,c){if(!navigator.requestMIDIAccess){var e="The Web MIDI API is not available. You may need to enable it in your browser's settings.";return d.log(d.logLevel.WARN,e),void c(e)}var f=navigator.requestMIDIAccess({sysex:a});f.then(b,c)},f.midi.getPorts=function(a){var b={},c="function"==typeof a.inputs?f.midi.collectPortsLegacy:f.midi.collectPorts;return c("inputs",a,b),c("outputs",a,b),b},f.midi.requestPorts=function(a,b){function c(b){var c=f.midi.getPorts(b);a(c)}f.midi.requestAccess(!1,c,b)},f.midi.createPortViews=function(a){return d.transform(a,function(a){return{id:a.id,name:a.name,manufacturer:a.manufacturer,state:a.state,connection:a.connection}})},f.midi.prettyPrintPorts=function(a){return d.prettyPrintJSON({inputs:f.midi.createPortViews(a.inputs),outputs:f.midi.createPortViews(a.outputs)})},f.midi.logPorts=function(){function a(a){var b=f.midi.prettyPrintPorts(a);console.log(b)}function b(a){console.log(a)}f.midi.requestPorts(a,b)},f.midi.collectPorts=function(a,b,c){for(var d=c[a]=c[a]||[],e=b[a].values(),f=e.next();!f.done;)d.push(f.value),f=e.next();return c},f.midi.collectPortsLegacy=function(a,b,c){return b[a]&&(c[a]=b[a]()),c},f.midi.read=function(a){var b,c=a[0],d=c>>4,e=15&c;switch(d){case 8:b=f.midi.read.noteOff;break;case 9:b=a[2]>0?f.midi.read.noteOn:f.midi.read.noteOff;break;case 10:b=f.midi.read.polyAftertouch;break;case 11:b=f.midi.read.controlChange;break;case 12:b=f.midi.read.programChange;break;case 13:b=f.midi.read.channelAftertouch;break;case 14:b=f.midi.read.pitchbend;break;case 15:b=f.midi.read.sysex;break;default:throw new Error("Recieved an unrecognized MIDI message: "+a)}return b(e,a)},f.midi.read.note=function(a,b,c){return{type:a,chan:b,note:c[1],velocity:c[2]}},f.midi.read.noteOn=function(a,b){return f.midi.read.note("noteOn",a,b)},f.midi.read.noteOff=function(a,b){return f.midi.read.note("noteOff",a,b)},f.midi.read.polyAftertouch=function(a,b){return{type:"aftertouch",chan:a,note:b[1],pressure:b[2]}},f.midi.read.controlChange=function(a,b){return{type:"control",chan:a,number:b[1],value:b[2]}},f.midi.read.programChange=function(a,b){return{type:"program",chan:a,program:b[1]}},f.midi.read.channelAftertouch=function(a,b){return{type:"aftertouch",chan:a,pressure:b[1]}},f.midi.read.pitchbend=function(a,b){return{type:"pitchbend",chan:a,value:b[1]<<7|b[2]}},f.midi.read.sysex=function(a,b){return{type:"system",chan:a,data:b.subarray(1)}},d.defaults("flock.midi.system",{gradeNames:["fluid.component"],sysex:!1,members:{access:void 0,ports:void 0},invokers:{requestAccess:{funcName:"flock.midi.requestAccess",args:["{that}.options.sysex","{that}.events.onAccessGranted.fire","{that}.events.onAccessError.fire"]},refreshPorts:{funcName:"flock.midi.system.refreshPorts",args:["{that}","{that}.access","{that}.events.onPortsAvailable.fire"]}},events:{onAccessGranted:null,onAccessError:null,onReady:null,onPortsAvailable:null},listeners:{onCreate:{func:"{that}.requestAccess"},onAccessGranted:["flock.midi.system.setAccess({that}, {arguments}.0)","{that}.refreshPorts()","{that}.events.onReady.fire({that}.ports)"],onAccessError:{funcName:"fluid.log",args:[d.logLevel.WARN,"MIDI Access Error: ","{arguments}.0"]}}}),f.midi.system.setAccess=function(a,b){a.access=b},f.midi.system.refreshPorts=function(a,b,c){a.ports=f.midi.getPorts(b),c(a.ports)},d.defaults("flock.midi.receiver",{gradeNames:["fluid.component"],events:{raw:null,message:null,note:null,noteOn:null,noteOff:null,control:null,program:null,aftertouch:null,pitchbend:null}}),d.defaults("flock.midi.connection",{gradeNames:["flock.midi.receiver"],openImmediately:!1,sysex:!1,distributeOptions:{source:"{that}.options.sysex",target:"{that > system}.options.sysex"},ports:0,invokers:{send:{func:"{that}.events.onSendMessage.fire"},open:{funcName:"flock.midi.connection.bind",args:["{system}.ports","{that}.options.ports","{that}.events.onReady.fire","{that}.events.raw.fire","{that}.events.onSendMessage"]},close:{funcName:"flock.midi.connection.close",args:["{system}.ports","{that}.events.raw.fire"]}},components:{system:{type:"flock.midi.system",options:{events:{onReady:"{connection}.events.onPortsAvailable"}}}},events:{onPortsAvailable:null,onReady:null,onError:null,onSendMessage:null},listeners:{onPortsAvailable:{funcName:"flock.midi.connection.autoOpen",args:["{connection}.options.openImmediately","{connection}.open"]},onError:{funcName:"fluid.log",args:[d.logLevel.WARN,"{arguments}.0"]},raw:{funcName:"flock.midi.connection.fireEvent",args:["{arguments}.0","{that}.events"]},onDestroy:["{that}.close()"]}}),f.midi.connection.autoOpen=function(a,b){a&&b()},f.midi.findPorts=function(a,b){b=d.makeArray(b);var c=[];return d.each(b,function(b){var d=f.midi.findPorts.portFinder(b),e=d(a);c=c.concat(e)}),c},f.midi.findPorts.portFinder=function(a){if("number"==typeof a)return f.midi.findPorts.byIndex(a);"string"==typeof a&&(a={name:a});var b=a.id?f.midi.findPorts.idMatcher(a.id):a.manufacturer&&a.name?f.midi.findPorts.bothMatcher(a.manufacturer,a.name):a.manufacturer?f.midi.findPorts.manufacturerMatcher(a.manufacturer):f.midi.findPorts.nameMatcher(a.name);return function(a){return a.filter(b)}},f.midi.findPorts.byIndex=function(a){return function(b){var c=b[a];return c?[c]:[]}},f.midi.findPorts.lowerCaseContainsMatcher=function(a){return function(b){var c;for(var d in a){var e=b[d],f=a[d];if(c="*"===f?!0:e&&e.toLowerCase().indexOf(f.toLowerCase())>-1,!c)break}return c}},f.midi.findPorts.idMatcher=function(a){return function(b){return b.id===a}},f.midi.findPorts.bothMatcher=function(a,b){return f.midi.findPorts.lowerCaseContainsMatcher({manufacturer:a,name:b})},f.midi.findPorts.manufacturerMatcher=function(a){return f.midi.findPorts.lowerCaseContainsMatcher({manufacturer:a})},f.midi.findPorts.nameMatcher=function(a){return f.midi.findPorts.lowerCaseContainsMatcher({name:a})},f.midi.findPorts.eachPortOfType=function(a,b,c){var e=d.makeArray(a);d.each(e,function(a){a.type===b&&c(a)})},f.midi.connection.openPort=function(a,b){if(a.open){var c=a.open();b.push(c)}return b},f.midi.connection.listen=function(a,b,c){return f.midi.findPorts.eachPortOfType(a,"input",function(a){f.midi.connection.openPort(a,c),a.addEventListener("midimessage",b,!1)}),c},f.midi.connection.stopListening=function(a,b){f.midi.findPorts.eachPortOfType(a,"input",function(a){a.close(),a.removeEventListener("midimessage",b,!1)})},f.midi.connection.bindSender=function(a,b,c){var e=d.makeArray(a);return d.each(e,function(a){f.midi.connection.openPort(a,c),b.addListener(a.send.bind(a))}),c},f.midi.connection.fireReady=function(a,b){!a||a.length<1||Promise.all(a).then(b)},f.midi.connection.bind=function(a,b,c,d,e){b=f.midi.connection.expandPortSpec(b);var g=f.midi.findPorts(a.inputs,b.input),h=f.midi.findPorts(a.outputs,b.output),i=[];g&&g.length>0?f.midi.connection.listen(g,d,i):void 0!==b.input&&f.midi.connection.logNoMatchedPorts("input",b),h&&h.length>0?f.midi.connection.bindSender(h,e,i):void 0!==b.output&&f.midi.connection.logNoMatchedPorts("output",b),f.midi.connection.fireReady(i,c)},f.midi.connection.close=function(a,b){f.midi.connection.stopListening(a.inputs,b)},f.midi.connection.logNoMatchedPorts=function(a,b){d.log(d.logLevel.WARN,"No matching "+a+" ports were found for port specification: ",b[a])},f.midi.connection.expandPortSpec=function(a){if(void 0!==a.input||void 0!==a.output)return a;var b={input:{},output:{}};return"number"==typeof a?b.input=b.output=a:(f.midi.connection.expandPortSpecProperty("manufacturer",a,b),f.midi.connection.expandPortSpecProperty("name",a,b)),b},f.midi.connection.expandPortSpecProperty=function(a,b,c){return c.input[a]=c.output[a]=b[a],c},f.midi.connection.fireEvent=function(a,b){var c=f.midi.read(a.data),d=c.type?b[c.type]:void 0;b.message.fire(c),("noteOn"===c.type||"noteOff"===c.type)&&b.note.fire(c),d&&d.fire(c)},d.defaults("flock.midi.controller",{gradeNames:["fluid.component"],members:{controlMap:"@expand:flock.midi.controller.optimizeControlMap({that}.options.controlMap)",noteMap:"{that}.options.noteMap"},controlMap:{},noteMap:{},components:{synthContext:{type:"flock.band"},connection:{type:"flock.midi.connection",options:{
ports:{input:"*"},openImmediately:!0,listeners:{control:{func:"{controller}.mapControl"},note:{func:"{controller}.mapNote"}}}}},invokers:{mapControl:{funcName:"flock.midi.controller.mapControl",args:["{arguments}.0","{that}.synthContext","{that}.controlMap"]},mapNote:{funcName:"flock.midi.controller.mapNote",args:["{arguments}.0","{that}.synthContext","{that}.noteMap"]}}}),f.midi.controller.optimizeControlMap=function(a){var b=new Array(127);return d.each(a,function(a,c){var d=Number(c);b[d]=a}),b},f.midi.controller.expandControlMapSpec=function(a,b){return b.transform.id=a,b.valuePath=b.valuePath||"value",b.transform.ugen||(b.transform.ugen="flock.ugen.value"),b},f.midi.controller.makeValueSynth=function(a,b,c){c=f.midi.controller.expandControlMapSpec(b,c);var d=c.transform,e=c.valuePath;f.set(d,e,a);var g=f.synth.value({synthDef:d});return c.valuePath=b+"."+e,g},f.midi.controller.transformValue=function(a,b){var c=b.transform,d=typeof c;return"function"===d?c(a):(b.transformSynth?b.transformSynth.set(b.valuePath,a):b.transformSynth=f.midi.controller.makeValueSynth(a,"flock-midi-controller-in",b),b.transformSynth.value())},f.midi.controller.setMappedValue=function(a,b,c){if(b){a=b.transform?f.midi.controller.transformValue(a,b):a;var d=c[b.synth]||c;d.set(b.input,a)}},f.midi.controller.mapControl=function(a,b,c){var d=c[a.number],e=a.value;f.midi.controller.setMappedValue(e,d,b)},f.midi.controller.mapNote=function(a,b,c){var d=c.note,e=a.note,g=c.velocity,h=a.velocity;d&&f.midi.controller.setMappedValue(e,d,b),g&&f.midi.controller.setMappedValue(h,g,b)}}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";d.defaults("flock.webAudio.nativeNodeManager",{gradeNames:["fluid.component"],members:{outputNode:void 0,inputNodes:[]},components:{scriptProcessor:{createOnEvent:"onCreateScriptProcessor",type:"flock.webAudio.scriptProcessor",options:{nodeSpec:{inputs:{0:"{inputMerger}"}}}},merger:{type:"flock.webAudio.channelMerger"}},invokers:{connect:"{that}.events.onConnect.fire",disconnect:"{that}.events.onDisconnect.fire",createNode:{funcName:"flock.webAudio.createNode",args:["{audioSystem}.context","{arguments}.0"]},createInputNode:{funcName:"flock.webAudio.nativeNodeManager.createInputNode",args:["{that}","{arguments}.0","{arguments}.1"]},createMediaStreamInput:{funcName:"flock.webAudio.nativeNodeManager.createInputNode",args:["{that}",{node:"MediaStreamSource",args:["{arguments}.0"]},"{arguments}.1"]},createMediaElementInput:{funcName:"flock.webAudio.nativeNodeManager.createInputNode",args:["{that}",{node:"MediaElementSource",args:["{arguments}.0"]},"{arguments}.1"]},createOutputNode:{funcName:"flock.webAudio.nativeNodeManager.createOutputNode",args:["{that}","{arguments}.0"]},insertInput:{funcName:"flock.webAudio.nativeNodeManager.insertInput",args:["{that}","{audioSystem}.model","{enviro}","{arguments}.0","{arguments}.1"]},removeInput:{funcName:"flock.webAudio.nativeNodeManager.removeInput",args:["{arguments}.0","{that}.inputNodes"]},removeAllInputs:{funcName:"flock.webAudio.nativeNodeManager.removeAllInputs",args:"{that}.inputNodes"},insertOutput:{funcName:"flock.webAudio.nativeNodeManager.insertOutput",args:["{that}","{arguments}.0"]},removeOutput:{funcName:"flock.webAudio.nativeNodeManager.removeOutput",args:["{scriptProcessor}.node"]}},events:{onStart:"{enviro}.events.onStart",onStop:"{enviro}.events.onStop",onReset:"{enviro}.events.onReset",onCreateScriptProcessor:null,onConnect:null,onDisconnect:null},listeners:{onCreate:["{that}.events.onCreateScriptProcessor.fire()",{func:"{that}.insertOutput",args:"{scriptProcessor}.node"}],onStart:["{that}.connect()"],onConnect:[{"this":"{merger}.node",method:"connect",args:["{scriptProcessor}.node"]},{"this":"{that}.outputNode",method:"connect",args:["{audioSystem}.context.destination"]},{funcName:"flock.webAudio.nativeNodeManager.connectOutput",args:["{scriptProcessor}.node","{that}.outputNode"]}],onStop:["{that}.disconnect()"],onDisconnect:[{"this":"{merger}.node",method:"disconnect",args:[0]},{"this":"{scriptProcessor}.node",method:"disconnect",args:[0]},{"this":"{that}.outputNode",method:"disconnect",args:[0]}],onReset:["{that}.removeAllInputs()","{that}.events.onCreateScriptProcessor.fire()"],onDestroy:["{that}.removeAllInputs()","flock.webAudio.nativeNodeManager.disconnectOutput({that})"]}}),f.webAudio.nativeNodeManager.createInputNode=function(a,b,c){var d=a.createNode(b);return a.insertInput(d,c)},f.webAudio.nativeNodeManager.createOutputNode=function(a,b){var c=a.createNode(b);return a.insertOutput(c)},f.webAudio.nativeNodeManager.connectOutput=function(a,b){a!==b&&a.connect(b)},f.webAudio.nativeNodeManager.disconnectOutput=function(a){a.outputNode&&a.outputNode.disconnect(0)},f.webAudio.nativeNodeManager.removeAllInputs=function(a){for(var b=0;b<a.length;b++){var c=a[b];c.disconnect(0)}a.length=0},f.webAudio.nativeNodeManager.insertInput=function(a,b,c,d,e){var g=b.numInputBuses;if(a.inputNodes.length>=g)return void f.fail("There are too many input nodes connected to Flocking. The maximum number of input buses is currently set to "+g+". Either remove an existing input node or increase Flockings numInputBuses option.");e=void 0===e?c.busManager.acquireNextBus("input"):e;var h=e-b.chans;return a.inputNodes.push(d),d.connect(a.merger.node,0,h),e},f.webAudio.nativeNodeManager.removeInput=function(a,b){var c=b.indexOf(a);c>-1&&b.splice(c,1),a.disconnect(0)},f.webAudio.nativeNodeManager.insertOutput=function(a,b){return f.webAudio.nativeNodeManager.disconnectOutput(a),a.outputNode=b,b},f.webAudio.nativeNodeManager.removeOutput=function(a){f.webAudio.nativeNodeManager.insertOutput(a)}}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";d.defaults("flock.webAudio.outputManager",{gradeNames:["flock.outputManager"],model:{isGenerating:!1,shouldInitIOS:f.platform.isIOS,audioSettings:{}},invokers:{bindAudioProcess:{funcName:"flock.webAudio.outputManager.bindAudioProcess",args:["{enviro}.nodeList","{busManager}.buses","{nativeNodeManager}","{that}.model"]},unbindAudioProcess:{funcName:"flock.webAudio.outputManager.unbindAudioProcess",args:["{nativeNodeManager}"]}},listeners:{"{nativeNodeManager}.events.onConnect":["{that}.bindAudioProcess()"],"{nativeNodeManager}.events.onDisconnect":["{that}.unbindAudioProcess()"],onStart:[{func:"{that}.applier.change",args:["isGenerating",!0]},{priority:"last",funcName:"flock.webAudio.outputManager.iOSStart",args:["{that}","{audioSystem}.context","{nativeNodeManager}.scriptProcessor.node"]}],onStop:[{func:"{that}.applier.change",args:["isGenerating",!1]}]}}),f.webAudio.outputManager.bindAudioProcess=function(a,b,c,d){var e=c.scriptProcessor.node;e.model=d,e.nodeList=a,e.buses=b,e.inputNodes=c.inputNodes,e.onaudioprocess=f.webAudio.outputManager.writeSamples},f.webAudio.outputManager.unbindAudioProcess=function(a){a.scriptProcessor.node.onaudioprocess=void 0},f.webAudio.outputManager.writeSamples=function(a){var b,c,d,e=this.inputNodes?this.inputNodes.length:0,g=this.nodeList.nodes,h=this.model.audioSettings,i=a.inputBuffer,j=a.outputBuffer,k=h.numBlocks,l=this.buses,m=h.numBuses,n=h.blockSize,o=h.chans,p=i.numberOfChannels;if(g.length<1)for(b=0;o>b;b++)f.clearBuffer(j.getChannelData(b));else for(c=0;k>c;c++){var q=c*n;if(f.evaluate.clearBuses(l,m,n),e>0)for(b=0;p>b;b++){var r=i.getChannelData(b),s=o+b,t=l[s];for(d=0;n>d;d++)t[d]=r[d+q]}for(f.evaluate.synths(g),b=0;o>b;b++){var u=l[b],v=j.getChannelData(b);for(d=0;n>d;d++)v[d+q]=u[d]}}},f.webAudio.outputManager.iOSStart=function(a,b,c){if(a.model.shouldInitIOS){var d=b.createBufferSource();d.connect(c),d.start(0),d.disconnect(0),a.applier.change("shouldInitIOS",!1)}}}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";var a=d.registerNamespace("jQuery");f.ugenDefaults=function(a,b){return 1===arguments.length?f.ugenDefaults.store[a]:(f.ugenDefaults.store[a]=b,b)},f.ugenDefaults.store={},f.isUGen=function(a){return a&&a.tags&&a.tags.indexOf("flock.ugen")>-1},f.aliasUGen=function(b,c,d,e){var g=f.get(b);f.set(g,c,function(b,c,d){return d=a.extend(!0,{},e,d),g(b,c,d)}),f.ugenDefaults(b+"."+c,d)},f.aliasUGens=function(a,b){var c,d;for(c in b)d=b[c],f.aliasUGen(a,c,{inputs:d.inputDefaults},d.options)},f.krMul=function(a,b,c){var d,e=c.output[0];for(d=0;a>d;d++)b[d]=b[d]*e},f.mul=function(a,b,c){var d,e=c.output;for(d=0;a>d;d++)b[d]=b[d]*e[d]},f.krAdd=function(a,b,c,d){var e,f=d.output[0];for(e=0;a>e;e++)b[e]=b[e]+f},f.add=function(a,b,c,d){var e,f=d.output;for(e=0;a>e;e++)b[e]=b[e]+f[e]},f.krMulAdd=function(a,b,c,d){var e,f=c.output[0],g=d.output;for(e=0;a>e;e++)b[e]=b[e]*f+g[e]},f.mulKrAdd=function(a,b,c,d){var e,f=c.output,g=d.output[0];for(e=0;a>e;e++)b[e]=b[e]*f[e]+g},f.krMulKrAdd=function(a,b,c,d){var e,f=c.output[0],g=d.output[0];for(e=0;a>e;e++)b[e]=b[e]*f+g},f.mulAdd=function(a,b,c,d){var e,f=c.output,g=d.output;for(e=0;a>e;e++)b[e]=b[e]*f[e]+g[e]},f.onMulAddInputChanged=function(a){var b,c=a.inputs.mul,d=a.inputs.add;return c||d?(b=c?d?c.rate!==f.rates.AUDIO?d.rate!==f.rates.AUDIO?f.krMulKrAdd:f.krMulAdd:d.rate!==f.rates.AUDIO?f.mulKrAdd:f.mulAdd:c.rate!==f.rates.AUDIO?f.krMul:f.mul:d.rate!==f.rates.AUDIO?f.krAdd:f.add,a.mulAddFn=b,void(a.mulAdd=function(b){a.mulAddFn(b,a.output,a.inputs.mul,a.inputs.add)})):void(a.mulAdd=a.mulAddFn=f.noOp)},f.ugen=function(a,b,c){c=c||{};var e={enviro:c.enviro||f.environment,rate:c.rate||f.rates.AUDIO,inputs:a,output:b,options:c,model:c.model||{unscaledValue:0,value:0},multiInputs:{},tags:["flock.ugen"]};return e.lastOutputIdx=e.output.length-1,e.get=function(a){return f.input.get(e.inputs,a)},e.set=function(a,b){return f.input.set(e.inputs,a,b,e,function(a){return null!==a&&void 0!==a?f.parse.ugenDef(a,e.enviro,{audioSettings:e.options.audioSettings,buses:e.buses,buffers:e.buffers}):void 0})},e.input=function(a,b){return a?"string"==typeof a?arguments.length<2?e.get(a):e.set(a,b):f.isIterable(a)?e.get(a):e.set(a,b):void 0},e.calculateStrides=function(){var a,b,c,g=e.model,h=e.options.strideInputs,i=e.inputs;if(g.strides=g.strides||{},h)for(a=0;a<h.length;a++)b=h[a],c=i[b],c?g.strides[b]=c.rate===f.rates.AUDIO?1:0:d.log(d.logLevel.WARN,"An invalid input ('"+b+"') was found on a unit generator: "+e)},e.collectMultiInputs=function(){var a,b,c,d,g=e.options.multiInputNames,h=e.multiInputs;for(a=0;a<g.length;a++)b=g[a],c=h[b],c?c.length=0:c=h[b]=[],d=e.inputs[b],f.ugen.collectMultiInputs(d,c)},e.onInputChanged=function(a){var b=e.options.multiInputNames;f.onMulAddInputChanged(e),e.options.strideInputs&&e.calculateStrides(),!b||a&&!b.indexOf(a)||e.collectMultiInputs()},e.init=function(){var a,b,c,g=d.makeArray(e.options.tags),h=e.model,i=e.options;for(a=0;a<g.length;a++)e.tags.push(g[a]);if(b=i.audioSettings=i.audioSettings||e.enviro.audioSystem.model,h.sampleRate=i.sampleRate||b.rates[e.rate],h.nyquistRate=h.sampleRate,h.blockSize=e.rate===f.rates.AUDIO?b.blockSize:1,h.sampleDur=1/h.sampleRate,e.interpolate=f.interpolate.none,i.interpolation){var j=f.interpolate[i.interpolation];j?e.interpolate=j:d.log(d.logLevel.IMPORTANT,"An invalid interpolation type of '"+i.interpolation+"' was specified. Defaulting to none.")}e.rate===f.rates.DEMAND&&e.inputs.freq&&(c=f.parse.ugenDefForConstantValue(1),e.inputs.freq=f.parse.ugenDef(c,e.enviro))},e.init(),e},f.ugen.collectMultiInputs=function(a,b){f.isIterable(a)||(a=a=d.makeArray(a));for(var c=0;c<a.length;c++){var e=a[c];f.ugen.collectChannelsForInput(e,b)}return b},f.ugen.collectChannelsForInput=function(a,b){var c,d=f.hasTag(a,"flock.ugen.multiChannelOutput"),e=d?a.output:[a.output];for(c=0;c<e.length;c++)b.push({rate:a.rate,output:e[c]});return b},f.ugen.lastOutputValue=function(a,b){return b[a-1]},f.ugen.buffer=function(a){a.onBufferInputChanged=function(b){var c=a.model,d=a.inputs;(c.bufDef!==d.buffer||"buffer"===b)&&(c.bufDef=d.buffer,f.parse.bufferForDef(c.bufDef,a,a.enviro))},a.setBuffer=function(b){a.buffer=b,a.onBufferReady&&a.onBufferReady(b)},a.initBuffer=function(){a.buffer=a.model.bufDef=f.bufferDesc({format:{sampleRate:a.options.audioSettings.rates.audio},data:{channels:[new Float32Array(a.output.length)]}})}},f.ugen.value=function(a,b,c){var d=f.ugen(a,b,c);return d.value=function(){return d.model.value},d.dynamicGen=function(a){for(var b=d.output,c=d.model,e=0;a>e;e++)b[e]=c.unscaledValue;d.mulAdd(a),c.value=f.ugen.lastOutputValue(a,b)},d.onInputChanged=function(){var a=d.inputs,b=d.model;b.unscaledValue=a.value,"constant"!==d.rate?d.gen=d.dynamicGen:d.gen=void 0,f.onMulAddInputChanged(d),d.dynamicGen(1)},d.onInputChanged(),d},f.ugenDefaults("flock.ugen.value",{rate:"control",inputs:{value:1,mul:null,add:null},ugenOptions:{model:{unscaledValue:1,value:1},tags:["flock.ugen.valueType"]}}),f.ugen.silence=function(a,b,c){var d=f.ugen(a,b,c);return d.onInputChanged=function(){for(var a=0;a<d.output.length;a++)d.output[a]=0},d.onInputChanged(),d},f.ugenDefaults("flock.ugen.silence",{rate:"constant"}),f.ugen.passThrough=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.model,g=d.inputs.source.output,h=d.output;for(b=0;b<g.length;b++)h[b]=c=g[b];for(;a>b;b++)h[b]=c=0;e.unscaledValue=c,d.mulAdd(a),e.value=f.ugen.lastOutputValue(a,h)},d.onInputChanged(),d},f.ugenDefaults("flock.ugen.passThrough",{rate:"audio",inputs:{source:null,mul:null,add:null}}),f.ugen.out=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h,i,j,k,l,m,n=d.model,o=d.multiInputs.sources,p=d.options.buses,q=d.inputs.bus.output[0],r=d.inputs.expand.output[0];if(b=o.length,c=Math.max(r,b),!(1>b)){for(e=0;c>e;e++){for(h=o[e%b],i=h.rate,j=p[q+e],k=i===f.rates.AUDIO?1:0,l=0,g=0;a>g;g++,l+=k)m=h.output[l],j[g]=j[g]+m;d.mulAddFn(a,j,d.inputs.mul,d.inputs.add)}n.value=n.unscaledValue=m}},d.init=function(){d.sourceBuffers=[],d.onInputChanged()},d.init(),d},f.ugenDefaults("flock.ugen.out",{rate:"audio",inputs:{sources:null,bus:0,expand:2},ugenOptions:{tags:["flock.ugen.outputType"],multiInputNames:["sources"]}}),f.ugen.valueOut=function(a,b,c){var d=f.ugen(a,b,c);return d.arraySourceGen=function(){var a,b=d.model,c=d.inputs.sources;for(a=0;a<c.length;a++)b.value[a]=c[a].output[0]},d.ugenSourceGen=function(){d.model.value=d.model.unscaledValue=d.inputs.sources.output[0]},d.onInputChanged=function(){var a=d.model,b=d.inputs.sources;f.isIterable(b)?(d.gen=d.arraySourceGen,a.value=new Float32Array(b.length),a.unscaledValue=a.value):d.gen=d.ugenSourceGen},d.onInputChanged(),d},f.ugenDefaults("flock.ugen.valueOut",{rate:"control",inputs:{sources:null},ugenOptions:{model:{unscaledValue:null,value:null},tags:["flock.ugen.outputType","flock.ugen.valueType"]}}),f.ugen["in"]=function(a,b,c){var d=f.ugen(a,b,c);return d.singleBusGen=function(a){var b=d.model,c=d.output;f.ugen["in"].readBus(a,c,d.inputs.bus,d.options.buses),b.unscaledValue=f.ugen.lastOutputValue(a,c),d.mulAdd(a),b.value=f.ugen.lastOutputValue(a,c)},d.multiBusGen=function(a){var b,c,e,g,h=d.model,i=d.inputs.bus,j=d.options.buses,k=d.output;for(b=0;a>b;b++){for(g=0,c=0;c<i.length;c++)e=0|i[c].output[0],g+=j[e][b];k[b]=g}h.unscaledValue=g,d.mulAdd(a),h.value=f.ugen.lastOutputValue(a,k)},d.onInputChanged=function(){d.gen=f.isIterable(d.inputs.bus)?d.multiBusGen:d.singleBusGen,f.onMulAddInputChanged(d)},d.onInputChanged(),d},f.ugen["in"].readBus=function(a,b,c,d){var e,f=0|c.output[0],g=d[f];for(e=0;a>e;e++)b[e]=g[e]},f.ugenDefaults("flock.ugen.in",{rate:"audio",inputs:{bus:0,mul:null,add:null}}),f.ugen.audioIn=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.model,g=d.output,h=d.bus;for(b=0;a>b;b++)g[b]=c=h[b];e.unscaledValue=c,d.mulAdd(a),e.value=f.ugen.lastOutputValue(a,g)},d.onInputChanged=function(){f.onMulAddInputChanged(d)},d.init=function(){var a=d.enviro.audioSystem.inputDeviceManager.openAudioDevice(c);d.bus=d.options.buses[a],d.onInputChanged()},d.init(),d},f.ugenDefaults("flock.ugen.audioIn",{rate:"audio",inputs:{mul:null,add:null}})}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";f.blit=function(a){var b,c;return a>=2?b=0:a>=1?(c=2-a,b=.16666666666666666*c*c*c):a>=0?(c=a*a,b=.6666666666666666-c+.5*c*a):a>=-1?(c=a*a,b=.6666666666666666-c-.5*c*a):a>=-2?(c=2+a,b=.16666666666666666*c*c*c):b=0,b},f.blit.period=function(a,b){var c=a/b;return 1>c?1:c},f.blit.updatePeriodState=function(a,b){a.freq=1e-6>b?1e-6:b,a.d0=f.blit.period(a.sampleRate,a.freq)},f.ugen.blit=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.model,g=d.output,h=d.inputs.freq.output[0],i=e.phase;for(b=0;a>b;b++)i-=1,-2>i&&(f.blit.updatePeriodState(e,h),i+=e.d0),c=f.blit(i),g[b]=c;e.phase=i,e.unscaledValue=c,d.mulAdd(a),e.value=f.ugen.lastOutputValue(a,g)},d.init=function(){d.onInputChanged()},d.init(),d},f.ugenDefaults("flock.ugen.blit",{rate:"audio",inputs:{freq:440,mul:null,add:null},ugenOptions:{model:{phase:-2,unscaledValue:0,value:0}}}),f.ugen.saw=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=d.output,g=d.inputs.freq.output[0],h=1-d.inputs.leakRate.output[0],i=c.phase,j=c.unscaledValue;for(void 0===i&&(f.ugen.saw.updatePeriodState(c,g),i=c.d0/2),b=0;a>b;b++)i-=1,-2>i&&(f.ugen.saw.updatePeriodState(c,g),i+=c.d0),e[b]=j=f.blit(i)-c.dcOffset+h*j;c.phase=i,c.unscaledValue=j,d.mulAdd(a),c.value=f.ugen.lastOutputValue(a,e)},d.init=function(){d.onInputChanged()},d.init(),d},f.ugen.saw.updatePeriodState=function(a,b){f.blit.updatePeriodState(a,b),a.dcOffset=1/a.d0},f.ugenDefaults("flock.ugen.saw",{rate:"audio",inputs:{freq:440,leakRate:.01,mul:null,add:null},ugenOptions:{model:{phase:void 0,dcOffset:void 0,unscaledValue:0,value:0}}}),f.ugen.square=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=d.output,g=d.inputs.freq.output[0],h=1-d.inputs.leakRate.output[0],i=c.phase,j=c.unscaledValue;for(void 0===i&&(f.ugen.square.updatePeriodState(c,g),i=c.phaseResetValue),b=0;a>b;b++)e[b]=j=f.blit(i)*c.sign+h*j,-2>i&&(f.ugen.square.updatePeriodState(c,g),i+=c.phaseResetValue),i-=1;c.phase=i,c.unscaledValue=j,d.mulAdd(a),c.value=f.ugen.lastOutputValue(a,e)},d.init=function(){d.onInputChanged()},d.init(),d},f.ugen.square.updatePeriodState=function(a,b){f.blit.updatePeriodState(a,b),a.phaseResetValue=a.d0/2,a.sign*=-1},f.ugenDefaults("flock.ugen.square",{rate:"audio",inputs:{freq:440,leakRate:.01,mul:null,add:null},ugenOptions:{model:{phase:void 0,unscaledValue:.5,value:.5,sign:1}}}),f.ugen.tri=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g=d.model,h=d.output,i=d.inputs.freq.output[0],j=1-d.inputs.leakRate.output[0],k=g.phase,l=g.unscaledValue,m=g.secondPrevVal;for(void 0===k&&(f.ugen.tri.updatePeriodState(g,i),k=g.d0/4),b=0;a>b;b++)c=f.blit(k)*g.sign+j*l,l=c,e=c+j*m,m=e,h[b]=e*g.ampScale,k-=1,-2>k&&(f.ugen.tri.updatePeriodState(g,i),k+=g.phaseResetValue);g.phase=k,g.unscaledValue=l,g.secondPrevVal=m,d.mulAdd(a),g.value=f.ugen.lastOutputValue(a,h)},d.init=function(){d.onInputChanged()},d.init(),d},f.ugen.tri.updatePeriodState=function(a,b){f.blit.updatePeriodState(a,b),a.phaseResetValue=a.d0/2,a.ampScale=2/a.d0,a.sign*=-1},f.ugenDefaults("flock.ugen.tri",{rate:"audio",inputs:{freq:440,leakRate:.01,mul:null,add:null},ugenOptions:{model:{phase:void 0,value:.5,unscaledValue:.5,secondPrevVal:0,sign:1,ampScale:void 0,phaseResetValue:void 0}}})}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";f.ugen.playBuffer=function(a,b,c){var d=f.ugen(a,b,c);return d.defaultKrTriggerGen=function(b){var c,e,g=d.model,h=d.output,i=d.inputs.channel.output[0],j=d.buffer.data.channels[i],k=g.idx,l=d.inputs.loop.output[0],m=a.trigger.output[0];for(m>0&&g.prevTrig<=0&&(k=0),g.prevTrig=m,c=0;b>c;c++){if(k>g.lastIdx){if(!(l>0&&m>0)){h[c]=e=0;continue}k=0}e=d.interpolate(k,j),h[c]=e,k++}g.idx=k,g.unscaledValue=e,d.mulAdd(b),g.value=f.ugen.lastOutputValue(b,h)},d.otherwiseGen=function(b){var c,e,g,h,i,j,k=d.model,l=d.output,m=d.inputs.channel.output[0],n=d.inputs.speed.output,o=d.buffer.data.channels[m],p=a.trigger.output,q=k.idx,r=d.inputs.loop.output[0],s=d.inputs.start.output[0]*k.lastIdx|0,t=d.inputs.end.output[0]*k.lastIdx|0;for(c=0,e=0,g=0;b>c;c++,e+=k.strides.trigger,g+=k.strides.speed){if(h=p[e],i=n[g],h>0&&k.prevTrig<=0)q=f.ugen.playBuffer.resetIndex(i,s,t);else if(s>q||q>t){if(!(r>0&&h>0)){l[c]=j=0;continue}q=f.ugen.playBuffer.resetIndex(i,s,t)}k.prevTrig=p[e],j=d.interpolate(q,o),l[c]=j,q+=k.stepSize*i}k.idx=q,k.unscaledValue=j,d.mulAdd(b),k.value=f.ugen.lastOutputValue(b,l)},d.onInputChanged=function(a){var b=d.inputs,c=b.speed,e=b.start,g=b.end,h=b.trigger;d.onBufferInputChanged(a),d.gen=c.rate===f.rates.CONSTANT&&1===c.output[0]&&e.rate===f.rates.CONSTANT&&0===e.output[0]&&g.rate===f.rates.CONSTANT&&1===g.output[0]&&h.rate!==f.rates.AUDIO?d.defaultKrTriggerGen:d.otherwiseGen,d.calculateStrides(),f.onMulAddInputChanged(d)},d.onBufferReady=function(){var a=d.model,b=d.inputs.end.output[0],c=d.inputs.channel.output[0],e=d.buffer.data.channels[c],f=e.length;a.idx=b*f|0,a.lastIdx=f-1,a.stepSize=d.buffer.format.sampleRate/a.sampleRate},d.init=function(){f.ugen.buffer(d),d.initBuffer(),d.onInputChanged()},d.init(),d},f.ugen.playBuffer.resetIndex=function(a,b,c){return a>0?b:c},f.ugenDefaults("flock.ugen.playBuffer",{rate:"audio",inputs:{channel:0,loop:0,speed:1,start:0,end:1,trigger:1,buffer:null,mul:null,add:null},ugenOptions:{model:{finished:!1,unscaledValue:0,value:0,idx:0,stepSize:0,prevTrig:0,channel:void 0},strideInputs:["trigger","speed"],interpolation:"linear"}}),f.ugen.readBuffer=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h=d.model,i=h.strides.phase,j=d.output,k=d.inputs.channel.output[0],l=d.inputs.phase.output,m=d.buffer.data.channels[k],n=m.length;for(b=e=0;a>b;b++,e+=i)c=l[e]*n,g=d.interpolate(c,m),j[b]=g;h.unscaledValue=g,d.mulAdd(a),h.value=f.ugen.lastOutputValue(a,j)},d.onInputChanged=function(a){d.onBufferInputChanged(a),d.calculateStrides(),f.onMulAddInputChanged(d)},d.init=function(){f.ugen.buffer(d),d.initBuffer(),d.onInputChanged()},d.init(),d},f.ugenDefaults("flock.ugen.readBuffer",{rate:"audio",inputs:{buffer:null,channel:0,phase:0,mul:null,add:null},ugenOptions:{model:{channel:void 0,unscaledValue:0,value:0},strideInputs:["phase"],interpolation:"linear"}}),f.ugen.writeBuffer=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,f=d.model,g=d.output,h=d.inputs,i=d.buffer,j=d.multiInputs.sources,k=j.length,l=i.data.channels,m=i.format.numSampleFrames,n=h.start.output[0],o=h.loop.output[0];for(f.prevStart!==n&&(f.prevStart=n,f.writeIdx=Math.floor(n)),b=0;k>b;b++){var p=j[b].output,q=l[b],r=g[b];for(c=f.writeIdx,e=0;a>e;e++){var s=p[e];r&&(r[e]=s),m>c?q[c]=s:o>0&&(c=Math.floor(n),q[c]=s),c++}}f.writeIdx=c,d.mulAdd(a)},d.createBuffer=function(a,b){var c,d=a.options,e=d.audioSettings,g=d.buffers,h=a.multiInputs.sources.length,i=Math.round(a.options.duration*e.rates.audio),j=new Array(h);for(c=0;h>c;c++)j[c]=new Float32Array(i);var k=f.bufferDesc(j,e.rates.audio,h);return b.id&&(k.id=b.id,g[b.id]=k),k},d.setupBuffer=function(a){a="string"==typeof a?{id:a}:a;var b;return a.id&&(b=d.options.buffers[a.id]),d.buffer=b||d.createBuffer(d,a),d.buffer},d.onInputChanged=function(a){a?"sources"===a?d.collectMultiInputs():"buffer"===a&&d.setupBuffer(d.inputs.buffer):(d.collectMultiInputs(),d.setupBuffer(d.inputs.buffer)),f.onMulAddInputChanged(d)},d.init=function(){d.onInputChanged()},d.init(),d},f.ugenDefaults("flock.ugen.writeBuffer",{rate:"audio",inputs:{sources:null,buffer:null,start:0,loop:0},ugenOptions:{model:{prevStart:void 0,writeIdx:0},tags:["flock.ugen.multiChannelOutput"],numOutputs:2,multiInputNames:["sources"],duration:600}}),f.ugen.bufferDuration=function(a,b,c){var d=f.ugen(a,b,c);return d.krGen=function(a){var b,c=d.model,e=d.output,g=d.inputs.channel.output[0],h=d.buffer.data.channels[g],i=d.buffer.format.sampleRate,j=h.length/i;for(b=0;a>b;b++)e[b]=j;c.unscaledValue=j,d.mulAdd(a),c.value=f.ugen.lastOutputValue(a,e)},d.onInputChanged=function(a){f.onMulAddInputChanged(d),d.onBufferInputChanged(a)},d.onBufferReady=function(){d.krGen(1)},d.init=function(){var a=d.rate;d.gen=a===f.rates.CONTROL||a===f.rates.AUDIO?d.krGen:void 0,d.output[0]=0,f.ugen.buffer(d),d.initBuffer(),d.onInputChanged()},d.init(),d},f.ugenDefaults("flock.ugen.bufferDuration",{rate:"constant",inputs:{buffer:null,channel:0},ugenOptions:{model:{unscaledValue:0,value:0}}}),f.ugen.bufferLength=function(a,b,c){var d=f.ugen(a,b,c);return d.krGen=function(a){var b,c=d.model,e=d.output,g=d.inputs.channel.output[0],h=d.buffer.data.channels[g],i=h.length;for(b=0;a>b;b++)e[b]=i;c.unscaledValue=i,d.mulAdd(a),c.value=f.ugen.lastOutputValue(a,e)},d.onInputChanged=function(a){f.onMulAddInputChanged(d),d.onBufferInputChanged(a)},d.onBufferReady=function(){d.krGen(1)},d.init=function(){var a=d.rate;d.gen=a===f.rates.CONTROL||a===f.rates.AUDIO?d.krGen:void 0,d.output[0]=0,f.ugen.buffer(d),d.initBuffer(),d.onInputChanged()},d.init(),d},f.ugenDefaults("flock.ugen.bufferLength",{rate:"constant",inputs:{buffer:null,channel:0},ugenOptions:{model:{unscaledValue:0,value:0}}}),f.ugen.bufferPhaseStep=function(a,b,c){var d=f.ugen(a,b,c);return d.krGen=function(a){var b,c=d.model,e=d.output,g=c.unscaledValue;for(b=0;a>b;b++)e[b]=g;d.mulAdd(a),c.value=f.ugen.lastOutputValue(a,e)},d.onInputChanged=function(a){d.onBufferInputChanged(a),f.onMulAddInputChanged(d)},d.onBufferReady=function(a){var b=d.model,c=d.inputs.channel.output[0],e=a.data.channels[c],f=d.options.audioSettings.rates.audio,g=d.buffer.format.sampleRate||f;b.scale=g/f,d.output[0]=b.unscaledValue=1/(e.length*b.scale)},d.init=function(){var a=d.rate;d.gen=a===f.rates.CONTROL||a===f.rates.AUDIO?d.krGen:void 0,d.output[0]=0,f.ugen.buffer(d),d.initBuffer(),d.onInputChanged()},d.init(),d},f.ugenDefaults("flock.ugen.bufferPhaseStep",{rate:"constant",inputs:{buffer:null,channel:0},ugenOptions:{model:{scale:1,unscaledValue:0,value:0}}}),f.ugen.sampleRate=function(a,b,c){var d=f.ugen(a,b,c),e=d.model;return d.output[0]=e.value=e.unscaledValue=d.options.audioSettings.rates.audio,d},f.ugenDefaults("flock.ugen.sampleRate",{rate:"constant",inputs:{}}),f.ugen.triggerBuffers=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h,i,j,k,l,m,n=d.model,o=n.strides,p=d.output,q=d.inputs,r=d.buffers,s=r.length-1,t=n.prevTrigger,u=n.maxVoices,v=n.activeVoices,w=n.freeVoices,x=q.trigger.output,y=o.trigger,z=0,A=q.bufferIndex.output,B=o.bufferIndex,C=0,D=q.speed.output,E=o.speed,F=0,G=d.inputs.channel.output[0];for(b=0;a>b;b++){if(c=x[z],c>0&&0>=t&&v.length<u){if(g=Math.round(A[C]*s),g=Math.max(0,g),g=Math.min(g,s),h=r[g],!h)continue;e=w.pop(),e.speed=D[F],e.currentIdx=0,e.writePos=b,e.buffer=h.data.channels[G],v.push(e)}z+=y,F+=E,C+=B,p[b]=0,t=c}for(i=0;i<v.length;){for(e=v[i],j=e.buffer,k=Math.min(j.length-e.currentIdx,a),l=e.writePos;k>l;l++)m=d.interpolate?d.interpolate(e.currentIdx,j):j[0|e.currentIdx],p[l]+=m,e.currentIdx+=e.speed;e.currentIdx>=j.length?(w.push(e),v.splice(i,1)):(e.writePos=0,i++)}n.prevTrigger=t,n.unscaledValue=m,d.mulAdd(a),n.value=f.ugen.lastOutputValue(a,p)},d.init=function(){d.buffers=[],d.allocateVoices(),d.onInputChanged()},d.allocateVoices=function(){for(var a=0;a<d.model.maxVoices;a++)d.model.freeVoices.push({})},d.onInputChanged=function(){var a,b,c,e=d.enviro.buffers,g=d.options.bufferIDs;for(d.buffers.length=0,a=0;a<g.length;a++)b=g[a],c=e[b],d.buffers.push(c);f.onMulAddInputChanged(d),d.calculateStrides()},d.init(),d},f.ugenDefaults("flock.ugen.triggerBuffers",{inputs:{trigger:0,bufferIndex:0,speed:1,channel:0},ugenOptions:{model:{prevTrigger:0,maxVoices:128,activeVoices:[],freeVoices:[],channel:0},bufferIDs:[],strideInputs:["trigger","bufferIndex","speed"]}}),f.ugen.chopBuffer=function(a,b,c){var d=f.ugen(a,b,c);return f.ugen.buffer(d),d.gen=function(a){var b=d.model,c=d.output;f.ugen.chopBuffer.prepareVoices(d,a),f.ugen.chopBuffer.generateSamplesForAllVoices(d,a),b.unscaledValue=f.ugen.lastOutputValue(a,c),d.mulAdd(a),b.value=f.ugen.lastOutputValue(a,c)},d.onInputChanged=function(a){d.onBufferInputChanged(a),d.calculateStrides(),f.onMulAddInputChanged(d)},d.onBufferReady=function(){var a=d.model;a.stepSize=d.buffer.format.sampleRate/a.sampleRate,a.lastIdx=d.buffer.format.numSampleFrames-1},d.init=function(){f.ugen.chopBuffer.initVoices(d),d.initBuffer(),d.onInputChanged();var a=d.buffer.data.channels[d.inputs.channel.output[0]];d.model.lastIdx=a.length-1},d.init(),d},f.ugen.chopBuffer.initVoice=function(){return{currentStage:4,samplesRemaining:0,duration:0,attackDur:0,releaseDur:0,hasTriggeredNextVoice:!1,idx:0,stages:[{samplesRemaining:0},{samplesRemaining:0},{samplesRemaining:0},{samplesRemaining:0}]}},f.ugen.chopBuffer.initVoices=function(a){for(var b=a.model,c=0;c<a.options.maxVoices;c++){var d=f.ugen.chopBuffer.initVoice(a);b.freeVoices[c]=d}},f.ugen.chopBuffer.randomIndex=f.randomValue,f.ugen.chopBuffer.randomStartIndex=function(a){var b=a.model,c=a.inputs,d=c.end.output[0]-b.inputState.numDurationSamps;return d=Math.max(0,d),f.ugen.chopBuffer.randomIndex(c.start.output[0],d)*b.lastIdx},f.ugen.chopBuffer.allocateVoice=function(a){var b=a.model,c=b.stageSampleState;if(!(b.freeVoices.length<1)){var d=b.freeVoices.pop();b.activeVoices.push(d);for(var e=0;e<c.length;e++){var g=d.stages[e];g.samplesRemaining=c[e]}return d.hasTriggeredNextVoice=!1,d.currentStage=f.ugen.chopBuffer.stages.WAIT,d.samplesRemaining=b.inputState.numDurationSamps+b.inputState.numGapSamps,d.idx=f.ugen.chopBuffer.randomStartIndex(a),d}},f.ugen.chopBuffer.updateVoiceState=function(a,b){for(var c=a.model,d=c.stageSampleState,e=c.inputState,f=b.currentStage;f<d.length;f++){var g=b.stages[f],h=d[f];g.samplesRemaining>h&&(g.samplesRemaining=h)}b.samplesRemaining>e.numDurationSamps&&(b.samplesRemaining=e.numDurationSamps,0===b.currentStage&&(b.samplesRemaining+=e.numGapSamps))},f.ugen.chopBuffer.triggerNextVoice=function(a,b,c,d,e){var g=b.samplesRemaining+e;c>g&&(a.model.stageSampleState[0]=g,f.ugen.chopBuffer.allocateVoice(a),b.hasTriggeredNextVoice=!0)},f.ugen.chopBuffer.envLength=function(a,b,c){return Math.floor((a>b?b:a)*c)},f.ugen.chopBuffer.deactivateVoice=function(a,b){var c=a.model,d=c.activeVoices.indexOf(b);d>-1&&c.activeVoices.splice(d,1),c.freeVoices.push(b)},f.ugen.chopBuffer.prepareVoice=function(a,b,c){f.ugen.chopBuffer.updateVoiceState(a,b),b.currentStage<f.ugen.chopBuffer.stages.DONE?b.hasTriggeredNextVoice||f.ugen.chopBuffer.triggerNextVoice(a,b,c):f.ugen.chopBuffer.deactivateVoice(a,b)},f.ugen.chopBuffer.durationSamples=function(a,b,c){return 0===b?c.lastIdx:Math.floor(a/b*c.sampleRate)},f.ugen.chopBuffer.updateInputState=function(a,b){var c=b.inputState,d=a.amount.output[0],e=a.minDuration.output[0],g=e/2;return c.numDurationSamps=f.ugen.chopBuffer.durationSamples(e,d,b),c.numAttackSamps=f.ugen.chopBuffer.envLength(a.attack.output[0],g,b.sampleRate),c.numReleaseSamps=f.ugen.chopBuffer.envLength(a.release.output[0],g,b.sampleRate),c.numSustainSamps=c.numDurationSamps-c.numAttackSamps-c.numReleaseSamps,c.numGapSamps=Math.floor(a.gap.output[0]*b.sampleRate),c},f.ugen.chopBuffer.prepareVoices=function(a,b){var c=a.model;f.ugen.chopBuffer.updateInputState(a.inputs,c),c.stageSampleState[0]=c.inputState.numGapSamps,c.stageSampleState[1]=c.inputState.numAttackSamps,c.stageSampleState[3]=c.inputState.numReleaseSamps,c.stageSampleState[2]=c.inputState.numSustainSamps;for(var d=0;d<c.activeVoices.length;d++){var e=c.activeVoices[d];f.ugen.chopBuffer.prepareVoice(a,e,b)}0===c.activeVoices.length&&f.ugen.chopBuffer.allocateVoice(a)},f.ugen.chopBuffer.generateSamplesForVoice=function(a,b,c){for(var d=a.model,e=a.output,g=a.inputs,h=g.speed.output,i=a.buffer.data.channels[g.channel.output[0]],j=0,k=0;j<Math.min(c,b.samplesRemaining)&&!(b.currentStage>=f.ugen.chopBuffer.stages.DONE);j++,k+=d.strides.speed){var l=d.stepSize*h[k],m=b.stages[b.currentStage];e[j]+=a.interpolate(b.idx,i),b.samplesRemaining-=l,m.samplesRemaining-=l,b.idx+=l,m.samplesRemaining<=0&&b.currentStage++}b.samplesRemaining<=0&&b.currentStage<f.ugen.chopBuffer.stages.DONE&&(b.currentStage=f.ugen.chopBuffer.stages.DONE);
},f.ugen.chopBuffer.generateSamplesForAllVoices=function(a,b){var c=a.model;f.clearBuffer(a.output);for(var d=c.activeVoices.length-1;d>=0;d--){var e=c.activeVoices[d];f.ugen.chopBuffer.generateSamplesForVoice(a,e,b)}},f.ugen.chopBuffer.stages={WAIT:0,ATTACK:1,SUSTAIN:2,RELEASE:3,DONE:4},f.ugenDefaults("flock.ugen.chopBuffer",{rate:"audio",inputs:{buffer:null,channel:0,start:0,end:1,speed:1,amount:1,minDuration:.1,attack:.01,release:.01,gap:0},ugenOptions:{model:{stepSize:1,activeVoices:[],freeVoices:[],stageSampleState:[0,0,0,0],lastIdx:0,inputState:{numAttackSamps:0,numSustainSamps:0,numReleaseSamps:0,numDurationSamps:0,numGapSamps:0}},interpolation:"linear",envelopeType:"linear",maxVoices:2,strideInputs:["speed"]}})}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";f.ugen.print=function(a,b,c){var e=f.ugen(a,b,c);return e.gen=function(a){var b,c,f,g=e.inputs,h=e.output,i=e.model,j=i.label,k=g.channel,l=k?g.source.output[k.output[0]]:g.source.output,m=g.trigger.output[0],n=g.freq.output[0];for(m>0&&i.prevTrig<=0&&d.log(d.logLevel.IMPORTANT,j+l),i.freq!==n&&(i.sampInterval=Math.round(i.sampleRate/n),i.freq=n,i.counter=i.sampInterval),b=0,c=0;a>b;b++,c+=i.strides.source)i.counter>=i.sampInterval&&(d.log(d.logLevel.IMPORTANT,j+l[c]),i.counter=0),i.counter++,h[b]=f=l[b];i.value=i.unscaledValue=f},e.init=function(){var a=e.options;e.model.label=a.label?a.label+": ":"",e.onInputChanged()},e.init(),e},f.ugenDefaults("flock.ugen.print",{rate:"audio",inputs:{source:null,trigger:0,freq:1},ugenOptions:{model:{unscaledValue:0,value:0,counter:0},strideInputs:["source"]}})}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";f.ugen.distortion=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h,i=d.model,j=d.output,k=d.inputs.source.output,l=i.strides.source,m=d.inputs.gain.output,n=i.strides.gain;for(e=g=h=0;a>e;e++,g+=l,h+=n)b=k[g]*m[h],c=1.5*b-.5*b*b*b,j[e]=c;i.unscaledValue=c,d.mulAdd(a),i.value=f.ugen.lastOutputValue(a,j)},d.onInputChanged(),d},f.ugenDefaults("flock.ugen.distortion",{rate:"audio",inputs:{source:null,gain:1},ugenOptions:{strideInputs:["source","gain"]}}),f.ugen.distortion.deJonge=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h,i,j,k=d.model,l=d.output,m=d.inputs.source.output,n=k.strides.source,o=d.inputs.amount.output,p=k.strides.amount;for(h=i=j=0;a>h;h++,i+=n,j+=p)b=m[i],c=o[j],e=Math.abs(b),g=b*(e+c)/(b*b+(c-1)*e+1),l[h]=g;k.unscaledValue=g,d.mulAdd(a),k.value=f.ugen.lastOutputValue(a,l)},d.onInputChanged(),d},f.ugenDefaults("flock.ugen.distortion.deJonge",{rate:"audio",inputs:{source:null,amount:2},ugenOptions:{strideInputs:["source","amount"]}}),f.ugen.distortion.tarrabiaDeJonge=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h,i,j,k=d.model,l=d.output,m=d.inputs.source.output,n=k.strides.source,o=d.inputs.amount.output,p=k.strides.amount;for(g=h=i=0;a>g;g++,h+=n,i+=p)b=m[h],c=o[i],c>=1?c=.9999999999999999:-1>c&&(c=-1),j=2*c/(1-c),e=(1+j)*b/(1+j*Math.abs(b)),l[g]=e;k.unscaledValue=e,d.mulAdd(a),k.value=f.ugen.lastOutputValue(a,l)},d.onInputChanged(),d},f.ugenDefaults("flock.ugen.distortion.tarrabiaDeJonge",{rate:"audio",inputs:{source:null,amount:10},ugenOptions:{strideInputs:["source","amount"]}}),f.ugen.distortion.gloubiBoulga=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h,i,j,k,l=d.model,m=d.output,n=d.inputs.source.output,o=l.strides.source,p=d.inputs.gain.output,q=l.strides.gain;for(e=g=h=0;a>e;e++,g+=o,h+=q)b=n[g]*p[h],i=.686306*b,j=1+Math.exp(Math.sqrt(Math.abs(i))*-.75),k=Math.exp(i),c=(k-Math.exp(-i*j))/(k+Math.exp(-i)),m[e]=c;l.unscaledValue=c,d.mulAdd(a),l.value=f.ugen.lastOutputValue(a,m)},d.onInputChanged(),d},f.ugenDefaults("flock.ugen.distortion.gloubiBoulga",{rate:"audio",inputs:{source:null,gain:1},ugenOptions:{strideInputs:["source","gain"]}})}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";f.ugen.normalize=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(){var a=d.model,b=d.output,c=d.inputs.max.output[0],e=d.inputs.source.output;f.normalize(e,c,b),a.value=a.unscaledValue=b[b.length-1]},d.onInputChanged(),d},f.ugenDefaults("flock.ugen.normalize",{rate:"audio",inputs:{max:1,source:null}})}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";var a=d.registerNamespace("jQuery"),b=f.requireModule("webarraymath","ArrayMath");f.envelope={},f.envelope.makeCreator=function(b,c){return function(d){var e=f.ugenDefaults(b),g=a.extend(!0,{},e,d);return c(g)}},f.envelope.registerCreators=function(a,b){var c,e;for(var g in b)c=d.pathUtil.composePath(a,g),e=b[g],f.ugenDefaults(c,e.defaults),d.setGlobalValue(c,f.envelope.makeCreator(c,e.transformer))},f.envelope.creatorSpecs={line:{transformer:function(a){return{levels:[a.start,a.end],times:[a.duration]}},defaults:{start:0,end:1,duration:1}},linear:{transformer:function(a){return{levels:[0,a.level,a.level,0],times:[a.attack,a.sustain,a.release]}},defaults:{level:1,attack:.01,sustain:1,release:1}},tri:{transformer:function(a){return{levels:[0,a.level,0],times:[a.duration,a.duration]}},defaults:{level:1,duration:1}},sin:{transformer:function(a){return{levels:[0,a.level,0],times:[a.duration,a.duration],curve:"sin"}},defaults:{level:1,duration:1}},asr:{transformer:function(a){return{levels:[0,a.sustain,0],times:[a.attack,a.release],sustainPoint:1,curve:-4}},defaults:{sustain:1,attack:.01,release:1}},dadsr:{transformer:function(a){var c=[0,0,a.peak,a.peak*a.sustain,0];return b.add(c,a.bias,c),{levels:c,times:[a.delay,a.attack,a.decay,a.release],sustainPoint:3,curve:-4}},defaults:{delay:.1,attack:.01,decay:.3,sustain:.5,release:1,peak:1,bias:0}},adsr:{transformer:function(a){var c=[0,a.peak,a.peak*a.sustain,0];return b.add(c,a.bias,c),{levels:c,times:[a.attack,a.decay,a.release],sustainPoint:2,curve:-4}},defaults:{attack:.01,decay:.3,sustain:.5,release:1,peak:1,bias:0}}},f.envelope.registerCreators("flock.envelope",f.envelope.creatorSpecs),f.envelope.validate=function(a,b){var c=a.levels,d={};if(a.times?!c||c.length<2?d.levels="An array containing at least two levels must be specified.":(f.envelope.validate.times(a.times,c,d),f.envelope.validate.levels(c,d),f.envelope.validate.curves(a.curve,c,d),f.envelope.validate.sustainPoint(a.sustainPoint,c,d)):d.times="An array containing at least one time value must be specified.",b!==!1)for(var e in d)f.fail(d[e]);return d},f.envelope.validate.times=function(a,b,c){a.length!==b.length-1&&(c.times="The envelope specification should provide one fewer time value than the number of level values. times: "+a+" levels: "+b);for(var d=0;d<a.length;d++){var e=a[d];isNaN(e)&&(c.times="A NaN time value was specified at index "+d+". times: "+a),0>e&&(c.times="All times should be positive values. times: "+a)}},f.envelope.validate.levels=function(a,b){for(var c=0;c<a.length;c++)isNaN(a[c])&&(b.levels="A NaN level value was specified at index "+c+". levels: "+a)},f.envelope.validate.curves=function(a,b,c){if(!a)return c;f.isIterable(a)&&(a.length!==b.length-1&&(c.curve="When curve is specified as an array, there should be one fewer curve value than the number of level values. curve: "+a+" levels: "+b),d.each(a,function(b){var d=f.lineGenerator(b);d||(c.curve="'"+b+"' is not a valid curve type. curve: "+a)}));var e=f.lineGenerator(a);e||(c.curve="'"+a+"' is not a valid curve type.")},f.envelope.validate.sustainPoint=function(a,b,c){(0>a||a>=b.length)&&(c.sustainPoint="The specified sustainPoint index is out range for the levels array. sustainPoint: "+a+" levels: "+b)},f.envelope.expand=function(a){var b="string"==typeof a?d.invokeGlobalFunction(a):a.type?d.invokeGlobalFunction(a.type,[a]):a;if(b.curves&&!b.curve&&(b.curve=b.curves),!f.isIterable(b.curve)){var c=b.levels.length-1;b.curve=f.fillBufferWithValue(new Array(c),b.curve)}return f.envelope.validate(b,!0),b},f.fillBufferWithLine=function(a,b,c,d,e,g){e=void 0===e?0:e,g=void 0===g?b.length:g;var h=g-e,i=f.fillBufferWithLine.singletonModel;i.unscaledValue=c,i.destination=d,i.numSegmentSamps=h-1,"number"==typeof a&&(i.currentCurve=a,a="curve");var j=f.line[a];return j||f.fail("No line generator could be found for type "+a),j.init(i),j.gen(h,e,b,i)},f.fillBufferWithLine.singletonModel={unscaledValue:0,value:0,destination:1},f.lineGenerator=function(a){var b=typeof a;return"string"===b?f.line[a]:"number"===b?f.line.curve:f.line.linear},f.line={constant:{init:function(a){a.stepSize=0},gen:function(a,b,c,d){for(var e=d.unscaledValue,f=b;a+b>f;f++)c[f]=e;return c}},step:{init:function(a){a.arrived=!1},gen:function(a,b,c,d){for(var e=b;a+b>e;e++)c[e]=d.unscaledValue,d.arrived||(d.arrived=!0,d.unscaledValue=d.destination);return c}},linear:{init:function(a){a.stepSize=(a.destination-a.unscaledValue)/a.numSegmentSamps},gen:function(a,b,c,d){for(var e=d.unscaledValue,f=d.stepSize,g=b;a+b>g;g++)c[g]=e,e+=f;return d.unscaledValue=e,c}},exponential:{init:function(a){0===a.unscaledValue&&(a.unscaledValue=1e-16),a.stepSize=0===a.numSegmentSamps?0:Math.pow(a.destination/a.unscaledValue,1/a.numSegmentSamps)},gen:function(a,b,c,d){for(var e=d.unscaledValue,f=d.stepSize,g=b;a+b>g;g++)c[g]=e,e*=f;return d.unscaledValue=e,d.stepSize=f,c}},curve:{init:function(a){if(Math.abs(a.currentCurve)<.001)return f.line.linear.init(a);var b=(a.destination-a.unscaledValue)/(1-Math.exp(a.currentCurve));a.a2=a.unscaledValue+b,a.b1=b,a.stepSize=Math.exp(a.currentCurve/a.numSegmentSamps)},gen:function(a,b,c,d){for(var e=d.unscaledValue,f=d.b1,g=b;a+b>g;g++)c[g]=e,f*=d.stepSize,e=d.a2-f;return d.unscaledValue=e,d.b1=f,c}},sin:{init:function(a){var b=Math.PI/a.numSegmentSamps;a.a2=.5*(a.destination+a.unscaledValue),a.b1=2*Math.cos(b),a.y1=.5*(a.destination-a.unscaledValue),a.y2=a.y1*Math.sin(f.HALFPI-b),a.unscaledValue=a.a2-a.y1},gen:function(a,b,c,d){for(var e,f=d.unscaledValue,g=d.y1,h=d.y2,i=b;a+b>i;i++)c[i]=f,e=d.b1*g-h,f=d.a2-e,h=g,g=e;return d.unscaledValue=f,d.y1=g,d.y2=h,c}},welsh:{init:function(a){var b=f.HALFPI/a.numSegmentSamps,c=Math.cos(b);a.b1=2*c,a.destination>=a.unscaledValue?(a.a2=a.unscaledValue,a.y1=0,a.y2=-Math.sin(b)*(a.destination-a.unscaledValue)):(a.a2=a.destination,a.y1=a.unscaledValue-a.destination,a.y2=c*(a.unscaledValue-a.destination)),a.unscaledValue=a.a2+a.y1},gen:function(a,b,c,d){for(var e,f=d.unscaledValue,g=d.y1,h=d.y2,i=b;a+b>i;i++)c[i]=f,e=d.b1*g-h,h=g,g=e,f=d.a2+e;return d.unscaledValue=f,d.y1=g,d.y2=h,c}},squared:{init:function(a){a.y1=Math.sqrt(a.unscaledValue),a.y2=Math.sqrt(a.destination),a.stepSize=(a.y2-a.y1)/a.numSegmentSamps},gen:function(a,b,c,d){for(var e=d.unscaledValue,f=d.y1,g=b;a+b>g;g++)c[g]=e,f+=d.stepSize,e=f*f;return d.y1=f,d.unscaledValue=e,c}},cubed:{init:function(a){var b=.3333333333333333;a.y1=Math.pow(a.unscaledValue,b),a.y2=Math.pow(a.destination,b),a.stepSize=(a.y2-a.y1)/a.numSegmentSamps},gen:function(a,b,c,d){for(var e=d.unscaledValue,f=d.y1,g=b;a+b>g;g++)c[g]=e,f+=d.stepSize,e=f*f*f;return d.y1=f,d.unscaledValue=e,c}}},f.ugen.line=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=c.stepSize,g=c.numSteps,h=g>=a?a:g,i=a-h,j=c.level,k=d.output;for(b=0;h>b;b++)k[b]=j,g--,j+=e;if(i>0)for(b=0;i>b;b++)k[b]=j;c.level=c.unscaledValue=j,c.numSteps=g,d.mulAdd(a),c.value=f.ugen.lastOutputValue(a,k)},d.onInputChanged=function(){var a=d.model;a.start=d.inputs.start.output[0],a.end=d.inputs.end.output[0],a.numSteps=Math.round(d.inputs.duration.output[0]*a.sampleRate),0===a.numSteps?(a.stepSize=0,a.level=a.end):(a.stepSize=(a.end-a.start)/a.numSteps,a.level=a.start),f.onMulAddInputChanged(d)},d.onInputChanged(),d},f.ugenDefaults("flock.ugen.line",{rate:"control",inputs:{start:0,end:1,duration:1,mul:null,add:null},ugenOptions:{model:{start:0,end:1,numSteps:0,stepSize:0,level:0,unscaledValue:0,value:0}}}),f.ugen.xLine=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=c.multiplier,g=c.numSteps,h=g>=a?a:g,i=a-h,j=c.level,k=d.output;for(b=0;h>b;b++)k[b]=j,g--,j*=e;if(i>0)for(b=0;i>b;b++)k[b]=j;c.level=c.unscaledValue=j,c.numSteps=g,d.mulAdd(a),c.value=f.ugen.lastOutputValue(a,k)},d.onInputChanged=function(){var a=d.model;f.onMulAddInputChanged(d),a.start=d.inputs.start.output[0],0===a.start&&(a.start=1e-101),a.end=d.inputs.end.output[0],a.numSteps=Math.round(d.inputs.duration.output[0]*a.sampleRate),a.multiplier=Math.pow(a.end/a.start,1/a.numSteps),a.level=a.start},d.onInputChanged(),d},f.ugenDefaults("flock.ugen.xLine",{rate:"control",inputs:{start:0,end:1,duration:1,mul:null,add:null},ugenOptions:{model:{start:0,end:1,numSteps:0,multiplier:0,level:0,unscaledValue:0,value:0}}}),f.ugen.asr=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.model,g=d.output,h=e.previousGate,i=d.inputs.gate.output[0],j=e.level,k=e.stage,l=k.currentStep,m=k.stepInc,n=k.numSteps,o=e.targetLevel,p=!1;for(0>=h&&i>0?(o=d.inputs.sustain.output[0],b=d.inputs.attack.output[0],p=!0):0>=i&&l>=n&&(o=d.inputs.start.output[0],b=d.inputs.release.output[0],p=!0),p&&(n=Math.round(b*e.sampleRate),m=(o-j)/n,l=0),c=0;a>c;c++)g[c]=j,l++,j=n>l?j+m:l===n?o:j;e.level=e.unscaledValue=j,e.targetLevel=o,e.previousGate=i,k.currentStep=l,k.stepInc=m,k.numSteps=n,d.mulAdd(a),e.value=f.ugen.lastOutputValue(a,g)},d.init=function(){var a=d.model;a.level=a.unscaledValue=d.inputs.start.output[0],a.targetLevel=d.inputs.sustain.output[0],d.onInputChanged()},d.init(),d},f.ugenDefaults("flock.ugen.asr",{rate:"control",inputs:{start:0,attack:.01,sustain:1,release:1,gate:0,mul:null,add:null},ugenOptions:{model:{level:0,targetLevel:0,previousGate:0,unscaledValue:0,value:0,stage:{currentStep:0,stepInc:0,numSteps:0}}}}),f.ugen.env={},f.ugen.env.simpleASR=f.ugen.asr,f.ugenDefaults("flock.ugen.env.simpleASR",d.copy(f.ugenDefaults("flock.ugen.asr"))),f.ugen.envGen=function(a,b,c){var d=f.ugen(a,b,c);return d.krGen=function(a){var b,c=d.model,e=d.output,g=d.inputs,h=g.gate.output[0],i=g.timeScale.output[0],j=0;for(f.ugen.envGen.checkGate(d,h,i);a>j;)b=Math.min(a-j,c.numSegmentSamps),d.lineGen.gen(b,j,e,c),j+=b,c.numSegmentSamps-=b,c.numSegmentSamps<=0&&f.ugen.envGen.nextStage(d,i);d.mulAdd(a),c.value=f.ugen.lastOutputValue(a,e)},d.arGen=function(a){var b,c=d.model,e=d.output,g=d.inputs,h=g.gate.output,i=g.timeScale.output[0];for(b=0;a>b;b++)f.ugen.envGen.checkGate(d,h[b],i),d.lineGen.gen(1,b,e,c),c.numSegmentSamps--,c.numSegmentSamps<=0&&f.ugen.envGen.nextStage(d,i);d.mulAdd(a),c.value=f.ugen.lastOutputValue(a,e)},d.onInputChanged=function(a){a&&"envelope"!==a||(d.envelope=f.ugen.envGen.initEnvelope(d,d.inputs.envelope)),a&&"gate"!==a||(d.gen=d.inputs.gate.rate===f.rates.AUDIO?d.arGen:d.krGen),f.onMulAddInputChanged(d)},d.onInputChanged(),d},f.ugen.envGen.initEnvelope=function(a,b){var c=a.model,d=f.envelope.expand(b);return c.stage=0,c.numStages=d.times.length,a.lineGen=f.line.constant,f.ugen.envGen.lineGenForStage(a.inputs.timeScale.output[0],d,c),c.unscaledValue=d.levels[c.stage],d},f.ugen.envGen.checkGate=function(a,b,c){var d=a.model,e=a.envelope;b!==d.previousGate&&(b>0&&d.previousGate<=0?(d.stage=1,a.lineGen=f.ugen.envGen.lineGenForStage(c,e,d)):0>=b&&d.previousGate>0&&(d.stage=d.numStages,a.lineGen=f.ugen.envGen.lineGenForStage(c,e,d))),d.previousGate=b},f.ugen.envGen.nextStage=function(a,b){var c=a.model,d=a.envelope;c.stage===d.sustainPoint?(a.lineGen=f.line.constant,c.numSegmentSamps=1/0,c.destination=c.unscaledValue):(c.stage++,a.lineGen=f.ugen.envGen.lineGenForStage(b,d,c))},f.ugen.envGen.setupStage=function(a,b,c){var d,e,f=b.levels[c.stage];0===c.stage||c.stage>c.numStages?e=1/0:(d=b.times[c.stage-1]*a,e=Math.max(1,Math.round(d*c.sampleRate))),c.numSegmentSamps=e,c.destination=f},f.ugen.envGen.lineGenForStage=function(a,b,c){var d,e,g=b.curve;return 0===c.stage||c.stage>c.numStages?d=f.line.constant:(e=g[c.stage-1],c.currentCurve=e,d=f.lineGenerator(e)),f.ugen.envGen.setupStage(a,b,c),d.init(c),d},f.ugenDefaults("flock.ugen.envGen",{rate:"audio",inputs:{envelope:"flock.envelope.adsr",gate:0,timeScale:1,mul:null,add:null},ugenOptions:{model:{previousGate:0,stepSize:0,destination:0,numSegmentSamps:1,unscaledValue:0,value:0,stage:0,numStages:0}}}),f.ugen.phasor=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g=d.model,h=d.inputs,i=d.output,j=h.step.output,k=h.trigger.output;for(void 0===g.unscaledValue&&(g.unscaledValue=h.start.output[0]),b=0,c=0,e=0;a>b;b++,c+=g.strides.trigger,e+=g.strides.step)k[c]>0&&g.prevTrig<=0&&(g.unscaledValue=h.reset.output[0]),g.prevTrig=k[c],g.unscaledValue>=h.end.output[0]&&(g.unscaledValue=h.start.output[0]),i[b]=g.unscaledValue,g.unscaledValue+=j[e];d.mulAdd(a),g.value=f.ugen.lastOutputValue(a,i)},d.onInputChanged(),d},f.ugenDefaults("flock.ugen.phasor",{rate:"control",inputs:{start:0,end:1,reset:0,step:.1,trigger:0,mul:null,add:null},ugenOptions:{model:{unscaledValue:void 0,value:0},strideInputs:["trigger","step"]}})}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";var a=f.requireModule("webarraymath","Filter");f.ugen.lag=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h=d.model,i=d.output,j=d.inputs,k=j.time.output[0],l=j.source.output,m=h.prevSamp,n=h.lagCoef;for(k!==h.prevTime&&(h.prevtime=k,n=h.lagCoef=0===k?0:Math.exp(f.LOG001/(k*h.sampleRate))),b=c=0;a>b;b++,c+=h.strides.source)e=l[c],g=e+n*(m-e),i[b]=m=g;h.prevSamp=m,d.mulAdd(a)},d.onInputChanged(),d},f.ugenDefaults("flock.ugen.lag",{rate:"audio",inputs:{source:null,time:.1},ugenOptions:{strideInputs:["source"],model:{prevSamp:0,lagCoef:0,prevTime:0}}}),f.ugen.filter=function(b,c,d){var e=f.ugen(b,c,d);return e.gen=function(){var a=e.model,b=e.output,c=e.inputs,d=c.q.output[0],f=c.freq.output[0];(a.prevFreq!==f||a.prevQ!==d)&&e.updateCoefficients(a,f,d),e.filterEngine.filter(b,e.inputs.source.output),a.prevQ=d,a.prevFreq=f,a.value=a.unscaledValue=b[b.length-1]},e.init=function(){var b=e.options.recipe,c="string"==typeof b?f.get(b):b;if(!c)throw new Error("Can't instantiate a flock.ugen.filter() without specifying a filter coefficient recipe.");e.filterEngine=new a(c.sizes.b,c.sizes.a),e.model.coeffs={a:e.filterEngine.a,b:e.filterEngine.b},e.updateCoefficients=f.get(c,e.options.type),e.onInputChanged()},e.init(),e},f.ugenDefaults("flock.ugen.filter",{rate:"audio",inputs:{freq:440,q:1,source:null}}),f.ugen.filter.biquad=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.model,g=d.inputs,h=d.output,i=e.coeffs,j=g.freq.output[0],k=g.q.output[0],l=g.source.output;for((e.prevFreq!==j||e.prevQ!==k)&&d.updateCoefficients(e,j,k),b=0;a>b;b++)c=l[b]-i.a[0]*e.d0-i.a[1]*e.d1,h[b]=i.b[0]*c+i.b[1]*e.d0+i.b[2]*e.d1,e.d1=e.d0,e.d0=c;e.prevQ=k,e.prevFreq=j,e.value=e.unscaledValue=f.ugen.lastOutputValue(a,h)},d.onInputChanged=function(){var a=d.options.type;d.updateCoefficients="string"==typeof a?f.get(a):a},d.init=function(){d.model.d0=0,d.model.d1=0,d.model.coeffs={a:new Float32Array(2),b:new Float32Array(3)},d.onInputChanged()},d.init(),d},f.ugenDefaults("flock.ugen.filter.biquad",{inputs:{freq:440,q:1,source:null}}),f.ugen.filter.biquad.types={hp:{inputDefaults:{freq:440,q:1},options:{type:"flock.coefficients.butterworth.highPass"}},rhp:{inputDefaults:{freq:440,q:1},options:{type:"flock.coefficients.rbj.highPass"}},lp:{inputDefaults:{freq:440,q:1},options:{type:"flock.coefficients.butterworth.lowPass"}},rlp:{inputDefaults:{freq:440,q:1},options:{type:"flock.coefficients.rbj.lowPass"}},bp:{inputDefaults:{freq:440,q:4},options:{type:"flock.coefficients.butterworth.bandPass"}},br:{inputDefaults:{freq:440,q:1},options:{type:"flock.coefficients.butterworth.bandReject"}}},f.aliasUGens("flock.ugen.filter.biquad",f.ugen.filter.biquad.types),f.coefficients={butterworth:{sizes:{a:2,b:3},lowPass:function(a,b){var c=a.coeffs,d=1/Math.tan(Math.PI*b/a.sampleRate),e=d*d,g=f.ROOT2*d,h=1/(1+g+e);c.b[0]=h,c.b[1]=2*h,c.b[2]=h,c.a[0]=2*(1-e)*h,c.a[1]=(1-g+e)*h},highPass:function(a,b){var c=a.coeffs,d=Math.tan(Math.PI*b/a.sampleRate);d===1/0&&(d=0);var e=d*d,g=f.ROOT2*d,h=1/(1+g+e);c.b[0]=h,c.b[1]=-2*h,c.b[2]=h,c.a[0]=2*(e-1)*h,c.a[1]=(1-g+e)*h},bandPass:function(a,b,c){var d=a.coeffs,e=b/c,g=1/Math.tan(Math.PI*e/a.sampleRate),h=2*Math.cos(f.TWOPI*b/a.sampleRate),i=1/(1+g);d.b[0]=i,d.b[1]=0,d.b[2]=-i,d.a[0]=-(g*h*i),d.a[1]=i*(g-1)},bandReject:function(a,b,c){var d=a.coeffs,e=b/c,g=Math.tan(Math.PI*e/a.sampleRate),h=2*Math.cos(f.TWOPI*b/a.sampleRate),i=1/(1+g),j=-h*i;d.b[0]=i,d.b[1]=j,d.b[2]=i,d.a[0]=j,d.a[1]=(1-g)*i}},rbj:{sizes:{a:2,b:3},lowPass:function(a,b,c){var d=a.coeffs,e=f.TWOPI*b/a.sampleRate,g=Math.cos(e),h=Math.sin(e),i=h/(2*c),j=1-g,k=1+i,l=j/2/k;d.b[0]=l,d.b[1]=j/k,d.b[2]=l,d.a[0]=-2*g/k,d.a[1]=(1-i)/k},highPass:function(a,b,c){var d=a.coeffs,e=f.TWOPI*b/a.sampleRate,g=Math.cos(e),h=Math.sin(e),i=h/(2*c),j=1+g,k=1+i,l=j/2/k;d.b[0]=l,d.b[1]=-j/k,d.b[2]=l,d.a[0]=-2*g/k,d.a[1]=(1-i)/k},bandPass:function(a,b,c){var d=a.coeffs,e=f.TWOPI*b/a.sampleRate,g=Math.cos(e),h=Math.sin(e),i=h/(2*c),j=1+i,k=c*i;d.b[0]=k/j,d.b[1]=0,d.b[2]=-k/j,d.a[0]=-2*g/j,d.a[1]=(1-i)/j},bandReject:function(a,b,c){var d=a.coeffs,e=f.TWOPI*b/a.sampleRate,g=Math.cos(e),h=Math.sin(e),i=h/(2*c),j=1+i,k=1/j,l=-2*g/j;d.b[0]=k,d.b[1]=l,d.b[2]=k,d.a[0]=l,d.a[1]=(1-i)/j}}},f.ugen.filter.moog=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h,i,j,k=d.model,l=d.inputs,m=d.output,n=l.source.output,o=k.strides.source,p=l.resonance.output,q=k.strides.resonance,r=l.cutoff.output,s=k.strides.cutoff,t=k.f,u=k.fSq,v=k.fSqSq,w=k.oneMinusF,x=k.fb;for(b=c=e=g=0;a>b;b++,c+=o,e+=q,g+=s)h=r[g],i=p[e],h!==k.prevCutoff&&(h>k.nyquistRate&&(h=k.nyquistRate),t=k.f=h/k.nyquistRate*1.16,u=k.fSq=t*t,v=k.fSqSq=u*u,w=k.oneMinusF=1-t,k.prevRes=void 0),i!==k.prevRes&&(i>4?i=4:0>i&&(i=0),x=k.fb=i*(1-.15*u)),j=n[c]-k.out4*x,j*=.35013*v,k.out1=j+.3*k.in1+w*k.out1,k.in1=j,k.out2=k.out1+.3*k.in2+w*k.out2,k.in2=k.out1,k.out3=k.out2+.3*k.in3+w*k.out3,k.in3=k.out2,k.out4=k.out3+.3*k.in4+w*k.out4,k.in4=k.out3,m[b]=k.out4;k.unscaledValue=k.out4,d.mulAdd(a),k.value=f.ugen.lastOutputValue(a,m)},d.onInputChanged(),d},f.ugenDefaults("flock.ugen.filter.moog",{rate:"audio",inputs:{cutoff:3e3,resonance:3.99,source:null},ugenOptions:{model:{in1:0,in2:0,in3:0,in4:0,out1:0,out2:0,out3:0,out4:0,prevCutoff:void 0,prevResonance:void 0,f:void 0,fSq:void 0,fSqSq:void 0,oneMinusF:void 0,fb:void 0,unscaledValue:0,value:0},strideInputs:["source","cutoff","resonance"]}}),f.ugen.delay=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.model,g=d.inputs,h=d.output,i=g.source.output,j=g.time.output[0],k=d.delayBuffer;for(j!==e.time&&(e.time=j,e.delaySamps=j*d.model.sampleRate),b=0;a>b;b++)e.pos>=e.delaySamps&&(e.pos=0),h[b]=c=k[e.pos],k[e.pos]=i[b],e.pos++;e.unscaledValue=c,d.mulAdd(a),e.value=f.ugen.lastOutputValue(a,h)},d.onInputChanged=function(a){if(f.onMulAddInputChanged(d),!a||"maxTime"===a){var b=d.model.sampleRate*d.inputs.maxTime.output[0];d.delayBuffer=new Float32Array(b)}},d.onInputChanged(),d},f.ugenDefaults("flock.ugen.delay",{rate:"audio",inputs:{maxTime:1,time:1,source:null},ugenOptions:{model:{pos:0,unscaledValue:0,value:0}}}),f.ugen.delay1=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.model,g=d.inputs,h=d.output,i=g.source.output,j=e.prevVal;for(b=0;a>b;b++)h[b]=c=j,j=i[b];e.prevVal=j,e.unscaledValue=c,d.mulAdd(a),e.value=f.ugen.lastOutputValue(a,h)},d.onInputChanged=function(){f.onMulAddInputChanged(d)},d.onInputChanged(),d},f.ugenDefaults("flock.ugen.delay1",{rate:"audio",inputs:{source:null},ugenOptions:{model:{prevVal:0,unscaledValue:0,value:0}}}),f.ugen.freeverb=function(a,b,c){var d=f.ugen(a,b,c);return d.tunings=d.options.tunings,d.allpassTunings=d.options.allpassTunings,d.gen=function(a){var b,c,e,g=d.model,h=d.inputs,i=d.output,j=h.source.output,k=h.mix.output[0],l=1-k,m=h.room.output[0],n=.28*m+.7,o=h.damp.output[0],p=.4*o,q=1-p;for(b=0;a>b;b++){var r=j[b],s=.015*r;for(c=0;c<d.buffers_a.length;c++)++d.bufferindices_a[c]===d.allpassTunings[c]&&(d.bufferindices_a[c]=0),d.readsamp_a[c]=d.buffers_a[c][d.bufferindices_a[c]];for(c=0;c<d.buffers_c.length;c++){++d.bufferindices_c[c]===d.tunings[c]&&(d.bufferindices_c[c]=0);var t=d.bufferindices_c[c],u=d.buffers_c[c][t];d.filterx_c[c]=q*d.filtery_c[c]+p*d.filterx_c[c],d.buffers_c[c][t]=s+n*d.filterx_c[c],d.filtery_c[c]=u}var v=d.filtery_c[6]+d.filtery_c[7];d.buffers_a[3][d.bufferindices_a[3]]=.5*d.filterx_a[3]+d.filtery_c[0]+(d.filtery_c[1]+d.filtery_c[2])+(d.filtery_c[3]+d.filtery_c[4]+(d.filtery_c[5]+v)),d.filterx_a[3]=d.readsamp_a[3],d.filtery_a[3]=d.filterx_a[3]-(d.filtery_c[0]+d.filtery_c[1]+(d.filtery_c[2]+d.filtery_c[3])+(d.filtery_c[4]+d.filtery_c[5]+v)),d.buffers_a[2][d.bufferindices_a[2]]=.5*d.filterx_a[2]+d.filtery_a[3],d.filterx_a[2]=d.readsamp_a[2],d.filtery_a[2]=d.filterx_a[2]-d.filtery_a[3],d.buffers_a[1][d.bufferindices_a[1]]=.5*d.filterx_a[1]+d.filtery_a[2],d.filterx_a[1]=d.readsamp_a[1],d.filtery_a[1]=d.filterx_a[1]-d.filtery_a[2],d.buffers_a[0][d.bufferindices_a[0]]=.5*d.filterx_a[0]+d.filtery_a[1],d.filterx_a[0]=d.readsamp_a[0],d.filtery_a[0]=d.filterx_a[0]-d.filtery_a[1],e=l*r+k*d.filtery_a[0],i[b]=e}g.unscaledValue=e,d.mulAdd(a),g.value=f.ugen.lastOutputValue(a,i)},d.initDelayLines=function(){d.buffers_c=new Array(8),d.bufferindices_c=new Int32Array(8),d.filterx_c=new Float32Array(8),d.filtery_c=new Float32Array(8);var a,b,c=d.model.spread;for(a=0;a<d.buffers_c.length;a++)for(d.buffers_c[a]=new Float32Array(d.tunings[a]+c),d.bufferindices_c[a]=0,d.filterx_c[a]=0,d.filtery_c[a]=0,b=0;b<d.tunings[a]+c;b++)d.buffers_c[a][b]=0;for(d.buffers_a=new Array(4),d.bufferindices_a=new Int32Array(4),d.filterx_a=new Float32Array(4),d.filtery_a=new Float32Array(4),d.readsamp_a=new Float32Array(4),a=0;a<d.buffers_a.length;a++){for(d.bufferindices_a[a]=0,d.filterx_a[a]=0,d.filtery_a[a]=0,d.readsamp_a[a]=0,b=0;b<d.allpassTunings.length;b++)d.allpassTunings[b]+=c;for(d.buffers_a[a]=new Float32Array(d.allpassTunings[a]),b=0;b<d.allpassTunings[a];b++)d.buffers_a[a][b]=0}},d.init=function(){d.initDelayLines(),d.onInputChanged()},d.init(),d},f.ugenDefaults("flock.ugen.freeverb",{rate:"audio",inputs:{source:null,mix:.33,room:.5,damp:.5},ugenOptions:{model:{spread:0,unscaledValue:0,value:0},tunings:[1116,1188,1277,1356,1422,1491,1557,1617],allpassTunings:[556,441,341,225]}}),f.ugen.decay=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.model,g=d.inputs,h=d.output,i=g.source.output,j=g.time.output[0];if(j!==e.time&&(e.time=j,e.coeff=0===j?0:Math.exp(f.LOG001/(j*d.model.sampleRate))),0===e.coeff)for(b=0;a>b;b++)h[b]=c=i[b];else for(b=0;a>b;b++)e.lastSamp=i[b]+e.coeff*e.lastSamp,h[b]=c=e.lastSamp;e.unscaledValue=c,d.mulAdd(a),e.value=f.ugen.lastOutputValue(a,h)},d.onInputChanged(),d},f.ugenDefaults("flock.ugen.decay",{rate:"audio",inputs:{source:null,time:1},ugenOptions:{model:{time:0,lastSamp:0,coeff:0,value:0}}})}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";f.ugen.gate=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h=d.model,i=h.strides,j=d.output,k=d.inputs,l=k.source.output,m=k.sideChain.output,n=i.sideChain,o=k.threshold.output,p=i.threshold,q=d.options.holdLastValue,r=h.lastValue;for(b=c=e=0;a>b;b++,c+=n,e+=p)m[c]>=o[e]?j[b]=g=r=l[b]:j[b]=g=q?r:0;h.lastValue=r,h.unscaledValue=g,d.mulAdd(a),h.value=f.ugen.lastOutputValue(a,j)},d.onInputChanged=function(){d.inputs.sideChain||(d.inputs.sideChain=d.inputs.source),f.onMulAddInputChanged(d),d.calculateStrides()},d.onInputChanged(),d},f.ugenDefaults("flock.ugen.gate",{rate:"audio",inputs:{source:null,sideChain:null,threshold:Number.MIN_VALUE,mul:null,add:null},ugenOptions:{model:{unscaledValue:0,value:0,lastValue:0},holdLastValue:!1,strideInputs:["sideChain","threshold"]}}),f.ugen.timedGate=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h=d.model,i=d.output,j=d.inputs.trigger.output,k=d.inputs.duration.output[0];for(k!==h.duration&&(h.duration=k,h.durationSamps=Math.floor(k*h.sampleRate)),c=e=0;a>c;c++,e+=h.strides.trigger)b=j[e],b>0&&h.prevTrigger<=0?(g=d.options.resetOnTrigger&&h.sampsRemaining>0?0:1,h.sampsRemaining=h.durationSamps):g=h.sampsRemaining>0?1:0,i[c]=g,h.sampsRemaining--,h.prevTrigger=b;h.unscaledValue=g,d.mulAdd(a),h.value=f.ugen.lastOutputValue(a,i)},d.init=function(){d.onInputChanged()},d.init(),d},f.ugenDefaults("flock.ugen.timedGate",{rate:"audio",inputs:{trigger:0,duration:1},ugenOptions:{model:{unscaledValue:0,value:0,prevTrigger:0,sampsRemaining:0,durationSamps:0,duration:0},resetOnTrigger:!0,strideInputs:["trigger"]}}),f.ugen.latch=function(a,b,c){var d=f.ugen(a,b,c);return d.arGen=function(a){var b,c,e,g,h=d.model,i=d.inputs,j=i.source.output,k=i.trigger,l=h.strides.source,m=d.output;for(void 0===h.holdVal&&(h.holdVal=j[0]),b=0,c=0;a>b;b++,c+=l)e=k.output[b],e>0&&h.prevTrig<=0&&(h.holdVal=j[c]),g=h.holdVal,m[b]=g,h.prevTrig=e;h.unscaledValue=g,d.mulAdd(a),h.value=f.ugen.lastOutputValue(a,m)},d.krGen=function(a){var b,c=d.model,e=d.output,g=d.inputs.trigger.output[0];for((void 0===c.holdVal||g>0&&c.prevTrig<=0)&&(c.holdVal=d.inputs.source.output[0]),c.prevTrig=g,b=0;a>b;b++)e[b]=c.holdVal;c.unscaledValue=c.holdVal,d.mulAdd(a),c.value=f.ugen.lastOutputValue(a,e)},d.onInputChanged=function(){d.calculateStrides(),d.gen=d.inputs.trigger.rate===f.rates.AUDIO?d.arGen:d.krGen,f.onMulAddInputChanged(d)},d.onInputChanged(),d},f.ugenDefaults("flock.ugen.latch",{rate:"audio",inputs:{source:null,trigger:0,mul:null,add:null},ugenOptions:{strideInputs:["source"],model:{prevTrig:0,unscaledValue:0,value:0}}})}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";f.ugen.triggerGrains=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h,i,j,k=d.model,l=d.inputs,m=d.output,n=l.channel.output[0],o=d.buffer.data.channels[n],p=d.buffer.format.sampleRate,q=l.dur.output[0],r=l.amp.output,s=l.centerPos.output,t=l.trigger.output,u=l.speed.output,v=d.options.grainEnv,w=a-1,x=0,y=0,z=0,A=0;for(b=0;a>b;b++){if(t[y]>0&&k.prevTrigger<=0&&k.activeGrains.length<k.maxNumGrains){for(g=k.freeGrains.pop(),g.numSamps=k.sampleRate*q,g.centerIdx=g.numSamps/2*k.stepSize,g.envScale=d.options.grainEnv.length/g.numSamps,g.sampIdx=0,g.amp=r[z],h=s[x]*p-g.centerIdx;0>h;)h+=o.length;g.readPos=h,g.writePos=b,g.speed=u[A],k.activeGrains.push(g)}k.prevTrigger=t[y],m[b]=0,x+=k.strides.centerPos,y+=k.strides.trigger,z+=k.strides.amp,A+=k.strides.speed}for(c=0;c<k.activeGrains.length;){for(g=k.activeGrains[c],e=g.writePos;e<Math.min(e+(g.numSamps-g.sampIdx),a);e++)i=d.interpolate(g.readPos,o),j=f.interpolate.linear(g.sampIdx*g.envScale,v),m[e]+=i*j*g.amp,g.readPos=(g.readPos+k.stepSize*g.speed)%o.length,g.sampIdx++;g.sampIdx>=g.numSamps?(k.freeGrains.push(g),k.activeGrains.splice(c,1)):(c++,g.writePos=e%a)}k.unscaledValue=m[w],d.mulAdd(a),k.value=m[w]},d.onBufferReady=function(){var a=d.model;a.stepSize=d.buffer.format.sampleRate/a.sampleRate},d.onInputChanged=function(a){d.onBufferInputChanged(a),d.calculateStrides(),f.onMulAddInputChanged(d)},d.allocateGrains=function(a){a=a||d.model.maxNumGrains;for(var b=0;a>b;b++)d.model.freeGrains.push({numSamps:0,centerIdx:0,envScale:0,sampIdx:0,amp:0,readPos:0,writePos:0,speed:0})},d.init=function(){f.ugen.buffer(d),d.allocateGrains(),d.initBuffer(),d.onInputChanged()},d.init(),d},f.ugenDefaults("flock.ugen.triggerGrains",{rate:"audio",inputs:{centerPos:0,channel:0,amp:1,dur:.1,speed:1,trigger:0,buffer:null,mul:null,add:null},ugenOptions:{grainEnv:f.fillTable(8192,f.tableGenerators.hann),model:{unscaledValue:0,value:0,maxNumGrains:512,activeGrains:[],freeGrains:[],env:null,strides:{}},strideInputs:["centerPos","trigger","amp","speed"],interpolation:"cubic"}}),f.ugen.granulator=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h,i,j,k,l=d.model,m=d.options,n=d.inputs,o=d.output,p=d.delayLine,q=n.grainDur.output[0],r=n.delayDur.output[0],s=n.numGrains.output[0],t=n.source.output,u=m.maxDelayDur,v=m.grainEnv;
for(l.delayDur!==r&&(l.delayDur=r,r>u&&(r=u),l.delayLength=r*l.sampleRate|0,l.writePos=l.writePos%l.delayLength),l.grainDur!==q&&(l.grainDur=q,l.grainLength=l.sampleRate*l.grainDur|0,l.envScale=v.length/l.grainLength),s=s>m.maxNumGrains?m.maxNumGrains:Math.round(s),b=0;a>b;b++){for(p[l.writePos]=t[b],l.writePos=++l.writePos%l.delayLength,e=0,c=0;s>c;c++)g=l.grainIdx[c],h=l.delayLineIdx[c],g>l.grainLength&&(g=0,h=Math.random()*l.delayLength|0),i=p[h],j=g*l.envScale,k=f.interpolate.linear(j,v),e+=i*k,l.delayLineIdx[c]=++h%l.delayLength,l.grainIdx[c]=++g;e/=s,o[b]=e}l.unscaledValue=e,d.mulAdd(a),l.value=f.ugen.lastOutputValue(a,o)},d.initGrains=function(){for(var a=d.model,b=0;b<d.options.maxNumGrains;b++)a.grainIdx[b]=0,a.delayLineIdx[b]=Math.random()*a.delayLength},d.init=function(){var a=d.model,b=d.options,c=b.maxDelayDur*a.sampleRate|0;d.delayLine=new Float32Array(c),a.delayLength=c,a.delayLineIdx=new Uint32Array(b.maxNumGrains),a.grainIdx=new Uint32Array(b.maxNumGrains),d.initGrains(),d.onInputChanged()},d.init(),d},f.ugenDefaults("flock.ugen.granulator",{rate:"audio",inputs:{source:null,grainDur:.1,delayDur:1,numGrains:5,mul:null,add:null},ugenOptions:{maxNumGrains:512,maxDelayDur:30,grainEnv:f.fillTable(8192,f.tableGenerators.sinWindow),model:{unscaledValue:0,value:0,grainLength:0,writePos:0}}})}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";f.ugen.amplitude=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g=d.model,h=d.inputs.source.output,i=d.output,j=g.attackTime,k=d.inputs.attack.output[0],l=g.releaseTime,m=d.inputs.release.output[0],n=g.prevVal,o=g.attackCoef,p=g.releaseCoef;for(k!==j&&(g.attackTime=k,o=g.attackCoef=0===k?0:Math.exp(f.LOG01/(k*g.sampleRate))),m!==l&&(g.releaseTime=m,p=g.releaseCoef=0===m?0:Math.exp(f.LOG01/(m*g.sampleRate))),b=0;a>b;b++)c=Math.abs(h[b]),e=n>c?p:o,i[b]=n=c+(n-c)*e;g.unscaledValue=g.prevVal=n,d.mulAdd(a),g.value=f.ugen.lastOutputValue(a,i)},d.onInputChanged(),d},f.ugenDefaults("flock.ugen.amplitude",{rate:"audio",inputs:{source:null,attack:.01,release:.01,mul:null,add:null},ugenOptions:{model:{prevVal:0,unscaledValue:0,value:0}}})}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";var a=f.requireModule("webarraymath","ArrayMath");f.ugen.math=function(b,c,d){var e=f.ugen(b,c,d);return e.expandedRight=new Float32Array(e.options.audioSettings.blockSize),e.krSourceKrInputGen=function(){var b=e.model,c=e.activeInput,d=e.inputs[c],g=e.output,h=e.inputs.source.output[0],i=f.fillBufferWithValue(e.expandedRight,d.output[0]);a[c](g,h,i),b.value=b.unscaledValue=g[g.length-1]},e.krSourceArInputGen=function(){var b=e.model,c=e.activeInput,d=e.inputs[c],f=e.output,g=e.inputs.source.output[0],h=d.output;a[c](f,g,h),b.value=b.unscaledValue=f[f.length-1]},e.arSourceKrInputGen=function(){var b=e.model,c=e.activeInput,d=e.inputs[c],g=e.output,h=e.inputs.source.output,i=f.fillBufferWithValue(e.expandedRight,d.output[0]);a[c](g,h,i),b.value=b.unscaledValue=g[g.length-1]},e.arSourceArInputGen=function(){var b=e.model,c=e.activeInput,d=e.inputs[c],f=e.output,g=e.inputs.source.output,h=d.output;a[c](f,g,h),b.value=b.unscaledValue=f[f.length-1]},e.onInputChanged=function(){var a,b,c,d=Object.keys(e.inputs);for(a=0;a<d.length;a++)if(b=d[a],"source"!==b){e.activeInput=b,c="audio"===e.inputs[b].rate,e.gen="audio"===e.inputs.source.rate?c?e.arSourceArInputGen:e.arSourceKrInputGen:c?e.krSourceArInputGen:e.krSourceKrInputGen;break}},e.init=function(){if("undefined"==typeof a)throw new Error("ArrayMath is undefined. Please include webarraymath.js to use the flock.math unit generator.");e.onInputChanged()},e.init(),e},f.ugenDefaults("flock.ugen.math",{rate:"audio",inputs:{source:null}}),f.ugen.sum=function(a,b,c){var d=f.ugen(a,b,c);return d.copyGen=function(a){var b,c,e=d.model,g=d.output,h=d.inputs.sources.output;for(b=0;a>b;b++)c=h[b],g[b]=c;e.unscaledValue=c,d.mulAdd(a),e.value=f.ugen.lastOutputValue(a,g)},d.sumGen=function(a){var b,c,e,g=d.model,h=d.inputs.sources,i=d.output;for(f.clearBuffer(i),c=0;c<h.length;c++)for(e=h[c].output,b=0;a>b;b++)i[b]+=e[b];g.unscaledValue=f.ugen.lastOutputValue(a,i),d.mulAdd(a),g.value=f.ugen.lastOutputValue(a,i)},d.onInputChanged=function(){"number"==typeof d.inputs.sources.length?d.gen=d.sumGen:d.gen=d.copyGen,f.onMulAddInputChanged(d)},d.onInputChanged(),d},f.ugenDefaults("flock.ugen.sum",{rate:"audio",inputs:{sources:null}})}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";f.ugen.midiFreq=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g=d.model,h=g.a4,i=h.freq,j=h.noteNum,k=g.notesPerOctave,l=d.inputs.note.output,m=d.output;for(b=0,c=0;a>b;b++,c+=g.strides.note)m[b]=e=f.midiFreq(l[c],i,j,k);g.unscaledValue=e,d.mulAdd(a),g.value=f.ugen.lastOutputValue(a,m)},d.init=function(){d.model.octaveScale=1/d.model.notesPerOctave,d.onInputChanged()},d.init(),d},f.ugenDefaults("flock.ugen.midiFreq",{rate:"control",inputs:{note:69},ugenOptions:{model:{unscaledValue:0,value:0,a4:{noteNum:69,freq:440},notesPerOctave:12},strideInputs:["note"]}}),f.ugen.midiAmp=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g=d.model,h=d.inputs.velocity.output,i=d.output;for(b=0,c=0;a>b;b++,c+=g.strides.velocity)i[b]=e=h[c]/127;g.unscaledValue=e,d.mulAdd(a),g.value=f.ugen.lastOutputValue(a,i)},d.init=function(){d.onInputChanged()},d.init(),d},f.ugenDefaults("flock.ugen.midiAmp",{rate:"control",inputs:{velocity:0},ugenOptions:{model:{unscaledValue:0,value:0},strideInputs:["velocity"]}})}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";f.ugen.pan2=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h=d.model,i=d.output,j=i[0],k=i[1],l=d.inputs,m=l.source.output,n=l.pan.output;for(b=0,c=0;a>b;b++,c+=h.strides.pan)e=m[b],g=.5*n[c]+.5,k[b]=e*Math.sin(g*f.HALFPI),j[b]=e*Math.cos(g*f.HALFPI);var o=a-1;h.value[0]=i[0][o],h.value[1]=i[1][o]},d.init=function(){d.onInputChanged(),d.model.unscaledValue=d.model.value},d.init(),d},f.ugenDefaults("flock.ugen.pan2",{rate:"audio",inputs:{source:null,pan:0},ugenOptions:{model:{unscaledValue:[0,0],value:[0,0]},tags:["flock.ugen.multiChannelOutput"],strideInputs:["pan"],numOutputs:2}})}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";f.ugen.osc=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h,i=d.model,j=d.inputs,k=j.freq.output,l=j.phase.output,m=j.table,n=i.tableLen,o=i.tableIncHz,p=i.tableIncRad,q=d.output,r=i.phase;for(b=0,c=0,e=0;a>b;b++,c+=i.strides.phase,e+=i.strides.freq)g=r+l[c]*p,g>=n?g-=n:0>g&&(g+=n),q[b]=h=d.interpolate(g,m),r+=k[e]*o,r>=n?r-=n:0>r&&(r+=n);i.phase=r,i.unscaledValue=h,d.mulAdd(a),i.value=f.ugen.lastOutputValue(a,q)},d.onInputChanged=function(a){if(f.ugen.osc.onInputChanged(d),!a||"table"===a){var b=d.model,c=d.inputs.table;c.length<1&&(c=d.inputs.table=f.ugen.osc.emptyTable),b.tableLen=c.length,b.tableIncHz=b.tableLen/b.sampleRate,b.tableIncRad=b.tableLen/f.TWOPI}},d.onInputChanged(),d},f.ugen.osc.emptyTable=new Float32Array([0,0,0]),f.ugen.osc.onInputChanged=function(a){a.calculateStrides(),f.onMulAddInputChanged(a)},f.ugenDefaults("flock.ugen.osc",{rate:"audio",inputs:{freq:440,phase:0,table:[],mul:null,add:null},ugenOptions:{interpolation:"linear",model:{phase:0,unscaledValue:0,value:0},strideInputs:["freq","phase"]},tableSize:8192}),f.ugen.osc.define=function(a,b){var c=a.lastIndexOf("."),e=a.substring(0,c),g=a.substring(c+1),h=f.get(e);h[g]=function(a,c,e){var g=f.ugenDefaults("flock.ugen.osc"),h=d.merge(null,g,e),i=h.tableSize;return a.table=f.fillTable(i,b),f.ugen.osc(a,c,e)},f.ugenDefaults(a,f.ugenDefaults("flock.ugen.osc"))},f.ugen.osc.define("flock.ugen.sinOsc",f.tableGenerators.sin),f.ugen.osc.define("flock.ugen.triOsc",f.tableGenerators.tri),f.ugen.osc.define("flock.ugen.sawOsc",f.tableGenerators.saw),f.ugen.osc.define("flock.ugen.squareOsc",f.tableGenerators.square),f.ugen.sin=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h=d.model,i=d.inputs.freq.output,j=d.inputs.phase.output,k=d.output,l=h.phase,m=h.sampleRate;for(b=0,c=0,e=0;a>b;b++,c+=h.strides.phase,e+=h.strides.freq)k[b]=g=Math.sin(l+j[c]),l+=i[e]/m*f.TWOPI;h.phase=l,h.unscaledValue=g,d.mulAdd(a),h.value=f.ugen.lastOutputValue(a,k)},d.onInputChanged=function(){f.ugen.osc.onInputChanged(d)},d.onInputChanged(),d},f.ugenDefaults("flock.ugen.sin",{rate:"audio",inputs:{freq:440,phase:0,mul:null,add:null},ugenOptions:{model:{phase:0,unscaledValue:0,value:0},strideInputs:["freq","phase"]}}),f.ugen.lfSaw=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g=d.model,h=d.inputs.freq.output,i=d.output,j=g.scale,k=d.inputs.phase.output[0],l=g.phase;for(b=0,c=0;a>b;b++,c+=g.strides.freq)i[b]=e=l+k,l+=h[c]*j,l>=1?l-=2:-1>=l&&(l+=2);g.phase=l,g.unscaledValue=e,d.mulAdd(a),g.value=f.ugen.lastOutputValue(a,i)},d.onInputChanged=function(){var a=d.model;a.freqInc=d.inputs.freq.rate===f.rates.AUDIO?1:0,a.phase=0,d.calculateStrides(),f.onMulAddInputChanged(d)},d.init=function(){d.model.scale=2*(1/d.options.sampleRate),d.onInputChanged()},d.init(),d},f.ugenDefaults("flock.ugen.lfSaw",{rate:"audio",inputs:{freq:440,phase:0,mul:null,add:null},ugenOptions:{model:{phase:0,freqInc:1,unscaledValue:0,value:0},strideInputs:["freq"]}}),f.ugen.lfPulse=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g=d.inputs,h=d.model,i=g.freq.output,j=h.freqInc,k=g.width.output[0],l=d.output,m=h.scale,n=void 0!==h.phase?h.phase:g.phase.output[0];for(b=0,c=0;a>b;b++,c+=j)n>=1?(n-=1,l[b]=e=.5>k?1:-1):l[b]=e=k>n?1:-1,n+=i[c]*m;h.phase=n,h.unscaledValue=e,d.mulAdd(a),h.value=f.ugen.lastOutputValue(a,l)},d.onInputChanged=function(){d.model.freqInc=d.inputs.freq.rate===f.rates.AUDIO?1:0,f.onMulAddInputChanged(d)},d.init=function(){d.model.scale=1/d.options.sampleRate,d.onInputChanged()},d.init(),d},f.ugenDefaults("flock.ugen.lfPulse",{rate:"audio",inputs:{freq:440,phase:0,width:.5,mul:null,add:null},ugenOptions:{model:{phase:0,freqInc:1,unscaledValue:0,value:0}}}),f.ugen.impulse=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g=d.inputs,h=d.model,i=d.output,j=g.freq.output,k=h.strides.freq,l=g.phase.output[0],m=h.phase,n=h.scale;for(m+=l,b=0,c=0;a>b;b++,c+=k)m>=1?(m-=1,e=1):e=0,i[b]=e,m+=j[c]*n;h.phase=m-l,h.unscaledValue=e,d.mulAdd(a),h.value=f.ugen.lastOutputValue(a,i)},d.onInputChanged=function(){d.calculateStrides(),f.onMulAddInputChanged(d)},d.init=function(){d.model.scale=1/d.model.sampleRate,d.onInputChanged()},d.init(),d},f.ugenDefaults("flock.ugen.impulse",{rate:"audio",inputs:{freq:440,phase:0,mul:null,add:null},ugenOptions:{model:{phase:0,scale:0,unscaledValue:0,value:0},strideInputs:["freq"]}})}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";var a=f.requireModule("Random");f.ugen.dust=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(b){var c,e,g,h,i,j=d.model,k=d.output,l=a.density.output[0];for(l!==j.density?(j.density=l,c=j.threshold=l*j.sampleDur,e=j.scale=c>0?1/c:0):(c=j.threshold,e=j.scale),i=0;b>i;i++)g=Math.random(),h=c>g?g*e:0,k[i]=h;j.unscaledValue=h,d.mulAdd(b),j.value=f.ugen.lastOutputValue(b,k)},d.onInputChanged(),d},f.ugenDefaults("flock.ugen.dust",{rate:"audio",inputs:{density:1,mul:null,add:null},ugenOptions:{model:{density:0,scale:0,threshold:0,unscaledValue:0,value:0}}}),f.ugen.whiteNoise=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.model,g=d.output;for(b=0;a>b;b++)g[b]=c=f.randomAudioValue();e.unscaledValue=c,d.mulAdd(a),e.value=f.ugen.lastOutputValue(a,g)},d.onInputChanged(),d},f.ugenDefaults("flock.ugen.whiteNoise",{rate:"audio",inputs:{mul:null,add:null}}),f.ugen.pinkNoise=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h=d.model,i=h.state,j=d.a,k=d.p,l=h.offset,m=d.output;for(b=0;a>b;b++){for(g=0,c=0;c<i.length;c++)e=Math.random(),i[c]=k[c]*(i[c]-e)+e,g+=j[c]*i[c];g=2*g-l,m[b]=g}h.unscaledValue=g,d.mulAdd(a),h.value=f.ugen.lastOutputValue(a,m)},d.init=function(){d.a=new Float32Array(d.options.coeffs.a),d.p=new Float32Array(d.options.coeffs.p),d.model.state=new Float32Array(d.a.length);for(var a=0;a<d.a.length;a++)d.model.offset+=d.a[a];d.onInputChanged()},d.init(),d},f.ugenDefaults("flock.ugen.pinkNoise",{rate:"audio",inputs:{mul:null,add:null},ugenOptions:{model:{state:0,unscaledValue:0,value:0,offset:0},coeffs:{a:[.02109238,.07113478,.68873558],p:[.319,.7756,.9613]}}}),f.ugen.lfNoise=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(b){var c,e,g=d.model,h=a.freq.output[0],i=b,j=d.output,k=0;h=h>.001?h:.001;do for(g.counter<=0&&(g.counter=g.sampleRate/h,g.counter=g.counter>1?g.counter:1,"linear"===d.options.interpolation?(g.start=g.unscaledValue=g.end,g.end=Math.random(),g.ramp=g.ramp=(g.end-g.start)/g.counter):(g.start=g.unscaledValue=Math.random(),g.ramp=0)),c=i<g.counter?i:g.counter,i-=c,g.counter-=c,e=0;c>e;e++)j[k]=g.unscaledValue,g.unscaledValue+=g.ramp,k++;while(i);d.mulAdd(b),g.value=f.ugen.lastOutputValue(b,j)},d.input=function(){d.model.end=Math.random(),d.onInputChanged()},d.input(),d},f.ugenDefaults("flock.ugen.lfNoise",{rate:"audio",inputs:{freq:440,mul:null,add:null},ugenOptions:{model:{counter:0,level:0,unscaledValue:0,value:0}}}),f.ugen.random=function(b,c,d){var e=f.ugen(b,c,d);return e.gen=function(a){var b,c,d=e.model,g=e.generator,h=e.output;for(b=0;a>b;b++)h[b]=c=g.uniform(-1,1);d.unscaledValue=c,e.mulAdd(a),d.value=f.ugen.lastOutputValue(a,h)},e.onInputChanged=function(a){"seed"===a&&e.initGenerator(),f.onMulAddInputChanged(e)},e.initGenerator=function(){var b=e.inputs.seed;e.generator=b?new a(b):new a},e.init=function(){e.initGenerator(),e.calculateStrides(),e.onInputChanged()},e.init(),e},f.ugenDefaults("flock.ugen.random",{rate:"audio",inputs:{seed:null,mul:null,add:null}}),f.ugen.random.exponential=function(a,b,c){var d=f.ugen.random(a,b,c);return d.gen=function(a){var b,c,e,g=d.model,h=d.generator,i=d.output,j=d.inputs.lambda.output,k=d.model.strides.lambda;for(b=c=0;a>b;b++,c+=k)i[b]=e=h.exponential(j[c]);g.unscaledValue=e,d.mulAdd(a),g.value=f.ugen.lastOutputValue(a,i)},d},f.ugenDefaults("flock.ugen.random.exponential",{rate:"audio",inputs:{seed:null,lambda:1,mul:null,add:null},ugenOptions:{strideInputs:["lambda"]}}),f.ugen.random.gamma=function(a,b,c){var d=f.ugen.random(a,b,c);return d.gen=function(a){var b,c,e,g,h=d.model,i=d.inputs,j=d.generator,k=d.output,l=h.strides.alpha,m=i.alpha.output,n=h.strides.beta,o=i.beta.output;for(b=c=e=0;a>b;b++,c+=l,e+=n)k[b]=g=j.gamma(m[c],o[e]);h.unscaledValue=g,d.mulAdd(a),h.value=f.ugen.lastOutputValue(a,k)},d},f.ugenDefaults("flock.ugen.random.gamma",{rate:"audio",inputs:{seed:null,alpha:1,beta:2,mul:null,add:null},ugenOptions:{strideInputs:["alpha","beta"]}}),f.ugen.random.normal=function(a,b,c){var d=f.ugen.random(a,b,c);return d.gen=function(a){var b,c,e,g,h=d.model,i=d.output,j=d.inputs,k=d.generator,l=h.strides.mu,m=j.mu.output,n=h.strides.sigma,o=j.sigma.output;for(b=c=e=0;a>b;b++,c+=l,e+=n)i[b]=g=k.normal(m[c],o[e]);h.unscaledValue=g,d.mulAdd(a),h.value=f.ugen.lastOutputValue(a,i)},d},f.ugenDefaults("flock.ugen.random.normal",{rate:"audio",inputs:{seed:null,mu:0,sigma:1,mul:null,add:null},ugenOptions:{strideInputs:["mu","sigma"]}}),f.ugen.random.pareto=function(a,b,c){var d=f.ugen.random(a,b,c);return d.gen=function(a){var b,c,e,g=d.model,h=d.generator,i=d.output,j=d.model.strides.alpha,k=d.inputs.alpha.output;for(b=c=0;a>b;b++,c+=j)i[b]=e=h.pareto(k[c]);g.unscaledValue=e,d.mulAdd(a),g.value=f.ugen.lastOutputValue(a,i)},d},f.ugenDefaults("flock.ugen.random.pareto",{rate:"audio",inputs:{seed:null,alpha:5,mul:null,add:null},ugenOptions:{strideInputs:["alpha"]}}),f.ugen.random.triangular=function(a,b,c){var d=f.ugen.random(a,b,c);return d.gen=function(a){var b,c,e,g=d.model,h=d.generator,i=d.output,j=d.model.strides.mode,k=d.inputs.mode.output;for(b=c=0;a>b;b++,c+=j)i[b]=e=h.triangular(-1,1,k[c]);g.unscaledValue=e,d.mulAdd(a),g.value=f.ugen.lastOutputValue(a,i)},d},f.ugenDefaults("flock.ugen.random.triangular",{rate:"audio",inputs:{seed:null,mode:.5,mul:null,add:null},ugenOptions:{strideInputs:["mode"]}}),f.ugen.random.weibull=function(a,b,c){var d=f.ugen.random(a,b,c);return d.gen=function(a){var b,c,e,g,h=d.model,i=d.inputs,j=d.generator,k=d.output,l=h.strides.alpha,m=i.alpha.output,n=h.strides.beta,o=i.beta.output;for(b=c=e=0;a>b;b++,c+=l,e+=n)k[b]=g=j.weibull(m[c],o[e]);h.unscaledValue=g,d.mulAdd(a),h.value=f.ugen.lastOutputValue(a,k)},d},f.ugenDefaults("flock.ugen.random.weibull",{rate:"audio",inputs:{seed:null,alpha:1,beta:1,mul:null,add:null},ugenOptions:{strideInputs:["alpha","beta"]}})}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";f.ugen.change=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){for(var b,c=d.model,e=d.inputs.initial.output,f=c.strides.initial,g=d.inputs.target.output,h=c.strides.target,i=d.output,j=c.samplesLeft,k=c.crossfadeLevel,l=0,m=0,n=0;a>l;l++,m+=f,n+=h)j>0?(b=e[m],j--):k>0?(b=e[m]*k+g[n]*(1-k),k-=c.crossfadeStepSize):b=g[n],i[l]=b;c.samplesLeft=j,c.crossfadeLevel=k,c.value=c.unscaledValue=b},d.onInputChanged=function(a){var b=d.model,c=d.inputs;"time"!==a&&a||(b.samplesLeft=Math.round(c.time.output[0]*b.sampleRate)),"crossfade"!==a&&a||(b.crossfadeStepSize=1/Math.round(c.crossfade.output[0]*b.sampleRate),b.crossfadeLevel=c.crossfade.output[0]>0?1:0),d.calculateStrides()},d.onInputChanged(),d},f.ugenDefaults("flock.ugen.change",{rate:"audio",inputs:{initial:0,target:0,time:0,crossfade:0},ugenOptions:{model:{samplesLeft:0,crossfadeStepSize:0,crossfadeLevel:0,unscaledValue:0,value:0},strideInputs:["initial","target"]}}),f.ugen.listItem=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h=d.model,i=d.output,j=d.inputs.list,k=j.length-1,l=d.inputs.index.output;for(b=0,e=0;a>b;b++,e+=h.strides.index)g=Math.round(l[e]*k),g=Math.max(0,g),g=Math.min(g,k),c=j[g],i[b]=c;h.unscaledValue=c,d.mulAdd(a),h.value=f.ugen.lastOutputValue(a,i)},d.onInputChanged(),d},f.ugenDefaults("flock.ugen.listItem",{rate:"control",inputs:{index:0,list:[0]},ugenOptions:{strideInputs:["index"]}}),f.ugen.sequence=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g=d.inputs.values,h=d.inputs,i=h.freq.output,j=h.loop.output[0],k=d.model,l=k.scale,m=d.output,n=h.start?Math.round(h.start.output[0]):0,o=h.end?Math.round(h.end.output[0]):g.length;for(void 0===k.unscaledValue&&(b=g[n],k.unscaledValue=void 0===b?0:b),void 0===k.nextIdx&&(k.nextIdx=n),c=0,e=0;a>c;c++,e+=k.strides.freq){if(k.nextIdx>=o){if(!(j>0)){m[c]=k.unscaledValue;continue}k.nextIdx=n}m[c]=k.unscaledValue=g[k.nextIdx],k.phase+=i[e]*l,k.phase>=1&&(k.phase=0,k.nextIdx++)}d.mulAdd(a),k.value=f.ugen.lastOutputValue(a,m)},d.onInputChanged=function(){d.model.scale=d.rate!==f.rates.DEMAND?d.model.sampleDur:1,d.inputs.values&&0!==d.inputs.values.length||!d.inputs.list||(f.log.warn("The 'list' input to flock.ugen.sequence is deprecated. Use 'values' instead."),d.inputs.values=d.inputs.list),d.inputs.values||(d.inputs.values=[]),d.calculateStrides(),f.onMulAddInputChanged(d)},d.init=function(){d.onInputChanged()},d.init(),d},f.ugenDefaults("flock.ugen.sequence",{rate:"control",inputs:{start:0,freq:1,loop:0,values:[]},ugenOptions:{model:{unscaledValue:void 0,value:0,phase:0},strideInputs:["freq"]}}),f.ugen.sequencer=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.model,g=d.options,h=g.resetOnNext,i=d.output,j=d.inputs.loop.output[0],k=d.inputs.durations,l=d.inputs.values;for(e.shouldValidateSequences&&(e.shouldValidateSequences=!1,f.ugen.sequencer.validateSequences(k,l)),b=0;a>b;b++)0!==l.length&&0!==k.length?(e.samplesRemaining<=0?e.idx<k.length-1?(e.idx++,c=f.ugen.sequencer.nextStage(k,l,h,e)):j>0?(e.idx=0,c=f.ugen.sequencer.nextStage(k,l,h,e)):c=g.holdLastValue?e.unscaledValue:0:(c=l[e.idx],e.samplesRemaining--),i[b]=c):i[b]=c=0;e.unscaledValue=c,d.mulAdd(a),e.value=f.ugen.lastOutputValue(a,i)},d.onInputChanged=function(a){var b=d.model,c=d.inputs;("durations"===a||c.durations!==b.prevDurations)&&(b.idx=0,f.ugen.sequencer.calcDurationsSamps(c.durations,d.model),f.ugen.sequencer.validateInput("durations",d),b.prevDurations=c.durations),("values"===a||c.values!==b.prevValues)&&(b.idx=0,f.ugen.sequencer.validateInput("values",d),b.prevValues=c.values),d.model.shouldValidateSequences=!0,f.onMulAddInputChanged(d)},d.init=function(){d.onInputChanged()},d.init(),d},f.ugen.sequencer.validateInput=function(a,b){var c=b.inputs[a];c&&f.isIterable(c)||f.fail("No "+a+" array input was specified for flock.ugen.sequencer: "+d.prettyPrintJSON(b.options.ugenDef))},f.ugen.sequencer.validateSequences=function(a,b){a.length!==b.length&&f.fail("Mismatched durations and values array lengths for flock.ugen.sequencer. Durations: "+d.prettyPrintJSON(a)+", values: "+d.prettyPrintJSON(b))},f.ugen.sequencer.calcDurationsSamps=function(a,b){b.samplesRemaining=Math.floor(a[b.idx]*b.sampleRate)},f.ugen.sequencer.nextStage=function(a,b,c,d){return f.ugen.sequencer.calcDurationsSamps(a,d),d.samplesRemaining--,c?0:b[d.idx]},f.ugenDefaults("flock.ugen.sequencer",{rate:"audio",inputs:{durations:[],values:[],loop:0},ugenOptions:{model:{idx:0,samplesRemaining:0,unscaledValue:0,value:0,prevDurations:[],prevValues:[]},resetOnNext:!1,holdLastvalue:!1}})}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";f.ugen.valueChangeTrigger=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,f=d.model,g=d.inputs.source.output,h=d.output;for(b=0,c=0;a>b;b++,c+=f.strides.source)e=g[c],h[b]=e!==f.prevVal?1:0,f.prevVal=e;f.value=f.unscaledValue=e},d.onInputChanged=function(a){d.calculateStrides(),"source"===a&&d.options.triggerOnSetSameValue&&(d.model.prevVal=null)},d.calculateStrides(),d},f.ugenDefaults("flock.ugen.valueChangeTrigger",{rate:"control",inputs:{source:0},ugenOptions:{model:{unscaledValue:0,value:0,prevVal:0},triggerOnSetSameValue:!0,strideInputs:["source"]}}),f.ugen.inputChangeTrigger=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h,i=d.model,j=d.inputs.source.output,k=i.strides.source,l=d.inputs.duration.output,m=i.strides.duration,n=i.prevDur,o=d.output;for(b=c=e=0;a>b;b++,c+=k,e+=m)g=j[c],h=l[e],h!==n&&(i.prevDur=h,i.remainingOpenSamples=g>0?h>0?i.sampleRate*h:1:0),i.remainingOpenSamples>0?(o[b]=g,i.remainingOpenSamples--):o[b]=0;i.value=i.unscaledValue=f.ugen.lastOutputValue(a,o)},d.onInputChanged=function(a){d.calculateStrides(),"source"===a&&(d.model.prevDur=null)},d.calculateStrides(),d},f.ugenDefaults("flock.ugen.inputChangeTrigger",{rate:"control",inputs:{source:0,duration:0},ugenOptions:{model:{unscaledValue:0,value:0,prevDuration:0,remainingOpenSamples:0},strideInputs:["source","duration"]}}),f.ugen.triggerCallback=function(a,b,c){var e=f.ugen(a,b,c);return e.gen=function(a){var b,c,d,f,g,h=e.model,i=e.options,j=e.output,k=e.inputs,l=h.strides.trigger,m=h.strides.source,n=k.trigger.output,o=k.source.output,p=i.callback,q=p.func,r=p.args,s=p["this"],t=h.lastArgIdx,u=h.prevTrig;for(b=c=d=0;a>b;b++,c+=l,d+=m)f=n[c],g=o[d],f>0&&0>=u&&q&&(r[t]=g,q.apply(s,r)),j[b]=g,u=f;h.prevTrig=u,h.value=h.unscaledValue=g},e.onInputChanged=function(){var a=e.options,b=e.model,c=a.callback,f=c.funcName;if(f)c.func=d.getGlobalValue(f);else if(c["this"]&&c.method){if("string"!=typeof c["this"])throw new Error("flock.ugen.triggerCallback doesn't support raw 'this' objects.Use a global key path instead.");c["this"]="string"==typeof c["this"]?d.getGlobalValue(c["this"]):c["this"],c.func=d.get(c["this"],c.method)}b.lastArgIdx=c.args.length,e.calculateStrides()},e.onInputChanged(),e},f.ugenDefaults("flock.ugen.triggerCallback",{rate:"audio",inputs:{source:0,trigger:0},ugenOptions:{model:{unscaledValue:0,value:0,funcName:void 0,lastArgIdx:0},callback:{"this":void 0,method:void 0,func:void 0,args:[]},strideInputs:["source","trigger"]}}),f.ugen.t2a=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(){for(var a,b=d.model,c=d.inputs.source.output[0],e=0|d.inputs.offset.output[0],f=d.output,g=0;g<f.length;g++)f[g]=a=0;c>0&&b.prevTrig<=0&&(f[e]=a=c),b.prevTrig=c,b.value=b.unscaledValue=a},d},f.ugenDefaults("flock.ugen.t2a",{rate:"audio",inputs:{source:null,offset:0},ugenOptions:{model:{prevTrig:0,unscaledValue:0,value:0}}})}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";d.registerNamespace("flock.view"),f.view.scope=function(a,b){var c={model:b||{values:[]},canvas:"string"==typeof a?document.querySelector(a):a};return c.refreshView=function(){var a,b,d,e=c.ctx,f=c.model.height,g=c.model.halfHeight,h=c.model.width,i=c.model.values,j=i.length,k=c.model.scaleX*(h/j);for(e.clearRect(0,0,h,f),e.beginPath(),a=0;j>a;a++)b=a*k,d=i[a]*c.model.scaleY*g+g,e.lineTo(b,d);e.stroke()},c.init=function(){c.ctx=c.canvas.getContext("2d"),c.ctx.fillStyle=c.model.fill||c.ctx.fillStyle,c.ctx.strokeStyle=c.model.strokeColor||c.ctx.strokeStyle,c.ctx.lineWidth=c.model.strokeWidth||c.ctx.lineWidth,c.model.min=c.model.min||-1,c.model.max=c.model.max||1,c.model.height=c.canvas.height,c.model.halfHeight=c.model.height/2,c.model.width=c.canvas.width,c.model.scaleX=c.model.scaleX||c.model.scale||1,c.model.scaleY=c.model.scaleY||c.model.scale||1,c.refreshView()},c.init(),c}}();var d=d||require("infusion"),f=d.registerNamespace("flock");return function(){"use strict";var a=d.registerNamespace("jQuery");d.registerNamespace("flock.ugen"),f.ugen.scope=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=d.inputs.source.output,g=c.spf,h=c.bufIdx,i=c.scope.values;for(b=0;a>b;b++)i[h]=e[b],g>h?h+=1:(h=0,d.scopeView.refreshView());c.bufIdx=h,c.value=c.unscaledValue=f.ugen.lastOutputValue(a,e)},d.onInputChanged=function(){d.output=d.inputs.source.output},d.init=function(){d.model.spf=Math.round(d.model.sampleRate/d.options.fps),d.model.bufIdx=0,d.model.scope=d.options.styles,d.model.scope.values=new Float32Array(d.model.spf),d.scopeView=f.view.scope(d.options.canvas,d.model.scope),d.onInputChanged(),d.scopeView.refreshView()},d.init(),d},f.ugenDefaults("flock.ugen.scope",{rate:"audio",inputs:{source:null},ugenOptions:{fps:60,styles:{strokeColor:"#777777",strokeWidth:1}}}),f.ugen.mouse={},f.ugen.mouse.cursor=function(b,c,d){var e=f.ugen(b,c,d);return e.exponentialGen=function(a){var b,c,d=e.model,g=f.ugen.mouse.cursor.normalize(e.target,d),h=d.movingAvg,i=e.inputs.lag.output[0],j=e.inputs.add.output[0],k=e.inputs.mul.output[0],l=d.lagCoef,m=e.output;for(i!==l&&(l=0===i?0:Math.exp(f.LOG001/(i*d.sampleRate)),d.lagCoef=l),b=0;a>b;b++)c=k+j,g=Math.pow(c/j,g)*j,h=g+l*(h-g),m[b]=h;d.movingAvg=h,d.value=d.unscaledValue=h},e.linearGen=function(a){var b,c=e.model,d=f.ugen.mouse.cursor.normalize(e.target,c),g=c.movingAvg,h=e.inputs.lag.output[0],i=e.inputs.add.output[0],j=e.inputs.mul.output[0],k=c.lagCoef,l=e.output;for(h!==k&&(k=0===h?0:Math.exp(f.LOG001/(h*c.sampleRate)),c.lagCoef=k),b=0;a>b;b++)g=d+k*(g-d),l[b]=g*j+i;c.movingAvg=c.unscaledValue=g,c.value=f.ugen.lastOutputValue(a,l)},e.noInterpolationGen=function(a){var b,c=e.model,d=e.output,g=f.ugen.mouse.cursor.normalize(e.target,c);for(b=0;a>b;b++)d[b]=g*e.inputs.mul.output[0]+e.inputs.add.output[0];c.value=c.unscaledValue=f.ugen.lastOutputValue(a,d)},e.moveListener=function(a){var b=e.model;b.mousePosition=a[b.eventProp]},e.overListener=function(){e.model.isWithinTarget=!0},e.outListener=function(){var a=e.model;a.isWithinTarget=!1,a.mousePosition=0},e.downListener=function(){e.model.isMouseDown=!0},e.upListener=function(){var a=e.model;a.isMouseDown=!1,a.mousePosition=0},e.moveWhileDownListener=function(a){e.model.isMouseDown&&e.moveListener(a)},e.bindEvents=function(){var a=e.target,b=e.moveListener;e.options.onlyOnMouseDown&&(a.mousedown(e.downListener),a.mouseup(e.upListener),b=e.moveWhileDownListener),a.mouseover(e.overListener),a.mouseout(e.outListener),a.mousemove(b)},e.onInputChanged=function(){f.onMulAddInputChanged(e);var a=e.options.interpolation;e.gen="none"===a?e.noInterpolationGen:"exponential"===a?e.exponentialGen:e.linearGen},e.init=function(){var b=e.model,c=e.options,d=c.axis,f=a(c.target||window);"x"===d||"width"===d||"horizontal"===d?(b.eventProp="clientX",b.offsetProp="left",b.dimension="width"):(b.eventProp="clientY",b.offsetProp="top",b.dimension="height"),e.target=f,b.mousePosition=0,b.movingAvg=0,e.bindEvents(),e.onInputChanged()},e.init(),e},f.ugen.mouse.cursor.normalize=function(a,b){if(!b.isWithinTarget)return 0;var c=a[b.dimension](),d=a.offset(),e=b.mousePosition;return d&&(e-=d[b.offsetProp]),e/c},f.ugenDefaults("flock.ugen.mouse.cursor",{rate:"control",inputs:{lag:.5,add:0,mul:1},ugenOptions:{axis:"x",interpolation:"linear",model:{mousePosition:0,movingAvg:0,value:0}}}),f.ugen.mouse.click=function(b,c,d){var e=f.ugen(b,c,d);return e.gen=function(a){var b,c=e.output,d=e.model;for(b=0;a>b;b++)c[b]=d.unscaledValue;e.mulAdd(a),d.value=f.ugen.lastOutputValue(a,c)},e.mouseDownListener=function(){e.model.unscaledValue=1},e.mouseUpListener=function(){e.model.unscaledValue=0},e.init=function(){var b=e.model;b.target=a(e.options.target?e.options.target:window),b.target.mousedown(e.mouseDownListener),b.target.mouseup(e.mouseUpListener),e.onInputChanged()},e.onInputChanged=function(){f.onMulAddInputChanged(e)},e.init(),e},f.ugenDefaults("flock.ugen.mouse.click",{rate:"control"}),f.ugen.mediaIn=function(b,c,d){var e=f.ugen(b,c,d);return e.gen=function(a){for(var b,c=e.model,d=e.output,g=e.bus,h=0;a>h;h++)d[h]=b=g[h];c.unscaledValue=b,e.mulAdd(a),c.value=f.ugen.lastOutputValue(a,d)},e.onInputChanged=function(){f.onMulAddInputChanged(e)},e.init=function(){var b=e.enviro.audioSystem.nativeNodeManager,c=a(e.options.element),d=b.createMediaElementInput(c[0]);e.bus=e.options.buses[d],e.onInputChanged(),f.platform.browser.safari&&f.platform.browser.majorVersionNumber<601?f.log.warn("MediaElementSourceNode only works on Safari 9 or higher. For more information, see https://bugs.webkit.org/show_bug.cgi?id=84743 and https://bugs.webkit.org/show_bug.cgi?id=125031"):f.platform.isAndroid&&f.log.warn("MediaElementSourceNode does not work on Android. For more information, see https://code.google.com/p/chromium/issues/detail?id=419446")},e.init(),e},f.ugenDefaults("flock.ugen.mediaIn",{rate:"audio",inputs:{mul:null,add:null},ugenOptions:{element:"audio"}})}(),window.fluid=d,f});