jumbo-jekyll-theme 1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (243) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +21 -0
  3. data/README.md +19 -0
  4. data/_data/authors.yml +7 -0
  5. data/_data/footer.yml +51 -0
  6. data/_data/nav.yml +78 -0
  7. data/_data/news.yaml +230 -0
  8. data/_data/settings.yml +113 -0
  9. data/_data/sidebar-nav.yml +23 -0
  10. data/_data/sticky-nav.yml +21 -0
  11. data/_includes/breadcrumb.html +101 -0
  12. data/_includes/css.html +9 -0
  13. data/_includes/custom.html +1 -0
  14. data/_includes/display-blog-posts.html +16 -0
  15. data/_includes/disqus-comments.html +14 -0
  16. data/_includes/footer.html +51 -0
  17. data/_includes/google-analytics-script.html +9 -0
  18. data/_includes/gtm-noscript.html +5 -0
  19. data/_includes/gtm-script.html +9 -0
  20. data/_includes/head.html +41 -0
  21. data/_includes/image.html +6 -0
  22. data/_includes/javascript.html +11 -0
  23. data/_includes/jumbotron.html +54 -0
  24. data/_includes/linaro-svg.html +1 -0
  25. data/_includes/media.html +11 -0
  26. data/_includes/members.html +63 -0
  27. data/_includes/nav.html +133 -0
  28. data/_includes/newsletter.html +35 -0
  29. data/_includes/owl-carousel-homepage.html +103 -0
  30. data/_includes/pagination.html +39 -0
  31. data/_includes/post-comments.html +9 -0
  32. data/_includes/post-sidebar.html +59 -0
  33. data/_includes/post-tags.html +13 -0
  34. data/_includes/shape-divider.html +14 -0
  35. data/_includes/shape.html +52 -0
  36. data/_includes/sidebar.html +47 -0
  37. data/_includes/sticky-tab-bar.html +51 -0
  38. data/_includes/youtube.html +7 -0
  39. data/_layouts/container-breadcrumb-left-sidebar.html +10 -0
  40. data/_layouts/container-breadcrumb-right-sidebar.html +9 -0
  41. data/_layouts/container-breadcrumb.html +6 -0
  42. data/_layouts/container-left-sidebar.html +9 -0
  43. data/_layouts/container-right-sidebar.html +9 -0
  44. data/_layouts/container.html +8 -0
  45. data/_layouts/default.html +27 -0
  46. data/_layouts/full-width-breadcrumb.html +10 -0
  47. data/_layouts/full-width.html +9 -0
  48. data/_layouts/home.html +17 -0
  49. data/_layouts/post-featured-image-no-sidebar.html +0 -0
  50. data/_layouts/post-featured-image.html +129 -0
  51. data/_layouts/post-index.html +15 -0
  52. data/_layouts/post-no-sidebar.html +0 -0
  53. data/_layouts/post.html +71 -0
  54. data/_plugins/jekyll_get.rb +40 -0
  55. data/_sass/_bootstrap-compass.scss +9 -0
  56. data/_sass/_bootstrap-mincer.scss +19 -0
  57. data/_sass/_bootstrap-sprockets.scss +9 -0
  58. data/_sass/_bootstrap.scss +56 -0
  59. data/_sass/blog.scss +8 -0
  60. data/_sass/bootstrap/_alerts.scss +73 -0
  61. data/_sass/bootstrap/_badges.scss +68 -0
  62. data/_sass/bootstrap/_breadcrumbs.scss +28 -0
  63. data/_sass/bootstrap/_button-groups.scss +244 -0
  64. data/_sass/bootstrap/_buttons.scss +168 -0
  65. data/_sass/bootstrap/_carousel.scss +270 -0
  66. data/_sass/bootstrap/_close.scss +36 -0
  67. data/_sass/bootstrap/_code.scss +69 -0
  68. data/_sass/bootstrap/_component-animations.scss +37 -0
  69. data/_sass/bootstrap/_dropdowns.scss +216 -0
  70. data/_sass/bootstrap/_forms.scss +617 -0
  71. data/_sass/bootstrap/_glyphicons.scss +307 -0
  72. data/_sass/bootstrap/_grid.scss +84 -0
  73. data/_sass/bootstrap/_input-groups.scss +171 -0
  74. data/_sass/bootstrap/_jumbotron.scss +54 -0
  75. data/_sass/bootstrap/_labels.scss +66 -0
  76. data/_sass/bootstrap/_list-group.scss +130 -0
  77. data/_sass/bootstrap/_media.scss +66 -0
  78. data/_sass/bootstrap/_mixins.scss +40 -0
  79. data/_sass/bootstrap/_modals.scss +150 -0
  80. data/_sass/bootstrap/_navbar.scss +662 -0
  81. data/_sass/bootstrap/_navs.scss +242 -0
  82. data/_sass/bootstrap/_normalize.scss +424 -0
  83. data/_sass/bootstrap/_pager.scss +54 -0
  84. data/_sass/bootstrap/_pagination.scss +89 -0
  85. data/_sass/bootstrap/_panels.scss +271 -0
  86. data/_sass/bootstrap/_popovers.scss +131 -0
  87. data/_sass/bootstrap/_print.scss +101 -0
  88. data/_sass/bootstrap/_progress-bars.scss +87 -0
  89. data/_sass/bootstrap/_responsive-embed.scss +35 -0
  90. data/_sass/bootstrap/_responsive-utilities.scss +179 -0
  91. data/_sass/bootstrap/_scaffolding.scss +161 -0
  92. data/_sass/bootstrap/_tables.scss +234 -0
  93. data/_sass/bootstrap/_theme.scss +291 -0
  94. data/_sass/bootstrap/_thumbnails.scss +38 -0
  95. data/_sass/bootstrap/_tooltip.scss +101 -0
  96. data/_sass/bootstrap/_type.scss +298 -0
  97. data/_sass/bootstrap/_utilities.scss +55 -0
  98. data/_sass/bootstrap/_variables.scss +898 -0
  99. data/_sass/bootstrap/_wells.scss +29 -0
  100. data/_sass/bootstrap/mixins/_alerts.scss +14 -0
  101. data/_sass/bootstrap/mixins/_background-variant.scss +12 -0
  102. data/_sass/bootstrap/mixins/_border-radius.scss +18 -0
  103. data/_sass/bootstrap/mixins/_buttons.scss +65 -0
  104. data/_sass/bootstrap/mixins/_center-block.scss +7 -0
  105. data/_sass/bootstrap/mixins/_clearfix.scss +22 -0
  106. data/_sass/bootstrap/mixins/_forms.scss +88 -0
  107. data/_sass/bootstrap/mixins/_gradients.scss +58 -0
  108. data/_sass/bootstrap/mixins/_grid-framework.scss +81 -0
  109. data/_sass/bootstrap/mixins/_grid.scss +122 -0
  110. data/_sass/bootstrap/mixins/_hide-text.scss +21 -0
  111. data/_sass/bootstrap/mixins/_image.scss +33 -0
  112. data/_sass/bootstrap/mixins/_labels.scss +12 -0
  113. data/_sass/bootstrap/mixins/_list-group.scss +32 -0
  114. data/_sass/bootstrap/mixins/_nav-divider.scss +10 -0
  115. data/_sass/bootstrap/mixins/_nav-vertical-align.scss +9 -0
  116. data/_sass/bootstrap/mixins/_opacity.scss +8 -0
  117. data/_sass/bootstrap/mixins/_pagination.scss +24 -0
  118. data/_sass/bootstrap/mixins/_panels.scss +24 -0
  119. data/_sass/bootstrap/mixins/_progress-bar.scss +10 -0
  120. data/_sass/bootstrap/mixins/_reset-filter.scss +8 -0
  121. data/_sass/bootstrap/mixins/_reset-text.scss +18 -0
  122. data/_sass/bootstrap/mixins/_resize.scss +6 -0
  123. data/_sass/bootstrap/mixins/_responsive-visibility.scss +21 -0
  124. data/_sass/bootstrap/mixins/_size.scss +10 -0
  125. data/_sass/bootstrap/mixins/_tab-focus.scss +9 -0
  126. data/_sass/bootstrap/mixins/_table-row.scss +28 -0
  127. data/_sass/bootstrap/mixins/_text-emphasis.scss +12 -0
  128. data/_sass/bootstrap/mixins/_text-overflow.scss +8 -0
  129. data/_sass/bootstrap/mixins/_vendor-prefixes.scss +222 -0
  130. data/_sass/core.scss +9 -0
  131. data/_sass/core/404.scss +189 -0
  132. data/_sass/core/animations.scss +125 -0
  133. data/_sass/core/blog.scss +348 -0
  134. data/_sass/core/breadcrumb.scss +90 -0
  135. data/_sass/core/carousel-styles.scss +3 -0
  136. data/_sass/core/carousel.scss +175 -0
  137. data/_sass/core/cookieconsent.scss +42 -0
  138. data/_sass/core/critical.scss +0 -0
  139. data/_sass/core/custom.scss +3 -0
  140. data/_sass/core/fa.scss +2336 -0
  141. data/_sass/core/flipclock.scss +435 -0
  142. data/_sass/core/font-awesome.min.scss +4 -0
  143. data/_sass/core/fonts.scss +0 -0
  144. data/_sass/core/footer.scss +140 -0
  145. data/_sass/core/forms.scss +3 -0
  146. data/_sass/core/homepage.scss +79 -0
  147. data/_sass/core/lightbox.scss +213 -0
  148. data/_sass/core/nav.scss +770 -0
  149. data/_sass/core/owl.carousel.min.scss +6 -0
  150. data/_sass/core/owl.theme.default.min.scss +6 -0
  151. data/_sass/core/social-media-icons.scss +71 -0
  152. data/_sass/core/syntax.scss +65 -0
  153. data/_sass/core/tables.scss +125 -0
  154. data/_sass/core/theme.scss +418 -0
  155. data/_sass/custom.scss +0 -0
  156. data/assets/css/app/about.scss +47 -0
  157. data/assets/css/app/blog.scss +48 -0
  158. data/assets/css/app/custom.scss +670 -0
  159. data/assets/css/app/overrides.scss +20 -0
  160. data/assets/css/app/planet.scss +10 -0
  161. data/assets/css/app/press.scss +24 -0
  162. data/assets/css/app/social.scss +29 -0
  163. data/assets/css/app/twitter-feed.scss +414 -0
  164. data/assets/css/app/work.scss +151 -0
  165. data/assets/css/app/youtube.scss +65 -0
  166. data/assets/css/main-404.scss +17 -0
  167. data/assets/css/main-blog.scss +18 -0
  168. data/assets/css/main-home.scss +28 -0
  169. data/assets/css/main-lightbox.scss +28 -0
  170. data/assets/css/main.scss +27 -0
  171. data/assets/fonts/fontawesome-webfont.eot +0 -0
  172. data/assets/fonts/fontawesome-webfont.svg +2671 -0
  173. data/assets/fonts/fontawesome-webfont.ttf +0 -0
  174. data/assets/fonts/fontawesome-webfont.woff +0 -0
  175. data/assets/fonts/fontawesome-webfont.woff2 +0 -0
  176. data/assets/fonts/fontello.eot +0 -0
  177. data/assets/fonts/fontello.svg +44 -0
  178. data/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  179. data/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  180. data/assets/fonts/glyphicons-halflings-regular.woff2 +0 -0
  181. data/assets/images/96boards-Logo.svg +1 -0
  182. data/assets/images/Linaro-Logo.svg +1 -0
  183. data/assets/images/Linaro-Logo_light.png +0 -0
  184. data/assets/images/Linaro-Logo_standard.svg +1 -0
  185. data/assets/images/Linaro-Sprinkle.svg +13 -0
  186. data/assets/images/avatar-placeholder.png +0 -0
  187. data/assets/images/background-image.jpg +0 -0
  188. data/assets/images/banner.jpg +0 -0
  189. data/assets/images/close.png +0 -0
  190. data/assets/images/css3.png +0 -0
  191. data/assets/images/favicon.ico +0 -0
  192. data/assets/images/favicon.png +0 -0
  193. data/assets/images/html5.png +0 -0
  194. data/assets/images/jekyll.svg +1 -0
  195. data/assets/images/js.jpeg +0 -0
  196. data/assets/images/loading.gif +0 -0
  197. data/assets/images/next.png +0 -0
  198. data/assets/images/owl.video.play.png +0 -0
  199. data/assets/images/placeholder.png +0 -0
  200. data/assets/images/prev.png +0 -0
  201. data/assets/images/social-media-image.png +0 -0
  202. data/assets/js/app/developer-services.js +26 -0
  203. data/assets/js/app/facebook.js +8 -0
  204. data/assets/js/app/home.js +46 -0
  205. data/assets/js/app/main.js +145 -0
  206. data/assets/js/app/mixitup.js +23 -0
  207. data/assets/js/app/openhours-timer.js +23 -0
  208. data/assets/js/app/rss.js +96 -0
  209. data/assets/js/app/search-page.js +40 -0
  210. data/assets/js/app/sticky-navbar.js +65 -0
  211. data/assets/js/app/tables.js +35 -0
  212. data/assets/js/package-blog.js +10 -0
  213. data/assets/js/package-developer-services.js +10 -0
  214. data/assets/js/package-extended.js +12 -0
  215. data/assets/js/package-home.js +10 -0
  216. data/assets/js/package-main.js +8 -0
  217. data/assets/js/package-openhours.js +10 -0
  218. data/assets/js/package-rss.js +11 -0
  219. data/assets/js/package-search.js +9 -0
  220. data/assets/js/package-services.js +6 -0
  221. data/assets/js/package-sticky.js +9 -0
  222. data/assets/js/package-work.js +12 -0
  223. data/assets/js/vendor/bootstrap.min.js +7 -0
  224. data/assets/js/vendor/cognito.js +11 -0
  225. data/assets/js/vendor/cookieconsent.min.js +8 -0
  226. data/assets/js/vendor/filtrify.js +11 -0
  227. data/assets/js/vendor/flipclock.min.js +2 -0
  228. data/assets/js/vendor/jquery.min.js +4 -0
  229. data/assets/js/vendor/jquery.rss.min.js +333 -0
  230. data/assets/js/vendor/jquery.validate.min.js +4 -0
  231. data/assets/js/vendor/lazysizes.min.js +2 -0
  232. data/assets/js/vendor/lightbox.js +519 -0
  233. data/assets/js/vendor/loadCSS.js +35 -0
  234. data/assets/js/vendor/loadCSS.min.js +2 -0
  235. data/assets/js/vendor/ls.unveilhooks.js +145 -0
  236. data/assets/js/vendor/mc-validate.js +14 -0
  237. data/assets/js/vendor/moment.min.js +1 -0
  238. data/assets/js/vendor/owl.carousel.min.js +103 -0
  239. data/assets/js/vendor/picturefill.min.js +5 -0
  240. data/assets/js/vendor/shuffle.js +2004 -0
  241. data/assets/js/vendor/twitter.js +129 -0
  242. data/robots.txt +9 -0
  243. metadata +509 -0
@@ -0,0 +1,4 @@
1
+ /*! jQuery Validation Plugin - v1.17.0 - 7/29/2017
2
+ * https://jqueryvalidation.org/
3
+ * Copyright (c) 2017 Jörn Zaefferer; Licensed MIT */
4
+ !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){a.extend(a.fn,{validate:function(b){if(!this.length)return void(b&&b.debug&&window.console&&console.warn("Nothing selected, can't validate, returning nothing."));var c=a.data(this[0],"validator");return c?c:(this.attr("novalidate","novalidate"),c=new a.validator(b,this[0]),a.data(this[0],"validator",c),c.settings.onsubmit&&(this.on("click.validate",":submit",function(b){c.submitButton=b.currentTarget,a(this).hasClass("cancel")&&(c.cancelSubmit=!0),void 0!==a(this).attr("formnovalidate")&&(c.cancelSubmit=!0)}),this.on("submit.validate",function(b){function d(){var d,e;return c.submitButton&&(c.settings.submitHandler||c.formSubmitted)&&(d=a("<input type='hidden'/>").attr("name",c.submitButton.name).val(a(c.submitButton).val()).appendTo(c.currentForm)),!c.settings.submitHandler||(e=c.settings.submitHandler.call(c,c.currentForm,b),d&&d.remove(),void 0!==e&&e)}return c.settings.debug&&b.preventDefault(),c.cancelSubmit?(c.cancelSubmit=!1,d()):c.form()?c.pendingRequest?(c.formSubmitted=!0,!1):d():(c.focusInvalid(),!1)})),c)},valid:function(){var b,c,d;return a(this[0]).is("form")?b=this.validate().form():(d=[],b=!0,c=a(this[0].form).validate(),this.each(function(){b=c.element(this)&&b,b||(d=d.concat(c.errorList))}),c.errorList=d),b},rules:function(b,c){var d,e,f,g,h,i,j=this[0];if(null!=j&&(!j.form&&j.hasAttribute("contenteditable")&&(j.form=this.closest("form")[0],j.name=this.attr("name")),null!=j.form)){if(b)switch(d=a.data(j.form,"validator").settings,e=d.rules,f=a.validator.staticRules(j),b){case"add":a.extend(f,a.validator.normalizeRule(c)),delete f.messages,e[j.name]=f,c.messages&&(d.messages[j.name]=a.extend(d.messages[j.name],c.messages));break;case"remove":return c?(i={},a.each(c.split(/\s/),function(a,b){i[b]=f[b],delete f[b]}),i):(delete e[j.name],f)}return g=a.validator.normalizeRules(a.extend({},a.validator.classRules(j),a.validator.attributeRules(j),a.validator.dataRules(j),a.validator.staticRules(j)),j),g.required&&(h=g.required,delete g.required,g=a.extend({required:h},g)),g.remote&&(h=g.remote,delete g.remote,g=a.extend(g,{remote:h})),g}}}),a.extend(a.expr.pseudos||a.expr[":"],{blank:function(b){return!a.trim(""+a(b).val())},filled:function(b){var c=a(b).val();return null!==c&&!!a.trim(""+c)},unchecked:function(b){return!a(b).prop("checked")}}),a.validator=function(b,c){this.settings=a.extend(!0,{},a.validator.defaults,b),this.currentForm=c,this.init()},a.validator.format=function(b,c){return 1===arguments.length?function(){var c=a.makeArray(arguments);return c.unshift(b),a.validator.format.apply(this,c)}:void 0===c?b:(arguments.length>2&&c.constructor!==Array&&(c=a.makeArray(arguments).slice(1)),c.constructor!==Array&&(c=[c]),a.each(c,function(a,c){b=b.replace(new RegExp("\\{"+a+"\\}","g"),function(){return c})}),b)},a.extend(a.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",pendingClass:"pending",validClass:"valid",errorElement:"label",focusCleanup:!1,focusInvalid:!0,errorContainer:a([]),errorLabelContainer:a([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(a){this.lastActive=a,this.settings.focusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass),this.hideThese(this.errorsFor(a)))},onfocusout:function(a){this.checkable(a)||!(a.name in this.submitted)&&this.optional(a)||this.element(a)},onkeyup:function(b,c){var d=[16,17,18,20,35,36,37,38,39,40,45,144,225];9===c.which&&""===this.elementValue(b)||a.inArray(c.keyCode,d)!==-1||(b.name in this.submitted||b.name in this.invalid)&&this.element(b)},onclick:function(a){a.name in this.submitted?this.element(a):a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).addClass(c).removeClass(d):a(b).addClass(c).removeClass(d)},unhighlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).removeClass(c).addClass(d):a(b).removeClass(c).addClass(d)}},setDefaults:function(b){a.extend(a.validator.defaults,b)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",equalTo:"Please enter the same value again.",maxlength:a.validator.format("Please enter no more than {0} characters."),minlength:a.validator.format("Please enter at least {0} characters."),rangelength:a.validator.format("Please enter a value between {0} and {1} characters long."),range:a.validator.format("Please enter a value between {0} and {1}."),max:a.validator.format("Please enter a value less than or equal to {0}."),min:a.validator.format("Please enter a value greater than or equal to {0}."),step:a.validator.format("Please enter a multiple of {0}.")},autoCreateRanges:!1,prototype:{init:function(){function b(b){!this.form&&this.hasAttribute("contenteditable")&&(this.form=a(this).closest("form")[0],this.name=a(this).attr("name"));var c=a.data(this.form,"validator"),d="on"+b.type.replace(/^validate/,""),e=c.settings;e[d]&&!a(this).is(e.ignore)&&e[d].call(c,this,b)}this.labelContainer=a(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||a(this.currentForm),this.containers=a(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var c,d=this.groups={};a.each(this.settings.groups,function(b,c){"string"==typeof c&&(c=c.split(/\s/)),a.each(c,function(a,c){d[c]=b})}),c=this.settings.rules,a.each(c,function(b,d){c[b]=a.validator.normalizeRule(d)}),a(this.currentForm).on("focusin.validate focusout.validate keyup.validate",":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], [type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox'], [contenteditable], [type='button']",b).on("click.validate","select, option, [type='radio'], [type='checkbox']",b),this.settings.invalidHandler&&a(this.currentForm).on("invalid-form.validate",this.settings.invalidHandler)},form:function(){return this.checkForm(),a.extend(this.submitted,this.errorMap),this.invalid=a.extend({},this.errorMap),this.valid()||a(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(b){var c,d,e=this.clean(b),f=this.validationTargetFor(e),g=this,h=!0;return void 0===f?delete this.invalid[e.name]:(this.prepareElement(f),this.currentElements=a(f),d=this.groups[f.name],d&&a.each(this.groups,function(a,b){b===d&&a!==f.name&&(e=g.validationTargetFor(g.clean(g.findByName(a))),e&&e.name in g.invalid&&(g.currentElements.push(e),h=g.check(e)&&h))}),c=this.check(f)!==!1,h=h&&c,c?this.invalid[f.name]=!1:this.invalid[f.name]=!0,this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),a(b).attr("aria-invalid",!c)),h},showErrors:function(b){if(b){var c=this;a.extend(this.errorMap,b),this.errorList=a.map(this.errorMap,function(a,b){return{message:a,element:c.findByName(b)[0]}}),this.successList=a.grep(this.successList,function(a){return!(a.name in b)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){a.fn.resetForm&&a(this.currentForm).resetForm(),this.invalid={},this.submitted={},this.prepareForm(),this.hideErrors();var b=this.elements().removeData("previousValue").removeAttr("aria-invalid");this.resetElements(b)},resetElements:function(a){var b;if(this.settings.unhighlight)for(b=0;a[b];b++)this.settings.unhighlight.call(this,a[b],this.settings.errorClass,""),this.findByName(a[b].name).removeClass(this.settings.validClass);else a.removeClass(this.settings.errorClass).removeClass(this.settings.validClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b,c=0;for(b in a)void 0!==a[b]&&null!==a[b]&&a[b]!==!1&&c++;return c},hideErrors:function(){this.hideThese(this.toHide)},hideThese:function(a){a.not(this.containers).text(""),this.addWrapper(a).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{a(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(b){}},findLastActive:function(){var b=this.lastActive;return b&&1===a.grep(this.errorList,function(a){return a.element.name===b.name}).length&&b},elements:function(){var b=this,c={};return a(this.currentForm).find("input, select, textarea, [contenteditable]").not(":submit, :reset, :image, :disabled").not(this.settings.ignore).filter(function(){var d=this.name||a(this).attr("name");return!d&&b.settings.debug&&window.console&&console.error("%o has no name assigned",this),this.hasAttribute("contenteditable")&&(this.form=a(this).closest("form")[0],this.name=d),!(d in c||!b.objectLength(a(this).rules()))&&(c[d]=!0,!0)})},clean:function(b){return a(b)[0]},errors:function(){var b=this.settings.errorClass.split(" ").join(".");return a(this.settings.errorElement+"."+b,this.errorContext)},resetInternals:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=a([]),this.toHide=a([])},reset:function(){this.resetInternals(),this.currentElements=a([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset(),this.toHide=this.errorsFor(a)},elementValue:function(b){var c,d,e=a(b),f=b.type;return"radio"===f||"checkbox"===f?this.findByName(b.name).filter(":checked").val():"number"===f&&"undefined"!=typeof b.validity?b.validity.badInput?"NaN":e.val():(c=b.hasAttribute("contenteditable")?e.text():e.val(),"file"===f?"C:\\fakepath\\"===c.substr(0,12)?c.substr(12):(d=c.lastIndexOf("/"),d>=0?c.substr(d+1):(d=c.lastIndexOf("\\"),d>=0?c.substr(d+1):c)):"string"==typeof c?c.replace(/\r/g,""):c)},check:function(b){b=this.validationTargetFor(this.clean(b));var c,d,e,f,g=a(b).rules(),h=a.map(g,function(a,b){return b}).length,i=!1,j=this.elementValue(b);if("function"==typeof g.normalizer?f=g.normalizer:"function"==typeof this.settings.normalizer&&(f=this.settings.normalizer),f){if(j=f.call(b,j),"string"!=typeof j)throw new TypeError("The normalizer should return a string value.");delete g.normalizer}for(d in g){e={method:d,parameters:g[d]};try{if(c=a.validator.methods[d].call(this,j,b,e.parameters),"dependency-mismatch"===c&&1===h){i=!0;continue}if(i=!1,"pending"===c)return void(this.toHide=this.toHide.not(this.errorsFor(b)));if(!c)return this.formatAndAdd(b,e),!1}catch(k){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+b.id+", check the '"+e.method+"' method.",k),k instanceof TypeError&&(k.message+=". Exception occurred when checking element "+b.id+", check the '"+e.method+"' method."),k}}if(!i)return this.objectLength(g)&&this.successList.push(b),!0},customDataMessage:function(b,c){return a(b).data("msg"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase())||a(b).data("msg")},customMessage:function(a,b){var c=this.settings.messages[a];return c&&(c.constructor===String?c:c[b])},findDefined:function(){for(var a=0;a<arguments.length;a++)if(void 0!==arguments[a])return arguments[a]},defaultMessage:function(b,c){"string"==typeof c&&(c={method:c});var d=this.findDefined(this.customMessage(b.name,c.method),this.customDataMessage(b,c.method),!this.settings.ignoreTitle&&b.title||void 0,a.validator.messages[c.method],"<strong>Warning: No message defined for "+b.name+"</strong>"),e=/\$?\{(\d+)\}/g;return"function"==typeof d?d=d.call(this,c.parameters,b):e.test(d)&&(d=a.validator.format(d.replace(e,"{$1}"),c.parameters)),d},formatAndAdd:function(a,b){var c=this.defaultMessage(a,b);this.errorList.push({message:c,element:a,method:b.method}),this.errorMap[a.name]=c,this.submitted[a.name]=c},addWrapper:function(a){return this.settings.wrapper&&(a=a.add(a.parent(this.settings.wrapper))),a},defaultShowErrors:function(){var a,b,c;for(a=0;this.errorList[a];a++)c=this.errorList[a],this.settings.highlight&&this.settings.highlight.call(this,c.element,this.settings.errorClass,this.settings.validClass),this.showLabel(c.element,c.message);if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight)for(a=0,b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return a(this.errorList).map(function(){return this.element})},showLabel:function(b,c){var d,e,f,g,h=this.errorsFor(b),i=this.idOrName(b),j=a(b).attr("aria-describedby");h.length?(h.removeClass(this.settings.validClass).addClass(this.settings.errorClass),h.html(c)):(h=a("<"+this.settings.errorElement+">").attr("id",i+"-error").addClass(this.settings.errorClass).html(c||""),d=h,this.settings.wrapper&&(d=h.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.length?this.labelContainer.append(d):this.settings.errorPlacement?this.settings.errorPlacement.call(this,d,a(b)):d.insertAfter(b),h.is("label")?h.attr("for",i):0===h.parents("label[for='"+this.escapeCssMeta(i)+"']").length&&(f=h.attr("id"),j?j.match(new RegExp("\\b"+this.escapeCssMeta(f)+"\\b"))||(j+=" "+f):j=f,a(b).attr("aria-describedby",j),e=this.groups[b.name],e&&(g=this,a.each(g.groups,function(b,c){c===e&&a("[name='"+g.escapeCssMeta(b)+"']",g.currentForm).attr("aria-describedby",h.attr("id"))})))),!c&&this.settings.success&&(h.text(""),"string"==typeof this.settings.success?h.addClass(this.settings.success):this.settings.success(h,b)),this.toShow=this.toShow.add(h)},errorsFor:function(b){var c=this.escapeCssMeta(this.idOrName(b)),d=a(b).attr("aria-describedby"),e="label[for='"+c+"'], label[for='"+c+"'] *";return d&&(e=e+", #"+this.escapeCssMeta(d).replace(/\s+/g,", #")),this.errors().filter(e)},escapeCssMeta:function(a){return a.replace(/([\\!"#$%&'()*+,.\/:;<=>?@\[\]^`{|}~])/g,"\\$1")},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(b){return this.checkable(b)&&(b=this.findByName(b.name)),a(b).not(this.settings.ignore)[0]},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(b){return a(this.currentForm).find("[name='"+this.escapeCssMeta(b)+"']")},getLength:function(b,c){switch(c.nodeName.toLowerCase()){case"select":return a("option:selected",c).length;case"input":if(this.checkable(c))return this.findByName(c.name).filter(":checked").length}return b.length},depend:function(a,b){return!this.dependTypes[typeof a]||this.dependTypes[typeof a](a,b)},dependTypes:{"boolean":function(a){return a},string:function(b,c){return!!a(b,c.form).length},"function":function(a,b){return a(b)}},optional:function(b){var c=this.elementValue(b);return!a.validator.methods.required.call(this,c,b)&&"dependency-mismatch"},startRequest:function(b){this.pending[b.name]||(this.pendingRequest++,a(b).addClass(this.settings.pendingClass),this.pending[b.name]=!0)},stopRequest:function(b,c){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],a(b).removeClass(this.settings.pendingClass),c&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(a(this.currentForm).submit(),this.submitButton&&a("input:hidden[name='"+this.submitButton.name+"']",this.currentForm).remove(),this.formSubmitted=!1):!c&&0===this.pendingRequest&&this.formSubmitted&&(a(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(b,c){return c="string"==typeof c&&c||"remote",a.data(b,"previousValue")||a.data(b,"previousValue",{old:null,valid:!0,message:this.defaultMessage(b,{method:c})})},destroy:function(){this.resetForm(),a(this.currentForm).off(".validate").removeData("validator").find(".validate-equalTo-blur").off(".validate-equalTo").removeClass("validate-equalTo-blur")}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(b,c){b.constructor===String?this.classRuleSettings[b]=c:a.extend(this.classRuleSettings,b)},classRules:function(b){var c={},d=a(b).attr("class");return d&&a.each(d.split(" "),function(){this in a.validator.classRuleSettings&&a.extend(c,a.validator.classRuleSettings[this])}),c},normalizeAttributeRule:function(a,b,c,d){/min|max|step/.test(c)&&(null===b||/number|range|text/.test(b))&&(d=Number(d),isNaN(d)&&(d=void 0)),d||0===d?a[c]=d:b===c&&"range"!==b&&(a[c]=!0)},attributeRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)"required"===c?(d=b.getAttribute(c),""===d&&(d=!0),d=!!d):d=f.attr(c),this.normalizeAttributeRule(e,g,c,d);return e.maxlength&&/-1|2147483647|524288/.test(e.maxlength)&&delete e.maxlength,e},dataRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)d=f.data("rule"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase()),this.normalizeAttributeRule(e,g,c,d);return e},staticRules:function(b){var c={},d=a.data(b.form,"validator");return d.settings.rules&&(c=a.validator.normalizeRule(d.settings.rules[b.name])||{}),c},normalizeRules:function(b,c){return a.each(b,function(d,e){if(e===!1)return void delete b[d];if(e.param||e.depends){var f=!0;switch(typeof e.depends){case"string":f=!!a(e.depends,c.form).length;break;case"function":f=e.depends.call(c,c)}f?b[d]=void 0===e.param||e.param:(a.data(c.form,"validator").resetElements(a(c)),delete b[d])}}),a.each(b,function(d,e){b[d]=a.isFunction(e)&&"normalizer"!==d?e(c):e}),a.each(["minlength","maxlength"],function(){b[this]&&(b[this]=Number(b[this]))}),a.each(["rangelength","range"],function(){var c;b[this]&&(a.isArray(b[this])?b[this]=[Number(b[this][0]),Number(b[this][1])]:"string"==typeof b[this]&&(c=b[this].replace(/[\[\]]/g,"").split(/[\s,]+/),b[this]=[Number(c[0]),Number(c[1])]))}),a.validator.autoCreateRanges&&(null!=b.min&&null!=b.max&&(b.range=[b.min,b.max],delete b.min,delete b.max),null!=b.minlength&&null!=b.maxlength&&(b.rangelength=[b.minlength,b.maxlength],delete b.minlength,delete b.maxlength)),b},normalizeRule:function(b){if("string"==typeof b){var c={};a.each(b.split(/\s/),function(){c[this]=!0}),b=c}return b},addMethod:function(b,c,d){a.validator.methods[b]=c,a.validator.messages[b]=void 0!==d?d:a.validator.messages[b],c.length<3&&a.validator.addClassRules(b,a.validator.normalizeRule(b))},methods:{required:function(b,c,d){if(!this.depend(d,c))return"dependency-mismatch";if("select"===c.nodeName.toLowerCase()){var e=a(c).val();return e&&e.length>0}return this.checkable(c)?this.getLength(b,c)>0:b.length>0},email:function(a,b){return this.optional(b)||/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(a)},url:function(a,b){return this.optional(b)||/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[\/?#]\S*)?$/i.test(a)},date:function(a,b){return this.optional(b)||!/Invalid|NaN/.test(new Date(a).toString())},dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(a)},number:function(a,b){return this.optional(b)||/^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},minlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e>=d},maxlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e<=d},rangelength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e>=d[0]&&e<=d[1]},min:function(a,b,c){return this.optional(b)||a>=c},max:function(a,b,c){return this.optional(b)||a<=c},range:function(a,b,c){return this.optional(b)||a>=c[0]&&a<=c[1]},step:function(b,c,d){var e,f=a(c).attr("type"),g="Step attribute on input type "+f+" is not supported.",h=["text","number","range"],i=new RegExp("\\b"+f+"\\b"),j=f&&!i.test(h.join()),k=function(a){var b=(""+a).match(/(?:\.(\d+))?$/);return b&&b[1]?b[1].length:0},l=function(a){return Math.round(a*Math.pow(10,e))},m=!0;if(j)throw new Error(g);return e=k(d),(k(b)>e||l(b)%l(d)!==0)&&(m=!1),this.optional(c)||m},equalTo:function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.not(".validate-equalTo-blur").length&&e.addClass("validate-equalTo-blur").on("blur.validate-equalTo",function(){a(c).valid()}),b===e.val()},remote:function(b,c,d,e){if(this.optional(c))return"dependency-mismatch";e="string"==typeof e&&e||"remote";var f,g,h,i=this.previousValue(c,e);return this.settings.messages[c.name]||(this.settings.messages[c.name]={}),i.originalMessage=i.originalMessage||this.settings.messages[c.name][e],this.settings.messages[c.name][e]=i.message,d="string"==typeof d&&{url:d}||d,h=a.param(a.extend({data:b},d.data)),i.old===h?i.valid:(i.old=h,f=this,this.startRequest(c),g={},g[c.name]=b,a.ajax(a.extend(!0,{mode:"abort",port:"validate"+c.name,dataType:"json",data:g,context:f.currentForm,success:function(a){var d,g,h,j=a===!0||"true"===a;f.settings.messages[c.name][e]=i.originalMessage,j?(h=f.formSubmitted,f.resetInternals(),f.toHide=f.errorsFor(c),f.formSubmitted=h,f.successList.push(c),f.invalid[c.name]=!1,f.showErrors()):(d={},g=a||f.defaultMessage(c,{method:e,parameters:b}),d[c.name]=i.message=g,f.invalid[c.name]=!0,f.showErrors(d)),i.valid=j,f.stopRequest(c,j)}},d)),"pending")}}});var b,c={};return a.ajaxPrefilter?a.ajaxPrefilter(function(a,b,d){var e=a.port;"abort"===a.mode&&(c[e]&&c[e].abort(),c[e]=d)}):(b=a.ajax,a.ajax=function(d){var e=("mode"in d?d:a.ajaxSettings).mode,f=("port"in d?d:a.ajaxSettings).port;return"abort"===e?(c[f]&&c[f].abort(),c[f]=b.apply(this,arguments),c[f]):b.apply(this,arguments)}),a});
@@ -0,0 +1,2 @@
1
+ /*! lazysizes - v4.0.0-rc1 */
2
+ !function(a,b){var c=b(a,a.document);a.lazySizes=c,"object"==typeof module&&module.exports&&(module.exports=c)}(window,function(a,b){"use strict";if(b.getElementsByClassName){var c,d,e=b.documentElement,f=a.Date,g=a.HTMLPictureElement,h="addEventListener",i="getAttribute",j=a[h],k=a.setTimeout,l=a.requestAnimationFrame||k,m=a.requestIdleCallback,n=/^picture$/i,o=["load","error","lazyincluded","_lazyloaded"],p={},q=Array.prototype.forEach,r=function(a,b){return p[b]||(p[b]=new RegExp("(\\s|^)"+b+"(\\s|$)")),p[b].test(a[i]("class")||"")&&p[b]},s=function(a,b){r(a,b)||a.setAttribute("class",(a[i]("class")||"").trim()+" "+b)},t=function(a,b){var c;(c=r(a,b))&&a.setAttribute("class",(a[i]("class")||"").replace(c," "))},u=function(a,b,c){var d=c?h:"removeEventListener";c&&u(a,b),o.forEach(function(c){a[d](c,b)})},v=function(a,d,e,f,g){var h=b.createEvent("CustomEvent");return e||(e={}),e.instance=c,h.initCustomEvent(d,!f,!g,e),a.dispatchEvent(h),h},w=function(b,c){var e;!g&&(e=a.picturefill||d.pf)?e({reevaluate:!0,elements:[b]}):c&&c.src&&(b.src=c.src)},x=function(a,b){return(getComputedStyle(a,null)||{})[b]},y=function(a,b,c){for(c=c||a.offsetWidth;c<d.minSize&&b&&!a._lazysizesWidth;)c=b.offsetWidth,b=b.parentNode;return c},z=function(){var a,c,d=[],e=[],f=d,g=function(){var b=f;for(f=d.length?e:d,a=!0,c=!1;b.length;)b.shift()();a=!1},h=function(d,e){a&&!e?d.apply(this,arguments):(f.push(d),c||(c=!0,(b.hidden?k:l)(g)))};return h._lsFlush=g,h}(),A=function(a,b){return b?function(){z(a)}:function(){var b=this,c=arguments;z(function(){a.apply(b,c)})}},B=function(a){var b,c=0,d=125,e=666,g=e,h=function(){b=!1,c=f.now(),a()},i=m?function(){m(h,{timeout:g}),g!==e&&(g=e)}:A(function(){k(h)},!0);return function(a){var e;(a=a===!0)&&(g=44),b||(b=!0,e=d-(f.now()-c),0>e&&(e=0),a||9>e&&m?i():k(i,e))}},C=function(a){var b,c,d=99,e=function(){b=null,a()},g=function(){var a=f.now()-c;d>a?k(g,d-a):(m||e)(e)};return function(){c=f.now(),b||(b=k(g,d))}},D=function(){var c,g,l,m,o,p,y,D,F,G,H,I,J,K,L,M=/^img$/i,N=/^iframe$/i,O="onscroll"in a&&!/glebot/.test(navigator.userAgent),P=0,Q=0,R=0,S=-1,T=function(a){R--,a&&a.target&&u(a.target,T),(!a||0>R||!a.target)&&(R=0)},U=function(a,c){var d,f=a,g="hidden"==x(b.body,"visibility")||"hidden"!=x(a,"visibility");for(F-=c,I+=c,G-=c,H+=c;g&&(f=f.offsetParent)&&f!=b.body&&f!=e;)g=(x(f,"opacity")||1)>0,g&&"visible"!=x(f,"overflow")&&(d=f.getBoundingClientRect(),g=H>d.left&&G<d.right&&I>d.top-1&&F<d.bottom+1);return g},V=function(){var a,f,h,j,k,m,n,p,q;if((o=d.loadMode)&&8>R&&(a=c.length)){f=0,S++,null==K&&("expand"in d||(d.expand=e.clientHeight>500&&e.clientWidth>500?500:370),J=d.expand,K=J*d.expFactor),K>Q&&1>R&&S>2&&o>2&&!b.hidden?(Q=K,S=0):Q=o>1&&S>1&&6>R?J:P;for(;a>f;f++)if(c[f]&&!c[f]._lazyRace)if(O)if((p=c[f][i]("data-expand"))&&(m=1*p)||(m=Q),q!==m&&(y=innerWidth+m*L,D=innerHeight+m,n=-1*m,q=m),h=c[f].getBoundingClientRect(),(I=h.bottom)>=n&&(F=h.top)<=D&&(H=h.right)>=n*L&&(G=h.left)<=y&&(I||H||G||F)&&(d.loadHidden||"hidden"!=x(c[f],"visibility"))&&(l&&3>R&&!p&&(3>o||4>S)||U(c[f],m))){if(ba(c[f]),k=!0,R>9)break}else!k&&l&&!j&&4>R&&4>S&&o>2&&(g[0]||d.preloadAfterLoad)&&(g[0]||!p&&(I||H||G||F||"auto"!=c[f][i](d.sizesAttr)))&&(j=g[0]||c[f]);else ba(c[f]);j&&!k&&ba(j)}},W=B(V),X=function(a){s(a.target,d.loadedClass),t(a.target,d.loadingClass),u(a.target,Z),v(a.target,"lazyloaded")},Y=A(X),Z=function(a){Y({target:a.target})},$=function(a,b){try{a.contentWindow.location.replace(b)}catch(c){a.src=b}},_=function(a){var b,c=a[i](d.srcsetAttr);(b=d.customMedia[a[i]("data-media")||a[i]("media")])&&a.setAttribute("media",b),c&&a.setAttribute("srcset",c)},aa=A(function(a,b,c,e,f){var g,h,j,l,o,p;(o=v(a,"lazybeforeunveil",b)).defaultPrevented||(e&&(c?s(a,d.autosizesClass):a.setAttribute("sizes",e)),h=a[i](d.srcsetAttr),g=a[i](d.srcAttr),f&&(j=a.parentNode,l=j&&n.test(j.nodeName||"")),p=b.firesLoad||"src"in a&&(h||g||l),o={target:a},p&&(u(a,T,!0),clearTimeout(m),m=k(T,2500),s(a,d.loadingClass),u(a,Z,!0)),l&&q.call(j.getElementsByTagName("source"),_),h?a.setAttribute("srcset",h):g&&!l&&(N.test(a.nodeName)?$(a,g):a.src=g),f&&(h||l)&&w(a,{src:g})),a._lazyRace&&delete a._lazyRace,t(a,d.lazyClass),z(function(){(!p||a.complete&&a.naturalWidth>1)&&(p?T(o):R--,X(o))},!0)}),ba=function(a){var b,c=M.test(a.nodeName),e=c&&(a[i](d.sizesAttr)||a[i]("sizes")),f="auto"==e;(!f&&l||!c||!a[i]("src")&&!a.srcset||a.complete||r(a,d.errorClass))&&(b=v(a,"lazyunveilread").detail,f&&E.updateElem(a,!0,a.offsetWidth),a._lazyRace=!0,R++,aa(a,b,f,e,c))},ca=function(){if(!l){if(f.now()-p<999)return void k(ca,999);var a=C(function(){d.loadMode=3,W()});l=!0,d.loadMode=3,W(),j("scroll",function(){3==d.loadMode&&(d.loadMode=2),a()},!0)}};return{_:function(){p=f.now(),c=b.getElementsByClassName(d.lazyClass),g=b.getElementsByClassName(d.lazyClass+" "+d.preloadClass),L=d.hFac,j("scroll",W,!0),j("resize",W,!0),a.MutationObserver?new MutationObserver(W).observe(e,{childList:!0,subtree:!0,attributes:!0}):(e[h]("DOMNodeInserted",W,!0),e[h]("DOMAttrModified",W,!0),setInterval(W,999)),j("hashchange",W,!0),["focus","mouseover","click","load","transitionend","animationend","webkitAnimationEnd"].forEach(function(a){b[h](a,W,!0)}),/d$|^c/.test(b.readyState)?ca():(j("load",ca),b[h]("DOMContentLoaded",W),k(ca,2e4)),c.length?(V(),z._lsFlush()):W()},checkElems:W,unveil:ba}}(),E=function(){var a,c=A(function(a,b,c,d){var e,f,g;if(a._lazysizesWidth=d,d+="px",a.setAttribute("sizes",d),n.test(b.nodeName||""))for(e=b.getElementsByTagName("source"),f=0,g=e.length;g>f;f++)e[f].setAttribute("sizes",d);c.detail.dataAttr||w(a,c.detail)}),e=function(a,b,d){var e,f=a.parentNode;f&&(d=y(a,f,d),e=v(a,"lazybeforesizes",{width:d,dataAttr:!!b}),e.defaultPrevented||(d=e.detail.width,d&&d!==a._lazysizesWidth&&c(a,f,e,d)))},f=function(){var b,c=a.length;if(c)for(b=0;c>b;b++)e(a[b])},g=C(f);return{_:function(){a=b.getElementsByClassName(d.autosizesClass),j("resize",g)},checkElems:g,updateElem:e}}(),F=function(){F.i||(F.i=!0,E._(),D._())};return function(){var b,c={lazyClass:"lazyload",loadedClass:"lazyloaded",loadingClass:"lazyloading",preloadClass:"lazypreload",errorClass:"lazyerror",autosizesClass:"lazyautosizes",srcAttr:"data-src",srcsetAttr:"data-srcset",sizesAttr:"data-sizes",minSize:40,customMedia:{},init:!0,expFactor:1.5,hFac:.8,loadMode:2,loadHidden:!0};d=a.lazySizesConfig||a.lazysizesConfig||{};for(b in c)b in d||(d[b]=c[b]);a.lazySizesConfig=d,k(function(){d.init&&F()})}(),c={cfg:d,autoSizer:E,loader:D,init:F,uP:w,aC:s,rC:t,hC:r,fire:v,gW:y,rAF:z}}});
@@ -0,0 +1,519 @@
1
+ /*!
2
+ * Lightbox v2.9.0
3
+ * by Lokesh Dhakar
4
+ *
5
+ * More info:
6
+ * http://lokeshdhakar.com/projects/lightbox2/
7
+ *
8
+ * Copyright 2007, 2015 Lokesh Dhakar
9
+ * Released under the MIT license
10
+ * https://github.com/lokesh/lightbox2/blob/master/LICENSE
11
+ *
12
+ * @preserve
13
+ */
14
+
15
+ // Uses Node, AMD or browser globals to create a module.
16
+ (function (root, factory) {
17
+ if (typeof define === 'function' && define.amd) {
18
+ // AMD. Register as an anonymous module.
19
+ define(['jquery'], factory);
20
+ } else if (typeof exports === 'object') {
21
+ // Node. Does not work with strict CommonJS, but
22
+ // only CommonJS-like environments that support module.exports,
23
+ // like Node.
24
+ module.exports = factory(require('jquery'));
25
+ } else {
26
+ // Browser globals (root is window)
27
+ root.lightbox = factory(root.jQuery);
28
+ }
29
+ }(this, function ($) {
30
+
31
+ function Lightbox(options) {
32
+ this.album = [];
33
+ this.currentImageIndex = void 0;
34
+ this.init();
35
+
36
+ // options
37
+ this.options = $.extend({}, this.constructor.defaults);
38
+ this.option(options);
39
+ }
40
+
41
+ // Descriptions of all options available on the demo site:
42
+ // http://lokeshdhakar.com/projects/lightbox2/index.html#options
43
+ Lightbox.defaults = {
44
+ albumLabel: 'Image %1 of %2',
45
+ alwaysShowNavOnTouchDevices: false,
46
+ fadeDuration: 600,
47
+ fitImagesInViewport: true,
48
+ imageFadeDuration: 600,
49
+ // maxWidth: 800,
50
+ // maxHeight: 600,
51
+ positionFromTop: 50,
52
+ resizeDuration: 700,
53
+ showImageNumberLabel: true,
54
+ wrapAround: false,
55
+ disableScrolling: false,
56
+ /*
57
+ Sanitize Title
58
+ If the caption data is trusted, for example you are hardcoding it in, then leave this to false.
59
+ This will free you to add html tags, such as links, in the caption.
60
+
61
+ If the caption data is user submitted or from some other untrusted source, then set this to true
62
+ to prevent xss and other injection attacks.
63
+ */
64
+ sanitizeTitle: false
65
+ };
66
+
67
+ Lightbox.prototype.option = function(options) {
68
+ $.extend(this.options, options);
69
+ };
70
+
71
+ Lightbox.prototype.imageCountLabel = function(currentImageNum, totalImages) {
72
+ return this.options.albumLabel.replace(/%1/g, currentImageNum).replace(/%2/g, totalImages);
73
+ };
74
+
75
+ Lightbox.prototype.init = function() {
76
+ var self = this;
77
+ // Both enable and build methods require the body tag to be in the DOM.
78
+ $(document).ready(function() {
79
+ self.enable();
80
+ self.build();
81
+ });
82
+ };
83
+
84
+ // Loop through anchors and areamaps looking for either data-lightbox attributes or rel attributes
85
+ // that contain 'lightbox'. When these are clicked, start lightbox.
86
+ Lightbox.prototype.enable = function() {
87
+ var self = this;
88
+ $('body').on('click', 'a[rel^=lightbox], area[rel^=lightbox], a[data-lightbox], area[data-lightbox]', function(event) {
89
+ self.start($(event.currentTarget));
90
+ return false;
91
+ });
92
+ };
93
+
94
+ // Build html for the lightbox and the overlay.
95
+ // Attach event handlers to the new DOM elements. click click click
96
+ Lightbox.prototype.build = function() {
97
+ var self = this;
98
+ $('<div id="lightboxOverlay" class="lightboxOverlay"></div><div id="lightbox" class="lightbox"><div class="lb-outerContainer"><div class="lb-container"><img class="lb-image" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" /><div class="lb-nav"><a class="lb-prev" href="" ></a><a class="lb-next" href="" ></a></div><div class="lb-loader"><a class="lb-cancel"></a></div></div></div><div class="lb-dataContainer"><div class="lb-data"><div class="lb-details"><span class="lb-caption"></span><span class="lb-number"></span></div><div class="lb-closeContainer"><a class="lb-close"></a></div></div></div></div>').appendTo($('body'));
99
+
100
+ // Cache jQuery objects
101
+ this.$lightbox = $('#lightbox');
102
+ this.$overlay = $('#lightboxOverlay');
103
+ this.$outerContainer = this.$lightbox.find('.lb-outerContainer');
104
+ this.$container = this.$lightbox.find('.lb-container');
105
+ this.$image = this.$lightbox.find('.lb-image');
106
+ this.$nav = this.$lightbox.find('.lb-nav');
107
+
108
+ // Store css values for future lookup
109
+ this.containerPadding = {
110
+ top: parseInt(this.$container.css('padding-top'), 10),
111
+ right: parseInt(this.$container.css('padding-right'), 10),
112
+ bottom: parseInt(this.$container.css('padding-bottom'), 10),
113
+ left: parseInt(this.$container.css('padding-left'), 10)
114
+ };
115
+
116
+ this.imageBorderWidth = {
117
+ top: parseInt(this.$image.css('border-top-width'), 10),
118
+ right: parseInt(this.$image.css('border-right-width'), 10),
119
+ bottom: parseInt(this.$image.css('border-bottom-width'), 10),
120
+ left: parseInt(this.$image.css('border-left-width'), 10)
121
+ };
122
+
123
+ // Attach event handlers to the newly minted DOM elements
124
+ this.$overlay.hide().on('click', function() {
125
+ self.end();
126
+ return false;
127
+ });
128
+
129
+ this.$lightbox.hide().on('click', function(event) {
130
+ if ($(event.target).attr('id') === 'lightbox') {
131
+ self.end();
132
+ }
133
+ return false;
134
+ });
135
+
136
+ this.$outerContainer.on('click', function(event) {
137
+ if ($(event.target).attr('id') === 'lightbox') {
138
+ self.end();
139
+ }
140
+ return false;
141
+ });
142
+
143
+ this.$lightbox.find('.lb-prev').on('click', function() {
144
+ if (self.currentImageIndex === 0) {
145
+ self.changeImage(self.album.length - 1);
146
+ } else {
147
+ self.changeImage(self.currentImageIndex - 1);
148
+ }
149
+ return false;
150
+ });
151
+
152
+ this.$lightbox.find('.lb-next').on('click', function() {
153
+ if (self.currentImageIndex === self.album.length - 1) {
154
+ self.changeImage(0);
155
+ } else {
156
+ self.changeImage(self.currentImageIndex + 1);
157
+ }
158
+ return false;
159
+ });
160
+
161
+ /*
162
+ Show context menu for image on right-click
163
+
164
+ There is a div containing the navigation that spans the entire image and lives above of it. If
165
+ you right-click, you are right clicking this div and not the image. This prevents users from
166
+ saving the image or using other context menu actions with the image.
167
+
168
+ To fix this, when we detect the right mouse button is pressed down, but not yet clicked, we
169
+ set pointer-events to none on the nav div. This is so that the upcoming right-click event on
170
+ the next mouseup will bubble down to the image. Once the right-click/contextmenu event occurs
171
+ we set the pointer events back to auto for the nav div so it can capture hover and left-click
172
+ events as usual.
173
+ */
174
+ this.$nav.on('mousedown', function(event) {
175
+ if (event.which === 3) {
176
+ self.$nav.css('pointer-events', 'none');
177
+
178
+ self.$lightbox.one('contextmenu', function() {
179
+ setTimeout(function() {
180
+ this.$nav.css('pointer-events', 'auto');
181
+ }.bind(self), 0);
182
+ });
183
+ }
184
+ });
185
+
186
+
187
+ this.$lightbox.find('.lb-loader, .lb-close').on('click', function() {
188
+ self.end();
189
+ return false;
190
+ });
191
+ };
192
+
193
+ // Show overlay and lightbox. If the image is part of a set, add siblings to album array.
194
+ Lightbox.prototype.start = function($link) {
195
+ var self = this;
196
+ var $window = $(window);
197
+
198
+ $window.on('resize', $.proxy(this.sizeOverlay, this));
199
+
200
+ $('select, object, embed').css({
201
+ visibility: 'hidden'
202
+ });
203
+
204
+ this.sizeOverlay();
205
+
206
+ this.album = [];
207
+ var imageNumber = 0;
208
+
209
+ function addToAlbum($link) {
210
+ self.album.push({
211
+ link: $link.attr('href'),
212
+ title: $link.attr('data-title') || $link.attr('title')
213
+ });
214
+ }
215
+
216
+ // Support both data-lightbox attribute and rel attribute implementations
217
+ var dataLightboxValue = $link.attr('data-lightbox');
218
+ var $links;
219
+
220
+ if (dataLightboxValue) {
221
+ $links = $($link.prop('tagName') + '[data-lightbox="' + dataLightboxValue + '"]');
222
+ for (var i = 0; i < $links.length; i = ++i) {
223
+ addToAlbum($($links[i]));
224
+ if ($links[i] === $link[0]) {
225
+ imageNumber = i;
226
+ }
227
+ }
228
+ } else {
229
+ if ($link.attr('rel') === 'lightbox') {
230
+ // If image is not part of a set
231
+ addToAlbum($link);
232
+ } else {
233
+ // If image is part of a set
234
+ $links = $($link.prop('tagName') + '[rel="' + $link.attr('rel') + '"]');
235
+ for (var j = 0; j < $links.length; j = ++j) {
236
+ addToAlbum($($links[j]));
237
+ if ($links[j] === $link[0]) {
238
+ imageNumber = j;
239
+ }
240
+ }
241
+ }
242
+ }
243
+
244
+ // Position Lightbox
245
+ var top = $window.scrollTop() + this.options.positionFromTop;
246
+ var left = $window.scrollLeft();
247
+ this.$lightbox.css({
248
+ top: top + 'px',
249
+ left: left + 'px'
250
+ }).fadeIn(this.options.fadeDuration);
251
+
252
+ // Disable scrolling of the page while open
253
+ if (this.options.disableScrolling) {
254
+ $('body').addClass('lb-disable-scrolling');
255
+ }
256
+
257
+ this.changeImage(imageNumber);
258
+ };
259
+
260
+ // Hide most UI elements in preparation for the animated resizing of the lightbox.
261
+ Lightbox.prototype.changeImage = function(imageNumber) {
262
+ var self = this;
263
+
264
+ this.disableKeyboardNav();
265
+ var $image = this.$lightbox.find('.lb-image');
266
+
267
+ this.$overlay.fadeIn(this.options.fadeDuration);
268
+
269
+ $('.lb-loader').fadeIn('slow');
270
+ this.$lightbox.find('.lb-image, .lb-nav, .lb-prev, .lb-next, .lb-dataContainer, .lb-numbers, .lb-caption').hide();
271
+
272
+ this.$outerContainer.addClass('animating');
273
+
274
+ // When image to show is preloaded, we send the width and height to sizeContainer()
275
+ var preloader = new Image();
276
+ preloader.onload = function() {
277
+ var $preloader;
278
+ var imageHeight;
279
+ var imageWidth;
280
+ var maxImageHeight;
281
+ var maxImageWidth;
282
+ var windowHeight;
283
+ var windowWidth;
284
+
285
+ $image.attr('src', self.album[imageNumber].link);
286
+
287
+ $preloader = $(preloader);
288
+
289
+ $image.width(preloader.width);
290
+ $image.height(preloader.height);
291
+
292
+ if (self.options.fitImagesInViewport) {
293
+ // Fit image inside the viewport.
294
+ // Take into account the border around the image and an additional 10px gutter on each side.
295
+
296
+ windowWidth = $(window).width();
297
+ windowHeight = $(window).height();
298
+ maxImageWidth = windowWidth - self.containerPadding.left - self.containerPadding.right - self.imageBorderWidth.left - self.imageBorderWidth.right - 20;
299
+ maxImageHeight = windowHeight - self.containerPadding.top - self.containerPadding.bottom - self.imageBorderWidth.top - self.imageBorderWidth.bottom - 120;
300
+
301
+ // Check if image size is larger then maxWidth|maxHeight in settings
302
+ if (self.options.maxWidth && self.options.maxWidth < maxImageWidth) {
303
+ maxImageWidth = self.options.maxWidth;
304
+ }
305
+ if (self.options.maxHeight && self.options.maxHeight < maxImageWidth) {
306
+ maxImageHeight = self.options.maxHeight;
307
+ }
308
+
309
+ // Is the current image's width or height is greater than the maxImageWidth or maxImageHeight
310
+ // option than we need to size down while maintaining the aspect ratio.
311
+ if ((preloader.width > maxImageWidth) || (preloader.height > maxImageHeight)) {
312
+ if ((preloader.width / maxImageWidth) > (preloader.height / maxImageHeight)) {
313
+ imageWidth = maxImageWidth;
314
+ imageHeight = parseInt(preloader.height / (preloader.width / imageWidth), 10);
315
+ $image.width(imageWidth);
316
+ $image.height(imageHeight);
317
+ } else {
318
+ imageHeight = maxImageHeight;
319
+ imageWidth = parseInt(preloader.width / (preloader.height / imageHeight), 10);
320
+ $image.width(imageWidth);
321
+ $image.height(imageHeight);
322
+ }
323
+ }
324
+ }
325
+ self.sizeContainer($image.width(), $image.height());
326
+ };
327
+
328
+ preloader.src = this.album[imageNumber].link;
329
+ this.currentImageIndex = imageNumber;
330
+ };
331
+
332
+ // Stretch overlay to fit the viewport
333
+ Lightbox.prototype.sizeOverlay = function() {
334
+ this.$overlay
335
+ .width($(document).width())
336
+ .height($(document).height());
337
+ };
338
+
339
+ // Animate the size of the lightbox to fit the image we are showing
340
+ Lightbox.prototype.sizeContainer = function(imageWidth, imageHeight) {
341
+ var self = this;
342
+
343
+ var oldWidth = this.$outerContainer.outerWidth();
344
+ var oldHeight = this.$outerContainer.outerHeight();
345
+ var newWidth = imageWidth + this.containerPadding.left + this.containerPadding.right + this.imageBorderWidth.left + this.imageBorderWidth.right;
346
+ var newHeight = imageHeight + this.containerPadding.top + this.containerPadding.bottom + this.imageBorderWidth.top + this.imageBorderWidth.bottom;
347
+
348
+ function postResize() {
349
+ self.$lightbox.find('.lb-dataContainer').width(newWidth);
350
+ self.$lightbox.find('.lb-prevLink').height(newHeight);
351
+ self.$lightbox.find('.lb-nextLink').height(newHeight);
352
+ self.showImage();
353
+ }
354
+
355
+ if (oldWidth !== newWidth || oldHeight !== newHeight) {
356
+ this.$outerContainer.animate({
357
+ width: newWidth,
358
+ height: newHeight
359
+ }, this.options.resizeDuration, 'swing', function() {
360
+ postResize();
361
+ });
362
+ } else {
363
+ postResize();
364
+ }
365
+ };
366
+
367
+ // Display the image and its details and begin preload neighboring images.
368
+ Lightbox.prototype.showImage = function() {
369
+ this.$lightbox.find('.lb-loader').stop(true).hide();
370
+ this.$lightbox.find('.lb-image').fadeIn(this.options.imageFadeDuration);
371
+
372
+ this.updateNav();
373
+ this.updateDetails();
374
+ this.preloadNeighboringImages();
375
+ this.enableKeyboardNav();
376
+ };
377
+
378
+ // Display previous and next navigation if appropriate.
379
+ Lightbox.prototype.updateNav = function() {
380
+ // Check to see if the browser supports touch events. If so, we take the conservative approach
381
+ // and assume that mouse hover events are not supported and always show prev/next navigation
382
+ // arrows in image sets.
383
+ var alwaysShowNav = false;
384
+ try {
385
+ document.createEvent('TouchEvent');
386
+ alwaysShowNav = (this.options.alwaysShowNavOnTouchDevices) ? true : false;
387
+ } catch (e) {}
388
+
389
+ this.$lightbox.find('.lb-nav').show();
390
+
391
+ if (this.album.length > 1) {
392
+ if (this.options.wrapAround) {
393
+ if (alwaysShowNav) {
394
+ this.$lightbox.find('.lb-prev, .lb-next').css('opacity', '1');
395
+ }
396
+ this.$lightbox.find('.lb-prev, .lb-next').show();
397
+ } else {
398
+ if (this.currentImageIndex > 0) {
399
+ this.$lightbox.find('.lb-prev').show();
400
+ if (alwaysShowNav) {
401
+ this.$lightbox.find('.lb-prev').css('opacity', '1');
402
+ }
403
+ }
404
+ if (this.currentImageIndex < this.album.length - 1) {
405
+ this.$lightbox.find('.lb-next').show();
406
+ if (alwaysShowNav) {
407
+ this.$lightbox.find('.lb-next').css('opacity', '1');
408
+ }
409
+ }
410
+ }
411
+ }
412
+ };
413
+
414
+ // Display caption, image number, and closing button.
415
+ Lightbox.prototype.updateDetails = function() {
416
+ var self = this;
417
+
418
+ // Enable anchor clicks in the injected caption html.
419
+ // Thanks Nate Wright for the fix. @https://github.com/NateWr
420
+ if (typeof this.album[this.currentImageIndex].title !== 'undefined' &&
421
+ this.album[this.currentImageIndex].title !== '') {
422
+ var $caption = this.$lightbox.find('.lb-caption');
423
+ if (this.options.sanitizeTitle) {
424
+ $caption.text(this.album[this.currentImageIndex].title);
425
+ } else {
426
+ $caption.html(this.album[this.currentImageIndex].title);
427
+ }
428
+ $caption.fadeIn('fast')
429
+ .find('a').on('click', function(event) {
430
+ if ($(this).attr('target') !== undefined) {
431
+ window.open($(this).attr('href'), $(this).attr('target'));
432
+ } else {
433
+ location.href = $(this).attr('href');
434
+ }
435
+ });
436
+ }
437
+
438
+ if (this.album.length > 1 && this.options.showImageNumberLabel) {
439
+ var labelText = this.imageCountLabel(this.currentImageIndex + 1, this.album.length);
440
+ this.$lightbox.find('.lb-number').text(labelText).fadeIn('fast');
441
+ } else {
442
+ this.$lightbox.find('.lb-number').hide();
443
+ }
444
+
445
+ this.$outerContainer.removeClass('animating');
446
+
447
+ this.$lightbox.find('.lb-dataContainer').fadeIn(this.options.resizeDuration, function() {
448
+ return self.sizeOverlay();
449
+ });
450
+ };
451
+
452
+ // Preload previous and next images in set.
453
+ Lightbox.prototype.preloadNeighboringImages = function() {
454
+ if (this.album.length > this.currentImageIndex + 1) {
455
+ var preloadNext = new Image();
456
+ preloadNext.src = this.album[this.currentImageIndex + 1].link;
457
+ }
458
+ if (this.currentImageIndex > 0) {
459
+ var preloadPrev = new Image();
460
+ preloadPrev.src = this.album[this.currentImageIndex - 1].link;
461
+ }
462
+ };
463
+
464
+ Lightbox.prototype.enableKeyboardNav = function() {
465
+ $(document).on('keyup.keyboard', $.proxy(this.keyboardAction, this));
466
+ };
467
+
468
+ Lightbox.prototype.disableKeyboardNav = function() {
469
+ $(document).off('.keyboard');
470
+ };
471
+
472
+ Lightbox.prototype.keyboardAction = function(event) {
473
+ var KEYCODE_ESC = 27;
474
+ var KEYCODE_LEFTARROW = 37;
475
+ var KEYCODE_RIGHTARROW = 39;
476
+
477
+ var keycode = event.keyCode;
478
+ var key = String.fromCharCode(keycode).toLowerCase();
479
+ if (keycode === KEYCODE_ESC || key.match(/x|o|c/)) {
480
+ this.end();
481
+ } else if (key === 'p' || keycode === KEYCODE_LEFTARROW) {
482
+ if (this.currentImageIndex !== 0) {
483
+ this.changeImage(this.currentImageIndex - 1);
484
+ } else if (this.options.wrapAround && this.album.length > 1) {
485
+ this.changeImage(this.album.length - 1);
486
+ }
487
+ } else if (key === 'n' || keycode === KEYCODE_RIGHTARROW) {
488
+ if (this.currentImageIndex !== this.album.length - 1) {
489
+ this.changeImage(this.currentImageIndex + 1);
490
+ } else if (this.options.wrapAround && this.album.length > 1) {
491
+ this.changeImage(0);
492
+ }
493
+ }
494
+ };
495
+
496
+ // Closing time. :-(
497
+ Lightbox.prototype.end = function() {
498
+ this.disableKeyboardNav();
499
+ $(window).off('resize', this.sizeOverlay);
500
+ this.$lightbox.fadeOut(this.options.fadeDuration);
501
+ this.$overlay.fadeOut(this.options.fadeDuration);
502
+ $('select, object, embed').css({
503
+ visibility: 'visible'
504
+ });
505
+ if (this.options.disableScrolling) {
506
+ $('body').removeClass('lb-disable-scrolling');
507
+ }
508
+ };
509
+
510
+ return new Lightbox();
511
+ }));
512
+
513
+
514
+ $(document).ready(function(){
515
+ lightbox.option({
516
+ 'disableScrolling': true,
517
+ 'albumLabel': ''
518
+ })
519
+ });