├── .gitignore
├── README.md
└── web
├── config.js
├── deploy
├── dist
├── fonts
│ ├── glyphicons-halflings-regular.eot
│ ├── glyphicons-halflings-regular.svg
│ ├── glyphicons-halflings-regular.ttf
│ ├── glyphicons-halflings-regular.woff
│ ├── proxima_nova_bold.eot
│ ├── proxima_nova_bold.svg
│ ├── proxima_nova_bold.ttf
│ ├── proxima_nova_bold.woff
│ ├── proxima_nova_bold_0.eot
│ ├── proxima_nova_bold_0.ttf
│ ├── proxima_nova_bold_0.woff
│ ├── proxima_nova_light.eot
│ ├── proxima_nova_light.svg
│ ├── proxima_nova_light.ttf
│ ├── proxima_nova_light.woff
│ ├── proxima_nova_light_0.eot
│ ├── proxima_nova_light_0.ttf
│ ├── proxima_nova_light_0.woff
│ ├── proxima_nova_regular.eot
│ ├── proxima_nova_regular.svg
│ ├── proxima_nova_regular.ttf
│ ├── proxima_nova_regular.woff
│ ├── proxima_nova_regular_0.eot
│ ├── proxima_nova_regular_0.ttf
│ ├── proxima_nova_regular_0.woff
│ ├── proxima_nova_semibold.eot
│ ├── proxima_nova_semibold.svg
│ ├── proxima_nova_semibold.ttf
│ ├── proxima_nova_semibold.woff
│ ├── proxima_nova_semibold_0.eot
│ ├── proxima_nova_semibold_0.ttf
│ ├── proxima_nova_semibold_0.woff
│ ├── proxima_nova_thin.eot
│ ├── proxima_nova_thin.svg
│ ├── proxima_nova_thin.ttf
│ ├── proxima_nova_thin.woff
│ ├── proxima_nova_thin_0.eot
│ ├── proxima_nova_thin_0.ttf
│ └── proxima_nova_thin_0.woff
├── images
│ ├── icon-chevron-left.png
│ ├── icon-chevron-left.svg
│ ├── icon-chevron-right.png
│ ├── icon-chevron-right.svg
│ ├── logo.png
│ ├── logo.svg
│ ├── select-caret.png
│ ├── select-caret@2x.png
│ ├── spotify-logo-notext-80@2x.png
│ └── spotify-logo.png
├── sp-bootstrap.css
└── sp-bootstrap.min.css
├── images
├── ajaxSpinner.gif
├── favicon.ico
├── organize.jpg
├── plot-select.png
├── saxman.jpg
├── select-example.png
└── sp-landing-tile3.jpg
├── index.html
├── lib
├── artists.js
├── bootstrap.min.js
├── jquery-1.11.1.min.js
├── jquery.min.js
├── moment.min.js
├── rsvp-latest.min.js
├── typeahead.bundle.js
└── underscore-min.js
└── styles2.css
/.gitignore:
--------------------------------------------------------------------------------
1 | *.pkl
2 | *.pyc
3 | projenv
4 | songdata
5 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | # Organize Your Music
3 |
4 | A web app that lets you organize your music.
5 |
6 | Online at http://static.echonest.com/OrganizeYourMusic
7 |
8 |
9 |
--------------------------------------------------------------------------------
/web/config.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | var SPOTIFY_CLIENT_ID = '1c81d0d03de148c083744f5cce782ef7';
4 | var REMOTE_SPOTIFY_REDIRECT_URI = 'http://static.echonest.com/OrganizeYourMusic/'
5 | var REMOTE_SPOTIFY_REDIRECT_URI = 'http://organizeyourmusic.playlistmachinery.com/'
6 | var LOCAL_SPOTIFY_REDIRECT_URI = 'http://localhost:8000/';
7 | var SPOTIFY_REDIRECT_URI = REMOTE_SPOTIFY_REDIRECT_URI;
8 |
--------------------------------------------------------------------------------
/web/deploy:
--------------------------------------------------------------------------------
1 | rsync -azv . plamere@playlistmachinery.com:/home/www/organizeyourmusic
2 | #s3cmd sync --acl-public * s3://static.echonest.com/OrganizeYourMusic/
3 |
--------------------------------------------------------------------------------
/web/dist/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/web/dist/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/web/dist/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_bold.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/proxima_nova_bold.eot
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_bold.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/proxima_nova_bold.ttf
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_bold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/proxima_nova_bold.woff
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_bold_0.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/proxima_nova_bold_0.eot
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_bold_0.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/proxima_nova_bold_0.ttf
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_bold_0.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/proxima_nova_bold_0.woff
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_light.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/proxima_nova_light.eot
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/proxima_nova_light.ttf
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_light.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/proxima_nova_light.woff
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_light_0.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/proxima_nova_light_0.eot
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_light_0.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/proxima_nova_light_0.ttf
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_light_0.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/proxima_nova_light_0.woff
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/proxima_nova_regular.eot
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/proxima_nova_regular.ttf
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/proxima_nova_regular.woff
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_regular_0.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/proxima_nova_regular_0.eot
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_regular_0.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/proxima_nova_regular_0.ttf
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_regular_0.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/proxima_nova_regular_0.woff
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_semibold.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/proxima_nova_semibold.eot
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_semibold.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_semibold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/proxima_nova_semibold.ttf
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_semibold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/proxima_nova_semibold.woff
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_semibold_0.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/proxima_nova_semibold_0.eot
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_semibold_0.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/proxima_nova_semibold_0.ttf
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_semibold_0.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/proxima_nova_semibold_0.woff
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_thin.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/proxima_nova_thin.eot
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_thin.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/proxima_nova_thin.ttf
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_thin.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/proxima_nova_thin.woff
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_thin_0.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/proxima_nova_thin_0.eot
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_thin_0.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/proxima_nova_thin_0.ttf
--------------------------------------------------------------------------------
/web/dist/fonts/proxima_nova_thin_0.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/fonts/proxima_nova_thin_0.woff
--------------------------------------------------------------------------------
/web/dist/images/icon-chevron-left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/images/icon-chevron-left.png
--------------------------------------------------------------------------------
/web/dist/images/icon-chevron-left.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/web/dist/images/icon-chevron-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/images/icon-chevron-right.png
--------------------------------------------------------------------------------
/web/dist/images/icon-chevron-right.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/web/dist/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/images/logo.png
--------------------------------------------------------------------------------
/web/dist/images/logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
103 |
--------------------------------------------------------------------------------
/web/dist/images/select-caret.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/images/select-caret.png
--------------------------------------------------------------------------------
/web/dist/images/select-caret@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/images/select-caret@2x.png
--------------------------------------------------------------------------------
/web/dist/images/spotify-logo-notext-80@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/images/spotify-logo-notext-80@2x.png
--------------------------------------------------------------------------------
/web/dist/images/spotify-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/dist/images/spotify-logo.png
--------------------------------------------------------------------------------
/web/images/ajaxSpinner.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/images/ajaxSpinner.gif
--------------------------------------------------------------------------------
/web/images/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/images/favicon.ico
--------------------------------------------------------------------------------
/web/images/organize.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/images/organize.jpg
--------------------------------------------------------------------------------
/web/images/plot-select.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/images/plot-select.png
--------------------------------------------------------------------------------
/web/images/saxman.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/images/saxman.jpg
--------------------------------------------------------------------------------
/web/images/select-example.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/images/select-example.png
--------------------------------------------------------------------------------
/web/images/sp-landing-tile3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/plamere/OrganizeYourMusic/f0fc0fca725d92f83d004afe6a45c4a6e1792d3a/web/images/sp-landing-tile3.jpg
--------------------------------------------------------------------------------
/web/lib/bootstrap.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap v3.1.1 (http://getbootstrap.com)
3 | * Copyright 2011-2014 Twitter, Inc.
4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 | */
6 | if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.isLoading=!1};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",f.resetText||d.data("resetText",d[e]()),d[e](f[b]||this.options[b]),setTimeout(a.proxy(function(){"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},b.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}a&&this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}if(e.hasClass("active"))return this.sliding=!1;var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});return this.$element.trigger(j),j.isDefaultPrevented()?void 0:(this.sliding=!0,f&&this.pause(),this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid.bs.carousel",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")?(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid.bs.carousel")},0)}).emulateTransitionEnd(1e3*d.css("transition-duration").slice(0,-1))):(d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid.bs.carousel")),f&&this.cycle(),this)};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("collapse in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);!e&&f.toggle&&"show"==c&&(c=!c),e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(jQuery),+function(a){"use strict";function b(b){a(d).remove(),a(e).each(function(){var d=c(a(this)),e={relatedTarget:this};d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown",e)),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown",e))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('
').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown",h),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=" li:not(.divider):visible a",i=f.find("[role=menu]"+h+", [role=listbox]"+h);if(i.length){var j=i.index(i.filter(":focus"));38==b.keyCode&&j>0&&j--,40==b.keyCode&&j').appendTo(document.body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.modal;a.fn.modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data("bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.modal.Constructor=b,a.fn.modal.noConflict=function(){return a.fn.modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());c.is("a")&&b.preventDefault(),e.modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(jQuery),+function(a){"use strict";var b=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};b.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},b.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},b.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},b.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show()},b.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},b.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){if(this.$element.trigger(b),b.isDefaultPrevented())return;var c=this,d=this.tip();this.setContent(),this.options.animation&&d.addClass("fade");var e="function"==typeof this.options.placement?this.options.placement.call(this,d[0],this.$element[0]):this.options.placement,f=/\s?auto?\s?/i,g=f.test(e);g&&(e=e.replace(f,"")||"top"),d.detach().css({top:0,left:0,display:"block"}).addClass(e),this.options.container?d.appendTo(this.options.container):d.insertAfter(this.$element);var h=this.getPosition(),i=d[0].offsetWidth,j=d[0].offsetHeight;if(g){var k=this.$element.parent(),l=e,m=document.documentElement.scrollTop||document.body.scrollTop,n="body"==this.options.container?window.innerWidth:k.outerWidth(),o="body"==this.options.container?window.innerHeight:k.outerHeight(),p="body"==this.options.container?0:k.offset().left;e="bottom"==e&&h.top+h.height+j-m>o?"top":"top"==e&&h.top-m-j<0?"bottom":"right"==e&&h.right+i>n?"left":"left"==e&&h.left-i'}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;(e||"destroy"!=c)&&(e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]())})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(a(c).is("body")?window:c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);{var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})}},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);if(g&&b<=e[0])return g!=(a=f[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(b.RESET).addClass("affix");var a=this.$window.scrollTop(),c=this.$element.offset();return this.pinnedOffset=c.top-a},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"top"==this.affixed&&(e.top+=d),"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top(this.$element)),"function"==typeof h&&(h=f.bottom(this.$element));var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;if(this.affixed!==i){this.unpin&&this.$element.css("top","");var j="affix"+(i?"-"+i:""),k=a.Event(j+".bs.affix");this.$element.trigger(k),k.isDefaultPrevented()||(this.affixed=i,this.unpin="bottom"==i?this.getPinnedOffset():null,this.$element.removeClass(b.RESET).addClass(j).trigger(a.Event(j.replace("affix","affixed"))),"bottom"==i&&this.$element.offset({top:c-h-this.$element.height()}))}}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(jQuery);
--------------------------------------------------------------------------------
/web/lib/rsvp-latest.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * @overview RSVP - a tiny implementation of Promises/A+.
3 | * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors
4 | * @license Licensed under MIT license
5 | * See https://raw.githubusercontent.com/tildeio/rsvp.js/master/LICENSE
6 | * @version 3.2.1
7 | */
8 |
9 | (function(){"use strict";function t(t){return"function"==typeof t||"object"==typeof t&&null!==t}function n(t){return"function"==typeof t}function r(t){return"object"==typeof t&&null!==t}function e(){}function o(t,n){for(var r=0,e=t.length;e>r;r++)if(t[r]===n)return r;return-1}function i(t){var n=t._promiseCallbacks;return n||(n=t._promiseCallbacks={}),n}function u(t,n){return"onerror"===t?void jt.on("error",n):2!==arguments.length?jt[t]:void(jt[t]=n)}function s(){setTimeout(function(){for(var t,n=0;ns;s++)R(o.resolve(t[s]),void 0,r,e);return i}function v(t,n){var r=this,e=new r(g,n);return O(e,t),e}function y(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function d(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function m(t,n){this._id=xt++,this._label=n,this._state=void 0,this._result=void 0,this._subscribers=[],jt.instrument&&St("created",this),g!==t&&("function"!=typeof t&&y(),this instanceof m?N(this,t):d())}function w(){return new TypeError("A promises callback cannot return that same promise.")}function g(){}function b(t){try{return t.then}catch(n){return Ut.error=n,Ut}}function E(t,n,r,e){try{t.call(n,r,e)}catch(o){return o}}function A(t,n,r){jt.async(function(t){var e=!1,o=E(r,n,function(r){e||(e=!0,n!==r?S(t,r,void 0):C(t,r))},function(n){e||(e=!0,O(t,n))},"Settle: "+(t._label||" unknown promise"));!e&&o&&(e=!0,O(t,o))},t)}function j(t,n){n._state===Dt?C(t,n._result):n._state===Kt?(n._onError=null,O(t,n._result)):R(n,void 0,function(r){n!==r?S(t,r,void 0):C(t,r)},function(n){O(t,n)})}function T(t,r,e){r.constructor===t.constructor&&e===kt&&constructor.resolve===Ct?j(t,r):e===Ut?O(t,Ut.error):void 0===e?C(t,r):n(e)?A(t,r,e):C(t,r)}function S(n,r){n===r?C(n,r):t(r)?T(n,r,b(r)):C(n,r)}function k(t){t._onError&&t._onError(t._result),I(t)}function C(t,n){t._state===Yt&&(t._result=n,t._state=Dt,0===t._subscribers.length?jt.instrument&&St("fulfilled",t):jt.async(I,t))}function O(t,n){t._state===Yt&&(t._state=Kt,t._result=n,jt.async(k,t))}function R(t,n,r,e){var o=t._subscribers,i=o.length;t._onError=null,o[i]=n,o[i+Dt]=r,o[i+Kt]=e,0===i&&t._state&&jt.async(I,t)}function I(t){var n=t._subscribers,r=t._state;if(jt.instrument&&St(r===Dt?"fulfilled":"rejected",t),0!==n.length){for(var e,o,i=t._result,u=0;ut;t+=2){var n=Xt[t],r=Xt[t+1];n(r),Xt[t]=void 0,Xt[t+1]=void 0}Wt=0}function $(){try{var t=require,n=t("vertx");return Ft=n.runOnLoop||n.runOnContext,F()}catch(r){return V()}}function z(t){var n={};return n.promise=new Nt(function(t,r){n.resolve=t,n.reject=r},t),n}function B(t,n){return Nt.all(t,n)}function H(t,n){return Nt.resolve(t,n).then(function(t){return B(t,n)})}function J(t,r,e){var o=gt(t)?B(t,e):H(t,e);return o.then(function(t){if(!n(r))throw new TypeError("You must pass a function as filter's second argument.");for(var o=t.length,i=new Array(o),u=0;o>u;u++)i[u]=r(t[u]);return B(i,e).then(function(n){for(var r=new Array(o),e=0,i=0;o>i;i++)n[i]&&(r[e]=t[i],e++);return r.length=e,r})})}function Q(t,n,r){this._superConstructor(t,n,!0,r)}function X(t,n,r){this._superConstructor(t,n,!1,r)}function Z(t,n){return new X(Nt,t,n).promise}function tt(t,n){return new nn(Nt,t,n).promise}function nt(t,r,e){return Nt.all(t,e).then(function(t){if(!n(r))throw new TypeError("You must pass a function as map's second argument.");for(var o=t.length,i=new Array(o),u=0;o>u;u++)i[u]=r(t[u]);return Nt.all(i,e)})}function rt(){this.value=void 0}function et(t){try{return t.then}catch(n){return sn.value=n,sn}}function ot(t,n,r){try{t.apply(n,r)}catch(e){return sn.value=e,sn}}function it(t,n){for(var r,e,o={},i=t.length,u=new Array(i),s=0;i>s;s++)u[s]=t[s];for(e=0;ee;e++)r[e-1]=t[e];return r}function st(t,n){return{then:function(r,e){return t.call(n,r,e)}}}function at(t,n){var r=function(){for(var r,e=this,o=arguments.length,i=new Array(o+1),u=!1,s=0;o>s;++s){if(r=arguments[s],!u){if(u=lt(r),u===an){var a=new Nt(g);return O(a,an.value),a}u&&u!==!0&&(r=st(u,r))}i[s]=r}var c=new Nt(g);return i[o]=function(t,r){t?O(c,t):void 0===n?S(c,r):n===!0?S(c,ut(arguments)):gt(n)?S(c,it(arguments,n)):S(c,r)},u?ft(c,i,t,e):ct(c,i,t,e)};return r.__proto__=t,r}function ct(t,n,r,e){var o=ot(r,e,n);return o===sn&&O(t,o.value),t}function ft(t,n,r,e){return Nt.all(n).then(function(n){var o=ot(r,e,n);return o===sn&&O(t,o.value),t})}function lt(t){return t&&"object"==typeof t?t.constructor===Nt?!0:et(t):!1}function ht(t,n){return Nt.race(t,n)}function pt(t,n){return Nt.reject(t,n)}function _t(t,n){return Nt.resolve(t,n)}function vt(t){throw setTimeout(function(){throw t}),t}function yt(t,n){jt.async(t,n)}function dt(){jt.on.apply(jt,arguments)}function mt(){jt.off.apply(jt,arguments)}var wt;wt=Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)};var gt=wt,bt=Date.now||function(){return(new Date).getTime()},Et=Object.create||function(t){if(arguments.length>1)throw new Error("Second argument not supported");if("object"!=typeof t)throw new TypeError("Argument must be an object");return e.prototype=t,new e},At={mixin:function(t){return t.on=this.on,t.off=this.off,t.trigger=this.trigger,t._promiseCallbacks=void 0,t},on:function(t,n){if("function"!=typeof n)throw new TypeError("Callback must be a function");var r,e=i(this);r=e[t],r||(r=e[t]=[]),-1===o(r,n)&&r.push(n)},off:function(t,n){var r,e,u=i(this);return n?(r=u[t],e=o(r,n),void(-1!==e&&r.splice(e,1))):void(u[t]=[])},trigger:function(t,n,r){var e,o,u=i(this);if(e=u[t])for(var s=0;se;e++)this._eachEntry(r[e],e)},h.prototype._settleMaybeThenable=function(t,n){var r=this._instanceConstructor,e=r.resolve;if(e===Ct){var o=b(t);if(o===kt&&t._state!==Yt)t._onError=null,this._settledAt(t._state,n,t._result);else if("function"!=typeof o)this._remaining--,this._result[n]=this._makeResult(Dt,n,t);else if(r===Nt){var i=new r(g);T(i,t,o),this._willSettleAt(i,n)}else this._willSettleAt(new r(function(n){n(t)}),n)}else this._willSettleAt(e(t),n)},h.prototype._eachEntry=function(t,n){r(t)?this._settleMaybeThenable(t,n):(this._remaining--,this._result[n]=this._makeResult(Dt,n,t))},h.prototype._settledAt=function(t,n,r){var e=this.promise;e._state===Yt&&(this._remaining--,this._abortOnReject&&t===Kt?O(e,r):this._result[n]=this._makeResult(t,n,r)),0===this._remaining&&C(e,this._result)},h.prototype._makeResult=function(t,n,r){return r},h.prototype._willSettleAt=function(t,n){var r=this;R(t,void 0,function(t){r._settledAt(Dt,n,t)},function(t){r._settledAt(Kt,n,t)})};var Rt=p,It=_,Mt=v,Pt="rsvp_"+bt()+"-",xt=0,Nt=m;m.cast=Ct,m.all=Rt,m.race=It,m.resolve=Ct,m.reject=Mt,m.prototype={constructor:m,_guidKey:Pt,_onError:function(t){var n=this;jt.after(function(){n._onError&&jt.trigger("error",t,n._label)})},then:kt,"catch":function(t,n){return this.then(void 0,t,n)},"finally":function(t,n){var r=this,e=r.constructor;return r.then(function(n){return e.resolve(t()).then(function(){return n})},function(n){return e.resolve(t()).then(function(){return e.reject(n)})},n)}};var Yt=void 0,Dt=1,Kt=2,Ut=new M,qt=new M;Y.prototype=Et(Ot.prototype),Y.prototype._superConstructor=Ot,Y.prototype._makeResult=l,Y.prototype._validationError=function(){return new Error("allSettled must be called with an array")};var Ft,Gt,Lt=D,Vt=K,Wt=0,$t=({}.toString,U),zt="undefined"!=typeof window?window:void 0,Bt=zt||{},Ht=Bt.MutationObserver||Bt.WebKitMutationObserver,Jt="undefined"==typeof self&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),Qt="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,Xt=new Array(1e3);Gt=Jt?q():Ht?G():Qt?L():void 0===zt&&"function"==typeof require?$():V();var Zt=z,tn=J,nn=Q;Q.prototype=Et(Ot.prototype),Q.prototype._superConstructor=Ot,Q.prototype._init=function(){this._result={}},Q.prototype._validateInput=function(t){return t&&"object"==typeof t},Q.prototype._validationError=function(){return new Error("Promise.hash must be called with an object")},Q.prototype._enumerate=function(){var t=this,n=t.promise,r=t._input,e=[];for(var o in r)n._state===Yt&&Object.prototype.hasOwnProperty.call(r,o)&&e.push({position:o,entry:r[o]});var i=e.length;t._remaining=i;for(var u,s=0;n._state===Yt&&i>s;s++)u=e[s],t._eachEntry(u.entry,u.position)},X.prototype=Et(nn.prototype),X.prototype._superConstructor=Ot,X.prototype._makeResult=l,X.prototype._validationError=function(){return new Error("hashSettled must be called with an object")};var rn,en=Z,on=tt,un=nt,sn=new rt,an=new rt,cn=at;if("object"==typeof self)rn=self;else{if("object"!=typeof global)throw new Error("no global: `self` or `global` found");rn=global}var fn=rn,ln=ht,hn=pt,pn=_t,_n=vt;jt.async=$t,jt.after=function(t){setTimeout(t,0)};if("undefined"!=typeof window&&"object"==typeof window.__PROMISE_INSTRUMENTATION__){var vn=window.__PROMISE_INSTRUMENTATION__;u("instrument",!0);for(var yn in vn)vn.hasOwnProperty(yn)&&dt(yn,vn[yn])}var dn={race:ln,Promise:Nt,allSettled:Lt,hash:on,hashSettled:en,denodeify:cn,on:dt,off:mt,map:un,filter:tn,resolve:pn,reject:hn,all:Vt,rethrow:_n,defer:Zt,EventTarget:At,configure:u,async:yt};"function"==typeof define&&define.amd?define(function(){return dn}):"undefined"!=typeof module&&module.exports?module.exports=dn:"undefined"!=typeof fn&&(fn.RSVP=dn)}).call(this);
--------------------------------------------------------------------------------
/web/lib/underscore-min.js:
--------------------------------------------------------------------------------
1 | (function(){var n=this,t=n._,r={},e=Array.prototype,u=Object.prototype,i=Function.prototype,a=e.push,o=e.slice,c=e.concat,l=u.toString,f=u.hasOwnProperty,s=e.forEach,p=e.map,v=e.reduce,h=e.reduceRight,g=e.filter,d=e.every,m=e.some,y=e.indexOf,b=e.lastIndexOf,x=Array.isArray,_=Object.keys,j=i.bind,w=function(n){return n instanceof w?n:this instanceof w?(this._wrapped=n,void 0):new w(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=w),exports._=w):n._=w,w.VERSION="1.4.3";var A=w.each=w.forEach=function(n,t,e){if(null!=n)if(s&&n.forEach===s)n.forEach(t,e);else if(n.length===+n.length){for(var u=0,i=n.length;i>u;u++)if(t.call(e,n[u],u,n)===r)return}else for(var a in n)if(w.has(n,a)&&t.call(e,n[a],a,n)===r)return};w.map=w.collect=function(n,t,r){var e=[];return null==n?e:p&&n.map===p?n.map(t,r):(A(n,function(n,u,i){e[e.length]=t.call(r,n,u,i)}),e)};var O="Reduce of empty array with no initial value";w.reduce=w.foldl=w.inject=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),v&&n.reduce===v)return e&&(t=w.bind(t,e)),u?n.reduce(t,r):n.reduce(t);if(A(n,function(n,i,a){u?r=t.call(e,r,n,i,a):(r=n,u=!0)}),!u)throw new TypeError(O);return r},w.reduceRight=w.foldr=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),h&&n.reduceRight===h)return e&&(t=w.bind(t,e)),u?n.reduceRight(t,r):n.reduceRight(t);var i=n.length;if(i!==+i){var a=w.keys(n);i=a.length}if(A(n,function(o,c,l){c=a?a[--i]:--i,u?r=t.call(e,r,n[c],c,l):(r=n[c],u=!0)}),!u)throw new TypeError(O);return r},w.find=w.detect=function(n,t,r){var e;return E(n,function(n,u,i){return t.call(r,n,u,i)?(e=n,!0):void 0}),e},w.filter=w.select=function(n,t,r){var e=[];return null==n?e:g&&n.filter===g?n.filter(t,r):(A(n,function(n,u,i){t.call(r,n,u,i)&&(e[e.length]=n)}),e)},w.reject=function(n,t,r){return w.filter(n,function(n,e,u){return!t.call(r,n,e,u)},r)},w.every=w.all=function(n,t,e){t||(t=w.identity);var u=!0;return null==n?u:d&&n.every===d?n.every(t,e):(A(n,function(n,i,a){return(u=u&&t.call(e,n,i,a))?void 0:r}),!!u)};var E=w.some=w.any=function(n,t,e){t||(t=w.identity);var u=!1;return null==n?u:m&&n.some===m?n.some(t,e):(A(n,function(n,i,a){return u||(u=t.call(e,n,i,a))?r:void 0}),!!u)};w.contains=w.include=function(n,t){return null==n?!1:y&&n.indexOf===y?-1!=n.indexOf(t):E(n,function(n){return n===t})},w.invoke=function(n,t){var r=o.call(arguments,2);return w.map(n,function(n){return(w.isFunction(t)?t:n[t]).apply(n,r)})},w.pluck=function(n,t){return w.map(n,function(n){return n[t]})},w.where=function(n,t){return w.isEmpty(t)?[]:w.filter(n,function(n){for(var r in t)if(t[r]!==n[r])return!1;return!0})},w.max=function(n,t,r){if(!t&&w.isArray(n)&&n[0]===+n[0]&&65535>n.length)return Math.max.apply(Math,n);if(!t&&w.isEmpty(n))return-1/0;var e={computed:-1/0,value:-1/0};return A(n,function(n,u,i){var a=t?t.call(r,n,u,i):n;a>=e.computed&&(e={value:n,computed:a})}),e.value},w.min=function(n,t,r){if(!t&&w.isArray(n)&&n[0]===+n[0]&&65535>n.length)return Math.min.apply(Math,n);if(!t&&w.isEmpty(n))return 1/0;var e={computed:1/0,value:1/0};return A(n,function(n,u,i){var a=t?t.call(r,n,u,i):n;e.computed>a&&(e={value:n,computed:a})}),e.value},w.shuffle=function(n){var t,r=0,e=[];return A(n,function(n){t=w.random(r++),e[r-1]=e[t],e[t]=n}),e};var F=function(n){return w.isFunction(n)?n:function(t){return t[n]}};w.sortBy=function(n,t,r){var e=F(t);return w.pluck(w.map(n,function(n,t,u){return{value:n,index:t,criteria:e.call(r,n,t,u)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||void 0===r)return 1;if(e>r||void 0===e)return-1}return n.indexi;){var o=i+a>>>1;u>r.call(e,n[o])?i=o+1:a=o}return i},w.toArray=function(n){return n?w.isArray(n)?o.call(n):n.length===+n.length?w.map(n,w.identity):w.values(n):[]},w.size=function(n){return null==n?0:n.length===+n.length?n.length:w.keys(n).length},w.first=w.head=w.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:o.call(n,0,t)},w.initial=function(n,t,r){return o.call(n,0,n.length-(null==t||r?1:t))},w.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:o.call(n,Math.max(n.length-t,0))},w.rest=w.tail=w.drop=function(n,t,r){return o.call(n,null==t||r?1:t)},w.compact=function(n){return w.filter(n,w.identity)};var R=function(n,t,r){return A(n,function(n){w.isArray(n)?t?a.apply(r,n):R(n,t,r):r.push(n)}),r};w.flatten=function(n,t){return R(n,t,[])},w.without=function(n){return w.difference(n,o.call(arguments,1))},w.uniq=w.unique=function(n,t,r,e){w.isFunction(t)&&(e=r,r=t,t=!1);var u=r?w.map(n,r,e):n,i=[],a=[];return A(u,function(r,e){(t?e&&a[a.length-1]===r:w.contains(a,r))||(a.push(r),i.push(n[e]))}),i},w.union=function(){return w.uniq(c.apply(e,arguments))},w.intersection=function(n){var t=o.call(arguments,1);return w.filter(w.uniq(n),function(n){return w.every(t,function(t){return w.indexOf(t,n)>=0})})},w.difference=function(n){var t=c.apply(e,o.call(arguments,1));return w.filter(n,function(n){return!w.contains(t,n)})},w.zip=function(){for(var n=o.call(arguments),t=w.max(w.pluck(n,"length")),r=Array(t),e=0;t>e;e++)r[e]=w.pluck(n,""+e);return r},w.object=function(n,t){if(null==n)return{};for(var r={},e=0,u=n.length;u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},w.indexOf=function(n,t,r){if(null==n)return-1;var e=0,u=n.length;if(r){if("number"!=typeof r)return e=w.sortedIndex(n,t),n[e]===t?e:-1;e=0>r?Math.max(0,u+r):r}if(y&&n.indexOf===y)return n.indexOf(t,r);for(;u>e;e++)if(n[e]===t)return e;return-1},w.lastIndexOf=function(n,t,r){if(null==n)return-1;var e=null!=r;if(b&&n.lastIndexOf===b)return e?n.lastIndexOf(t,r):n.lastIndexOf(t);for(var u=e?r:n.length;u--;)if(n[u]===t)return u;return-1},w.range=function(n,t,r){1>=arguments.length&&(t=n||0,n=0),r=arguments[2]||1;for(var e=Math.max(Math.ceil((t-n)/r),0),u=0,i=Array(e);e>u;)i[u++]=n,n+=r;return i};var I=function(){};w.bind=function(n,t){var r,e;if(n.bind===j&&j)return j.apply(n,o.call(arguments,1));if(!w.isFunction(n))throw new TypeError;return r=o.call(arguments,2),e=function(){if(!(this instanceof e))return n.apply(t,r.concat(o.call(arguments)));I.prototype=n.prototype;var u=new I;I.prototype=null;var i=n.apply(u,r.concat(o.call(arguments)));return Object(i)===i?i:u}},w.bindAll=function(n){var t=o.call(arguments,1);return 0==t.length&&(t=w.functions(n)),A(t,function(t){n[t]=w.bind(n[t],n)}),n},w.memoize=function(n,t){var r={};return t||(t=w.identity),function(){var e=t.apply(this,arguments);return w.has(r,e)?r[e]:r[e]=n.apply(this,arguments)}},w.delay=function(n,t){var r=o.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},w.defer=function(n){return w.delay.apply(w,[n,1].concat(o.call(arguments,1)))},w.throttle=function(n,t){var r,e,u,i,a=0,o=function(){a=new Date,u=null,i=n.apply(r,e)};return function(){var c=new Date,l=t-(c-a);return r=this,e=arguments,0>=l?(clearTimeout(u),u=null,a=c,i=n.apply(r,e)):u||(u=setTimeout(o,l)),i}},w.debounce=function(n,t,r){var e,u;return function(){var i=this,a=arguments,o=function(){e=null,r||(u=n.apply(i,a))},c=r&&!e;return clearTimeout(e),e=setTimeout(o,t),c&&(u=n.apply(i,a)),u}},w.once=function(n){var t,r=!1;return function(){return r?t:(r=!0,t=n.apply(this,arguments),n=null,t)}},w.wrap=function(n,t){return function(){var r=[n];return a.apply(r,arguments),t.apply(this,r)}},w.compose=function(){var n=arguments;return function(){for(var t=arguments,r=n.length-1;r>=0;r--)t=[n[r].apply(this,t)];return t[0]}},w.after=function(n,t){return 0>=n?t():function(){return 1>--n?t.apply(this,arguments):void 0}},w.keys=_||function(n){if(n!==Object(n))throw new TypeError("Invalid object");var t=[];for(var r in n)w.has(n,r)&&(t[t.length]=r);return t},w.values=function(n){var t=[];for(var r in n)w.has(n,r)&&t.push(n[r]);return t},w.pairs=function(n){var t=[];for(var r in n)w.has(n,r)&&t.push([r,n[r]]);return t},w.invert=function(n){var t={};for(var r in n)w.has(n,r)&&(t[n[r]]=r);return t},w.functions=w.methods=function(n){var t=[];for(var r in n)w.isFunction(n[r])&&t.push(r);return t.sort()},w.extend=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]=t[r]}),n},w.pick=function(n){var t={},r=c.apply(e,o.call(arguments,1));return A(r,function(r){r in n&&(t[r]=n[r])}),t},w.omit=function(n){var t={},r=c.apply(e,o.call(arguments,1));for(var u in n)w.contains(r,u)||(t[u]=n[u]);return t},w.defaults=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)null==n[r]&&(n[r]=t[r])}),n},w.clone=function(n){return w.isObject(n)?w.isArray(n)?n.slice():w.extend({},n):n},w.tap=function(n,t){return t(n),n};var S=function(n,t,r,e){if(n===t)return 0!==n||1/n==1/t;if(null==n||null==t)return n===t;n instanceof w&&(n=n._wrapped),t instanceof w&&(t=t._wrapped);var u=l.call(n);if(u!=l.call(t))return!1;switch(u){case"[object String]":return n==t+"";case"[object Number]":return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case"[object Date]":case"[object Boolean]":return+n==+t;case"[object RegExp]":return n.source==t.source&&n.global==t.global&&n.multiline==t.multiline&&n.ignoreCase==t.ignoreCase}if("object"!=typeof n||"object"!=typeof t)return!1;for(var i=r.length;i--;)if(r[i]==n)return e[i]==t;r.push(n),e.push(t);var a=0,o=!0;if("[object Array]"==u){if(a=n.length,o=a==t.length)for(;a--&&(o=S(n[a],t[a],r,e)););}else{var c=n.constructor,f=t.constructor;if(c!==f&&!(w.isFunction(c)&&c instanceof c&&w.isFunction(f)&&f instanceof f))return!1;for(var s in n)if(w.has(n,s)&&(a++,!(o=w.has(t,s)&&S(n[s],t[s],r,e))))break;if(o){for(s in t)if(w.has(t,s)&&!a--)break;o=!a}}return r.pop(),e.pop(),o};w.isEqual=function(n,t){return S(n,t,[],[])},w.isEmpty=function(n){if(null==n)return!0;if(w.isArray(n)||w.isString(n))return 0===n.length;for(var t in n)if(w.has(n,t))return!1;return!0},w.isElement=function(n){return!(!n||1!==n.nodeType)},w.isArray=x||function(n){return"[object Array]"==l.call(n)},w.isObject=function(n){return n===Object(n)},A(["Arguments","Function","String","Number","Date","RegExp"],function(n){w["is"+n]=function(t){return l.call(t)=="[object "+n+"]"}}),w.isArguments(arguments)||(w.isArguments=function(n){return!(!n||!w.has(n,"callee"))}),w.isFunction=function(n){return"function"==typeof n},w.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},w.isNaN=function(n){return w.isNumber(n)&&n!=+n},w.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"==l.call(n)},w.isNull=function(n){return null===n},w.isUndefined=function(n){return void 0===n},w.has=function(n,t){return f.call(n,t)},w.noConflict=function(){return n._=t,this},w.identity=function(n){return n},w.times=function(n,t,r){for(var e=Array(n),u=0;n>u;u++)e[u]=t.call(r,u);return e},w.random=function(n,t){return null==t&&(t=n,n=0),n+(0|Math.random()*(t-n+1))};var T={escape:{"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"}};T.unescape=w.invert(T.escape);var M={escape:RegExp("["+w.keys(T.escape).join("")+"]","g"),unescape:RegExp("("+w.keys(T.unescape).join("|")+")","g")};w.each(["escape","unescape"],function(n){w[n]=function(t){return null==t?"":(""+t).replace(M[n],function(t){return T[n][t]})}}),w.result=function(n,t){if(null==n)return null;var r=n[t];return w.isFunction(r)?r.call(n):r},w.mixin=function(n){A(w.functions(n),function(t){var r=w[t]=n[t];w.prototype[t]=function(){var n=[this._wrapped];return a.apply(n,arguments),z.call(this,r.apply(w,n))}})};var N=0;w.uniqueId=function(n){var t=""+ ++N;return n?n+t:t},w.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var q=/(.)^/,B={"'":"'","\\":"\\","\r":"r","\n":"n"," ":"t","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\t|\u2028|\u2029/g;w.template=function(n,t,r){r=w.defaults({},r,w.templateSettings);var e=RegExp([(r.escape||q).source,(r.interpolate||q).source,(r.evaluate||q).source].join("|")+"|$","g"),u=0,i="__p+='";n.replace(e,function(t,r,e,a,o){return i+=n.slice(u,o).replace(D,function(n){return"\\"+B[n]}),r&&(i+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'"),e&&(i+="'+\n((__t=("+e+"))==null?'':__t)+\n'"),a&&(i+="';\n"+a+"\n__p+='"),u=o+t.length,t}),i+="';\n",r.variable||(i="with(obj||{}){\n"+i+"}\n"),i="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+i+"return __p;\n";try{var a=Function(r.variable||"obj","_",i)}catch(o){throw o.source=i,o}if(t)return a(t,w);var c=function(n){return a.call(this,n,w)};return c.source="function("+(r.variable||"obj")+"){\n"+i+"}",c},w.chain=function(n){return w(n).chain()};var z=function(n){return this._chain?w(n).chain():n};w.mixin(w),A(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=e[n];w.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!=n&&"splice"!=n||0!==r.length||delete r[0],z.call(this,r)}}),A(["concat","join","slice"],function(n){var t=e[n];w.prototype[n]=function(){return z.call(this,t.apply(this._wrapped,arguments))}}),w.extend(w.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}})}).call(this);
--------------------------------------------------------------------------------
/web/styles2.css:
--------------------------------------------------------------------------------
1 | /* Sticky footer styles */
2 | html {
3 | position: relative;
4 | min-height: 100%;
5 | }
6 |
7 | body {
8 | /* Margin bottom by footer height */
9 | margin-bottom: 28px;
10 | padding-top: 0;
11 | overflow-x: hidden;
12 |
13 | /*background:rgb(129,175,177) !important;*/
14 | }
15 |
16 | #navbar {
17 | height:70px !important;
18 | min-height:70px !important;
19 | }
20 |
21 | .sidebar {
22 | overflow-x: hidden;
23 | width:240px;
24 | position: absolute;
25 | top: 70px;
26 | bottom: 4px;
27 | left: 0;
28 | z-index: 1000;
29 | padding: 20px;
30 | overflow-y: scroll;
31 | /* Scrollable contents if viewport is shorter than content. */
32 | border-right: 1px solid #eee;
33 | font-size: 12px;
34 | line-height: 2.0em;
35 | }
36 |
37 | h3 {
38 | margin:0px !important;
39 | }
40 |
41 | .playlist-list li {
42 | cursor:pointer;
43 | }
44 |
45 | #track-table tr {
46 | cursor:pointer;
47 | }
48 |
49 | #main-wrapper {
50 | width:95%;
51 | }
52 |
53 | #the-track-list {
54 | height:600px;
55 | }
56 |
57 | .sidebar h4 {
58 | font-size:14px;
59 | text-transform:uppercase;
60 | padding:0px;
61 | margin-bottom:0px;
62 | margin-left:-10px;
63 | cursor:pointer;
64 | color:#666666;
65 | }
66 |
67 | #main-area {
68 | position:absolute;
69 | top: 75px;
70 | left:250px;
71 | bottom: 5px;
72 | right:15px;
73 | overflow-y: scroll;
74 | overflow-x: hidden;
75 | }
76 |
77 | .playlist-list {
78 | overflow-x: hidden;
79 | text-align: left;
80 | list-style:none;
81 | margin-left:0px;
82 | padding-left:0px;
83 | white-space:nowrap;
84 | }
85 |
86 | #footer {
87 | margin-top:10px;
88 | width: 90%;
89 | height: 18px;
90 | }
91 |
92 | #footer p {
93 | font-size:12px;
94 | }
95 |
96 | .sp-jumbotron-custom-inverse {
97 | /*background-image: url(images/background.jpg);*/
98 | }
99 |
100 | #main {
101 | background-image: url(images/organize.jpg);
102 | }
103 |
104 | #playlists {
105 | display:none;
106 | font-size:18px;
107 | }
108 |
109 | #loaded {
110 | display:none;
111 | }
112 |
113 | #loading {
114 | }
115 |
116 | #loading-header {
117 | width:100%;
118 | overflow:hidden;
119 | white-space:nowrap;
120 | }
121 |
122 | #single-playlist {
123 | display:none;
124 | }
125 |
126 |
127 | @media screen and (min-width: 768px) {
128 | .sp-jumbotron-custom {
129 | }
130 | }
131 |
132 |
133 | .h1 {
134 | margin-bottom: 42px; /* (@padding-base-vertical * 7) */
135 | }
136 |
137 | .top {
138 | margin-top:66px;
139 | position:relative;
140 | }
141 |
142 | img {
143 | margin: 0 auto;
144 | }
145 |
146 | h3 {
147 | font-weight: 600; /* @font-weight-semibold */
148 | margin-top: 12px;
149 | }
150 |
151 |
152 | p {
153 | margin-bottom: 18px; /* a little more breathing room between feature tiles in mobile
154 | view) */
155 | }
156 |
157 | @media screen and (min-width: 992px) {
158 | p {
159 | margin-bottom: 12px; /* reset to default */
160 | }
161 | }
162 |
163 | #info {
164 | color:white;
165 | margin-top:20px;
166 | font-size:24px;
167 | }
168 |
169 | #oldinfo {
170 | font-size:18px;
171 | height:32px;
172 | text-align:left;
173 | }
174 |
175 | #linfo {
176 | font-size:18px;
177 | height:32px;
178 | text-align:left;
179 | }
180 |
181 | #playlist-title {
182 | text-transform:capitalize;
183 | margin-bottom:0px;
184 | }
185 |
186 | #playlist-sub-title {
187 | margin-bottom:10px;
188 | }
189 |
190 | #song-table tbody tr.selected {
191 | background-color:#81b71a;
192 | }
193 |
194 | .selected {
195 | background-color:#C3F0C8;
196 | }
197 |
198 | #song-table th {
199 | font-size:14px !important;
200 | }
201 |
202 | #song-table td {
203 | font-size:10px !important;
204 | }
205 |
206 | .nav-bar {
207 | height:72px !important;
208 | min-height:72px !important;
209 | }
210 |
211 | .fine-print {
212 | margin-bottom: 30px; /* (@padding-base-vertical * 5) */
213 | }
214 |
215 | .go {
216 | margin-bottom:20px;
217 | }
218 |
219 | .playable:hover {
220 | color:#2ebd59;
221 | }
222 |
223 | .playing {
224 | color:#2ebd59;
225 | font-weight:bolder;
226 | }
227 |
228 | #save-button {
229 | margin-right:20px;
230 | font-size:24px;
231 | cursor:pointer;
232 | }
233 |
234 |
235 | #ttext {
236 | margin-top:20px;
237 | margin-bottom:30px;
238 | width: 80%;
239 | margin-left:auto;
240 | margin-right:auto;
241 |
242 | }
243 |
244 | #ttitle {
245 | color:white;
246 | }
247 |
248 | #jumbo-dialog {
249 | color:white;
250 | background: rgba(50,50,50, 0.3);
251 | border-radius:15px;
252 | }
253 |
254 |
255 | .hoverable {
256 | cursor: pointer;
257 | }
258 |
259 | #playlist-list {
260 | text-align: left
261 | }
262 | #playlist-list th {
263 | font-weight: bold
264 | }
265 |
266 | #min-bpm,#max-bpm {
267 | width:100px;
268 | }
269 |
270 | /* Loading spinner based on following stackoverflow answer:
271 | http://stackoverflow.com/questions/15982233/spinner-for-twitter-bootstrap-btn
272 | http://jsfiddle.net/oshybystyi/v04ag5ch/4/ */
273 |
274 | .has-spinner .fa-spinner {
275 | opacity: 0;
276 | max-width: 0;
277 |
278 | -webkit-transition: opacity 0.25s, max-width 0.45s;
279 | -moz-transition: opacity 0.25s, max-width 0.45s;
280 | -o-transition: opacity 0.25s, max-width 0.45s;
281 | transition: opacity 0.25s, max-width 0.45s; /* Duration fixed since we animate additional hidden width */
282 | }
283 |
284 | .has-spinner.active {
285 | cursor:progress;
286 | }
287 |
288 | .has-spinner.active .fa-spinner {
289 | opacity: 1;
290 | max-width: 50px; /* More than it will ever come, notice that this affects on animation duration */
291 | }
292 |
293 | #tiny-track {
294 | font-size:10px;
295 | height:10px;
296 | margin-bottom:8px;
297 | }
298 |
299 | .stats {
300 | font-size:8px;
301 | margin-left:6px;
302 | }
303 |
304 | #uri-prompt {
305 | margin-top:20px;
306 | margin-left:auto;
307 | margin-right:auto;
308 | width:100%;
309 | padding-bottom:40px;
310 | color:#ffffff;
311 | font-size:24px;
312 | display:none;
313 | }
314 |
315 | #uri-go {
316 | }
317 |
318 | #uri-text {
319 | height:44px;
320 | }
321 |
322 | .work {
323 | display:none;
324 | }
325 |
326 | .err-txt {
327 | height:32px;
328 | }
329 |
330 | #favs {
331 | display:none;
332 | }
333 |
334 | .fav-text {
335 | text-transform:capitalize;
336 | font-weight:bolder;
337 | }
338 |
339 | .loading-text {
340 | margin:20px;
341 | }
342 |
343 | #what-label {
344 | text-align:left;
345 | color:#EEEEEE;
346 | font-size:28px;
347 |
348 | }
349 |
350 | #the-plots {
351 | }
352 |
353 | #the-plot {
354 | margin-top:20px;
355 | }
356 |
357 | #plot-controls {
358 | margin-top:5px;
359 | margin-left:10px;
360 | }
361 | #plot-controls label {
362 | font-weight:normal;
363 | }
364 |
365 |
366 | #plot-buttons {
367 | margin-top:20px;
368 | }
369 |
370 | .nbtn {
371 | font-size: 10px;
372 | line-height: 1.5;
373 | border-radius: 5px;
374 | padding: 6px 6px 6px;
375 | transition: background-color .15s ease,border-color .15s ease,color .15s
376 | ease;
377 | border-width: 0;
378 | letter-spacing: 1.2px;
379 | //min-width: 130px;
380 | //text-transform: uppercase;
381 | white-space: normal;
382 | }
383 |
384 | a#the-track-table_previous.paginate_button {
385 | padding-right:10px !important;
386 | margin-right:10px !important;
387 | }
388 |
389 | a#the-track-table_next.paginate_button {
390 | padding-right:10px !important;
391 | margin-right:10px !important;
392 |
393 | }
394 |
395 | .goog-custom-button {
396 | }
397 |
398 | #staging-playlist-name {
399 | font-size:32px;
400 | }
401 |
402 | .track-play {
403 | font-size:24px;
404 | visibility:hidden;
405 | }
406 |
407 | .google-visualization-table-tr-over .track-play {
408 | color: rgba(59, 153, 252, 1.0);
409 | visibility:visible;
410 | }
411 |
412 | .track-select {
413 | text-align: center;
414 | transform:scale(1.5);
415 | }
416 |
417 | .google-visualization-table-table tr td .glyphicon-pause {
418 | visibility:visible;
419 | color: rgba(59, 153, 252, 1.0);
420 | }
421 |
422 | .axis-select {
423 | }
424 |
425 | .track-header-cell, .track-table-cell {
426 | font-size:10px;
427 | }
428 |
429 | #staging-empty {
430 | margin-top:20px;
431 | }
432 |
--------------------------------------------------------------------------------