{"version":3,"sources":["vendor/scripts/oneui.js","vendor/scripts/promise.js","node_modules/handlebars-brunch/dist/handlebars.runtime.js","node_modules/handlebars-brunch/ns.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5xCA;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACv8BA;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9zCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"public\\js\\vendor.js","sourcesContent":["/*\r\n *  Document   : app.js\r\n *  Author     : pixelcave\r\n *  Description: UI Framework Custom Functionality (available to all pages)\r\n *\r\n */\r\n\r\nvar App = function() {\r\n    // Helper variables - set in uiInit()\r\n    var $lHtml, $lBody, $lPage, $lSidebar, $lSidebarScroll, $lSideOverlay, $lSideOverlayScroll, $lHeader, $lMain, $lFooter;\r\n\r\n    /*\r\n     ********************************************************************************************\r\n     *\r\n     * BASE UI FUNCTIONALITY\r\n     *\r\n     * Functions which handle vital UI functionality such as main navigation and layout\r\n     * They are auto initialized in every page\r\n     *\r\n     *********************************************************************************************\r\n     */\r\n\r\n    // User Interface init\r\n    var uiInit = function() {\r\n        // Set variables\r\n        $lHtml              = jQuery('html');\r\n        $lBody              = jQuery('body');\r\n        $lPage              = jQuery('#page-container');\r\n        $lSidebar           = jQuery('#sidebar');\r\n        $lSidebarScroll     = jQuery('#sidebar-scroll');\r\n        $lSideOverlay       = jQuery('#side-overlay');\r\n        $lSideOverlayScroll = jQuery('#side-overlay-scroll');\r\n        $lHeader            = jQuery('#header-navbar');\r\n        $lMain              = jQuery('#main-container');\r\n        $lFooter            = jQuery('#page-footer');\r\n\r\n        // Initialize Tooltips\r\n        jQuery('[data-toggle=\"tooltip\"], .js-tooltip').tooltip({\r\n            container: 'body',\r\n            animation: false\r\n        });\r\n\r\n        // Initialize Popovers\r\n        jQuery('[data-toggle=\"popover\"], .js-popover').popover({\r\n            container: 'body',\r\n            animation: true,\r\n            trigger: 'hover'\r\n        });\r\n\r\n        // Initialize Tabs\r\n        jQuery('[data-toggle=\"tabs\"] a, .js-tabs a').click(function(e){\r\n            e.preventDefault();\r\n            jQuery(this).tab('show');\r\n        });\r\n\r\n        // Init form placeholder (for IE9)\r\n        jQuery('.form-control').placeholder();\r\n    };\r\n\r\n    // Layout functionality\r\n    var uiLayout = function() {\r\n        // Resizes #main-container min height (push footer to the bottom)\r\n        var $resizeTimeout;\r\n\r\n        if ($lMain.length) {\r\n            uiHandleMain();\r\n\r\n            jQuery(window).on('resize orientationchange', function(){\r\n                clearTimeout($resizeTimeout);\r\n\r\n                $resizeTimeout = setTimeout(function(){\r\n                    uiHandleMain();\r\n                }, 150);\r\n            });\r\n        }\r\n\r\n        // Init sidebar and side overlay custom scrolling\r\n        uiHandleScroll('init');\r\n\r\n        // Init transparent header functionality (solid on scroll - used in frontend)\r\n        if ($lPage.hasClass('header-navbar-fixed') && $lPage.hasClass('header-navbar-transparent')) {\r\n            jQuery(window).on('scroll', function(){\r\n                if (jQuery(this).scrollTop() > 20) {\r\n                    $lPage.addClass('header-navbar-scroll');\r\n                } else {\r\n                    $lPage.removeClass('header-navbar-scroll');\r\n                }\r\n            });\r\n        }\r\n\r\n        // Call layout API on button click\r\n        jQuery('[data-toggle=\"layout\"]').on('click', function(){\r\n            var $btn = jQuery(this);\r\n\r\n            uiLayoutApi($btn.data('action'));\r\n\r\n            if ($lHtml.hasClass('no-focus')) {\r\n                $btn.blur();\r\n            }\r\n        });\r\n    };\r\n\r\n    // Resizes #main-container to fill empty space if exists\r\n    var uiHandleMain = function() {\r\n        var $hWindow     = jQuery(window).height();\r\n        var $hHeader     = $lHeader.outerHeight();\r\n        var $hFooter     = $lFooter.outerHeight();\r\n\r\n        if ($lPage.hasClass('header-navbar-fixed')) {\r\n            $lMain.css('min-height', $hWindow - $hFooter);\r\n        } else {\r\n            $lMain.css('min-height', $hWindow - ($hHeader + $hFooter));\r\n        }\r\n    };\r\n\r\n    // Handles sidebar and side overlay custom scrolling functionality\r\n    var uiHandleScroll = function($mode) {\r\n        var $windowW = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\r\n\r\n        // Init scrolling\r\n        if ($mode === 'init') {\r\n            // Init scrolling only if required the first time\r\n            uiHandleScroll();\r\n\r\n            // Handle scrolling on resize or orientation change\r\n            var $sScrollTimeout;\r\n\r\n            jQuery(window).on('resize orientationchange', function(){\r\n                clearTimeout($sScrollTimeout);\r\n\r\n                $sScrollTimeout = setTimeout(function(){\r\n                    uiHandleScroll();\r\n                }, 150);\r\n            });\r\n        } else {\r\n            // If screen width is greater than 991 pixels and .side-scroll is added to #page-container\r\n            if ($windowW > 991 && $lPage.hasClass('side-scroll')) {\r\n                // Turn scroll lock off (sidebar and side overlay - slimScroll will take care of it)\r\n                jQuery($lSidebar).scrollLock('off');\r\n                jQuery($lSideOverlay).scrollLock('off');\r\n\r\n                // If sidebar scrolling does not exist init it..\r\n                if ($lSidebarScroll.length && (!$lSidebarScroll.parent('.slimScrollDiv').length)) {\r\n                    $lSidebarScroll.slimScroll({\r\n                        height: $lSidebar.outerHeight(),\r\n                        color: '#fff',\r\n                        size: '5px',\r\n                        opacity : .35,\r\n                        wheelStep : 15,\r\n                        distance : '2px',\r\n                        railVisible: false,\r\n                        railOpacity: 1\r\n                    });\r\n                }\r\n                else { // ..else resize scrolling height\r\n                    $lSidebarScroll\r\n                        .add($lSidebarScroll.parent())\r\n                        .css('height', $lSidebar.outerHeight());\r\n                }\r\n\r\n                // If side overlay scrolling does not exist init it..\r\n                if ($lSideOverlayScroll.length && (!$lSideOverlayScroll.parent('.slimScrollDiv').length)) {\r\n                    $lSideOverlayScroll.slimScroll({\r\n                        height: $lSideOverlay.outerHeight(),\r\n                        color: '#000',\r\n                        size: '5px',\r\n                        opacity : .35,\r\n                        wheelStep : 15,\r\n                        distance : '2px',\r\n                        railVisible: false,\r\n                        railOpacity: 1\r\n                    });\r\n                }\r\n                else { // ..else resize scrolling height\r\n                    $lSideOverlayScroll\r\n                        .add($lSideOverlayScroll.parent())\r\n                        .css('height', $lSideOverlay.outerHeight());\r\n                }\r\n            } else {\r\n                // Turn scroll lock on (sidebar and side overlay)\r\n                jQuery($lSidebar).scrollLock();\r\n                jQuery($lSideOverlay).scrollLock();\r\n\r\n                // If sidebar scrolling exists destroy it..\r\n                if ($lSidebarScroll.length && $lSidebarScroll.parent('.slimScrollDiv').length) {\r\n                    $lSidebarScroll\r\n                        .slimScroll({destroy: true});\r\n                    $lSidebarScroll\r\n                        .attr('style', '');\r\n                }\r\n\r\n                // If side overlay scrolling exists destroy it..\r\n                if ($lSideOverlayScroll.length && $lSideOverlayScroll.parent('.slimScrollDiv').length) {\r\n                    $lSideOverlayScroll\r\n                        .slimScroll({destroy: true});\r\n                    $lSideOverlayScroll\r\n                        .attr('style', '');\r\n                }\r\n            }\r\n        }\r\n    };\r\n\r\n    // Layout API\r\n    var uiLayoutApi = function($mode) {\r\n        var $windowW = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\r\n\r\n        // Mode selection\r\n        switch($mode) {\r\n            case 'sidebar_pos_toggle':\r\n                $lPage.toggleClass('sidebar-l sidebar-r');\r\n                break;\r\n            case 'sidebar_pos_left':\r\n                $lPage\r\n                    .removeClass('sidebar-r')\r\n                    .addClass('sidebar-l');\r\n                break;\r\n            case 'sidebar_pos_right':\r\n                $lPage\r\n                    .removeClass('sidebar-l')\r\n                    .addClass('sidebar-r');\r\n                break;\r\n            case 'sidebar_toggle':\r\n                if ($windowW > 991) {\r\n                    $lPage.toggleClass('sidebar-o');\r\n                } else {\r\n                    $lPage.toggleClass('sidebar-o-xs');\r\n                }\r\n                break;\r\n            case 'sidebar_open':\r\n                if ($windowW > 991) {\r\n                    $lPage.addClass('sidebar-o');\r\n                } else {\r\n                    $lPage.addClass('sidebar-o-xs');\r\n                }\r\n                break;\r\n            case 'sidebar_close':\r\n                if ($windowW > 991) {\r\n                    $lPage.removeClass('sidebar-o');\r\n                } else {\r\n                    $lPage.removeClass('sidebar-o-xs');\r\n                }\r\n                break;\r\n            case 'sidebar_mini_toggle':\r\n                if ($windowW > 991) {\r\n                    $lPage.toggleClass('sidebar-mini');\r\n                }\r\n                break;\r\n            case 'sidebar_mini_on':\r\n                if ($windowW > 991) {\r\n                    $lPage.addClass('sidebar-mini');\r\n                }\r\n                break;\r\n            case 'sidebar_mini_off':\r\n                if ($windowW > 991) {\r\n                    $lPage.removeClass('sidebar-mini');\r\n                }\r\n                break;\r\n            case 'side_overlay_toggle':\r\n                $lPage.toggleClass('side-overlay-o');\r\n                break;\r\n            case 'side_overlay_open':\r\n                $lPage.addClass('side-overlay-o');\r\n                break;\r\n            case 'side_overlay_close':\r\n                $lPage.removeClass('side-overlay-o');\r\n                break;\r\n            case 'side_overlay_hoverable_toggle':\r\n                $lPage.toggleClass('side-overlay-hover');\r\n                break;\r\n            case 'side_overlay_hoverable_on':\r\n                $lPage.addClass('side-overlay-hover');\r\n                break;\r\n            case 'side_overlay_hoverable_off':\r\n                $lPage.removeClass('side-overlay-hover');\r\n                break;\r\n            case 'header_fixed_toggle':\r\n                $lPage.toggleClass('header-navbar-fixed');\r\n                break;\r\n            case 'header_fixed_on':\r\n                $lPage.addClass('header-navbar-fixed');\r\n                break;\r\n            case 'header_fixed_off':\r\n                $lPage.removeClass('header-navbar-fixed');\r\n                break;\r\n            case 'side_scroll_toggle':\r\n                $lPage.toggleClass('side-scroll');\r\n                uiHandleScroll();\r\n                break;\r\n            case 'side_scroll_on':\r\n                $lPage.addClass('side-scroll');\r\n                uiHandleScroll();\r\n                break;\r\n            case 'side_scroll_off':\r\n                $lPage.removeClass('side-scroll');\r\n                uiHandleScroll();\r\n                break;\r\n            default:\r\n                return false;\r\n        }\r\n    };\r\n\r\n    // Main navigation functionality\r\n    var uiNav = function() {\r\n        // When a submenu link is clicked\r\n        jQuery('[data-toggle=\"nav-submenu\"]').on('click', function(e){\r\n            // Get link\r\n            var $link = jQuery(this);\r\n\r\n            // Get link's parent\r\n            var $parentLi = $link.parent('li');\r\n\r\n            if ($parentLi.hasClass('open')) { // If submenu is open, close it..\r\n                $parentLi.removeClass('open');\r\n            } else { // .. else if submenu is closed, close all other (same level) submenus first before open it\r\n                $link\r\n                    .closest('ul')\r\n                    .find('> li')\r\n                    .removeClass('open');\r\n\r\n                $parentLi\r\n                    .addClass('open');\r\n            }\r\n\r\n            // Remove focus from submenu link\r\n            if ($lHtml.hasClass('no-focus')) {\r\n                $link.blur();\r\n            }\r\n\r\n            return false;\r\n        });\r\n    };\r\n\r\n    // Blocks options functionality\r\n    var uiBlocks = function() {\r\n        // Init default icons fullscreen and content toggle buttons\r\n        uiBlocksApi(false, 'init');\r\n\r\n        // Call blocks API on option button click\r\n        jQuery('[data-toggle=\"block-option\"]').on('click', function(){\r\n            uiBlocksApi(jQuery(this).closest('.block'), jQuery(this).data('action'));\r\n        });\r\n    };\r\n\r\n    // Blocks API\r\n    var uiBlocksApi = function($block, $mode) {\r\n        // Set default icons for fullscreen and content toggle buttons\r\n        var $iconFullscreen         = 'si si-size-fullscreen';\r\n        var $iconFullscreenActive   = 'si si-size-actual';\r\n        var $iconContent            = 'si si-arrow-up';\r\n        var $iconContentActive      = 'si si-arrow-down';\r\n\r\n        if ($mode === 'init') {\r\n            // Auto add the default toggle icons to fullscreen and content toggle buttons\r\n            jQuery('[data-toggle=\"block-option\"][data-action=\"fullscreen_toggle\"]').each(function(){\r\n                var $this = jQuery(this);\r\n\r\n                $this.html('<i class=\"' + (jQuery(this).closest('.block').hasClass('block-opt-fullscreen') ? $iconFullscreenActive : $iconFullscreen) + '\"></i>');\r\n            });\r\n\r\n            jQuery('[data-toggle=\"block-option\"][data-action=\"content_toggle\"]').each(function(){\r\n                var $this = jQuery(this);\r\n\r\n                $this.html('<i class=\"' + ($this.closest('.block').hasClass('block-opt-hidden') ? $iconContentActive : $iconContent) + '\"></i>');\r\n            });\r\n        } else {\r\n            // Get block element\r\n            var $elBlock = ($block instanceof jQuery) ? $block : jQuery($block);\r\n\r\n            // If element exists, procceed with blocks functionality\r\n            if ($elBlock.length) {\r\n                // Get block option buttons if exist (need them to update their icons)\r\n                var $btnFullscreen  = jQuery('[data-toggle=\"block-option\"][data-action=\"fullscreen_toggle\"]', $elBlock);\r\n                var $btnToggle      = jQuery('[data-toggle=\"block-option\"][data-action=\"content_toggle\"]', $elBlock);\r\n\r\n                // Mode selection\r\n                switch($mode) {\r\n                    case 'fullscreen_toggle':\r\n                        $elBlock.toggleClass('block-opt-fullscreen');\r\n\r\n                        // Enable/disable scroll lock to block\r\n                        $elBlock.hasClass('block-opt-fullscreen') ? jQuery($elBlock).scrollLock() : jQuery($elBlock).scrollLock('off');\r\n\r\n                        // Update block option icon\r\n                        if ($btnFullscreen.length) {\r\n                            if ($elBlock.hasClass('block-opt-fullscreen')) {\r\n                                jQuery('i', $btnFullscreen)\r\n                                    .removeClass($iconFullscreen)\r\n                                    .addClass($iconFullscreenActive);\r\n                            } else {\r\n                                jQuery('i', $btnFullscreen)\r\n                                    .removeClass($iconFullscreenActive)\r\n                                    .addClass($iconFullscreen);\r\n                            }\r\n                        }\r\n                        break;\r\n                    case 'fullscreen_on':\r\n                        $elBlock.addClass('block-opt-fullscreen');\r\n\r\n                        // Enable scroll lock to block\r\n                        jQuery($elBlock).scrollLock();\r\n\r\n                        // Update block option icon\r\n                        if ($btnFullscreen.length) {\r\n                            jQuery('i', $btnFullscreen)\r\n                                .removeClass($iconFullscreen)\r\n                                .addClass($iconFullscreenActive);\r\n                        }\r\n                        break;\r\n                    case 'fullscreen_off':\r\n                        $elBlock.removeClass('block-opt-fullscreen');\r\n\r\n                        // Disable scroll lock to block\r\n                        jQuery($elBlock).scrollLock('off');\r\n\r\n                        // Update block option icon\r\n                        if ($btnFullscreen.length) {\r\n                            jQuery('i', $btnFullscreen)\r\n                                .removeClass($iconFullscreenActive)\r\n                                .addClass($iconFullscreen);\r\n                        }\r\n                        break;\r\n                    case 'content_toggle':\r\n                        $elBlock.toggleClass('block-opt-hidden');\r\n\r\n                        // Update block option icon\r\n                        if ($btnToggle.length) {\r\n                            if ($elBlock.hasClass('block-opt-hidden')) {\r\n                                jQuery('i', $btnToggle)\r\n                                    .removeClass($iconContent)\r\n                                    .addClass($iconContentActive);\r\n                            } else {\r\n                                jQuery('i', $btnToggle)\r\n                                    .removeClass($iconContentActive)\r\n                                    .addClass($iconContent);\r\n                            }\r\n                        }\r\n                        break;\r\n                    case 'content_hide':\r\n                        $elBlock.addClass('block-opt-hidden');\r\n\r\n                        // Update block option icon\r\n                        if ($btnToggle.length) {\r\n                            jQuery('i', $btnToggle)\r\n                                .removeClass($iconContent)\r\n                                .addClass($iconContentActive);\r\n                        }\r\n                        break;\r\n                    case 'content_show':\r\n                        $elBlock.removeClass('block-opt-hidden');\r\n\r\n                        // Update block option icon\r\n                        if ($btnToggle.length) {\r\n                            jQuery('i', $btnToggle)\r\n                                .removeClass($iconContentActive)\r\n                                .addClass($iconContent);\r\n                        }\r\n                        break;\r\n                    case 'refresh_toggle':\r\n                        $elBlock.toggleClass('block-opt-refresh');\r\n\r\n                        // Return block to normal state if the demostration mode is on in the refresh option button - data-action-mode=\"demo\"\r\n                        if (jQuery('[data-toggle=\"block-option\"][data-action=\"refresh_toggle\"][data-action-mode=\"demo\"]', $elBlock).length) {\r\n                            setTimeout(function(){\r\n                                $elBlock.removeClass('block-opt-refresh');\r\n                            }, 2000);\r\n                        }\r\n                        break;\r\n                    case 'state_loading':\r\n                        $elBlock.addClass('block-opt-refresh');\r\n                        break;\r\n                    case 'state_normal':\r\n                        $elBlock.removeClass('block-opt-refresh');\r\n                        break;\r\n                    case 'close':\r\n                        $elBlock.hide();\r\n                        break;\r\n                    case 'open':\r\n                        $elBlock.show();\r\n                        break;\r\n                    default:\r\n                        return false;\r\n                }\r\n            }\r\n        }\r\n    };\r\n\r\n    // Material inputs helper\r\n    var uiForms = function() {\r\n        jQuery('.form-material.floating > .form-control').each(function(){\r\n            var $input  = jQuery(this);\r\n            var $parent = $input.parent('.form-material');\r\n\r\n            if ($input.val()) {\r\n                $parent.addClass('open');\r\n            }\r\n\r\n            $input.on('change', function(){\r\n                if ($input.val()) {\r\n                    $parent.addClass('open');\r\n                } else {\r\n                    $parent.removeClass('open');\r\n                }\r\n            });\r\n        });\r\n    };\r\n\r\n    // Set active color themes functionality\r\n    var uiHandleTheme = function() {\r\n        var $cssTheme = jQuery('#css-theme');\r\n        var $cookies  = $lPage.hasClass('enable-cookies') ? true : false;\r\n\r\n        // If cookies are enabled\r\n        if ($cookies) {\r\n            var $theme  = Cookies.get('colorTheme') ? Cookies.get('colorTheme') : false;\r\n\r\n            // Update color theme\r\n            if ($theme) {\r\n                if ($theme === 'default') {\r\n                    if ($cssTheme.length) {\r\n                        $cssTheme.remove();\r\n                    }\r\n                } else {\r\n                    if ($cssTheme.length) {\r\n                        $cssTheme.attr('href', $theme);\r\n                    } else {\r\n                        jQuery('#css-main')\r\n                            .after('<link rel=\"stylesheet\" id=\"css-theme\" href=\"' + $theme + '\">');\r\n                    }\r\n                }\r\n            }\r\n\r\n            $cssTheme = jQuery('#css-theme');\r\n        }\r\n\r\n        // Set the active color theme link as active\r\n        jQuery('[data-toggle=\"theme\"][data-theme=\"' + ($cssTheme.length ? $cssTheme.attr('href') : 'default') + '\"]')\r\n            .parent('li')\r\n            .addClass('active');\r\n\r\n        // When a color theme link is clicked\r\n        jQuery('[data-toggle=\"theme\"]').on('click', function(){\r\n            var $this   = jQuery(this);\r\n            var $theme  = $this.data('theme');\r\n\r\n            // Set this color theme link as active\r\n            jQuery('[data-toggle=\"theme\"]')\r\n                .parent('li')\r\n                .removeClass('active');\r\n\r\n            jQuery('[data-toggle=\"theme\"][data-theme=\"' + $theme + '\"]')\r\n                .parent('li')\r\n                .addClass('active');\r\n\r\n            // Update color theme\r\n            if ($theme === 'default') {\r\n                if ($cssTheme.length) {\r\n                    $cssTheme.remove();\r\n                }\r\n            } else {\r\n                if ($cssTheme.length) {\r\n                    $cssTheme.attr('href', $theme);\r\n                } else {\r\n                    jQuery('#css-main')\r\n                        .after('<link rel=\"stylesheet\" id=\"css-theme\" href=\"' + $theme + '\">');\r\n                }\r\n            }\r\n\r\n            $cssTheme = jQuery('#css-theme');\r\n\r\n            // If cookies are enabled, save the new active color theme\r\n            if ($cookies) {\r\n                Cookies.set('colorTheme', $theme, { expires: 7 });\r\n            }\r\n        });\r\n    };\r\n\r\n    // Scroll to element animation helper\r\n    var uiScrollTo = function() {\r\n        jQuery('[data-toggle=\"scroll-to\"]').on('click', function(){\r\n            var $this   = jQuery(this);\r\n            var $target = $this.data('target');\r\n            var $speed  = $this.data('speed') ? $this.data('speed') : 1000;\r\n\r\n            jQuery('html, body').animate({\r\n                scrollTop: jQuery($target).offset().top\r\n            }, $speed);\r\n        });\r\n    };\r\n\r\n    // Toggle class helper\r\n    var uiToggleClass = function() {\r\n        jQuery('[data-toggle=\"class-toggle\"]').on('click', function(){\r\n            var $el = jQuery(this);\r\n\r\n            jQuery($el.data('target').toString()).toggleClass($el.data('class').toString());\r\n\r\n            if ($lHtml.hasClass('no-focus')) {\r\n                $el.blur();\r\n            }\r\n        });\r\n    };\r\n\r\n    // Add the correct copyright year\r\n    var uiYearCopy = function() {\r\n        var $date       = new Date();\r\n        var $yearCopy   = jQuery('.js-year-copy');\r\n\r\n        if ($date.getFullYear() === 2015) {\r\n            $yearCopy.html('2015');\r\n        } else {\r\n            $yearCopy.html('2015-' + $date.getFullYear().toString().substr(2,2));\r\n        }\r\n    };\r\n\r\n    /*\r\n     ********************************************************************************************\r\n     *\r\n     * UI HELPERS (ON DEMAND)\r\n     *\r\n     * Third party plugin inits or various custom user interface helpers to extend functionality\r\n     * They need to be called in a page to be initialized. They are included here to be easy to\r\n     * init them on demand on multiple pages (usually repeated init code in common components)\r\n     *\r\n     ********************************************************************************************\r\n     */\r\n\r\n    /*\r\n     * Print Page functionality\r\n     *\r\n     * App.initHelper('print-page');\r\n     *\r\n     */\r\n    var uiHelperPrint = function() {\r\n        // Store all #page-container classes\r\n        var $pageCls = $lPage.prop('class');\r\n\r\n        // Remove all classes from #page-container\r\n        $lPage.prop('class', '');\r\n\r\n        // Print the page\r\n        window.print();\r\n\r\n        // Restore all #page-container classes\r\n        $lPage.prop('class', $pageCls);\r\n    };\r\n\r\n    /*\r\n     * Custom Table functionality such as section toggling or checkable rows\r\n     *\r\n     * App.initHelper('table-tools');\r\n     *\r\n     */\r\n\r\n    // Table sections functionality\r\n    var uiHelperTableToolsSections = function(){\r\n        var $table      = jQuery('.js-table-sections');\r\n        var $tableRows  = jQuery('.js-table-sections-header > tr', $table);\r\n\r\n        // When a row is clicked in tbody.js-table-sections-header\r\n        $tableRows.click(function(e) {\r\n            var $row    = jQuery(this);\r\n            var $tbody  = $row.parent('tbody');\r\n\r\n            if (! $tbody.hasClass('open')) {\r\n                jQuery('tbody', $table).removeClass('open');\r\n            }\r\n\r\n            $tbody.toggleClass('open');\r\n        });\r\n    };\r\n\r\n    // Checkable table functionality\r\n    var uiHelperTableToolsCheckable = function() {\r\n        var $table = jQuery('.js-table-checkable');\r\n\r\n        // When a checkbox is clicked in thead\r\n        jQuery('thead input:checkbox', $table).click(function() {\r\n            var $checkedStatus = jQuery(this).prop('checked');\r\n\r\n            // Check or uncheck all checkboxes in tbody\r\n            jQuery('tbody input:checkbox', $table).each(function() {\r\n                var $checkbox = jQuery(this);\r\n\r\n                $checkbox.prop('checked', $checkedStatus);\r\n                uiHelperTableToolscheckRow($checkbox, $checkedStatus);\r\n            });\r\n        });\r\n\r\n        // When a checkbox is clicked in tbody\r\n        jQuery('tbody input:checkbox', $table).click(function() {\r\n            var $checkbox = jQuery(this);\r\n\r\n            uiHelperTableToolscheckRow($checkbox, $checkbox.prop('checked'));\r\n        });\r\n\r\n        // When a row is clicked in tbody\r\n        jQuery('tbody > tr', $table).click(function(e) {\r\n            if (e.target.type !== 'checkbox'\r\n                    && e.target.type !== 'button'\r\n                    && e.target.tagName.toLowerCase() !== 'a'\r\n                    && !jQuery(e.target).parent('label').length) {\r\n                var $checkbox       = jQuery('input:checkbox', this);\r\n                var $checkedStatus  = $checkbox.prop('checked');\r\n\r\n                $checkbox.prop('checked', ! $checkedStatus);\r\n                uiHelperTableToolscheckRow($checkbox, ! $checkedStatus);\r\n            }\r\n        });\r\n    };\r\n\r\n    // Checkable table functionality helper - Checks or unchecks table row\r\n    var uiHelperTableToolscheckRow = function($checkbox, $checkedStatus) {\r\n        if ($checkedStatus) {\r\n            $checkbox\r\n                .closest('tr')\r\n                .addClass('active');\r\n        } else {\r\n            $checkbox\r\n                .closest('tr')\r\n                .removeClass('active');\r\n        }\r\n    };\r\n\r\n    /*\r\n     * jQuery Appear, for more examples you can check out https://github.com/bas2k/jquery.appear\r\n     *\r\n     * App.initHelper('appear');\r\n     *\r\n     */\r\n    var uiHelperAppear = function(){\r\n        // Add a specific class on elements (when they become visible on scrolling)\r\n        jQuery('[data-toggle=\"appear\"]').each(function(){\r\n            var $windowW    = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\r\n            var $this       = jQuery(this);\r\n            var $class      = $this.data('class') ? $this.data('class') : 'animated fadeIn';\r\n            var $offset     = $this.data('offset') ? $this.data('offset') : 0;\r\n            var $timeout    = ($lHtml.hasClass('ie9') || $windowW < 992) ? 0 : ($this.data('timeout') ? $this.data('timeout') : 0);\r\n\r\n            $this.appear(function() {\r\n                setTimeout(function(){\r\n                    $this\r\n                        .removeClass('visibility-hidden')\r\n                        .addClass($class);\r\n                }, $timeout);\r\n            },{accY: $offset});\r\n        });\r\n    };\r\n\r\n    /*\r\n     * jQuery Appear + jQuery countTo, for more examples you can check out https://github.com/bas2k/jquery.appear and https://github.com/mhuggins/jquery-countTo\r\n     *\r\n     * App.initHelper('appear-countTo');\r\n     *\r\n     */\r\n    var uiHelperAppearCountTo = function(){\r\n        // Init counter functionality\r\n        jQuery('[data-toggle=\"countTo\"]').each(function(){\r\n            var $this       = jQuery(this);\r\n            var $after      = $this.data('after');\r\n            var $speed      = $this.data('speed') ? $this.data('speed') : 1500;\r\n            var $interval   = $this.data('interval') ? $this.data('interval') : 15;\r\n\r\n            $this.appear(function() {\r\n                $this.countTo({\r\n                    speed: $speed,\r\n                    refreshInterval: $interval,\r\n                    onComplete: function() {\r\n                        if($after) {\r\n                            $this.html($this.html() + $after);\r\n                        }\r\n                    }\r\n                });\r\n            });\r\n        });\r\n    };\r\n\r\n    /*\r\n     * jQuery SlimScroll, for more examples you can check out http://rocha.la/jQuery-slimScroll\r\n     *\r\n     * App.initHelper('slimscroll');\r\n     *\r\n     */\r\n    var uiHelperSlimscroll = function(){\r\n        // Init slimScroll functionality\r\n        jQuery('[data-toggle=\"slimscroll\"]').each(function(){\r\n            var $this       = jQuery(this);\r\n            var $height     = $this.data('height') ? $this.data('height') : '200px';\r\n            var $size       = $this.data('size') ? $this.data('size') : '5px';\r\n            var $position   = $this.data('position') ? $this.data('position') : 'right';\r\n            var $color      = $this.data('color') ? $this.data('color') : '#000';\r\n            var $avisible   = $this.data('always-visible') ? true : false;\r\n            var $rvisible   = $this.data('rail-visible') ? true : false;\r\n            var $rcolor     = $this.data('rail-color') ? $this.data('rail-color') : '#999';\r\n            var $ropacity   = $this.data('rail-opacity') ? $this.data('rail-opacity') : .3;\r\n\r\n            $this.slimScroll({\r\n                height: $height,\r\n                size: $size,\r\n                position: $position,\r\n                color: $color,\r\n                alwaysVisible: $avisible,\r\n                railVisible: $rvisible,\r\n                railColor: $rcolor,\r\n                railOpacity: $ropacity\r\n            });\r\n        });\r\n    };\r\n\r\n    /*\r\n     ********************************************************************************************\r\n     *\r\n     * All the following helpers require each plugin's resources (JS, CSS) to be included in order to work\r\n     *\r\n     ********************************************************************************************\r\n     */\r\n\r\n    /*\r\n     * Magnific Popup functionality, for more examples you can check out http://dimsemenov.com/plugins/magnific-popup/\r\n     *\r\n     * App.initHelper('magnific-popup');\r\n     *\r\n     */\r\n    var uiHelperMagnific = function(){\r\n        // Simple Gallery init\r\n        jQuery('.js-gallery').each(function(){\r\n            jQuery(this).magnificPopup({\r\n                delegate: 'a.img-link',\r\n                type: 'image',\r\n                gallery: {\r\n                    enabled: true\r\n                }\r\n            });\r\n        });\r\n\r\n        // Advanced Gallery init\r\n        jQuery('.js-gallery-advanced').each(function(){\r\n            jQuery(this).magnificPopup({\r\n                delegate: 'a.img-lightbox',\r\n                type: 'image',\r\n                gallery: {\r\n                    enabled: true\r\n                }\r\n            });\r\n        });\r\n    };\r\n\r\n    /*\r\n     * CKEditor init, for more examples you can check out http://ckeditor.com/\r\n     *\r\n     * App.initHelper('ckeditor');\r\n     *\r\n     */\r\n    var uiHelperCkeditor = function(){\r\n        // Disable auto init when contenteditable property is set to true\r\n        CKEDITOR.disableAutoInline = true;\r\n\r\n        // Init inline text editor\r\n        if (jQuery('#js-ckeditor-inline').length) {\r\n            CKEDITOR.inline('js-ckeditor-inline');\r\n        }\r\n\r\n        // Init full text editor\r\n        if (jQuery('#js-ckeditor').length) {\r\n            CKEDITOR.replace('js-ckeditor');\r\n        }\r\n    };\r\n\r\n    /*\r\n     * Summernote init, for more examples you can check out http://summernote.org/\r\n     *\r\n     * App.initHelper('summernote');\r\n     *\r\n     */\r\n    var uiHelperSummernote = function(){\r\n        // Init text editor in air mode (inline)\r\n        jQuery('.js-summernote-air').summernote({\r\n            airMode: true\r\n          });\r\n\r\n        // Init full text editor\r\n        jQuery('.js-summernote').summernote({\r\n            height: 350,\r\n            minHeight: null,\r\n            maxHeight: null\r\n        });\r\n    };\r\n\r\n    /*\r\n     * Slick init, for more examples you can check out http://kenwheeler.github.io/slick/\r\n     *\r\n     * App.initHelper('slick');\r\n     *\r\n     */\r\n    var uiHelperSlick = function(){\r\n        // Get each slider element (with .js-slider class)\r\n        jQuery('.js-slider').each(function(){\r\n            var $slider = jQuery(this);\r\n\r\n            // Get each slider's init data\r\n            var $sliderArrows       = $slider.data('slider-arrows') ? $slider.data('slider-arrows') : false;\r\n            var $sliderDots         = $slider.data('slider-dots') ? $slider.data('slider-dots') : false;\r\n            var $sliderNum          = $slider.data('slider-num') ? $slider.data('slider-num') : 1;\r\n            var $sliderAuto         = $slider.data('slider-autoplay') ? $slider.data('slider-autoplay') : false;\r\n            var $sliderAutoSpeed    = $slider.data('slider-autoplay-speed') ? $slider.data('slider-autoplay-speed') : 3000;\r\n\r\n            // Init slick slider\r\n            $slider.slick({\r\n                arrows: $sliderArrows,\r\n                dots: $sliderDots,\r\n                slidesToShow: $sliderNum,\r\n                autoplay: $sliderAuto,\r\n                autoplaySpeed: $sliderAutoSpeed\r\n            });\r\n        });\r\n    };\r\n\r\n    /*\r\n     * Bootstrap Datepicker init, for more examples you can check out https://github.com/eternicode/bootstrap-datepicker\r\n     *\r\n     * App.initHelper('datepicker');\r\n     *\r\n     */\r\n    var uiHelperDatepicker = function(){\r\n        // Init datepicker (with .js-datepicker and .input-daterange class)\r\n        jQuery('.js-datepicker').add('.input-daterange').datepicker({\r\n            weekStart: 1,\r\n            autoclose: true,\r\n            todayHighlight: true\r\n        });\r\n    };\r\n\r\n    /*\r\n     * Bootstrap Colorpicker init, for more examples you can check out http://mjolnic.com/bootstrap-colorpicker/\r\n     *\r\n     * App.initHelper('colorpicker');\r\n     *\r\n     */\r\n    var uiHelperColorpicker = function(){\r\n        // Get each colorpicker element (with .js-colorpicker class)\r\n        jQuery('.js-colorpicker').each(function(){\r\n            var $colorpicker = jQuery(this);\r\n\r\n            // Get each colorpicker's init data\r\n            var $colorpickerMode    = $colorpicker.data('colorpicker-mode') ? $colorpicker.data('colorpicker-mode') : 'hex';\r\n            var $colorpickerinline  = $colorpicker.data('colorpicker-inline') ? true : false;\r\n\r\n            // Init colorpicker\r\n            $colorpicker.colorpicker({\r\n                'format': $colorpickerMode,\r\n                'inline': $colorpickerinline\r\n            });\r\n        });\r\n    };\r\n\r\n    /*\r\n     * Masked Inputs, for more examples you can check out http://digitalbush.com/projects/masked-input-plugin/\r\n     *\r\n     * App.initHelper('masked-inputs');\r\n     *\r\n     */\r\n    var uiHelperMaskedInputs = function(){\r\n        // Init Masked Inputs\r\n        // a - Represents an alpha character (A-Z,a-z)\r\n        // 9 - Represents a numeric character (0-9)\r\n        // * - Represents an alphanumeric character (A-Z,a-z,0-9)\r\n        jQuery('.js-masked-date').mask('99/99/9999');\r\n        jQuery('.js-masked-date-dash').mask('99-99-9999');\r\n        jQuery('.js-masked-phone').mask('(999) 999-9999');\r\n        jQuery('.js-masked-phone-ext').mask('(999) 999-9999? x99999');\r\n        jQuery('.js-masked-taxid').mask('99-9999999');\r\n        jQuery('.js-masked-ssn').mask('999-99-9999');\r\n        jQuery('.js-masked-pkey').mask('a*-999-a999');\r\n        jQuery('.js-masked-time').mask('99:99');\r\n    };\r\n\r\n    /*\r\n     * Tags Inputs, for more examples you can check out https://github.com/xoxco/jQuery-Tags-Input\r\n     *\r\n     * App.initHelper('tags-inputs');\r\n     *\r\n     */\r\n    var uiHelperTagsInputs = function(){\r\n        // Init Tags Inputs (with .js-tags-input class)\r\n        jQuery('.js-tags-input').tagsInput({\r\n            height: '36px',\r\n            width: '100%',\r\n            defaultText: 'Add tag',\r\n            removeWithBackspace: true,\r\n            delimiter: [',']\r\n        });\r\n    };\r\n\r\n    /*\r\n     * Select2, for more examples you can check out https://github.com/select2/select2\r\n     *\r\n     * App.initHelper('select2');\r\n     *\r\n     */\r\n    var uiHelperSelect2 = function(){\r\n        // Init Select2 (with .js-select2 class)\r\n        jQuery('.js-select2').select2();\r\n    };\r\n\r\n    /*\r\n     * Highlight.js, for more examples you can check out https://highlightjs.org/usage/\r\n     *\r\n     * App.initHelper('highlightjs');\r\n     *\r\n     */\r\n    var uiHelperHighlightjs = function(){\r\n        // Init Highlight.js\r\n        hljs.initHighlightingOnLoad();\r\n    };\r\n\r\n    /*\r\n     * Bootstrap Notify, for more examples you can check out http://bootstrap-growl.remabledesigns.com/\r\n     *\r\n     * App.initHelper('notify');\r\n     *\r\n     */\r\n    var uiHelperNotify = function(){\r\n        // Init notifications (with .js-notify class)\r\n        jQuery('.js-notify').on('click', function(){\r\n            var $notify         = jQuery(this);\r\n            var $notifyMsg      = $notify.data('notify-message');\r\n            var $notifyType     = $notify.data('notify-type') ? $notify.data('notify-type') : 'info';\r\n            var $notifyFrom     = $notify.data('notify-from') ? $notify.data('notify-from') : 'top';\r\n            var $notifyAlign    = $notify.data('notify-align') ? $notify.data('notify-align') : 'right';\r\n            var $notifyIcon     = $notify.data('notify-icon') ? $notify.data('notify-icon') : '';\r\n            var $notifyUrl      = $notify.data('notify-url') ? $notify.data('notify-url') : '';\r\n\r\n            jQuery.notify({\r\n                    icon: $notifyIcon,\r\n                    message: $notifyMsg,\r\n                    url: $notifyUrl\r\n                },\r\n                {\r\n                    element: 'body',\r\n                    type: $notifyType,\r\n                    allow_dismiss: true,\r\n                    newest_on_top: true,\r\n                    showProgressbar: false,\r\n                    placement: {\r\n                        from: $notifyFrom,\r\n                        align: $notifyAlign\r\n                    },\r\n                    offset: 20,\r\n                    spacing: 10,\r\n                    z_index: 1031,\r\n                    delay: 5000,\r\n                    timer: 1000,\r\n                    animate: {\r\n                        enter: 'animated fadeIn',\r\n                        exit: 'animated fadeOutDown'\r\n                    }\r\n                });\r\n        });\r\n    };\r\n\r\n    /*\r\n     * Draggable items with jQuery, for more examples you can check out https://jqueryui.com/sortable/\r\n     *\r\n     * App.initHelper('draggable-items');\r\n     *\r\n     */\r\n    var uiHelperDraggableItems = function(){\r\n        // Init draggable items functionality (with .js-draggable-items class)\r\n        jQuery('.js-draggable-items > .draggable-column').sortable({\r\n            connectWith: '.draggable-column',\r\n            items: '.draggable-item',\r\n            dropOnEmpty: true,\r\n            opacity: .75,\r\n            handle: '.draggable-handler',\r\n            placeholder: 'draggable-placeholder',\r\n            tolerance: 'pointer',\r\n            start: function(e, ui){\r\n                ui.placeholder.css({\r\n                    'height': ui.item.outerHeight(),\r\n                    'margin-bottom': ui.item.css('margin-bottom')\r\n                });\r\n            }\r\n        });\r\n    };\r\n\r\n    /*\r\n     * Easy Pie Chart, for more examples you can check out http://rendro.github.io/easy-pie-chart/\r\n     *\r\n     * App.initHelper('easy-pie-chart');\r\n     *\r\n     */\r\n    var uiHelperEasyPieChart = function(){\r\n        // Init Easy Pie Charts (with .js-pie-chart class)\r\n        jQuery('.js-pie-chart').easyPieChart({\r\n            barColor: jQuery(this).data('bar-color') ? jQuery(this).data('bar-color') : '#777777',\r\n            trackColor: jQuery(this).data('track-color') ? jQuery(this).data('track-color') : '#eeeeee',\r\n            lineWidth: jQuery(this).data('line-width') ? jQuery(this).data('line-width') : 3,\r\n            size: jQuery(this).data('size') ? jQuery(this).data('size') : '80',\r\n            animate: 750,\r\n            scaleColor: jQuery(this).data('scale-color') ? jQuery(this).data('scale-color') : false\r\n        });\r\n    };\r\n\r\n    /*\r\n     * Bootstrap Maxlength, for more examples you can check out https://github.com/mimo84/bootstrap-maxlength\r\n     *\r\n     * App.initHelper('maxlength');\r\n     *\r\n     */\r\n    var uiHelperMaxlength = function(){\r\n        // Init Bootstrap Maxlength (with .js-maxlength class)\r\n        jQuery('.js-maxlength').each(function(){\r\n            var $input = jQuery(this);\r\n\r\n            $input.maxlength({\r\n                alwaysShow: $input.data('always-show') ? true : false,\r\n                threshold: $input.data('threshold') ? $input.data('threshold') : 10,\r\n                warningClass: $input.data('warning-class') ? $input.data('warning-class') : 'label label-warning',\r\n                limitReachedClass: $input.data('limit-reached-class') ? $input.data('limit-reached-class') : 'label label-danger',\r\n                placement: $input.data('placement') ? $input.data('placement') : 'bottom',\r\n                preText: $input.data('pre-text') ? $input.data('pre-text') : '',\r\n                separator: $input.data('separator') ? $input.data('separator') : '/',\r\n                postText: $input.data('post-text') ? $input.data('post-text') : ''\r\n            });\r\n        });\r\n    };\r\n\r\n    /*\r\n     * Bootstrap Datetimepicker, for more examples you can check out https://github.com/Eonasdan/bootstrap-datetimepicker\r\n     *\r\n     * App.initHelper('datetimepicker');\r\n     *\r\n     */\r\n    var uiHelperDatetimepicker = function(){\r\n        // Init Bootstrap Datetimepicker (with .js-datetimepicker class)\r\n        jQuery('.js-datetimepicker').each(function(){\r\n            var $input = jQuery(this);\r\n\r\n            $input.datetimepicker({\r\n                format: $input.data('format') ? $input.data('format') : false,\r\n                useCurrent: $input.data('use-current') ? $input.data('use-current') : false,\r\n                locale: moment.locale('' + ($input.data('locale') ? $input.data('locale') : '') +''),\r\n                showTodayButton: $input.data('show-today-button') ? $input.data('show-today-button') : false,\r\n                showClear: $input.data('show-clear') ? $input.data('show-clear') : false,\r\n                showClose: $input.data('show-close') ? $input.data('show-close') : false,\r\n                sideBySide: $input.data('side-by-side') ? $input.data('side-by-side') : false,\r\n                inline: $input.data('inline') ? $input.data('inline') : false,\r\n                icons: {\r\n                    time: 'si si-clock',\r\n                    date: 'si si-calendar',\r\n                    up: 'si si-arrow-up',\r\n                    down: 'si si-arrow-down',\r\n                    previous: 'si si-arrow-left',\r\n                    next: 'si si-arrow-right',\r\n                    today: 'si si-size-actual',\r\n                    clear: 'si si-trash',\r\n                    close: 'si si-close'\r\n                }\r\n            });\r\n        });\r\n    };\r\n\r\n    /*\r\n     * Ion Range Slider, for more examples you can check out https://github.com/IonDen/ion.rangeSlider\r\n     *\r\n     * App.initHelper('rangeslider');\r\n     *\r\n     */\r\n    var uiHelperRangeslider = function(){\r\n        // Init Ion Range Slider (with .js-rangeslider class)\r\n        jQuery('.js-rangeslider').each(function(){\r\n            var $input = jQuery(this);\r\n\r\n            $input.ionRangeSlider();\r\n        });\r\n    };\r\n\r\n    return {\r\n        init: function($func) {\r\n            switch ($func) {\r\n                case 'uiInit':\r\n                    uiInit();\r\n                    break;\r\n                case 'uiLayout':\r\n                    uiLayout();\r\n                    break;\r\n                case 'uiNav':\r\n                    uiNav();\r\n                    break;\r\n                case 'uiBlocks':\r\n                    uiBlocks();\r\n                    break;\r\n                case 'uiForms':\r\n                    uiForms();\r\n                    break;\r\n                case 'uiHandleTheme':\r\n                    uiHandleTheme();\r\n                    break;\r\n                case 'uiToggleClass':\r\n                    uiToggleClass();\r\n                    break;\r\n                case 'uiScrollTo':\r\n                    uiScrollTo();\r\n                    break;\r\n                case 'uiYearCopy':\r\n                    uiYearCopy();\r\n                    break;\r\n                default:\r\n                    // Init all vital functions\r\n                    uiInit();\r\n                    uiLayout();\r\n                    uiNav();\r\n                    uiBlocks();\r\n                    uiForms();\r\n                    uiHandleTheme();\r\n                    uiToggleClass();\r\n                    uiScrollTo();\r\n                    uiYearCopy();\r\n            }\r\n        },\r\n        layout: function($mode) {\r\n            uiLayoutApi($mode);\r\n        },\r\n        blocks: function($block, $mode) {\r\n            uiBlocksApi($block, $mode);\r\n        },\r\n        initHelper: function($helper) {\r\n            switch ($helper) {\r\n                case 'print-page':\r\n                    uiHelperPrint();\r\n                    break;\r\n                case 'table-tools':\r\n                    uiHelperTableToolsSections();\r\n                    uiHelperTableToolsCheckable();\r\n                    break;\r\n                case 'appear':\r\n                    uiHelperAppear();\r\n                    break;\r\n                case 'appear-countTo':\r\n                    uiHelperAppearCountTo();\r\n                    break;\r\n                case 'slimscroll':\r\n                    uiHelperSlimscroll();\r\n                    break;\r\n                case 'magnific-popup':\r\n                    uiHelperMagnific();\r\n                    break;\r\n                case 'ckeditor':\r\n                    uiHelperCkeditor();\r\n                    break;\r\n                case 'summernote':\r\n                    uiHelperSummernote();\r\n                    break;\r\n                case 'slick':\r\n                    uiHelperSlick();\r\n                    break;\r\n                case 'datepicker':\r\n                    uiHelperDatepicker();\r\n                    break;\r\n                case 'colorpicker':\r\n                    uiHelperColorpicker();\r\n                    break;\r\n                case 'tags-inputs':\r\n                    uiHelperTagsInputs();\r\n                    break;\r\n                case 'masked-inputs':\r\n                    uiHelperMaskedInputs();\r\n                    break;\r\n                case 'select2':\r\n                    uiHelperSelect2();\r\n                    break;\r\n                case 'highlightjs':\r\n                    uiHelperHighlightjs();\r\n                    break;\r\n                case 'notify':\r\n                    uiHelperNotify();\r\n                    break;\r\n                case 'draggable-items':\r\n                    uiHelperDraggableItems();\r\n                    break;\r\n                case 'easy-pie-chart':\r\n                    uiHelperEasyPieChart();\r\n                    break;\r\n                case 'maxlength':\r\n                    uiHelperMaxlength();\r\n                    break;\r\n                case 'datetimepicker':\r\n                    uiHelperDatetimepicker();\r\n                    break;\r\n                case 'rangeslider':\r\n                    uiHelperRangeslider();\r\n                    break;\r\n                default:\r\n                    return false;\r\n            }\r\n        },\r\n        initHelpers: function($helpers) {\r\n            if ($helpers instanceof Array) {\r\n                for(var $index in $helpers) {\r\n                    App.initHelper($helpers[$index]);\r\n                }\r\n            } else {\r\n                App.initHelper($helpers);\r\n            }\r\n        }\r\n    };\r\n}();\r\n\r\n// Create an alias for App (you can use OneUI in your pages instead of App if you like)\r\nvar OneUI = App;","/*!\r\n * @overview es6-promise - a tiny implementation of Promises/A+.\r\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\r\n * @license   Licensed under MIT license\r\n *            See https://raw.githubusercontent.com/jakearchibald/es6-promise/master/LICENSE\r\n * @version   3.0.2\r\n */\r\n\r\n(function() {\r\n    \"use strict\";\r\n    function lib$es6$promise$utils$$objectOrFunction(x) {\r\n      return typeof x === 'function' || (typeof x === 'object' && x !== null);\r\n    }\r\n\r\n    function lib$es6$promise$utils$$isFunction(x) {\r\n      return typeof x === 'function';\r\n    }\r\n\r\n    function lib$es6$promise$utils$$isMaybeThenable(x) {\r\n      return typeof x === 'object' && x !== null;\r\n    }\r\n\r\n    var lib$es6$promise$utils$$_isArray;\r\n    if (!Array.isArray) {\r\n      lib$es6$promise$utils$$_isArray = function (x) {\r\n        return Object.prototype.toString.call(x) === '[object Array]';\r\n      };\r\n    } else {\r\n      lib$es6$promise$utils$$_isArray = Array.isArray;\r\n    }\r\n\r\n    var lib$es6$promise$utils$$isArray = lib$es6$promise$utils$$_isArray;\r\n    var lib$es6$promise$asap$$len = 0;\r\n    var lib$es6$promise$asap$$toString = {}.toString;\r\n    var lib$es6$promise$asap$$vertxNext;\r\n    var lib$es6$promise$asap$$customSchedulerFn;\r\n\r\n    var lib$es6$promise$asap$$asap = function asap(callback, arg) {\r\n      lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len] = callback;\r\n      lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len + 1] = arg;\r\n      lib$es6$promise$asap$$len += 2;\r\n      if (lib$es6$promise$asap$$len === 2) {\r\n        // If len is 2, that means that we need to schedule an async flush.\r\n        // If additional callbacks are queued before the queue is flushed, they\r\n        // will be processed by this flush that we are scheduling.\r\n        if (lib$es6$promise$asap$$customSchedulerFn) {\r\n          lib$es6$promise$asap$$customSchedulerFn(lib$es6$promise$asap$$flush);\r\n        } else {\r\n          lib$es6$promise$asap$$scheduleFlush();\r\n        }\r\n      }\r\n    }\r\n\r\n    function lib$es6$promise$asap$$setScheduler(scheduleFn) {\r\n      lib$es6$promise$asap$$customSchedulerFn = scheduleFn;\r\n    }\r\n\r\n    function lib$es6$promise$asap$$setAsap(asapFn) {\r\n      lib$es6$promise$asap$$asap = asapFn;\r\n    }\r\n\r\n    var lib$es6$promise$asap$$browserWindow = (typeof window !== 'undefined') ? window : undefined;\r\n    var lib$es6$promise$asap$$browserGlobal = lib$es6$promise$asap$$browserWindow || {};\r\n    var lib$es6$promise$asap$$BrowserMutationObserver = lib$es6$promise$asap$$browserGlobal.MutationObserver || lib$es6$promise$asap$$browserGlobal.WebKitMutationObserver;\r\n    var lib$es6$promise$asap$$isNode = typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\r\n\r\n    // test for web worker but not in IE10\r\n    var lib$es6$promise$asap$$isWorker = typeof Uint8ClampedArray !== 'undefined' &&\r\n      typeof importScripts !== 'undefined' &&\r\n      typeof MessageChannel !== 'undefined';\r\n\r\n    // node\r\n    function lib$es6$promise$asap$$useNextTick() {\r\n      // node version 0.10.x displays a deprecation warning when nextTick is used recursively\r\n      // see https://github.com/cujojs/when/issues/410 for details\r\n      return function() {\r\n        process.nextTick(lib$es6$promise$asap$$flush);\r\n      };\r\n    }\r\n\r\n    // vertx\r\n    function lib$es6$promise$asap$$useVertxTimer() {\r\n      return function() {\r\n        lib$es6$promise$asap$$vertxNext(lib$es6$promise$asap$$flush);\r\n      };\r\n    }\r\n\r\n    function lib$es6$promise$asap$$useMutationObserver() {\r\n      var iterations = 0;\r\n      var observer = new lib$es6$promise$asap$$BrowserMutationObserver(lib$es6$promise$asap$$flush);\r\n      var node = document.createTextNode('');\r\n      observer.observe(node, { characterData: true });\r\n\r\n      return function() {\r\n        node.data = (iterations = ++iterations % 2);\r\n      };\r\n    }\r\n\r\n    // web worker\r\n    function lib$es6$promise$asap$$useMessageChannel() {\r\n      var channel = new MessageChannel();\r\n      channel.port1.onmessage = lib$es6$promise$asap$$flush;\r\n      return function () {\r\n        channel.port2.postMessage(0);\r\n      };\r\n    }\r\n\r\n    function lib$es6$promise$asap$$useSetTimeout() {\r\n      return function() {\r\n        setTimeout(lib$es6$promise$asap$$flush, 1);\r\n      };\r\n    }\r\n\r\n    var lib$es6$promise$asap$$queue = new Array(1000);\r\n    function lib$es6$promise$asap$$flush() {\r\n      for (var i = 0; i < lib$es6$promise$asap$$len; i+=2) {\r\n        var callback = lib$es6$promise$asap$$queue[i];\r\n        var arg = lib$es6$promise$asap$$queue[i+1];\r\n\r\n        callback(arg);\r\n\r\n        lib$es6$promise$asap$$queue[i] = undefined;\r\n        lib$es6$promise$asap$$queue[i+1] = undefined;\r\n      }\r\n\r\n      lib$es6$promise$asap$$len = 0;\r\n    }\r\n\r\n    function lib$es6$promise$asap$$attemptVertx() {\r\n      try {\r\n        var r = require;\r\n        var vertx = r('vertx');\r\n        lib$es6$promise$asap$$vertxNext = vertx.runOnLoop || vertx.runOnContext;\r\n        return lib$es6$promise$asap$$useVertxTimer();\r\n      } catch(e) {\r\n        return lib$es6$promise$asap$$useSetTimeout();\r\n      }\r\n    }\r\n\r\n    var lib$es6$promise$asap$$scheduleFlush;\r\n    // Decide what async method to use to triggering processing of queued callbacks:\r\n    if (lib$es6$promise$asap$$isNode) {\r\n      lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useNextTick();\r\n    } else if (lib$es6$promise$asap$$BrowserMutationObserver) {\r\n      lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useMutationObserver();\r\n    } else if (lib$es6$promise$asap$$isWorker) {\r\n      lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useMessageChannel();\r\n    } else if (lib$es6$promise$asap$$browserWindow === undefined && typeof require === 'function') {\r\n      lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$attemptVertx();\r\n    } else {\r\n      lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useSetTimeout();\r\n    }\r\n\r\n    function lib$es6$promise$$internal$$noop() {}\r\n\r\n    var lib$es6$promise$$internal$$PENDING   = void 0;\r\n    var lib$es6$promise$$internal$$FULFILLED = 1;\r\n    var lib$es6$promise$$internal$$REJECTED  = 2;\r\n\r\n    var lib$es6$promise$$internal$$GET_THEN_ERROR = new lib$es6$promise$$internal$$ErrorObject();\r\n\r\n    function lib$es6$promise$$internal$$selfFulfillment() {\r\n      return new TypeError(\"You cannot resolve a promise with itself\");\r\n    }\r\n\r\n    function lib$es6$promise$$internal$$cannotReturnOwn() {\r\n      return new TypeError('A promises callback cannot return that same promise.');\r\n    }\r\n\r\n    function lib$es6$promise$$internal$$getThen(promise) {\r\n      try {\r\n        return promise.then;\r\n      } catch(error) {\r\n        lib$es6$promise$$internal$$GET_THEN_ERROR.error = error;\r\n        return lib$es6$promise$$internal$$GET_THEN_ERROR;\r\n      }\r\n    }\r\n\r\n    function lib$es6$promise$$internal$$tryThen(then, value, fulfillmentHandler, rejectionHandler) {\r\n      try {\r\n        then.call(value, fulfillmentHandler, rejectionHandler);\r\n      } catch(e) {\r\n        return e;\r\n      }\r\n    }\r\n\r\n    function lib$es6$promise$$internal$$handleForeignThenable(promise, thenable, then) {\r\n       lib$es6$promise$asap$$asap(function(promise) {\r\n        var sealed = false;\r\n        var error = lib$es6$promise$$internal$$tryThen(then, thenable, function(value) {\r\n          if (sealed) { return; }\r\n          sealed = true;\r\n          if (thenable !== value) {\r\n            lib$es6$promise$$internal$$resolve(promise, value);\r\n          } else {\r\n            lib$es6$promise$$internal$$fulfill(promise, value);\r\n          }\r\n        }, function(reason) {\r\n          if (sealed) { return; }\r\n          sealed = true;\r\n\r\n          lib$es6$promise$$internal$$reject(promise, reason);\r\n        }, 'Settle: ' + (promise._label || ' unknown promise'));\r\n\r\n        if (!sealed && error) {\r\n          sealed = true;\r\n          lib$es6$promise$$internal$$reject(promise, error);\r\n        }\r\n      }, promise);\r\n    }\r\n\r\n    function lib$es6$promise$$internal$$handleOwnThenable(promise, thenable) {\r\n      if (thenable._state === lib$es6$promise$$internal$$FULFILLED) {\r\n        lib$es6$promise$$internal$$fulfill(promise, thenable._result);\r\n      } else if (thenable._state === lib$es6$promise$$internal$$REJECTED) {\r\n        lib$es6$promise$$internal$$reject(promise, thenable._result);\r\n      } else {\r\n        lib$es6$promise$$internal$$subscribe(thenable, undefined, function(value) {\r\n          lib$es6$promise$$internal$$resolve(promise, value);\r\n        }, function(reason) {\r\n          lib$es6$promise$$internal$$reject(promise, reason);\r\n        });\r\n      }\r\n    }\r\n\r\n    function lib$es6$promise$$internal$$handleMaybeThenable(promise, maybeThenable) {\r\n      if (maybeThenable.constructor === promise.constructor) {\r\n        lib$es6$promise$$internal$$handleOwnThenable(promise, maybeThenable);\r\n      } else {\r\n        var then = lib$es6$promise$$internal$$getThen(maybeThenable);\r\n\r\n        if (then === lib$es6$promise$$internal$$GET_THEN_ERROR) {\r\n          lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$GET_THEN_ERROR.error);\r\n        } else if (then === undefined) {\r\n          lib$es6$promise$$internal$$fulfill(promise, maybeThenable);\r\n        } else if (lib$es6$promise$utils$$isFunction(then)) {\r\n          lib$es6$promise$$internal$$handleForeignThenable(promise, maybeThenable, then);\r\n        } else {\r\n          lib$es6$promise$$internal$$fulfill(promise, maybeThenable);\r\n        }\r\n      }\r\n    }\r\n\r\n    function lib$es6$promise$$internal$$resolve(promise, value) {\r\n      if (promise === value) {\r\n        lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$selfFulfillment());\r\n      } else if (lib$es6$promise$utils$$objectOrFunction(value)) {\r\n        lib$es6$promise$$internal$$handleMaybeThenable(promise, value);\r\n      } else {\r\n        lib$es6$promise$$internal$$fulfill(promise, value);\r\n      }\r\n    }\r\n\r\n    function lib$es6$promise$$internal$$publishRejection(promise) {\r\n      if (promise._onerror) {\r\n        promise._onerror(promise._result);\r\n      }\r\n\r\n      lib$es6$promise$$internal$$publish(promise);\r\n    }\r\n\r\n    function lib$es6$promise$$internal$$fulfill(promise, value) {\r\n      if (promise._state !== lib$es6$promise$$internal$$PENDING) { return; }\r\n\r\n      promise._result = value;\r\n      promise._state = lib$es6$promise$$internal$$FULFILLED;\r\n\r\n      if (promise._subscribers.length !== 0) {\r\n        lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publish, promise);\r\n      }\r\n    }\r\n\r\n    function lib$es6$promise$$internal$$reject(promise, reason) {\r\n      if (promise._state !== lib$es6$promise$$internal$$PENDING) { return; }\r\n      promise._state = lib$es6$promise$$internal$$REJECTED;\r\n      promise._result = reason;\r\n\r\n      lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publishRejection, promise);\r\n    }\r\n\r\n    function lib$es6$promise$$internal$$subscribe(parent, child, onFulfillment, onRejection) {\r\n      var subscribers = parent._subscribers;\r\n      var length = subscribers.length;\r\n\r\n      parent._onerror = null;\r\n\r\n      subscribers[length] = child;\r\n      subscribers[length + lib$es6$promise$$internal$$FULFILLED] = onFulfillment;\r\n      subscribers[length + lib$es6$promise$$internal$$REJECTED]  = onRejection;\r\n\r\n      if (length === 0 && parent._state) {\r\n        lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publish, parent);\r\n      }\r\n    }\r\n\r\n    function lib$es6$promise$$internal$$publish(promise) {\r\n      var subscribers = promise._subscribers;\r\n      var settled = promise._state;\r\n\r\n      if (subscribers.length === 0) { return; }\r\n\r\n      var child, callback, detail = promise._result;\r\n\r\n      for (var i = 0; i < subscribers.length; i += 3) {\r\n        child = subscribers[i];\r\n        callback = subscribers[i + settled];\r\n\r\n        if (child) {\r\n          lib$es6$promise$$internal$$invokeCallback(settled, child, callback, detail);\r\n        } else {\r\n          callback(detail);\r\n        }\r\n      }\r\n\r\n      promise._subscribers.length = 0;\r\n    }\r\n\r\n    function lib$es6$promise$$internal$$ErrorObject() {\r\n      this.error = null;\r\n    }\r\n\r\n    var lib$es6$promise$$internal$$TRY_CATCH_ERROR = new lib$es6$promise$$internal$$ErrorObject();\r\n\r\n    function lib$es6$promise$$internal$$tryCatch(callback, detail) {\r\n      try {\r\n        return callback(detail);\r\n      } catch(e) {\r\n        lib$es6$promise$$internal$$TRY_CATCH_ERROR.error = e;\r\n        return lib$es6$promise$$internal$$TRY_CATCH_ERROR;\r\n      }\r\n    }\r\n\r\n    function lib$es6$promise$$internal$$invokeCallback(settled, promise, callback, detail) {\r\n      var hasCallback = lib$es6$promise$utils$$isFunction(callback),\r\n          value, error, succeeded, failed;\r\n\r\n      if (hasCallback) {\r\n        value = lib$es6$promise$$internal$$tryCatch(callback, detail);\r\n\r\n        if (value === lib$es6$promise$$internal$$TRY_CATCH_ERROR) {\r\n          failed = true;\r\n          error = value.error;\r\n          value = null;\r\n        } else {\r\n          succeeded = true;\r\n        }\r\n\r\n        if (promise === value) {\r\n          lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$cannotReturnOwn());\r\n          return;\r\n        }\r\n\r\n      } else {\r\n        value = detail;\r\n        succeeded = true;\r\n      }\r\n\r\n      if (promise._state !== lib$es6$promise$$internal$$PENDING) {\r\n        // noop\r\n      } else if (hasCallback && succeeded) {\r\n        lib$es6$promise$$internal$$resolve(promise, value);\r\n      } else if (failed) {\r\n        lib$es6$promise$$internal$$reject(promise, error);\r\n      } else if (settled === lib$es6$promise$$internal$$FULFILLED) {\r\n        lib$es6$promise$$internal$$fulfill(promise, value);\r\n      } else if (settled === lib$es6$promise$$internal$$REJECTED) {\r\n        lib$es6$promise$$internal$$reject(promise, value);\r\n      }\r\n    }\r\n\r\n    function lib$es6$promise$$internal$$initializePromise(promise, resolver) {\r\n      try {\r\n        resolver(function resolvePromise(value){\r\n          lib$es6$promise$$internal$$resolve(promise, value);\r\n        }, function rejectPromise(reason) {\r\n          lib$es6$promise$$internal$$reject(promise, reason);\r\n        });\r\n      } catch(e) {\r\n        lib$es6$promise$$internal$$reject(promise, e);\r\n      }\r\n    }\r\n\r\n    function lib$es6$promise$enumerator$$Enumerator(Constructor, input) {\r\n      var enumerator = this;\r\n\r\n      enumerator._instanceConstructor = Constructor;\r\n      enumerator.promise = new Constructor(lib$es6$promise$$internal$$noop);\r\n\r\n      if (enumerator._validateInput(input)) {\r\n        enumerator._input     = input;\r\n        enumerator.length     = input.length;\r\n        enumerator._remaining = input.length;\r\n\r\n        enumerator._init();\r\n\r\n        if (enumerator.length === 0) {\r\n          lib$es6$promise$$internal$$fulfill(enumerator.promise, enumerator._result);\r\n        } else {\r\n          enumerator.length = enumerator.length || 0;\r\n          enumerator._enumerate();\r\n          if (enumerator._remaining === 0) {\r\n            lib$es6$promise$$internal$$fulfill(enumerator.promise, enumerator._result);\r\n          }\r\n        }\r\n      } else {\r\n        lib$es6$promise$$internal$$reject(enumerator.promise, enumerator._validationError());\r\n      }\r\n    }\r\n\r\n    lib$es6$promise$enumerator$$Enumerator.prototype._validateInput = function(input) {\r\n      return lib$es6$promise$utils$$isArray(input);\r\n    };\r\n\r\n    lib$es6$promise$enumerator$$Enumerator.prototype._validationError = function() {\r\n      return new Error('Array Methods must be provided an Array');\r\n    };\r\n\r\n    lib$es6$promise$enumerator$$Enumerator.prototype._init = function() {\r\n      this._result = new Array(this.length);\r\n    };\r\n\r\n    var lib$es6$promise$enumerator$$default = lib$es6$promise$enumerator$$Enumerator;\r\n\r\n    lib$es6$promise$enumerator$$Enumerator.prototype._enumerate = function() {\r\n      var enumerator = this;\r\n\r\n      var length  = enumerator.length;\r\n      var promise = enumerator.promise;\r\n      var input   = enumerator._input;\r\n\r\n      for (var i = 0; promise._state === lib$es6$promise$$internal$$PENDING && i < length; i++) {\r\n        enumerator._eachEntry(input[i], i);\r\n      }\r\n    };\r\n\r\n    lib$es6$promise$enumerator$$Enumerator.prototype._eachEntry = function(entry, i) {\r\n      var enumerator = this;\r\n      var c = enumerator._instanceConstructor;\r\n\r\n      if (lib$es6$promise$utils$$isMaybeThenable(entry)) {\r\n        if (entry.constructor === c && entry._state !== lib$es6$promise$$internal$$PENDING) {\r\n          entry._onerror = null;\r\n          enumerator._settledAt(entry._state, i, entry._result);\r\n        } else {\r\n          enumerator._willSettleAt(c.resolve(entry), i);\r\n        }\r\n      } else {\r\n        enumerator._remaining--;\r\n        enumerator._result[i] = entry;\r\n      }\r\n    };\r\n\r\n    lib$es6$promise$enumerator$$Enumerator.prototype._settledAt = function(state, i, value) {\r\n      var enumerator = this;\r\n      var promise = enumerator.promise;\r\n\r\n      if (promise._state === lib$es6$promise$$internal$$PENDING) {\r\n        enumerator._remaining--;\r\n\r\n        if (state === lib$es6$promise$$internal$$REJECTED) {\r\n          lib$es6$promise$$internal$$reject(promise, value);\r\n        } else {\r\n          enumerator._result[i] = value;\r\n        }\r\n      }\r\n\r\n      if (enumerator._remaining === 0) {\r\n        lib$es6$promise$$internal$$fulfill(promise, enumerator._result);\r\n      }\r\n    };\r\n\r\n    lib$es6$promise$enumerator$$Enumerator.prototype._willSettleAt = function(promise, i) {\r\n      var enumerator = this;\r\n\r\n      lib$es6$promise$$internal$$subscribe(promise, undefined, function(value) {\r\n        enumerator._settledAt(lib$es6$promise$$internal$$FULFILLED, i, value);\r\n      }, function(reason) {\r\n        enumerator._settledAt(lib$es6$promise$$internal$$REJECTED, i, reason);\r\n      });\r\n    };\r\n    function lib$es6$promise$promise$all$$all(entries) {\r\n      return new lib$es6$promise$enumerator$$default(this, entries).promise;\r\n    }\r\n    var lib$es6$promise$promise$all$$default = lib$es6$promise$promise$all$$all;\r\n    function lib$es6$promise$promise$race$$race(entries) {\r\n      /*jshint validthis:true */\r\n      var Constructor = this;\r\n\r\n      var promise = new Constructor(lib$es6$promise$$internal$$noop);\r\n\r\n      if (!lib$es6$promise$utils$$isArray(entries)) {\r\n        lib$es6$promise$$internal$$reject(promise, new TypeError('You must pass an array to race.'));\r\n        return promise;\r\n      }\r\n\r\n      var length = entries.length;\r\n\r\n      function onFulfillment(value) {\r\n        lib$es6$promise$$internal$$resolve(promise, value);\r\n      }\r\n\r\n      function onRejection(reason) {\r\n        lib$es6$promise$$internal$$reject(promise, reason);\r\n      }\r\n\r\n      for (var i = 0; promise._state === lib$es6$promise$$internal$$PENDING && i < length; i++) {\r\n        lib$es6$promise$$internal$$subscribe(Constructor.resolve(entries[i]), undefined, onFulfillment, onRejection);\r\n      }\r\n\r\n      return promise;\r\n    }\r\n    var lib$es6$promise$promise$race$$default = lib$es6$promise$promise$race$$race;\r\n    function lib$es6$promise$promise$resolve$$resolve(object) {\r\n      /*jshint validthis:true */\r\n      var Constructor = this;\r\n\r\n      if (object && typeof object === 'object' && object.constructor === Constructor) {\r\n        return object;\r\n      }\r\n\r\n      var promise = new Constructor(lib$es6$promise$$internal$$noop);\r\n      lib$es6$promise$$internal$$resolve(promise, object);\r\n      return promise;\r\n    }\r\n    var lib$es6$promise$promise$resolve$$default = lib$es6$promise$promise$resolve$$resolve;\r\n    function lib$es6$promise$promise$reject$$reject(reason) {\r\n      /*jshint validthis:true */\r\n      var Constructor = this;\r\n      var promise = new Constructor(lib$es6$promise$$internal$$noop);\r\n      lib$es6$promise$$internal$$reject(promise, reason);\r\n      return promise;\r\n    }\r\n    var lib$es6$promise$promise$reject$$default = lib$es6$promise$promise$reject$$reject;\r\n\r\n    var lib$es6$promise$promise$$counter = 0;\r\n\r\n    function lib$es6$promise$promise$$needsResolver() {\r\n      throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\r\n    }\r\n\r\n    function lib$es6$promise$promise$$needsNew() {\r\n      throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\r\n    }\r\n\r\n    var lib$es6$promise$promise$$default = lib$es6$promise$promise$$Promise;\r\n    /**\r\n      Promise objects represent the eventual result of an asynchronous operation. The\r\n      primary way of interacting with a promise is through its `then` method, which\r\n      registers callbacks to receive either a promise's eventual value or the reason\r\n      why the promise cannot be fulfilled.\r\n\r\n      Terminology\r\n      -----------\r\n\r\n      - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\r\n      - `thenable` is an object or function that defines a `then` method.\r\n      - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\r\n      - `exception` is a value that is thrown using the throw statement.\r\n      - `reason` is a value that indicates why a promise was rejected.\r\n      - `settled` the final resting state of a promise, fulfilled or rejected.\r\n\r\n      A promise can be in one of three states: pending, fulfilled, or rejected.\r\n\r\n      Promises that are fulfilled have a fulfillment value and are in the fulfilled\r\n      state.  Promises that are rejected have a rejection reason and are in the\r\n      rejected state.  A fulfillment value is never a thenable.\r\n\r\n      Promises can also be said to *resolve* a value.  If this value is also a\r\n      promise, then the original promise's settled state will match the value's\r\n      settled state.  So a promise that *resolves* a promise that rejects will\r\n      itself reject, and a promise that *resolves* a promise that fulfills will\r\n      itself fulfill.\r\n\r\n\r\n      Basic Usage:\r\n      ------------\r\n\r\n      ```js\r\n      var promise = new Promise(function(resolve, reject) {\r\n        // on success\r\n        resolve(value);\r\n\r\n        // on failure\r\n        reject(reason);\r\n      });\r\n\r\n      promise.then(function(value) {\r\n        // on fulfillment\r\n      }, function(reason) {\r\n        // on rejection\r\n      });\r\n      ```\r\n\r\n      Advanced Usage:\r\n      ---------------\r\n\r\n      Promises shine when abstracting away asynchronous interactions such as\r\n      `XMLHttpRequest`s.\r\n\r\n      ```js\r\n      function getJSON(url) {\r\n        return new Promise(function(resolve, reject){\r\n          var xhr = new XMLHttpRequest();\r\n\r\n          xhr.open('GET', url);\r\n          xhr.onreadystatechange = handler;\r\n          xhr.responseType = 'json';\r\n          xhr.setRequestHeader('Accept', 'application/json');\r\n          xhr.send();\r\n\r\n          function handler() {\r\n            if (this.readyState === this.DONE) {\r\n              if (this.status === 200) {\r\n                resolve(this.response);\r\n              } else {\r\n                reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\r\n              }\r\n            }\r\n          };\r\n        });\r\n      }\r\n\r\n      getJSON('/posts.json').then(function(json) {\r\n        // on fulfillment\r\n      }, function(reason) {\r\n        // on rejection\r\n      });\r\n      ```\r\n\r\n      Unlike callbacks, promises are great composable primitives.\r\n\r\n      ```js\r\n      Promise.all([\r\n        getJSON('/posts'),\r\n        getJSON('/comments')\r\n      ]).then(function(values){\r\n        values[0] // => postsJSON\r\n        values[1] // => commentsJSON\r\n\r\n        return values;\r\n      });\r\n      ```\r\n\r\n      @class Promise\r\n      @param {function} resolver\r\n      Useful for tooling.\r\n      @constructor\r\n    */\r\n    function lib$es6$promise$promise$$Promise(resolver) {\r\n      this._id = lib$es6$promise$promise$$counter++;\r\n      this._state = undefined;\r\n      this._result = undefined;\r\n      this._subscribers = [];\r\n\r\n      if (lib$es6$promise$$internal$$noop !== resolver) {\r\n        if (!lib$es6$promise$utils$$isFunction(resolver)) {\r\n          lib$es6$promise$promise$$needsResolver();\r\n        }\r\n\r\n        if (!(this instanceof lib$es6$promise$promise$$Promise)) {\r\n          lib$es6$promise$promise$$needsNew();\r\n        }\r\n\r\n        lib$es6$promise$$internal$$initializePromise(this, resolver);\r\n      }\r\n    }\r\n\r\n    lib$es6$promise$promise$$Promise.all = lib$es6$promise$promise$all$$default;\r\n    lib$es6$promise$promise$$Promise.race = lib$es6$promise$promise$race$$default;\r\n    lib$es6$promise$promise$$Promise.resolve = lib$es6$promise$promise$resolve$$default;\r\n    lib$es6$promise$promise$$Promise.reject = lib$es6$promise$promise$reject$$default;\r\n    lib$es6$promise$promise$$Promise._setScheduler = lib$es6$promise$asap$$setScheduler;\r\n    lib$es6$promise$promise$$Promise._setAsap = lib$es6$promise$asap$$setAsap;\r\n    lib$es6$promise$promise$$Promise._asap = lib$es6$promise$asap$$asap;\r\n\r\n    lib$es6$promise$promise$$Promise.prototype = {\r\n      constructor: lib$es6$promise$promise$$Promise,\r\n\r\n    /**\r\n      The primary way of interacting with a promise is through its `then` method,\r\n      which registers callbacks to receive either a promise's eventual value or the\r\n      reason why the promise cannot be fulfilled.\r\n\r\n      ```js\r\n      findUser().then(function(user){\r\n        // user is available\r\n      }, function(reason){\r\n        // user is unavailable, and you are given the reason why\r\n      });\r\n      ```\r\n\r\n      Chaining\r\n      --------\r\n\r\n      The return value of `then` is itself a promise.  This second, 'downstream'\r\n      promise is resolved with the return value of the first promise's fulfillment\r\n      or rejection handler, or rejected if the handler throws an exception.\r\n\r\n      ```js\r\n      findUser().then(function (user) {\r\n        return user.name;\r\n      }, function (reason) {\r\n        return 'default name';\r\n      }).then(function (userName) {\r\n        // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\r\n        // will be `'default name'`\r\n      });\r\n\r\n      findUser().then(function (user) {\r\n        throw new Error('Found user, but still unhappy');\r\n      }, function (reason) {\r\n        throw new Error('`findUser` rejected and we're unhappy');\r\n      }).then(function (value) {\r\n        // never reached\r\n      }, function (reason) {\r\n        // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\r\n        // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\r\n      });\r\n      ```\r\n      If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\r\n\r\n      ```js\r\n      findUser().then(function (user) {\r\n        throw new PedagogicalException('Upstream error');\r\n      }).then(function (value) {\r\n        // never reached\r\n      }).then(function (value) {\r\n        // never reached\r\n      }, function (reason) {\r\n        // The `PedgagocialException` is propagated all the way down to here\r\n      });\r\n      ```\r\n\r\n      Assimilation\r\n      ------------\r\n\r\n      Sometimes the value you want to propagate to a downstream promise can only be\r\n      retrieved asynchronously. This can be achieved by returning a promise in the\r\n      fulfillment or rejection handler. The downstream promise will then be pending\r\n      until the returned promise is settled. This is called *assimilation*.\r\n\r\n      ```js\r\n      findUser().then(function (user) {\r\n        return findCommentsByAuthor(user);\r\n      }).then(function (comments) {\r\n        // The user's comments are now available\r\n      });\r\n      ```\r\n\r\n      If the assimliated promise rejects, then the downstream promise will also reject.\r\n\r\n      ```js\r\n      findUser().then(function (user) {\r\n        return findCommentsByAuthor(user);\r\n      }).then(function (comments) {\r\n        // If `findCommentsByAuthor` fulfills, we'll have the value here\r\n      }, function (reason) {\r\n        // If `findCommentsByAuthor` rejects, we'll have the reason here\r\n      });\r\n      ```\r\n\r\n      Simple Example\r\n      --------------\r\n\r\n      Synchronous Example\r\n\r\n      ```javascript\r\n      var result;\r\n\r\n      try {\r\n        result = findResult();\r\n        // success\r\n      } catch(reason) {\r\n        // failure\r\n      }\r\n      ```\r\n\r\n      Errback Example\r\n\r\n      ```js\r\n      findResult(function(result, err){\r\n        if (err) {\r\n          // failure\r\n        } else {\r\n          // success\r\n        }\r\n      });\r\n      ```\r\n\r\n      Promise Example;\r\n\r\n      ```javascript\r\n      findResult().then(function(result){\r\n        // success\r\n      }, function(reason){\r\n        // failure\r\n      });\r\n      ```\r\n\r\n      Advanced Example\r\n      --------------\r\n\r\n      Synchronous Example\r\n\r\n      ```javascript\r\n      var author, books;\r\n\r\n      try {\r\n        author = findAuthor();\r\n        books  = findBooksByAuthor(author);\r\n        // success\r\n      } catch(reason) {\r\n        // failure\r\n      }\r\n      ```\r\n\r\n      Errback Example\r\n\r\n      ```js\r\n\r\n      function foundBooks(books) {\r\n\r\n      }\r\n\r\n      function failure(reason) {\r\n\r\n      }\r\n\r\n      findAuthor(function(author, err){\r\n        if (err) {\r\n          failure(err);\r\n          // failure\r\n        } else {\r\n          try {\r\n            findBoooksByAuthor(author, function(books, err) {\r\n              if (err) {\r\n                failure(err);\r\n              } else {\r\n                try {\r\n                  foundBooks(books);\r\n                } catch(reason) {\r\n                  failure(reason);\r\n                }\r\n              }\r\n            });\r\n          } catch(error) {\r\n            failure(err);\r\n          }\r\n          // success\r\n        }\r\n      });\r\n      ```\r\n\r\n      Promise Example;\r\n\r\n      ```javascript\r\n      findAuthor().\r\n        then(findBooksByAuthor).\r\n        then(function(books){\r\n          // found books\r\n      }).catch(function(reason){\r\n        // something went wrong\r\n      });\r\n      ```\r\n\r\n      @method then\r\n      @param {Function} onFulfilled\r\n      @param {Function} onRejected\r\n      Useful for tooling.\r\n      @return {Promise}\r\n    */\r\n      then: function(onFulfillment, onRejection) {\r\n        var parent = this;\r\n        var state = parent._state;\r\n\r\n        if (state === lib$es6$promise$$internal$$FULFILLED && !onFulfillment || state === lib$es6$promise$$internal$$REJECTED && !onRejection) {\r\n          return this;\r\n        }\r\n\r\n        var child = new this.constructor(lib$es6$promise$$internal$$noop);\r\n        var result = parent._result;\r\n\r\n        if (state) {\r\n          var callback = arguments[state - 1];\r\n          lib$es6$promise$asap$$asap(function(){\r\n            lib$es6$promise$$internal$$invokeCallback(state, child, callback, result);\r\n          });\r\n        } else {\r\n          lib$es6$promise$$internal$$subscribe(parent, child, onFulfillment, onRejection);\r\n        }\r\n\r\n        return child;\r\n      },\r\n\r\n    /**\r\n      `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\r\n      as the catch block of a try/catch statement.\r\n\r\n      ```js\r\n      function findAuthor(){\r\n        throw new Error('couldn't find that author');\r\n      }\r\n\r\n      // synchronous\r\n      try {\r\n        findAuthor();\r\n      } catch(reason) {\r\n        // something went wrong\r\n      }\r\n\r\n      // async with promises\r\n      findAuthor().catch(function(reason){\r\n        // something went wrong\r\n      });\r\n      ```\r\n\r\n      @method catch\r\n      @param {Function} onRejection\r\n      Useful for tooling.\r\n      @return {Promise}\r\n    */\r\n      'catch': function(onRejection) {\r\n        return this.then(null, onRejection);\r\n      }\r\n    };\r\n    function lib$es6$promise$polyfill$$polyfill() {\r\n      var local;\r\n\r\n      if (typeof global !== 'undefined') {\r\n          local = global;\r\n      } else if (typeof self !== 'undefined') {\r\n          local = self;\r\n      } else {\r\n          try {\r\n              local = Function('return this')();\r\n          } catch (e) {\r\n              throw new Error('polyfill failed because global object is unavailable in this environment');\r\n          }\r\n      }\r\n\r\n      var P = local.Promise;\r\n\r\n      if (P && Object.prototype.toString.call(P.resolve()) === '[object Promise]' && !P.cast) {\r\n        return;\r\n      }\r\n\r\n      local.Promise = lib$es6$promise$promise$$default;\r\n    }\r\n    var lib$es6$promise$polyfill$$default = lib$es6$promise$polyfill$$polyfill;\r\n\r\n    var lib$es6$promise$umd$$ES6Promise = {\r\n      'Promise': lib$es6$promise$promise$$default,\r\n      'polyfill': lib$es6$promise$polyfill$$default\r\n    };\r\n\r\n    /* global define:true module:true window: true */\r\n    if (typeof define === 'function' && define['amd']) {\r\n      define(function() { return lib$es6$promise$umd$$ES6Promise; });\r\n    } else if (typeof module !== 'undefined' && module['exports']) {\r\n      module['exports'] = lib$es6$promise$umd$$ES6Promise;\r\n    } else if (typeof this !== 'undefined') {\r\n      this['ES6Promise'] = lib$es6$promise$umd$$ES6Promise;\r\n    }\r\n\r\n    lib$es6$promise$polyfill$$default();\r\n}).call(this);\r\n\r\n","/**!\n\n @license\n handlebars v4.0.6\n\nCopyright (C) 2011-2016 by Yehuda Katz\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n*/\n/**!\n\n @license\n handlebars v4.0.6\n\nCopyright (C) 2011-2016 by Yehuda Katz\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n*/\n/**!\n\n @license\n handlebars v4.0.6\n\nCopyright (C) 2011-2016 by Yehuda Katz\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n*/\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Handlebars\"] = factory();\n\telse\n\t\troot[\"Handlebars\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \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 = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar _interopRequireWildcard = __webpack_require__(1)['default'];\n\n\tvar _interopRequireDefault = __webpack_require__(2)['default'];\n\n\texports.__esModule = true;\n\n\tvar _handlebarsBase = __webpack_require__(3);\n\n\tvar base = _interopRequireWildcard(_handlebarsBase);\n\n\t// Each of these augment the Handlebars object. No need to setup here.\n\t// (This is done to easily share code between commonjs and browse envs)\n\n\tvar _handlebarsSafeString = __webpack_require__(20);\n\n\tvar _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString);\n\n\tvar _handlebarsException = __webpack_require__(5);\n\n\tvar _handlebarsException2 = _interopRequireDefault(_handlebarsException);\n\n\tvar _handlebarsUtils = __webpack_require__(4);\n\n\tvar Utils = _interopRequireWildcard(_handlebarsUtils);\n\n\tvar _handlebarsRuntime = __webpack_require__(21);\n\n\tvar runtime = _interopRequireWildcard(_handlebarsRuntime);\n\n\tvar _handlebarsNoConflict = __webpack_require__(22);\n\n\tvar _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);\n\n\t// For compatibility and usage outside of module systems, make the Handlebars object a namespace\n\tfunction create() {\n\t  var hb = new base.HandlebarsEnvironment();\n\n\t  Utils.extend(hb, base);\n\t  hb.SafeString = _handlebarsSafeString2['default'];\n\t  hb.Exception = _handlebarsException2['default'];\n\t  hb.Utils = Utils;\n\t  hb.escapeExpression = Utils.escapeExpression;\n\n\t  hb.VM = runtime;\n\t  hb.template = function (spec) {\n\t    return runtime.template(spec, hb);\n\t  };\n\n\t  return hb;\n\t}\n\n\tvar inst = create();\n\tinst.create = create;\n\n\t_handlebarsNoConflict2['default'](inst);\n\n\tinst['default'] = inst;\n\n\texports['default'] = inst;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\n\texports[\"default\"] = function (obj) {\n\t  if (obj && obj.__esModule) {\n\t    return obj;\n\t  } else {\n\t    var newObj = {};\n\n\t    if (obj != null) {\n\t      for (var key in obj) {\n\t        if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n\t      }\n\t    }\n\n\t    newObj[\"default\"] = obj;\n\t    return newObj;\n\t  }\n\t};\n\n\texports.__esModule = true;\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\n\texports[\"default\"] = function (obj) {\n\t  return obj && obj.__esModule ? obj : {\n\t    \"default\": obj\n\t  };\n\t};\n\n\texports.__esModule = true;\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar _interopRequireDefault = __webpack_require__(2)['default'];\n\n\texports.__esModule = true;\n\texports.HandlebarsEnvironment = HandlebarsEnvironment;\n\n\tvar _utils = __webpack_require__(4);\n\n\tvar _exception = __webpack_require__(5);\n\n\tvar _exception2 = _interopRequireDefault(_exception);\n\n\tvar _helpers = __webpack_require__(9);\n\n\tvar _decorators = __webpack_require__(17);\n\n\tvar _logger = __webpack_require__(19);\n\n\tvar _logger2 = _interopRequireDefault(_logger);\n\n\tvar VERSION = '4.0.5';\n\texports.VERSION = VERSION;\n\tvar COMPILER_REVISION = 7;\n\n\texports.COMPILER_REVISION = COMPILER_REVISION;\n\tvar REVISION_CHANGES = {\n\t  1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n\t  2: '== 1.0.0-rc.3',\n\t  3: '== 1.0.0-rc.4',\n\t  4: '== 1.x.x',\n\t  5: '== 2.0.0-alpha.x',\n\t  6: '>= 2.0.0-beta.1',\n\t  7: '>= 4.0.0'\n\t};\n\n\texports.REVISION_CHANGES = REVISION_CHANGES;\n\tvar objectType = '[object Object]';\n\n\tfunction HandlebarsEnvironment(helpers, partials, decorators) {\n\t  this.helpers = helpers || {};\n\t  this.partials = partials || {};\n\t  this.decorators = decorators || {};\n\n\t  _helpers.registerDefaultHelpers(this);\n\t  _decorators.registerDefaultDecorators(this);\n\t}\n\n\tHandlebarsEnvironment.prototype = {\n\t  constructor: HandlebarsEnvironment,\n\n\t  logger: _logger2['default'],\n\t  log: _logger2['default'].log,\n\n\t  registerHelper: function registerHelper(name, fn) {\n\t    if (_utils.toString.call(name) === objectType) {\n\t      if (fn) {\n\t        throw new _exception2['default']('Arg not supported with multiple helpers');\n\t      }\n\t      _utils.extend(this.helpers, name);\n\t    } else {\n\t      this.helpers[name] = fn;\n\t    }\n\t  },\n\t  unregisterHelper: function unregisterHelper(name) {\n\t    delete this.helpers[name];\n\t  },\n\n\t  registerPartial: function registerPartial(name, partial) {\n\t    if (_utils.toString.call(name) === objectType) {\n\t      _utils.extend(this.partials, name);\n\t    } else {\n\t      if (typeof partial === 'undefined') {\n\t        throw new _exception2['default']('Attempting to register a partial called \"' + name + '\" as undefined');\n\t      }\n\t      this.partials[name] = partial;\n\t    }\n\t  },\n\t  unregisterPartial: function unregisterPartial(name) {\n\t    delete this.partials[name];\n\t  },\n\n\t  registerDecorator: function registerDecorator(name, fn) {\n\t    if (_utils.toString.call(name) === objectType) {\n\t      if (fn) {\n\t        throw new _exception2['default']('Arg not supported with multiple decorators');\n\t      }\n\t      _utils.extend(this.decorators, name);\n\t    } else {\n\t      this.decorators[name] = fn;\n\t    }\n\t  },\n\t  unregisterDecorator: function unregisterDecorator(name) {\n\t    delete this.decorators[name];\n\t  }\n\t};\n\n\tvar log = _logger2['default'].log;\n\n\texports.log = log;\n\texports.createFrame = _utils.createFrame;\n\texports.logger = _logger2['default'];\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\n\texports.__esModule = true;\n\texports.extend = extend;\n\texports.indexOf = indexOf;\n\texports.escapeExpression = escapeExpression;\n\texports.isEmpty = isEmpty;\n\texports.createFrame = createFrame;\n\texports.blockParams = blockParams;\n\texports.appendContextPath = appendContextPath;\n\tvar escape = {\n\t  '&': '&amp;',\n\t  '<': '&lt;',\n\t  '>': '&gt;',\n\t  '\"': '&quot;',\n\t  \"'\": '&#x27;',\n\t  '`': '&#x60;',\n\t  '=': '&#x3D;'\n\t};\n\n\tvar badChars = /[&<>\"'`=]/g,\n\t    possible = /[&<>\"'`=]/;\n\n\tfunction escapeChar(chr) {\n\t  return escape[chr];\n\t}\n\n\tfunction extend(obj /* , ...source */) {\n\t  for (var i = 1; i < arguments.length; i++) {\n\t    for (var key in arguments[i]) {\n\t      if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n\t        obj[key] = arguments[i][key];\n\t      }\n\t    }\n\t  }\n\n\t  return obj;\n\t}\n\n\tvar toString = Object.prototype.toString;\n\n\texports.toString = toString;\n\t// Sourced from lodash\n\t// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n\t/* eslint-disable func-style */\n\tvar isFunction = function isFunction(value) {\n\t  return typeof value === 'function';\n\t};\n\t// fallback for older versions of Chrome and Safari\n\t/* istanbul ignore next */\n\tif (isFunction(/x/)) {\n\t  exports.isFunction = isFunction = function (value) {\n\t    return typeof value === 'function' && toString.call(value) === '[object Function]';\n\t  };\n\t}\n\texports.isFunction = isFunction;\n\n\t/* eslint-enable func-style */\n\n\t/* istanbul ignore next */\n\tvar isArray = Array.isArray || function (value) {\n\t  return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;\n\t};\n\n\texports.isArray = isArray;\n\t// Older IE versions do not directly support indexOf so we must implement our own, sadly.\n\n\tfunction indexOf(array, value) {\n\t  for (var i = 0, len = array.length; i < len; i++) {\n\t    if (array[i] === value) {\n\t      return i;\n\t    }\n\t  }\n\t  return -1;\n\t}\n\n\tfunction escapeExpression(string) {\n\t  if (typeof string !== 'string') {\n\t    // don't escape SafeStrings, since they're already safe\n\t    if (string && string.toHTML) {\n\t      return string.toHTML();\n\t    } else if (string == null) {\n\t      return '';\n\t    } else if (!string) {\n\t      return string + '';\n\t    }\n\n\t    // Force a string conversion as this will be done by the append regardless and\n\t    // the regex test will do this transparently behind the scenes, causing issues if\n\t    // an object's to string has escaped characters in it.\n\t    string = '' + string;\n\t  }\n\n\t  if (!possible.test(string)) {\n\t    return string;\n\t  }\n\t  return string.replace(badChars, escapeChar);\n\t}\n\n\tfunction isEmpty(value) {\n\t  if (!value && value !== 0) {\n\t    return true;\n\t  } else if (isArray(value) && value.length === 0) {\n\t    return true;\n\t  } else {\n\t    return false;\n\t  }\n\t}\n\n\tfunction createFrame(object) {\n\t  var frame = extend({}, object);\n\t  frame._parent = object;\n\t  return frame;\n\t}\n\n\tfunction blockParams(params, ids) {\n\t  params.path = ids;\n\t  return params;\n\t}\n\n\tfunction appendContextPath(contextPath, id) {\n\t  return (contextPath ? contextPath + '.' : '') + id;\n\t}\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar _Object$defineProperty = __webpack_require__(6)['default'];\n\n\texports.__esModule = true;\n\n\tvar errorProps = ['description', 'fileName', 'lineNumber', 'message', 'name', 'number', 'stack'];\n\n\tfunction Exception(message, node) {\n\t  var loc = node && node.loc,\n\t      line = undefined,\n\t      column = undefined;\n\t  if (loc) {\n\t    line = loc.start.line;\n\t    column = loc.start.column;\n\n\t    message += ' - ' + line + ':' + column;\n\t  }\n\n\t  var tmp = Error.prototype.constructor.call(this, message);\n\n\t  // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n\t  for (var idx = 0; idx < errorProps.length; idx++) {\n\t    this[errorProps[idx]] = tmp[errorProps[idx]];\n\t  }\n\n\t  /* istanbul ignore else */\n\t  if (Error.captureStackTrace) {\n\t    Error.captureStackTrace(this, Exception);\n\t  }\n\n\t  try {\n\t    if (loc) {\n\t      this.lineNumber = line;\n\n\t      // Work around issue under safari where we can't directly set the column value\n\t      /* istanbul ignore next */\n\t      if (_Object$defineProperty) {\n\t        Object.defineProperty(this, 'column', { value: column });\n\t      } else {\n\t        this.column = column;\n\t      }\n\t    }\n\t  } catch (nop) {\n\t    /* Ignore if the browser is very particular */\n\t  }\n\t}\n\n\tException.prototype = new Error();\n\n\texports['default'] = Exception;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = { \"default\": __webpack_require__(7), __esModule: true };\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar $ = __webpack_require__(8);\n\tmodule.exports = function defineProperty(it, key, desc){\n\t  return $.setDesc(it, key, desc);\n\t};\n\n/***/ },\n/* 8 */\n/***/ function(module, exports) {\n\n\tvar $Object = Object;\n\tmodule.exports = {\n\t  create:     $Object.create,\n\t  getProto:   $Object.getPrototypeOf,\n\t  isEnum:     {}.propertyIsEnumerable,\n\t  getDesc:    $Object.getOwnPropertyDescriptor,\n\t  setDesc:    $Object.defineProperty,\n\t  setDescs:   $Object.defineProperties,\n\t  getKeys:    $Object.keys,\n\t  getNames:   $Object.getOwnPropertyNames,\n\t  getSymbols: $Object.getOwnPropertySymbols,\n\t  each:       [].forEach\n\t};\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar _interopRequireDefault = __webpack_require__(2)['default'];\n\n\texports.__esModule = true;\n\texports.registerDefaultHelpers = registerDefaultHelpers;\n\n\tvar _helpersBlockHelperMissing = __webpack_require__(10);\n\n\tvar _helpersBlockHelperMissing2 = _interopRequireDefault(_helpersBlockHelperMissing);\n\n\tvar _helpersEach = __webpack_require__(11);\n\n\tvar _helpersEach2 = _interopRequireDefault(_helpersEach);\n\n\tvar _helpersHelperMissing = __webpack_require__(12);\n\n\tvar _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing);\n\n\tvar _helpersIf = __webpack_require__(13);\n\n\tvar _helpersIf2 = _interopRequireDefault(_helpersIf);\n\n\tvar _helpersLog = __webpack_require__(14);\n\n\tvar _helpersLog2 = _interopRequireDefault(_helpersLog);\n\n\tvar _helpersLookup = __webpack_require__(15);\n\n\tvar _helpersLookup2 = _interopRequireDefault(_helpersLookup);\n\n\tvar _helpersWith = __webpack_require__(16);\n\n\tvar _helpersWith2 = _interopRequireDefault(_helpersWith);\n\n\tfunction registerDefaultHelpers(instance) {\n\t  _helpersBlockHelperMissing2['default'](instance);\n\t  _helpersEach2['default'](instance);\n\t  _helpersHelperMissing2['default'](instance);\n\t  _helpersIf2['default'](instance);\n\t  _helpersLog2['default'](instance);\n\t  _helpersLookup2['default'](instance);\n\t  _helpersWith2['default'](instance);\n\t}\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\texports.__esModule = true;\n\n\tvar _utils = __webpack_require__(4);\n\n\texports['default'] = function (instance) {\n\t  instance.registerHelper('blockHelperMissing', function (context, options) {\n\t    var inverse = options.inverse,\n\t        fn = options.fn;\n\n\t    if (context === true) {\n\t      return fn(this);\n\t    } else if (context === false || context == null) {\n\t      return inverse(this);\n\t    } else if (_utils.isArray(context)) {\n\t      if (context.length > 0) {\n\t        if (options.ids) {\n\t          options.ids = [options.name];\n\t        }\n\n\t        return instance.helpers.each(context, options);\n\t      } else {\n\t        return inverse(this);\n\t      }\n\t    } else {\n\t      if (options.data && options.ids) {\n\t        var data = _utils.createFrame(options.data);\n\t        data.contextPath = _utils.appendContextPath(options.data.contextPath, options.name);\n\t        options = { data: data };\n\t      }\n\n\t      return fn(context, options);\n\t    }\n\t  });\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar _interopRequireDefault = __webpack_require__(2)['default'];\n\n\texports.__esModule = true;\n\n\tvar _utils = __webpack_require__(4);\n\n\tvar _exception = __webpack_require__(5);\n\n\tvar _exception2 = _interopRequireDefault(_exception);\n\n\texports['default'] = function (instance) {\n\t  instance.registerHelper('each', function (context, options) {\n\t    if (!options) {\n\t      throw new _exception2['default']('Must pass iterator to #each');\n\t    }\n\n\t    var fn = options.fn,\n\t        inverse = options.inverse,\n\t        i = 0,\n\t        ret = '',\n\t        data = undefined,\n\t        contextPath = undefined;\n\n\t    if (options.data && options.ids) {\n\t      contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n\t    }\n\n\t    if (_utils.isFunction(context)) {\n\t      context = context.call(this);\n\t    }\n\n\t    if (options.data) {\n\t      data = _utils.createFrame(options.data);\n\t    }\n\n\t    function execIteration(field, index, last) {\n\t      if (data) {\n\t        data.key = field;\n\t        data.index = index;\n\t        data.first = index === 0;\n\t        data.last = !!last;\n\n\t        if (contextPath) {\n\t          data.contextPath = contextPath + field;\n\t        }\n\t      }\n\n\t      ret = ret + fn(context[field], {\n\t        data: data,\n\t        blockParams: _utils.blockParams([context[field], field], [contextPath + field, null])\n\t      });\n\t    }\n\n\t    if (context && typeof context === 'object') {\n\t      if (_utils.isArray(context)) {\n\t        for (var j = context.length; i < j; i++) {\n\t          if (i in context) {\n\t            execIteration(i, i, i === context.length - 1);\n\t          }\n\t        }\n\t      } else {\n\t        var priorKey = undefined;\n\n\t        for (var key in context) {\n\t          if (context.hasOwnProperty(key)) {\n\t            // We're running the iterations one step out of sync so we can detect\n\t            // the last iteration without have to scan the object twice and create\n\t            // an itermediate keys array.\n\t            if (priorKey !== undefined) {\n\t              execIteration(priorKey, i - 1);\n\t            }\n\t            priorKey = key;\n\t            i++;\n\t          }\n\t        }\n\t        if (priorKey !== undefined) {\n\t          execIteration(priorKey, i - 1, true);\n\t        }\n\t      }\n\t    }\n\n\t    if (i === 0) {\n\t      ret = inverse(this);\n\t    }\n\n\t    return ret;\n\t  });\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar _interopRequireDefault = __webpack_require__(2)['default'];\n\n\texports.__esModule = true;\n\n\tvar _exception = __webpack_require__(5);\n\n\tvar _exception2 = _interopRequireDefault(_exception);\n\n\texports['default'] = function (instance) {\n\t  instance.registerHelper('helperMissing', function () /* [args, ]options */{\n\t    if (arguments.length === 1) {\n\t      // A missing field in a {{foo}} construct.\n\t      return undefined;\n\t    } else {\n\t      // Someone is actually trying to call something, blow up.\n\t      throw new _exception2['default']('Missing helper: \"' + arguments[arguments.length - 1].name + '\"');\n\t    }\n\t  });\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\texports.__esModule = true;\n\n\tvar _utils = __webpack_require__(4);\n\n\texports['default'] = function (instance) {\n\t  instance.registerHelper('if', function (conditional, options) {\n\t    if (_utils.isFunction(conditional)) {\n\t      conditional = conditional.call(this);\n\t    }\n\n\t    // Default behavior is to render the positive path if the value is truthy and not empty.\n\t    // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n\t    // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n\t    if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) {\n\t      return options.inverse(this);\n\t    } else {\n\t      return options.fn(this);\n\t    }\n\t  });\n\n\t  instance.registerHelper('unless', function (conditional, options) {\n\t    return instance.helpers['if'].call(this, conditional, { fn: options.inverse, inverse: options.fn, hash: options.hash });\n\t  });\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 14 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\n\texports.__esModule = true;\n\n\texports['default'] = function (instance) {\n\t  instance.registerHelper('log', function () /* message, options */{\n\t    var args = [undefined],\n\t        options = arguments[arguments.length - 1];\n\t    for (var i = 0; i < arguments.length - 1; i++) {\n\t      args.push(arguments[i]);\n\t    }\n\n\t    var level = 1;\n\t    if (options.hash.level != null) {\n\t      level = options.hash.level;\n\t    } else if (options.data && options.data.level != null) {\n\t      level = options.data.level;\n\t    }\n\t    args[0] = level;\n\n\t    instance.log.apply(instance, args);\n\t  });\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 15 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\n\texports.__esModule = true;\n\n\texports['default'] = function (instance) {\n\t  instance.registerHelper('lookup', function (obj, field) {\n\t    return obj && obj[field];\n\t  });\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\texports.__esModule = true;\n\n\tvar _utils = __webpack_require__(4);\n\n\texports['default'] = function (instance) {\n\t  instance.registerHelper('with', function (context, options) {\n\t    if (_utils.isFunction(context)) {\n\t      context = context.call(this);\n\t    }\n\n\t    var fn = options.fn;\n\n\t    if (!_utils.isEmpty(context)) {\n\t      var data = options.data;\n\t      if (options.data && options.ids) {\n\t        data = _utils.createFrame(options.data);\n\t        data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]);\n\t      }\n\n\t      return fn(context, {\n\t        data: data,\n\t        blockParams: _utils.blockParams([context], [data && data.contextPath])\n\t      });\n\t    } else {\n\t      return options.inverse(this);\n\t    }\n\t  });\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar _interopRequireDefault = __webpack_require__(2)['default'];\n\n\texports.__esModule = true;\n\texports.registerDefaultDecorators = registerDefaultDecorators;\n\n\tvar _decoratorsInline = __webpack_require__(18);\n\n\tvar _decoratorsInline2 = _interopRequireDefault(_decoratorsInline);\n\n\tfunction registerDefaultDecorators(instance) {\n\t  _decoratorsInline2['default'](instance);\n\t}\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\texports.__esModule = true;\n\n\tvar _utils = __webpack_require__(4);\n\n\texports['default'] = function (instance) {\n\t  instance.registerDecorator('inline', function (fn, props, container, options) {\n\t    var ret = fn;\n\t    if (!props.partials) {\n\t      props.partials = {};\n\t      ret = function (context, options) {\n\t        // Create a new partials stack frame prior to exec.\n\t        var original = container.partials;\n\t        container.partials = _utils.extend({}, original, props.partials);\n\t        var ret = fn(context, options);\n\t        container.partials = original;\n\t        return ret;\n\t      };\n\t    }\n\n\t    props.partials[options.args[0]] = options.fn;\n\n\t    return ret;\n\t  });\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 19 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\texports.__esModule = true;\n\n\tvar _utils = __webpack_require__(4);\n\n\tvar logger = {\n\t  methodMap: ['debug', 'info', 'warn', 'error'],\n\t  level: 'info',\n\n\t  // Maps a given level value to the `methodMap` indexes above.\n\t  lookupLevel: function lookupLevel(level) {\n\t    if (typeof level === 'string') {\n\t      var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase());\n\t      if (levelMap >= 0) {\n\t        level = levelMap;\n\t      } else {\n\t        level = parseInt(level, 10);\n\t      }\n\t    }\n\n\t    return level;\n\t  },\n\n\t  // Can be overridden in the host environment\n\t  log: function log(level) {\n\t    level = logger.lookupLevel(level);\n\n\t    if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {\n\t      var method = logger.methodMap[level];\n\t      if (!console[method]) {\n\t        // eslint-disable-line no-console\n\t        method = 'log';\n\t      }\n\n\t      for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t        message[_key - 1] = arguments[_key];\n\t      }\n\n\t      console[method].apply(console, message); // eslint-disable-line no-console\n\t    }\n\t  }\n\t};\n\n\texports['default'] = logger;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 20 */\n/***/ function(module, exports) {\n\n\t// Build out our basic SafeString type\n\t'use strict';\n\n\texports.__esModule = true;\n\tfunction SafeString(string) {\n\t  this.string = string;\n\t}\n\n\tSafeString.prototype.toString = SafeString.prototype.toHTML = function () {\n\t  return '' + this.string;\n\t};\n\n\texports['default'] = SafeString;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 21 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar _interopRequireWildcard = __webpack_require__(1)['default'];\n\n\tvar _interopRequireDefault = __webpack_require__(2)['default'];\n\n\texports.__esModule = true;\n\texports.checkRevision = checkRevision;\n\texports.template = template;\n\texports.wrapProgram = wrapProgram;\n\texports.resolvePartial = resolvePartial;\n\texports.invokePartial = invokePartial;\n\texports.noop = noop;\n\n\tvar _utils = __webpack_require__(4);\n\n\tvar Utils = _interopRequireWildcard(_utils);\n\n\tvar _exception = __webpack_require__(5);\n\n\tvar _exception2 = _interopRequireDefault(_exception);\n\n\tvar _base = __webpack_require__(3);\n\n\tfunction checkRevision(compilerInfo) {\n\t  var compilerRevision = compilerInfo && compilerInfo[0] || 1,\n\t      currentRevision = _base.COMPILER_REVISION;\n\n\t  if (compilerRevision !== currentRevision) {\n\t    if (compilerRevision < currentRevision) {\n\t      var runtimeVersions = _base.REVISION_CHANGES[currentRevision],\n\t          compilerVersions = _base.REVISION_CHANGES[compilerRevision];\n\t      throw new _exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').');\n\t    } else {\n\t      // Use the embedded version info since the runtime doesn't know about this revision yet\n\t      throw new _exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').');\n\t    }\n\t  }\n\t}\n\n\tfunction template(templateSpec, env) {\n\t  /* istanbul ignore next */\n\t  if (!env) {\n\t    throw new _exception2['default']('No environment passed to template');\n\t  }\n\t  if (!templateSpec || !templateSpec.main) {\n\t    throw new _exception2['default']('Unknown template object: ' + typeof templateSpec);\n\t  }\n\n\t  templateSpec.main.decorator = templateSpec.main_d;\n\n\t  // Note: Using env.VM references rather than local var references throughout this section to allow\n\t  // for external users to override these as psuedo-supported APIs.\n\t  env.VM.checkRevision(templateSpec.compiler);\n\n\t  function invokePartialWrapper(partial, context, options) {\n\t    if (options.hash) {\n\t      context = Utils.extend({}, context, options.hash);\n\t      if (options.ids) {\n\t        options.ids[0] = true;\n\t      }\n\t    }\n\n\t    partial = env.VM.resolvePartial.call(this, partial, context, options);\n\t    var result = env.VM.invokePartial.call(this, partial, context, options);\n\n\t    if (result == null && env.compile) {\n\t      options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);\n\t      result = options.partials[options.name](context, options);\n\t    }\n\t    if (result != null) {\n\t      if (options.indent) {\n\t        var lines = result.split('\\n');\n\t        for (var i = 0, l = lines.length; i < l; i++) {\n\t          if (!lines[i] && i + 1 === l) {\n\t            break;\n\t          }\n\n\t          lines[i] = options.indent + lines[i];\n\t        }\n\t        result = lines.join('\\n');\n\t      }\n\t      return result;\n\t    } else {\n\t      throw new _exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode');\n\t    }\n\t  }\n\n\t  // Just add water\n\t  var container = {\n\t    strict: function strict(obj, name) {\n\t      if (!(name in obj)) {\n\t        throw new _exception2['default']('\"' + name + '\" not defined in ' + obj);\n\t      }\n\t      return obj[name];\n\t    },\n\t    lookup: function lookup(depths, name) {\n\t      var len = depths.length;\n\t      for (var i = 0; i < len; i++) {\n\t        if (depths[i] && depths[i][name] != null) {\n\t          return depths[i][name];\n\t        }\n\t      }\n\t    },\n\t    lambda: function lambda(current, context) {\n\t      return typeof current === 'function' ? current.call(context) : current;\n\t    },\n\n\t    escapeExpression: Utils.escapeExpression,\n\t    invokePartial: invokePartialWrapper,\n\n\t    fn: function fn(i) {\n\t      var ret = templateSpec[i];\n\t      ret.decorator = templateSpec[i + '_d'];\n\t      return ret;\n\t    },\n\n\t    programs: [],\n\t    program: function program(i, data, declaredBlockParams, blockParams, depths) {\n\t      var programWrapper = this.programs[i],\n\t          fn = this.fn(i);\n\t      if (data || depths || blockParams || declaredBlockParams) {\n\t        programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths);\n\t      } else if (!programWrapper) {\n\t        programWrapper = this.programs[i] = wrapProgram(this, i, fn);\n\t      }\n\t      return programWrapper;\n\t    },\n\n\t    data: function data(value, depth) {\n\t      while (value && depth--) {\n\t        value = value._parent;\n\t      }\n\t      return value;\n\t    },\n\t    merge: function merge(param, common) {\n\t      var obj = param || common;\n\n\t      if (param && common && param !== common) {\n\t        obj = Utils.extend({}, common, param);\n\t      }\n\n\t      return obj;\n\t    },\n\n\t    noop: env.VM.noop,\n\t    compilerInfo: templateSpec.compiler\n\t  };\n\n\t  function ret(context) {\n\t    var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n\t    var data = options.data;\n\n\t    ret._setup(options);\n\t    if (!options.partial && templateSpec.useData) {\n\t      data = initData(context, data);\n\t    }\n\t    var depths = undefined,\n\t        blockParams = templateSpec.useBlockParams ? [] : undefined;\n\t    if (templateSpec.useDepths) {\n\t      if (options.depths) {\n\t        depths = context != options.depths[0] ? [context].concat(options.depths) : options.depths;\n\t      } else {\n\t        depths = [context];\n\t      }\n\t    }\n\n\t    function main(context /*, options*/) {\n\t      return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths);\n\t    }\n\t    main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams);\n\t    return main(context, options);\n\t  }\n\t  ret.isTop = true;\n\n\t  ret._setup = function (options) {\n\t    if (!options.partial) {\n\t      container.helpers = container.merge(options.helpers, env.helpers);\n\n\t      if (templateSpec.usePartial) {\n\t        container.partials = container.merge(options.partials, env.partials);\n\t      }\n\t      if (templateSpec.usePartial || templateSpec.useDecorators) {\n\t        container.decorators = container.merge(options.decorators, env.decorators);\n\t      }\n\t    } else {\n\t      container.helpers = options.helpers;\n\t      container.partials = options.partials;\n\t      container.decorators = options.decorators;\n\t    }\n\t  };\n\n\t  ret._child = function (i, data, blockParams, depths) {\n\t    if (templateSpec.useBlockParams && !blockParams) {\n\t      throw new _exception2['default']('must pass block params');\n\t    }\n\t    if (templateSpec.useDepths && !depths) {\n\t      throw new _exception2['default']('must pass parent depths');\n\t    }\n\n\t    return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths);\n\t  };\n\t  return ret;\n\t}\n\n\tfunction wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) {\n\t  function prog(context) {\n\t    var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n\t    var currentDepths = depths;\n\t    if (depths && context != depths[0]) {\n\t      currentDepths = [context].concat(depths);\n\t    }\n\n\t    return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths);\n\t  }\n\n\t  prog = executeDecorators(fn, prog, container, depths, data, blockParams);\n\n\t  prog.program = i;\n\t  prog.depth = depths ? depths.length : 0;\n\t  prog.blockParams = declaredBlockParams || 0;\n\t  return prog;\n\t}\n\n\tfunction resolvePartial(partial, context, options) {\n\t  if (!partial) {\n\t    if (options.name === '@partial-block') {\n\t      var data = options.data;\n\t      while (data['partial-block'] === noop) {\n\t        data = data._parent;\n\t      }\n\t      partial = data['partial-block'];\n\t      data['partial-block'] = noop;\n\t    } else {\n\t      partial = options.partials[options.name];\n\t    }\n\t  } else if (!partial.call && !options.name) {\n\t    // This is a dynamic partial that returned a string\n\t    options.name = partial;\n\t    partial = options.partials[partial];\n\t  }\n\t  return partial;\n\t}\n\n\tfunction invokePartial(partial, context, options) {\n\t  options.partial = true;\n\t  if (options.ids) {\n\t    options.data.contextPath = options.ids[0] || options.data.contextPath;\n\t  }\n\n\t  var partialBlock = undefined;\n\t  if (options.fn && options.fn !== noop) {\n\t    options.data = _base.createFrame(options.data);\n\t    partialBlock = options.data['partial-block'] = options.fn;\n\n\t    if (partialBlock.partials) {\n\t      options.partials = Utils.extend({}, options.partials, partialBlock.partials);\n\t    }\n\t  }\n\n\t  if (partial === undefined && partialBlock) {\n\t    partial = partialBlock;\n\t  }\n\n\t  if (partial === undefined) {\n\t    throw new _exception2['default']('The partial ' + options.name + ' could not be found');\n\t  } else if (partial instanceof Function) {\n\t    return partial(context, options);\n\t  }\n\t}\n\n\tfunction noop() {\n\t  return '';\n\t}\n\n\tfunction initData(context, data) {\n\t  if (!data || !('root' in data)) {\n\t    data = data ? _base.createFrame(data) : {};\n\t    data.root = context;\n\t  }\n\t  return data;\n\t}\n\n\tfunction executeDecorators(fn, prog, container, depths, data, blockParams) {\n\t  if (fn.decorator) {\n\t    var props = {};\n\t    prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths);\n\t    Utils.extend(prog, props);\n\t  }\n\t  return prog;\n\t}\n\n/***/ },\n/* 22 */\n/***/ function(module, exports) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {/* global window */\n\t'use strict';\n\n\texports.__esModule = true;\n\n\texports['default'] = function (Handlebars) {\n\t  /* istanbul ignore next */\n\t  var root = typeof global !== 'undefined' ? global : window,\n\t      $Handlebars = root.Handlebars;\n\t  /* istanbul ignore next */\n\t  Handlebars.noConflict = function () {\n\t    if (root.Handlebars === Handlebars) {\n\t      root.Handlebars = $Handlebars;\n\t    }\n\t    return Handlebars;\n\t  };\n\t};\n\n\tmodule.exports = exports['default'];\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ }\n/******/ ])\n});\n;","/**\n * Created by papostol on 27/01/2015.\n */\n\nHandlebars.initNS = function (ns, obj) {\n  var global = (function () {\n    return this;\n  })(), levels = ns.split('.'), first = levels.shift();\n  obj = obj || global;\n  obj[first] = obj[first] || {};\n  if (levels.length) {\n    Handlebars.initNS(levels.join('.'), obj[first]);\n  }\n  return obj[first];\n};"]}