From d5f955fc3b4a28aa488c6964ee94aa0f2b1edc1e Mon Sep 17 00:00:00 2001 From: Naomi Aro Date: Sun, 24 Jul 2016 13:30:36 +0100 Subject: [PATCH] Check in dist. --- dist/waveform-playlist/js/emitter.js | 16 ++++++++++++++-- .../js/waveform-playlist.var.js | 2 +- .../js/waveform-playlist.var.js.map | 2 +- dist/waveform-playlist/web-audio-editor.html | 1 + 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/dist/waveform-playlist/js/emitter.js b/dist/waveform-playlist/js/emitter.js index 45e516b7..b860bfca 100644 --- a/dist/waveform-playlist/js/emitter.js +++ b/dist/waveform-playlist/js/emitter.js @@ -273,10 +273,22 @@ ee.on("mastervolumechange", function(volume) { var audioStates = ["uninitialized", "loading", "decoding", "finished"]; ee.on("audiorequeststatechange", function(state, src) { - displayLoadingData("Track " + src + " is in state " + audioStates[state]); + var name = src; + + if (src instanceof File) { + name = src.name; + } + + displayLoadingData("Track " + name + " is in state " + audioStates[state]); }); ee.on("loadprogress", function(percent, src) { - displayLoadingData("Track " + src + " has loaded " + percent + "%"); + var name = src; + + if (src instanceof File) { + name = src.name; + } + + displayLoadingData("Track " + name + " has loaded " + percent + "%"); }); diff --git a/dist/waveform-playlist/js/waveform-playlist.var.js b/dist/waveform-playlist/js/waveform-playlist.var.js index 4ac32d1c..288c9c7b 100644 --- a/dist/waveform-playlist/js/waveform-playlist.var.js +++ b/dist/waveform-playlist/js/waveform-playlist.var.js @@ -5610,7 +5610,7 @@ var WaveformPlaylist = resolve(audioBuffer); }, function (err) { - reject(Error('Unable to decode Audio Data for ' + _this.src)); + reject(Error('Unable to decode Audio Data for src ' + _this.src)); }); }); } diff --git a/dist/waveform-playlist/js/waveform-playlist.var.js.map b/dist/waveform-playlist/js/waveform-playlist.var.js.map index 0cea5ce2..c9cf82aa 100644 --- a/dist/waveform-playlist/js/waveform-playlist.var.js.map +++ b/dist/waveform-playlist/js/waveform-playlist.var.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap 41e7d4d29b3dae490a6f","webpack:///./src/app.js","webpack:///./~/lodash.assign/index.js","webpack:///./~/lodash.keys/index.js","webpack:///./~/lodash.rest/index.js","webpack:///./~/virtual-dom/create-element.js","webpack:///./~/virtual-dom/vdom/create-element.js","webpack:///./~/virtual-dom/~/global/document.js","webpack:///min-document (ignored)","webpack:///./~/virtual-dom/vdom/apply-properties.js","webpack:///./~/is-object/index.js","webpack:///./~/virtual-dom/vnode/is-vhook.js","webpack:///./~/virtual-dom/vnode/is-vnode.js","webpack:///./~/virtual-dom/vnode/version.js","webpack:///./~/virtual-dom/vnode/is-vtext.js","webpack:///./~/virtual-dom/vnode/is-widget.js","webpack:///./~/virtual-dom/vnode/handle-thunk.js","webpack:///./~/virtual-dom/vnode/is-thunk.js","webpack:///./~/event-emitter/index.js","webpack:///./~/d/index.js","webpack:///./~/es5-ext/object/assign/index.js","webpack:///./~/es5-ext/object/assign/is-implemented.js","webpack:///./~/es5-ext/object/assign/shim.js","webpack:///./~/es5-ext/object/keys/index.js","webpack:///./~/es5-ext/object/keys/is-implemented.js","webpack:///./~/es5-ext/object/keys/shim.js","webpack:///./~/es5-ext/object/valid-value.js","webpack:///./~/es5-ext/object/normalize-options.js","webpack:///./~/es5-ext/object/is-callable.js","webpack:///./~/es5-ext/string/#/contains/index.js","webpack:///./~/es5-ext/string/#/contains/is-implemented.js","webpack:///./~/es5-ext/string/#/contains/shim.js","webpack:///./~/es5-ext/object/valid-callable.js","webpack:///./src/Playlist.js","webpack:///./~/lodash.defaults/index.js","webpack:///./~/lodash.assigninwith/index.js","webpack:///./~/lodash.keysin/index.js","webpack:///(webpack)/buildin/module.js","webpack:///./~/virtual-dom/h.js","webpack:///./~/virtual-dom/virtual-hyperscript/index.js","webpack:///./~/x-is-array/index.js","webpack:///./~/virtual-dom/vnode/vnode.js","webpack:///./~/virtual-dom/vnode/vtext.js","webpack:///./~/virtual-dom/virtual-hyperscript/parse-tag.js","webpack:///./~/browser-split/index.js","webpack:///./~/virtual-dom/virtual-hyperscript/hooks/soft-set-hook.js","webpack:///./~/virtual-dom/virtual-hyperscript/hooks/ev-hook.js","webpack:///./~/ev-store/index.js","webpack:///./~/individual/one-version.js","webpack:///./~/individual/index.js","webpack:///./~/virtual-dom/diff.js","webpack:///./~/virtual-dom/vtree/diff.js","webpack:///./~/virtual-dom/vnode/vpatch.js","webpack:///./~/virtual-dom/vtree/diff-props.js","webpack:///./~/virtual-dom/patch.js","webpack:///./~/virtual-dom/vdom/patch.js","webpack:///./~/virtual-dom/vdom/dom-index.js","webpack:///./~/virtual-dom/vdom/patch-op.js","webpack:///./~/virtual-dom/vdom/update-widget.js","webpack:///./src/utils/conversions.js","webpack:///./src/track/loader/LoaderFactory.js","webpack:///./src/track/loader/BlobLoader.js","webpack:///./src/track/loader/Loader.js","webpack:///./src/track/loader/XHRLoader.js","webpack:///./src/render/ScrollHook.js","webpack:///./src/TimeScale.js","webpack:///./src/render/TimeScaleHook.js","webpack:///./src/Track.js","webpack:///./~/lodash.forown/index.js","webpack:///./~/lodash._basefor/index.js","webpack:///./~/lodash._baseiteratee/index.js","webpack:///./~/lodash._stringtopath/index.js","webpack:///./~/lodash._basetostring/index.js","webpack:///./~/uuid/uuid.js","webpack:///./~/uuid/rng-browser.js","webpack:///./~/webaudio-peaks/index.js","webpack:///./src/track/states.js","webpack:///./src/track/states/CursorState.js","webpack:///./src/track/states/SelectState.js","webpack:///./src/track/states/ShiftState.js","webpack:///./src/track/states/FadeInState.js","webpack:///./src/track/states/FadeOutState.js","webpack:///./src/render/CanvasHook.js","webpack:///./src/render/FadeCanvasHook.js","webpack:///./~/fade-maker/index.js","webpack:///./~/fade-curves/index.js","webpack:///./src/render/VolumeSliderHook.js","webpack:///./src/Playout.js","webpack:///./src/track/recorderWorker.js"],"names":[],"mappings":";;AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;;SChCgB,I,GAAA,I;;AANhB;;;;AACA;;;;AACA;;;;AACA;;;;;;AAGO,UAAS,IAAT,GAA6C;AAAA,SAA/B,OAA+B,yDAAvB,EAAuB;AAAA,SAAnB,EAAmB,yDAAhB,6BAAgB;;AAChD,SAAI,QAAQ,SAAR,KAAsB,SAA1B,EAAqC;AACjC,eAAM,IAAI,KAAJ,CAAU,sCAAV,CAAN;AACH;;AAED,SAAI,eAAe,KAAK,OAAO,YAAP,IAAuB,OAAO,kBAAnC,GAAnB;;AAEA,SAAI,WAAW;AACX,aAAI,YADO;AAEX,qBAAY,aAAa,UAFd;AAGX,0BAAiB,IAHN,E;AAIX,eAAM,IAJK,E;AAKX,mBAAU,aALC;AAMX,oBAAW,KANA,E;AAOX,mBAAU;AACN,mBAAM,KADA,E;AAEN,oBAAO,G;AAFD,UAPC;AAWX,iBAAQ;AACJ,+BAAkB,OADd;AAEJ,wBAAW,MAFP;AAGJ,wBAAW;AAHP,UAXG;AAgBX,qBAAY,GAhBD,E;AAiBX,gBAAO,QAjBI;AAkBX,qBAAY,CAAC,GAAD,EAAM,IAAN,EAAY,IAAZ,EAAkB,IAAlB,C;AAlBD,MAAf;;AAqBA,SAAI,SAAS,sBAAQ,QAAR,EAAkB,OAAlB,CAAb;AACA,SAAI,YAAY,OAAO,UAAP,CAAkB,OAAlB,CAA0B,OAAO,eAAjC,CAAhB;;AAEA,SAAI,cAAc,CAAC,CAAnB,EAAsB;AAClB,eAAM,IAAI,KAAJ,CAAU,8DAAV,CAAN;AACH;;AAED,SAAI,WAAW,wBAAf;AACA,cAAS,aAAT,CAAuB,OAAO,UAA9B;AACA,cAAS,kBAAT,CAA4B,OAAO,eAAnC;AACA,cAAS,eAAT,CAAyB,OAAO,EAAhC;AACA,cAAS,eAAT,CAAyB,EAAzB;AACA,cAAS,iBAAT;AACA,cAAS,gBAAT,CAA0B,CAA1B,EAA6B,CAA7B;AACA,cAAS,QAAT,CAAkB,OAAO,KAAzB;AACA,cAAS,iBAAT,CAA2B,OAAO,QAAlC;AACA,cAAS,aAAT,CAAuB,OAAO,UAA9B;AACA,cAAS,SAAT,CAAmB,OAAO,MAA1B;AACA,cAAS,aAAT,CAAuB,OAAO,UAA9B;AACA,cAAS,YAAT,CAAsB,SAAtB;AACA,cAAS,OAAT,CAAiB,OAAO,IAAxB;AACA,cAAS,gBAAT,CAA0B,OAAO,SAAjC;;;AAGA,SAAI,OAAO,SAAS,MAAT,EAAX;AACA,SAAI,WAAW,6BAAc,IAAd,CAAf;;AAEA,YAAO,SAAP,CAAiB,WAAjB,CAA6B,QAA7B;AACA,cAAS,IAAT,GAAgB,IAAhB;AACA,cAAS,QAAT,GAAoB,QAApB;;AAEA,YAAO,QAAP;AACH,E;;;;;;AClED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kDAAiD,eAAe;;AAEhE;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,MAAM;AACjB,YAAW,OAAO,WAAW;AAC7B,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA,yBAAwB;;AAExB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,kBAAiB;AACjB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,UAAU;AACrB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;;;;;;;AC3YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,YAAY;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA,8BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACndA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,EAAE;AACb,YAAW,MAAM;AACjB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACxVA;;AAEA;;;;;;;ACFA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,oBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;AC7CA;AACA;AACA;;AAEA;AACA;AACA,EAAC;AACD;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;ACdA,gB;;;;;;ACAA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;;;;;;;AChGA;;AAEA;AACA;AACA;;;;;;;ACJA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;ACNA;;AAEA;;AAEA;AACA;AACA;;;;;;;ACNA;;;;;;;ACAA;;AAEA;;AAEA;AACA;AACA;;;;;;;ACNA;;AAEA;AACA;AACA;;;;;;;ACJA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;ACvCA;;AAEA;AACA;AACA;;;;;;;ACJA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAkB;;AAElB;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,cAAa,4BAA4B;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,OAAO;;AAEpB;AACA,cAAa,2BAA2B;AACxC;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA0B;;AAE1B;AACA;AACA;AACA;;;;;;;ACnIA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;;AAEA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;;AAEA,UAAS;AACT;AACA;;;;;;;AC9DA;;AAEA;AACA;AACA;;;;;;;ACJA;;AAEA;AACA;AACA;AACA,SAAQ;AACR,eAAc,aAAa,GAAG,eAAe;AAC7C;AACA;;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AAe,IAAf,EAAqB,KAAK,eAA1B,EAA2C,KAAK,UAAhD;AARgC,cAAzB,EAShB,aATgB,CAAnB;;AAWA,iBAAI,oBAAoB,EAAxB;;AAEA,iBAAI,KAAK,aAAT,EAAwB;AACpB,mCAAkB,IAAlB,CAAuB,UAAU,MAAV,EAAvB;AACH;;AAED,+BAAkB,IAAlB,CAAuB,YAAvB;;AAEA,oBAAO,iBAAE,cAAF,EAAkB;AACrB,+BAAc;AACV,8BAAS;AADC,kBADO,EAAlB,EAIH,iBAJG,CAAP;AAMH;;;mCAES;AACN,iBAAI,OAAO,EAAX;;AAEA,kBAAK,MAAL,CAAY,OAAZ,CAAoB,UAAC,KAAD,EAAW;AAC3B,sBAAK,IAAL,CAAU,MAAM,eAAN,EAAV;AACH,cAFD;;AAIA,oBAAO,IAAP;AACH;;;;;;;;;;;;ACjrBL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,EAAE;AACb,YAAW,KAAK;AAChB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,kBAAiB;AACjB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,UAAU;AACrB,cAAa,OAAO;AACpB;AACA;AACA,gBAAe,mBAAmB,GAAG,YAAY,GAAG,iBAAiB;AACrE,WAAU;AACV;AACA;AACA;AACA;AACA,EAAC;;AAED;;;;;;;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,MAAM;AACjB,YAAW,OAAO,WAAW;AAC7B,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA,yBAAwB;;AAExB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,kBAAiB;AACjB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,UAAU;AACrB,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,SAAS,GAAG,SAAS,GAAG,SAAS;AAC9C,WAAU;AACV;AACA;AACA;AACA,EAAC;;AAED;;;;;;;AC5WA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,YAAY;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8CAA6C,eAAe;AAC5D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA,8BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AChgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACTA;;AAEA;;;;;;;ACFA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA,MAAK;AACL,wBAAuB,cAAc;AACrC;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;;;;;;ACxIA;AACA;;AAEA;;AAEA;AACA;AACA;;;;;;;ACPA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oBAAmB,WAAW;AAC9B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;ACvEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;ACTA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,gBAAe,qBAAqB;AACpC;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,cAAc;AACzB,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAqD;AACrD;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,0BAA0B;AACrD;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;ACzGD;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;AChBA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;AC1BA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;ACnBA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;ACrBA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;;;;;;AClBA;;AAEA;;;;;;;ACFA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,kBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAmB,SAAS;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,wBAAuB,SAAS;AAChC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4BAA2B,SAAS;AACpC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,qBAAoB,sBAAsB;AAC1C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,cAAa;AACb;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oBAAmB,sBAAsB;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oBAAmB,sBAAsB;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C,2BAA2B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC,2BAA2B;AACjE;AACA;AACA;AACA,mCAAkC,2BAA2B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oBAAmB,YAAY;AAC/B;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA,MAAK;AACL;AACA;AACA;;;;;;;AC1aA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;ACrBA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;AACA;;;;;;;ACzDA;;AAEA;;;;;;;ACFA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,wBAAuB,sBAAsB;AAC7C;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;AC/EA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,4BAA2B,0BAA0B;AACrD;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;;;;;ACpFA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAmB,0BAA0B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAmB,0BAA0B;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;ACtJA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;;;;;;;ACdA;;;;;SAEgB,gB,GAAA,gB;SAIA,gB,GAAA,gB;SAIA,e,GAAA,e;SAIA,e,GAAA,e;SAIA,e,GAAA,e;SAIA,e,GAAA,e;AApBT,UAAS,gBAAT,CAA0B,OAA1B,EAAmC,UAAnC,EAA+C;AAClD,YAAO,UAAU,UAAjB;AACH;;AAEM,UAAS,gBAAT,CAA0B,OAA1B,EAAmC,UAAnC,EAA+C;AAClD,YAAO,KAAK,IAAL,CAAU,UAAU,UAApB,CAAP;AACH;;AAEM,UAAS,eAAT,CAAyB,OAAzB,EAAkC,UAAlC,EAA8C;AACjD,YAAO,EAAC,EAAE,UAAU,UAAZ,CAAR;AACH;;AAEM,UAAS,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AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qCAAoC;;AAEpC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,SAAS;AACpB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,SAAS;AACpB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,MAAM;AACjB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,YAAY;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,cAAa,EAAE;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,YAAW,SAAS;AACpB,YAAW,QAAQ;AACnB;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,MAAM;AACjB,YAAW,SAAS;AACpB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,aAAa;AACxB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,MAAM;AACjB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,YAAY;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,YAAW,SAAS;AACpB,cAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,kBAAiB;AACjB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA,8BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,YAAW,EAAE;AACb,cAAa,EAAE;AACf;AACA;AACA,kBAAiB,QAAQ,OAAO,SAAS,EAAE;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,cAAa,QAAQ;AACrB;AACA;AACA,2BAA0B,gBAAgB,SAAS,GAAG;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,EAAE;AACf;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,aAAa;AACxB,cAAa,SAAS;AACtB;AACA;AACA;AACA,OAAM,OAAO,SAAS,EAAE;AACxB,OAAM,OAAO,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC/mEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,qCAAoC;;AAEpC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,YAAY;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,cAAa,SAAS;AACtB;AACA;AACA,kBAAiB;AACjB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,kBAAiB;AACjB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACruBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,YAAY;AACzB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACxJA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe,SAAS;AACxB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qCAAoC,EAAE;AACtC,mBAAkB;AAClB;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,oCAAmC;AACnC;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,qBAAoB,SAAS;AAC7B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACrLA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB,QAAQ;AAC9B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;AC7BA;;AAEA;AACA;AACA;AACA,WAAU,WAAW;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAU,SAAS;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAU,OAAO;AACjB,WAAU,OAAO;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAU,WAAW;AACrB,WAAU,OAAO;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,a;AACA;AACA;;AAEA;AACA;;AAEA,gBAAe,cAAc;;AAE7B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAe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","file":"waveform-playlist.var.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/waveform-playlist/js/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 41e7d4d29b3dae490a6f\n **/","import _assign from 'lodash.assign';\nimport createElement from 'virtual-dom/create-element';\nimport EventEmitter from 'event-emitter';\nimport Playlist from './Playlist';\n\n\nexport function init(options={}, ee=EventEmitter()) {\n if (options.container === undefined) {\n throw new Error(\"DOM element container must be given.\");\n }\n\n let audioContext = new (window.AudioContext || window.webkitAudioContext);\n\n let defaults = {\n ac: audioContext,\n sampleRate: audioContext.sampleRate,\n samplesPerPixel: 4096, //samples per pixel to draw, must be an entry in zoomLevels.\n mono: true, //whether to draw multiple channels or combine them.\n fadeType: 'logarithmic',\n timescale: false, //whether or not to include the time measure.\n controls: {\n show: false, //whether or not to include the track controls\n width: 150 //width of controls in pixels\n },\n colors: {\n waveOutlineColor: 'white',\n timeColor: 'grey',\n fadeColor: 'black'\n },\n waveHeight: 128, //height of each canvas element a waveform is on.\n state: 'cursor',\n zoomLevels: [512, 1024, 2048, 4096] //zoom levels in samples per pixel\n };\n\n let config = _assign(defaults, options);\n let zoomIndex = config.zoomLevels.indexOf(config.samplesPerPixel);\n\n if (zoomIndex === -1) {\n throw new Error(\"initial samplesPerPixel must be included in array zoomLevels\");\n }\n\n let playlist = new Playlist();\n playlist.setSampleRate(config.sampleRate);\n playlist.setSamplesPerPixel(config.samplesPerPixel);\n playlist.setAudioContext(config.ac);\n playlist.setEventEmitter(ee);\n playlist.setUpEventEmitter();\n playlist.setTimeSelection(0, 0);\n playlist.setState(config.state);\n playlist.setControlOptions(config.controls);\n playlist.setWaveHeight(config.waveHeight);\n playlist.setColors(config.colors);\n playlist.setZoomLevels(config.zoomLevels);\n playlist.setZoomIndex(zoomIndex);\n playlist.setMono(config.mono);\n playlist.setShowTimeScale(config.timescale);\n\n //take care of initial virtual dom rendering.\n let tree = playlist.render();\n let rootNode = createElement(tree);\n\n config.container.appendChild(rootNode);\n playlist.tree = tree;\n playlist.rootNode = rootNode;\n\n return playlist;\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/app.js\n **/","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\nvar keys = require('lodash.keys'),\n rest = require('lodash.rest');\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/** Detect if properties shadowing those on `Object.prototype` are non-enumerable. */\nvar nonEnumShadows = !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf');\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : source[key];\n\n assignValue(object, key, newValue);\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return rest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a\n * [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) that affects\n * Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'user': 'fred' };\n * var other = { 'user': 'fred' };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value)) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8 which returns 'object' for typed array and weak map constructors,\n // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length,\n * else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.c = 3;\n * }\n *\n * function Bar() {\n * this.e = 5;\n * }\n *\n * Foo.prototype.d = 4;\n * Bar.prototype.f = 6;\n *\n * _.assign({ 'a': 1 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3, 'e': 5 }\n */\nvar assign = createAssigner(function(object, source) {\n if (nonEnumShadows || isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n});\n\nmodule.exports = assign;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash.assign/index.js\n ** module id = 1\n ** module chunks = 0\n **/","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n stringTag = '[object String]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetPrototype = Object.getPrototypeOf,\n nativeKeys = Object.keys;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n // Avoid a bug in IE 10-11 where objects with a [[Prototype]] of `null`,\n // that are composed entirely of index properties, return `false` for\n // `hasOwnProperty` checks of them.\n return hasOwnProperty.call(object, key) ||\n (typeof object == 'object' && key in object && getPrototype(object) === null);\n}\n\n/**\n * The base implementation of `_.keys` which doesn't skip the constructor\n * property of prototypes or treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n return nativeKeys(Object(object));\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a\n * [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) that affects\n * Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\n/**\n * Gets the `[[Prototype]]` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {null|Object} Returns the `[[Prototype]]`.\n */\nfunction getPrototype(value) {\n return nativeGetPrototype(Object(value));\n}\n\n/**\n * Creates an array of index keys for `object` values of arrays,\n * `arguments` objects, and strings, otherwise `null` is returned.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array|null} Returns index keys, else `null`.\n */\nfunction indexKeys(object) {\n var length = object ? object.length : undefined;\n if (isLength(length) &&\n (isArray(object) || isString(object) || isArguments(object))) {\n return baseTimes(length, String);\n }\n return null;\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 incorrectly makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @type {Function}\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value)) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8 which returns 'object' for typed array and weak map constructors,\n // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length,\n * else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n var isProto = isPrototype(object);\n if (!(isProto || isArrayLike(object))) {\n return baseKeys(object);\n }\n var indexes = indexKeys(object),\n skipIndexes = !!indexes,\n result = indexes || [],\n length = result.length;\n\n for (var key in object) {\n if (baseHas(object, key) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length))) &&\n !(isProto && key == 'constructor')) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = keys;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash.keys/index.js\n ** module id = 2\n ** module chunks = 0\n **/","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n var length = args.length;\n switch (length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\nfunction rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = nativeMax(start === undefined ? (func.length - 1) : toInteger(start), 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n switch (start) {\n case 0: return func.call(this, array);\n case 1: return func.call(this, args[0], array);\n case 2: return func.call(this, args[0], args[1], array);\n }\n var otherArgs = Array(start + 1);\n index = -1;\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8 which returns 'object' for typed array and weak map constructors,\n // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This function is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/6.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = isFunction(value.valueOf) ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = rest;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash.rest/index.js\n ** module id = 3\n ** module chunks = 0\n **/","var createElement = require(\"./vdom/create-element.js\")\n\nmodule.exports = createElement\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/create-element.js\n ** module id = 4\n ** module chunks = 0\n **/","var document = require(\"global/document\")\n\nvar applyProperties = require(\"./apply-properties\")\n\nvar isVNode = require(\"../vnode/is-vnode.js\")\nvar isVText = require(\"../vnode/is-vtext.js\")\nvar isWidget = require(\"../vnode/is-widget.js\")\nvar handleThunk = require(\"../vnode/handle-thunk.js\")\n\nmodule.exports = createElement\n\nfunction createElement(vnode, opts) {\n var doc = opts ? opts.document || document : document\n var warn = opts ? opts.warn : null\n\n vnode = handleThunk(vnode).a\n\n if (isWidget(vnode)) {\n return vnode.init()\n } else if (isVText(vnode)) {\n return doc.createTextNode(vnode.text)\n } else if (!isVNode(vnode)) {\n if (warn) {\n warn(\"Item is not a valid virtual dom node\", vnode)\n }\n return null\n }\n\n var node = (vnode.namespace === null) ?\n doc.createElement(vnode.tagName) :\n doc.createElementNS(vnode.namespace, vnode.tagName)\n\n var props = vnode.properties\n applyProperties(node, props)\n\n var children = vnode.children\n\n for (var i = 0; i < children.length; i++) {\n var childNode = createElement(children[i], opts)\n if (childNode) {\n node.appendChild(childNode)\n }\n }\n\n return node\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vdom/create-element.js\n ** module id = 5\n ** module chunks = 0\n **/","var topLevel = typeof global !== 'undefined' ? global :\n typeof window !== 'undefined' ? window : {}\nvar minDoc = require('min-document');\n\nif (typeof document !== 'undefined') {\n module.exports = document;\n} else {\n var doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'];\n\n if (!doccy) {\n doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc;\n }\n\n module.exports = doccy;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/~/global/document.js\n ** module id = 6\n ** module chunks = 0\n **/","/* (ignored) */\n\n\n/*****************\n ** WEBPACK FOOTER\n ** min-document (ignored)\n ** module id = 7\n ** module chunks = 0\n **/","var isObject = require(\"is-object\")\nvar isHook = require(\"../vnode/is-vhook.js\")\n\nmodule.exports = applyProperties\n\nfunction applyProperties(node, props, previous) {\n for (var propName in props) {\n var propValue = props[propName]\n\n if (propValue === undefined) {\n removeProperty(node, propName, propValue, previous);\n } else if (isHook(propValue)) {\n removeProperty(node, propName, propValue, previous)\n if (propValue.hook) {\n propValue.hook(node,\n propName,\n previous ? previous[propName] : undefined)\n }\n } else {\n if (isObject(propValue)) {\n patchObject(node, props, previous, propName, propValue);\n } else {\n node[propName] = propValue\n }\n }\n }\n}\n\nfunction removeProperty(node, propName, propValue, previous) {\n if (previous) {\n var previousValue = previous[propName]\n\n if (!isHook(previousValue)) {\n if (propName === \"attributes\") {\n for (var attrName in previousValue) {\n node.removeAttribute(attrName)\n }\n } else if (propName === \"style\") {\n for (var i in previousValue) {\n node.style[i] = \"\"\n }\n } else if (typeof previousValue === \"string\") {\n node[propName] = \"\"\n } else {\n node[propName] = null\n }\n } else if (previousValue.unhook) {\n previousValue.unhook(node, propName, propValue)\n }\n }\n}\n\nfunction patchObject(node, props, previous, propName, propValue) {\n var previousValue = previous ? previous[propName] : undefined\n\n // Set attributes\n if (propName === \"attributes\") {\n for (var attrName in propValue) {\n var attrValue = propValue[attrName]\n\n if (attrValue === undefined) {\n node.removeAttribute(attrName)\n } else {\n node.setAttribute(attrName, attrValue)\n }\n }\n\n return\n }\n\n if(previousValue && isObject(previousValue) &&\n getPrototype(previousValue) !== getPrototype(propValue)) {\n node[propName] = propValue\n return\n }\n\n if (!isObject(node[propName])) {\n node[propName] = {}\n }\n\n var replacer = propName === \"style\" ? \"\" : undefined\n\n for (var k in propValue) {\n var value = propValue[k]\n node[propName][k] = (value === undefined) ? replacer : value\n }\n}\n\nfunction getPrototype(value) {\n if (Object.getPrototypeOf) {\n return Object.getPrototypeOf(value)\n } else if (value.__proto__) {\n return value.__proto__\n } else if (value.constructor) {\n return value.constructor.prototype\n }\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vdom/apply-properties.js\n ** module id = 8\n ** module chunks = 0\n **/","\"use strict\";\n\nmodule.exports = function isObject(x) {\n\treturn typeof x === \"object\" && x !== null;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/is-object/index.js\n ** module id = 9\n ** module chunks = 0\n **/","module.exports = isHook\n\nfunction isHook(hook) {\n return hook &&\n (typeof hook.hook === \"function\" && !hook.hasOwnProperty(\"hook\") ||\n typeof hook.unhook === \"function\" && !hook.hasOwnProperty(\"unhook\"))\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vnode/is-vhook.js\n ** module id = 10\n ** module chunks = 0\n **/","var version = require(\"./version\")\n\nmodule.exports = isVirtualNode\n\nfunction isVirtualNode(x) {\n return x && x.type === \"VirtualNode\" && x.version === version\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vnode/is-vnode.js\n ** module id = 11\n ** module chunks = 0\n **/","module.exports = \"2\"\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vnode/version.js\n ** module id = 12\n ** module chunks = 0\n **/","var version = require(\"./version\")\n\nmodule.exports = isVirtualText\n\nfunction isVirtualText(x) {\n return x && x.type === \"VirtualText\" && x.version === version\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vnode/is-vtext.js\n ** module id = 13\n ** module chunks = 0\n **/","module.exports = isWidget\n\nfunction isWidget(w) {\n return w && w.type === \"Widget\"\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vnode/is-widget.js\n ** module id = 14\n ** module chunks = 0\n **/","var isVNode = require(\"./is-vnode\")\nvar isVText = require(\"./is-vtext\")\nvar isWidget = require(\"./is-widget\")\nvar isThunk = require(\"./is-thunk\")\n\nmodule.exports = handleThunk\n\nfunction handleThunk(a, b) {\n var renderedA = a\n var renderedB = b\n\n if (isThunk(b)) {\n renderedB = renderThunk(b, a)\n }\n\n if (isThunk(a)) {\n renderedA = renderThunk(a, null)\n }\n\n return {\n a: renderedA,\n b: renderedB\n }\n}\n\nfunction renderThunk(thunk, previous) {\n var renderedThunk = thunk.vnode\n\n if (!renderedThunk) {\n renderedThunk = thunk.vnode = thunk.render(previous)\n }\n\n if (!(isVNode(renderedThunk) ||\n isVText(renderedThunk) ||\n isWidget(renderedThunk))) {\n throw new Error(\"thunk did not return a valid node\");\n }\n\n return renderedThunk\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vnode/handle-thunk.js\n ** module id = 15\n ** module chunks = 0\n **/","module.exports = isThunk\r\n\r\nfunction isThunk(t) {\r\n return t && t.type === \"Thunk\"\r\n}\r\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vnode/is-thunk.js\n ** module id = 16\n ** module chunks = 0\n **/","'use strict';\n\nvar d = require('d')\n , callable = require('es5-ext/object/valid-callable')\n\n , apply = Function.prototype.apply, call = Function.prototype.call\n , create = Object.create, defineProperty = Object.defineProperty\n , defineProperties = Object.defineProperties\n , hasOwnProperty = Object.prototype.hasOwnProperty\n , descriptor = { configurable: true, enumerable: false, writable: true }\n\n , on, once, off, emit, methods, descriptors, base;\n\non = function (type, listener) {\n\tvar data;\n\n\tcallable(listener);\n\n\tif (!hasOwnProperty.call(this, '__ee__')) {\n\t\tdata = descriptor.value = create(null);\n\t\tdefineProperty(this, '__ee__', descriptor);\n\t\tdescriptor.value = null;\n\t} else {\n\t\tdata = this.__ee__;\n\t}\n\tif (!data[type]) data[type] = listener;\n\telse if (typeof data[type] === 'object') data[type].push(listener);\n\telse data[type] = [data[type], listener];\n\n\treturn this;\n};\n\nonce = function (type, listener) {\n\tvar once, self;\n\n\tcallable(listener);\n\tself = this;\n\ton.call(this, type, once = function () {\n\t\toff.call(self, type, once);\n\t\tapply.call(listener, this, arguments);\n\t});\n\n\tonce.__eeOnceListener__ = listener;\n\treturn this;\n};\n\noff = function (type, listener) {\n\tvar data, listeners, candidate, i;\n\n\tcallable(listener);\n\n\tif (!hasOwnProperty.call(this, '__ee__')) return this;\n\tdata = this.__ee__;\n\tif (!data[type]) return this;\n\tlisteners = data[type];\n\n\tif (typeof listeners === 'object') {\n\t\tfor (i = 0; (candidate = listeners[i]); ++i) {\n\t\t\tif ((candidate === listener) ||\n\t\t\t\t\t(candidate.__eeOnceListener__ === listener)) {\n\t\t\t\tif (listeners.length === 2) data[type] = listeners[i ? 0 : 1];\n\t\t\t\telse listeners.splice(i, 1);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif ((listeners === listener) ||\n\t\t\t\t(listeners.__eeOnceListener__ === listener)) {\n\t\t\tdelete data[type];\n\t\t}\n\t}\n\n\treturn this;\n};\n\nemit = function (type) {\n\tvar i, l, listener, listeners, args;\n\n\tif (!hasOwnProperty.call(this, '__ee__')) return;\n\tlisteners = this.__ee__[type];\n\tif (!listeners) return;\n\n\tif (typeof listeners === 'object') {\n\t\tl = arguments.length;\n\t\targs = new Array(l - 1);\n\t\tfor (i = 1; i < l; ++i) args[i - 1] = arguments[i];\n\n\t\tlisteners = listeners.slice();\n\t\tfor (i = 0; (listener = listeners[i]); ++i) {\n\t\t\tapply.call(listener, this, args);\n\t\t}\n\t} else {\n\t\tswitch (arguments.length) {\n\t\tcase 1:\n\t\t\tcall.call(listeners, this);\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tcall.call(listeners, this, arguments[1]);\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tcall.call(listeners, this, arguments[1], arguments[2]);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tl = arguments.length;\n\t\t\targs = new Array(l - 1);\n\t\t\tfor (i = 1; i < l; ++i) {\n\t\t\t\targs[i - 1] = arguments[i];\n\t\t\t}\n\t\t\tapply.call(listeners, this, args);\n\t\t}\n\t}\n};\n\nmethods = {\n\ton: on,\n\tonce: once,\n\toff: off,\n\temit: emit\n};\n\ndescriptors = {\n\ton: d(on),\n\tonce: d(once),\n\toff: d(off),\n\temit: d(emit)\n};\n\nbase = defineProperties({}, descriptors);\n\nmodule.exports = exports = function (o) {\n\treturn (o == null) ? create(base) : defineProperties(Object(o), descriptors);\n};\nexports.methods = methods;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/event-emitter/index.js\n ** module id = 17\n ** module chunks = 0\n **/","'use strict';\n\nvar assign = require('es5-ext/object/assign')\n , normalizeOpts = require('es5-ext/object/normalize-options')\n , isCallable = require('es5-ext/object/is-callable')\n , contains = require('es5-ext/string/#/contains')\n\n , d;\n\nd = module.exports = function (dscr, value/*, options*/) {\n\tvar c, e, w, options, desc;\n\tif ((arguments.length < 2) || (typeof dscr !== 'string')) {\n\t\toptions = value;\n\t\tvalue = dscr;\n\t\tdscr = null;\n\t} else {\n\t\toptions = arguments[2];\n\t}\n\tif (dscr == null) {\n\t\tc = w = true;\n\t\te = false;\n\t} else {\n\t\tc = contains.call(dscr, 'c');\n\t\te = contains.call(dscr, 'e');\n\t\tw = contains.call(dscr, 'w');\n\t}\n\n\tdesc = { value: value, configurable: c, enumerable: e, writable: w };\n\treturn !options ? desc : assign(normalizeOpts(options), desc);\n};\n\nd.gs = function (dscr, get, set/*, options*/) {\n\tvar c, e, options, desc;\n\tif (typeof dscr !== 'string') {\n\t\toptions = set;\n\t\tset = get;\n\t\tget = dscr;\n\t\tdscr = null;\n\t} else {\n\t\toptions = arguments[3];\n\t}\n\tif (get == null) {\n\t\tget = undefined;\n\t} else if (!isCallable(get)) {\n\t\toptions = get;\n\t\tget = set = undefined;\n\t} else if (set == null) {\n\t\tset = undefined;\n\t} else if (!isCallable(set)) {\n\t\toptions = set;\n\t\tset = undefined;\n\t}\n\tif (dscr == null) {\n\t\tc = true;\n\t\te = false;\n\t} else {\n\t\tc = contains.call(dscr, 'c');\n\t\te = contains.call(dscr, 'e');\n\t}\n\n\tdesc = { get: get, set: set, configurable: c, enumerable: e };\n\treturn !options ? desc : assign(normalizeOpts(options), desc);\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/d/index.js\n ** module id = 18\n ** module chunks = 0\n **/","'use strict';\n\nmodule.exports = require('./is-implemented')()\n\t? Object.assign\n\t: require('./shim');\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/es5-ext/object/assign/index.js\n ** module id = 19\n ** module chunks = 0\n **/","'use strict';\n\nmodule.exports = function () {\n\tvar assign = Object.assign, obj;\n\tif (typeof assign !== 'function') return false;\n\tobj = { foo: 'raz' };\n\tassign(obj, { bar: 'dwa' }, { trzy: 'trzy' });\n\treturn (obj.foo + obj.bar + obj.trzy) === 'razdwatrzy';\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/es5-ext/object/assign/is-implemented.js\n ** module id = 20\n ** module chunks = 0\n **/","'use strict';\n\nvar keys = require('../keys')\n , value = require('../valid-value')\n\n , max = Math.max;\n\nmodule.exports = function (dest, src/*, …srcn*/) {\n\tvar error, i, l = max(arguments.length, 2), assign;\n\tdest = Object(value(dest));\n\tassign = function (key) {\n\t\ttry { dest[key] = src[key]; } catch (e) {\n\t\t\tif (!error) error = e;\n\t\t}\n\t};\n\tfor (i = 1; i < l; ++i) {\n\t\tsrc = arguments[i];\n\t\tkeys(src).forEach(assign);\n\t}\n\tif (error !== undefined) throw error;\n\treturn dest;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/es5-ext/object/assign/shim.js\n ** module id = 21\n ** module chunks = 0\n **/","'use strict';\n\nmodule.exports = require('./is-implemented')()\n\t? Object.keys\n\t: require('./shim');\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/es5-ext/object/keys/index.js\n ** module id = 22\n ** module chunks = 0\n **/","'use strict';\n\nmodule.exports = function () {\n\ttry {\n\t\tObject.keys('primitive');\n\t\treturn true;\n\t} catch (e) { return false; }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/es5-ext/object/keys/is-implemented.js\n ** module id = 23\n ** module chunks = 0\n **/","'use strict';\n\nvar keys = Object.keys;\n\nmodule.exports = function (object) {\n\treturn keys(object == null ? object : Object(object));\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/es5-ext/object/keys/shim.js\n ** module id = 24\n ** module chunks = 0\n **/","'use strict';\n\nmodule.exports = function (value) {\n\tif (value == null) throw new TypeError(\"Cannot use null or undefined\");\n\treturn value;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/es5-ext/object/valid-value.js\n ** module id = 25\n ** module chunks = 0\n **/","'use strict';\n\nvar forEach = Array.prototype.forEach, create = Object.create;\n\nvar process = function (src, obj) {\n\tvar key;\n\tfor (key in src) obj[key] = src[key];\n};\n\nmodule.exports = function (options/*, …options*/) {\n\tvar result = create(null);\n\tforEach.call(arguments, function (options) {\n\t\tif (options == null) return;\n\t\tprocess(Object(options), result);\n\t});\n\treturn result;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/es5-ext/object/normalize-options.js\n ** module id = 26\n ** module chunks = 0\n **/","// Deprecated\n\n'use strict';\n\nmodule.exports = function (obj) { return typeof obj === 'function'; };\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/es5-ext/object/is-callable.js\n ** module id = 27\n ** module chunks = 0\n **/","'use strict';\n\nmodule.exports = require('./is-implemented')()\n\t? String.prototype.contains\n\t: require('./shim');\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/es5-ext/string/#/contains/index.js\n ** module id = 28\n ** module chunks = 0\n **/","'use strict';\n\nvar str = 'razdwatrzy';\n\nmodule.exports = function () {\n\tif (typeof str.contains !== 'function') return false;\n\treturn ((str.contains('dwa') === true) && (str.contains('foo') === false));\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/es5-ext/string/#/contains/is-implemented.js\n ** module id = 29\n ** module chunks = 0\n **/","'use strict';\n\nvar indexOf = String.prototype.indexOf;\n\nmodule.exports = function (searchString/*, position*/) {\n\treturn indexOf.call(this, searchString, arguments[1]) > -1;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/es5-ext/string/#/contains/shim.js\n ** module id = 30\n ** module chunks = 0\n **/","'use strict';\n\nmodule.exports = function (fn) {\n\tif (typeof fn !== 'function') throw new TypeError(fn + \" is not a function\");\n\treturn fn;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/es5-ext/object/valid-callable.js\n ** module id = 31\n ** module chunks = 0\n **/","'use strict';\n\nimport _defaults from 'lodash.defaults';\n\nimport h from 'virtual-dom/h';\nimport diff from 'virtual-dom/diff';\nimport patch from 'virtual-dom/patch';\n\nimport {pixelsToSeconds} from './utils/conversions';\nimport LoaderFactory from './track/loader/LoaderFactory';\n\nimport ScrollHook from './render/ScrollHook';\n\nimport TimeScale from './TimeScale';\nimport Track from './Track';\nimport Playout from './Playout';\n\nimport RecorderWorker from 'worker!./track/recorderWorker.js';\n\nexport default class {\n\n constructor() {\n\n this.tracks = [];\n this.soloedTracks = [];\n this.mutedTracks = [];\n this.playoutPromises = [];\n\n this.cursor = 0;\n this.playbackSeconds = 0;\n this.duration = 0;\n this.scrollLeft = 0;\n this.showTimescale = false;\n\n this.fadeType = \"logarithmic\";\n this.masterGain = 1;\n }\n\n initRecorder(stream) {\n if (stream instanceof LocalMediaStream !== true) {\n throw new Error(\"Must provide a LocalMediaStream to record from\");\n }\n\n this.mediaRecorder = new MediaRecorder(stream);\n\n this.mediaRecorder.onstart = (e) => {\n let track = new Track();\n track.setName(\"Recording\");\n track.setEnabledStates();\n track.setEventEmitter(this.ee);\n\n this.recordingTrack = track;\n this.tracks.push(track);\n\n this.chunks = [];\n };\n\n this.mediaRecorder.ondataavailable = (e) => {\n this.chunks.push(e.data);\n\n let recording = new Blob(this.chunks, {'type': 'audio/ogg; codecs=opus'});\n let loader = LoaderFactory.createLoader(recording, this.ac);\n loader.load().then((audioBuffer) => {\n //ask web worker for peaks.\n this.recorderWorker.postMessage({\n samples: audioBuffer.getChannelData(0),\n samplesPerPixel: this.samplesPerPixel\n });\n this.recordingTrack.setCues(0, audioBuffer.duration);\n this.recordingTrack.setBuffer(audioBuffer);\n this.recordingTrack.setPlayout(new Playout(this.ac, audioBuffer));\n this.adjustDuration();\n });\n };\n\n //use a worker for calculating recording peaks.\n this.recorderWorker = new RecorderWorker();\n this.recorderWorker.onmessage = (e) => {\n this.recordingTrack.setPeaks(e.data);\n this.draw(this.render());\n };\n }\n\n setShowTimeScale(show) {\n this.showTimescale = show;\n }\n\n setMono(mono) {\n this.mono = mono;\n }\n\n setSampleRate(sampleRate) {\n this.sampleRate = sampleRate;\n }\n\n setSamplesPerPixel(samplesPerPixel) {\n this.samplesPerPixel = samplesPerPixel;\n }\n\n setAudioContext(ac) {\n this.ac = ac;\n }\n\n setControlOptions(controlOptions) {\n this.controls = controlOptions;\n }\n\n setWaveHeight(height) {\n this.waveHeight = height;\n }\n\n setColors(colors) {\n this.colors = colors;\n }\n\n setEventEmitter(ee) {\n this.ee = ee;\n }\n\n getEventEmitter() {\n return this.ee;\n }\n\n setUpEventEmitter() {\n let ee = this.ee;\n\n ee.on('select', (start, end, track) => {\n\n if (this.isPlaying()) {\n this.lastSeeked = start;\n this.pausedAt = undefined;\n this.restartPlayFrom(start);\n }\n else {\n //reset if it was paused.\n this.playbackSeconds = 0;\n this.setTimeSelection(start, end);\n this.setActiveTrack(track);\n this.draw(this.render());\n }\n });\n\n ee.on('statechange', (state) => {\n this.setState(state);\n this.draw(this.render());\n });\n\n ee.on('shift', (deltaTime, track) => {\n track.setStartTime(track.getStartTime() + deltaTime);\n this.adjustDuration();\n this.draw(this.render());\n });\n\n ee.on('record', () => {\n this.record();\n });\n\n ee.on('play', (start, end) => {\n this.play(start, end);\n });\n\n ee.on('pause', () => {\n this.pause();\n });\n\n ee.on('stop', () => {\n this.stop();\n });\n\n ee.on('rewind', () => {\n this.rewind();\n });\n\n ee.on('fastforward', () => {\n this.fastForward();\n });\n\n ee.on('solo', (track) => {\n this.soloTrack(track);\n this.adjustTrackPlayout();\n this.draw(this.render());\n });\n\n ee.on('mute', (track) => {\n this.muteTrack(track);\n this.adjustTrackPlayout();\n this.draw(this.render());\n });\n\n ee.on('volumechange', (volume, track) => {\n track.setGainLevel(volume/100);\n });\n\n ee.on('mastervolumechange', (volume) => {\n this.masterGain = volume/100\n this.tracks.forEach((track) => {\n track.setMasterGainLevel(this.masterGain);\n });\n });\n\n ee.on('fadein', (duration, track) => {\n track.setFadeIn(duration, this.fadeType);\n this.draw(this.render());\n });\n\n ee.on('fadeout', (duration, track) => {\n track.setFadeOut(duration, this.fadeType);\n this.draw(this.render());\n });\n\n ee.on('fadetype', (type) => {\n this.fadeType = type;\n });\n\n ee.on('newtrack', (file) => {\n this.load([{\n src: file,\n name: file.name\n }]);\n });\n\n ee.on('trim', () => {\n let track = this.getActiveTrack();\n let timeSelection = this.getTimeSelection();\n\n track.trim(timeSelection.start, timeSelection.end);\n track.calculatePeaks(this.samplesPerPixel, this.sampleRate);\n\n this.setTimeSelection(0, 0);\n this.draw(this.render());\n });\n\n ee.on('zoomin', () => {\n let zoomIndex = Math.max(0, this.zoomIndex-1);\n let zoom = this.zoomLevels[zoomIndex];\n\n if (zoom !== this.samplesPerPixel) {\n this.setZoom(zoom);\n this.draw(this.render());\n }\n });\n\n ee.on('zoomout', () => {\n let zoomIndex = Math.min(this.zoomLevels.length-1, this.zoomIndex+1);\n let zoom = this.zoomLevels[zoomIndex];\n\n if (zoom !== this.samplesPerPixel) {\n this.setZoom(zoom);\n this.draw(this.render());\n }\n });\n\n ee.on('scroll', () => {\n this.draw(this.render());\n });\n }\n\n load(trackList, options={}) {\n let loadPromises = trackList.map((trackInfo) => {\n let loader = LoaderFactory.createLoader(trackInfo.src, this.ac, this.ee);\n return loader.load();\n });\n\n return Promise.all(loadPromises).then((audioBuffers) => {\n let tracks = audioBuffers.map((audioBuffer, index) => {\n let info = trackList[index];\n let name = info.name || \"Untitled\";\n let start = info.start || 0;\n let states = info.states || {};\n let fadeIn = info.fadeIn;\n let fadeOut = info.fadeOut;\n let cueIn = info.cuein || 0;\n let cueOut = info.cueout || audioBuffer.duration;\n let gain = info.gain || 1;\n let muted = info.muted || false;\n let soloed = info.soloed || false;\n let selection = info.selected;\n let peaks = info.peaks || {type: \"WebAudio\", mono: this.mono};\n\n //webaudio specific playout for now.\n let playout = new Playout(this.ac, audioBuffer);\n\n let track = new Track();\n track.src = info.src;\n track.setBuffer(audioBuffer);\n track.setName(name);\n track.setEventEmitter(this.ee);\n track.setEnabledStates(states);\n track.setCues(cueIn, cueOut);\n\n if (fadeIn !== undefined) {\n track.setFadeIn(fadeIn.duration, fadeIn.shape);\n }\n\n if (fadeOut !== undefined) {\n track.setFadeOut(fadeOut.duration, fadeOut.shape);\n }\n\n if (selection !== undefined) {\n this.setActiveTrack(track);\n this.setTimeSelection(selection.start, selection.end);\n }\n\n if (peaks !== undefined) {\n track.setPeakData(peaks);\n }\n\n track.setState(this.getState());\n track.setStartTime(start);\n track.setPlayout(playout);\n\n track.setGainLevel(gain);\n\n if (muted) {\n this.muteTrack(track);\n }\n\n if (soloed) {\n this.soloTrack(track);\n }\n\n //extract peaks with AudioContext for now.\n track.calculatePeaks(this.samplesPerPixel, this.sampleRate);\n\n return track;\n });\n\n this.tracks = this.tracks.concat(tracks);\n this.adjustDuration();\n this.draw(this.render());\n });\n }\n\n /*\n track instance of Track.\n */\n setActiveTrack(track) {\n this.activeTrack = track;\n }\n\n getActiveTrack() {\n return this.activeTrack;\n }\n\n /*\n start, end in seconds.\n */\n setTimeSelection(start, end) {\n this.timeSelection = {\n start,\n end,\n };\n\n this.cursor = start;\n }\n\n getTimeSelection() {\n return this.timeSelection;\n }\n\n setState(state) {\n this.state = state;\n\n this.tracks.forEach((track) => {\n track.setState(state);\n });\n }\n\n getState() {\n return this.state;\n }\n\n setZoomIndex(index) {\n this.zoomIndex = index;\n }\n\n setZoomLevels(levels) {\n this.zoomLevels = levels;\n }\n\n setZoom(zoom) {\n this.samplesPerPixel = zoom;\n this.zoomIndex = this.zoomLevels.indexOf(zoom);\n this.tracks.forEach((track) => {\n track.calculatePeaks(zoom, this.sampleRate);\n }); \n }\n\n muteTrack(track) {\n let mutedList = this.mutedTracks;\n let index = mutedList.indexOf(track);\n\n if (index > -1) {\n mutedList.splice(index, 1);\n }\n else {\n mutedList.push(track);\n }\n }\n\n soloTrack(track) {\n let soloedList = this.soloedTracks;\n let index = soloedList.indexOf(track);\n\n if (index > -1) {\n soloedList.splice(index, 1);\n }\n else {\n soloedList.push(track);\n }\n }\n\n adjustTrackPlayout() {\n this.tracks.forEach((track) => {\n track.setShouldPlay(this.shouldTrackPlay(track));\n });\n }\n\n adjustDuration() {\n this.duration = this.tracks.reduce((duration, track) => {\n return Math.max(duration, track.getEndTime());\n }, 0);\n }\n\n shouldTrackPlay(track) {\n var shouldPlay;\n //if there are solo tracks, only they should play.\n if (this.soloedTracks.length > 0) {\n shouldPlay = false;\n if (this.soloedTracks.indexOf(track) > -1) {\n shouldPlay = true;\n }\n }\n //play all tracks except any muted tracks.\n else {\n shouldPlay = true;\n if (this.mutedTracks.indexOf(track) > -1) {\n shouldPlay = false;\n }\n }\n\n return shouldPlay;\n }\n\n isPlaying() {\n return this.tracks.reduce((isPlaying, track) => {\n return isPlaying || track.isPlaying();\n }, false);\n }\n\n /*\n * returns the current point of time in the playlist in seconds.\n */\n getCurrentTime() {\n let cursorPos = this.lastSeeked || this.pausedAt || this.cursor;\n\n return cursorPos + this.getElapsedTime();\n }\n\n getElapsedTime() {\n return this.ac.currentTime - this.lastPlay;\n }\n\n setMasterGain(gain){\n this.ee.emit('mastervolumechange', gain);\n }\n\n restartPlayFrom(start, end) {\n this.stopAnimation();\n\n this.tracks.forEach((editor) => {\n editor.scheduleStop();\n });\n\n return Promise.all(this.playoutPromises).then(this.play.bind(this, start, end));\n }\n\n play(startTime, endTime) {\n var currentTime = this.ac.currentTime,\n selected = this.getTimeSelection(),\n playoutPromises = [];\n\n startTime = startTime || this.pausedAt || this.cursor;\n\n if (!endTime && selected.end !== selected.start && selected.end > startTime) {\n endTime = selected.end;\n }\n\n if (this.isPlaying()) {\n this.restartPlayFrom(startTime, endTime);\n return;\n }\n\n this.tracks.forEach((track) => {\n track.setState('cursor');\n playoutPromises.push(track.schedulePlay(currentTime, startTime, endTime, {\n shouldPlay: this.shouldTrackPlay(track),\n masterGain : this.masterGain\n }));\n });\n\n this.lastPlay = currentTime;\n //use these to track when the playlist has fully stopped.\n this.playoutPromises = playoutPromises;\n this.startAnimation(startTime);\n\n return Promise.all(this.playoutPromises);\n }\n\n pause() {\n if (!this.isPlaying()) {\n return;\n }\n\n this.pausedAt = this.getCurrentTime();\n return this.playbackReset();\n }\n\n stop() {\n this.mediaRecorder && this.mediaRecorder.state === \"recording\" && this.mediaRecorder.stop();\n\n this.pausedAt = undefined;\n this.playbackSeconds = 0;\n return this.playbackReset();\n }\n\n playbackReset() {\n this.lastSeeked = undefined;\n this.stopAnimation();\n\n this.tracks.forEach((track) => {\n track.scheduleStop();\n track.setState(this.getState());\n });\n\n this.draw(this.render());\n\n return Promise.all(this.playoutPromises);\n }\n\n rewind() {\n return this.stop().then(() => {\n this.scrollLeft = 0;\n this.ee.emit('select', 0, 0);\n });\n }\n\n fastForward() {\n return this.stop().then(() => {\n if (this.viewDuration < this.duration) {\n this.scrollLeft = this.duration - this.viewDuration;\n }\n else {\n this.scrollLeft = 0;\n }\n\n this.ee.emit('select', this.duration, this.duration);\n });\n }\n\n record() {\n let playoutPromises = [];\n this.mediaRecorder.start(300);\n\n this.tracks.forEach((track) => {\n track.setState('none');\n playoutPromises.push(track.schedulePlay(this.ac.currentTime, 0, undefined, {\n shouldPlay: this.shouldTrackPlay(track)\n }));\n });\n\n this.playoutPromises = playoutPromises;\n }\n\n startAnimation(startTime) {\n this.lastDraw = this.ac.currentTime;\n this.animationRequest = window.requestAnimationFrame(this.updateEditor.bind(this, startTime));\n }\n\n stopAnimation() {\n window.cancelAnimationFrame(this.animationRequest);\n this.lastDraw = undefined;\n }\n\n /*\n * Animation function for the playlist.\n */\n updateEditor(cursorPos) {\n let currentTime = this.ac.currentTime;\n let playbackSeconds = 0;\n let elapsed;\n\n cursorPos = cursorPos || this.cursor;\n elapsed = currentTime - this.lastDraw;\n\n if (this.isPlaying()) {\n playbackSeconds = cursorPos + elapsed;\n this.ee.emit('timeupdate', playbackSeconds);\n this.animationRequest = window.requestAnimationFrame(this.updateEditor.bind(this, playbackSeconds));\n }\n else {\n this.stopAnimation();\n this.pausedAt = undefined;\n this.lastSeeked = undefined;\n this.setState(this.getState());\n }\n\n this.playbackSeconds = playbackSeconds;\n\n this.draw(this.render());\n this.lastDraw = currentTime;\n }\n\n draw(newTree) {\n window.requestAnimationFrame(() => {\n let patches = diff(this.tree, newTree);\n this.rootNode = patch(this.rootNode, patches);\n this.tree = newTree;\n\n //use for fast forwarding.\n this.viewDuration = pixelsToSeconds(this.rootNode.clientWidth - this.controls.width, this.samplesPerPixel, this.sampleRate);\n });\n }\n\n getTrackRenderData(data={}) {\n let defaults = {\n \"height\": this.waveHeight,\n \"resolution\": this.samplesPerPixel,\n \"sampleRate\": this.sampleRate,\n \"controls\": this.controls,\n \"isActive\": false,\n \"timeSelection\": this.getTimeSelection(),\n \"playlistLength\": this.duration,\n \"playbackSeconds\": this.playbackSeconds,\n \"colors\": this.colors\n };\n\n return _defaults(data, defaults);\n }\n\n render() {\n let controlWidth = this.controls.show ? this.controls.width : 0;\n let timeScale = new TimeScale(this.duration, this.scrollLeft, this.samplesPerPixel, this.sampleRate, controlWidth);\n\n let activeTrack = this.getActiveTrack();\n let trackElements = this.tracks.map((track) => {\n return track.render(this.getTrackRenderData({\n \"isActive\": (activeTrack === track) ? true : false,\n \"shouldPlay\": this.shouldTrackPlay(track),\n \"soloed\": this.soloedTracks.indexOf(track) > -1,\n \"muted\": this.mutedTracks.indexOf(track) > -1\n }));\n });\n\n let trackSection = h(\"div.playlist-tracks\", {\n \"attributes\": {\n \"style\": \"overflow: auto;\"\n },\n \"onscroll\": (e) => {\n this.scrollLeft = pixelsToSeconds(e.target.scrollLeft, this.samplesPerPixel, this.sampleRate);\n this.ee.emit(\"scroll\", this.scrollLeft);\n },\n \"hook\": new ScrollHook(this, this.samplesPerPixel, this.sampleRate)\n }, trackElements);\n\n let containerChildren = [];\n\n if (this.showTimescale) {\n containerChildren.push(timeScale.render());\n }\n\n containerChildren.push(trackSection);\n\n return h(\"div.playlist\", {\n \"attributes\": {\n \"style\": \"overflow: hidden; position: relative;\"\n }},\n containerChildren\n );\n }\n\n getInfo() {\n var info = [];\n\n this.tracks.forEach((track) => {\n info.push(track.getTrackDetails());\n });\n\n return info;\n }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/Playlist.js\n **/","/**\n * lodash 4.0.1 (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\nvar assignInWith = require('lodash.assigninwith'),\n rest = require('lodash.rest');\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n var length = args.length;\n switch (length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used by `_.defaults` to customize its `_.assignIn` use.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\nfunction assignInDefaults(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n}\n\n/**\n * Performs a [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'user': 'fred' };\n * var other = { 'user': 'fred' };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Assigns own and inherited enumerable properties of source objects to the\n * destination object for all destination properties that resolve to `undefined`.\n * Source objects are applied from left to right. Once a property is set,\n * additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * _.defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' });\n * // => { 'user': 'barney', 'age': 36 }\n */\nvar defaults = rest(function(args) {\n args.push(undefined, assignInDefaults);\n return apply(assignInWith, undefined, args);\n});\n\nmodule.exports = defaults;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash.defaults/index.js\n ** module id = 33\n ** module chunks = 0\n **/","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\nvar keysIn = require('lodash.keysin'),\n rest = require('lodash.rest');\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : source[key];\n\n assignValue(object, key, newValue);\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return rest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a\n * [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) that affects\n * Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'user': 'fred' };\n * var other = { 'user': 'fred' };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value)) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8 which returns 'object' for typed array and weak map constructors,\n // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length,\n * else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n});\n\nmodule.exports = assignInWith;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash.assigninwith/index.js\n ** module id = 34\n ** module chunks = 0\n **/","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n stringTag = '[object String]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to determine if values are of the language type `Object`. */\nvar objectTypes = {\n 'function': true,\n 'object': true\n};\n\n/** Detect free variable `exports`. */\nvar freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)\n ? exports\n : undefined;\n\n/** Detect free variable `module`. */\nvar freeModule = (objectTypes[typeof module] && module && !module.nodeType)\n ? module\n : undefined;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global);\n\n/** Detect free variable `self`. */\nvar freeSelf = checkGlobal(objectTypes[typeof self] && self);\n\n/** Detect free variable `window`. */\nvar freeWindow = checkGlobal(objectTypes[typeof window] && window);\n\n/** Detect `this` as the global object. */\nvar thisGlobal = checkGlobal(objectTypes[typeof this] && this);\n\n/**\n * Used as a reference to the global object.\n *\n * The `this` value is used if it's the global object to avoid Greasemonkey's\n * restricted `window` object, otherwise the `window` object is used.\n */\nvar root = freeGlobal ||\n ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) ||\n freeSelf || thisGlobal || Function('return this')();\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Checks if `value` is a global object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {null|Object} Returns `value` if it's a global object, else `null`.\n */\nfunction checkGlobal(value) {\n return (value && value.Object === Object) ? value : null;\n}\n\n/**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Reflect = root.Reflect,\n enumerate = Reflect ? Reflect.enumerate : undefined,\n propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * The base implementation of `_.keysIn` which doesn't skip the constructor\n * property of prototypes or treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n object = object == null ? object : Object(object);\n\n var result = [];\n for (var key in object) {\n result.push(key);\n }\n return result;\n}\n\n// Fallback for IE < 9 with es6-shim.\nif (enumerate && !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf')) {\n baseKeysIn = function(object) {\n return iteratorToArray(enumerate(object));\n };\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a\n * [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) that affects\n * Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\n/**\n * Creates an array of index keys for `object` values of arrays,\n * `arguments` objects, and strings, otherwise `null` is returned.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array|null} Returns index keys, else `null`.\n */\nfunction indexKeys(object) {\n var length = object ? object.length : undefined;\n if (isLength(length) &&\n (isArray(object) || isString(object) || isArguments(object))) {\n return baseTimes(length, String);\n }\n return null;\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 incorrectly makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @type {Function}\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value)) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8 which returns 'object' for typed array and weak map constructors,\n // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length,\n * else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n var index = -1,\n isProto = isPrototype(object),\n props = baseKeysIn(object),\n propsLength = props.length,\n indexes = indexKeys(object),\n skipIndexes = !!indexes,\n result = indexes || [],\n length = result.length;\n\n while (++index < propsLength) {\n var key = props[index];\n if (!(skipIndexes && (key == 'length' || isIndex(key, length))) &&\n !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = keysIn;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash.keysin/index.js\n ** module id = 35\n ** module chunks = 0\n **/","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tmodule.children = [];\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n}\r\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** (webpack)/buildin/module.js\n ** module id = 36\n ** module chunks = 0\n **/","var h = require(\"./virtual-hyperscript/index.js\")\n\nmodule.exports = h\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/h.js\n ** module id = 37\n ** module chunks = 0\n **/","'use strict';\n\nvar isArray = require('x-is-array');\n\nvar VNode = require('../vnode/vnode.js');\nvar VText = require('../vnode/vtext.js');\nvar isVNode = require('../vnode/is-vnode');\nvar isVText = require('../vnode/is-vtext');\nvar isWidget = require('../vnode/is-widget');\nvar isHook = require('../vnode/is-vhook');\nvar isVThunk = require('../vnode/is-thunk');\n\nvar parseTag = require('./parse-tag.js');\nvar softSetHook = require('./hooks/soft-set-hook.js');\nvar evHook = require('./hooks/ev-hook.js');\n\nmodule.exports = h;\n\nfunction h(tagName, properties, children) {\n var childNodes = [];\n var tag, props, key, namespace;\n\n if (!children && isChildren(properties)) {\n children = properties;\n props = {};\n }\n\n props = props || properties || {};\n tag = parseTag(tagName, props);\n\n // support keys\n if (props.hasOwnProperty('key')) {\n key = props.key;\n props.key = undefined;\n }\n\n // support namespace\n if (props.hasOwnProperty('namespace')) {\n namespace = props.namespace;\n props.namespace = undefined;\n }\n\n // fix cursor bug\n if (tag === 'INPUT' &&\n !namespace &&\n props.hasOwnProperty('value') &&\n props.value !== undefined &&\n !isHook(props.value)\n ) {\n props.value = softSetHook(props.value);\n }\n\n transformProperties(props);\n\n if (children !== undefined && children !== null) {\n addChild(children, childNodes, tag, props);\n }\n\n\n return new VNode(tag, props, childNodes, key, namespace);\n}\n\nfunction addChild(c, childNodes, tag, props) {\n if (typeof c === 'string') {\n childNodes.push(new VText(c));\n } else if (typeof c === 'number') {\n childNodes.push(new VText(String(c)));\n } else if (isChild(c)) {\n childNodes.push(c);\n } else if (isArray(c)) {\n for (var i = 0; i < c.length; i++) {\n addChild(c[i], childNodes, tag, props);\n }\n } else if (c === null || c === undefined) {\n return;\n } else {\n throw UnexpectedVirtualElement({\n foreignObject: c,\n parentVnode: {\n tagName: tag,\n properties: props\n }\n });\n }\n}\n\nfunction transformProperties(props) {\n for (var propName in props) {\n if (props.hasOwnProperty(propName)) {\n var value = props[propName];\n\n if (isHook(value)) {\n continue;\n }\n\n if (propName.substr(0, 3) === 'ev-') {\n // add ev-foo support\n props[propName] = evHook(value);\n }\n }\n }\n}\n\nfunction isChild(x) {\n return isVNode(x) || isVText(x) || isWidget(x) || isVThunk(x);\n}\n\nfunction isChildren(x) {\n return typeof x === 'string' || isArray(x) || isChild(x);\n}\n\nfunction UnexpectedVirtualElement(data) {\n var err = new Error();\n\n err.type = 'virtual-hyperscript.unexpected.virtual-element';\n err.message = 'Unexpected virtual child passed to h().\\n' +\n 'Expected a VNode / Vthunk / VWidget / string but:\\n' +\n 'got:\\n' +\n errorString(data.foreignObject) +\n '.\\n' +\n 'The parent vnode is:\\n' +\n errorString(data.parentVnode)\n '\\n' +\n 'Suggested fix: change your `h(..., [ ... ])` callsite.';\n err.foreignObject = data.foreignObject;\n err.parentVnode = data.parentVnode;\n\n return err;\n}\n\nfunction errorString(obj) {\n try {\n return JSON.stringify(obj, null, ' ');\n } catch (e) {\n return String(obj);\n }\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/virtual-hyperscript/index.js\n ** module id = 38\n ** module chunks = 0\n **/","var nativeIsArray = Array.isArray\nvar toString = Object.prototype.toString\n\nmodule.exports = nativeIsArray || isArray\n\nfunction isArray(obj) {\n return toString.call(obj) === \"[object Array]\"\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/x-is-array/index.js\n ** module id = 39\n ** module chunks = 0\n **/","var version = require(\"./version\")\nvar isVNode = require(\"./is-vnode\")\nvar isWidget = require(\"./is-widget\")\nvar isThunk = require(\"./is-thunk\")\nvar isVHook = require(\"./is-vhook\")\n\nmodule.exports = VirtualNode\n\nvar noProperties = {}\nvar noChildren = []\n\nfunction VirtualNode(tagName, properties, children, key, namespace) {\n this.tagName = tagName\n this.properties = properties || noProperties\n this.children = children || noChildren\n this.key = key != null ? String(key) : undefined\n this.namespace = (typeof namespace === \"string\") ? namespace : null\n\n var count = (children && children.length) || 0\n var descendants = 0\n var hasWidgets = false\n var hasThunks = false\n var descendantHooks = false\n var hooks\n\n for (var propName in properties) {\n if (properties.hasOwnProperty(propName)) {\n var property = properties[propName]\n if (isVHook(property) && property.unhook) {\n if (!hooks) {\n hooks = {}\n }\n\n hooks[propName] = property\n }\n }\n }\n\n for (var i = 0; i < count; i++) {\n var child = children[i]\n if (isVNode(child)) {\n descendants += child.count || 0\n\n if (!hasWidgets && child.hasWidgets) {\n hasWidgets = true\n }\n\n if (!hasThunks && child.hasThunks) {\n hasThunks = true\n }\n\n if (!descendantHooks && (child.hooks || child.descendantHooks)) {\n descendantHooks = true\n }\n } else if (!hasWidgets && isWidget(child)) {\n if (typeof child.destroy === \"function\") {\n hasWidgets = true\n }\n } else if (!hasThunks && isThunk(child)) {\n hasThunks = true;\n }\n }\n\n this.count = count + descendants\n this.hasWidgets = hasWidgets\n this.hasThunks = hasThunks\n this.hooks = hooks\n this.descendantHooks = descendantHooks\n}\n\nVirtualNode.prototype.version = version\nVirtualNode.prototype.type = \"VirtualNode\"\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vnode/vnode.js\n ** module id = 40\n ** module chunks = 0\n **/","var version = require(\"./version\")\n\nmodule.exports = VirtualText\n\nfunction VirtualText(text) {\n this.text = String(text)\n}\n\nVirtualText.prototype.version = version\nVirtualText.prototype.type = \"VirtualText\"\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vnode/vtext.js\n ** module id = 41\n ** module chunks = 0\n **/","'use strict';\n\nvar split = require('browser-split');\n\nvar classIdSplit = /([\\.#]?[a-zA-Z0-9\\u007F-\\uFFFF_:-]+)/;\nvar notClassId = /^\\.|#/;\n\nmodule.exports = parseTag;\n\nfunction parseTag(tag, props) {\n if (!tag) {\n return 'DIV';\n }\n\n var noId = !(props.hasOwnProperty('id'));\n\n var tagParts = split(tag, classIdSplit);\n var tagName = null;\n\n if (notClassId.test(tagParts[1])) {\n tagName = 'DIV';\n }\n\n var classes, part, type, i;\n\n for (i = 0; i < tagParts.length; i++) {\n part = tagParts[i];\n\n if (!part) {\n continue;\n }\n\n type = part.charAt(0);\n\n if (!tagName) {\n tagName = part;\n } else if (type === '.') {\n classes = classes || [];\n classes.push(part.substring(1, part.length));\n } else if (type === '#' && noId) {\n props.id = part.substring(1, part.length);\n }\n }\n\n if (classes) {\n if (props.className) {\n classes.push(props.className);\n }\n\n props.className = classes.join(' ');\n }\n\n return props.namespace ? tagName : tagName.toUpperCase();\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/virtual-hyperscript/parse-tag.js\n ** module id = 42\n ** module chunks = 0\n **/","/*!\n * Cross-Browser Split 1.1.1\n * Copyright 2007-2012 Steven Levithan \n * Available under the MIT License\n * ECMAScript compliant, uniform cross-browser split method\n */\n\n/**\n * Splits a string into an array of strings using a regex or string separator. Matches of the\n * separator are not included in the result array. However, if `separator` is a regex that contains\n * capturing groups, backreferences are spliced into the result each time `separator` is matched.\n * Fixes browser bugs compared to the native `String.prototype.split` and can be used reliably\n * cross-browser.\n * @param {String} str String to split.\n * @param {RegExp|String} separator Regex or string to use for separating the string.\n * @param {Number} [limit] Maximum number of items to include in the result array.\n * @returns {Array} Array of substrings.\n * @example\n *\n * // Basic use\n * split('a b c d', ' ');\n * // -> ['a', 'b', 'c', 'd']\n *\n * // With limit\n * split('a b c d', ' ', 2);\n * // -> ['a', 'b']\n *\n * // Backreferences in result array\n * split('..word1 word2..', /([a-z]+)(\\d+)/i);\n * // -> ['..', 'word', '1', ' ', 'word', '2', '..']\n */\nmodule.exports = (function split(undef) {\n\n var nativeSplit = String.prototype.split,\n compliantExecNpcg = /()??/.exec(\"\")[1] === undef,\n // NPCG: nonparticipating capturing group\n self;\n\n self = function(str, separator, limit) {\n // If `separator` is not a regex, use `nativeSplit`\n if (Object.prototype.toString.call(separator) !== \"[object RegExp]\") {\n return nativeSplit.call(str, separator, limit);\n }\n var output = [],\n flags = (separator.ignoreCase ? \"i\" : \"\") + (separator.multiline ? \"m\" : \"\") + (separator.extended ? \"x\" : \"\") + // Proposed for ES6\n (separator.sticky ? \"y\" : \"\"),\n // Firefox 3+\n lastLastIndex = 0,\n // Make `global` and avoid `lastIndex` issues by working with a copy\n separator = new RegExp(separator.source, flags + \"g\"),\n separator2, match, lastIndex, lastLength;\n str += \"\"; // Type-convert\n if (!compliantExecNpcg) {\n // Doesn't need flags gy, but they don't hurt\n separator2 = new RegExp(\"^\" + separator.source + \"$(?!\\\\s)\", flags);\n }\n /* Values for `limit`, per the spec:\n * If undefined: 4294967295 // Math.pow(2, 32) - 1\n * If 0, Infinity, or NaN: 0\n * If positive number: limit = Math.floor(limit); if (limit > 4294967295) limit -= 4294967296;\n * If negative number: 4294967296 - Math.floor(Math.abs(limit))\n * If other: Type-convert, then use the above rules\n */\n limit = limit === undef ? -1 >>> 0 : // Math.pow(2, 32) - 1\n limit >>> 0; // ToUint32(limit)\n while (match = separator.exec(str)) {\n // `separator.lastIndex` is not reliable cross-browser\n lastIndex = match.index + match[0].length;\n if (lastIndex > lastLastIndex) {\n output.push(str.slice(lastLastIndex, match.index));\n // Fix browsers whose `exec` methods don't consistently return `undefined` for\n // nonparticipating capturing groups\n if (!compliantExecNpcg && match.length > 1) {\n match[0].replace(separator2, function() {\n for (var i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undef) {\n match[i] = undef;\n }\n }\n });\n }\n if (match.length > 1 && match.index < str.length) {\n Array.prototype.push.apply(output, match.slice(1));\n }\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= limit) {\n break;\n }\n }\n if (separator.lastIndex === match.index) {\n separator.lastIndex++; // Avoid an infinite loop\n }\n }\n if (lastLastIndex === str.length) {\n if (lastLength || !separator.test(\"\")) {\n output.push(\"\");\n }\n } else {\n output.push(str.slice(lastLastIndex));\n }\n return output.length > limit ? output.slice(0, limit) : output;\n };\n\n return self;\n})();\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/browser-split/index.js\n ** module id = 43\n ** module chunks = 0\n **/","'use strict';\n\nmodule.exports = SoftSetHook;\n\nfunction SoftSetHook(value) {\n if (!(this instanceof SoftSetHook)) {\n return new SoftSetHook(value);\n }\n\n this.value = value;\n}\n\nSoftSetHook.prototype.hook = function (node, propertyName) {\n if (node[propertyName] !== this.value) {\n node[propertyName] = this.value;\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/virtual-hyperscript/hooks/soft-set-hook.js\n ** module id = 44\n ** module chunks = 0\n **/","'use strict';\n\nvar EvStore = require('ev-store');\n\nmodule.exports = EvHook;\n\nfunction EvHook(value) {\n if (!(this instanceof EvHook)) {\n return new EvHook(value);\n }\n\n this.value = value;\n}\n\nEvHook.prototype.hook = function (node, propertyName) {\n var es = EvStore(node);\n var propName = propertyName.substr(3);\n\n es[propName] = this.value;\n};\n\nEvHook.prototype.unhook = function(node, propertyName) {\n var es = EvStore(node);\n var propName = propertyName.substr(3);\n\n es[propName] = undefined;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/virtual-hyperscript/hooks/ev-hook.js\n ** module id = 45\n ** module chunks = 0\n **/","'use strict';\n\nvar OneVersionConstraint = require('individual/one-version');\n\nvar MY_VERSION = '7';\nOneVersionConstraint('ev-store', MY_VERSION);\n\nvar hashKey = '__EV_STORE_KEY@' + MY_VERSION;\n\nmodule.exports = EvStore;\n\nfunction EvStore(elem) {\n var hash = elem[hashKey];\n\n if (!hash) {\n hash = elem[hashKey] = {};\n }\n\n return hash;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/ev-store/index.js\n ** module id = 46\n ** module chunks = 0\n **/","'use strict';\n\nvar Individual = require('./index.js');\n\nmodule.exports = OneVersion;\n\nfunction OneVersion(moduleName, version, defaultValue) {\n var key = '__INDIVIDUAL_ONE_VERSION_' + moduleName;\n var enforceKey = key + '_ENFORCE_SINGLETON';\n\n var versionValue = Individual(enforceKey, version);\n\n if (versionValue !== version) {\n throw new Error('Can only have one copy of ' +\n moduleName + '.\\n' +\n 'You already have version ' + versionValue +\n ' installed.\\n' +\n 'This means you cannot install version ' + version);\n }\n\n return Individual(key, defaultValue);\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/individual/one-version.js\n ** module id = 47\n ** module chunks = 0\n **/","'use strict';\n\n/*global window, global*/\n\nvar root = typeof window !== 'undefined' ?\n window : typeof global !== 'undefined' ?\n global : {};\n\nmodule.exports = Individual;\n\nfunction Individual(key, value) {\n if (key in root) {\n return root[key];\n }\n\n root[key] = value;\n\n return value;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/individual/index.js\n ** module id = 48\n ** module chunks = 0\n **/","var diff = require(\"./vtree/diff.js\")\n\nmodule.exports = diff\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/diff.js\n ** module id = 49\n ** module chunks = 0\n **/","var isArray = require(\"x-is-array\")\n\nvar VPatch = require(\"../vnode/vpatch\")\nvar isVNode = require(\"../vnode/is-vnode\")\nvar isVText = require(\"../vnode/is-vtext\")\nvar isWidget = require(\"../vnode/is-widget\")\nvar isThunk = require(\"../vnode/is-thunk\")\nvar handleThunk = require(\"../vnode/handle-thunk\")\n\nvar diffProps = require(\"./diff-props\")\n\nmodule.exports = diff\n\nfunction diff(a, b) {\n var patch = { a: a }\n walk(a, b, patch, 0)\n return patch\n}\n\nfunction walk(a, b, patch, index) {\n if (a === b) {\n return\n }\n\n var apply = patch[index]\n var applyClear = false\n\n if (isThunk(a) || isThunk(b)) {\n thunks(a, b, patch, index)\n } else if (b == null) {\n\n // If a is a widget we will add a remove patch for it\n // Otherwise any child widgets/hooks must be destroyed.\n // This prevents adding two remove patches for a widget.\n if (!isWidget(a)) {\n clearState(a, patch, index)\n apply = patch[index]\n }\n\n apply = appendPatch(apply, new VPatch(VPatch.REMOVE, a, b))\n } else if (isVNode(b)) {\n if (isVNode(a)) {\n if (a.tagName === b.tagName &&\n a.namespace === b.namespace &&\n a.key === b.key) {\n var propsPatch = diffProps(a.properties, b.properties)\n if (propsPatch) {\n apply = appendPatch(apply,\n new VPatch(VPatch.PROPS, a, propsPatch))\n }\n apply = diffChildren(a, b, patch, apply, index)\n } else {\n apply = appendPatch(apply, new VPatch(VPatch.VNODE, a, b))\n applyClear = true\n }\n } else {\n apply = appendPatch(apply, new VPatch(VPatch.VNODE, a, b))\n applyClear = true\n }\n } else if (isVText(b)) {\n if (!isVText(a)) {\n apply = appendPatch(apply, new VPatch(VPatch.VTEXT, a, b))\n applyClear = true\n } else if (a.text !== b.text) {\n apply = appendPatch(apply, new VPatch(VPatch.VTEXT, a, b))\n }\n } else if (isWidget(b)) {\n if (!isWidget(a)) {\n applyClear = true\n }\n\n apply = appendPatch(apply, new VPatch(VPatch.WIDGET, a, b))\n }\n\n if (apply) {\n patch[index] = apply\n }\n\n if (applyClear) {\n clearState(a, patch, index)\n }\n}\n\nfunction diffChildren(a, b, patch, apply, index) {\n var aChildren = a.children\n var orderedSet = reorder(aChildren, b.children)\n var bChildren = orderedSet.children\n\n var aLen = aChildren.length\n var bLen = bChildren.length\n var len = aLen > bLen ? aLen : bLen\n\n for (var i = 0; i < len; i++) {\n var leftNode = aChildren[i]\n var rightNode = bChildren[i]\n index += 1\n\n if (!leftNode) {\n if (rightNode) {\n // Excess nodes in b need to be added\n apply = appendPatch(apply,\n new VPatch(VPatch.INSERT, null, rightNode))\n }\n } else {\n walk(leftNode, rightNode, patch, index)\n }\n\n if (isVNode(leftNode) && leftNode.count) {\n index += leftNode.count\n }\n }\n\n if (orderedSet.moves) {\n // Reorder nodes last\n apply = appendPatch(apply, new VPatch(\n VPatch.ORDER,\n a,\n orderedSet.moves\n ))\n }\n\n return apply\n}\n\nfunction clearState(vNode, patch, index) {\n // TODO: Make this a single walk, not two\n unhook(vNode, patch, index)\n destroyWidgets(vNode, patch, index)\n}\n\n// Patch records for all destroyed widgets must be added because we need\n// a DOM node reference for the destroy function\nfunction destroyWidgets(vNode, patch, index) {\n if (isWidget(vNode)) {\n if (typeof vNode.destroy === \"function\") {\n patch[index] = appendPatch(\n patch[index],\n new VPatch(VPatch.REMOVE, vNode, null)\n )\n }\n } else if (isVNode(vNode) && (vNode.hasWidgets || vNode.hasThunks)) {\n var children = vNode.children\n var len = children.length\n for (var i = 0; i < len; i++) {\n var child = children[i]\n index += 1\n\n destroyWidgets(child, patch, index)\n\n if (isVNode(child) && child.count) {\n index += child.count\n }\n }\n } else if (isThunk(vNode)) {\n thunks(vNode, null, patch, index)\n }\n}\n\n// Create a sub-patch for thunks\nfunction thunks(a, b, patch, index) {\n var nodes = handleThunk(a, b)\n var thunkPatch = diff(nodes.a, nodes.b)\n if (hasPatches(thunkPatch)) {\n patch[index] = new VPatch(VPatch.THUNK, null, thunkPatch)\n }\n}\n\nfunction hasPatches(patch) {\n for (var index in patch) {\n if (index !== \"a\") {\n return true\n }\n }\n\n return false\n}\n\n// Execute hooks when two nodes are identical\nfunction unhook(vNode, patch, index) {\n if (isVNode(vNode)) {\n if (vNode.hooks) {\n patch[index] = appendPatch(\n patch[index],\n new VPatch(\n VPatch.PROPS,\n vNode,\n undefinedKeys(vNode.hooks)\n )\n )\n }\n\n if (vNode.descendantHooks || vNode.hasThunks) {\n var children = vNode.children\n var len = children.length\n for (var i = 0; i < len; i++) {\n var child = children[i]\n index += 1\n\n unhook(child, patch, index)\n\n if (isVNode(child) && child.count) {\n index += child.count\n }\n }\n }\n } else if (isThunk(vNode)) {\n thunks(vNode, null, patch, index)\n }\n}\n\nfunction undefinedKeys(obj) {\n var result = {}\n\n for (var key in obj) {\n result[key] = undefined\n }\n\n return result\n}\n\n// List diff, naive left to right reordering\nfunction reorder(aChildren, bChildren) {\n // O(M) time, O(M) memory\n var bChildIndex = keyIndex(bChildren)\n var bKeys = bChildIndex.keys\n var bFree = bChildIndex.free\n\n if (bFree.length === bChildren.length) {\n return {\n children: bChildren,\n moves: null\n }\n }\n\n // O(N) time, O(N) memory\n var aChildIndex = keyIndex(aChildren)\n var aKeys = aChildIndex.keys\n var aFree = aChildIndex.free\n\n if (aFree.length === aChildren.length) {\n return {\n children: bChildren,\n moves: null\n }\n }\n\n // O(MAX(N, M)) memory\n var newChildren = []\n\n var freeIndex = 0\n var freeCount = bFree.length\n var deletedItems = 0\n\n // Iterate through a and match a node in b\n // O(N) time,\n for (var i = 0 ; i < aChildren.length; i++) {\n var aItem = aChildren[i]\n var itemIndex\n\n if (aItem.key) {\n if (bKeys.hasOwnProperty(aItem.key)) {\n // Match up the old keys\n itemIndex = bKeys[aItem.key]\n newChildren.push(bChildren[itemIndex])\n\n } else {\n // Remove old keyed items\n itemIndex = i - deletedItems++\n newChildren.push(null)\n }\n } else {\n // Match the item in a with the next free item in b\n if (freeIndex < freeCount) {\n itemIndex = bFree[freeIndex++]\n newChildren.push(bChildren[itemIndex])\n } else {\n // There are no free items in b to match with\n // the free items in a, so the extra free nodes\n // are deleted.\n itemIndex = i - deletedItems++\n newChildren.push(null)\n }\n }\n }\n\n var lastFreeIndex = freeIndex >= bFree.length ?\n bChildren.length :\n bFree[freeIndex]\n\n // Iterate through b and append any new keys\n // O(M) time\n for (var j = 0; j < bChildren.length; j++) {\n var newItem = bChildren[j]\n\n if (newItem.key) {\n if (!aKeys.hasOwnProperty(newItem.key)) {\n // Add any new keyed items\n // We are adding new items to the end and then sorting them\n // in place. In future we should insert new items in place.\n newChildren.push(newItem)\n }\n } else if (j >= lastFreeIndex) {\n // Add any leftover non-keyed items\n newChildren.push(newItem)\n }\n }\n\n var simulate = newChildren.slice()\n var simulateIndex = 0\n var removes = []\n var inserts = []\n var simulateItem\n\n for (var k = 0; k < bChildren.length;) {\n var wantedItem = bChildren[k]\n simulateItem = simulate[simulateIndex]\n\n // remove items\n while (simulateItem === null && simulate.length) {\n removes.push(remove(simulate, simulateIndex, null))\n simulateItem = simulate[simulateIndex]\n }\n\n if (!simulateItem || simulateItem.key !== wantedItem.key) {\n // if we need a key in this position...\n if (wantedItem.key) {\n if (simulateItem && simulateItem.key) {\n // if an insert doesn't put this key in place, it needs to move\n if (bKeys[simulateItem.key] !== k + 1) {\n removes.push(remove(simulate, simulateIndex, simulateItem.key))\n simulateItem = simulate[simulateIndex]\n // if the remove didn't put the wanted item in place, we need to insert it\n if (!simulateItem || simulateItem.key !== wantedItem.key) {\n inserts.push({key: wantedItem.key, to: k})\n }\n // items are matching, so skip ahead\n else {\n simulateIndex++\n }\n }\n else {\n inserts.push({key: wantedItem.key, to: k})\n }\n }\n else {\n inserts.push({key: wantedItem.key, to: k})\n }\n k++\n }\n // a key in simulate has no matching wanted key, remove it\n else if (simulateItem && simulateItem.key) {\n removes.push(remove(simulate, simulateIndex, simulateItem.key))\n }\n }\n else {\n simulateIndex++\n k++\n }\n }\n\n // remove all the remaining nodes from simulate\n while(simulateIndex < simulate.length) {\n simulateItem = simulate[simulateIndex]\n removes.push(remove(simulate, simulateIndex, simulateItem && simulateItem.key))\n }\n\n // If the only moves we have are deletes then we can just\n // let the delete patch remove these items.\n if (removes.length === deletedItems && !inserts.length) {\n return {\n children: newChildren,\n moves: null\n }\n }\n\n return {\n children: newChildren,\n moves: {\n removes: removes,\n inserts: inserts\n }\n }\n}\n\nfunction remove(arr, index, key) {\n arr.splice(index, 1)\n\n return {\n from: index,\n key: key\n }\n}\n\nfunction keyIndex(children) {\n var keys = {}\n var free = []\n var length = children.length\n\n for (var i = 0; i < length; i++) {\n var child = children[i]\n\n if (child.key) {\n keys[child.key] = i\n } else {\n free.push(i)\n }\n }\n\n return {\n keys: keys, // A hash of key name to index\n free: free // An array of unkeyed item indices\n }\n}\n\nfunction appendPatch(apply, patch) {\n if (apply) {\n if (isArray(apply)) {\n apply.push(patch)\n } else {\n apply = [apply, patch]\n }\n\n return apply\n } else {\n return patch\n }\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vtree/diff.js\n ** module id = 50\n ** module chunks = 0\n **/","var version = require(\"./version\")\n\nVirtualPatch.NONE = 0\nVirtualPatch.VTEXT = 1\nVirtualPatch.VNODE = 2\nVirtualPatch.WIDGET = 3\nVirtualPatch.PROPS = 4\nVirtualPatch.ORDER = 5\nVirtualPatch.INSERT = 6\nVirtualPatch.REMOVE = 7\nVirtualPatch.THUNK = 8\n\nmodule.exports = VirtualPatch\n\nfunction VirtualPatch(type, vNode, patch) {\n this.type = Number(type)\n this.vNode = vNode\n this.patch = patch\n}\n\nVirtualPatch.prototype.version = version\nVirtualPatch.prototype.type = \"VirtualPatch\"\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vnode/vpatch.js\n ** module id = 51\n ** module chunks = 0\n **/","var isObject = require(\"is-object\")\nvar isHook = require(\"../vnode/is-vhook\")\n\nmodule.exports = diffProps\n\nfunction diffProps(a, b) {\n var diff\n\n for (var aKey in a) {\n if (!(aKey in b)) {\n diff = diff || {}\n diff[aKey] = undefined\n }\n\n var aValue = a[aKey]\n var bValue = b[aKey]\n\n if (aValue === bValue) {\n continue\n } else if (isObject(aValue) && isObject(bValue)) {\n if (getPrototype(bValue) !== getPrototype(aValue)) {\n diff = diff || {}\n diff[aKey] = bValue\n } else if (isHook(bValue)) {\n diff = diff || {}\n diff[aKey] = bValue\n } else {\n var objectDiff = diffProps(aValue, bValue)\n if (objectDiff) {\n diff = diff || {}\n diff[aKey] = objectDiff\n }\n }\n } else {\n diff = diff || {}\n diff[aKey] = bValue\n }\n }\n\n for (var bKey in b) {\n if (!(bKey in a)) {\n diff = diff || {}\n diff[bKey] = b[bKey]\n }\n }\n\n return diff\n}\n\nfunction getPrototype(value) {\n if (Object.getPrototypeOf) {\n return Object.getPrototypeOf(value)\n } else if (value.__proto__) {\n return value.__proto__\n } else if (value.constructor) {\n return value.constructor.prototype\n }\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vtree/diff-props.js\n ** module id = 52\n ** module chunks = 0\n **/","var patch = require(\"./vdom/patch.js\")\n\nmodule.exports = patch\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/patch.js\n ** module id = 53\n ** module chunks = 0\n **/","var document = require(\"global/document\")\nvar isArray = require(\"x-is-array\")\n\nvar render = require(\"./create-element\")\nvar domIndex = require(\"./dom-index\")\nvar patchOp = require(\"./patch-op\")\nmodule.exports = patch\n\nfunction patch(rootNode, patches, renderOptions) {\n renderOptions = renderOptions || {}\n renderOptions.patch = renderOptions.patch && renderOptions.patch !== patch\n ? renderOptions.patch\n : patchRecursive\n renderOptions.render = renderOptions.render || render\n\n return renderOptions.patch(rootNode, patches, renderOptions)\n}\n\nfunction patchRecursive(rootNode, patches, renderOptions) {\n var indices = patchIndices(patches)\n\n if (indices.length === 0) {\n return rootNode\n }\n\n var index = domIndex(rootNode, patches.a, indices)\n var ownerDocument = rootNode.ownerDocument\n\n if (!renderOptions.document && ownerDocument !== document) {\n renderOptions.document = ownerDocument\n }\n\n for (var i = 0; i < indices.length; i++) {\n var nodeIndex = indices[i]\n rootNode = applyPatch(rootNode,\n index[nodeIndex],\n patches[nodeIndex],\n renderOptions)\n }\n\n return rootNode\n}\n\nfunction applyPatch(rootNode, domNode, patchList, renderOptions) {\n if (!domNode) {\n return rootNode\n }\n\n var newNode\n\n if (isArray(patchList)) {\n for (var i = 0; i < patchList.length; i++) {\n newNode = patchOp(patchList[i], domNode, renderOptions)\n\n if (domNode === rootNode) {\n rootNode = newNode\n }\n }\n } else {\n newNode = patchOp(patchList, domNode, renderOptions)\n\n if (domNode === rootNode) {\n rootNode = newNode\n }\n }\n\n return rootNode\n}\n\nfunction patchIndices(patches) {\n var indices = []\n\n for (var key in patches) {\n if (key !== \"a\") {\n indices.push(Number(key))\n }\n }\n\n return indices\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vdom/patch.js\n ** module id = 54\n ** module chunks = 0\n **/","// Maps a virtual DOM tree onto a real DOM tree in an efficient manner.\n// We don't want to read all of the DOM nodes in the tree so we use\n// the in-order tree indexing to eliminate recursion down certain branches.\n// We only recurse into a DOM node if we know that it contains a child of\n// interest.\n\nvar noChild = {}\n\nmodule.exports = domIndex\n\nfunction domIndex(rootNode, tree, indices, nodes) {\n if (!indices || indices.length === 0) {\n return {}\n } else {\n indices.sort(ascending)\n return recurse(rootNode, tree, indices, nodes, 0)\n }\n}\n\nfunction recurse(rootNode, tree, indices, nodes, rootIndex) {\n nodes = nodes || {}\n\n\n if (rootNode) {\n if (indexInRange(indices, rootIndex, rootIndex)) {\n nodes[rootIndex] = rootNode\n }\n\n var vChildren = tree.children\n\n if (vChildren) {\n\n var childNodes = rootNode.childNodes\n\n for (var i = 0; i < tree.children.length; i++) {\n rootIndex += 1\n\n var vChild = vChildren[i] || noChild\n var nextIndex = rootIndex + (vChild.count || 0)\n\n // skip recursion down the tree if there are no nodes down here\n if (indexInRange(indices, rootIndex, nextIndex)) {\n recurse(childNodes[i], vChild, indices, nodes, rootIndex)\n }\n\n rootIndex = nextIndex\n }\n }\n }\n\n return nodes\n}\n\n// Binary search for an index in the interval [left, right]\nfunction indexInRange(indices, left, right) {\n if (indices.length === 0) {\n return false\n }\n\n var minIndex = 0\n var maxIndex = indices.length - 1\n var currentIndex\n var currentItem\n\n while (minIndex <= maxIndex) {\n currentIndex = ((maxIndex + minIndex) / 2) >> 0\n currentItem = indices[currentIndex]\n\n if (minIndex === maxIndex) {\n return currentItem >= left && currentItem <= right\n } else if (currentItem < left) {\n minIndex = currentIndex + 1\n } else if (currentItem > right) {\n maxIndex = currentIndex - 1\n } else {\n return true\n }\n }\n\n return false;\n}\n\nfunction ascending(a, b) {\n return a > b ? 1 : -1\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vdom/dom-index.js\n ** module id = 55\n ** module chunks = 0\n **/","var applyProperties = require(\"./apply-properties\")\n\nvar isWidget = require(\"../vnode/is-widget.js\")\nvar VPatch = require(\"../vnode/vpatch.js\")\n\nvar updateWidget = require(\"./update-widget\")\n\nmodule.exports = applyPatch\n\nfunction applyPatch(vpatch, domNode, renderOptions) {\n var type = vpatch.type\n var vNode = vpatch.vNode\n var patch = vpatch.patch\n\n switch (type) {\n case VPatch.REMOVE:\n return removeNode(domNode, vNode)\n case VPatch.INSERT:\n return insertNode(domNode, patch, renderOptions)\n case VPatch.VTEXT:\n return stringPatch(domNode, vNode, patch, renderOptions)\n case VPatch.WIDGET:\n return widgetPatch(domNode, vNode, patch, renderOptions)\n case VPatch.VNODE:\n return vNodePatch(domNode, vNode, patch, renderOptions)\n case VPatch.ORDER:\n reorderChildren(domNode, patch)\n return domNode\n case VPatch.PROPS:\n applyProperties(domNode, patch, vNode.properties)\n return domNode\n case VPatch.THUNK:\n return replaceRoot(domNode,\n renderOptions.patch(domNode, patch, renderOptions))\n default:\n return domNode\n }\n}\n\nfunction removeNode(domNode, vNode) {\n var parentNode = domNode.parentNode\n\n if (parentNode) {\n parentNode.removeChild(domNode)\n }\n\n destroyWidget(domNode, vNode);\n\n return null\n}\n\nfunction insertNode(parentNode, vNode, renderOptions) {\n var newNode = renderOptions.render(vNode, renderOptions)\n\n if (parentNode) {\n parentNode.appendChild(newNode)\n }\n\n return parentNode\n}\n\nfunction stringPatch(domNode, leftVNode, vText, renderOptions) {\n var newNode\n\n if (domNode.nodeType === 3) {\n domNode.replaceData(0, domNode.length, vText.text)\n newNode = domNode\n } else {\n var parentNode = domNode.parentNode\n newNode = renderOptions.render(vText, renderOptions)\n\n if (parentNode && newNode !== domNode) {\n parentNode.replaceChild(newNode, domNode)\n }\n }\n\n return newNode\n}\n\nfunction widgetPatch(domNode, leftVNode, widget, renderOptions) {\n var updating = updateWidget(leftVNode, widget)\n var newNode\n\n if (updating) {\n newNode = widget.update(leftVNode, domNode) || domNode\n } else {\n newNode = renderOptions.render(widget, renderOptions)\n }\n\n var parentNode = domNode.parentNode\n\n if (parentNode && newNode !== domNode) {\n parentNode.replaceChild(newNode, domNode)\n }\n\n if (!updating) {\n destroyWidget(domNode, leftVNode)\n }\n\n return newNode\n}\n\nfunction vNodePatch(domNode, leftVNode, vNode, renderOptions) {\n var parentNode = domNode.parentNode\n var newNode = renderOptions.render(vNode, renderOptions)\n\n if (parentNode && newNode !== domNode) {\n parentNode.replaceChild(newNode, domNode)\n }\n\n return newNode\n}\n\nfunction destroyWidget(domNode, w) {\n if (typeof w.destroy === \"function\" && isWidget(w)) {\n w.destroy(domNode)\n }\n}\n\nfunction reorderChildren(domNode, moves) {\n var childNodes = domNode.childNodes\n var keyMap = {}\n var node\n var remove\n var insert\n\n for (var i = 0; i < moves.removes.length; i++) {\n remove = moves.removes[i]\n node = childNodes[remove.from]\n if (remove.key) {\n keyMap[remove.key] = node\n }\n domNode.removeChild(node)\n }\n\n var length = childNodes.length\n for (var j = 0; j < moves.inserts.length; j++) {\n insert = moves.inserts[j]\n node = keyMap[insert.key]\n // this is the weirdest bug i've ever seen in webkit\n domNode.insertBefore(node, insert.to >= length++ ? null : childNodes[insert.to])\n }\n}\n\nfunction replaceRoot(oldRoot, newRoot) {\n if (oldRoot && newRoot && oldRoot !== newRoot && oldRoot.parentNode) {\n oldRoot.parentNode.replaceChild(newRoot, oldRoot)\n }\n\n return newRoot;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vdom/patch-op.js\n ** module id = 56\n ** module chunks = 0\n **/","var isWidget = require(\"../vnode/is-widget.js\")\n\nmodule.exports = updateWidget\n\nfunction updateWidget(a, b) {\n if (isWidget(a) && isWidget(b)) {\n if (\"name\" in a && \"name\" in b) {\n return a.id === b.id\n } else {\n return a.init === b.init\n }\n }\n\n return false\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vdom/update-widget.js\n ** module id = 57\n ** module chunks = 0\n **/","'use strict';\n\nexport function samplesToSeconds(samples, sampleRate) {\n return samples / sampleRate;\n}\n\nexport function secondsToSamples(seconds, sampleRate) {\n return Math.ceil(seconds * sampleRate);\n}\n\nexport function samplesToPixels(samples, resolution) {\n return ~~(samples / resolution);\n}\n\nexport function pixelsToSamples(pixels, resolution) {\n return ~~(pixels * resolution);\n}\n\nexport function pixelsToSeconds(pixels, resolution, sampleRate) {\n return pixels * resolution / sampleRate;\n}\n\nexport function secondsToPixels(seconds, resolution, sampleRate) {\n return Math.ceil(seconds * sampleRate / resolution);\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/utils/conversions.js\n **/","'use strict';\n\nimport BlobLoader from './BlobLoader';\nimport XHRLoader from './XHRLoader';\n\nexport default class {\n static createLoader(src, audioContext, ee) {\n if (src instanceof Blob) {\n return new BlobLoader(src, audioContext, ee);\n }\n else if (typeof(src) === \"string\") {\n \treturn new XHRLoader(src, audioContext, ee);\n }\n else {\n \tthrow new Error(\"Unsupported src type\");\n }\n }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/track/loader/LoaderFactory.js\n **/","'use strict';\n\nimport Loader from './Loader';\n\nexport default class extends Loader {\n\n /*\n * Loads an audio file via a FileReader\n */\n load() {\n return new Promise((resolve, reject) => {\n if (this.src.type.match(/audio.*/)) {\n let fr = new FileReader();\n\n fr.readAsArrayBuffer(this.src);\n\n fr.addEventListener('progress', (e) => {\n super.fileProgress(e);\n });\n\n fr.addEventListener('load', (e) => {\n let decoderPromise = super.fileLoad(e);\n\n decoderPromise.then((audioBuffer) => {\n resolve(audioBuffer);\n });\n });\n\n fr.addEventListener('error', function () {\n reject(Error(\"Error reading Blob\"));\n });\n }\n else {\n reject(Error(`Unsupported file type ${this.src.type}`));\n }\n });\n }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/track/loader/BlobLoader.js\n **/","'use strict';\n\nexport const STATE_UNINITIALIZED = 0;\nexport const STATE_LOADING = 1;\nexport const STATE_DECODING = 2;\nexport const STATE_FINISHED = 3;\n\nexport default class {\n constructor(src, audioContext, ee) {\n this.src = src;\n this.ac = audioContext;\n this.audioRequestState = STATE_UNINITIALIZED;\n this.ee = ee;\n }\n\n setStateChange(state) {\n this.audioRequestState = state;\n this.ee.emit('audiorequeststatechange', this.audioRequestState, this.src);\n }\n\n fileProgress(e) {\n let percentComplete = 0;\n\n if (this.audioRequestState === STATE_UNINITIALIZED) {\n this.setStateChange(STATE_LOADING);\n }\n\n if (e.lengthComputable) {\n percentComplete = e.loaded / e.total * 100;\n }\n\n this.ee.emit('loadprogress', percentComplete, this.src);\n }\n\n fileLoad(e) {\n let audioData = e.target.response || e.target.result;\n\n this.setStateChange(STATE_DECODING);\n\n return new Promise((resolve, reject) => {\n this.ac.decodeAudioData(\n audioData,\n (audioBuffer) => {\n this.audioBuffer = audioBuffer;\n this.setStateChange(STATE_FINISHED);\n\n resolve(audioBuffer);\n\n },\n (err) => { \n reject(Error(`Unable to decode Audio Data for ${this.src}`));\n }\n );\n });\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/track/loader/Loader.js\n **/","'use strict';\n\nimport Loader from './Loader';\n\nexport default class extends Loader {\n\n /**\n * Loads an audio file via XHR.\n */\n load() {\n return new Promise((resolve, reject) => {\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', this.src, true);\n xhr.responseType = 'arraybuffer';\n xhr.send();\n\n xhr.addEventListener('progress', (e) => {\n super.fileProgress(e);\n });\n\n xhr.addEventListener('load', (e) => {\n let decoderPromise = super.fileLoad(e);\n\n decoderPromise.then((audioBuffer) => {\n resolve(audioBuffer);\n });\n });\n\n xhr.addEventListener('error', () => {\n reject(Error(`Track ${this.src} failed to load`));\n });\n });\n }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/track/loader/XHRLoader.js\n **/","import {secondsToPixels} from '../utils/conversions'\n\n/*\n* virtual-dom hook for scrolling the track container.\n*/\nexport default class {\n constructor(track, resolution, sampleRate) {\n this.track = track;\n this.resolution = resolution;\n this.sampleRate = sampleRate;\n }\n\n hook(trackArea, propertyName, previousValue) {\n trackArea.scrollLeft = secondsToPixels(this.track.scrollLeft, this.resolution, this.sampleRate);\n }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/render/ScrollHook.js\n **/","'use strict';\n\nimport {secondsToPixels} from './utils/conversions';\n\nimport h from 'virtual-dom/h';\n\nimport TimeScaleHook from './render/TimeScaleHook';\n\nexport default class {\n\n constructor(duration, offset, samplesPerPixel, sampleRate, marginLeft=0) {\n this.duration = duration;\n this.offset = offset;\n this.samplesPerPixel = samplesPerPixel;\n this.sampleRate = sampleRate;\n this.marginLeft = marginLeft;\n\n this.timeinfo = {\n 20000: {\n marker: 30000,\n bigStep: 10000,\n smallStep: 5000,\n secondStep: 5\n },\n 12000: {\n marker: 15000,\n bigStep: 5000,\n smallStep: 1000,\n secondStep: 1\n },\n 10000: {\n marker: 10000,\n bigStep: 5000,\n smallStep: 1000,\n secondStep: 1\n },\n 5000: {\n marker: 5000,\n bigStep: 1000,\n smallStep: 500,\n secondStep: 1/2\n },\n 2500: {\n marker: 2000,\n bigStep: 1000,\n smallStep: 500,\n secondStep: 1/2\n },\n 1500: {\n marker: 2000,\n bigStep: 1000,\n smallStep: 200,\n secondStep: 1/5\n },\n 700: {\n marker: 1000,\n bigStep: 500,\n smallStep: 100,\n secondStep: 1/10\n }\n };\n }\n\n getScaleInfo(resolution) {\n var keys, i, end;\n\n keys = Object.keys(this.timeinfo).map(function(item) {\n return parseInt(item, 10);\n });\n\n //make sure keys are numerically sorted.\n keys = keys.sort(function(a, b){return a - b});\n\n for (i = 0, end = keys.length; i < end; i++) {\n if (resolution <= keys[i]) {\n return this.timeinfo[keys[i]];\n } \n }\n }\n\n /*\n Return time in format mm:ss\n */\n formatTime(milliseconds) {\n var out, m, s, seconds;\n\n seconds = milliseconds/1000;\n\n s = seconds % 60;\n m = (seconds - s) / 60;\n\n if (s < 10) {\n s = \"0\"+s;\n }\n\n out = m + \":\" + s;\n\n return out;\n }\n\n render() {\n let widthX = secondsToPixels(this.duration, this.samplesPerPixel, this.sampleRate);\n let pixPerSec = this.sampleRate / this.samplesPerPixel;\n let pixOffset = secondsToPixels(this.offset, this.samplesPerPixel, this.sampleRate);\n let scaleInfo = this.getScaleInfo(this.samplesPerPixel);\n let canvasInfo = {};\n let timeMarkers = [];\n let i;\n let end = widthX + pixOffset;\n let pixIndex;\n let pix;\n let counter = 0;\n\n for (i = 0; i < end; i = i + pixPerSec * scaleInfo.secondStep) {\n\n pixIndex = ~~(i);\n pix = pixIndex - pixOffset;\n\n if (pixIndex >= pixOffset) {\n //put a timestamp every 30 seconds.\n if (scaleInfo.marker && (counter % scaleInfo.marker === 0)) {\n timeMarkers.push(h(\"div.time\", {attributes: {\n \"style\": `position: absolute; left: ${pix}px;`\n }}, [this.formatTime(counter)] ));\n\n canvasInfo[pix] = 10;\n }\n else if (scaleInfo.bigStep && (counter % scaleInfo.bigStep === 0)) {\n canvasInfo[pix] = 5;\n }\n else if (scaleInfo.smallStep && (counter % scaleInfo.smallStep === 0)) {\n canvasInfo[pix] = 2;\n }\n }\n\n counter += 1000 * scaleInfo.secondStep; \n }\n\n return h(\"div.playlist-time-scale\", {\n \"attributes\": {\n \"style\": `position: relative; left: 0; right: 0; margin-left: ${this.marginLeft}px;`\n }}, [\n\n timeMarkers,\n\n h(\"canvas\", {\n attributes: {\n \"width\": widthX,\n \"height\": 30,\n \"style\": \"position: absolute; left: 0; right: 0; top: 0; bottom: 0;\"\n },\n \"hook\": new TimeScaleHook(canvasInfo, this.offset, this.samplesPerPixel, this.duration)\n })\n ]);\n }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/TimeScale.js\n **/","/*\n* virtual-dom hook for rendering the time scale canvas.\n*/\nexport default class {\n\tconstructor(tickInfo, offset, samplesPerPixel, duration) {\n this.tickInfo = tickInfo;\n this.offset = offset;\n this.samplesPerPixel = samplesPerPixel;\n this.duration = duration;\n }\n\n hook(canvas, prop, prev) {\n \t//canvas is up to date\n if (prev !== undefined \n \t&& (prev.offset === this.offset)\n \t&& (prev.duration === this.duration)\n \t&& (prev.samplesPerPixel === this.samplesPerPixel)) {\n return;\n }\n\n \tlet width = canvas.width;\n \tlet height = canvas.height;\n \tlet cc = canvas.getContext('2d');\n\n \tcc.clearRect(0, 0, width, height);\n \t\n Object.keys(this.tickInfo).forEach((x) => {\n \tlet scaleHeight = this.tickInfo[x];\n \tlet scaleY = height - scaleHeight;\n \tcc.fillRect(x, scaleY, 1, scaleHeight);\n });\n }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/render/TimeScaleHook.js\n **/","'use strict';\n\nimport _assign from 'lodash.assign';\nimport _forOwn from 'lodash.forown';\n\nimport uuid from 'uuid';\nimport h from 'virtual-dom/h';\n\nimport {secondsToPixels, secondsToSamples} from './utils/conversions';\nimport extractPeaks from 'webaudio-peaks';\nimport stateClasses from './track/states';\n\nimport CanvasHook from './render/CanvasHook';\nimport FadeCanvasHook from './render/FadeCanvasHook';\nimport VolumeSliderHook from './render/VolumeSliderHook';\n\nimport {FADEIN, FADEOUT} from 'fade-maker';\n\nconst MAX_CANVAS_WIDTH = 1000;\n\nexport default class {\n\n constructor() {\n\n this.name = \"Untitled\";\n this.gain = 1;\n this.fades = {};\n this.peakData = {\n type: \"WebAudio\",\n mono: false\n };\n\n this.cueIn = 0;\n this.cueOut = 0;\n this.duration = 0;\n this.startTime = 0;\n this.endTime = 0;\n }\n\n setEventEmitter(ee) {\n this.ee = ee;\n }\n\n setName(name) {\n this.name = name;\n }\n\n setCues(cueIn, cueOut) {\n if (cueOut < cueIn) {\n throw new Error(\"cue out cannot be less than cue in\");\n }\n\n this.cueIn = cueIn;\n this.cueOut = cueOut;\n this.duration = this.cueOut - this.cueIn;\n this.endTime = this.startTime + this.duration;\n }\n\n /*\n * start, end in seconds relative to the entire playlist.\n */\n trim(start, end) {\n let trackStart = this.getStartTime();\n let trackEnd = this.getEndTime();\n let offset = this.cueIn - trackStart;\n\n if ((trackStart <= start && trackEnd >= start) ||\n (trackStart <= end && trackEnd >= end)) {\n\n let cueIn = (start < trackStart) ? trackStart : start;\n let cueOut = (end > trackEnd) ? trackEnd : end;\n\n this.setCues(cueIn + offset, cueOut + offset);\n if (start > trackStart) {\n this.setStartTime(start);\n }\n }\n }\n\n setStartTime(start) {\n this.startTime = start;\n this.endTime = start + this.duration;\n }\n\n setPlayout(playout) {\n this.playout = playout;\n }\n\n setEnabledStates(enabledStates={}) {\n let defaultStatesEnabled = {\n 'cursor': true,\n 'fadein': true,\n 'fadeout': true,\n 'select': true,\n 'shift': true\n };\n\n this.enabledStates = _assign(defaultStatesEnabled, enabledStates);\n }\n\n setFadeIn(duration, shape=\"logarithmic\") {\n if (duration > this.duration) {\n throw new Error(\"Invalid Fade In\");\n }\n\n let fade = {\n \"shape\": shape,\n \"start\": 0,\n \"end\": duration\n };\n\n if (this.fadeIn) {\n this.removeFade(this.fadeIn);\n this.fadeIn = undefined;\n }\n\n this.fadeIn = this.saveFade(FADEIN, fade.shape, fade.start, fade.end);\n }\n\n setFadeOut(duration, shape=\"logarithmic\") {\n if (duration > this.duration) {\n throw new Error(\"Invalid Fade Out\");\n }\n\n let fade = {\n \"shape\": shape,\n \"start\": this.duration - duration,\n \"end\": this.duration\n };\n\n if (this.fadeOut) {\n this.removeFade(this.fadeOut);\n this.fadeOut = undefined;\n }\n\n this.fadeOut = this.saveFade(FADEOUT, fade.shape, fade.start, fade.end);\n }\n\n saveFade(type, shape, start, end) {\n let id = uuid.v4();\n \n this.fades[id] = {\n type: type,\n shape: shape,\n start: start,\n end: end\n };\n\n return id;\n }\n\n removeFade(id) {\n delete this.fades[id];\n }\n\n setBuffer(buffer) {\n this.buffer = buffer;\n }\n\n setPeakData(data) {\n this.peakData = data;\n }\n\n calculatePeaks(samplesPerPixel, sampleRate) {\n let cueIn = secondsToSamples(this.cueIn, sampleRate);\n let cueOut = secondsToSamples(this.cueOut, sampleRate);\n\n this.setPeaks(extractPeaks(this.buffer, samplesPerPixel, this.peakData.mono, cueIn, cueOut));\n }\n\n setPeaks(peaks) {\n this.peaks = peaks;\n }\n\n setState(state) {\n this.state = state;\n }\n\n getStartTime() {\n return this.startTime;\n }\n\n getEndTime() {\n return this.endTime;\n }\n\n getDuration() {\n return this.duration;\n }\n\n isPlaying() {\n return this.playout.isPlaying();\n }\n\n setShouldPlay(bool) {\n this.playout.setShouldPlay(bool);\n }\n\n setGainLevel(level) {\n this.gain = level;\n this.playout.setVolumeGainLevel(level);\n }\n\n setMasterGainLevel(level) {\n this.playout.setMasterGainLevel(level);\n }\n\n /*\n startTime, endTime in seconds (float).\n segment is for a highlighted section in the UI.\n\n returns a Promise that will resolve when the AudioBufferSource\n is either stopped or plays out naturally.\n */\n schedulePlay(now, startTime, endTime, options) { \n var start,\n duration,\n relPos,\n when = now,\n segment = (endTime) ? (endTime - startTime) : undefined,\n sourcePromise;\n\n //1) track has no content to play.\n //2) track does not play in this selection.\n if ((this.endTime <= startTime) || (segment && (startTime + segment) < this.startTime)) {\n //return a resolved promise since this track is technically \"stopped\".\n return Promise.resolve();\n }\n\n //track should have something to play if it gets here.\n\n //the track starts in the future or on the cursor position\n if (this.startTime >= startTime) {\n start = 0;\n when = when + this.startTime - startTime; //schedule additional delay for this audio node.\n\n if (endTime) {\n segment = segment - (this.startTime - startTime);\n duration = Math.min(segment, this.duration);\n }\n else {\n duration = this.duration;\n }\n }\n else {\n start = startTime - this.startTime;\n\n if (endTime) {\n duration = Math.min(segment, this.duration - start);\n }\n else {\n duration = this.duration - start;\n }\n }\n\n start = start + this.cueIn;\n relPos = startTime - this.startTime;\n\n sourcePromise = this.playout.setUpSource();\n\n //param relPos: cursor position in seconds relative to this track.\n //can be negative if the cursor is placed before the start of this track etc.\n _forOwn(this.fades, (fade) => {\n let startTime;\n let duration;\n\n //only apply fade if it's ahead of the cursor.\n if (relPos < fade.end) {\n if (relPos <= fade.start) {\n startTime = now + (fade.start - relPos);\n duration = fade.end - fade.start;\n }\n else if (relPos > fade.start && relPos < fade.end) {\n startTime = now - (relPos - fade.start);\n duration = fade.end - fade.start;\n }\n\n switch (fade.type) {\n case FADEIN:\n this.playout.applyFadeIn(startTime, duration, fade.shape);\n break;\n case FADEOUT:\n this.playout.applyFadeOut(startTime, duration, fade.shape);\n break;\n default:\n throw new Error(\"Invalid fade type saved on track.\");\n }\n }\n });\n\n this.playout.setVolumeGainLevel(this.gain);\n this.playout.setShouldPlay(options.shouldPlay);\n this.playout.setMasterGainLevel(options.masterGain);\n this.playout.play(when, start, duration);\n\n return sourcePromise;\n }\n\n scheduleStop(when=0) {\n this.playout.stop(when);\n }\n\n renderTimeSelection(data) {\n let startX = secondsToPixels(data.timeSelection.start, data.resolution, data.sampleRate);\n let endX = secondsToPixels(data.timeSelection.end, data.resolution, data.sampleRate);\n let width = endX - startX + 1;\n let className = (width > 1) ? \"segment\" : \"point\";\n\n return h(`div.selection.${className}`, {\n attributes: {\n \"style\": `position: absolute; width: ${width}px; bottom: 0; top: 0; left: ${startX}px; z-index: 4;`\n }\n });\n }\n\n renderOverlay(data) {\n let channelPixels = secondsToPixels(data.playlistLength, data.resolution, data.sampleRate);\n\n let config = {\n attributes: {\n \"style\": `position: absolute; top: 0; right: 0; bottom: 0; left: 0; width: ${channelPixels}px; z-index: 9;`\n }\n };\n\n let stateClass = \"\";\n\n if (this.state && this.enabledStates[this.state]) {\n let state = new stateClasses[this.state](this, data.resolution, data.sampleRate);\n let stateEvents = state.getEvents();\n\n Object.keys(stateEvents).map((event) => {\n config[`on${event}`] = stateEvents[event].bind(state);\n });\n\n stateClass = state.getClasses();\n }\n //use this overlay for track event cursor position calculations.\n return h(`div.playlist-overlay${stateClass}`, config);\n }\n\n renderControls(data) {\n let muteClass = data.muted ? \".active\" : \"\";\n let soloClass = data.soloed ? \".active\" : \"\";\n let numChan = this.peaks.data.length;\n\n return h(\"div.controls\", {\n attributes: {\n \"style\": `height: ${numChan * data.height}px; width: ${data.controls.width}px; position: absolute; left: 0; z-index: 10;`\n }},\n [\n h(\"header\", [ this.name ]),\n h(\"div.btn-group\", [\n h(`span.btn.btn-default.btn-xs.btn-mute${muteClass}`, {\"onclick\": () => {\n this.ee.emit(\"mute\", this);\n }}, [ \"Mute\" ]),\n h(`span.btn.btn-default.btn-xs.btn-solo${soloClass}`, {\"onclick\": () => {\n this.ee.emit(\"solo\", this);\n }}, [ \"Solo\" ])\n ]),\n h(\"label\", [\n h(\"input.volume-slider\", {\n attributes: {\n \"type\": \"range\",\n \"min\": 0,\n \"max\": 100,\n \"value\": 100\n },\n \"hook\": new VolumeSliderHook(this.gain),\n \"oninput\": (e) => {\n this.ee.emit(\"volumechange\", e.target.value, this);\n }\n })\n ])\n ]\n );\n }\n\n render(data) {\n let width = this.peaks.length;\n let playbackX = secondsToPixels(data.playbackSeconds, data.resolution, data.sampleRate);\n let startX = secondsToPixels(this.startTime, data.resolution, data.sampleRate);\n let endX = secondsToPixels(this.endTime, data.resolution, data.sampleRate);\n let progressWidth = 0;\n let numChan = this.peaks.data.length;\n\n if (playbackX > 0 && playbackX > startX) {\n if (playbackX < endX) {\n progressWidth = playbackX - startX;\n }\n else {\n progressWidth = width;\n }\n }\n\n let waveformChildren = [\n h(\"div.cursor\", {attributes: {\n \"style\": `position: absolute; width: 1px; margin: 0; padding: 0; top: 0; left: ${playbackX}px; bottom: 0; z-index: 5;`\n }})\n ];\n\n let channels = Object.keys(this.peaks.data).map((channelNum) => {\n\n let channelChildren = [\n h(\"div.channel-progress\", {attributes: {\n \"style\": `position: absolute; width: ${progressWidth}px; height: ${data.height}px; z-index: 2;`\n }})\n ];\n let offset = 0;\n let totalWidth = width;\n let peaks = this.peaks.data[channelNum];\n\n while (totalWidth > 0) {\n let currentWidth = Math.min(totalWidth, MAX_CANVAS_WIDTH);\n\n channelChildren.push(h(\"canvas\", {\n attributes: {\n \"width\": currentWidth,\n \"height\": data.height,\n \"style\": \"float: left; position: relative; margin: 0; padding: 0; z-index: 3;\"\n },\n \"hook\": new CanvasHook(peaks, offset, this.peaks.bits, data.colors.waveOutlineColor)\n }));\n\n totalWidth -= currentWidth;\n offset += MAX_CANVAS_WIDTH;\n }\n\n //if there are fades, display them.\n if (this.fadeIn) {\n let fadeIn = this.fades[this.fadeIn];\n let width = secondsToPixels(fadeIn.end - fadeIn.start, data.resolution, data.sampleRate);\n\n channelChildren.push(h(\"div.wp-fade.wp-fadein\", {\n attributes: {\n \"style\": `position: absolute; height: ${data.height}px; width: ${width}px; top: 0; left: 0; z-index: 4;`\n }}, [\n h(\"canvas\", {\n attributes: {\n \"width\": width,\n \"height\": data.height\n },\n \"hook\": new FadeCanvasHook(fadeIn.type, fadeIn.shape, fadeIn.end - fadeIn.start, data.resolution)\n })\n ]));\n }\n\n if (this.fadeOut) {\n let fadeOut = this.fades[this.fadeOut];\n let width = secondsToPixels(fadeOut.end - fadeOut.start, data.resolution, data.sampleRate);\n\n channelChildren.push(h(\"div.wp-fade.wp-fadeout\", {\n attributes: {\n \"style\": `position: absolute; height: ${data.height}px; width: ${width}px; top: 0; right: 0; z-index: 4;`\n }}, [\n h(\"canvas\", {\n attributes: {\n \"width\": width,\n \"height\": data.height\n },\n \"hook\": new FadeCanvasHook(fadeOut.type, fadeOut.shape, fadeOut.end - fadeOut.start, data.resolution)\n })\n ]));\n }\n\n return h(`div.channel.channel-${channelNum}`, {attributes: {\n \"style\": `height: ${data.height}px; width: ${width}px; top: ${channelNum*data.height}px; left: ${startX}px; position: absolute; margin: 0; padding: 0; z-index: 1;`\n }},\n channelChildren\n );\n });\n\n let audibleClass = data.shouldPlay ? \"\" : \".silent\";\n\n waveformChildren.push(channels);\n waveformChildren.push(this.renderOverlay(data));\n\n //draw cursor selection on active track.\n if (data.isActive === true) {\n waveformChildren.push(this.renderTimeSelection(data));\n }\n\n let waveform = h(\"div.waveform\", {\n attributes: {\n \"style\": `height: ${numChan * data.height}px; position: relative;`\n }}, \n waveformChildren\n );\n\n let channelChildren = [];\n let channelMargin = 0;\n\n if (data.controls.show) {\n channelChildren.push(this.renderControls(data));\n channelMargin = data.controls.width;\n }\n\n channelChildren.push(waveform);\n\n return h(`div.channel-wrapper${audibleClass}`, {\n attributes: {\n \"style\": `margin-left: ${channelMargin}px; height: ${data.height * numChan}px;`\n }},\n channelChildren\n );\n }\n\n getTrackDetails() {\n let info = {\n src: this.src,\n start: this.startTime,\n end: this.endTime,\n name: this.name,\n cuein: this.cueIn,\n cueout: this.cueOut\n };\n\n if (this.fadeIn) {\n let fadeIn = this.fades[this.fadeIn];\n\n info[\"fadeIn\"] = {\n shape: fadeIn.shape,\n duration: fadeIn.end - fadeIn.start\n }\n }\n\n if (this.fadeOut) {\n let fadeOut = this.fades[this.fadeOut];\n\n info[\"fadeOut\"] = {\n shape: fadeOut.shape,\n duration: fadeOut.end - fadeOut.start\n }\n }\n\n return info;\n }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/Track.js\n **/","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\nvar baseFor = require('lodash._basefor'),\n baseIteratee = require('lodash._baseiteratee'),\n keys = require('lodash.keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\n/**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forOwn(object, iteratee) {\n return object && baseForOwn(object, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = forOwn;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash.forown/index.js\n ** module id = 67\n ** module chunks = 0\n **/","/**\n * lodash 3.0.3 (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n\n/**\n * The base implementation of `baseForIn` and `baseForOwn` which iterates\n * over `object` properties returned by `keysFunc` invoking `iteratee` for\n * each property. Iteratee functions may exit iteration early by explicitly\n * returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * Creates a base function for methods like `_.forIn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = baseFor;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash._basefor/index.js\n ** module id = 68\n ** module chunks = 0\n **/","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\nvar stringToPath = require('lodash._stringtopath');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Used to determine if values are of the language type `Object`. */\nvar objectTypes = {\n 'function': true,\n 'object': true\n};\n\n/** Detect free variable `exports`. */\nvar freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)\n ? exports\n : undefined;\n\n/** Detect free variable `module`. */\nvar freeModule = (objectTypes[typeof module] && module && !module.nodeType)\n ? module\n : undefined;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global);\n\n/** Detect free variable `self`. */\nvar freeSelf = checkGlobal(objectTypes[typeof self] && self);\n\n/** Detect free variable `window`. */\nvar freeWindow = checkGlobal(objectTypes[typeof window] && window);\n\n/** Detect `this` as the global object. */\nvar thisGlobal = checkGlobal(objectTypes[typeof this] && this);\n\n/**\n * Used as a reference to the global object.\n *\n * The `this` value is used if it's the global object to avoid Greasemonkey's\n * restricted `window` object, otherwise the `window` object is used.\n */\nvar root = freeGlobal ||\n ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) ||\n freeSelf || thisGlobal || Function('return this')();\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\nfunction baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n}\n\n/**\n * Checks if `value` is a global object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {null|Object} Returns `value` if it's a global object, else `null`.\n */\nfunction checkGlobal(value) {\n return (value && value.Object === Object) ? value : null;\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\nfunction setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetPrototype = Object.getPrototypeOf,\n nativeKeys = Object.keys;\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache && cache.__data__.length == LARGE_ARRAY_SIZE) {\n cache = this.__data__ = new MapCache(cache.__data__);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to search.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n // Avoid a bug in IE 10-11 where objects with a [[Prototype]] of `null`,\n // that are composed entirely of index properties, return `false` for\n // `hasOwnProperty` checks of them.\n return hasOwnProperty.call(object, key) ||\n (typeof object == 'object' && key in object && getPrototype(object) === null);\n}\n\n/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return key in Object(object);\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n * The bitmask may be composed of the following flags:\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = arrayTag,\n othTag = arrayTag;\n\n if (!objIsArr) {\n objTag = getTag(object);\n objTag = objTag == argsTag ? objectTag : objTag;\n }\n if (!othIsArr) {\n othTag = getTag(other);\n othTag = othTag == argsTag ? objectTag : othTag;\n }\n var objIsObj = objTag == objectTag && !isHostObject(object),\n othIsObj = othTag == objectTag && !isHostObject(other),\n isSameTag = objTag == othTag;\n\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n }\n if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n}\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\n/**\n * The base implementation of `_.keys` which doesn't skip the constructor\n * property of prototypes or treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n return nativeKeys(Object(object));\n}\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n };\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\nfunction createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!seen.has(othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n return seen.add(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, customizer, bitmask, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n // Coerce dates and booleans to numbers, dates to milliseconds and\n // booleans to `1` or `0` treating invalid dates coerced to `NaN` as\n // not equal.\n return +object == +other;\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case numberTag:\n // Treat `NaN` vs. `NaN` as equal.\n return (object != +object) ? other != +other : object == +other;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/6.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= UNORDERED_COMPARE_FLAG;\n stack.set(object, other);\n\n // Recursively compare objects (susceptible to call stack limits).\n return equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n objProps = keys(object),\n objLength = objProps.length,\n othProps = keys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : baseHas(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n return result;\n}\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a\n * [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) that affects\n * Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = toPairs(object),\n length = result.length;\n\n while (length--) {\n result[length][2] = isStrictComparable(result[length][1]);\n }\n return result;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object[key];\n return isNative(value) ? value : undefined;\n}\n\n/**\n * Gets the `[[Prototype]]` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {null|Object} Returns the `[[Prototype]]`.\n */\nfunction getPrototype(value) {\n return nativeGetPrototype(Object(value));\n}\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction getTag(value) {\n return objectToString.call(value);\n}\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var result,\n index = -1,\n length = path.length;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result) {\n return result;\n }\n var length = object ? object.length : 0;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isString(object) || isArguments(object));\n}\n\n/**\n * Creates an array of index keys for `object` values of arrays,\n * `arguments` objects, and strings, otherwise `null` is returned.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array|null} Returns index keys, else `null`.\n */\nfunction indexKeys(object) {\n var length = object ? object.length : undefined;\n if (isLength(length) &&\n (isArray(object) || isString(object) || isArguments(object))) {\n return baseTimes(length, String);\n }\n return null;\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'user': 'fred' };\n * var other = { 'user': 'fred' };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 incorrectly makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @type {Function}\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value)) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8 which returns 'object' for typed array and weak map constructors,\n // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length,\n * else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (!isObject(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nfunction isTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is used in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n var isProto = isPrototype(object);\n if (!(isProto || isArrayLike(object))) {\n return baseKeys(object);\n }\n var indexes = indexKeys(object),\n skipIndexes = !!indexes,\n result = indexes || [],\n length = result.length;\n\n for (var key in object) {\n if (baseHas(object, key) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length))) &&\n !(isProto && key == 'constructor')) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\nvar toPairs = createToPairs(keys);\n\n/**\n * This method returns the first argument given to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'user': 'fred' };\n *\n * _.identity(object) === object;\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = baseIteratee;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash._baseiteratee/index.js\n ** module id = 69\n ** module chunks = 0\n **/","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\nvar baseToString = require('lodash._basetostring');\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to determine if values are of the language type `Object`. */\nvar objectTypes = {\n 'function': true,\n 'object': true\n};\n\n/** Detect free variable `exports`. */\nvar freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)\n ? exports\n : undefined;\n\n/** Detect free variable `module`. */\nvar freeModule = (objectTypes[typeof module] && module && !module.nodeType)\n ? module\n : undefined;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global);\n\n/** Detect free variable `self`. */\nvar freeSelf = checkGlobal(objectTypes[typeof self] && self);\n\n/** Detect free variable `window`. */\nvar freeWindow = checkGlobal(objectTypes[typeof window] && window);\n\n/** Detect `this` as the global object. */\nvar thisGlobal = checkGlobal(objectTypes[typeof this] && this);\n\n/**\n * Used as a reference to the global object.\n *\n * The `this` value is used if it's the global object to avoid Greasemonkey's\n * restricted `window` object, otherwise the `window` object is used.\n */\nvar root = freeGlobal ||\n ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) ||\n freeSelf || thisGlobal || Function('return this')();\n\n/**\n * Checks if `value` is a global object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {null|Object} Returns `value` if it's a global object, else `null`.\n */\nfunction checkGlobal(value) {\n return (value && value.Object === Object) ? value : null;\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to search.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object[key];\n return isNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoize(function(string) {\n var result = [];\n toString(string).replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'user': 'fred' };\n * var other = { 'user': 'fred' };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8 which returns 'object' for typed array and weak map constructors,\n // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (!isObject(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = stringToPath;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash._stringtopath/index.js\n ** module id = 70\n ** module chunks = 0\n **/","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to determine if values are of the language type `Object`. */\nvar objectTypes = {\n 'function': true,\n 'object': true\n};\n\n/** Detect free variable `exports`. */\nvar freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)\n ? exports\n : undefined;\n\n/** Detect free variable `module`. */\nvar freeModule = (objectTypes[typeof module] && module && !module.nodeType)\n ? module\n : undefined;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global);\n\n/** Detect free variable `self`. */\nvar freeSelf = checkGlobal(objectTypes[typeof self] && self);\n\n/** Detect free variable `window`. */\nvar freeWindow = checkGlobal(objectTypes[typeof window] && window);\n\n/** Detect `this` as the global object. */\nvar thisGlobal = checkGlobal(objectTypes[typeof this] && this);\n\n/**\n * Used as a reference to the global object.\n *\n * The `this` value is used if it's the global object to avoid Greasemonkey's\n * restricted `window` object, otherwise the `window` object is used.\n */\nvar root = freeGlobal ||\n ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) ||\n freeSelf || thisGlobal || Function('return this')();\n\n/**\n * Checks if `value` is a global object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {null|Object} Returns `value` if it's a global object, else `null`.\n */\nfunction checkGlobal(value) {\n return (value && value.Object === Object) ? value : null;\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\nmodule.exports = baseToString;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash._basetostring/index.js\n ** module id = 71\n ** module chunks = 0\n **/","// uuid.js\n//\n// Copyright (c) 2010-2012 Robert Kieffer\n// MIT License - http://opensource.org/licenses/mit-license.php\n\n// Unique ID creation requires a high quality random # generator. We feature\n// detect to determine the best RNG source, normalizing to a function that\n// returns 128-bits of randomness, since that's what's usually required\nvar _rng = require('./rng');\n\n// Maps for number <-> hex string conversion\nvar _byteToHex = [];\nvar _hexToByte = {};\nfor (var i = 0; i < 256; i++) {\n _byteToHex[i] = (i + 0x100).toString(16).substr(1);\n _hexToByte[_byteToHex[i]] = i;\n}\n\n// **`parse()` - Parse a UUID into it's component bytes**\nfunction parse(s, buf, offset) {\n var i = (buf && offset) || 0, ii = 0;\n\n buf = buf || [];\n s.toLowerCase().replace(/[0-9a-f]{2}/g, function(oct) {\n if (ii < 16) { // Don't overflow!\n buf[i + ii++] = _hexToByte[oct];\n }\n });\n\n // Zero out remaining bytes if string was short\n while (ii < 16) {\n buf[i + ii++] = 0;\n }\n\n return buf;\n}\n\n// **`unparse()` - Convert UUID byte array (ala parse()) into a string**\nfunction unparse(buf, offset) {\n var i = offset || 0, bth = _byteToHex;\n return bth[buf[i++]] + bth[buf[i++]] +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] +\n bth[buf[i++]] + bth[buf[i++]] +\n bth[buf[i++]] + bth[buf[i++]];\n}\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\n// random #'s we need to init node and clockseq\nvar _seedBytes = _rng();\n\n// Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\nvar _nodeId = [\n _seedBytes[0] | 0x01,\n _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5]\n];\n\n// Per 4.2.2, randomize (14 bit) clockseq\nvar _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 0x3fff;\n\n// Previous uuid creation time\nvar _lastMSecs = 0, _lastNSecs = 0;\n\n// See https://github.com/broofa/node-uuid for API details\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n\n options = options || {};\n\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;\n\n // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime();\n\n // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;\n\n // Time since last uuid creation (in msecs)\n var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;\n\n // Per 4.2.1.2, Bump clockseq on clock regression\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n }\n\n // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n }\n\n // Per 4.2.1.2 Throw error if too many uuids are requested\n if (nsecs >= 10000) {\n throw new Error('uuid.v1(): Can\\'t create more than 10M uuids/sec');\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq;\n\n // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n msecs += 12219292800000;\n\n // `time_low`\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff;\n\n // `time_mid`\n var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff;\n\n // `time_high_and_version`\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n b[i++] = tmh >>> 16 & 0xff;\n\n // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n b[i++] = clockseq >>> 8 | 0x80;\n\n // `clock_seq_low`\n b[i++] = clockseq & 0xff;\n\n // `node`\n var node = options.node || _nodeId;\n for (var n = 0; n < 6; n++) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : unparse(b);\n}\n\n// **`v4()` - Generate random UUID**\n\n// See https://github.com/broofa/node-uuid for API details\nfunction v4(options, buf, offset) {\n // Deprecated - 'format' argument, as supported in v1.2\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options == 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || _rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ii++) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || unparse(rnds);\n}\n\n// Export public API\nvar uuid = v4;\nuuid.v1 = v1;\nuuid.v4 = v4;\nuuid.parse = parse;\nuuid.unparse = unparse;\n\nmodule.exports = uuid;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/uuid/uuid.js\n ** module id = 72\n ** module chunks = 0\n **/","\nvar rng;\n\nif (global.crypto && crypto.getRandomValues) {\n // WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto\n // Moderately fast, high quality\n var _rnds8 = new Uint8Array(16);\n rng = function whatwgRNG() {\n crypto.getRandomValues(_rnds8);\n return _rnds8;\n };\n}\n\nif (!rng) {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var _rnds = new Array(16);\n rng = function() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n _rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return _rnds;\n };\n}\n\nmodule.exports = rng;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/uuid/rng-browser.js\n ** module id = 73\n ** module chunks = 0\n **/","'use strict';\n\n//http://jsperf.com/typed-array-min-max/2\n//plain for loop for finding min/max is way faster than anything else.\n/**\n* @param {TypedArray} array - Subarray of audio to calculate peaks from.\n*/\nfunction findMinMax(array) {\n var min = Infinity;\n var max = -Infinity;\n var i = 0;\n var len = array.length;\n var curr;\n\n for (; i < len; i++) {\n curr = array[i];\n if (min > curr) {\n min = curr;\n }\n if (max < curr) {\n max = curr;\n }\n }\n\n return {\n min: min,\n max: max\n };\n}\n\n/**\n* @param {Number} n - peak to convert from float to Int8, Int16 etc.\n* @param {Number} bits - convert to #bits two's complement signed integer\n*/\nfunction convert(n, bits) {\n var max = Math.pow(2, bits-1);\n var v = n < 0 ? n * max : n * max - 1;\n return Math.max(-max, Math.min(max-1, v));\n}\n\n/**\n* @param {TypedArray} channel - Audio track frames to calculate peaks from.\n* @param {Number} samplesPerPixel - Audio frames per peak\n*/\nfunction extractPeaks(channel, samplesPerPixel, bits) {\n var i;\n var chanLength = channel.length;\n var numPeaks = Math.ceil(chanLength / samplesPerPixel);\n var start;\n var end;\n var segment;\n var max; \n var min;\n var extrema;\n\n //create interleaved array of min,max\n var peaks = new (eval(\"Int\"+bits+\"Array\"))(numPeaks*2);\n\n for (i = 0; i < numPeaks; i++) {\n\n start = i * samplesPerPixel;\n end = (i + 1) * samplesPerPixel > chanLength ? chanLength : (i + 1) * samplesPerPixel;\n\n segment = channel.subarray(start, end);\n extrema = findMinMax(segment);\n min = convert(extrema.min, bits);\n max = convert(extrema.max, bits);\n\n peaks[i*2] = min;\n peaks[i*2+1] = max;\n }\n\n return peaks;\n}\n\nfunction makeMono(channelPeaks, bits) {\n var numChan = channelPeaks.length;\n var weight = 1 / numChan;\n var numPeaks = channelPeaks[0].length / 2;\n var c = 0;\n var i = 0;\n var min;\n var max;\n var peaks = new (eval(\"Int\"+bits+\"Array\"))(numPeaks*2);\n\n for (i = 0; i < numPeaks; i++) {\n min = 0;\n max = 0;\n\n for (c = 0; c < numChan; c++) {\n min += weight * channelPeaks[c][i*2];\n max += weight * channelPeaks[c][i*2+1];\n }\n\n peaks[i*2] = min;\n peaks[i*2+1] = max;\n }\n\n //return in array so channel number counts still work.\n return [peaks];\n}\n\n/**\n* @param {AudioBuffer,TypedArray} source - Source of audio samples for peak calculations.\n* @param {Number} samplesPerPixel - Number of audio samples per peak.\n* @param {Number} cueIn - index in channel to start peak calculations from.\n* @param {Number} cueOut - index in channel to end peak calculations from (non-inclusive).\n*/\nmodule.exports = function(source, samplesPerPixel, isMono, cueIn, cueOut, bits) {\n samplesPerPixel = samplesPerPixel || 10000;\n bits = bits || 8;\n isMono = isMono || true;\n\n if ([8, 16, 32].indexOf(bits) < 0) {\n throw new Error(\"Invalid number of bits specified for peaks.\");\n }\n\n var numChan = source.numberOfChannels;\n var peaks = [];\n var c;\n var numPeaks;\n var channel;\n var slice;\n\n if (typeof source.subarray === \"undefined\") {\n for (c = 0; c < numChan; c++) {\n channel = source.getChannelData(c);\n cueIn = cueIn || 0;\n cueOut = cueOut || channel.length;\n slice = channel.subarray(cueIn, cueOut);\n peaks.push(extractPeaks(slice, samplesPerPixel, bits));\n }\n }\n else {\n cueIn = cueIn || 0;\n cueOut = cueOut || source.length;\n peaks.push(extractPeaks(source.subarray(cueIn, cueOut), samplesPerPixel, bits));\n }\n\n if (isMono && peaks.length > 1) {\n peaks = makeMono(peaks, bits);\n }\n\n numPeaks = peaks[0].length / 2;\n\n return {\n length: numPeaks,\n data: peaks,\n bits: bits\n };\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webaudio-peaks/index.js\n ** module id = 74\n ** module chunks = 0\n **/","import CursorState from './states/CursorState';\nimport SelectState from './states/SelectState';\nimport ShiftState from './states/ShiftState';\nimport FadeInState from './states/FadeInState';\nimport FadeOutState from './states/FadeOutState';\n\nexport default {\n 'cursor': CursorState,\n 'select': SelectState,\n 'shift': ShiftState,\n 'fadein': FadeInState,\n 'fadeout': FadeOutState\n};\n\n\n/** WEBPACK FOOTER **\n ** ./src/track/states.js\n **/","import {pixelsToSeconds} from '../../utils/conversions';\n\nexport default class {\n constructor(track, samplesPerPixel, sampleRate) {\n this.track = track;\n this.samplesPerPixel = samplesPerPixel;\n this.sampleRate = sampleRate;\n }\n\n click(e) {\n e.preventDefault();\n\n let startX = e.offsetX;\n let startTime = pixelsToSeconds(startX, this.samplesPerPixel, this.sampleRate);\n\n this.track.ee.emit('select', startTime, startTime, this.track);\n }\n\n getClasses() {\n return \".state-cursor\";\n }\n\n getEvents() {\n return {\n \"click\": this.click\n }\n }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/track/states/CursorState.js\n **/","import {pixelsToSeconds} from '../../utils/conversions';\n\nexport default class {\n constructor(track, samplesPerPixel, sampleRate) {\n this.track = track;\n this.samplesPerPixel = samplesPerPixel;\n this.sampleRate = sampleRate;\n }\n\n mousedown(e) {\n e.preventDefault();\n\n var el = e.target;\n var startX = e.offsetX;\n let startTime = pixelsToSeconds(startX, this.samplesPerPixel, this.sampleRate);\n\n this.track.ee.emit('select', startTime, startTime, this.track);\n\n let emitSelection = (x) => {\n let minX = Math.min(x, startX);\n let maxX = Math.max(x, startX);\n let startTime = pixelsToSeconds(minX, this.samplesPerPixel, this.sampleRate);\n let endTime = pixelsToSeconds(maxX, this.samplesPerPixel, this.sampleRate);\n\n this.track.ee.emit('select', startTime, endTime, this.track);\n }\n\n let complete = (ev) => {\n ev.preventDefault();\n\n emitSelection(ev.offsetX);\n\n el.onmousemove = el.onmouseup = el.onmouseleave = null;\n };\n\n //dynamically put an event on the element.\n el.onmousemove = (ev) => {\n ev.preventDefault();\n\n emitSelection(ev.offsetX);\n };\n\n el.onmouseup = el.onmouseleave = complete;\n }\n\n getClasses() {\n return \".state-select\";\n }\n\n getEvents() {\n return {\n \"mousedown\": this.mousedown\n }\n }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/track/states/SelectState.js\n **/","import {pixelsToSeconds} from '../../utils/conversions';\n\nexport default class {\n constructor(track, samplesPerPixel, sampleRate) {\n this.track = track;\n this.samplesPerPixel = samplesPerPixel;\n this.sampleRate = sampleRate;\n }\n\n mousedown(e) {\n e.preventDefault();\n\n let el = e.target;\n var prevX = e.offsetX;\n\n let emitShift = (x) => {\n let deltaX = x - prevX;\n let deltaTime = pixelsToSeconds(deltaX, this.samplesPerPixel, this.sampleRate);\n prevX = x;\n this.track.ee.emit('shift', deltaTime, this.track);\n };\n\n //dynamically put an event on the element.\n el.onmousemove = (e) => {\n e.preventDefault();\n emitShift(e.offsetX);\n };\n\n let complete = (e) => {\n e.preventDefault();\n emitShift(e.offsetX);\n el.onmousemove = el.onmouseup = el.onmouseleave = null;\n };\n\n el.onmouseup = el.onmouseleave = complete;\n }\n\n getClasses() {\n return \".state-shift\";\n }\n\n getEvents() {\n return {\n \"mousedown\": this.mousedown\n }\n }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/track/states/ShiftState.js\n **/","import {pixelsToSeconds} from '../../utils/conversions';\n\nexport default class {\n constructor(track, samplesPerPixel, sampleRate) {\n this.track = track;\n this.samplesPerPixel = samplesPerPixel;\n this.sampleRate = sampleRate;\n }\n\n click(e) {\n let startX = e.offsetX;\n let time = pixelsToSeconds(startX, this.samplesPerPixel, this.sampleRate);\n\n if (time > this.track.getStartTime() && time < this.track.getEndTime()) {\n this.track.ee.emit('fadein', time - this.track.getStartTime(), this.track);\n }\n }\n\n getClasses() {\n return \".state-fadein\";\n }\n\n getEvents() {\n return {\n \"click\": this.click\n };\n }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/track/states/FadeInState.js\n **/","import {pixelsToSeconds} from '../../utils/conversions';\n\nexport default class {\n constructor(track, samplesPerPixel, sampleRate) {\n this.track = track;\n this.samplesPerPixel = samplesPerPixel;\n this.sampleRate = sampleRate;\n }\n\n click(e) {\n let startX = e.offsetX;\n let time = pixelsToSeconds(startX, this.samplesPerPixel, this.sampleRate);\n\n if (time > this.track.getStartTime() && time < this.track.getEndTime()) {\n this.track.ee.emit('fadeout', this.track.getEndTime() - time, this.track);\n }\n }\n\n getClasses() {\n return \".state-fadeout\";\n }\n\n getEvents() {\n return {\n \"click\": this.click\n };\n }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/track/states/FadeOutState.js\n **/","function drawFrame(cc, h2, x, minPeak, maxPeak) {\n let min = Math.abs(minPeak * h2);\n let max = Math.abs(maxPeak * h2);\n\n //draw maxs\n cc.fillRect(x, 0, 1, h2-max);\n //draw mins\n cc.fillRect(x, h2+min, 1, h2-min);\n}\n\n/*\n* virtual-dom hook for drawing to the canvas element.\n*/\nexport default class {\n constructor(peaks, offset, bits, color) {\n this.peaks = peaks\n this.offset = offset; //http://stackoverflow.com/questions/6081483/maximum-size-of-a-canvas-element\n this.color = color;\n this.bits = bits;\n }\n\n hook(canvas, prop, prev) {\n //canvas is up to date\n if (prev !== undefined &&\n (prev.peaks === this.peaks)) {\n return;\n }\n\n let i;\n let len = canvas.width;\n let cc = canvas.getContext('2d');\n let h2 = canvas.height / 2;\n let maxValue = Math.pow(2, this.bits-1);\n\n let minPeak;\n let maxPeak;\n\n cc.clearRect(0, 0, canvas.width, canvas.height);\n cc.fillStyle = this.color;\n\n for (i = 0; i < len; i++) {\n minPeak = this.peaks[(i+this.offset)*2] / maxValue;\n maxPeak = this.peaks[(i+this.offset)*2+1] / maxValue;\n drawFrame(cc, h2, i, minPeak, maxPeak);\n }\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/render/CanvasHook.js\n **/","import {FADEIN, FADEOUT, SCURVE, LINEAR, EXPONENTIAL, LOGARITHMIC} from 'fade-maker';\nimport {sCurve, logarithmic, linear, exponential} from 'fade-curves';\n\nfunction createCurve(shape, type, width) {\n let reflection = (type === FADEIN) ? 1 : -1;\n let curve;\n\n switch(shape) {\n case SCURVE:\n curve = sCurve(width, reflection);\n break;\n case LINEAR:\n curve = linear(width, reflection);\n break;\n case EXPONENTIAL:\n curve = exponential(width, reflection);\n break;\n case LOGARITHMIC:\n curve = logarithmic(width, 10, reflection);\n break;\n default:\n throw new Error(\"Unsupported Fade type\");\n }\n\n return curve;\n}\n\nfunction drawFadeCurve(ctx, shape, type, width, height) {\n let curve;\n let i;\n let len;\n let y;\n\n ctx.strokeStyle = \"black\";\n curve = createCurve(shape, type, width);\n\n y = height - curve[0] * height;\n ctx.beginPath();\n ctx.moveTo(0, y);\n\n for (i = 1, len = curve.length; i < len; i++) {\n y = height - curve[i] * height;\n ctx.lineTo(i, y);\n }\n ctx.stroke();\n}\n\n\n/*\n* virtual-dom hook for drawing the fade curve to the canvas element.\n*/\nexport default class {\n constructor(type, shape, duration, samplesPerPixel) {\n this.type = type;\n this.shape = shape;\n this.duration = duration;\n this.samplesPerPixel = samplesPerPixel;\n }\n\n hook(canvas, prop, prev) {\n //node is up to date.\n if (prev !== undefined &&\n prev.shape === this.shape &&\n prev.type === this.type &&\n prev.duration === this.duration &&\n prev.samplesPerPixel === this.samplesPerPixel) {\n return;\n }\n\n let cc = canvas.getContext('2d');\n drawFadeCurve(cc, this.shape, this.type, canvas.width, canvas.height);\n }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/render/FadeCanvasHook.js\n **/","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FADEOUT = exports.FADEIN = exports.LOGARITHMIC = exports.EXPONENTIAL = exports.LINEAR = exports.SCURVE = undefined;\nexports.createFadeIn = createFadeIn;\nexports.createFadeOut = createFadeOut;\n\nvar _fadeCurves = require('fade-curves');\n\nvar SCURVE = exports.SCURVE = \"sCurve\";\nvar LINEAR = exports.LINEAR = \"linear\";\nvar EXPONENTIAL = exports.EXPONENTIAL = \"exponential\";\nvar LOGARITHMIC = exports.LOGARITHMIC = \"logarithmic\";\n\nvar FADEIN = exports.FADEIN = \"FadeIn\";\nvar FADEOUT = exports.FADEOUT = \"FadeOut\";\n\nfunction sCurveFadeIn(start, duration) {\n var curve = (0, _fadeCurves.sCurve)(10000, 1);\n this.setValueCurveAtTime(curve, start, duration);\n}\n\nfunction sCurveFadeOut(start, duration) {\n var curve = (0, _fadeCurves.sCurve)(10000, -1);\n this.setValueCurveAtTime(curve, start, duration);\n}\n\nfunction linearFadeIn(start, duration) {\n this.linearRampToValueAtTime(0, start);\n this.linearRampToValueAtTime(1, start + duration);\n}\n\nfunction linearFadeOut(start, duration) {\n this.linearRampToValueAtTime(1, start);\n this.linearRampToValueAtTime(0, start + duration);\n}\n\nfunction exponentialFadeIn(start, duration) {\n this.exponentialRampToValueAtTime(0.01, start);\n this.exponentialRampToValueAtTime(1, start + duration);\n}\n\nfunction exponentialFadeOut(start, duration) {\n this.exponentialRampToValueAtTime(1, start);\n this.exponentialRampToValueAtTime(0.01, start + duration);\n}\n\nfunction logarithmicFadeIn(start, duration) {\n var curve = (0, _fadeCurves.logarithmic)(10000, 10, 1);\n this.setValueCurveAtTime(curve, start, duration);\n}\n\nfunction logarithmicFadeOut(start, duration) {\n var curve = (0, _fadeCurves.logarithmic)(10000, 10, -1);\n this.setValueCurveAtTime(curve, start, duration);\n}\n\nfunction createFadeIn(gain, shape, start, duration) {\n switch (shape) {\n case SCURVE:\n sCurveFadeIn.call(gain, start, duration);\n break;\n case LINEAR:\n linearFadeIn.call(gain, start, duration);\n break;\n case EXPONENTIAL:\n exponentialFadeIn.call(gain, start, duration);\n break;\n case LOGARITHMIC:\n logarithmicFadeIn.call(gain, start, duration);\n break;\n default:\n throw new Error(\"Unsupported Fade type\");\n }\n}\n\nfunction createFadeOut(gain, shape, start, duration) {\n switch (shape) {\n case SCURVE:\n sCurveFadeOut.call(gain, start, duration);\n break;\n case LINEAR:\n linearFadeOut.call(gain, start, duration);\n break;\n case EXPONENTIAL:\n exponentialFadeOut.call(gain, start, duration);\n break;\n case LOGARITHMIC:\n logarithmicFadeOut.call(gain, start, duration);\n break;\n default:\n throw new Error(\"Unsupported Fade type\");\n }\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/fade-maker/index.js\n ** module id = 83\n ** module chunks = 0\n **/","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.linear = linear;\nexports.exponential = exponential;\nexports.sCurve = sCurve;\nexports.logarithmic = logarithmic;\nfunction linear(length, rotation) {\n var curve = new Float32Array(length),\n i,\n x,\n scale = length - 1;\n\n for (i = 0; i < length; i++) {\n x = i / scale;\n\n if (rotation > 0) {\n curve[i] = x;\n } else {\n curve[i] = 1 - x;\n }\n }\n\n return curve;\n}\n\nfunction exponential(length, rotation) {\n var curve = new Float32Array(length),\n i,\n x,\n scale = length - 1,\n index;\n\n for (i = 0; i < length; i++) {\n x = i / scale;\n index = rotation > 0 ? i : length - 1 - i;\n\n curve[index] = Math.exp(2 * x - 1) / Math.exp(1);\n }\n\n return curve;\n}\n\n//creating a curve to simulate an S-curve with setValueCurveAtTime.\nfunction sCurve(length, rotation) {\n var curve = new Float32Array(length),\n i,\n phase = rotation > 0 ? Math.PI / 2 : -(Math.PI / 2);\n\n for (i = 0; i < length; ++i) {\n curve[i] = Math.sin(Math.PI * i / length - phase) / 2 + 0.5;\n }\n return curve;\n}\n\n//creating a curve to simulate a logarithmic curve with setValueCurveAtTime.\nfunction logarithmic(length, base, rotation) {\n var curve = new Float32Array(length),\n index,\n x = 0,\n i;\n\n for (i = 0; i < length; i++) {\n //index for the curve array.\n index = rotation > 0 ? i : length - 1 - i;\n\n x = i / length;\n curve[index] = Math.log(1 + base * x) / Math.log(1 + base);\n }\n\n return curve;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/fade-curves/index.js\n ** module id = 84\n ** module chunks = 0\n **/","/*\n* virtual-dom hook for setting the volume input programmatically.\n*/\nexport default class {\n constructor(gain) {\n this.gain = gain;\n }\n\n hook(volumeInput, propertyName, previousValue) {\n volumeInput.value = this.gain * 100;\n }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/render/VolumeSliderHook.js\n **/","'use strict';\n\nimport {createFadeIn, createFadeOut} from 'fade-maker';\n\nconst FADEIN = \"FadeIn\";\nconst FADEOUT = \"FadeOut\";\n\nexport default class {\n\n constructor(ac, buffer) {\n this.ac = ac;\n this.gain = 1;\n this.buffer = buffer;\n this.destination = this.ac.destination;\n }\n\n applyFade(type, start, duration, shape=\"logarithmic\") {\n if (type === FADEIN) {\n createFadeIn(this.fadeGain.gain, shape, start, duration);\n }\n else if (type === FADEOUT) {\n createFadeOut(this.fadeGain.gain, shape, start, duration);\n }\n else {\n throw new Error(\"Unsupported fade type\");\n }\n }\n\n applyFadeIn(start, duration, shape=\"logarithmic\") {\n this.applyFade(FADEIN, start, duration, shape);\n }\n\n applyFadeOut(start, duration, shape=\"logarithmic\") {\n this.applyFade(FADEOUT, start, duration, shape);\n }\n\n isPlaying() {\n return this.source !== undefined;\n }\n\n getDuration() {\n return this.buffer.duration;\n }\n\n setUpSource() {\n var sourcePromise;\n\n this.source = this.ac.createBufferSource();\n this.source.buffer = this.buffer;\n\n sourcePromise = new Promise((resolve, reject) => {\n //keep track of the buffer state.\n this.source.onended = (e) => {\n this.source.disconnect();\n this.fadeGain.disconnect();\n this.volumeGain.disconnect();\n this.shouldPlayGain.disconnect();\n this.masterGain.disconnect();\n\n\n this.source = undefined;\n this.fadeGain = undefined;\n this.volumeGain = undefined;\n this.shouldPlayGain = undefined;\n this.masterGain = undefined;\n\n resolve();\n }\n });\n\n this.fadeGain = this.ac.createGain();\n //used for track volume slider\n this.volumeGain = this.ac.createGain();\n //used for solo/mute\n this.shouldPlayGain = this.ac.createGain();\n this.masterGain = this.ac.createGain();\n\n this.source.connect(this.fadeGain);\n this.fadeGain.connect(this.volumeGain);\n this.volumeGain.connect(this.shouldPlayGain);\n this.shouldPlayGain.connect(this.masterGain);\n this.masterGain.connect(this.destination);\n\n return sourcePromise;\n }\n\n setVolumeGainLevel(level) {\n this.volumeGain && (this.volumeGain.gain.value = level);\n }\n\n setShouldPlay(bool){\n this.shouldPlayGain && (this.shouldPlayGain.gain.value = bool ? 1 : 0);\n }\n\n setMasterGainLevel(level) {\n this.masterGain && (this.masterGain.gain.value = level);\n }\n\n /*\n source.start is picky when passing the end time. \n If rounding error causes a number to make the source think \n it is playing slightly more samples than it has it won't play at all.\n Unfortunately it doesn't seem to work if you just give it a start time.\n */\n play(when, start, duration) {\n this.source.start(when, start, duration);\n }\n\n stop(when=0) {\n this.source && this.source.stop(when);\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/Playout.js\n **/","module.exports = function() {\n\treturn new Worker(__webpack_public_path__ + \"301ffd7b6b1f9a16c47c.worker.js\");\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/worker-loader!./src/track/recorderWorker.js\n ** module id = 87\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap 38bf18e23143ea83a13e","webpack:///./src/app.js","webpack:///./~/lodash.assign/index.js","webpack:///./~/lodash.keys/index.js","webpack:///./~/lodash.rest/index.js","webpack:///./~/virtual-dom/create-element.js","webpack:///./~/virtual-dom/vdom/create-element.js","webpack:///./~/virtual-dom/~/global/document.js","webpack:///min-document (ignored)","webpack:///./~/virtual-dom/vdom/apply-properties.js","webpack:///./~/is-object/index.js","webpack:///./~/virtual-dom/vnode/is-vhook.js","webpack:///./~/virtual-dom/vnode/is-vnode.js","webpack:///./~/virtual-dom/vnode/version.js","webpack:///./~/virtual-dom/vnode/is-vtext.js","webpack:///./~/virtual-dom/vnode/is-widget.js","webpack:///./~/virtual-dom/vnode/handle-thunk.js","webpack:///./~/virtual-dom/vnode/is-thunk.js","webpack:///./~/event-emitter/index.js","webpack:///./~/d/index.js","webpack:///./~/es5-ext/object/assign/index.js","webpack:///./~/es5-ext/object/assign/is-implemented.js","webpack:///./~/es5-ext/object/assign/shim.js","webpack:///./~/es5-ext/object/keys/index.js","webpack:///./~/es5-ext/object/keys/is-implemented.js","webpack:///./~/es5-ext/object/keys/shim.js","webpack:///./~/es5-ext/object/valid-value.js","webpack:///./~/es5-ext/object/normalize-options.js","webpack:///./~/es5-ext/object/is-callable.js","webpack:///./~/es5-ext/string/#/contains/index.js","webpack:///./~/es5-ext/string/#/contains/is-implemented.js","webpack:///./~/es5-ext/string/#/contains/shim.js","webpack:///./~/es5-ext/object/valid-callable.js","webpack:///./src/Playlist.js","webpack:///./~/lodash.defaults/index.js","webpack:///./~/lodash.assigninwith/index.js","webpack:///./~/lodash.keysin/index.js","webpack:///(webpack)/buildin/module.js","webpack:///./~/virtual-dom/h.js","webpack:///./~/virtual-dom/virtual-hyperscript/index.js","webpack:///./~/x-is-array/index.js","webpack:///./~/virtual-dom/vnode/vnode.js","webpack:///./~/virtual-dom/vnode/vtext.js","webpack:///./~/virtual-dom/virtual-hyperscript/parse-tag.js","webpack:///./~/browser-split/index.js","webpack:///./~/virtual-dom/virtual-hyperscript/hooks/soft-set-hook.js","webpack:///./~/virtual-dom/virtual-hyperscript/hooks/ev-hook.js","webpack:///./~/ev-store/index.js","webpack:///./~/individual/one-version.js","webpack:///./~/individual/index.js","webpack:///./~/virtual-dom/diff.js","webpack:///./~/virtual-dom/vtree/diff.js","webpack:///./~/virtual-dom/vnode/vpatch.js","webpack:///./~/virtual-dom/vtree/diff-props.js","webpack:///./~/virtual-dom/patch.js","webpack:///./~/virtual-dom/vdom/patch.js","webpack:///./~/virtual-dom/vdom/dom-index.js","webpack:///./~/virtual-dom/vdom/patch-op.js","webpack:///./~/virtual-dom/vdom/update-widget.js","webpack:///./src/utils/conversions.js","webpack:///./src/track/loader/LoaderFactory.js","webpack:///./src/track/loader/BlobLoader.js","webpack:///./src/track/loader/Loader.js","webpack:///./src/track/loader/XHRLoader.js","webpack:///./src/render/ScrollHook.js","webpack:///./src/TimeScale.js","webpack:///./src/render/TimeScaleHook.js","webpack:///./src/Track.js","webpack:///./~/lodash.forown/index.js","webpack:///./~/lodash._basefor/index.js","webpack:///./~/lodash._baseiteratee/index.js","webpack:///./~/lodash._stringtopath/index.js","webpack:///./~/lodash._basetostring/index.js","webpack:///./~/uuid/uuid.js","webpack:///./~/uuid/rng-browser.js","webpack:///./~/webaudio-peaks/index.js","webpack:///./src/track/states.js","webpack:///./src/track/states/CursorState.js","webpack:///./src/track/states/SelectState.js","webpack:///./src/track/states/ShiftState.js","webpack:///./src/track/states/FadeInState.js","webpack:///./src/track/states/FadeOutState.js","webpack:///./src/render/CanvasHook.js","webpack:///./src/render/FadeCanvasHook.js","webpack:///./~/fade-maker/index.js","webpack:///./~/fade-curves/index.js","webpack:///./src/render/VolumeSliderHook.js","webpack:///./src/Playout.js","webpack:///./src/track/recorderWorker.js"],"names":[],"mappings":";;AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;;SChCgB,I,GAAA,I;;AANhB;;;;AACA;;;;AACA;;;;AACA;;;;;;AAGO,UAAS,IAAT,GAA6C;AAAA,SAA/B,OAA+B,yDAAvB,EAAuB;AAAA,SAAnB,EAAmB,yDAAhB,6BAAgB;;AAChD,SAAI,QAAQ,SAAR,KAAsB,SAA1B,EAAqC;AACjC,eAAM,IAAI,KAAJ,CAAU,sCAAV,CAAN;AACH;;AAED,SAAI,eAAe,KAAK,OAAO,YAAP,IAAuB,OAAO,kBAAnC,GAAnB;;AAEA,SAAI,WAAW;AACX,aAAI,YADO;AAEX,qBAAY,aAAa,UAFd;AAGX,0BAAiB,IAHN,E;AAIX,eAAM,IAJK,E;AAKX,mBAAU,aALC;AAMX,oBAAW,KANA,E;AAOX,mBAAU;AACN,mBAAM,KADA,E;AAEN,oBAAO,G;AAFD,UAPC;AAWX,iBAAQ;AACJ,+BAAkB,OADd;AAEJ,wBAAW,MAFP;AAGJ,wBAAW;AAHP,UAXG;AAgBX,qBAAY,GAhBD,E;AAiBX,gBAAO,QAjBI;AAkBX,qBAAY,CAAC,GAAD,EAAM,IAAN,EAAY,IAAZ,EAAkB,IAAlB,C;AAlBD,MAAf;;AAqBA,SAAI,SAAS,sBAAQ,QAAR,EAAkB,OAAlB,CAAb;AACA,SAAI,YAAY,OAAO,UAAP,CAAkB,OAAlB,CAA0B,OAAO,eAAjC,CAAhB;;AAEA,SAAI,cAAc,CAAC,CAAnB,EAAsB;AAClB,eAAM,IAAI,KAAJ,CAAU,8DAAV,CAAN;AACH;;AAED,SAAI,WAAW,wBAAf;AACA,cAAS,aAAT,CAAuB,OAAO,UAA9B;AACA,cAAS,kBAAT,CAA4B,OAAO,eAAnC;AACA,cAAS,eAAT,CAAyB,OAAO,EAAhC;AACA,cAAS,eAAT,CAAyB,EAAzB;AACA,cAAS,iBAAT;AACA,cAAS,gBAAT,CAA0B,CAA1B,EAA6B,CAA7B;AACA,cAAS,QAAT,CAAkB,OAAO,KAAzB;AACA,cAAS,iBAAT,CAA2B,OAAO,QAAlC;AACA,cAAS,aAAT,CAAuB,OAAO,UAA9B;AACA,cAAS,SAAT,CAAmB,OAAO,MAA1B;AACA,cAAS,aAAT,CAAuB,OAAO,UAA9B;AACA,cAAS,YAAT,CAAsB,SAAtB;AACA,cAAS,OAAT,CAAiB,OAAO,IAAxB;AACA,cAAS,gBAAT,CAA0B,OAAO,SAAjC;;;AAGA,SAAI,OAAO,SAAS,MAAT,EAAX;AACA,SAAI,WAAW,6BAAc,IAAd,CAAf;;AAEA,YAAO,SAAP,CAAiB,WAAjB,CAA6B,QAA7B;AACA,cAAS,IAAT,GAAgB,IAAhB;AACA,cAAS,QAAT,GAAoB,QAApB;;AAEA,YAAO,QAAP;AACH,E;;;;;;AClED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kDAAiD,eAAe;;AAEhE;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,MAAM;AACjB,YAAW,OAAO,WAAW;AAC7B,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA,yBAAwB;;AAExB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,kBAAiB;AACjB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,UAAU;AACrB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;;;;;;;AC3YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,YAAY;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA,8BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACndA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,EAAE;AACb,YAAW,MAAM;AACjB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACxVA;;AAEA;;;;;;;ACFA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,oBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;AC7CA;AACA;AACA;;AAEA;AACA;AACA,EAAC;AACD;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;ACdA,gB;;;;;;ACAA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;;;;;;;AChGA;;AAEA;AACA;AACA;;;;;;;ACJA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;ACNA;;AAEA;;AAEA;AACA;AACA;;;;;;;ACNA;;;;;;;ACAA;;AAEA;;AAEA;AACA;AACA;;;;;;;ACNA;;AAEA;AACA;AACA;;;;;;;ACJA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;ACvCA;;AAEA;AACA;AACA;;;;;;;ACJA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAkB;;AAElB;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,cAAa,4BAA4B;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,OAAO;;AAEpB;AACA,cAAa,2BAA2B;AACxC;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA0B;;AAE1B;AACA;AACA;AACA;;;;;;;ACnIA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;;AAEA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;;AAEA,UAAS;AACT;AACA;;;;;;;AC9DA;;AAEA;AACA;AACA;;;;;;;ACJA;;AAEA;AACA;AACA;AACA,SAAQ;AACR,eAAc,aAAa,GAAG,eAAe;AAC7C;AACA;;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AAe,IAAf,EAAqB,KAAK,eAA1B,EAA2C,KAAK,UAAhD;AARgC,cAAzB,EAShB,aATgB,CAAnB;;AAWA,iBAAI,oBAAoB,EAAxB;;AAEA,iBAAI,KAAK,aAAT,EAAwB;AACpB,mCAAkB,IAAlB,CAAuB,UAAU,MAAV,EAAvB;AACH;;AAED,+BAAkB,IAAlB,CAAuB,YAAvB;;AAEA,oBAAO,iBAAE,cAAF,EAAkB;AACrB,+BAAc;AACV,8BAAS;AADC,kBADO,EAAlB,EAIH,iBAJG,CAAP;AAMH;;;mCAES;AACN,iBAAI,OAAO,EAAX;;AAEA,kBAAK,MAAL,CAAY,OAAZ,CAAoB,UAAC,KAAD,EAAW;AAC3B,sBAAK,IAAL,CAAU,MAAM,eAAN,EAAV;AACH,cAFD;;AAIA,oBAAO,IAAP;AACH;;;;;;;;;;;;ACjrBL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,EAAE;AACb,YAAW,KAAK;AAChB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,kBAAiB;AACjB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,UAAU;AACrB,cAAa,OAAO;AACpB;AACA;AACA,gBAAe,mBAAmB,GAAG,YAAY,GAAG,iBAAiB;AACrE,WAAU;AACV;AACA;AACA;AACA;AACA,EAAC;;AAED;;;;;;;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,MAAM;AACjB,YAAW,OAAO,WAAW;AAC7B,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA,yBAAwB;;AAExB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,kBAAiB;AACjB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,UAAU;AACrB,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,SAAS,GAAG,SAAS,GAAG,SAAS;AAC9C,WAAU;AACV;AACA;AACA;AACA,EAAC;;AAED;;;;;;;AC5WA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,YAAY;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8CAA6C,eAAe;AAC5D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA,8BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AChgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACTA;;AAEA;;;;;;;ACFA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA,MAAK;AACL,wBAAuB,cAAc;AACrC;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;;;;;;ACxIA;AACA;;AAEA;;AAEA;AACA;AACA;;;;;;;ACPA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oBAAmB,WAAW;AAC9B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;ACvEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;ACTA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,gBAAe,qBAAqB;AACpC;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,cAAc;AACzB,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAqD;AACrD;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,0BAA0B;AACrD;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;ACzGD;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;AChBA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;AC1BA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;ACnBA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;ACrBA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;;;;;;AClBA;;AAEA;;;;;;;ACFA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,kBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAmB,SAAS;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,wBAAuB,SAAS;AAChC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4BAA2B,SAAS;AACpC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,qBAAoB,sBAAsB;AAC1C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,cAAa;AACb;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oBAAmB,sBAAsB;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oBAAmB,sBAAsB;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C,2BAA2B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC,2BAA2B;AACjE;AACA;AACA;AACA,mCAAkC,2BAA2B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oBAAmB,YAAY;AAC/B;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA,MAAK;AACL;AACA;AACA;;;;;;;AC1aA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;ACrBA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;AACA;;;;;;;ACzDA;;AAEA;;;;;;;ACFA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,wBAAuB,sBAAsB;AAC7C;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;AC/EA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,4BAA2B,0BAA0B;AACrD;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;;;;;ACpFA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAmB,0BAA0B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAmB,0BAA0B;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;ACtJA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;;;;;;;ACdA;;;;;SAEgB,gB,GAAA,gB;SAIA,gB,GAAA,gB;SAIA,e,GAAA,e;SAIA,e,GAAA,e;SAIA,e,GAAA,e;SAIA,e,GAAA,e;AApBT,UAAS,gBAAT,CAA0B,OAA1B,EAAmC,UAAnC,EAA+C;AAClD,YAAO,UAAU,UAAjB;AACH;;AAEM,UAAS,gBAAT,CAA0B,OAA1B,EAAmC,UAAnC,EAA+C;AAClD,YAAO,KAAK,IAAL,CAAU,UAAU,UAApB,CAAP;AACH;;AAEM,UAAS,eAAT,CAAyB,OAAzB,EAAkC,UAAlC,EAA8C;AACjD,YAAO,EAAC,EAAE,UAAU,UAAZ,CAAR;AACH;;AAEM,UAAS,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AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qCAAoC;;AAEpC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,SAAS;AACpB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,SAAS;AACpB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,MAAM;AACjB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,YAAY;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,cAAa,EAAE;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,YAAW,SAAS;AACpB,YAAW,QAAQ;AACnB;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,MAAM;AACjB,YAAW,SAAS;AACpB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,aAAa;AACxB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,MAAM;AACjB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,YAAY;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,YAAW,SAAS;AACpB,cAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,kBAAiB;AACjB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA,8BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,YAAW,EAAE;AACb,cAAa,EAAE;AACf;AACA;AACA,kBAAiB,QAAQ,OAAO,SAAS,EAAE;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,cAAa,QAAQ;AACrB;AACA;AACA,2BAA0B,gBAAgB,SAAS,GAAG;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,EAAE;AACf;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,aAAa;AACxB,cAAa,SAAS;AACtB;AACA;AACA;AACA,OAAM,OAAO,SAAS,EAAE;AACxB,OAAM,OAAO,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC/mEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,qCAAoC;;AAEpC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,YAAY;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,cAAa,SAAS;AACtB;AACA;AACA,kBAAiB;AACjB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,kBAAiB;AACjB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACruBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,YAAY;AACzB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACxJA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe,SAAS;AACxB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qCAAoC,EAAE;AACtC,mBAAkB;AAClB;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,oCAAmC;AACnC;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,qBAAoB,SAAS;AAC7B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACrLA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB,QAAQ;AAC9B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;AC7BA;;AAEA;AACA;AACA;AACA,WAAU,WAAW;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAU,SAAS;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAU,OAAO;AACjB,WAAU,OAAO;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAU,WAAW;AACrB,WAAU,OAAO;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,a;AACA;AACA;;AAEA;AACA;;AAEA,gBAAe,cAAc;;AAE7B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAe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","file":"waveform-playlist.var.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/waveform-playlist/js/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 38bf18e23143ea83a13e\n **/","import _assign from 'lodash.assign';\nimport createElement from 'virtual-dom/create-element';\nimport EventEmitter from 'event-emitter';\nimport Playlist from './Playlist';\n\n\nexport function init(options={}, ee=EventEmitter()) {\n if (options.container === undefined) {\n throw new Error(\"DOM element container must be given.\");\n }\n\n let audioContext = new (window.AudioContext || window.webkitAudioContext);\n\n let defaults = {\n ac: audioContext,\n sampleRate: audioContext.sampleRate,\n samplesPerPixel: 4096, //samples per pixel to draw, must be an entry in zoomLevels.\n mono: true, //whether to draw multiple channels or combine them.\n fadeType: 'logarithmic',\n timescale: false, //whether or not to include the time measure.\n controls: {\n show: false, //whether or not to include the track controls\n width: 150 //width of controls in pixels\n },\n colors: {\n waveOutlineColor: 'white',\n timeColor: 'grey',\n fadeColor: 'black'\n },\n waveHeight: 128, //height of each canvas element a waveform is on.\n state: 'cursor',\n zoomLevels: [512, 1024, 2048, 4096] //zoom levels in samples per pixel\n };\n\n let config = _assign(defaults, options);\n let zoomIndex = config.zoomLevels.indexOf(config.samplesPerPixel);\n\n if (zoomIndex === -1) {\n throw new Error(\"initial samplesPerPixel must be included in array zoomLevels\");\n }\n\n let playlist = new Playlist();\n playlist.setSampleRate(config.sampleRate);\n playlist.setSamplesPerPixel(config.samplesPerPixel);\n playlist.setAudioContext(config.ac);\n playlist.setEventEmitter(ee);\n playlist.setUpEventEmitter();\n playlist.setTimeSelection(0, 0);\n playlist.setState(config.state);\n playlist.setControlOptions(config.controls);\n playlist.setWaveHeight(config.waveHeight);\n playlist.setColors(config.colors);\n playlist.setZoomLevels(config.zoomLevels);\n playlist.setZoomIndex(zoomIndex);\n playlist.setMono(config.mono);\n playlist.setShowTimeScale(config.timescale);\n\n //take care of initial virtual dom rendering.\n let tree = playlist.render();\n let rootNode = createElement(tree);\n\n config.container.appendChild(rootNode);\n playlist.tree = tree;\n playlist.rootNode = rootNode;\n\n return playlist;\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/app.js\n **/","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\nvar keys = require('lodash.keys'),\n rest = require('lodash.rest');\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/** Detect if properties shadowing those on `Object.prototype` are non-enumerable. */\nvar nonEnumShadows = !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf');\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : source[key];\n\n assignValue(object, key, newValue);\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return rest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a\n * [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) that affects\n * Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'user': 'fred' };\n * var other = { 'user': 'fred' };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value)) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8 which returns 'object' for typed array and weak map constructors,\n // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length,\n * else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.c = 3;\n * }\n *\n * function Bar() {\n * this.e = 5;\n * }\n *\n * Foo.prototype.d = 4;\n * Bar.prototype.f = 6;\n *\n * _.assign({ 'a': 1 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3, 'e': 5 }\n */\nvar assign = createAssigner(function(object, source) {\n if (nonEnumShadows || isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n});\n\nmodule.exports = assign;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash.assign/index.js\n ** module id = 1\n ** module chunks = 0\n **/","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n stringTag = '[object String]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetPrototype = Object.getPrototypeOf,\n nativeKeys = Object.keys;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n // Avoid a bug in IE 10-11 where objects with a [[Prototype]] of `null`,\n // that are composed entirely of index properties, return `false` for\n // `hasOwnProperty` checks of them.\n return hasOwnProperty.call(object, key) ||\n (typeof object == 'object' && key in object && getPrototype(object) === null);\n}\n\n/**\n * The base implementation of `_.keys` which doesn't skip the constructor\n * property of prototypes or treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n return nativeKeys(Object(object));\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a\n * [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) that affects\n * Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\n/**\n * Gets the `[[Prototype]]` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {null|Object} Returns the `[[Prototype]]`.\n */\nfunction getPrototype(value) {\n return nativeGetPrototype(Object(value));\n}\n\n/**\n * Creates an array of index keys for `object` values of arrays,\n * `arguments` objects, and strings, otherwise `null` is returned.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array|null} Returns index keys, else `null`.\n */\nfunction indexKeys(object) {\n var length = object ? object.length : undefined;\n if (isLength(length) &&\n (isArray(object) || isString(object) || isArguments(object))) {\n return baseTimes(length, String);\n }\n return null;\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 incorrectly makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @type {Function}\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value)) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8 which returns 'object' for typed array and weak map constructors,\n // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length,\n * else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n var isProto = isPrototype(object);\n if (!(isProto || isArrayLike(object))) {\n return baseKeys(object);\n }\n var indexes = indexKeys(object),\n skipIndexes = !!indexes,\n result = indexes || [],\n length = result.length;\n\n for (var key in object) {\n if (baseHas(object, key) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length))) &&\n !(isProto && key == 'constructor')) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = keys;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash.keys/index.js\n ** module id = 2\n ** module chunks = 0\n **/","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n var length = args.length;\n switch (length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\nfunction rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = nativeMax(start === undefined ? (func.length - 1) : toInteger(start), 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n switch (start) {\n case 0: return func.call(this, array);\n case 1: return func.call(this, args[0], array);\n case 2: return func.call(this, args[0], args[1], array);\n }\n var otherArgs = Array(start + 1);\n index = -1;\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8 which returns 'object' for typed array and weak map constructors,\n // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This function is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/6.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = isFunction(value.valueOf) ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = rest;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash.rest/index.js\n ** module id = 3\n ** module chunks = 0\n **/","var createElement = require(\"./vdom/create-element.js\")\n\nmodule.exports = createElement\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/create-element.js\n ** module id = 4\n ** module chunks = 0\n **/","var document = require(\"global/document\")\n\nvar applyProperties = require(\"./apply-properties\")\n\nvar isVNode = require(\"../vnode/is-vnode.js\")\nvar isVText = require(\"../vnode/is-vtext.js\")\nvar isWidget = require(\"../vnode/is-widget.js\")\nvar handleThunk = require(\"../vnode/handle-thunk.js\")\n\nmodule.exports = createElement\n\nfunction createElement(vnode, opts) {\n var doc = opts ? opts.document || document : document\n var warn = opts ? opts.warn : null\n\n vnode = handleThunk(vnode).a\n\n if (isWidget(vnode)) {\n return vnode.init()\n } else if (isVText(vnode)) {\n return doc.createTextNode(vnode.text)\n } else if (!isVNode(vnode)) {\n if (warn) {\n warn(\"Item is not a valid virtual dom node\", vnode)\n }\n return null\n }\n\n var node = (vnode.namespace === null) ?\n doc.createElement(vnode.tagName) :\n doc.createElementNS(vnode.namespace, vnode.tagName)\n\n var props = vnode.properties\n applyProperties(node, props)\n\n var children = vnode.children\n\n for (var i = 0; i < children.length; i++) {\n var childNode = createElement(children[i], opts)\n if (childNode) {\n node.appendChild(childNode)\n }\n }\n\n return node\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vdom/create-element.js\n ** module id = 5\n ** module chunks = 0\n **/","var topLevel = typeof global !== 'undefined' ? global :\n typeof window !== 'undefined' ? window : {}\nvar minDoc = require('min-document');\n\nif (typeof document !== 'undefined') {\n module.exports = document;\n} else {\n var doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'];\n\n if (!doccy) {\n doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc;\n }\n\n module.exports = doccy;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/~/global/document.js\n ** module id = 6\n ** module chunks = 0\n **/","/* (ignored) */\n\n\n/*****************\n ** WEBPACK FOOTER\n ** min-document (ignored)\n ** module id = 7\n ** module chunks = 0\n **/","var isObject = require(\"is-object\")\nvar isHook = require(\"../vnode/is-vhook.js\")\n\nmodule.exports = applyProperties\n\nfunction applyProperties(node, props, previous) {\n for (var propName in props) {\n var propValue = props[propName]\n\n if (propValue === undefined) {\n removeProperty(node, propName, propValue, previous);\n } else if (isHook(propValue)) {\n removeProperty(node, propName, propValue, previous)\n if (propValue.hook) {\n propValue.hook(node,\n propName,\n previous ? previous[propName] : undefined)\n }\n } else {\n if (isObject(propValue)) {\n patchObject(node, props, previous, propName, propValue);\n } else {\n node[propName] = propValue\n }\n }\n }\n}\n\nfunction removeProperty(node, propName, propValue, previous) {\n if (previous) {\n var previousValue = previous[propName]\n\n if (!isHook(previousValue)) {\n if (propName === \"attributes\") {\n for (var attrName in previousValue) {\n node.removeAttribute(attrName)\n }\n } else if (propName === \"style\") {\n for (var i in previousValue) {\n node.style[i] = \"\"\n }\n } else if (typeof previousValue === \"string\") {\n node[propName] = \"\"\n } else {\n node[propName] = null\n }\n } else if (previousValue.unhook) {\n previousValue.unhook(node, propName, propValue)\n }\n }\n}\n\nfunction patchObject(node, props, previous, propName, propValue) {\n var previousValue = previous ? previous[propName] : undefined\n\n // Set attributes\n if (propName === \"attributes\") {\n for (var attrName in propValue) {\n var attrValue = propValue[attrName]\n\n if (attrValue === undefined) {\n node.removeAttribute(attrName)\n } else {\n node.setAttribute(attrName, attrValue)\n }\n }\n\n return\n }\n\n if(previousValue && isObject(previousValue) &&\n getPrototype(previousValue) !== getPrototype(propValue)) {\n node[propName] = propValue\n return\n }\n\n if (!isObject(node[propName])) {\n node[propName] = {}\n }\n\n var replacer = propName === \"style\" ? \"\" : undefined\n\n for (var k in propValue) {\n var value = propValue[k]\n node[propName][k] = (value === undefined) ? replacer : value\n }\n}\n\nfunction getPrototype(value) {\n if (Object.getPrototypeOf) {\n return Object.getPrototypeOf(value)\n } else if (value.__proto__) {\n return value.__proto__\n } else if (value.constructor) {\n return value.constructor.prototype\n }\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vdom/apply-properties.js\n ** module id = 8\n ** module chunks = 0\n **/","\"use strict\";\n\nmodule.exports = function isObject(x) {\n\treturn typeof x === \"object\" && x !== null;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/is-object/index.js\n ** module id = 9\n ** module chunks = 0\n **/","module.exports = isHook\n\nfunction isHook(hook) {\n return hook &&\n (typeof hook.hook === \"function\" && !hook.hasOwnProperty(\"hook\") ||\n typeof hook.unhook === \"function\" && !hook.hasOwnProperty(\"unhook\"))\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vnode/is-vhook.js\n ** module id = 10\n ** module chunks = 0\n **/","var version = require(\"./version\")\n\nmodule.exports = isVirtualNode\n\nfunction isVirtualNode(x) {\n return x && x.type === \"VirtualNode\" && x.version === version\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vnode/is-vnode.js\n ** module id = 11\n ** module chunks = 0\n **/","module.exports = \"2\"\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vnode/version.js\n ** module id = 12\n ** module chunks = 0\n **/","var version = require(\"./version\")\n\nmodule.exports = isVirtualText\n\nfunction isVirtualText(x) {\n return x && x.type === \"VirtualText\" && x.version === version\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vnode/is-vtext.js\n ** module id = 13\n ** module chunks = 0\n **/","module.exports = isWidget\n\nfunction isWidget(w) {\n return w && w.type === \"Widget\"\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vnode/is-widget.js\n ** module id = 14\n ** module chunks = 0\n **/","var isVNode = require(\"./is-vnode\")\nvar isVText = require(\"./is-vtext\")\nvar isWidget = require(\"./is-widget\")\nvar isThunk = require(\"./is-thunk\")\n\nmodule.exports = handleThunk\n\nfunction handleThunk(a, b) {\n var renderedA = a\n var renderedB = b\n\n if (isThunk(b)) {\n renderedB = renderThunk(b, a)\n }\n\n if (isThunk(a)) {\n renderedA = renderThunk(a, null)\n }\n\n return {\n a: renderedA,\n b: renderedB\n }\n}\n\nfunction renderThunk(thunk, previous) {\n var renderedThunk = thunk.vnode\n\n if (!renderedThunk) {\n renderedThunk = thunk.vnode = thunk.render(previous)\n }\n\n if (!(isVNode(renderedThunk) ||\n isVText(renderedThunk) ||\n isWidget(renderedThunk))) {\n throw new Error(\"thunk did not return a valid node\");\n }\n\n return renderedThunk\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vnode/handle-thunk.js\n ** module id = 15\n ** module chunks = 0\n **/","module.exports = isThunk\r\n\r\nfunction isThunk(t) {\r\n return t && t.type === \"Thunk\"\r\n}\r\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vnode/is-thunk.js\n ** module id = 16\n ** module chunks = 0\n **/","'use strict';\n\nvar d = require('d')\n , callable = require('es5-ext/object/valid-callable')\n\n , apply = Function.prototype.apply, call = Function.prototype.call\n , create = Object.create, defineProperty = Object.defineProperty\n , defineProperties = Object.defineProperties\n , hasOwnProperty = Object.prototype.hasOwnProperty\n , descriptor = { configurable: true, enumerable: false, writable: true }\n\n , on, once, off, emit, methods, descriptors, base;\n\non = function (type, listener) {\n\tvar data;\n\n\tcallable(listener);\n\n\tif (!hasOwnProperty.call(this, '__ee__')) {\n\t\tdata = descriptor.value = create(null);\n\t\tdefineProperty(this, '__ee__', descriptor);\n\t\tdescriptor.value = null;\n\t} else {\n\t\tdata = this.__ee__;\n\t}\n\tif (!data[type]) data[type] = listener;\n\telse if (typeof data[type] === 'object') data[type].push(listener);\n\telse data[type] = [data[type], listener];\n\n\treturn this;\n};\n\nonce = function (type, listener) {\n\tvar once, self;\n\n\tcallable(listener);\n\tself = this;\n\ton.call(this, type, once = function () {\n\t\toff.call(self, type, once);\n\t\tapply.call(listener, this, arguments);\n\t});\n\n\tonce.__eeOnceListener__ = listener;\n\treturn this;\n};\n\noff = function (type, listener) {\n\tvar data, listeners, candidate, i;\n\n\tcallable(listener);\n\n\tif (!hasOwnProperty.call(this, '__ee__')) return this;\n\tdata = this.__ee__;\n\tif (!data[type]) return this;\n\tlisteners = data[type];\n\n\tif (typeof listeners === 'object') {\n\t\tfor (i = 0; (candidate = listeners[i]); ++i) {\n\t\t\tif ((candidate === listener) ||\n\t\t\t\t\t(candidate.__eeOnceListener__ === listener)) {\n\t\t\t\tif (listeners.length === 2) data[type] = listeners[i ? 0 : 1];\n\t\t\t\telse listeners.splice(i, 1);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif ((listeners === listener) ||\n\t\t\t\t(listeners.__eeOnceListener__ === listener)) {\n\t\t\tdelete data[type];\n\t\t}\n\t}\n\n\treturn this;\n};\n\nemit = function (type) {\n\tvar i, l, listener, listeners, args;\n\n\tif (!hasOwnProperty.call(this, '__ee__')) return;\n\tlisteners = this.__ee__[type];\n\tif (!listeners) return;\n\n\tif (typeof listeners === 'object') {\n\t\tl = arguments.length;\n\t\targs = new Array(l - 1);\n\t\tfor (i = 1; i < l; ++i) args[i - 1] = arguments[i];\n\n\t\tlisteners = listeners.slice();\n\t\tfor (i = 0; (listener = listeners[i]); ++i) {\n\t\t\tapply.call(listener, this, args);\n\t\t}\n\t} else {\n\t\tswitch (arguments.length) {\n\t\tcase 1:\n\t\t\tcall.call(listeners, this);\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tcall.call(listeners, this, arguments[1]);\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tcall.call(listeners, this, arguments[1], arguments[2]);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tl = arguments.length;\n\t\t\targs = new Array(l - 1);\n\t\t\tfor (i = 1; i < l; ++i) {\n\t\t\t\targs[i - 1] = arguments[i];\n\t\t\t}\n\t\t\tapply.call(listeners, this, args);\n\t\t}\n\t}\n};\n\nmethods = {\n\ton: on,\n\tonce: once,\n\toff: off,\n\temit: emit\n};\n\ndescriptors = {\n\ton: d(on),\n\tonce: d(once),\n\toff: d(off),\n\temit: d(emit)\n};\n\nbase = defineProperties({}, descriptors);\n\nmodule.exports = exports = function (o) {\n\treturn (o == null) ? create(base) : defineProperties(Object(o), descriptors);\n};\nexports.methods = methods;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/event-emitter/index.js\n ** module id = 17\n ** module chunks = 0\n **/","'use strict';\n\nvar assign = require('es5-ext/object/assign')\n , normalizeOpts = require('es5-ext/object/normalize-options')\n , isCallable = require('es5-ext/object/is-callable')\n , contains = require('es5-ext/string/#/contains')\n\n , d;\n\nd = module.exports = function (dscr, value/*, options*/) {\n\tvar c, e, w, options, desc;\n\tif ((arguments.length < 2) || (typeof dscr !== 'string')) {\n\t\toptions = value;\n\t\tvalue = dscr;\n\t\tdscr = null;\n\t} else {\n\t\toptions = arguments[2];\n\t}\n\tif (dscr == null) {\n\t\tc = w = true;\n\t\te = false;\n\t} else {\n\t\tc = contains.call(dscr, 'c');\n\t\te = contains.call(dscr, 'e');\n\t\tw = contains.call(dscr, 'w');\n\t}\n\n\tdesc = { value: value, configurable: c, enumerable: e, writable: w };\n\treturn !options ? desc : assign(normalizeOpts(options), desc);\n};\n\nd.gs = function (dscr, get, set/*, options*/) {\n\tvar c, e, options, desc;\n\tif (typeof dscr !== 'string') {\n\t\toptions = set;\n\t\tset = get;\n\t\tget = dscr;\n\t\tdscr = null;\n\t} else {\n\t\toptions = arguments[3];\n\t}\n\tif (get == null) {\n\t\tget = undefined;\n\t} else if (!isCallable(get)) {\n\t\toptions = get;\n\t\tget = set = undefined;\n\t} else if (set == null) {\n\t\tset = undefined;\n\t} else if (!isCallable(set)) {\n\t\toptions = set;\n\t\tset = undefined;\n\t}\n\tif (dscr == null) {\n\t\tc = true;\n\t\te = false;\n\t} else {\n\t\tc = contains.call(dscr, 'c');\n\t\te = contains.call(dscr, 'e');\n\t}\n\n\tdesc = { get: get, set: set, configurable: c, enumerable: e };\n\treturn !options ? desc : assign(normalizeOpts(options), desc);\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/d/index.js\n ** module id = 18\n ** module chunks = 0\n **/","'use strict';\n\nmodule.exports = require('./is-implemented')()\n\t? Object.assign\n\t: require('./shim');\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/es5-ext/object/assign/index.js\n ** module id = 19\n ** module chunks = 0\n **/","'use strict';\n\nmodule.exports = function () {\n\tvar assign = Object.assign, obj;\n\tif (typeof assign !== 'function') return false;\n\tobj = { foo: 'raz' };\n\tassign(obj, { bar: 'dwa' }, { trzy: 'trzy' });\n\treturn (obj.foo + obj.bar + obj.trzy) === 'razdwatrzy';\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/es5-ext/object/assign/is-implemented.js\n ** module id = 20\n ** module chunks = 0\n **/","'use strict';\n\nvar keys = require('../keys')\n , value = require('../valid-value')\n\n , max = Math.max;\n\nmodule.exports = function (dest, src/*, …srcn*/) {\n\tvar error, i, l = max(arguments.length, 2), assign;\n\tdest = Object(value(dest));\n\tassign = function (key) {\n\t\ttry { dest[key] = src[key]; } catch (e) {\n\t\t\tif (!error) error = e;\n\t\t}\n\t};\n\tfor (i = 1; i < l; ++i) {\n\t\tsrc = arguments[i];\n\t\tkeys(src).forEach(assign);\n\t}\n\tif (error !== undefined) throw error;\n\treturn dest;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/es5-ext/object/assign/shim.js\n ** module id = 21\n ** module chunks = 0\n **/","'use strict';\n\nmodule.exports = require('./is-implemented')()\n\t? Object.keys\n\t: require('./shim');\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/es5-ext/object/keys/index.js\n ** module id = 22\n ** module chunks = 0\n **/","'use strict';\n\nmodule.exports = function () {\n\ttry {\n\t\tObject.keys('primitive');\n\t\treturn true;\n\t} catch (e) { return false; }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/es5-ext/object/keys/is-implemented.js\n ** module id = 23\n ** module chunks = 0\n **/","'use strict';\n\nvar keys = Object.keys;\n\nmodule.exports = function (object) {\n\treturn keys(object == null ? object : Object(object));\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/es5-ext/object/keys/shim.js\n ** module id = 24\n ** module chunks = 0\n **/","'use strict';\n\nmodule.exports = function (value) {\n\tif (value == null) throw new TypeError(\"Cannot use null or undefined\");\n\treturn value;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/es5-ext/object/valid-value.js\n ** module id = 25\n ** module chunks = 0\n **/","'use strict';\n\nvar forEach = Array.prototype.forEach, create = Object.create;\n\nvar process = function (src, obj) {\n\tvar key;\n\tfor (key in src) obj[key] = src[key];\n};\n\nmodule.exports = function (options/*, …options*/) {\n\tvar result = create(null);\n\tforEach.call(arguments, function (options) {\n\t\tif (options == null) return;\n\t\tprocess(Object(options), result);\n\t});\n\treturn result;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/es5-ext/object/normalize-options.js\n ** module id = 26\n ** module chunks = 0\n **/","// Deprecated\n\n'use strict';\n\nmodule.exports = function (obj) { return typeof obj === 'function'; };\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/es5-ext/object/is-callable.js\n ** module id = 27\n ** module chunks = 0\n **/","'use strict';\n\nmodule.exports = require('./is-implemented')()\n\t? String.prototype.contains\n\t: require('./shim');\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/es5-ext/string/#/contains/index.js\n ** module id = 28\n ** module chunks = 0\n **/","'use strict';\n\nvar str = 'razdwatrzy';\n\nmodule.exports = function () {\n\tif (typeof str.contains !== 'function') return false;\n\treturn ((str.contains('dwa') === true) && (str.contains('foo') === false));\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/es5-ext/string/#/contains/is-implemented.js\n ** module id = 29\n ** module chunks = 0\n **/","'use strict';\n\nvar indexOf = String.prototype.indexOf;\n\nmodule.exports = function (searchString/*, position*/) {\n\treturn indexOf.call(this, searchString, arguments[1]) > -1;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/es5-ext/string/#/contains/shim.js\n ** module id = 30\n ** module chunks = 0\n **/","'use strict';\n\nmodule.exports = function (fn) {\n\tif (typeof fn !== 'function') throw new TypeError(fn + \" is not a function\");\n\treturn fn;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/es5-ext/object/valid-callable.js\n ** module id = 31\n ** module chunks = 0\n **/","'use strict';\n\nimport _defaults from 'lodash.defaults';\n\nimport h from 'virtual-dom/h';\nimport diff from 'virtual-dom/diff';\nimport patch from 'virtual-dom/patch';\n\nimport {pixelsToSeconds} from './utils/conversions';\nimport LoaderFactory from './track/loader/LoaderFactory';\n\nimport ScrollHook from './render/ScrollHook';\n\nimport TimeScale from './TimeScale';\nimport Track from './Track';\nimport Playout from './Playout';\n\nimport RecorderWorker from 'worker!./track/recorderWorker.js';\n\nexport default class {\n\n constructor() {\n\n this.tracks = [];\n this.soloedTracks = [];\n this.mutedTracks = [];\n this.playoutPromises = [];\n\n this.cursor = 0;\n this.playbackSeconds = 0;\n this.duration = 0;\n this.scrollLeft = 0;\n this.showTimescale = false;\n\n this.fadeType = \"logarithmic\";\n this.masterGain = 1;\n }\n\n initRecorder(stream) {\n if (stream instanceof LocalMediaStream !== true) {\n throw new Error(\"Must provide a LocalMediaStream to record from\");\n }\n\n this.mediaRecorder = new MediaRecorder(stream);\n\n this.mediaRecorder.onstart = (e) => {\n let track = new Track();\n track.setName(\"Recording\");\n track.setEnabledStates();\n track.setEventEmitter(this.ee);\n\n this.recordingTrack = track;\n this.tracks.push(track);\n\n this.chunks = [];\n };\n\n this.mediaRecorder.ondataavailable = (e) => {\n this.chunks.push(e.data);\n\n let recording = new Blob(this.chunks, {'type': 'audio/ogg; codecs=opus'});\n let loader = LoaderFactory.createLoader(recording, this.ac);\n loader.load().then((audioBuffer) => {\n //ask web worker for peaks.\n this.recorderWorker.postMessage({\n samples: audioBuffer.getChannelData(0),\n samplesPerPixel: this.samplesPerPixel\n });\n this.recordingTrack.setCues(0, audioBuffer.duration);\n this.recordingTrack.setBuffer(audioBuffer);\n this.recordingTrack.setPlayout(new Playout(this.ac, audioBuffer));\n this.adjustDuration();\n });\n };\n\n //use a worker for calculating recording peaks.\n this.recorderWorker = new RecorderWorker();\n this.recorderWorker.onmessage = (e) => {\n this.recordingTrack.setPeaks(e.data);\n this.draw(this.render());\n };\n }\n\n setShowTimeScale(show) {\n this.showTimescale = show;\n }\n\n setMono(mono) {\n this.mono = mono;\n }\n\n setSampleRate(sampleRate) {\n this.sampleRate = sampleRate;\n }\n\n setSamplesPerPixel(samplesPerPixel) {\n this.samplesPerPixel = samplesPerPixel;\n }\n\n setAudioContext(ac) {\n this.ac = ac;\n }\n\n setControlOptions(controlOptions) {\n this.controls = controlOptions;\n }\n\n setWaveHeight(height) {\n this.waveHeight = height;\n }\n\n setColors(colors) {\n this.colors = colors;\n }\n\n setEventEmitter(ee) {\n this.ee = ee;\n }\n\n getEventEmitter() {\n return this.ee;\n }\n\n setUpEventEmitter() {\n let ee = this.ee;\n\n ee.on('select', (start, end, track) => {\n\n if (this.isPlaying()) {\n this.lastSeeked = start;\n this.pausedAt = undefined;\n this.restartPlayFrom(start);\n }\n else {\n //reset if it was paused.\n this.playbackSeconds = 0;\n this.setTimeSelection(start, end);\n this.setActiveTrack(track);\n this.draw(this.render());\n }\n });\n\n ee.on('statechange', (state) => {\n this.setState(state);\n this.draw(this.render());\n });\n\n ee.on('shift', (deltaTime, track) => {\n track.setStartTime(track.getStartTime() + deltaTime);\n this.adjustDuration();\n this.draw(this.render());\n });\n\n ee.on('record', () => {\n this.record();\n });\n\n ee.on('play', (start, end) => {\n this.play(start, end);\n });\n\n ee.on('pause', () => {\n this.pause();\n });\n\n ee.on('stop', () => {\n this.stop();\n });\n\n ee.on('rewind', () => {\n this.rewind();\n });\n\n ee.on('fastforward', () => {\n this.fastForward();\n });\n\n ee.on('solo', (track) => {\n this.soloTrack(track);\n this.adjustTrackPlayout();\n this.draw(this.render());\n });\n\n ee.on('mute', (track) => {\n this.muteTrack(track);\n this.adjustTrackPlayout();\n this.draw(this.render());\n });\n\n ee.on('volumechange', (volume, track) => {\n track.setGainLevel(volume/100);\n });\n\n ee.on('mastervolumechange', (volume) => {\n this.masterGain = volume/100\n this.tracks.forEach((track) => {\n track.setMasterGainLevel(this.masterGain);\n });\n });\n\n ee.on('fadein', (duration, track) => {\n track.setFadeIn(duration, this.fadeType);\n this.draw(this.render());\n });\n\n ee.on('fadeout', (duration, track) => {\n track.setFadeOut(duration, this.fadeType);\n this.draw(this.render());\n });\n\n ee.on('fadetype', (type) => {\n this.fadeType = type;\n });\n\n ee.on('newtrack', (file) => {\n this.load([{\n src: file,\n name: file.name\n }]);\n });\n\n ee.on('trim', () => {\n let track = this.getActiveTrack();\n let timeSelection = this.getTimeSelection();\n\n track.trim(timeSelection.start, timeSelection.end);\n track.calculatePeaks(this.samplesPerPixel, this.sampleRate);\n\n this.setTimeSelection(0, 0);\n this.draw(this.render());\n });\n\n ee.on('zoomin', () => {\n let zoomIndex = Math.max(0, this.zoomIndex-1);\n let zoom = this.zoomLevels[zoomIndex];\n\n if (zoom !== this.samplesPerPixel) {\n this.setZoom(zoom);\n this.draw(this.render());\n }\n });\n\n ee.on('zoomout', () => {\n let zoomIndex = Math.min(this.zoomLevels.length-1, this.zoomIndex+1);\n let zoom = this.zoomLevels[zoomIndex];\n\n if (zoom !== this.samplesPerPixel) {\n this.setZoom(zoom);\n this.draw(this.render());\n }\n });\n\n ee.on('scroll', () => {\n this.draw(this.render());\n });\n }\n\n load(trackList, options={}) {\n let loadPromises = trackList.map((trackInfo) => {\n let loader = LoaderFactory.createLoader(trackInfo.src, this.ac, this.ee);\n return loader.load();\n });\n\n return Promise.all(loadPromises).then((audioBuffers) => {\n let tracks = audioBuffers.map((audioBuffer, index) => {\n let info = trackList[index];\n let name = info.name || \"Untitled\";\n let start = info.start || 0;\n let states = info.states || {};\n let fadeIn = info.fadeIn;\n let fadeOut = info.fadeOut;\n let cueIn = info.cuein || 0;\n let cueOut = info.cueout || audioBuffer.duration;\n let gain = info.gain || 1;\n let muted = info.muted || false;\n let soloed = info.soloed || false;\n let selection = info.selected;\n let peaks = info.peaks || {type: \"WebAudio\", mono: this.mono};\n\n //webaudio specific playout for now.\n let playout = new Playout(this.ac, audioBuffer);\n\n let track = new Track();\n track.src = info.src;\n track.setBuffer(audioBuffer);\n track.setName(name);\n track.setEventEmitter(this.ee);\n track.setEnabledStates(states);\n track.setCues(cueIn, cueOut);\n\n if (fadeIn !== undefined) {\n track.setFadeIn(fadeIn.duration, fadeIn.shape);\n }\n\n if (fadeOut !== undefined) {\n track.setFadeOut(fadeOut.duration, fadeOut.shape);\n }\n\n if (selection !== undefined) {\n this.setActiveTrack(track);\n this.setTimeSelection(selection.start, selection.end);\n }\n\n if (peaks !== undefined) {\n track.setPeakData(peaks);\n }\n\n track.setState(this.getState());\n track.setStartTime(start);\n track.setPlayout(playout);\n\n track.setGainLevel(gain);\n\n if (muted) {\n this.muteTrack(track);\n }\n\n if (soloed) {\n this.soloTrack(track);\n }\n\n //extract peaks with AudioContext for now.\n track.calculatePeaks(this.samplesPerPixel, this.sampleRate);\n\n return track;\n });\n\n this.tracks = this.tracks.concat(tracks);\n this.adjustDuration();\n this.draw(this.render());\n });\n }\n\n /*\n track instance of Track.\n */\n setActiveTrack(track) {\n this.activeTrack = track;\n }\n\n getActiveTrack() {\n return this.activeTrack;\n }\n\n /*\n start, end in seconds.\n */\n setTimeSelection(start, end) {\n this.timeSelection = {\n start,\n end,\n };\n\n this.cursor = start;\n }\n\n getTimeSelection() {\n return this.timeSelection;\n }\n\n setState(state) {\n this.state = state;\n\n this.tracks.forEach((track) => {\n track.setState(state);\n });\n }\n\n getState() {\n return this.state;\n }\n\n setZoomIndex(index) {\n this.zoomIndex = index;\n }\n\n setZoomLevels(levels) {\n this.zoomLevels = levels;\n }\n\n setZoom(zoom) {\n this.samplesPerPixel = zoom;\n this.zoomIndex = this.zoomLevels.indexOf(zoom);\n this.tracks.forEach((track) => {\n track.calculatePeaks(zoom, this.sampleRate);\n }); \n }\n\n muteTrack(track) {\n let mutedList = this.mutedTracks;\n let index = mutedList.indexOf(track);\n\n if (index > -1) {\n mutedList.splice(index, 1);\n }\n else {\n mutedList.push(track);\n }\n }\n\n soloTrack(track) {\n let soloedList = this.soloedTracks;\n let index = soloedList.indexOf(track);\n\n if (index > -1) {\n soloedList.splice(index, 1);\n }\n else {\n soloedList.push(track);\n }\n }\n\n adjustTrackPlayout() {\n this.tracks.forEach((track) => {\n track.setShouldPlay(this.shouldTrackPlay(track));\n });\n }\n\n adjustDuration() {\n this.duration = this.tracks.reduce((duration, track) => {\n return Math.max(duration, track.getEndTime());\n }, 0);\n }\n\n shouldTrackPlay(track) {\n var shouldPlay;\n //if there are solo tracks, only they should play.\n if (this.soloedTracks.length > 0) {\n shouldPlay = false;\n if (this.soloedTracks.indexOf(track) > -1) {\n shouldPlay = true;\n }\n }\n //play all tracks except any muted tracks.\n else {\n shouldPlay = true;\n if (this.mutedTracks.indexOf(track) > -1) {\n shouldPlay = false;\n }\n }\n\n return shouldPlay;\n }\n\n isPlaying() {\n return this.tracks.reduce((isPlaying, track) => {\n return isPlaying || track.isPlaying();\n }, false);\n }\n\n /*\n * returns the current point of time in the playlist in seconds.\n */\n getCurrentTime() {\n let cursorPos = this.lastSeeked || this.pausedAt || this.cursor;\n\n return cursorPos + this.getElapsedTime();\n }\n\n getElapsedTime() {\n return this.ac.currentTime - this.lastPlay;\n }\n\n setMasterGain(gain){\n this.ee.emit('mastervolumechange', gain);\n }\n\n restartPlayFrom(start, end) {\n this.stopAnimation();\n\n this.tracks.forEach((editor) => {\n editor.scheduleStop();\n });\n\n return Promise.all(this.playoutPromises).then(this.play.bind(this, start, end));\n }\n\n play(startTime, endTime) {\n var currentTime = this.ac.currentTime,\n selected = this.getTimeSelection(),\n playoutPromises = [];\n\n startTime = startTime || this.pausedAt || this.cursor;\n\n if (!endTime && selected.end !== selected.start && selected.end > startTime) {\n endTime = selected.end;\n }\n\n if (this.isPlaying()) {\n this.restartPlayFrom(startTime, endTime);\n return;\n }\n\n this.tracks.forEach((track) => {\n track.setState('cursor');\n playoutPromises.push(track.schedulePlay(currentTime, startTime, endTime, {\n shouldPlay: this.shouldTrackPlay(track),\n masterGain : this.masterGain\n }));\n });\n\n this.lastPlay = currentTime;\n //use these to track when the playlist has fully stopped.\n this.playoutPromises = playoutPromises;\n this.startAnimation(startTime);\n\n return Promise.all(this.playoutPromises);\n }\n\n pause() {\n if (!this.isPlaying()) {\n return;\n }\n\n this.pausedAt = this.getCurrentTime();\n return this.playbackReset();\n }\n\n stop() {\n this.mediaRecorder && this.mediaRecorder.state === \"recording\" && this.mediaRecorder.stop();\n\n this.pausedAt = undefined;\n this.playbackSeconds = 0;\n return this.playbackReset();\n }\n\n playbackReset() {\n this.lastSeeked = undefined;\n this.stopAnimation();\n\n this.tracks.forEach((track) => {\n track.scheduleStop();\n track.setState(this.getState());\n });\n\n this.draw(this.render());\n\n return Promise.all(this.playoutPromises);\n }\n\n rewind() {\n return this.stop().then(() => {\n this.scrollLeft = 0;\n this.ee.emit('select', 0, 0);\n });\n }\n\n fastForward() {\n return this.stop().then(() => {\n if (this.viewDuration < this.duration) {\n this.scrollLeft = this.duration - this.viewDuration;\n }\n else {\n this.scrollLeft = 0;\n }\n\n this.ee.emit('select', this.duration, this.duration);\n });\n }\n\n record() {\n let playoutPromises = [];\n this.mediaRecorder.start(300);\n\n this.tracks.forEach((track) => {\n track.setState('none');\n playoutPromises.push(track.schedulePlay(this.ac.currentTime, 0, undefined, {\n shouldPlay: this.shouldTrackPlay(track)\n }));\n });\n\n this.playoutPromises = playoutPromises;\n }\n\n startAnimation(startTime) {\n this.lastDraw = this.ac.currentTime;\n this.animationRequest = window.requestAnimationFrame(this.updateEditor.bind(this, startTime));\n }\n\n stopAnimation() {\n window.cancelAnimationFrame(this.animationRequest);\n this.lastDraw = undefined;\n }\n\n /*\n * Animation function for the playlist.\n */\n updateEditor(cursorPos) {\n let currentTime = this.ac.currentTime;\n let playbackSeconds = 0;\n let elapsed;\n\n cursorPos = cursorPos || this.cursor;\n elapsed = currentTime - this.lastDraw;\n\n if (this.isPlaying()) {\n playbackSeconds = cursorPos + elapsed;\n this.ee.emit('timeupdate', playbackSeconds);\n this.animationRequest = window.requestAnimationFrame(this.updateEditor.bind(this, playbackSeconds));\n }\n else {\n this.stopAnimation();\n this.pausedAt = undefined;\n this.lastSeeked = undefined;\n this.setState(this.getState());\n }\n\n this.playbackSeconds = playbackSeconds;\n\n this.draw(this.render());\n this.lastDraw = currentTime;\n }\n\n draw(newTree) {\n window.requestAnimationFrame(() => {\n let patches = diff(this.tree, newTree);\n this.rootNode = patch(this.rootNode, patches);\n this.tree = newTree;\n\n //use for fast forwarding.\n this.viewDuration = pixelsToSeconds(this.rootNode.clientWidth - this.controls.width, this.samplesPerPixel, this.sampleRate);\n });\n }\n\n getTrackRenderData(data={}) {\n let defaults = {\n \"height\": this.waveHeight,\n \"resolution\": this.samplesPerPixel,\n \"sampleRate\": this.sampleRate,\n \"controls\": this.controls,\n \"isActive\": false,\n \"timeSelection\": this.getTimeSelection(),\n \"playlistLength\": this.duration,\n \"playbackSeconds\": this.playbackSeconds,\n \"colors\": this.colors\n };\n\n return _defaults(data, defaults);\n }\n\n render() {\n let controlWidth = this.controls.show ? this.controls.width : 0;\n let timeScale = new TimeScale(this.duration, this.scrollLeft, this.samplesPerPixel, this.sampleRate, controlWidth);\n\n let activeTrack = this.getActiveTrack();\n let trackElements = this.tracks.map((track) => {\n return track.render(this.getTrackRenderData({\n \"isActive\": (activeTrack === track) ? true : false,\n \"shouldPlay\": this.shouldTrackPlay(track),\n \"soloed\": this.soloedTracks.indexOf(track) > -1,\n \"muted\": this.mutedTracks.indexOf(track) > -1\n }));\n });\n\n let trackSection = h(\"div.playlist-tracks\", {\n \"attributes\": {\n \"style\": \"overflow: auto;\"\n },\n \"onscroll\": (e) => {\n this.scrollLeft = pixelsToSeconds(e.target.scrollLeft, this.samplesPerPixel, this.sampleRate);\n this.ee.emit(\"scroll\", this.scrollLeft);\n },\n \"hook\": new ScrollHook(this, this.samplesPerPixel, this.sampleRate)\n }, trackElements);\n\n let containerChildren = [];\n\n if (this.showTimescale) {\n containerChildren.push(timeScale.render());\n }\n\n containerChildren.push(trackSection);\n\n return h(\"div.playlist\", {\n \"attributes\": {\n \"style\": \"overflow: hidden; position: relative;\"\n }},\n containerChildren\n );\n }\n\n getInfo() {\n var info = [];\n\n this.tracks.forEach((track) => {\n info.push(track.getTrackDetails());\n });\n\n return info;\n }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/Playlist.js\n **/","/**\n * lodash 4.0.1 (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\nvar assignInWith = require('lodash.assigninwith'),\n rest = require('lodash.rest');\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n var length = args.length;\n switch (length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used by `_.defaults` to customize its `_.assignIn` use.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\nfunction assignInDefaults(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n}\n\n/**\n * Performs a [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'user': 'fred' };\n * var other = { 'user': 'fred' };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Assigns own and inherited enumerable properties of source objects to the\n * destination object for all destination properties that resolve to `undefined`.\n * Source objects are applied from left to right. Once a property is set,\n * additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * _.defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' });\n * // => { 'user': 'barney', 'age': 36 }\n */\nvar defaults = rest(function(args) {\n args.push(undefined, assignInDefaults);\n return apply(assignInWith, undefined, args);\n});\n\nmodule.exports = defaults;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash.defaults/index.js\n ** module id = 33\n ** module chunks = 0\n **/","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\nvar keysIn = require('lodash.keysin'),\n rest = require('lodash.rest');\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : source[key];\n\n assignValue(object, key, newValue);\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return rest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a\n * [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) that affects\n * Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'user': 'fred' };\n * var other = { 'user': 'fred' };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value)) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8 which returns 'object' for typed array and weak map constructors,\n // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length,\n * else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n});\n\nmodule.exports = assignInWith;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash.assigninwith/index.js\n ** module id = 34\n ** module chunks = 0\n **/","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n stringTag = '[object String]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to determine if values are of the language type `Object`. */\nvar objectTypes = {\n 'function': true,\n 'object': true\n};\n\n/** Detect free variable `exports`. */\nvar freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)\n ? exports\n : undefined;\n\n/** Detect free variable `module`. */\nvar freeModule = (objectTypes[typeof module] && module && !module.nodeType)\n ? module\n : undefined;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global);\n\n/** Detect free variable `self`. */\nvar freeSelf = checkGlobal(objectTypes[typeof self] && self);\n\n/** Detect free variable `window`. */\nvar freeWindow = checkGlobal(objectTypes[typeof window] && window);\n\n/** Detect `this` as the global object. */\nvar thisGlobal = checkGlobal(objectTypes[typeof this] && this);\n\n/**\n * Used as a reference to the global object.\n *\n * The `this` value is used if it's the global object to avoid Greasemonkey's\n * restricted `window` object, otherwise the `window` object is used.\n */\nvar root = freeGlobal ||\n ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) ||\n freeSelf || thisGlobal || Function('return this')();\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Checks if `value` is a global object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {null|Object} Returns `value` if it's a global object, else `null`.\n */\nfunction checkGlobal(value) {\n return (value && value.Object === Object) ? value : null;\n}\n\n/**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Reflect = root.Reflect,\n enumerate = Reflect ? Reflect.enumerate : undefined,\n propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * The base implementation of `_.keysIn` which doesn't skip the constructor\n * property of prototypes or treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n object = object == null ? object : Object(object);\n\n var result = [];\n for (var key in object) {\n result.push(key);\n }\n return result;\n}\n\n// Fallback for IE < 9 with es6-shim.\nif (enumerate && !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf')) {\n baseKeysIn = function(object) {\n return iteratorToArray(enumerate(object));\n };\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a\n * [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) that affects\n * Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\n/**\n * Creates an array of index keys for `object` values of arrays,\n * `arguments` objects, and strings, otherwise `null` is returned.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array|null} Returns index keys, else `null`.\n */\nfunction indexKeys(object) {\n var length = object ? object.length : undefined;\n if (isLength(length) &&\n (isArray(object) || isString(object) || isArguments(object))) {\n return baseTimes(length, String);\n }\n return null;\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 incorrectly makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @type {Function}\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value)) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8 which returns 'object' for typed array and weak map constructors,\n // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length,\n * else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n var index = -1,\n isProto = isPrototype(object),\n props = baseKeysIn(object),\n propsLength = props.length,\n indexes = indexKeys(object),\n skipIndexes = !!indexes,\n result = indexes || [],\n length = result.length;\n\n while (++index < propsLength) {\n var key = props[index];\n if (!(skipIndexes && (key == 'length' || isIndex(key, length))) &&\n !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = keysIn;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash.keysin/index.js\n ** module id = 35\n ** module chunks = 0\n **/","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tmodule.children = [];\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n}\r\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** (webpack)/buildin/module.js\n ** module id = 36\n ** module chunks = 0\n **/","var h = require(\"./virtual-hyperscript/index.js\")\n\nmodule.exports = h\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/h.js\n ** module id = 37\n ** module chunks = 0\n **/","'use strict';\n\nvar isArray = require('x-is-array');\n\nvar VNode = require('../vnode/vnode.js');\nvar VText = require('../vnode/vtext.js');\nvar isVNode = require('../vnode/is-vnode');\nvar isVText = require('../vnode/is-vtext');\nvar isWidget = require('../vnode/is-widget');\nvar isHook = require('../vnode/is-vhook');\nvar isVThunk = require('../vnode/is-thunk');\n\nvar parseTag = require('./parse-tag.js');\nvar softSetHook = require('./hooks/soft-set-hook.js');\nvar evHook = require('./hooks/ev-hook.js');\n\nmodule.exports = h;\n\nfunction h(tagName, properties, children) {\n var childNodes = [];\n var tag, props, key, namespace;\n\n if (!children && isChildren(properties)) {\n children = properties;\n props = {};\n }\n\n props = props || properties || {};\n tag = parseTag(tagName, props);\n\n // support keys\n if (props.hasOwnProperty('key')) {\n key = props.key;\n props.key = undefined;\n }\n\n // support namespace\n if (props.hasOwnProperty('namespace')) {\n namespace = props.namespace;\n props.namespace = undefined;\n }\n\n // fix cursor bug\n if (tag === 'INPUT' &&\n !namespace &&\n props.hasOwnProperty('value') &&\n props.value !== undefined &&\n !isHook(props.value)\n ) {\n props.value = softSetHook(props.value);\n }\n\n transformProperties(props);\n\n if (children !== undefined && children !== null) {\n addChild(children, childNodes, tag, props);\n }\n\n\n return new VNode(tag, props, childNodes, key, namespace);\n}\n\nfunction addChild(c, childNodes, tag, props) {\n if (typeof c === 'string') {\n childNodes.push(new VText(c));\n } else if (typeof c === 'number') {\n childNodes.push(new VText(String(c)));\n } else if (isChild(c)) {\n childNodes.push(c);\n } else if (isArray(c)) {\n for (var i = 0; i < c.length; i++) {\n addChild(c[i], childNodes, tag, props);\n }\n } else if (c === null || c === undefined) {\n return;\n } else {\n throw UnexpectedVirtualElement({\n foreignObject: c,\n parentVnode: {\n tagName: tag,\n properties: props\n }\n });\n }\n}\n\nfunction transformProperties(props) {\n for (var propName in props) {\n if (props.hasOwnProperty(propName)) {\n var value = props[propName];\n\n if (isHook(value)) {\n continue;\n }\n\n if (propName.substr(0, 3) === 'ev-') {\n // add ev-foo support\n props[propName] = evHook(value);\n }\n }\n }\n}\n\nfunction isChild(x) {\n return isVNode(x) || isVText(x) || isWidget(x) || isVThunk(x);\n}\n\nfunction isChildren(x) {\n return typeof x === 'string' || isArray(x) || isChild(x);\n}\n\nfunction UnexpectedVirtualElement(data) {\n var err = new Error();\n\n err.type = 'virtual-hyperscript.unexpected.virtual-element';\n err.message = 'Unexpected virtual child passed to h().\\n' +\n 'Expected a VNode / Vthunk / VWidget / string but:\\n' +\n 'got:\\n' +\n errorString(data.foreignObject) +\n '.\\n' +\n 'The parent vnode is:\\n' +\n errorString(data.parentVnode)\n '\\n' +\n 'Suggested fix: change your `h(..., [ ... ])` callsite.';\n err.foreignObject = data.foreignObject;\n err.parentVnode = data.parentVnode;\n\n return err;\n}\n\nfunction errorString(obj) {\n try {\n return JSON.stringify(obj, null, ' ');\n } catch (e) {\n return String(obj);\n }\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/virtual-hyperscript/index.js\n ** module id = 38\n ** module chunks = 0\n **/","var nativeIsArray = Array.isArray\nvar toString = Object.prototype.toString\n\nmodule.exports = nativeIsArray || isArray\n\nfunction isArray(obj) {\n return toString.call(obj) === \"[object Array]\"\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/x-is-array/index.js\n ** module id = 39\n ** module chunks = 0\n **/","var version = require(\"./version\")\nvar isVNode = require(\"./is-vnode\")\nvar isWidget = require(\"./is-widget\")\nvar isThunk = require(\"./is-thunk\")\nvar isVHook = require(\"./is-vhook\")\n\nmodule.exports = VirtualNode\n\nvar noProperties = {}\nvar noChildren = []\n\nfunction VirtualNode(tagName, properties, children, key, namespace) {\n this.tagName = tagName\n this.properties = properties || noProperties\n this.children = children || noChildren\n this.key = key != null ? String(key) : undefined\n this.namespace = (typeof namespace === \"string\") ? namespace : null\n\n var count = (children && children.length) || 0\n var descendants = 0\n var hasWidgets = false\n var hasThunks = false\n var descendantHooks = false\n var hooks\n\n for (var propName in properties) {\n if (properties.hasOwnProperty(propName)) {\n var property = properties[propName]\n if (isVHook(property) && property.unhook) {\n if (!hooks) {\n hooks = {}\n }\n\n hooks[propName] = property\n }\n }\n }\n\n for (var i = 0; i < count; i++) {\n var child = children[i]\n if (isVNode(child)) {\n descendants += child.count || 0\n\n if (!hasWidgets && child.hasWidgets) {\n hasWidgets = true\n }\n\n if (!hasThunks && child.hasThunks) {\n hasThunks = true\n }\n\n if (!descendantHooks && (child.hooks || child.descendantHooks)) {\n descendantHooks = true\n }\n } else if (!hasWidgets && isWidget(child)) {\n if (typeof child.destroy === \"function\") {\n hasWidgets = true\n }\n } else if (!hasThunks && isThunk(child)) {\n hasThunks = true;\n }\n }\n\n this.count = count + descendants\n this.hasWidgets = hasWidgets\n this.hasThunks = hasThunks\n this.hooks = hooks\n this.descendantHooks = descendantHooks\n}\n\nVirtualNode.prototype.version = version\nVirtualNode.prototype.type = \"VirtualNode\"\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vnode/vnode.js\n ** module id = 40\n ** module chunks = 0\n **/","var version = require(\"./version\")\n\nmodule.exports = VirtualText\n\nfunction VirtualText(text) {\n this.text = String(text)\n}\n\nVirtualText.prototype.version = version\nVirtualText.prototype.type = \"VirtualText\"\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vnode/vtext.js\n ** module id = 41\n ** module chunks = 0\n **/","'use strict';\n\nvar split = require('browser-split');\n\nvar classIdSplit = /([\\.#]?[a-zA-Z0-9\\u007F-\\uFFFF_:-]+)/;\nvar notClassId = /^\\.|#/;\n\nmodule.exports = parseTag;\n\nfunction parseTag(tag, props) {\n if (!tag) {\n return 'DIV';\n }\n\n var noId = !(props.hasOwnProperty('id'));\n\n var tagParts = split(tag, classIdSplit);\n var tagName = null;\n\n if (notClassId.test(tagParts[1])) {\n tagName = 'DIV';\n }\n\n var classes, part, type, i;\n\n for (i = 0; i < tagParts.length; i++) {\n part = tagParts[i];\n\n if (!part) {\n continue;\n }\n\n type = part.charAt(0);\n\n if (!tagName) {\n tagName = part;\n } else if (type === '.') {\n classes = classes || [];\n classes.push(part.substring(1, part.length));\n } else if (type === '#' && noId) {\n props.id = part.substring(1, part.length);\n }\n }\n\n if (classes) {\n if (props.className) {\n classes.push(props.className);\n }\n\n props.className = classes.join(' ');\n }\n\n return props.namespace ? tagName : tagName.toUpperCase();\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/virtual-hyperscript/parse-tag.js\n ** module id = 42\n ** module chunks = 0\n **/","/*!\n * Cross-Browser Split 1.1.1\n * Copyright 2007-2012 Steven Levithan \n * Available under the MIT License\n * ECMAScript compliant, uniform cross-browser split method\n */\n\n/**\n * Splits a string into an array of strings using a regex or string separator. Matches of the\n * separator are not included in the result array. However, if `separator` is a regex that contains\n * capturing groups, backreferences are spliced into the result each time `separator` is matched.\n * Fixes browser bugs compared to the native `String.prototype.split` and can be used reliably\n * cross-browser.\n * @param {String} str String to split.\n * @param {RegExp|String} separator Regex or string to use for separating the string.\n * @param {Number} [limit] Maximum number of items to include in the result array.\n * @returns {Array} Array of substrings.\n * @example\n *\n * // Basic use\n * split('a b c d', ' ');\n * // -> ['a', 'b', 'c', 'd']\n *\n * // With limit\n * split('a b c d', ' ', 2);\n * // -> ['a', 'b']\n *\n * // Backreferences in result array\n * split('..word1 word2..', /([a-z]+)(\\d+)/i);\n * // -> ['..', 'word', '1', ' ', 'word', '2', '..']\n */\nmodule.exports = (function split(undef) {\n\n var nativeSplit = String.prototype.split,\n compliantExecNpcg = /()??/.exec(\"\")[1] === undef,\n // NPCG: nonparticipating capturing group\n self;\n\n self = function(str, separator, limit) {\n // If `separator` is not a regex, use `nativeSplit`\n if (Object.prototype.toString.call(separator) !== \"[object RegExp]\") {\n return nativeSplit.call(str, separator, limit);\n }\n var output = [],\n flags = (separator.ignoreCase ? \"i\" : \"\") + (separator.multiline ? \"m\" : \"\") + (separator.extended ? \"x\" : \"\") + // Proposed for ES6\n (separator.sticky ? \"y\" : \"\"),\n // Firefox 3+\n lastLastIndex = 0,\n // Make `global` and avoid `lastIndex` issues by working with a copy\n separator = new RegExp(separator.source, flags + \"g\"),\n separator2, match, lastIndex, lastLength;\n str += \"\"; // Type-convert\n if (!compliantExecNpcg) {\n // Doesn't need flags gy, but they don't hurt\n separator2 = new RegExp(\"^\" + separator.source + \"$(?!\\\\s)\", flags);\n }\n /* Values for `limit`, per the spec:\n * If undefined: 4294967295 // Math.pow(2, 32) - 1\n * If 0, Infinity, or NaN: 0\n * If positive number: limit = Math.floor(limit); if (limit > 4294967295) limit -= 4294967296;\n * If negative number: 4294967296 - Math.floor(Math.abs(limit))\n * If other: Type-convert, then use the above rules\n */\n limit = limit === undef ? -1 >>> 0 : // Math.pow(2, 32) - 1\n limit >>> 0; // ToUint32(limit)\n while (match = separator.exec(str)) {\n // `separator.lastIndex` is not reliable cross-browser\n lastIndex = match.index + match[0].length;\n if (lastIndex > lastLastIndex) {\n output.push(str.slice(lastLastIndex, match.index));\n // Fix browsers whose `exec` methods don't consistently return `undefined` for\n // nonparticipating capturing groups\n if (!compliantExecNpcg && match.length > 1) {\n match[0].replace(separator2, function() {\n for (var i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undef) {\n match[i] = undef;\n }\n }\n });\n }\n if (match.length > 1 && match.index < str.length) {\n Array.prototype.push.apply(output, match.slice(1));\n }\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= limit) {\n break;\n }\n }\n if (separator.lastIndex === match.index) {\n separator.lastIndex++; // Avoid an infinite loop\n }\n }\n if (lastLastIndex === str.length) {\n if (lastLength || !separator.test(\"\")) {\n output.push(\"\");\n }\n } else {\n output.push(str.slice(lastLastIndex));\n }\n return output.length > limit ? output.slice(0, limit) : output;\n };\n\n return self;\n})();\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/browser-split/index.js\n ** module id = 43\n ** module chunks = 0\n **/","'use strict';\n\nmodule.exports = SoftSetHook;\n\nfunction SoftSetHook(value) {\n if (!(this instanceof SoftSetHook)) {\n return new SoftSetHook(value);\n }\n\n this.value = value;\n}\n\nSoftSetHook.prototype.hook = function (node, propertyName) {\n if (node[propertyName] !== this.value) {\n node[propertyName] = this.value;\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/virtual-hyperscript/hooks/soft-set-hook.js\n ** module id = 44\n ** module chunks = 0\n **/","'use strict';\n\nvar EvStore = require('ev-store');\n\nmodule.exports = EvHook;\n\nfunction EvHook(value) {\n if (!(this instanceof EvHook)) {\n return new EvHook(value);\n }\n\n this.value = value;\n}\n\nEvHook.prototype.hook = function (node, propertyName) {\n var es = EvStore(node);\n var propName = propertyName.substr(3);\n\n es[propName] = this.value;\n};\n\nEvHook.prototype.unhook = function(node, propertyName) {\n var es = EvStore(node);\n var propName = propertyName.substr(3);\n\n es[propName] = undefined;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/virtual-hyperscript/hooks/ev-hook.js\n ** module id = 45\n ** module chunks = 0\n **/","'use strict';\n\nvar OneVersionConstraint = require('individual/one-version');\n\nvar MY_VERSION = '7';\nOneVersionConstraint('ev-store', MY_VERSION);\n\nvar hashKey = '__EV_STORE_KEY@' + MY_VERSION;\n\nmodule.exports = EvStore;\n\nfunction EvStore(elem) {\n var hash = elem[hashKey];\n\n if (!hash) {\n hash = elem[hashKey] = {};\n }\n\n return hash;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/ev-store/index.js\n ** module id = 46\n ** module chunks = 0\n **/","'use strict';\n\nvar Individual = require('./index.js');\n\nmodule.exports = OneVersion;\n\nfunction OneVersion(moduleName, version, defaultValue) {\n var key = '__INDIVIDUAL_ONE_VERSION_' + moduleName;\n var enforceKey = key + '_ENFORCE_SINGLETON';\n\n var versionValue = Individual(enforceKey, version);\n\n if (versionValue !== version) {\n throw new Error('Can only have one copy of ' +\n moduleName + '.\\n' +\n 'You already have version ' + versionValue +\n ' installed.\\n' +\n 'This means you cannot install version ' + version);\n }\n\n return Individual(key, defaultValue);\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/individual/one-version.js\n ** module id = 47\n ** module chunks = 0\n **/","'use strict';\n\n/*global window, global*/\n\nvar root = typeof window !== 'undefined' ?\n window : typeof global !== 'undefined' ?\n global : {};\n\nmodule.exports = Individual;\n\nfunction Individual(key, value) {\n if (key in root) {\n return root[key];\n }\n\n root[key] = value;\n\n return value;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/individual/index.js\n ** module id = 48\n ** module chunks = 0\n **/","var diff = require(\"./vtree/diff.js\")\n\nmodule.exports = diff\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/diff.js\n ** module id = 49\n ** module chunks = 0\n **/","var isArray = require(\"x-is-array\")\n\nvar VPatch = require(\"../vnode/vpatch\")\nvar isVNode = require(\"../vnode/is-vnode\")\nvar isVText = require(\"../vnode/is-vtext\")\nvar isWidget = require(\"../vnode/is-widget\")\nvar isThunk = require(\"../vnode/is-thunk\")\nvar handleThunk = require(\"../vnode/handle-thunk\")\n\nvar diffProps = require(\"./diff-props\")\n\nmodule.exports = diff\n\nfunction diff(a, b) {\n var patch = { a: a }\n walk(a, b, patch, 0)\n return patch\n}\n\nfunction walk(a, b, patch, index) {\n if (a === b) {\n return\n }\n\n var apply = patch[index]\n var applyClear = false\n\n if (isThunk(a) || isThunk(b)) {\n thunks(a, b, patch, index)\n } else if (b == null) {\n\n // If a is a widget we will add a remove patch for it\n // Otherwise any child widgets/hooks must be destroyed.\n // This prevents adding two remove patches for a widget.\n if (!isWidget(a)) {\n clearState(a, patch, index)\n apply = patch[index]\n }\n\n apply = appendPatch(apply, new VPatch(VPatch.REMOVE, a, b))\n } else if (isVNode(b)) {\n if (isVNode(a)) {\n if (a.tagName === b.tagName &&\n a.namespace === b.namespace &&\n a.key === b.key) {\n var propsPatch = diffProps(a.properties, b.properties)\n if (propsPatch) {\n apply = appendPatch(apply,\n new VPatch(VPatch.PROPS, a, propsPatch))\n }\n apply = diffChildren(a, b, patch, apply, index)\n } else {\n apply = appendPatch(apply, new VPatch(VPatch.VNODE, a, b))\n applyClear = true\n }\n } else {\n apply = appendPatch(apply, new VPatch(VPatch.VNODE, a, b))\n applyClear = true\n }\n } else if (isVText(b)) {\n if (!isVText(a)) {\n apply = appendPatch(apply, new VPatch(VPatch.VTEXT, a, b))\n applyClear = true\n } else if (a.text !== b.text) {\n apply = appendPatch(apply, new VPatch(VPatch.VTEXT, a, b))\n }\n } else if (isWidget(b)) {\n if (!isWidget(a)) {\n applyClear = true\n }\n\n apply = appendPatch(apply, new VPatch(VPatch.WIDGET, a, b))\n }\n\n if (apply) {\n patch[index] = apply\n }\n\n if (applyClear) {\n clearState(a, patch, index)\n }\n}\n\nfunction diffChildren(a, b, patch, apply, index) {\n var aChildren = a.children\n var orderedSet = reorder(aChildren, b.children)\n var bChildren = orderedSet.children\n\n var aLen = aChildren.length\n var bLen = bChildren.length\n var len = aLen > bLen ? aLen : bLen\n\n for (var i = 0; i < len; i++) {\n var leftNode = aChildren[i]\n var rightNode = bChildren[i]\n index += 1\n\n if (!leftNode) {\n if (rightNode) {\n // Excess nodes in b need to be added\n apply = appendPatch(apply,\n new VPatch(VPatch.INSERT, null, rightNode))\n }\n } else {\n walk(leftNode, rightNode, patch, index)\n }\n\n if (isVNode(leftNode) && leftNode.count) {\n index += leftNode.count\n }\n }\n\n if (orderedSet.moves) {\n // Reorder nodes last\n apply = appendPatch(apply, new VPatch(\n VPatch.ORDER,\n a,\n orderedSet.moves\n ))\n }\n\n return apply\n}\n\nfunction clearState(vNode, patch, index) {\n // TODO: Make this a single walk, not two\n unhook(vNode, patch, index)\n destroyWidgets(vNode, patch, index)\n}\n\n// Patch records for all destroyed widgets must be added because we need\n// a DOM node reference for the destroy function\nfunction destroyWidgets(vNode, patch, index) {\n if (isWidget(vNode)) {\n if (typeof vNode.destroy === \"function\") {\n patch[index] = appendPatch(\n patch[index],\n new VPatch(VPatch.REMOVE, vNode, null)\n )\n }\n } else if (isVNode(vNode) && (vNode.hasWidgets || vNode.hasThunks)) {\n var children = vNode.children\n var len = children.length\n for (var i = 0; i < len; i++) {\n var child = children[i]\n index += 1\n\n destroyWidgets(child, patch, index)\n\n if (isVNode(child) && child.count) {\n index += child.count\n }\n }\n } else if (isThunk(vNode)) {\n thunks(vNode, null, patch, index)\n }\n}\n\n// Create a sub-patch for thunks\nfunction thunks(a, b, patch, index) {\n var nodes = handleThunk(a, b)\n var thunkPatch = diff(nodes.a, nodes.b)\n if (hasPatches(thunkPatch)) {\n patch[index] = new VPatch(VPatch.THUNK, null, thunkPatch)\n }\n}\n\nfunction hasPatches(patch) {\n for (var index in patch) {\n if (index !== \"a\") {\n return true\n }\n }\n\n return false\n}\n\n// Execute hooks when two nodes are identical\nfunction unhook(vNode, patch, index) {\n if (isVNode(vNode)) {\n if (vNode.hooks) {\n patch[index] = appendPatch(\n patch[index],\n new VPatch(\n VPatch.PROPS,\n vNode,\n undefinedKeys(vNode.hooks)\n )\n )\n }\n\n if (vNode.descendantHooks || vNode.hasThunks) {\n var children = vNode.children\n var len = children.length\n for (var i = 0; i < len; i++) {\n var child = children[i]\n index += 1\n\n unhook(child, patch, index)\n\n if (isVNode(child) && child.count) {\n index += child.count\n }\n }\n }\n } else if (isThunk(vNode)) {\n thunks(vNode, null, patch, index)\n }\n}\n\nfunction undefinedKeys(obj) {\n var result = {}\n\n for (var key in obj) {\n result[key] = undefined\n }\n\n return result\n}\n\n// List diff, naive left to right reordering\nfunction reorder(aChildren, bChildren) {\n // O(M) time, O(M) memory\n var bChildIndex = keyIndex(bChildren)\n var bKeys = bChildIndex.keys\n var bFree = bChildIndex.free\n\n if (bFree.length === bChildren.length) {\n return {\n children: bChildren,\n moves: null\n }\n }\n\n // O(N) time, O(N) memory\n var aChildIndex = keyIndex(aChildren)\n var aKeys = aChildIndex.keys\n var aFree = aChildIndex.free\n\n if (aFree.length === aChildren.length) {\n return {\n children: bChildren,\n moves: null\n }\n }\n\n // O(MAX(N, M)) memory\n var newChildren = []\n\n var freeIndex = 0\n var freeCount = bFree.length\n var deletedItems = 0\n\n // Iterate through a and match a node in b\n // O(N) time,\n for (var i = 0 ; i < aChildren.length; i++) {\n var aItem = aChildren[i]\n var itemIndex\n\n if (aItem.key) {\n if (bKeys.hasOwnProperty(aItem.key)) {\n // Match up the old keys\n itemIndex = bKeys[aItem.key]\n newChildren.push(bChildren[itemIndex])\n\n } else {\n // Remove old keyed items\n itemIndex = i - deletedItems++\n newChildren.push(null)\n }\n } else {\n // Match the item in a with the next free item in b\n if (freeIndex < freeCount) {\n itemIndex = bFree[freeIndex++]\n newChildren.push(bChildren[itemIndex])\n } else {\n // There are no free items in b to match with\n // the free items in a, so the extra free nodes\n // are deleted.\n itemIndex = i - deletedItems++\n newChildren.push(null)\n }\n }\n }\n\n var lastFreeIndex = freeIndex >= bFree.length ?\n bChildren.length :\n bFree[freeIndex]\n\n // Iterate through b and append any new keys\n // O(M) time\n for (var j = 0; j < bChildren.length; j++) {\n var newItem = bChildren[j]\n\n if (newItem.key) {\n if (!aKeys.hasOwnProperty(newItem.key)) {\n // Add any new keyed items\n // We are adding new items to the end and then sorting them\n // in place. In future we should insert new items in place.\n newChildren.push(newItem)\n }\n } else if (j >= lastFreeIndex) {\n // Add any leftover non-keyed items\n newChildren.push(newItem)\n }\n }\n\n var simulate = newChildren.slice()\n var simulateIndex = 0\n var removes = []\n var inserts = []\n var simulateItem\n\n for (var k = 0; k < bChildren.length;) {\n var wantedItem = bChildren[k]\n simulateItem = simulate[simulateIndex]\n\n // remove items\n while (simulateItem === null && simulate.length) {\n removes.push(remove(simulate, simulateIndex, null))\n simulateItem = simulate[simulateIndex]\n }\n\n if (!simulateItem || simulateItem.key !== wantedItem.key) {\n // if we need a key in this position...\n if (wantedItem.key) {\n if (simulateItem && simulateItem.key) {\n // if an insert doesn't put this key in place, it needs to move\n if (bKeys[simulateItem.key] !== k + 1) {\n removes.push(remove(simulate, simulateIndex, simulateItem.key))\n simulateItem = simulate[simulateIndex]\n // if the remove didn't put the wanted item in place, we need to insert it\n if (!simulateItem || simulateItem.key !== wantedItem.key) {\n inserts.push({key: wantedItem.key, to: k})\n }\n // items are matching, so skip ahead\n else {\n simulateIndex++\n }\n }\n else {\n inserts.push({key: wantedItem.key, to: k})\n }\n }\n else {\n inserts.push({key: wantedItem.key, to: k})\n }\n k++\n }\n // a key in simulate has no matching wanted key, remove it\n else if (simulateItem && simulateItem.key) {\n removes.push(remove(simulate, simulateIndex, simulateItem.key))\n }\n }\n else {\n simulateIndex++\n k++\n }\n }\n\n // remove all the remaining nodes from simulate\n while(simulateIndex < simulate.length) {\n simulateItem = simulate[simulateIndex]\n removes.push(remove(simulate, simulateIndex, simulateItem && simulateItem.key))\n }\n\n // If the only moves we have are deletes then we can just\n // let the delete patch remove these items.\n if (removes.length === deletedItems && !inserts.length) {\n return {\n children: newChildren,\n moves: null\n }\n }\n\n return {\n children: newChildren,\n moves: {\n removes: removes,\n inserts: inserts\n }\n }\n}\n\nfunction remove(arr, index, key) {\n arr.splice(index, 1)\n\n return {\n from: index,\n key: key\n }\n}\n\nfunction keyIndex(children) {\n var keys = {}\n var free = []\n var length = children.length\n\n for (var i = 0; i < length; i++) {\n var child = children[i]\n\n if (child.key) {\n keys[child.key] = i\n } else {\n free.push(i)\n }\n }\n\n return {\n keys: keys, // A hash of key name to index\n free: free // An array of unkeyed item indices\n }\n}\n\nfunction appendPatch(apply, patch) {\n if (apply) {\n if (isArray(apply)) {\n apply.push(patch)\n } else {\n apply = [apply, patch]\n }\n\n return apply\n } else {\n return patch\n }\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vtree/diff.js\n ** module id = 50\n ** module chunks = 0\n **/","var version = require(\"./version\")\n\nVirtualPatch.NONE = 0\nVirtualPatch.VTEXT = 1\nVirtualPatch.VNODE = 2\nVirtualPatch.WIDGET = 3\nVirtualPatch.PROPS = 4\nVirtualPatch.ORDER = 5\nVirtualPatch.INSERT = 6\nVirtualPatch.REMOVE = 7\nVirtualPatch.THUNK = 8\n\nmodule.exports = VirtualPatch\n\nfunction VirtualPatch(type, vNode, patch) {\n this.type = Number(type)\n this.vNode = vNode\n this.patch = patch\n}\n\nVirtualPatch.prototype.version = version\nVirtualPatch.prototype.type = \"VirtualPatch\"\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vnode/vpatch.js\n ** module id = 51\n ** module chunks = 0\n **/","var isObject = require(\"is-object\")\nvar isHook = require(\"../vnode/is-vhook\")\n\nmodule.exports = diffProps\n\nfunction diffProps(a, b) {\n var diff\n\n for (var aKey in a) {\n if (!(aKey in b)) {\n diff = diff || {}\n diff[aKey] = undefined\n }\n\n var aValue = a[aKey]\n var bValue = b[aKey]\n\n if (aValue === bValue) {\n continue\n } else if (isObject(aValue) && isObject(bValue)) {\n if (getPrototype(bValue) !== getPrototype(aValue)) {\n diff = diff || {}\n diff[aKey] = bValue\n } else if (isHook(bValue)) {\n diff = diff || {}\n diff[aKey] = bValue\n } else {\n var objectDiff = diffProps(aValue, bValue)\n if (objectDiff) {\n diff = diff || {}\n diff[aKey] = objectDiff\n }\n }\n } else {\n diff = diff || {}\n diff[aKey] = bValue\n }\n }\n\n for (var bKey in b) {\n if (!(bKey in a)) {\n diff = diff || {}\n diff[bKey] = b[bKey]\n }\n }\n\n return diff\n}\n\nfunction getPrototype(value) {\n if (Object.getPrototypeOf) {\n return Object.getPrototypeOf(value)\n } else if (value.__proto__) {\n return value.__proto__\n } else if (value.constructor) {\n return value.constructor.prototype\n }\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vtree/diff-props.js\n ** module id = 52\n ** module chunks = 0\n **/","var patch = require(\"./vdom/patch.js\")\n\nmodule.exports = patch\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/patch.js\n ** module id = 53\n ** module chunks = 0\n **/","var document = require(\"global/document\")\nvar isArray = require(\"x-is-array\")\n\nvar render = require(\"./create-element\")\nvar domIndex = require(\"./dom-index\")\nvar patchOp = require(\"./patch-op\")\nmodule.exports = patch\n\nfunction patch(rootNode, patches, renderOptions) {\n renderOptions = renderOptions || {}\n renderOptions.patch = renderOptions.patch && renderOptions.patch !== patch\n ? renderOptions.patch\n : patchRecursive\n renderOptions.render = renderOptions.render || render\n\n return renderOptions.patch(rootNode, patches, renderOptions)\n}\n\nfunction patchRecursive(rootNode, patches, renderOptions) {\n var indices = patchIndices(patches)\n\n if (indices.length === 0) {\n return rootNode\n }\n\n var index = domIndex(rootNode, patches.a, indices)\n var ownerDocument = rootNode.ownerDocument\n\n if (!renderOptions.document && ownerDocument !== document) {\n renderOptions.document = ownerDocument\n }\n\n for (var i = 0; i < indices.length; i++) {\n var nodeIndex = indices[i]\n rootNode = applyPatch(rootNode,\n index[nodeIndex],\n patches[nodeIndex],\n renderOptions)\n }\n\n return rootNode\n}\n\nfunction applyPatch(rootNode, domNode, patchList, renderOptions) {\n if (!domNode) {\n return rootNode\n }\n\n var newNode\n\n if (isArray(patchList)) {\n for (var i = 0; i < patchList.length; i++) {\n newNode = patchOp(patchList[i], domNode, renderOptions)\n\n if (domNode === rootNode) {\n rootNode = newNode\n }\n }\n } else {\n newNode = patchOp(patchList, domNode, renderOptions)\n\n if (domNode === rootNode) {\n rootNode = newNode\n }\n }\n\n return rootNode\n}\n\nfunction patchIndices(patches) {\n var indices = []\n\n for (var key in patches) {\n if (key !== \"a\") {\n indices.push(Number(key))\n }\n }\n\n return indices\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vdom/patch.js\n ** module id = 54\n ** module chunks = 0\n **/","// Maps a virtual DOM tree onto a real DOM tree in an efficient manner.\n// We don't want to read all of the DOM nodes in the tree so we use\n// the in-order tree indexing to eliminate recursion down certain branches.\n// We only recurse into a DOM node if we know that it contains a child of\n// interest.\n\nvar noChild = {}\n\nmodule.exports = domIndex\n\nfunction domIndex(rootNode, tree, indices, nodes) {\n if (!indices || indices.length === 0) {\n return {}\n } else {\n indices.sort(ascending)\n return recurse(rootNode, tree, indices, nodes, 0)\n }\n}\n\nfunction recurse(rootNode, tree, indices, nodes, rootIndex) {\n nodes = nodes || {}\n\n\n if (rootNode) {\n if (indexInRange(indices, rootIndex, rootIndex)) {\n nodes[rootIndex] = rootNode\n }\n\n var vChildren = tree.children\n\n if (vChildren) {\n\n var childNodes = rootNode.childNodes\n\n for (var i = 0; i < tree.children.length; i++) {\n rootIndex += 1\n\n var vChild = vChildren[i] || noChild\n var nextIndex = rootIndex + (vChild.count || 0)\n\n // skip recursion down the tree if there are no nodes down here\n if (indexInRange(indices, rootIndex, nextIndex)) {\n recurse(childNodes[i], vChild, indices, nodes, rootIndex)\n }\n\n rootIndex = nextIndex\n }\n }\n }\n\n return nodes\n}\n\n// Binary search for an index in the interval [left, right]\nfunction indexInRange(indices, left, right) {\n if (indices.length === 0) {\n return false\n }\n\n var minIndex = 0\n var maxIndex = indices.length - 1\n var currentIndex\n var currentItem\n\n while (minIndex <= maxIndex) {\n currentIndex = ((maxIndex + minIndex) / 2) >> 0\n currentItem = indices[currentIndex]\n\n if (minIndex === maxIndex) {\n return currentItem >= left && currentItem <= right\n } else if (currentItem < left) {\n minIndex = currentIndex + 1\n } else if (currentItem > right) {\n maxIndex = currentIndex - 1\n } else {\n return true\n }\n }\n\n return false;\n}\n\nfunction ascending(a, b) {\n return a > b ? 1 : -1\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vdom/dom-index.js\n ** module id = 55\n ** module chunks = 0\n **/","var applyProperties = require(\"./apply-properties\")\n\nvar isWidget = require(\"../vnode/is-widget.js\")\nvar VPatch = require(\"../vnode/vpatch.js\")\n\nvar updateWidget = require(\"./update-widget\")\n\nmodule.exports = applyPatch\n\nfunction applyPatch(vpatch, domNode, renderOptions) {\n var type = vpatch.type\n var vNode = vpatch.vNode\n var patch = vpatch.patch\n\n switch (type) {\n case VPatch.REMOVE:\n return removeNode(domNode, vNode)\n case VPatch.INSERT:\n return insertNode(domNode, patch, renderOptions)\n case VPatch.VTEXT:\n return stringPatch(domNode, vNode, patch, renderOptions)\n case VPatch.WIDGET:\n return widgetPatch(domNode, vNode, patch, renderOptions)\n case VPatch.VNODE:\n return vNodePatch(domNode, vNode, patch, renderOptions)\n case VPatch.ORDER:\n reorderChildren(domNode, patch)\n return domNode\n case VPatch.PROPS:\n applyProperties(domNode, patch, vNode.properties)\n return domNode\n case VPatch.THUNK:\n return replaceRoot(domNode,\n renderOptions.patch(domNode, patch, renderOptions))\n default:\n return domNode\n }\n}\n\nfunction removeNode(domNode, vNode) {\n var parentNode = domNode.parentNode\n\n if (parentNode) {\n parentNode.removeChild(domNode)\n }\n\n destroyWidget(domNode, vNode);\n\n return null\n}\n\nfunction insertNode(parentNode, vNode, renderOptions) {\n var newNode = renderOptions.render(vNode, renderOptions)\n\n if (parentNode) {\n parentNode.appendChild(newNode)\n }\n\n return parentNode\n}\n\nfunction stringPatch(domNode, leftVNode, vText, renderOptions) {\n var newNode\n\n if (domNode.nodeType === 3) {\n domNode.replaceData(0, domNode.length, vText.text)\n newNode = domNode\n } else {\n var parentNode = domNode.parentNode\n newNode = renderOptions.render(vText, renderOptions)\n\n if (parentNode && newNode !== domNode) {\n parentNode.replaceChild(newNode, domNode)\n }\n }\n\n return newNode\n}\n\nfunction widgetPatch(domNode, leftVNode, widget, renderOptions) {\n var updating = updateWidget(leftVNode, widget)\n var newNode\n\n if (updating) {\n newNode = widget.update(leftVNode, domNode) || domNode\n } else {\n newNode = renderOptions.render(widget, renderOptions)\n }\n\n var parentNode = domNode.parentNode\n\n if (parentNode && newNode !== domNode) {\n parentNode.replaceChild(newNode, domNode)\n }\n\n if (!updating) {\n destroyWidget(domNode, leftVNode)\n }\n\n return newNode\n}\n\nfunction vNodePatch(domNode, leftVNode, vNode, renderOptions) {\n var parentNode = domNode.parentNode\n var newNode = renderOptions.render(vNode, renderOptions)\n\n if (parentNode && newNode !== domNode) {\n parentNode.replaceChild(newNode, domNode)\n }\n\n return newNode\n}\n\nfunction destroyWidget(domNode, w) {\n if (typeof w.destroy === \"function\" && isWidget(w)) {\n w.destroy(domNode)\n }\n}\n\nfunction reorderChildren(domNode, moves) {\n var childNodes = domNode.childNodes\n var keyMap = {}\n var node\n var remove\n var insert\n\n for (var i = 0; i < moves.removes.length; i++) {\n remove = moves.removes[i]\n node = childNodes[remove.from]\n if (remove.key) {\n keyMap[remove.key] = node\n }\n domNode.removeChild(node)\n }\n\n var length = childNodes.length\n for (var j = 0; j < moves.inserts.length; j++) {\n insert = moves.inserts[j]\n node = keyMap[insert.key]\n // this is the weirdest bug i've ever seen in webkit\n domNode.insertBefore(node, insert.to >= length++ ? null : childNodes[insert.to])\n }\n}\n\nfunction replaceRoot(oldRoot, newRoot) {\n if (oldRoot && newRoot && oldRoot !== newRoot && oldRoot.parentNode) {\n oldRoot.parentNode.replaceChild(newRoot, oldRoot)\n }\n\n return newRoot;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vdom/patch-op.js\n ** module id = 56\n ** module chunks = 0\n **/","var isWidget = require(\"../vnode/is-widget.js\")\n\nmodule.exports = updateWidget\n\nfunction updateWidget(a, b) {\n if (isWidget(a) && isWidget(b)) {\n if (\"name\" in a && \"name\" in b) {\n return a.id === b.id\n } else {\n return a.init === b.init\n }\n }\n\n return false\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/virtual-dom/vdom/update-widget.js\n ** module id = 57\n ** module chunks = 0\n **/","'use strict';\n\nexport function samplesToSeconds(samples, sampleRate) {\n return samples / sampleRate;\n}\n\nexport function secondsToSamples(seconds, sampleRate) {\n return Math.ceil(seconds * sampleRate);\n}\n\nexport function samplesToPixels(samples, resolution) {\n return ~~(samples / resolution);\n}\n\nexport function pixelsToSamples(pixels, resolution) {\n return ~~(pixels * resolution);\n}\n\nexport function pixelsToSeconds(pixels, resolution, sampleRate) {\n return pixels * resolution / sampleRate;\n}\n\nexport function secondsToPixels(seconds, resolution, sampleRate) {\n return Math.ceil(seconds * sampleRate / resolution);\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/utils/conversions.js\n **/","'use strict';\n\nimport BlobLoader from './BlobLoader';\nimport XHRLoader from './XHRLoader';\n\nexport default class {\n static createLoader(src, audioContext, ee) {\n if (src instanceof Blob) {\n return new BlobLoader(src, audioContext, ee);\n }\n else if (typeof(src) === \"string\") {\n \treturn new XHRLoader(src, audioContext, ee);\n }\n else {\n \tthrow new Error(\"Unsupported src type\");\n }\n }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/track/loader/LoaderFactory.js\n **/","'use strict';\n\nimport Loader from './Loader';\n\nexport default class extends Loader {\n\n /*\n * Loads an audio file via a FileReader\n */\n load() {\n return new Promise((resolve, reject) => {\n if (this.src.type.match(/audio.*/)) {\n let fr = new FileReader();\n\n fr.readAsArrayBuffer(this.src);\n\n fr.addEventListener('progress', (e) => {\n super.fileProgress(e);\n });\n\n fr.addEventListener('load', (e) => {\n let decoderPromise = super.fileLoad(e);\n\n decoderPromise.then((audioBuffer) => {\n resolve(audioBuffer);\n });\n });\n\n fr.addEventListener('error', function () {\n reject(Error(\"Error reading Blob\"));\n });\n }\n else {\n reject(Error(`Unsupported file type ${this.src.type}`));\n }\n });\n }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/track/loader/BlobLoader.js\n **/","'use strict';\n\nexport const STATE_UNINITIALIZED = 0;\nexport const STATE_LOADING = 1;\nexport const STATE_DECODING = 2;\nexport const STATE_FINISHED = 3;\n\n\nexport default class {\n constructor(src, audioContext, ee) {\n this.src = src;\n this.ac = audioContext;\n this.audioRequestState = STATE_UNINITIALIZED;\n this.ee = ee;\n }\n\n setStateChange(state) {\n this.audioRequestState = state;\n this.ee.emit('audiorequeststatechange', this.audioRequestState, this.src);\n }\n\n fileProgress(e) {\n let percentComplete = 0;\n\n if (this.audioRequestState === STATE_UNINITIALIZED) {\n this.setStateChange(STATE_LOADING);\n }\n\n if (e.lengthComputable) {\n percentComplete = e.loaded / e.total * 100;\n }\n\n this.ee.emit('loadprogress', percentComplete, this.src);\n }\n\n fileLoad(e) {\n let audioData = e.target.response || e.target.result;\n\n this.setStateChange(STATE_DECODING);\n\n return new Promise((resolve, reject) => {\n this.ac.decodeAudioData(\n audioData,\n (audioBuffer) => {\n this.audioBuffer = audioBuffer;\n this.setStateChange(STATE_FINISHED);\n\n resolve(audioBuffer);\n\n },\n (err) => { \n reject(Error(`Unable to decode Audio Data for src ${this.src}`));\n }\n );\n });\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/track/loader/Loader.js\n **/","'use strict';\n\nimport Loader from './Loader';\n\nexport default class extends Loader {\n\n /**\n * Loads an audio file via XHR.\n */\n load() {\n return new Promise((resolve, reject) => {\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', this.src, true);\n xhr.responseType = 'arraybuffer';\n xhr.send();\n\n xhr.addEventListener('progress', (e) => {\n super.fileProgress(e);\n });\n\n xhr.addEventListener('load', (e) => {\n let decoderPromise = super.fileLoad(e);\n\n decoderPromise.then((audioBuffer) => {\n resolve(audioBuffer);\n });\n });\n\n xhr.addEventListener('error', () => {\n reject(Error(`Track ${this.src} failed to load`));\n });\n });\n }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/track/loader/XHRLoader.js\n **/","import {secondsToPixels} from '../utils/conversions'\n\n/*\n* virtual-dom hook for scrolling the track container.\n*/\nexport default class {\n constructor(track, resolution, sampleRate) {\n this.track = track;\n this.resolution = resolution;\n this.sampleRate = sampleRate;\n }\n\n hook(trackArea, propertyName, previousValue) {\n trackArea.scrollLeft = secondsToPixels(this.track.scrollLeft, this.resolution, this.sampleRate);\n }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/render/ScrollHook.js\n **/","'use strict';\n\nimport {secondsToPixels} from './utils/conversions';\n\nimport h from 'virtual-dom/h';\n\nimport TimeScaleHook from './render/TimeScaleHook';\n\nexport default class {\n\n constructor(duration, offset, samplesPerPixel, sampleRate, marginLeft=0) {\n this.duration = duration;\n this.offset = offset;\n this.samplesPerPixel = samplesPerPixel;\n this.sampleRate = sampleRate;\n this.marginLeft = marginLeft;\n\n this.timeinfo = {\n 20000: {\n marker: 30000,\n bigStep: 10000,\n smallStep: 5000,\n secondStep: 5\n },\n 12000: {\n marker: 15000,\n bigStep: 5000,\n smallStep: 1000,\n secondStep: 1\n },\n 10000: {\n marker: 10000,\n bigStep: 5000,\n smallStep: 1000,\n secondStep: 1\n },\n 5000: {\n marker: 5000,\n bigStep: 1000,\n smallStep: 500,\n secondStep: 1/2\n },\n 2500: {\n marker: 2000,\n bigStep: 1000,\n smallStep: 500,\n secondStep: 1/2\n },\n 1500: {\n marker: 2000,\n bigStep: 1000,\n smallStep: 200,\n secondStep: 1/5\n },\n 700: {\n marker: 1000,\n bigStep: 500,\n smallStep: 100,\n secondStep: 1/10\n }\n };\n }\n\n getScaleInfo(resolution) {\n var keys, i, end;\n\n keys = Object.keys(this.timeinfo).map(function(item) {\n return parseInt(item, 10);\n });\n\n //make sure keys are numerically sorted.\n keys = keys.sort(function(a, b){return a - b});\n\n for (i = 0, end = keys.length; i < end; i++) {\n if (resolution <= keys[i]) {\n return this.timeinfo[keys[i]];\n } \n }\n }\n\n /*\n Return time in format mm:ss\n */\n formatTime(milliseconds) {\n var out, m, s, seconds;\n\n seconds = milliseconds/1000;\n\n s = seconds % 60;\n m = (seconds - s) / 60;\n\n if (s < 10) {\n s = \"0\"+s;\n }\n\n out = m + \":\" + s;\n\n return out;\n }\n\n render() {\n let widthX = secondsToPixels(this.duration, this.samplesPerPixel, this.sampleRate);\n let pixPerSec = this.sampleRate / this.samplesPerPixel;\n let pixOffset = secondsToPixels(this.offset, this.samplesPerPixel, this.sampleRate);\n let scaleInfo = this.getScaleInfo(this.samplesPerPixel);\n let canvasInfo = {};\n let timeMarkers = [];\n let i;\n let end = widthX + pixOffset;\n let pixIndex;\n let pix;\n let counter = 0;\n\n for (i = 0; i < end; i = i + pixPerSec * scaleInfo.secondStep) {\n\n pixIndex = ~~(i);\n pix = pixIndex - pixOffset;\n\n if (pixIndex >= pixOffset) {\n //put a timestamp every 30 seconds.\n if (scaleInfo.marker && (counter % scaleInfo.marker === 0)) {\n timeMarkers.push(h(\"div.time\", {attributes: {\n \"style\": `position: absolute; left: ${pix}px;`\n }}, [this.formatTime(counter)] ));\n\n canvasInfo[pix] = 10;\n }\n else if (scaleInfo.bigStep && (counter % scaleInfo.bigStep === 0)) {\n canvasInfo[pix] = 5;\n }\n else if (scaleInfo.smallStep && (counter % scaleInfo.smallStep === 0)) {\n canvasInfo[pix] = 2;\n }\n }\n\n counter += 1000 * scaleInfo.secondStep; \n }\n\n return h(\"div.playlist-time-scale\", {\n \"attributes\": {\n \"style\": `position: relative; left: 0; right: 0; margin-left: ${this.marginLeft}px;`\n }}, [\n\n timeMarkers,\n\n h(\"canvas\", {\n attributes: {\n \"width\": widthX,\n \"height\": 30,\n \"style\": \"position: absolute; left: 0; right: 0; top: 0; bottom: 0;\"\n },\n \"hook\": new TimeScaleHook(canvasInfo, this.offset, this.samplesPerPixel, this.duration)\n })\n ]);\n }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/TimeScale.js\n **/","/*\n* virtual-dom hook for rendering the time scale canvas.\n*/\nexport default class {\n\tconstructor(tickInfo, offset, samplesPerPixel, duration) {\n this.tickInfo = tickInfo;\n this.offset = offset;\n this.samplesPerPixel = samplesPerPixel;\n this.duration = duration;\n }\n\n hook(canvas, prop, prev) {\n \t//canvas is up to date\n if (prev !== undefined \n \t&& (prev.offset === this.offset)\n \t&& (prev.duration === this.duration)\n \t&& (prev.samplesPerPixel === this.samplesPerPixel)) {\n return;\n }\n\n \tlet width = canvas.width;\n \tlet height = canvas.height;\n \tlet cc = canvas.getContext('2d');\n\n \tcc.clearRect(0, 0, width, height);\n \t\n Object.keys(this.tickInfo).forEach((x) => {\n \tlet scaleHeight = this.tickInfo[x];\n \tlet scaleY = height - scaleHeight;\n \tcc.fillRect(x, scaleY, 1, scaleHeight);\n });\n }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/render/TimeScaleHook.js\n **/","'use strict';\n\nimport _assign from 'lodash.assign';\nimport _forOwn from 'lodash.forown';\n\nimport uuid from 'uuid';\nimport h from 'virtual-dom/h';\n\nimport {secondsToPixels, secondsToSamples} from './utils/conversions';\nimport extractPeaks from 'webaudio-peaks';\nimport stateClasses from './track/states';\n\nimport CanvasHook from './render/CanvasHook';\nimport FadeCanvasHook from './render/FadeCanvasHook';\nimport VolumeSliderHook from './render/VolumeSliderHook';\n\nimport {FADEIN, FADEOUT} from 'fade-maker';\n\nconst MAX_CANVAS_WIDTH = 1000;\n\nexport default class {\n\n constructor() {\n\n this.name = \"Untitled\";\n this.gain = 1;\n this.fades = {};\n this.peakData = {\n type: \"WebAudio\",\n mono: false\n };\n\n this.cueIn = 0;\n this.cueOut = 0;\n this.duration = 0;\n this.startTime = 0;\n this.endTime = 0;\n }\n\n setEventEmitter(ee) {\n this.ee = ee;\n }\n\n setName(name) {\n this.name = name;\n }\n\n setCues(cueIn, cueOut) {\n if (cueOut < cueIn) {\n throw new Error(\"cue out cannot be less than cue in\");\n }\n\n this.cueIn = cueIn;\n this.cueOut = cueOut;\n this.duration = this.cueOut - this.cueIn;\n this.endTime = this.startTime + this.duration;\n }\n\n /*\n * start, end in seconds relative to the entire playlist.\n */\n trim(start, end) {\n let trackStart = this.getStartTime();\n let trackEnd = this.getEndTime();\n let offset = this.cueIn - trackStart;\n\n if ((trackStart <= start && trackEnd >= start) ||\n (trackStart <= end && trackEnd >= end)) {\n\n let cueIn = (start < trackStart) ? trackStart : start;\n let cueOut = (end > trackEnd) ? trackEnd : end;\n\n this.setCues(cueIn + offset, cueOut + offset);\n if (start > trackStart) {\n this.setStartTime(start);\n }\n }\n }\n\n setStartTime(start) {\n this.startTime = start;\n this.endTime = start + this.duration;\n }\n\n setPlayout(playout) {\n this.playout = playout;\n }\n\n setEnabledStates(enabledStates={}) {\n let defaultStatesEnabled = {\n 'cursor': true,\n 'fadein': true,\n 'fadeout': true,\n 'select': true,\n 'shift': true\n };\n\n this.enabledStates = _assign(defaultStatesEnabled, enabledStates);\n }\n\n setFadeIn(duration, shape=\"logarithmic\") {\n if (duration > this.duration) {\n throw new Error(\"Invalid Fade In\");\n }\n\n let fade = {\n \"shape\": shape,\n \"start\": 0,\n \"end\": duration\n };\n\n if (this.fadeIn) {\n this.removeFade(this.fadeIn);\n this.fadeIn = undefined;\n }\n\n this.fadeIn = this.saveFade(FADEIN, fade.shape, fade.start, fade.end);\n }\n\n setFadeOut(duration, shape=\"logarithmic\") {\n if (duration > this.duration) {\n throw new Error(\"Invalid Fade Out\");\n }\n\n let fade = {\n \"shape\": shape,\n \"start\": this.duration - duration,\n \"end\": this.duration\n };\n\n if (this.fadeOut) {\n this.removeFade(this.fadeOut);\n this.fadeOut = undefined;\n }\n\n this.fadeOut = this.saveFade(FADEOUT, fade.shape, fade.start, fade.end);\n }\n\n saveFade(type, shape, start, end) {\n let id = uuid.v4();\n \n this.fades[id] = {\n type: type,\n shape: shape,\n start: start,\n end: end\n };\n\n return id;\n }\n\n removeFade(id) {\n delete this.fades[id];\n }\n\n setBuffer(buffer) {\n this.buffer = buffer;\n }\n\n setPeakData(data) {\n this.peakData = data;\n }\n\n calculatePeaks(samplesPerPixel, sampleRate) {\n let cueIn = secondsToSamples(this.cueIn, sampleRate);\n let cueOut = secondsToSamples(this.cueOut, sampleRate);\n\n this.setPeaks(extractPeaks(this.buffer, samplesPerPixel, this.peakData.mono, cueIn, cueOut));\n }\n\n setPeaks(peaks) {\n this.peaks = peaks;\n }\n\n setState(state) {\n this.state = state;\n }\n\n getStartTime() {\n return this.startTime;\n }\n\n getEndTime() {\n return this.endTime;\n }\n\n getDuration() {\n return this.duration;\n }\n\n isPlaying() {\n return this.playout.isPlaying();\n }\n\n setShouldPlay(bool) {\n this.playout.setShouldPlay(bool);\n }\n\n setGainLevel(level) {\n this.gain = level;\n this.playout.setVolumeGainLevel(level);\n }\n\n setMasterGainLevel(level) {\n this.playout.setMasterGainLevel(level);\n }\n\n /*\n startTime, endTime in seconds (float).\n segment is for a highlighted section in the UI.\n\n returns a Promise that will resolve when the AudioBufferSource\n is either stopped or plays out naturally.\n */\n schedulePlay(now, startTime, endTime, options) { \n var start,\n duration,\n relPos,\n when = now,\n segment = (endTime) ? (endTime - startTime) : undefined,\n sourcePromise;\n\n //1) track has no content to play.\n //2) track does not play in this selection.\n if ((this.endTime <= startTime) || (segment && (startTime + segment) < this.startTime)) {\n //return a resolved promise since this track is technically \"stopped\".\n return Promise.resolve();\n }\n\n //track should have something to play if it gets here.\n\n //the track starts in the future or on the cursor position\n if (this.startTime >= startTime) {\n start = 0;\n when = when + this.startTime - startTime; //schedule additional delay for this audio node.\n\n if (endTime) {\n segment = segment - (this.startTime - startTime);\n duration = Math.min(segment, this.duration);\n }\n else {\n duration = this.duration;\n }\n }\n else {\n start = startTime - this.startTime;\n\n if (endTime) {\n duration = Math.min(segment, this.duration - start);\n }\n else {\n duration = this.duration - start;\n }\n }\n\n start = start + this.cueIn;\n relPos = startTime - this.startTime;\n\n sourcePromise = this.playout.setUpSource();\n\n //param relPos: cursor position in seconds relative to this track.\n //can be negative if the cursor is placed before the start of this track etc.\n _forOwn(this.fades, (fade) => {\n let startTime;\n let duration;\n\n //only apply fade if it's ahead of the cursor.\n if (relPos < fade.end) {\n if (relPos <= fade.start) {\n startTime = now + (fade.start - relPos);\n duration = fade.end - fade.start;\n }\n else if (relPos > fade.start && relPos < fade.end) {\n startTime = now - (relPos - fade.start);\n duration = fade.end - fade.start;\n }\n\n switch (fade.type) {\n case FADEIN:\n this.playout.applyFadeIn(startTime, duration, fade.shape);\n break;\n case FADEOUT:\n this.playout.applyFadeOut(startTime, duration, fade.shape);\n break;\n default:\n throw new Error(\"Invalid fade type saved on track.\");\n }\n }\n });\n\n this.playout.setVolumeGainLevel(this.gain);\n this.playout.setShouldPlay(options.shouldPlay);\n this.playout.setMasterGainLevel(options.masterGain);\n this.playout.play(when, start, duration);\n\n return sourcePromise;\n }\n\n scheduleStop(when=0) {\n this.playout.stop(when);\n }\n\n renderTimeSelection(data) {\n let startX = secondsToPixels(data.timeSelection.start, data.resolution, data.sampleRate);\n let endX = secondsToPixels(data.timeSelection.end, data.resolution, data.sampleRate);\n let width = endX - startX + 1;\n let className = (width > 1) ? \"segment\" : \"point\";\n\n return h(`div.selection.${className}`, {\n attributes: {\n \"style\": `position: absolute; width: ${width}px; bottom: 0; top: 0; left: ${startX}px; z-index: 4;`\n }\n });\n }\n\n renderOverlay(data) {\n let channelPixels = secondsToPixels(data.playlistLength, data.resolution, data.sampleRate);\n\n let config = {\n attributes: {\n \"style\": `position: absolute; top: 0; right: 0; bottom: 0; left: 0; width: ${channelPixels}px; z-index: 9;`\n }\n };\n\n let stateClass = \"\";\n\n if (this.state && this.enabledStates[this.state]) {\n let state = new stateClasses[this.state](this, data.resolution, data.sampleRate);\n let stateEvents = state.getEvents();\n\n Object.keys(stateEvents).map((event) => {\n config[`on${event}`] = stateEvents[event].bind(state);\n });\n\n stateClass = state.getClasses();\n }\n //use this overlay for track event cursor position calculations.\n return h(`div.playlist-overlay${stateClass}`, config);\n }\n\n renderControls(data) {\n let muteClass = data.muted ? \".active\" : \"\";\n let soloClass = data.soloed ? \".active\" : \"\";\n let numChan = this.peaks.data.length;\n\n return h(\"div.controls\", {\n attributes: {\n \"style\": `height: ${numChan * data.height}px; width: ${data.controls.width}px; position: absolute; left: 0; z-index: 10;`\n }},\n [\n h(\"header\", [ this.name ]),\n h(\"div.btn-group\", [\n h(`span.btn.btn-default.btn-xs.btn-mute${muteClass}`, {\"onclick\": () => {\n this.ee.emit(\"mute\", this);\n }}, [ \"Mute\" ]),\n h(`span.btn.btn-default.btn-xs.btn-solo${soloClass}`, {\"onclick\": () => {\n this.ee.emit(\"solo\", this);\n }}, [ \"Solo\" ])\n ]),\n h(\"label\", [\n h(\"input.volume-slider\", {\n attributes: {\n \"type\": \"range\",\n \"min\": 0,\n \"max\": 100,\n \"value\": 100\n },\n \"hook\": new VolumeSliderHook(this.gain),\n \"oninput\": (e) => {\n this.ee.emit(\"volumechange\", e.target.value, this);\n }\n })\n ])\n ]\n );\n }\n\n render(data) {\n let width = this.peaks.length;\n let playbackX = secondsToPixels(data.playbackSeconds, data.resolution, data.sampleRate);\n let startX = secondsToPixels(this.startTime, data.resolution, data.sampleRate);\n let endX = secondsToPixels(this.endTime, data.resolution, data.sampleRate);\n let progressWidth = 0;\n let numChan = this.peaks.data.length;\n\n if (playbackX > 0 && playbackX > startX) {\n if (playbackX < endX) {\n progressWidth = playbackX - startX;\n }\n else {\n progressWidth = width;\n }\n }\n\n let waveformChildren = [\n h(\"div.cursor\", {attributes: {\n \"style\": `position: absolute; width: 1px; margin: 0; padding: 0; top: 0; left: ${playbackX}px; bottom: 0; z-index: 5;`\n }})\n ];\n\n let channels = Object.keys(this.peaks.data).map((channelNum) => {\n\n let channelChildren = [\n h(\"div.channel-progress\", {attributes: {\n \"style\": `position: absolute; width: ${progressWidth}px; height: ${data.height}px; z-index: 2;`\n }})\n ];\n let offset = 0;\n let totalWidth = width;\n let peaks = this.peaks.data[channelNum];\n\n while (totalWidth > 0) {\n let currentWidth = Math.min(totalWidth, MAX_CANVAS_WIDTH);\n\n channelChildren.push(h(\"canvas\", {\n attributes: {\n \"width\": currentWidth,\n \"height\": data.height,\n \"style\": \"float: left; position: relative; margin: 0; padding: 0; z-index: 3;\"\n },\n \"hook\": new CanvasHook(peaks, offset, this.peaks.bits, data.colors.waveOutlineColor)\n }));\n\n totalWidth -= currentWidth;\n offset += MAX_CANVAS_WIDTH;\n }\n\n //if there are fades, display them.\n if (this.fadeIn) {\n let fadeIn = this.fades[this.fadeIn];\n let width = secondsToPixels(fadeIn.end - fadeIn.start, data.resolution, data.sampleRate);\n\n channelChildren.push(h(\"div.wp-fade.wp-fadein\", {\n attributes: {\n \"style\": `position: absolute; height: ${data.height}px; width: ${width}px; top: 0; left: 0; z-index: 4;`\n }}, [\n h(\"canvas\", {\n attributes: {\n \"width\": width,\n \"height\": data.height\n },\n \"hook\": new FadeCanvasHook(fadeIn.type, fadeIn.shape, fadeIn.end - fadeIn.start, data.resolution)\n })\n ]));\n }\n\n if (this.fadeOut) {\n let fadeOut = this.fades[this.fadeOut];\n let width = secondsToPixels(fadeOut.end - fadeOut.start, data.resolution, data.sampleRate);\n\n channelChildren.push(h(\"div.wp-fade.wp-fadeout\", {\n attributes: {\n \"style\": `position: absolute; height: ${data.height}px; width: ${width}px; top: 0; right: 0; z-index: 4;`\n }}, [\n h(\"canvas\", {\n attributes: {\n \"width\": width,\n \"height\": data.height\n },\n \"hook\": new FadeCanvasHook(fadeOut.type, fadeOut.shape, fadeOut.end - fadeOut.start, data.resolution)\n })\n ]));\n }\n\n return h(`div.channel.channel-${channelNum}`, {attributes: {\n \"style\": `height: ${data.height}px; width: ${width}px; top: ${channelNum*data.height}px; left: ${startX}px; position: absolute; margin: 0; padding: 0; z-index: 1;`\n }},\n channelChildren\n );\n });\n\n let audibleClass = data.shouldPlay ? \"\" : \".silent\";\n\n waveformChildren.push(channels);\n waveformChildren.push(this.renderOverlay(data));\n\n //draw cursor selection on active track.\n if (data.isActive === true) {\n waveformChildren.push(this.renderTimeSelection(data));\n }\n\n let waveform = h(\"div.waveform\", {\n attributes: {\n \"style\": `height: ${numChan * data.height}px; position: relative;`\n }}, \n waveformChildren\n );\n\n let channelChildren = [];\n let channelMargin = 0;\n\n if (data.controls.show) {\n channelChildren.push(this.renderControls(data));\n channelMargin = data.controls.width;\n }\n\n channelChildren.push(waveform);\n\n return h(`div.channel-wrapper${audibleClass}`, {\n attributes: {\n \"style\": `margin-left: ${channelMargin}px; height: ${data.height * numChan}px;`\n }},\n channelChildren\n );\n }\n\n getTrackDetails() {\n let info = {\n src: this.src,\n start: this.startTime,\n end: this.endTime,\n name: this.name,\n cuein: this.cueIn,\n cueout: this.cueOut\n };\n\n if (this.fadeIn) {\n let fadeIn = this.fades[this.fadeIn];\n\n info[\"fadeIn\"] = {\n shape: fadeIn.shape,\n duration: fadeIn.end - fadeIn.start\n }\n }\n\n if (this.fadeOut) {\n let fadeOut = this.fades[this.fadeOut];\n\n info[\"fadeOut\"] = {\n shape: fadeOut.shape,\n duration: fadeOut.end - fadeOut.start\n }\n }\n\n return info;\n }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/Track.js\n **/","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\nvar baseFor = require('lodash._basefor'),\n baseIteratee = require('lodash._baseiteratee'),\n keys = require('lodash.keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\n/**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forOwn(object, iteratee) {\n return object && baseForOwn(object, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = forOwn;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash.forown/index.js\n ** module id = 67\n ** module chunks = 0\n **/","/**\n * lodash 3.0.3 (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n\n/**\n * The base implementation of `baseForIn` and `baseForOwn` which iterates\n * over `object` properties returned by `keysFunc` invoking `iteratee` for\n * each property. Iteratee functions may exit iteration early by explicitly\n * returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * Creates a base function for methods like `_.forIn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = baseFor;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash._basefor/index.js\n ** module id = 68\n ** module chunks = 0\n **/","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\nvar stringToPath = require('lodash._stringtopath');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Used to determine if values are of the language type `Object`. */\nvar objectTypes = {\n 'function': true,\n 'object': true\n};\n\n/** Detect free variable `exports`. */\nvar freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)\n ? exports\n : undefined;\n\n/** Detect free variable `module`. */\nvar freeModule = (objectTypes[typeof module] && module && !module.nodeType)\n ? module\n : undefined;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global);\n\n/** Detect free variable `self`. */\nvar freeSelf = checkGlobal(objectTypes[typeof self] && self);\n\n/** Detect free variable `window`. */\nvar freeWindow = checkGlobal(objectTypes[typeof window] && window);\n\n/** Detect `this` as the global object. */\nvar thisGlobal = checkGlobal(objectTypes[typeof this] && this);\n\n/**\n * Used as a reference to the global object.\n *\n * The `this` value is used if it's the global object to avoid Greasemonkey's\n * restricted `window` object, otherwise the `window` object is used.\n */\nvar root = freeGlobal ||\n ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) ||\n freeSelf || thisGlobal || Function('return this')();\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\nfunction baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n}\n\n/**\n * Checks if `value` is a global object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {null|Object} Returns `value` if it's a global object, else `null`.\n */\nfunction checkGlobal(value) {\n return (value && value.Object === Object) ? value : null;\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\nfunction setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetPrototype = Object.getPrototypeOf,\n nativeKeys = Object.keys;\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache && cache.__data__.length == LARGE_ARRAY_SIZE) {\n cache = this.__data__ = new MapCache(cache.__data__);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to search.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n // Avoid a bug in IE 10-11 where objects with a [[Prototype]] of `null`,\n // that are composed entirely of index properties, return `false` for\n // `hasOwnProperty` checks of them.\n return hasOwnProperty.call(object, key) ||\n (typeof object == 'object' && key in object && getPrototype(object) === null);\n}\n\n/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return key in Object(object);\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n * The bitmask may be composed of the following flags:\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = arrayTag,\n othTag = arrayTag;\n\n if (!objIsArr) {\n objTag = getTag(object);\n objTag = objTag == argsTag ? objectTag : objTag;\n }\n if (!othIsArr) {\n othTag = getTag(other);\n othTag = othTag == argsTag ? objectTag : othTag;\n }\n var objIsObj = objTag == objectTag && !isHostObject(object),\n othIsObj = othTag == objectTag && !isHostObject(other),\n isSameTag = objTag == othTag;\n\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n }\n if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n}\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\n/**\n * The base implementation of `_.keys` which doesn't skip the constructor\n * property of prototypes or treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n return nativeKeys(Object(object));\n}\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n };\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\nfunction createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!seen.has(othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n return seen.add(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, customizer, bitmask, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n // Coerce dates and booleans to numbers, dates to milliseconds and\n // booleans to `1` or `0` treating invalid dates coerced to `NaN` as\n // not equal.\n return +object == +other;\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case numberTag:\n // Treat `NaN` vs. `NaN` as equal.\n return (object != +object) ? other != +other : object == +other;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/6.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= UNORDERED_COMPARE_FLAG;\n stack.set(object, other);\n\n // Recursively compare objects (susceptible to call stack limits).\n return equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n objProps = keys(object),\n objLength = objProps.length,\n othProps = keys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : baseHas(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n return result;\n}\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a\n * [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) that affects\n * Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = toPairs(object),\n length = result.length;\n\n while (length--) {\n result[length][2] = isStrictComparable(result[length][1]);\n }\n return result;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object[key];\n return isNative(value) ? value : undefined;\n}\n\n/**\n * Gets the `[[Prototype]]` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {null|Object} Returns the `[[Prototype]]`.\n */\nfunction getPrototype(value) {\n return nativeGetPrototype(Object(value));\n}\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction getTag(value) {\n return objectToString.call(value);\n}\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var result,\n index = -1,\n length = path.length;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result) {\n return result;\n }\n var length = object ? object.length : 0;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isString(object) || isArguments(object));\n}\n\n/**\n * Creates an array of index keys for `object` values of arrays,\n * `arguments` objects, and strings, otherwise `null` is returned.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array|null} Returns index keys, else `null`.\n */\nfunction indexKeys(object) {\n var length = object ? object.length : undefined;\n if (isLength(length) &&\n (isArray(object) || isString(object) || isArguments(object))) {\n return baseTimes(length, String);\n }\n return null;\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'user': 'fred' };\n * var other = { 'user': 'fred' };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 incorrectly makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @type {Function}\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value)) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8 which returns 'object' for typed array and weak map constructors,\n // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length,\n * else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (!isObject(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nfunction isTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is used in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n var isProto = isPrototype(object);\n if (!(isProto || isArrayLike(object))) {\n return baseKeys(object);\n }\n var indexes = indexKeys(object),\n skipIndexes = !!indexes,\n result = indexes || [],\n length = result.length;\n\n for (var key in object) {\n if (baseHas(object, key) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length))) &&\n !(isProto && key == 'constructor')) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\nvar toPairs = createToPairs(keys);\n\n/**\n * This method returns the first argument given to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'user': 'fred' };\n *\n * _.identity(object) === object;\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = baseIteratee;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash._baseiteratee/index.js\n ** module id = 69\n ** module chunks = 0\n **/","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\nvar baseToString = require('lodash._basetostring');\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to determine if values are of the language type `Object`. */\nvar objectTypes = {\n 'function': true,\n 'object': true\n};\n\n/** Detect free variable `exports`. */\nvar freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)\n ? exports\n : undefined;\n\n/** Detect free variable `module`. */\nvar freeModule = (objectTypes[typeof module] && module && !module.nodeType)\n ? module\n : undefined;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global);\n\n/** Detect free variable `self`. */\nvar freeSelf = checkGlobal(objectTypes[typeof self] && self);\n\n/** Detect free variable `window`. */\nvar freeWindow = checkGlobal(objectTypes[typeof window] && window);\n\n/** Detect `this` as the global object. */\nvar thisGlobal = checkGlobal(objectTypes[typeof this] && this);\n\n/**\n * Used as a reference to the global object.\n *\n * The `this` value is used if it's the global object to avoid Greasemonkey's\n * restricted `window` object, otherwise the `window` object is used.\n */\nvar root = freeGlobal ||\n ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) ||\n freeSelf || thisGlobal || Function('return this')();\n\n/**\n * Checks if `value` is a global object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {null|Object} Returns `value` if it's a global object, else `null`.\n */\nfunction checkGlobal(value) {\n return (value && value.Object === Object) ? value : null;\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to search.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object[key];\n return isNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoize(function(string) {\n var result = [];\n toString(string).replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'user': 'fred' };\n * var other = { 'user': 'fred' };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8 which returns 'object' for typed array and weak map constructors,\n // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (!isObject(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = stringToPath;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash._stringtopath/index.js\n ** module id = 70\n ** module chunks = 0\n **/","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to determine if values are of the language type `Object`. */\nvar objectTypes = {\n 'function': true,\n 'object': true\n};\n\n/** Detect free variable `exports`. */\nvar freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)\n ? exports\n : undefined;\n\n/** Detect free variable `module`. */\nvar freeModule = (objectTypes[typeof module] && module && !module.nodeType)\n ? module\n : undefined;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global);\n\n/** Detect free variable `self`. */\nvar freeSelf = checkGlobal(objectTypes[typeof self] && self);\n\n/** Detect free variable `window`. */\nvar freeWindow = checkGlobal(objectTypes[typeof window] && window);\n\n/** Detect `this` as the global object. */\nvar thisGlobal = checkGlobal(objectTypes[typeof this] && this);\n\n/**\n * Used as a reference to the global object.\n *\n * The `this` value is used if it's the global object to avoid Greasemonkey's\n * restricted `window` object, otherwise the `window` object is used.\n */\nvar root = freeGlobal ||\n ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) ||\n freeSelf || thisGlobal || Function('return this')();\n\n/**\n * Checks if `value` is a global object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {null|Object} Returns `value` if it's a global object, else `null`.\n */\nfunction checkGlobal(value) {\n return (value && value.Object === Object) ? value : null;\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\nmodule.exports = baseToString;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash._basetostring/index.js\n ** module id = 71\n ** module chunks = 0\n **/","// uuid.js\n//\n// Copyright (c) 2010-2012 Robert Kieffer\n// MIT License - http://opensource.org/licenses/mit-license.php\n\n// Unique ID creation requires a high quality random # generator. We feature\n// detect to determine the best RNG source, normalizing to a function that\n// returns 128-bits of randomness, since that's what's usually required\nvar _rng = require('./rng');\n\n// Maps for number <-> hex string conversion\nvar _byteToHex = [];\nvar _hexToByte = {};\nfor (var i = 0; i < 256; i++) {\n _byteToHex[i] = (i + 0x100).toString(16).substr(1);\n _hexToByte[_byteToHex[i]] = i;\n}\n\n// **`parse()` - Parse a UUID into it's component bytes**\nfunction parse(s, buf, offset) {\n var i = (buf && offset) || 0, ii = 0;\n\n buf = buf || [];\n s.toLowerCase().replace(/[0-9a-f]{2}/g, function(oct) {\n if (ii < 16) { // Don't overflow!\n buf[i + ii++] = _hexToByte[oct];\n }\n });\n\n // Zero out remaining bytes if string was short\n while (ii < 16) {\n buf[i + ii++] = 0;\n }\n\n return buf;\n}\n\n// **`unparse()` - Convert UUID byte array (ala parse()) into a string**\nfunction unparse(buf, offset) {\n var i = offset || 0, bth = _byteToHex;\n return bth[buf[i++]] + bth[buf[i++]] +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] +\n bth[buf[i++]] + bth[buf[i++]] +\n bth[buf[i++]] + bth[buf[i++]];\n}\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\n// random #'s we need to init node and clockseq\nvar _seedBytes = _rng();\n\n// Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\nvar _nodeId = [\n _seedBytes[0] | 0x01,\n _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5]\n];\n\n// Per 4.2.2, randomize (14 bit) clockseq\nvar _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 0x3fff;\n\n// Previous uuid creation time\nvar _lastMSecs = 0, _lastNSecs = 0;\n\n// See https://github.com/broofa/node-uuid for API details\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n\n options = options || {};\n\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;\n\n // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime();\n\n // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;\n\n // Time since last uuid creation (in msecs)\n var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;\n\n // Per 4.2.1.2, Bump clockseq on clock regression\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n }\n\n // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n }\n\n // Per 4.2.1.2 Throw error if too many uuids are requested\n if (nsecs >= 10000) {\n throw new Error('uuid.v1(): Can\\'t create more than 10M uuids/sec');\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq;\n\n // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n msecs += 12219292800000;\n\n // `time_low`\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff;\n\n // `time_mid`\n var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff;\n\n // `time_high_and_version`\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n b[i++] = tmh >>> 16 & 0xff;\n\n // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n b[i++] = clockseq >>> 8 | 0x80;\n\n // `clock_seq_low`\n b[i++] = clockseq & 0xff;\n\n // `node`\n var node = options.node || _nodeId;\n for (var n = 0; n < 6; n++) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : unparse(b);\n}\n\n// **`v4()` - Generate random UUID**\n\n// See https://github.com/broofa/node-uuid for API details\nfunction v4(options, buf, offset) {\n // Deprecated - 'format' argument, as supported in v1.2\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options == 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || _rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ii++) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || unparse(rnds);\n}\n\n// Export public API\nvar uuid = v4;\nuuid.v1 = v1;\nuuid.v4 = v4;\nuuid.parse = parse;\nuuid.unparse = unparse;\n\nmodule.exports = uuid;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/uuid/uuid.js\n ** module id = 72\n ** module chunks = 0\n **/","\nvar rng;\n\nif (global.crypto && crypto.getRandomValues) {\n // WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto\n // Moderately fast, high quality\n var _rnds8 = new Uint8Array(16);\n rng = function whatwgRNG() {\n crypto.getRandomValues(_rnds8);\n return _rnds8;\n };\n}\n\nif (!rng) {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var _rnds = new Array(16);\n rng = function() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n _rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return _rnds;\n };\n}\n\nmodule.exports = rng;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/uuid/rng-browser.js\n ** module id = 73\n ** module chunks = 0\n **/","'use strict';\n\n//http://jsperf.com/typed-array-min-max/2\n//plain for loop for finding min/max is way faster than anything else.\n/**\n* @param {TypedArray} array - Subarray of audio to calculate peaks from.\n*/\nfunction findMinMax(array) {\n var min = Infinity;\n var max = -Infinity;\n var i = 0;\n var len = array.length;\n var curr;\n\n for (; i < len; i++) {\n curr = array[i];\n if (min > curr) {\n min = curr;\n }\n if (max < curr) {\n max = curr;\n }\n }\n\n return {\n min: min,\n max: max\n };\n}\n\n/**\n* @param {Number} n - peak to convert from float to Int8, Int16 etc.\n* @param {Number} bits - convert to #bits two's complement signed integer\n*/\nfunction convert(n, bits) {\n var max = Math.pow(2, bits-1);\n var v = n < 0 ? n * max : n * max - 1;\n return Math.max(-max, Math.min(max-1, v));\n}\n\n/**\n* @param {TypedArray} channel - Audio track frames to calculate peaks from.\n* @param {Number} samplesPerPixel - Audio frames per peak\n*/\nfunction extractPeaks(channel, samplesPerPixel, bits) {\n var i;\n var chanLength = channel.length;\n var numPeaks = Math.ceil(chanLength / samplesPerPixel);\n var start;\n var end;\n var segment;\n var max; \n var min;\n var extrema;\n\n //create interleaved array of min,max\n var peaks = new (eval(\"Int\"+bits+\"Array\"))(numPeaks*2);\n\n for (i = 0; i < numPeaks; i++) {\n\n start = i * samplesPerPixel;\n end = (i + 1) * samplesPerPixel > chanLength ? chanLength : (i + 1) * samplesPerPixel;\n\n segment = channel.subarray(start, end);\n extrema = findMinMax(segment);\n min = convert(extrema.min, bits);\n max = convert(extrema.max, bits);\n\n peaks[i*2] = min;\n peaks[i*2+1] = max;\n }\n\n return peaks;\n}\n\nfunction makeMono(channelPeaks, bits) {\n var numChan = channelPeaks.length;\n var weight = 1 / numChan;\n var numPeaks = channelPeaks[0].length / 2;\n var c = 0;\n var i = 0;\n var min;\n var max;\n var peaks = new (eval(\"Int\"+bits+\"Array\"))(numPeaks*2);\n\n for (i = 0; i < numPeaks; i++) {\n min = 0;\n max = 0;\n\n for (c = 0; c < numChan; c++) {\n min += weight * channelPeaks[c][i*2];\n max += weight * channelPeaks[c][i*2+1];\n }\n\n peaks[i*2] = min;\n peaks[i*2+1] = max;\n }\n\n //return in array so channel number counts still work.\n return [peaks];\n}\n\n/**\n* @param {AudioBuffer,TypedArray} source - Source of audio samples for peak calculations.\n* @param {Number} samplesPerPixel - Number of audio samples per peak.\n* @param {Number} cueIn - index in channel to start peak calculations from.\n* @param {Number} cueOut - index in channel to end peak calculations from (non-inclusive).\n*/\nmodule.exports = function(source, samplesPerPixel, isMono, cueIn, cueOut, bits) {\n samplesPerPixel = samplesPerPixel || 10000;\n bits = bits || 8;\n isMono = isMono || true;\n\n if ([8, 16, 32].indexOf(bits) < 0) {\n throw new Error(\"Invalid number of bits specified for peaks.\");\n }\n\n var numChan = source.numberOfChannels;\n var peaks = [];\n var c;\n var numPeaks;\n var channel;\n var slice;\n\n if (typeof source.subarray === \"undefined\") {\n for (c = 0; c < numChan; c++) {\n channel = source.getChannelData(c);\n cueIn = cueIn || 0;\n cueOut = cueOut || channel.length;\n slice = channel.subarray(cueIn, cueOut);\n peaks.push(extractPeaks(slice, samplesPerPixel, bits));\n }\n }\n else {\n cueIn = cueIn || 0;\n cueOut = cueOut || source.length;\n peaks.push(extractPeaks(source.subarray(cueIn, cueOut), samplesPerPixel, bits));\n }\n\n if (isMono && peaks.length > 1) {\n peaks = makeMono(peaks, bits);\n }\n\n numPeaks = peaks[0].length / 2;\n\n return {\n length: numPeaks,\n data: peaks,\n bits: bits\n };\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webaudio-peaks/index.js\n ** module id = 74\n ** module chunks = 0\n **/","import CursorState from './states/CursorState';\nimport SelectState from './states/SelectState';\nimport ShiftState from './states/ShiftState';\nimport FadeInState from './states/FadeInState';\nimport FadeOutState from './states/FadeOutState';\n\nexport default {\n 'cursor': CursorState,\n 'select': SelectState,\n 'shift': ShiftState,\n 'fadein': FadeInState,\n 'fadeout': FadeOutState\n};\n\n\n/** WEBPACK FOOTER **\n ** ./src/track/states.js\n **/","import {pixelsToSeconds} from '../../utils/conversions';\n\nexport default class {\n constructor(track, samplesPerPixel, sampleRate) {\n this.track = track;\n this.samplesPerPixel = samplesPerPixel;\n this.sampleRate = sampleRate;\n }\n\n click(e) {\n e.preventDefault();\n\n let startX = e.offsetX;\n let startTime = pixelsToSeconds(startX, this.samplesPerPixel, this.sampleRate);\n\n this.track.ee.emit('select', startTime, startTime, this.track);\n }\n\n getClasses() {\n return \".state-cursor\";\n }\n\n getEvents() {\n return {\n \"click\": this.click\n }\n }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/track/states/CursorState.js\n **/","import {pixelsToSeconds} from '../../utils/conversions';\n\nexport default class {\n constructor(track, samplesPerPixel, sampleRate) {\n this.track = track;\n this.samplesPerPixel = samplesPerPixel;\n this.sampleRate = sampleRate;\n }\n\n mousedown(e) {\n e.preventDefault();\n\n var el = e.target;\n var startX = e.offsetX;\n let startTime = pixelsToSeconds(startX, this.samplesPerPixel, this.sampleRate);\n\n this.track.ee.emit('select', startTime, startTime, this.track);\n\n let emitSelection = (x) => {\n let minX = Math.min(x, startX);\n let maxX = Math.max(x, startX);\n let startTime = pixelsToSeconds(minX, this.samplesPerPixel, this.sampleRate);\n let endTime = pixelsToSeconds(maxX, this.samplesPerPixel, this.sampleRate);\n\n this.track.ee.emit('select', startTime, endTime, this.track);\n }\n\n let complete = (ev) => {\n ev.preventDefault();\n\n emitSelection(ev.offsetX);\n\n el.onmousemove = el.onmouseup = el.onmouseleave = null;\n };\n\n //dynamically put an event on the element.\n el.onmousemove = (ev) => {\n ev.preventDefault();\n\n emitSelection(ev.offsetX);\n };\n\n el.onmouseup = el.onmouseleave = complete;\n }\n\n getClasses() {\n return \".state-select\";\n }\n\n getEvents() {\n return {\n \"mousedown\": this.mousedown\n }\n }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/track/states/SelectState.js\n **/","import {pixelsToSeconds} from '../../utils/conversions';\n\nexport default class {\n constructor(track, samplesPerPixel, sampleRate) {\n this.track = track;\n this.samplesPerPixel = samplesPerPixel;\n this.sampleRate = sampleRate;\n }\n\n mousedown(e) {\n e.preventDefault();\n\n let el = e.target;\n var prevX = e.offsetX;\n\n let emitShift = (x) => {\n let deltaX = x - prevX;\n let deltaTime = pixelsToSeconds(deltaX, this.samplesPerPixel, this.sampleRate);\n prevX = x;\n this.track.ee.emit('shift', deltaTime, this.track);\n };\n\n //dynamically put an event on the element.\n el.onmousemove = (e) => {\n e.preventDefault();\n emitShift(e.offsetX);\n };\n\n let complete = (e) => {\n e.preventDefault();\n emitShift(e.offsetX);\n el.onmousemove = el.onmouseup = el.onmouseleave = null;\n };\n\n el.onmouseup = el.onmouseleave = complete;\n }\n\n getClasses() {\n return \".state-shift\";\n }\n\n getEvents() {\n return {\n \"mousedown\": this.mousedown\n }\n }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/track/states/ShiftState.js\n **/","import {pixelsToSeconds} from '../../utils/conversions';\n\nexport default class {\n constructor(track, samplesPerPixel, sampleRate) {\n this.track = track;\n this.samplesPerPixel = samplesPerPixel;\n this.sampleRate = sampleRate;\n }\n\n click(e) {\n let startX = e.offsetX;\n let time = pixelsToSeconds(startX, this.samplesPerPixel, this.sampleRate);\n\n if (time > this.track.getStartTime() && time < this.track.getEndTime()) {\n this.track.ee.emit('fadein', time - this.track.getStartTime(), this.track);\n }\n }\n\n getClasses() {\n return \".state-fadein\";\n }\n\n getEvents() {\n return {\n \"click\": this.click\n };\n }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/track/states/FadeInState.js\n **/","import {pixelsToSeconds} from '../../utils/conversions';\n\nexport default class {\n constructor(track, samplesPerPixel, sampleRate) {\n this.track = track;\n this.samplesPerPixel = samplesPerPixel;\n this.sampleRate = sampleRate;\n }\n\n click(e) {\n let startX = e.offsetX;\n let time = pixelsToSeconds(startX, this.samplesPerPixel, this.sampleRate);\n\n if (time > this.track.getStartTime() && time < this.track.getEndTime()) {\n this.track.ee.emit('fadeout', this.track.getEndTime() - time, this.track);\n }\n }\n\n getClasses() {\n return \".state-fadeout\";\n }\n\n getEvents() {\n return {\n \"click\": this.click\n };\n }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/track/states/FadeOutState.js\n **/","function drawFrame(cc, h2, x, minPeak, maxPeak) {\n let min = Math.abs(minPeak * h2);\n let max = Math.abs(maxPeak * h2);\n\n //draw maxs\n cc.fillRect(x, 0, 1, h2-max);\n //draw mins\n cc.fillRect(x, h2+min, 1, h2-min);\n}\n\n/*\n* virtual-dom hook for drawing to the canvas element.\n*/\nexport default class {\n constructor(peaks, offset, bits, color) {\n this.peaks = peaks\n this.offset = offset; //http://stackoverflow.com/questions/6081483/maximum-size-of-a-canvas-element\n this.color = color;\n this.bits = bits;\n }\n\n hook(canvas, prop, prev) {\n //canvas is up to date\n if (prev !== undefined &&\n (prev.peaks === this.peaks)) {\n return;\n }\n\n let i;\n let len = canvas.width;\n let cc = canvas.getContext('2d');\n let h2 = canvas.height / 2;\n let maxValue = Math.pow(2, this.bits-1);\n\n let minPeak;\n let maxPeak;\n\n cc.clearRect(0, 0, canvas.width, canvas.height);\n cc.fillStyle = this.color;\n\n for (i = 0; i < len; i++) {\n minPeak = this.peaks[(i+this.offset)*2] / maxValue;\n maxPeak = this.peaks[(i+this.offset)*2+1] / maxValue;\n drawFrame(cc, h2, i, minPeak, maxPeak);\n }\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/render/CanvasHook.js\n **/","import {FADEIN, FADEOUT, SCURVE, LINEAR, EXPONENTIAL, LOGARITHMIC} from 'fade-maker';\nimport {sCurve, logarithmic, linear, exponential} from 'fade-curves';\n\nfunction createCurve(shape, type, width) {\n let reflection = (type === FADEIN) ? 1 : -1;\n let curve;\n\n switch(shape) {\n case SCURVE:\n curve = sCurve(width, reflection);\n break;\n case LINEAR:\n curve = linear(width, reflection);\n break;\n case EXPONENTIAL:\n curve = exponential(width, reflection);\n break;\n case LOGARITHMIC:\n curve = logarithmic(width, 10, reflection);\n break;\n default:\n throw new Error(\"Unsupported Fade type\");\n }\n\n return curve;\n}\n\nfunction drawFadeCurve(ctx, shape, type, width, height) {\n let curve;\n let i;\n let len;\n let y;\n\n ctx.strokeStyle = \"black\";\n curve = createCurve(shape, type, width);\n\n y = height - curve[0] * height;\n ctx.beginPath();\n ctx.moveTo(0, y);\n\n for (i = 1, len = curve.length; i < len; i++) {\n y = height - curve[i] * height;\n ctx.lineTo(i, y);\n }\n ctx.stroke();\n}\n\n\n/*\n* virtual-dom hook for drawing the fade curve to the canvas element.\n*/\nexport default class {\n constructor(type, shape, duration, samplesPerPixel) {\n this.type = type;\n this.shape = shape;\n this.duration = duration;\n this.samplesPerPixel = samplesPerPixel;\n }\n\n hook(canvas, prop, prev) {\n //node is up to date.\n if (prev !== undefined &&\n prev.shape === this.shape &&\n prev.type === this.type &&\n prev.duration === this.duration &&\n prev.samplesPerPixel === this.samplesPerPixel) {\n return;\n }\n\n let cc = canvas.getContext('2d');\n drawFadeCurve(cc, this.shape, this.type, canvas.width, canvas.height);\n }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/render/FadeCanvasHook.js\n **/","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FADEOUT = exports.FADEIN = exports.LOGARITHMIC = exports.EXPONENTIAL = exports.LINEAR = exports.SCURVE = undefined;\nexports.createFadeIn = createFadeIn;\nexports.createFadeOut = createFadeOut;\n\nvar _fadeCurves = require('fade-curves');\n\nvar SCURVE = exports.SCURVE = \"sCurve\";\nvar LINEAR = exports.LINEAR = \"linear\";\nvar EXPONENTIAL = exports.EXPONENTIAL = \"exponential\";\nvar LOGARITHMIC = exports.LOGARITHMIC = \"logarithmic\";\n\nvar FADEIN = exports.FADEIN = \"FadeIn\";\nvar FADEOUT = exports.FADEOUT = \"FadeOut\";\n\nfunction sCurveFadeIn(start, duration) {\n var curve = (0, _fadeCurves.sCurve)(10000, 1);\n this.setValueCurveAtTime(curve, start, duration);\n}\n\nfunction sCurveFadeOut(start, duration) {\n var curve = (0, _fadeCurves.sCurve)(10000, -1);\n this.setValueCurveAtTime(curve, start, duration);\n}\n\nfunction linearFadeIn(start, duration) {\n this.linearRampToValueAtTime(0, start);\n this.linearRampToValueAtTime(1, start + duration);\n}\n\nfunction linearFadeOut(start, duration) {\n this.linearRampToValueAtTime(1, start);\n this.linearRampToValueAtTime(0, start + duration);\n}\n\nfunction exponentialFadeIn(start, duration) {\n this.exponentialRampToValueAtTime(0.01, start);\n this.exponentialRampToValueAtTime(1, start + duration);\n}\n\nfunction exponentialFadeOut(start, duration) {\n this.exponentialRampToValueAtTime(1, start);\n this.exponentialRampToValueAtTime(0.01, start + duration);\n}\n\nfunction logarithmicFadeIn(start, duration) {\n var curve = (0, _fadeCurves.logarithmic)(10000, 10, 1);\n this.setValueCurveAtTime(curve, start, duration);\n}\n\nfunction logarithmicFadeOut(start, duration) {\n var curve = (0, _fadeCurves.logarithmic)(10000, 10, -1);\n this.setValueCurveAtTime(curve, start, duration);\n}\n\nfunction createFadeIn(gain, shape, start, duration) {\n switch (shape) {\n case SCURVE:\n sCurveFadeIn.call(gain, start, duration);\n break;\n case LINEAR:\n linearFadeIn.call(gain, start, duration);\n break;\n case EXPONENTIAL:\n exponentialFadeIn.call(gain, start, duration);\n break;\n case LOGARITHMIC:\n logarithmicFadeIn.call(gain, start, duration);\n break;\n default:\n throw new Error(\"Unsupported Fade type\");\n }\n}\n\nfunction createFadeOut(gain, shape, start, duration) {\n switch (shape) {\n case SCURVE:\n sCurveFadeOut.call(gain, start, duration);\n break;\n case LINEAR:\n linearFadeOut.call(gain, start, duration);\n break;\n case EXPONENTIAL:\n exponentialFadeOut.call(gain, start, duration);\n break;\n case LOGARITHMIC:\n logarithmicFadeOut.call(gain, start, duration);\n break;\n default:\n throw new Error(\"Unsupported Fade type\");\n }\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/fade-maker/index.js\n ** module id = 83\n ** module chunks = 0\n **/","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.linear = linear;\nexports.exponential = exponential;\nexports.sCurve = sCurve;\nexports.logarithmic = logarithmic;\nfunction linear(length, rotation) {\n var curve = new Float32Array(length),\n i,\n x,\n scale = length - 1;\n\n for (i = 0; i < length; i++) {\n x = i / scale;\n\n if (rotation > 0) {\n curve[i] = x;\n } else {\n curve[i] = 1 - x;\n }\n }\n\n return curve;\n}\n\nfunction exponential(length, rotation) {\n var curve = new Float32Array(length),\n i,\n x,\n scale = length - 1,\n index;\n\n for (i = 0; i < length; i++) {\n x = i / scale;\n index = rotation > 0 ? i : length - 1 - i;\n\n curve[index] = Math.exp(2 * x - 1) / Math.exp(1);\n }\n\n return curve;\n}\n\n//creating a curve to simulate an S-curve with setValueCurveAtTime.\nfunction sCurve(length, rotation) {\n var curve = new Float32Array(length),\n i,\n phase = rotation > 0 ? Math.PI / 2 : -(Math.PI / 2);\n\n for (i = 0; i < length; ++i) {\n curve[i] = Math.sin(Math.PI * i / length - phase) / 2 + 0.5;\n }\n return curve;\n}\n\n//creating a curve to simulate a logarithmic curve with setValueCurveAtTime.\nfunction logarithmic(length, base, rotation) {\n var curve = new Float32Array(length),\n index,\n x = 0,\n i;\n\n for (i = 0; i < length; i++) {\n //index for the curve array.\n index = rotation > 0 ? i : length - 1 - i;\n\n x = i / length;\n curve[index] = Math.log(1 + base * x) / Math.log(1 + base);\n }\n\n return curve;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/fade-curves/index.js\n ** module id = 84\n ** module chunks = 0\n **/","/*\n* virtual-dom hook for setting the volume input programmatically.\n*/\nexport default class {\n constructor(gain) {\n this.gain = gain;\n }\n\n hook(volumeInput, propertyName, previousValue) {\n volumeInput.value = this.gain * 100;\n }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/render/VolumeSliderHook.js\n **/","'use strict';\n\nimport {createFadeIn, createFadeOut} from 'fade-maker';\n\nconst FADEIN = \"FadeIn\";\nconst FADEOUT = \"FadeOut\";\n\nexport default class {\n\n constructor(ac, buffer) {\n this.ac = ac;\n this.gain = 1;\n this.buffer = buffer;\n this.destination = this.ac.destination;\n }\n\n applyFade(type, start, duration, shape=\"logarithmic\") {\n if (type === FADEIN) {\n createFadeIn(this.fadeGain.gain, shape, start, duration);\n }\n else if (type === FADEOUT) {\n createFadeOut(this.fadeGain.gain, shape, start, duration);\n }\n else {\n throw new Error(\"Unsupported fade type\");\n }\n }\n\n applyFadeIn(start, duration, shape=\"logarithmic\") {\n this.applyFade(FADEIN, start, duration, shape);\n }\n\n applyFadeOut(start, duration, shape=\"logarithmic\") {\n this.applyFade(FADEOUT, start, duration, shape);\n }\n\n isPlaying() {\n return this.source !== undefined;\n }\n\n getDuration() {\n return this.buffer.duration;\n }\n\n setUpSource() {\n var sourcePromise;\n\n this.source = this.ac.createBufferSource();\n this.source.buffer = this.buffer;\n\n sourcePromise = new Promise((resolve, reject) => {\n //keep track of the buffer state.\n this.source.onended = (e) => {\n this.source.disconnect();\n this.fadeGain.disconnect();\n this.volumeGain.disconnect();\n this.shouldPlayGain.disconnect();\n this.masterGain.disconnect();\n\n\n this.source = undefined;\n this.fadeGain = undefined;\n this.volumeGain = undefined;\n this.shouldPlayGain = undefined;\n this.masterGain = undefined;\n\n resolve();\n }\n });\n\n this.fadeGain = this.ac.createGain();\n //used for track volume slider\n this.volumeGain = this.ac.createGain();\n //used for solo/mute\n this.shouldPlayGain = this.ac.createGain();\n this.masterGain = this.ac.createGain();\n\n this.source.connect(this.fadeGain);\n this.fadeGain.connect(this.volumeGain);\n this.volumeGain.connect(this.shouldPlayGain);\n this.shouldPlayGain.connect(this.masterGain);\n this.masterGain.connect(this.destination);\n\n return sourcePromise;\n }\n\n setVolumeGainLevel(level) {\n this.volumeGain && (this.volumeGain.gain.value = level);\n }\n\n setShouldPlay(bool){\n this.shouldPlayGain && (this.shouldPlayGain.gain.value = bool ? 1 : 0);\n }\n\n setMasterGainLevel(level) {\n this.masterGain && (this.masterGain.gain.value = level);\n }\n\n /*\n source.start is picky when passing the end time. \n If rounding error causes a number to make the source think \n it is playing slightly more samples than it has it won't play at all.\n Unfortunately it doesn't seem to work if you just give it a start time.\n */\n play(when, start, duration) {\n this.source.start(when, start, duration);\n }\n\n stop(when=0) {\n this.source && this.source.stop(when);\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/Playout.js\n **/","module.exports = function() {\n\treturn new Worker(__webpack_public_path__ + \"301ffd7b6b1f9a16c47c.worker.js\");\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/worker-loader!./src/track/recorderWorker.js\n ** module id = 87\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/waveform-playlist/web-audio-editor.html b/dist/waveform-playlist/web-audio-editor.html index 8d4d2b24..7a43cc00 100644 --- a/dist/waveform-playlist/web-audio-editor.html +++ b/dist/waveform-playlist/web-audio-editor.html @@ -95,6 +95,7 @@

Full Waveform Editor

+