{"version":3,"file":"main.js","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;;;;;;;;;;ACzxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACrJA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC3lHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;ACv2BA;AACA;AACA;AACA;AACA;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC/3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;ACrpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACrEA;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACPA;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["webpack://cubiclefugitive/./src/scripts/master.js","webpack://cubiclefugitive/./src/scripts/mobile-menu.js","webpack://cubiclefugitive/./.yarn/cache/@splidejs-splide-npm-4.1.4-574032679c-919f6e1e5d.zip/node_modules/@splidejs/splide/dist/css/splide.min.css?9fe1","webpack://cubiclefugitive/./.yarn/cache/@splidejs-splide-npm-4.1.4-574032679c-919f6e1e5d.zip/node_modules/@splidejs/splide/dist/css/themes/splide-default.min.css?8df1","webpack://cubiclefugitive/./src/styles/master.scss","webpack://cubiclefugitive/./.yarn/cache/@splidejs-splide-npm-4.1.4-574032679c-919f6e1e5d.zip/node_modules/@splidejs/splide/dist/js/splide.esm.js","webpack://cubiclefugitive/./.yarn/cache/jquery-lazy-npm-1.7.11-4fb6a8234b-75b5d1e97b.zip/node_modules/jquery-lazy/jquery.lazy.js","webpack://cubiclefugitive/./.yarn/cache/jquery-popup-overlay-npm-2.1.5-b87afb9c55-e285f941a2.zip/node_modules/jquery-popup-overlay/index.js","webpack://cubiclefugitive/./.yarn/cache/jquery-popup-overlay-npm-2.1.5-b87afb9c55-e285f941a2.zip/node_modules/jquery-popup-overlay/jquery.popupoverlay.js","webpack://cubiclefugitive/./.yarn/cache/jquery-ui-npm-1.13.2-7a757aa85c-0d04a4b86e.zip/node_modules/jquery-ui/ui/focusable.js","webpack://cubiclefugitive/./.yarn/cache/jquery-ui-npm-1.13.2-7a757aa85c-0d04a4b86e.zip/node_modules/jquery-ui/ui/scroll-parent.js","webpack://cubiclefugitive/./.yarn/cache/jquery-ui-npm-1.13.2-7a757aa85c-0d04a4b86e.zip/node_modules/jquery-ui/ui/tabbable.js","webpack://cubiclefugitive/./.yarn/cache/jquery-ui-npm-1.13.2-7a757aa85c-0d04a4b86e.zip/node_modules/jquery-ui/ui/unique-id.js","webpack://cubiclefugitive/./.yarn/cache/jquery-ui-npm-1.13.2-7a757aa85c-0d04a4b86e.zip/node_modules/jquery-ui/ui/version.js","webpack://cubiclefugitive/./.yarn/cache/waypoints-npm-4.0.1-ab29afe19d-0549b20be8.zip/node_modules/waypoints/lib/jquery.waypoints.js","webpack://cubiclefugitive/./.yarn/cache/waypoints-npm-4.0.1-ab29afe19d-0549b20be8.zip/node_modules/waypoints/lib/shortcuts/sticky.js","webpack://cubiclefugitive/external var \"jQuery\"","webpack://cubiclefugitive/webpack/bootstrap","webpack://cubiclefugitive/webpack/runtime/define property getters","webpack://cubiclefugitive/webpack/runtime/hasOwnProperty shorthand","webpack://cubiclefugitive/webpack/runtime/make namespace object","webpack://cubiclefugitive/./src/main.js"],"sourcesContent":["/****************************************************************************************************/\n/* Module Imports */\n/****************************************************************************************************/\n\nrequire(\"./mobile-menu.js\");\nrequire('jquery-lazy');\n//require('jquery-backstretch');\n//require('jquery-hoverintent');\nrequire(\"waypoints/lib/jquery.waypoints.js\");\nrequire(\"waypoints/lib/shortcuts/sticky.js\");\nrequire(\"jquery-ui/ui/unique-id.js\");\nrequire(\"jquery-ui/ui/focusable.js\");\nrequire(\"jquery-ui/ui/tabbable\");\nrequire(\"jquery-ui/ui/scroll-parent.js\");\n//require(\"page-scroll-to-id/jquery.malihu.PageScroll2id.js\");\n\nvar popup = require(\"jquery-popup-overlay\");\nimport { Splide } from '@splidejs/splide';\n//import { Grid } from '@splidejs/splide-extension-grid';\n\nrequire('@splidejs/splide/dist/css/splide.min.css');\nrequire('@splidejs/splide/dist/css/themes/splide-default.min.css');\nwindow.Splide = Splide; // make splide available to widget scripts\n\n/****************************************************************************************************/\n/* Global Vars */\n/****************************************************************************************************/\n\nwindow.ww; // window width\nwindow.wh; // window width\nwindow.hh;\nwindow.selectedClassName = 'selected'; // the selected class name for menu items\nwindow.menuOpenClassName = 'open'; // the class that defines the open state of the menu\nwindow.fadeInSpeed = 50; // the fade in transition speed\nwindow.fadeOutSpeed = 75; // the fade out transition speed\nwindow.navMouseOutDelay = 600; // the delay before the nav disappears on mouseout\nwindow.mouseOutTimer; // the MouseOut timeout timer \nwindow.is_responsive = false;\nwindow.lastScrollTop = 0; // used for tracking scroll position and direction\nwindow.scrollDirection = \"down\"; // default\nwindow.st = window.pageYOffset || document.documentElement.scrollTop;\nvar $header = $(\"#header\");\nfunction refreshScrollData() {\n // Gets the scrollTop and direction and updates the global variables accordingly\n window.st = window.pageYOffset || document.documentElement.scrollTop;\n if (window.st > lastScrollTop) {\n window.scrollDirection = \"down\";\n } else {\n window.scrollDirection = \"up\";\n }\n if (window.st <= window.hh) {\n $header.addClass(\"near-top\");\n } else {\n $header.removeClass(\"near-top\");\n }\n lastScrollTop = window.st <= 0 ? 0 : window.st; // For Mobile or negative scrolling\n}\n\nfunction refreshDimensions() {\n // update calculated dimensions (to be used on resize events, or anytime a manual refresh is required)\n window.ww = document.documentElement.clientWidth; //$(window).width(); - CHANGED to avoid reflows.\n window.wh = document.documentElement.clientHeight; //$(window).height(); - CHANGED to avoid reflows.\n window.hh = $(\".header\").outerHeight() + $(\".topHeader\").outerHeight(); // $(\"header\").outerHeight();\n\n // Check if we are in Mobile (ie Responsive mode)\n if ($('.hamburger').is(\":visible\")) {\n is_responsive = true;\n } else {\n is_responsive = false;\n }\n\n // padding to match fixed header height\n //if ($header && $header.length) { // && is_responsive\n // $(\"#wrapper\").css({ paddingTop: hh + \"px\" });\n // $(\"header\").css({ height: hh + \"px\" });\n //} else {\n // $(\"#wrapper\").css({ paddingTop: 0 });\n //}\n\n if (!isSitefinityEditor()) {\n refreshScrollData(); // refresh scroll data just in case...\n refreshForcedWidthContainers();\n }\n}\n\n/****************************************************************************************************/\n/* Containers */\n/****************************************************************************************************/\n\nfunction refreshScrollbarWidthValue() {\n var scrollbarWidth = 16; // px (standard measured manually on Chrome)\n try {\n scrollbarWidth = getScrollbarWidth();\n } catch {\n console.log(\"unable to calculate scrollbar width automatically.\");\n }\n}\nfunction getTopLevelScrollBarWidth() {\n var scrollbarWidth = 0;\n if (document.body.scrollHeight > document.body.clientHeight || document.documentElement.scrollHeight > document.documentElement.clientHeight) {\n scrollbarWidth = getScrollbarWidth();\n }\n return scrollbarWidth;\n}\n\n/* Updates the max-width of edge-to-edge containers to account for scrollbars */\nfunction refreshForcedWidthContainers() {\n //var scrollbarWidth = 16; // px (standard measured manually on Chrome)\n //try {\n // scrollbarWidth = getScrollbarWidth();\n // console.log({ scrollbarWidth });\n //}\n //catch {\n // console.log(\"unable to calculate scrollbar width automatically.\");\n //}\n var scrollbarWidth = getTopLevelScrollBarWidth();\n //var width = \"calc(100vw - \" + scrollbarWidth + \"px)\";\n //var $forcedWidthContainers = $(\".container.edge, .container.force\");\n //$forcedWidthContainers.each(function () {\n // $(this).css({\n // //width: width,\n // maxWidth: \"100vw\"\n // });\n //});\n //$edgeWidthContainers.each(function () {\n // $(this).css({\n // //width: width,\n // maxWidth: \"100vw\"\n // });\n //});\n // ToDo: try doing this with a custom property instead:\n let root = document.documentElement;\n root.style.setProperty('--scrollbar-width', scrollbarWidth + \"px\");\n}\nfunction getScrollbarWidth() {\n //debugger;\n\n // Creating invisible container\n const outer = document.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.overflow = 'scroll'; // forcing scrollbar to appear\n outer.style.msOverflowStyle = 'scrollbar'; // needed for WinJS apps\n document.body.appendChild(outer);\n\n // Creating inner element and placing it in the container\n const inner = document.createElement('div');\n outer.appendChild(inner);\n\n // Calculating difference between container's full width and the child width\n const scrollbarWidth = outer.offsetWidth - inner.offsetWidth;\n\n // Removing temporary elements from the DOM\n outer.parentNode.removeChild(outer);\n return scrollbarWidth;\n}\n/****************************************************************************************************/\n/* Document Ready */\n/****************************************************************************************************/\n\nwindow.addEventListener('DOMContentLoaded', function () {\n $header = $(\"#header\");\n refreshDimensions();\n $(window).trigger('resize');\n setTimeout(refreshDimensions, 2000); // re-run after a few seconds to capture any late layout shifts (from fonts loading or other)\n});\n\n/****************************************************************************************************/\n/* Scroll Events */\n/****************************************************************************************************/\n\nvar mainScrollEvent = function () {\n $header = $(\"#header\");\n refreshScrollData();\n\n // Scroll-to-top link\n if (lastScrollTop > 450) {\n $('.scrollToTop').fadeIn();\n } else {\n $('.scrollToTop').fadeOut();\n }\n $header.removeClass(\"down up\").addClass(window.scrollDirection);\n if (lastScrollTop === 0) {\n $header.addClass(\"top\");\n } else {\n $header.removeClass(\"top\");\n }\n};\n\n// optimized event handler: https://web.dev/uses-passive-event-listeners/\ndocument.addEventListener('scroll', mainScrollEvent, {\n passive: true\n});\n\n/****************************************************************************************************/\n/* Window Resizing */\n/****************************************************************************************************/\n\n$(window).on('resize', function () {\n refreshDimensions();\n});\n\n/****************************************************************************************************/\n/* Sliders / Carousels */\n/****************************************************************************************************/\n\n/* multi-item slider: on mounted (prevent issues with looping, perPage, arrows, etc ) */\nfunction onMountedMultiItemSlider(splide) {\n console.log(\"multi-item slider mounted!\", splide);\n if (!splide.options.fixedWidth && !splide.options.autoWidth) {\n if (splide.options.perPage && splide.Components.Slides.getLength(true) <= splide.options.perPage) {\n //debugger;\n $(splide.root).addClass(\"noSliderNeeded\"); // add a class so we can adjust styling if needed\n splide.options.drag = false;\n splide.options.noDrag = \"*\"; // I don't think we should need this, however for now it prevents unwanted dragging even when drag is disabled.\n splide.options.arrows = false;\n splide.options.pagination = false;\n splide.options.type = 'slide';\n splide.options.classes.arrows += \" hiddenArrows\";\n $(splide.Components.Elements.arrows).attr(\"class\", splide.options.classes.arrows); // force our custom HTML arrows to use the reactive Splide classes\n //splide.Components.Arrows.destroy(); // doesn't work ...\n splide.refresh();\n }\n }\n}\n\n/* auto-height slider: shared event callbacks */\nvar autoHeightEvents = {\n mounted: onMountedAutoHeightSlider,\n refresh: onMountedAutoHeightSlider,\n move: onMoveAutoHeightSlider\n};\n\n/* updates the slider height during the slider move event */\nfunction onMoveAutoHeightSlider(newIndex, prevIndex, destIndex, splide) {\n var height = $(splide.Components.Elements.slides[newIndex]).outerHeight();\n updateSliderHeight(splide, height);\n}\nfunction onMountedAutoHeightSlider(splide) {\n //if (splide.Components.Elements.slides.length <= 1) {\n // splide.destroy();\n // $(splide.root).find(\".splide__arrows\").hide();\n //}\n $(splide.root).find(\".splide__list\").css({\n alignItems: \"flex-start\"\n });\n var height = $(splide.Components.Elements.slides[splide.index]).outerHeight();\n updateSliderHeight(splide, height);\n setTimeout(function () {\n updateSliderHeight(splide, height);\n }, 2000);\n}\nfunction updateSliderHeight(splide, height) {\n if (splide && height) {\n $(splide.Components.Elements.track).animate({\n height: height + \"px\"\n }, {\n duration: splide.options.speed\n //complete: function () { }\n });\n }\n}\n\n;\n\n/**\r\n * How to use our splide configs (SIMPLE):\r\n * \r\n * 1. Get your slider HTML onto the page (i.e. from a View or static block). Basic splide classes and markup are required here.\r\n * 2. Make sure the \".splide\" element has a custom data attribute 'data-splide-preset' (e.g. 'data-splide-preset=\"single\"')\r\n * 3. That's it. The code below will locate your \".splide[data-splide-preset]\" element and render it using the specified configuration.\r\n * \r\n */\n\n/*\r\n Global splide config. Used a base for ALL splide sliders. \r\n */\nwindow.globalSplideConfig = {\n type: 'loop'\n //start: 0,\n //perPage: 1,\n //perMove: 1,\n //pagination: true,\n //arrows: false,\n //autoHeight: true,\n //rewind: false,\n //speed: '500',\n //autoplay: true,\n //easing: 'cubic-bezier(.12,.8,.47,.98)',\n //accessibility: true,\n //classes: {\n // //arrows: 'splide__arrows your-class-arrows',\n // //arrow: 'splide__arrow your-class-arrow',\n // prev: 'splide__arrow--prev fas fa-chevron-left',\n // next: 'splide__arrow--next fas fa-chevron-right',\n //},\n //throttle: 10, // throttle the resize function (default 100 ms)\n};\n\n/*\r\n Slider presets. These get merged with the globalSplideConfig options to configure ALL splide sliders throughout the site.\r\n */\nwindow.SplideConfigurations = [/* Default configuration */\n{\n name: \"default\",\n //start: 0,\n type: 'loop',\n perPage: 5,\n perMove: 1,\n gap: \"0rem\",\n updateOnMove: true,\n arrows: true,\n pagination: false,\n breakpoints: {\n 1299: {\n perPage: 4\n },\n 1024: {\n perPage: 3\n },\n 640: {\n perPage: 2\n }\n },\n variants: [{\n // config that inherits/overrides a parent config\n name: \"default-no-dots\",\n pagination: false\n }],\n on: {\n mounted: onMountedMultiItemSlider,\n beforeMounted: function (splide) {\n console.log(\"triggered beforeMounted event. Splide: \", splide);\n }\n }\n}, /* Fade */\n{\n name: \"fade\",\n type: 'fade',\n start: 0,\n autoplay: true,\n perPage: 1,\n perMove: 1,\n interval: 10000,\n pauseOnHover: false,\n rewind: true\n}, /* Homeslideshow / Hero */\n{\n name: \"hero\",\n type: 'fade',\n rewind: true,\n speed: \"2000\",\n start: 0,\n perMove: 1,\n autoplay: true\n}, /* Single Slide Resources */\n{\n name: \"single\",\n type: 'loop',\n start: 0,\n perPage: 1,\n perMove: 1,\n variants: [{\n name: \"single-auto-height\",\n autoHeight: true,\n fixedHeight: false,\n on: Object.assign(autoHeightEvents, {// combine shared events with custom ones\n // move: function(){}\n })\n }]\n}, /* Double (2-item) sliders */\n{\n name: \"double\",\n type: 'loop',\n start: 0,\n perPage: 2,\n perMove: 2,\n gap: \"2rem\",\n breakpoints: {\n 640: {\n perPage: 1,\n perMove: 1\n }\n }\n}, /* Triple (3-item) sliders */\n{\n name: \"triple\",\n type: 'loop',\n start: 0,\n perPage: 3,\n perMove: 3,\n gap: \"2rem\",\n pagination: false,\n breakpoints: {\n 1024: {\n perPage: 2,\n perMove: 2\n },\n 640: {\n perPage: 1,\n perMove: 1\n }\n }\n}, /* Quad (4-item) sliders */\n{\n name: \"quad\",\n type: 'loop',\n start: 0,\n perPage: 4,\n perMove: 4,\n gap: \"2rem\",\n pagination: false,\n breakpoints: {\n 1024: {\n perPage: 3,\n perMove: 3\n },\n 768: {\n perPage: 2,\n perMove: 2\n },\n 640: {\n perPage: 1,\n perMove: 1\n }\n },\n on: {\n mounted: onMountedMultiItemSlider\n }\n}, /* Custom */\n{\n name: \"custom\",\n perPage: 4,\n perMove: 1,\n gap: \"0rem\",\n breakpoints: {\n 1299: {\n perPage: 4\n },\n 1024: {\n perPage: 3\n },\n 640: {\n perPage: 2\n },\n 500: {\n perPage: 1\n }\n }\n}, {\n name: \"custom2\",\n perPage: 4,\n perMove: 1,\n gap: 0,\n breakpoints: {\n 1299: {\n perPage: 3\n },\n 1024: {\n perPage: 2\n },\n 640: {\n perPage: 1\n }\n }\n}];\n\n/* Get a splide configration matching a given name */\nfunction getSplideConfiguraion() {\n let splideConfigurationName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"default\";\n let mergedConfiguration = {};\n for (var configuration of window.SplideConfigurations) {\n if (configuration.name === splideConfigurationName) {\n mergedConfiguration = mergeConfigurations({}, configuration);\n break;\n } else if (configuration.hasOwnProperty(\"variants\") && configuration.variants.length) {\n for (var variant of configuration.variants) {\n if (variant.name === splideConfigurationName) {\n mergedConfiguration = mergeConfigurations(configuration, variant);\n // remove unneeded properties\n delete mergedConfiguration.variants;\n //delete mergedConfiguration.name;\n break;\n }\n }\n }\n }\n mergedConfiguration = mergeConfigurations(window.globalSplideConfig, mergedConfiguration);\n return mergedConfiguration;\n}\n\n/* merge two splide configurations intelligently (rather than blindly overwriting each other) */\nfunction mergeConfigurations(config1, config2) {\n let mergedConfiguration = Object.assign({}, config1, config2);\n\n // merge the \"on\" callbacks/arrays. this allows configurations to inherit event callbacks (such as 'mounted') from the default configuration (and variants to inherit from their parents)\n if (config1.hasOwnProperty(\"on\") && config2.hasOwnProperty(\"on\")) {\n for (const [eventName, config1Callbacks] of Object.entries(config1.on)) {\n // loop through the config1 on callbacks\n if (typeof config2.on[eventName] !== \"undefined\") {\n let config2Callbacks = config2.on[eventName] || [];\n mergedConfiguration.on[eventName] = mergeCallbacks(config1Callbacks, config2Callbacks);\n }\n }\n }\n return mergedConfiguration;\n}\n\n/* takes two arguments (function or array of functions) and returns a merged, unique array of those functions */\n/* primarily used for combining the \"on\" agruments/callbacks of several splide configurations */\nfunction mergeCallbacks(cbArray1, cbArray2) {\n cbArray1 = Array.isArray(cbArray1) ? cbArray1 : [cbArray1];\n cbArray2 = Array.isArray(cbArray2) ? cbArray2 : [cbArray2];\n return [...new Set([...cbArray1, ...cbArray2])]; // creates a unique merged array (removes duplicate function references)\n}\n\n/* Initiate a splide slider using one of our configurations and all of our custom logic. */\nfunction initSplideSlider($selector, configurationName) {\n let $slider = $($selector);\n let configuration = getSplideConfiguraion(configurationName);\n let splide = new Splide($slider[0], configuration);\n\n /* register custom event callbacks defined in the configuration object */\n if (typeof configuration.on !== \"undefined\") {\n for (const eventName in configuration.on) {\n /* BEFORE MOUNT EVENT (custom CF event) - allows us to do things prior to initializing a slider */\n if (eventName === \"beforeMounted\") {\n let beforeMountedCallbacks = Array.isArray(configuration.on[eventName]) ? configuration.on[eventName] : [configuration.on[eventName]];\n /* loop through the beforeMounted callbacks and run them */\n beforeMountedCallbacks.forEach(function (beforeMountedCallback, index) {\n if (typeof beforeMountedCallback === \"function\") {\n beforeMountedCallback(splide);\n }\n });\n delete configuration.on[eventName]; // remove these non-splide events as they are not needed beyond this point.\n continue;\n }\n\n /* event binding - allows for mutiple functions to be bound to a single callback. */\n let callbacks = Array.isArray(configuration.on[eventName]) ? configuration.on[eventName] : [configuration.on[eventName]];\n for (const callback of callbacks) {\n if (typeof callback === \"function\") {\n splide.on(eventName, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n // this is a closure. we capture the default args, then add our own \n callback(...args, splide);\n });\n }\n }\n }\n }\n\n // add it to our list of registered sliders (for potential later use)\n window.splideSliders = window.splideSliders || [];\n window.splideSliders.push({\n el: $slider,\n splide,\n configuration\n });\n\n // mount splide\n //splide.mount({ Grid });\n splide.mount();\n}\n\n/* Loop through our widget / view sliders and initiate them using their preset configs */\nwindow.splideSliders = window.splideSliders || [];\n$(\".splide[data-splide-preset]\").not(\".is-active\").each(function (i, el) {\n let $slider = $(this);\n let configurationName = $slider.attr(\"data-splide-preset\");\n initSplideSlider($slider, configurationName);\n});\n\n/****************************************************************************************************/\n/* Search Box Non-Modal Toggle */\n/****************************************************************************************************/\n\n$(function () {\n $(\"a.searchExpand\").on(\"click\", function () {\n $(\".searchHiddenWrapper\").slideToggle();\n });\n $(\"button.searchCollapse\").on(\"click\", function () {\n $(\".searchHiddenWrapper\").slideToggle();\n });\n});\n\n/****************************************************************************************************/\n/* Forms / Autofill */\n/****************************************************************************************************/\n\n// SEARCH BOX - PLACEHOLDER TEXT\n$('.search input[type=\"text\"]').attr(\"placeholder\", \"How Can We Help You?\");\n\n// Fix for Chrome Form Autofill for our contact form\n$(\".contactForm input[name*=Name]\").attr('autocomplete', 'name');\n$(\".contactForm input[name*=Email]\").attr('autocomplete', 'email');\n$(\".contactForm input[name*=Phone]\").attr('autocomplete', 'tel');\n// Or you could turn it off\n//$('form').attr('autocomplete', 'off');\n\n/****************************************************************************************************/\n/* Misc */\n/****************************************************************************************************/\n\n// check if we're running inside the SF Page editor\nfunction isSitefinityEditor() {\n return $(\"body\").hasClass(\"sfPageEditor\") || typeof sitefinity === \"object\";\n}\n\n// Clickable items (e.g. a clickable article card with nested links)\n$(document).on(\"click\", \".clickable\", function (event) {\n var $this = $(this);\n if (!isSitefinityEditor()) {\n // If there's not data-url, then find the first child el with an href and use that\n var itemUrl = \"\";\n var target = \"_self\"; // default\n\n // allow links within to work\n if ($(event.target).is('a[href]')) {\n return;\n }\n\n // First check for data atts. If none, use the first child link\n else if (typeof $this.data(\"url\") !== 'undefined' && $this.data(\"url\").length) {\n itemUrl = $this.data(\"url\");\n if (typeof $this.data(\"target\") !== 'undefined' && $this.data(\"target\").length) {\n target = $this.data(\"target\");\n }\n } else {\n var $firstLinkFound = $this.find(\"a[href]\").first();\n itemUrl = $firstLinkFound.attr(\"href\");\n target = $firstLinkFound.attr(\"target\") ? $firstLinkFound.attr(\"target\") : target;\n }\n window.open(itemUrl, target);\n }\n});\n\n// Play Audio \nwindow.addEventListener('DOMContentLoaded', function () {\n $(document).on(\"click\", \".audioFile a\", function () {\n playAudio($(this).attr(\"data-audioid\"));\n return false;\n }).on(\"keypress\", function (e) {\n if (e.which === 13) {\n // enter key code\n playAudio($(this).attr(\"data-audioid\"));\n return false;\n }\n });\n\n // Play Audio\n function playAudio($audioid) {\n var audioFile = $('#' + $audioid).addClass(\"playing\").get(0).play();\n }\n});\n\n///Copyright Script\nvar publishedDate = 2022;\nvar year = $('.copyrightYear');\nif (year.html() == publishedDate) {\n year.html(publishedDate);\n} else {\n year.html(publishedDate + '-' + new Date().getFullYear());\n}\ndocument.addEventListener('DOMContentLoaded', function () {\n //callback function: simply adds a class when the element is in the viewport\n function observerCallback(entries, observer) {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n entry.target.classList.add('inViewport');\n }\n });\n }\n\n //only activate when an element is 20% visible\n let observerOptions = {\n threshold: .20\n };\n\n //create an intersection observer to watch\n var observer = new IntersectionObserver(observerCallback, observerOptions);\n let wrapperTarget = '.wrapper:not(.sfPageEditor .wrapper)'; //stop adding inViewPort to templates during editing\n if (!!window.IntersectionObserver) {\n //check if browser supports it, \n document.querySelectorAll(wrapperTarget).forEach(i => {\n if (i) {\n observer.observe(i);\n }\n });\n } else {\n // if not, unhide everything\n document.querySelectorAll(wrapperTarget).forEach(i => {\n if (i) {\n i.classList.remove('wrapper');\n }\n });\n }\n\n ////make jumpMenu stick to the top of the\n //const el = document.querySelector(\".jumpMenuWrapper\")\n //const observer2 = new IntersectionObserver(\n // ([entry]) => entry.target.querySelector(\".stickyWrapper\").classList.toggle(\"stuck\", entry.intersectionRatio < 1),\n // { threshold: [1] }\n //);\n //observer2.observe(el);\n});\n\n//Kendo treeview to create accordions in layouts\nwindow.addEventListener('DOMContentLoaded', function () {\n var $treeViewAccordion = $(\".accordionGroup\");\n $treeViewAccordion.kendoTreeView({\n expandMode: \"multiple\"\n });\n});\nwindow.addEventListener('DOMContentLoaded', function () {\n var $treeViewCareers = $(\".listView.careers\");\n $treeViewCareers.kendoTreeView({\n expandMode: \"multiple\"\n });\n});\n\n// Clear Local Storage querydata and filters if not on a detail or filtered content page\nwindow.addEventListener('DOMContentLoaded', function () {\n var detailPage = document.querySelector(\".detailPage\");\n var filtersContainer = document.querySelector(\".filteredContent\");\n var isLocalStorageDisabled = false;\n var isPageReload = performance.getEntriesByType(\"navigation\")[0].type === \"reload\";\n if (filtersContainer) {\n isLocalStorageDisabled = filtersContainer.dataset.localStorageDisabled === \"true\" ? true : false;\n }\n var canClearLocalStorage = !detailPage && !filtersContainer || isLocalStorageDisabled || isPageReload;\n if (canClearLocalStorage || isPageReload) {\n localStorage.removeItem(\"cf_filteredcontentscrollto\");\n localStorage.removeItem(\"cf_filteredcontent\");\n localStorage.removeItem(\"cf_filteredcontentsearchparams\");\n if (isPageReload && filtersContainer) {\n var dropdownLists = document.querySelectorAll(\".k-dropdown select\");\n if (dropdownLists) {\n for (let i = 0; i < dropdownLists.length; i++) {\n dropdownLists[i].options[0].selected = true;\n dropdownLists[i].previousSibling.querySelector(\".k-input\").innerText = dropdownLists[i].options[0].innerText;\n }\n }\n document.querySelector(\".keywordSearch\").value = \"\";\n }\n }\n});\n/* Toggle Filters Groups on Checkbox FilteredContent */\ndocument.addEventListener('click', function (event) {\n if (event.target.classList.contains('filterToggle')) {\n // Prevent Default Action\n event.preventDefault();\n const toggleFilterClicked = event.target;\n const toggleFilterContentToControl = toggleFilterClicked.nextElementSibling;\n if (toggleFilterClicked.classList.contains('active')) {\n /* already has 'active' the class remove it */\n toggleFilterClicked.classList.remove('active');\n toggleFilterContentToControl.classList.remove('active');\n } else {\n /* add the 'active' class */\n toggleFilterClicked.classList.add('active');\n toggleFilterContentToControl.classList.add('active');\n }\n }\n}, false);\njQuery.event.special.touchstart = {\n setup: function (_, ns, handle) {\n this.addEventListener(\"touchstart\", handle, {\n passive: !ns.includes(\"noPreventDefault\")\n });\n }\n};\njQuery.event.special.touchmove = {\n setup: function (_, ns, handle) {\n this.addEventListener(\"touchmove\", handle, {\n passive: !ns.includes(\"noPreventDefault\")\n });\n }\n};\njQuery.event.special.wheel = {\n setup: function (_, ns, handle) {\n this.addEventListener(\"wheel\", handle, {\n passive: true\n });\n }\n};\njQuery.event.special.mousewheel = {\n setup: function (_, ns, handle) {\n this.addEventListener(\"mousewheel\", handle, {\n passive: true\n });\n }\n};","/****************************************************************************************************/\n/* #region Mobile Menu Functinality */\n/****************************************************************************************************/\n\nvar mobileMenu = function () {\n \"use strict\";\n\n // Private Properties\n var pageUrlPath = window.location.pathname;\n var selectedClassName = 'selected'; // the selected class name for menu items\n var selectedParentClassName = 'selected-parent'; // the selected class name for menu items\n var openStatusClassName = 'open';\n\n // Private Methods\n function init() {\n if ($('nav.mobileNav').length > 0) {\n // Select the nav item and add arrow div to each has-children link\n selectSectionNavItem();\n $('.mobileNavWrapper input[type=\"text\"]').attr(\"placeholder\", \"Search\");\n }\n }\n function onResize() {\n if ($('nav.mobileNav').length > 0 && window.innerWidth > 1024) {\n closeMenu();\n }\n }\n function selectSectionNavItem() {\n pageUrlPath = pageUrlPath === '/' ? '/home' : '/';\n $('nav.mobileNav').children().find('a[href$=\"' + pageUrlPath + '\"], a[href$=\"' + pageUrlPath + '/\"]').last().each(function () {\n findParentNavItem(this);\n });\n }\n function findParentNavItem(anchorElem) {\n if (anchorElem.href.indexOf(pageUrlPath) !== -1 && pageUrlPath !== '/') {\n // found the menu item\n $(anchorElem).parent().addClass(selectedClassName);\n highLightParentNavItem($(anchorElem).parent());\n }\n }\n function highLightParentNavItem(anchorElem) {\n var elem = $(anchorElem).closest('.hasChildren'); // find the closest previous .hasChildren and the anchor in that li and highlight it\n if (elem.length > 0 && !elem.hasClass(selectedParentClassName)) {\n elem.addClass(selectedParentClassName + ' ' + openStatusClassName);\n highLightParentNavItem(elem); // recursively call this function\n } else if (elem.length > 0) {\n // highlight the main nav item\n elem.parent().parent().closest('.hasChildren').addClass(selectedParentClassName); // needed to jump out of the \n }\n }\n\n function isOpen() {\n return $('nav.mobileNav').hasClass(openStatusClassName);\n }\n function openMenu() {\n $('nav.mobileNav').css(\"visibility\", \"visible\");\n\n // add nav-open classes\n $('.hamburger').addClass(openStatusClassName);\n $('nav.mobileNav').addClass(openStatusClassName);\n $('body, .mobileHeader').addClass('withNavOpen');\n\n // update aria atts\n $('.hamburger').attr(\"aria-expanded\", true);\n focusFirstItem();\n // set focus on the menu\n //setTimeout(function () {\n // // wait for the animation to finish\n // //$('nav.mobile').find(\":focusable\").eq(0).focus(); // focus the first focusable element\n //}, 300);\n }\n\n function focusFirstItem() {\n var $focusables = $('nav.mobileNav').find(\":focusable\");\n console.log({\n $focusables\n });\n if ($focusables.length) {\n $focusables.eq(0).focus();\n }\n }\n function closeMenu() {\n // remove nav-open classes\n $('.hamburger').removeClass(openStatusClassName);\n $('nav.mobileNav').removeClass(openStatusClassName);\n $('body, .mobileHeader').removeClass('withNavOpen');\n\n // update aria atts\n $('.hamburger').attr(\"aria-expanded\", false);\n\n // set focus back on the hamburger\n //$('.hamburger').first()[0].focus();\n }\n\n // Public Methods\n return {\n Init: function () {\n init();\n },\n OnResize: function () {\n onResize();\n },\n openMenu,\n closeMenu,\n isOpen\n };\n}();\n\n/* #endregion */\n/****************************************************************************************************/\n\n/****************************************************************************************************/\n/* #region Initialize the menu and register events */\n/****************************************************************************************************/\n\nmobileMenu.Init();\n$(window).on('resize', function () {\n mobileMenu.OnResize();\n});\n\n// close menu when clicking outside\n$(window).on(\"click\", function () {\n if (mobileMenu.isOpen()) {\n // Hide the menus if visible\n mobileMenu.closeMenu();\n }\n});\n$('nav.mobileNav').on(\"click\", function (e) {\n e.stopPropagation();\n});\n\n/* Escape-key support (for desktop uses of the mobile/hamburger menu) */\n$(document).on(\"keydown\", function (event) {\n if (mobileMenu.isOpen()) {\n if (event.keyCode === 27) {\n // escape key pressed so close the menu\n mobileMenu.closeMenu();\n }\n }\n});\n$('.hamburger').on(\"click\", function (e) {\n if (mobileMenu.isOpen()) {\n mobileMenu.closeMenu();\n } else {\n mobileMenu.openMenu();\n }\n e.stopPropagation();\n});\n\n/* #endregion */\n/****************************************************************************************************/","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/*!\n * Splide.js\n * Version : 4.1.4\n * License : MIT\n * Copyright: 2022 Naotoshi Fujita\n */\nvar MEDIA_PREFERS_REDUCED_MOTION = \"(prefers-reduced-motion: reduce)\";\nvar CREATED = 1;\nvar MOUNTED = 2;\nvar IDLE = 3;\nvar MOVING = 4;\nvar SCROLLING = 5;\nvar DRAGGING = 6;\nvar DESTROYED = 7;\nvar STATES = {\n CREATED: CREATED,\n MOUNTED: MOUNTED,\n IDLE: IDLE,\n MOVING: MOVING,\n SCROLLING: SCROLLING,\n DRAGGING: DRAGGING,\n DESTROYED: DESTROYED\n};\n\nfunction empty(array) {\n array.length = 0;\n}\n\nfunction slice(arrayLike, start, end) {\n return Array.prototype.slice.call(arrayLike, start, end);\n}\n\nfunction apply(func) {\n return func.bind.apply(func, [null].concat(slice(arguments, 1)));\n}\n\nvar nextTick = setTimeout;\n\nvar noop = function noop() {};\n\nfunction raf(func) {\n return requestAnimationFrame(func);\n}\n\nfunction typeOf(type, subject) {\n return typeof subject === type;\n}\n\nfunction isObject(subject) {\n return !isNull(subject) && typeOf(\"object\", subject);\n}\n\nvar isArray = Array.isArray;\nvar isFunction = apply(typeOf, \"function\");\nvar isString = apply(typeOf, \"string\");\nvar isUndefined = apply(typeOf, \"undefined\");\n\nfunction isNull(subject) {\n return subject === null;\n}\n\nfunction isHTMLElement(subject) {\n try {\n return subject instanceof (subject.ownerDocument.defaultView || window).HTMLElement;\n } catch (e) {\n return false;\n }\n}\n\nfunction toArray(value) {\n return isArray(value) ? value : [value];\n}\n\nfunction forEach(values, iteratee) {\n toArray(values).forEach(iteratee);\n}\n\nfunction includes(array, value) {\n return array.indexOf(value) > -1;\n}\n\nfunction push(array, items) {\n array.push.apply(array, toArray(items));\n return array;\n}\n\nfunction toggleClass(elm, classes, add) {\n if (elm) {\n forEach(classes, function (name) {\n if (name) {\n elm.classList[add ? \"add\" : \"remove\"](name);\n }\n });\n }\n}\n\nfunction addClass(elm, classes) {\n toggleClass(elm, isString(classes) ? classes.split(\" \") : classes, true);\n}\n\nfunction append(parent, children) {\n forEach(children, parent.appendChild.bind(parent));\n}\n\nfunction before(nodes, ref) {\n forEach(nodes, function (node) {\n var parent = (ref || node).parentNode;\n\n if (parent) {\n parent.insertBefore(node, ref);\n }\n });\n}\n\nfunction matches(elm, selector) {\n return isHTMLElement(elm) && (elm[\"msMatchesSelector\"] || elm.matches).call(elm, selector);\n}\n\nfunction children(parent, selector) {\n var children2 = parent ? slice(parent.children) : [];\n return selector ? children2.filter(function (child) {\n return matches(child, selector);\n }) : children2;\n}\n\nfunction child(parent, selector) {\n return selector ? children(parent, selector)[0] : parent.firstElementChild;\n}\n\nvar ownKeys = Object.keys;\n\nfunction forOwn(object, iteratee, right) {\n if (object) {\n (right ? ownKeys(object).reverse() : ownKeys(object)).forEach(function (key) {\n key !== \"__proto__\" && iteratee(object[key], key);\n });\n }\n\n return object;\n}\n\nfunction assign(object) {\n slice(arguments, 1).forEach(function (source) {\n forOwn(source, function (value, key) {\n object[key] = source[key];\n });\n });\n return object;\n}\n\nfunction merge(object) {\n slice(arguments, 1).forEach(function (source) {\n forOwn(source, function (value, key) {\n if (isArray(value)) {\n object[key] = value.slice();\n } else if (isObject(value)) {\n object[key] = merge({}, isObject(object[key]) ? object[key] : {}, value);\n } else {\n object[key] = value;\n }\n });\n });\n return object;\n}\n\nfunction omit(object, keys) {\n forEach(keys || ownKeys(object), function (key) {\n delete object[key];\n });\n}\n\nfunction removeAttribute(elms, attrs) {\n forEach(elms, function (elm) {\n forEach(attrs, function (attr) {\n elm && elm.removeAttribute(attr);\n });\n });\n}\n\nfunction setAttribute(elms, attrs, value) {\n if (isObject(attrs)) {\n forOwn(attrs, function (value2, name) {\n setAttribute(elms, name, value2);\n });\n } else {\n forEach(elms, function (elm) {\n isNull(value) || value === \"\" ? removeAttribute(elm, attrs) : elm.setAttribute(attrs, String(value));\n });\n }\n}\n\nfunction create(tag, attrs, parent) {\n var elm = document.createElement(tag);\n\n if (attrs) {\n isString(attrs) ? addClass(elm, attrs) : setAttribute(elm, attrs);\n }\n\n parent && append(parent, elm);\n return elm;\n}\n\nfunction style(elm, prop, value) {\n if (isUndefined(value)) {\n return getComputedStyle(elm)[prop];\n }\n\n if (!isNull(value)) {\n elm.style[prop] = \"\" + value;\n }\n}\n\nfunction display(elm, display2) {\n style(elm, \"display\", display2);\n}\n\nfunction focus(elm) {\n elm[\"setActive\"] && elm[\"setActive\"]() || elm.focus({\n preventScroll: true\n });\n}\n\nfunction getAttribute(elm, attr) {\n return elm.getAttribute(attr);\n}\n\nfunction hasClass(elm, className) {\n return elm && elm.classList.contains(className);\n}\n\nfunction rect(target) {\n return target.getBoundingClientRect();\n}\n\nfunction remove(nodes) {\n forEach(nodes, function (node) {\n if (node && node.parentNode) {\n node.parentNode.removeChild(node);\n }\n });\n}\n\nfunction parseHtml(html) {\n return child(new DOMParser().parseFromString(html, \"text/html\").body);\n}\n\nfunction prevent(e, stopPropagation) {\n e.preventDefault();\n\n if (stopPropagation) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n}\n\nfunction query(parent, selector) {\n return parent && parent.querySelector(selector);\n}\n\nfunction queryAll(parent, selector) {\n return selector ? slice(parent.querySelectorAll(selector)) : [];\n}\n\nfunction removeClass(elm, classes) {\n toggleClass(elm, classes, false);\n}\n\nfunction timeOf(e) {\n return e.timeStamp;\n}\n\nfunction unit(value) {\n return isString(value) ? value : value ? value + \"px\" : \"\";\n}\n\nvar PROJECT_CODE = \"splide\";\nvar DATA_ATTRIBUTE = \"data-\" + PROJECT_CODE;\n\nfunction assert(condition, message) {\n if (!condition) {\n throw new Error(\"[\" + PROJECT_CODE + \"] \" + (message || \"\"));\n }\n}\n\nvar min = Math.min,\n max = Math.max,\n floor = Math.floor,\n ceil = Math.ceil,\n abs = Math.abs;\n\nfunction approximatelyEqual(x, y, epsilon) {\n return abs(x - y) < epsilon;\n}\n\nfunction between(number, x, y, exclusive) {\n var minimum = min(x, y);\n var maximum = max(x, y);\n return exclusive ? minimum < number && number < maximum : minimum <= number && number <= maximum;\n}\n\nfunction clamp(number, x, y) {\n var minimum = min(x, y);\n var maximum = max(x, y);\n return min(max(minimum, number), maximum);\n}\n\nfunction sign(x) {\n return +(x > 0) - +(x < 0);\n}\n\nfunction camelToKebab(string) {\n return string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n}\n\nfunction format(string, replacements) {\n forEach(replacements, function (replacement) {\n string = string.replace(\"%s\", \"\" + replacement);\n });\n return string;\n}\n\nfunction pad(number) {\n return number < 10 ? \"0\" + number : \"\" + number;\n}\n\nvar ids = {};\n\nfunction uniqueId(prefix) {\n return \"\" + prefix + pad(ids[prefix] = (ids[prefix] || 0) + 1);\n}\n\nfunction EventBinder() {\n var listeners = [];\n\n function bind(targets, events, callback, options) {\n forEachEvent(targets, events, function (target, event, namespace) {\n var isEventTarget = (\"addEventListener\" in target);\n var remover = isEventTarget ? target.removeEventListener.bind(target, event, callback, options) : target[\"removeListener\"].bind(target, callback);\n isEventTarget ? target.addEventListener(event, callback, options) : target[\"addListener\"](callback);\n listeners.push([target, event, namespace, callback, remover]);\n });\n }\n\n function unbind(targets, events, callback) {\n forEachEvent(targets, events, function (target, event, namespace) {\n listeners = listeners.filter(function (listener) {\n if (listener[0] === target && listener[1] === event && listener[2] === namespace && (!callback || listener[3] === callback)) {\n listener[4]();\n return false;\n }\n\n return true;\n });\n });\n }\n\n function dispatch(target, type, detail) {\n var e;\n var bubbles = true;\n\n if (typeof CustomEvent === \"function\") {\n e = new CustomEvent(type, {\n bubbles: bubbles,\n detail: detail\n });\n } else {\n e = document.createEvent(\"CustomEvent\");\n e.initCustomEvent(type, bubbles, false, detail);\n }\n\n target.dispatchEvent(e);\n return e;\n }\n\n function forEachEvent(targets, events, iteratee) {\n forEach(targets, function (target) {\n target && forEach(events, function (events2) {\n events2.split(\" \").forEach(function (eventNS) {\n var fragment = eventNS.split(\".\");\n iteratee(target, fragment[0], fragment[1]);\n });\n });\n });\n }\n\n function destroy() {\n listeners.forEach(function (data) {\n data[4]();\n });\n empty(listeners);\n }\n\n return {\n bind: bind,\n unbind: unbind,\n dispatch: dispatch,\n destroy: destroy\n };\n}\n\nvar EVENT_MOUNTED = \"mounted\";\nvar EVENT_READY = \"ready\";\nvar EVENT_MOVE = \"move\";\nvar EVENT_MOVED = \"moved\";\nvar EVENT_CLICK = \"click\";\nvar EVENT_ACTIVE = \"active\";\nvar EVENT_INACTIVE = \"inactive\";\nvar EVENT_VISIBLE = \"visible\";\nvar EVENT_HIDDEN = \"hidden\";\nvar EVENT_REFRESH = \"refresh\";\nvar EVENT_UPDATED = \"updated\";\nvar EVENT_RESIZE = \"resize\";\nvar EVENT_RESIZED = \"resized\";\nvar EVENT_DRAG = \"drag\";\nvar EVENT_DRAGGING = \"dragging\";\nvar EVENT_DRAGGED = \"dragged\";\nvar EVENT_SCROLL = \"scroll\";\nvar EVENT_SCROLLED = \"scrolled\";\nvar EVENT_OVERFLOW = \"overflow\";\nvar EVENT_DESTROY = \"destroy\";\nvar EVENT_ARROWS_MOUNTED = \"arrows:mounted\";\nvar EVENT_ARROWS_UPDATED = \"arrows:updated\";\nvar EVENT_PAGINATION_MOUNTED = \"pagination:mounted\";\nvar EVENT_PAGINATION_UPDATED = \"pagination:updated\";\nvar EVENT_NAVIGATION_MOUNTED = \"navigation:mounted\";\nvar EVENT_AUTOPLAY_PLAY = \"autoplay:play\";\nvar EVENT_AUTOPLAY_PLAYING = \"autoplay:playing\";\nvar EVENT_AUTOPLAY_PAUSE = \"autoplay:pause\";\nvar EVENT_LAZYLOAD_LOADED = \"lazyload:loaded\";\nvar EVENT_SLIDE_KEYDOWN = \"sk\";\nvar EVENT_SHIFTED = \"sh\";\nvar EVENT_END_INDEX_CHANGED = \"ei\";\n\nfunction EventInterface(Splide2) {\n var bus = Splide2 ? Splide2.event.bus : document.createDocumentFragment();\n var binder = EventBinder();\n\n function on(events, callback) {\n binder.bind(bus, toArray(events).join(\" \"), function (e) {\n callback.apply(callback, isArray(e.detail) ? e.detail : []);\n });\n }\n\n function emit(event) {\n binder.dispatch(bus, event, slice(arguments, 1));\n }\n\n if (Splide2) {\n Splide2.event.on(EVENT_DESTROY, binder.destroy);\n }\n\n return assign(binder, {\n bus: bus,\n on: on,\n off: apply(binder.unbind, bus),\n emit: emit\n });\n}\n\nfunction RequestInterval(interval, onInterval, onUpdate, limit) {\n var now = Date.now;\n var startTime;\n var rate = 0;\n var id;\n var paused = true;\n var count = 0;\n\n function update() {\n if (!paused) {\n rate = interval ? min((now() - startTime) / interval, 1) : 1;\n onUpdate && onUpdate(rate);\n\n if (rate >= 1) {\n onInterval();\n startTime = now();\n\n if (limit && ++count >= limit) {\n return pause();\n }\n }\n\n id = raf(update);\n }\n }\n\n function start(resume) {\n resume || cancel();\n startTime = now() - (resume ? rate * interval : 0);\n paused = false;\n id = raf(update);\n }\n\n function pause() {\n paused = true;\n }\n\n function rewind() {\n startTime = now();\n rate = 0;\n\n if (onUpdate) {\n onUpdate(rate);\n }\n }\n\n function cancel() {\n id && cancelAnimationFrame(id);\n rate = 0;\n id = 0;\n paused = true;\n }\n\n function set(time) {\n interval = time;\n }\n\n function isPaused() {\n return paused;\n }\n\n return {\n start: start,\n rewind: rewind,\n pause: pause,\n cancel: cancel,\n set: set,\n isPaused: isPaused\n };\n}\n\nfunction State(initialState) {\n var state = initialState;\n\n function set(value) {\n state = value;\n }\n\n function is(states) {\n return includes(toArray(states), state);\n }\n\n return {\n set: set,\n is: is\n };\n}\n\nfunction Throttle(func, duration) {\n var interval = RequestInterval(duration || 0, func, null, 1);\n return function () {\n interval.isPaused() && interval.start();\n };\n}\n\nfunction Media(Splide2, Components2, options) {\n var state = Splide2.state;\n var breakpoints = options.breakpoints || {};\n var reducedMotion = options.reducedMotion || {};\n var binder = EventBinder();\n var queries = [];\n\n function setup() {\n var isMin = options.mediaQuery === \"min\";\n ownKeys(breakpoints).sort(function (n, m) {\n return isMin ? +n - +m : +m - +n;\n }).forEach(function (key) {\n register(breakpoints[key], \"(\" + (isMin ? \"min\" : \"max\") + \"-width:\" + key + \"px)\");\n });\n register(reducedMotion, MEDIA_PREFERS_REDUCED_MOTION);\n update();\n }\n\n function destroy(completely) {\n if (completely) {\n binder.destroy();\n }\n }\n\n function register(options2, query) {\n var queryList = matchMedia(query);\n binder.bind(queryList, \"change\", update);\n queries.push([options2, queryList]);\n }\n\n function update() {\n var destroyed = state.is(DESTROYED);\n var direction = options.direction;\n var merged = queries.reduce(function (merged2, entry) {\n return merge(merged2, entry[1].matches ? entry[0] : {});\n }, {});\n omit(options);\n set(merged);\n\n if (options.destroy) {\n Splide2.destroy(options.destroy === \"completely\");\n } else if (destroyed) {\n destroy(true);\n Splide2.mount();\n } else {\n direction !== options.direction && Splide2.refresh();\n }\n }\n\n function reduce(enable) {\n if (matchMedia(MEDIA_PREFERS_REDUCED_MOTION).matches) {\n enable ? merge(options, reducedMotion) : omit(options, ownKeys(reducedMotion));\n }\n }\n\n function set(opts, base, notify) {\n merge(options, opts);\n base && merge(Object.getPrototypeOf(options), opts);\n\n if (notify || !state.is(CREATED)) {\n Splide2.emit(EVENT_UPDATED, options);\n }\n }\n\n return {\n setup: setup,\n destroy: destroy,\n reduce: reduce,\n set: set\n };\n}\n\nvar ARROW = \"Arrow\";\nvar ARROW_LEFT = ARROW + \"Left\";\nvar ARROW_RIGHT = ARROW + \"Right\";\nvar ARROW_UP = ARROW + \"Up\";\nvar ARROW_DOWN = ARROW + \"Down\";\nvar LTR = \"ltr\";\nvar RTL = \"rtl\";\nvar TTB = \"ttb\";\nvar ORIENTATION_MAP = {\n width: [\"height\"],\n left: [\"top\", \"right\"],\n right: [\"bottom\", \"left\"],\n x: [\"y\"],\n X: [\"Y\"],\n Y: [\"X\"],\n ArrowLeft: [ARROW_UP, ARROW_RIGHT],\n ArrowRight: [ARROW_DOWN, ARROW_LEFT]\n};\n\nfunction Direction(Splide2, Components2, options) {\n function resolve(prop, axisOnly, direction) {\n direction = direction || options.direction;\n var index = direction === RTL && !axisOnly ? 1 : direction === TTB ? 0 : -1;\n return ORIENTATION_MAP[prop] && ORIENTATION_MAP[prop][index] || prop.replace(/width|left|right/i, function (match, offset) {\n var replacement = ORIENTATION_MAP[match.toLowerCase()][index] || match;\n return offset > 0 ? replacement.charAt(0).toUpperCase() + replacement.slice(1) : replacement;\n });\n }\n\n function orient(value) {\n return value * (options.direction === RTL ? 1 : -1);\n }\n\n return {\n resolve: resolve,\n orient: orient\n };\n}\n\nvar ROLE = \"role\";\nvar TAB_INDEX = \"tabindex\";\nvar DISABLED = \"disabled\";\nvar ARIA_PREFIX = \"aria-\";\nvar ARIA_CONTROLS = ARIA_PREFIX + \"controls\";\nvar ARIA_CURRENT = ARIA_PREFIX + \"current\";\nvar ARIA_SELECTED = ARIA_PREFIX + \"selected\";\nvar ARIA_LABEL = ARIA_PREFIX + \"label\";\nvar ARIA_LABELLEDBY = ARIA_PREFIX + \"labelledby\";\nvar ARIA_HIDDEN = ARIA_PREFIX + \"hidden\";\nvar ARIA_ORIENTATION = ARIA_PREFIX + \"orientation\";\nvar ARIA_ROLEDESCRIPTION = ARIA_PREFIX + \"roledescription\";\nvar ARIA_LIVE = ARIA_PREFIX + \"live\";\nvar ARIA_BUSY = ARIA_PREFIX + \"busy\";\nvar ARIA_ATOMIC = ARIA_PREFIX + \"atomic\";\nvar ALL_ATTRIBUTES = [ROLE, TAB_INDEX, DISABLED, ARIA_CONTROLS, ARIA_CURRENT, ARIA_LABEL, ARIA_LABELLEDBY, ARIA_HIDDEN, ARIA_ORIENTATION, ARIA_ROLEDESCRIPTION];\nvar CLASS_PREFIX = PROJECT_CODE + \"__\";\nvar STATUS_CLASS_PREFIX = \"is-\";\nvar CLASS_ROOT = PROJECT_CODE;\nvar CLASS_TRACK = CLASS_PREFIX + \"track\";\nvar CLASS_LIST = CLASS_PREFIX + \"list\";\nvar CLASS_SLIDE = CLASS_PREFIX + \"slide\";\nvar CLASS_CLONE = CLASS_SLIDE + \"--clone\";\nvar CLASS_CONTAINER = CLASS_SLIDE + \"__container\";\nvar CLASS_ARROWS = CLASS_PREFIX + \"arrows\";\nvar CLASS_ARROW = CLASS_PREFIX + \"arrow\";\nvar CLASS_ARROW_PREV = CLASS_ARROW + \"--prev\";\nvar CLASS_ARROW_NEXT = CLASS_ARROW + \"--next\";\nvar CLASS_PAGINATION = CLASS_PREFIX + \"pagination\";\nvar CLASS_PAGINATION_PAGE = CLASS_PAGINATION + \"__page\";\nvar CLASS_PROGRESS = CLASS_PREFIX + \"progress\";\nvar CLASS_PROGRESS_BAR = CLASS_PROGRESS + \"__bar\";\nvar CLASS_TOGGLE = CLASS_PREFIX + \"toggle\";\nvar CLASS_TOGGLE_PLAY = CLASS_TOGGLE + \"__play\";\nvar CLASS_TOGGLE_PAUSE = CLASS_TOGGLE + \"__pause\";\nvar CLASS_SPINNER = CLASS_PREFIX + \"spinner\";\nvar CLASS_SR = CLASS_PREFIX + \"sr\";\nvar CLASS_INITIALIZED = STATUS_CLASS_PREFIX + \"initialized\";\nvar CLASS_ACTIVE = STATUS_CLASS_PREFIX + \"active\";\nvar CLASS_PREV = STATUS_CLASS_PREFIX + \"prev\";\nvar CLASS_NEXT = STATUS_CLASS_PREFIX + \"next\";\nvar CLASS_VISIBLE = STATUS_CLASS_PREFIX + \"visible\";\nvar CLASS_LOADING = STATUS_CLASS_PREFIX + \"loading\";\nvar CLASS_FOCUS_IN = STATUS_CLASS_PREFIX + \"focus-in\";\nvar CLASS_OVERFLOW = STATUS_CLASS_PREFIX + \"overflow\";\nvar STATUS_CLASSES = [CLASS_ACTIVE, CLASS_VISIBLE, CLASS_PREV, CLASS_NEXT, CLASS_LOADING, CLASS_FOCUS_IN, CLASS_OVERFLOW];\nvar CLASSES = {\n slide: CLASS_SLIDE,\n clone: CLASS_CLONE,\n arrows: CLASS_ARROWS,\n arrow: CLASS_ARROW,\n prev: CLASS_ARROW_PREV,\n next: CLASS_ARROW_NEXT,\n pagination: CLASS_PAGINATION,\n page: CLASS_PAGINATION_PAGE,\n spinner: CLASS_SPINNER\n};\n\nfunction closest(from, selector) {\n if (isFunction(from.closest)) {\n return from.closest(selector);\n }\n\n var elm = from;\n\n while (elm && elm.nodeType === 1) {\n if (matches(elm, selector)) {\n break;\n }\n\n elm = elm.parentElement;\n }\n\n return elm;\n}\n\nvar FRICTION = 5;\nvar LOG_INTERVAL = 200;\nvar POINTER_DOWN_EVENTS = \"touchstart mousedown\";\nvar POINTER_MOVE_EVENTS = \"touchmove mousemove\";\nvar POINTER_UP_EVENTS = \"touchend touchcancel mouseup click\";\n\nfunction Elements(Splide2, Components2, options) {\n var _EventInterface = EventInterface(Splide2),\n on = _EventInterface.on,\n bind = _EventInterface.bind;\n\n var root = Splide2.root;\n var i18n = options.i18n;\n var elements = {};\n var slides = [];\n var rootClasses = [];\n var trackClasses = [];\n var track;\n var list;\n var isUsingKey;\n\n function setup() {\n collect();\n init();\n update();\n }\n\n function mount() {\n on(EVENT_REFRESH, destroy);\n on(EVENT_REFRESH, setup);\n on(EVENT_UPDATED, update);\n bind(document, POINTER_DOWN_EVENTS + \" keydown\", function (e) {\n isUsingKey = e.type === \"keydown\";\n }, {\n capture: true\n });\n bind(root, \"focusin\", function () {\n toggleClass(root, CLASS_FOCUS_IN, !!isUsingKey);\n });\n }\n\n function destroy(completely) {\n var attrs = ALL_ATTRIBUTES.concat(\"style\");\n empty(slides);\n removeClass(root, rootClasses);\n removeClass(track, trackClasses);\n removeAttribute([track, list], attrs);\n removeAttribute(root, completely ? attrs : [\"style\", ARIA_ROLEDESCRIPTION]);\n }\n\n function update() {\n removeClass(root, rootClasses);\n removeClass(track, trackClasses);\n rootClasses = getClasses(CLASS_ROOT);\n trackClasses = getClasses(CLASS_TRACK);\n addClass(root, rootClasses);\n addClass(track, trackClasses);\n setAttribute(root, ARIA_LABEL, options.label);\n setAttribute(root, ARIA_LABELLEDBY, options.labelledby);\n }\n\n function collect() {\n track = find(\".\" + CLASS_TRACK);\n list = child(track, \".\" + CLASS_LIST);\n assert(track && list, \"A track/list element is missing.\");\n push(slides, children(list, \".\" + CLASS_SLIDE + \":not(.\" + CLASS_CLONE + \")\"));\n forOwn({\n arrows: CLASS_ARROWS,\n pagination: CLASS_PAGINATION,\n prev: CLASS_ARROW_PREV,\n next: CLASS_ARROW_NEXT,\n bar: CLASS_PROGRESS_BAR,\n toggle: CLASS_TOGGLE\n }, function (className, key) {\n elements[key] = find(\".\" + className);\n });\n assign(elements, {\n root: root,\n track: track,\n list: list,\n slides: slides\n });\n }\n\n function init() {\n var id = root.id || uniqueId(PROJECT_CODE);\n var role = options.role;\n root.id = id;\n track.id = track.id || id + \"-track\";\n list.id = list.id || id + \"-list\";\n\n if (!getAttribute(root, ROLE) && root.tagName !== \"SECTION\" && role) {\n setAttribute(root, ROLE, role);\n }\n\n setAttribute(root, ARIA_ROLEDESCRIPTION, i18n.carousel);\n setAttribute(list, ROLE, \"presentation\");\n }\n\n function find(selector) {\n var elm = query(root, selector);\n return elm && closest(elm, \".\" + CLASS_ROOT) === root ? elm : void 0;\n }\n\n function getClasses(base) {\n return [base + \"--\" + options.type, base + \"--\" + options.direction, options.drag && base + \"--draggable\", options.isNavigation && base + \"--nav\", base === CLASS_ROOT && CLASS_ACTIVE];\n }\n\n return assign(elements, {\n setup: setup,\n mount: mount,\n destroy: destroy\n });\n}\n\nvar SLIDE = \"slide\";\nvar LOOP = \"loop\";\nvar FADE = \"fade\";\n\nfunction Slide$1(Splide2, index, slideIndex, slide) {\n var event = EventInterface(Splide2);\n var on = event.on,\n emit = event.emit,\n bind = event.bind;\n var Components = Splide2.Components,\n root = Splide2.root,\n options = Splide2.options;\n var isNavigation = options.isNavigation,\n updateOnMove = options.updateOnMove,\n i18n = options.i18n,\n pagination = options.pagination,\n slideFocus = options.slideFocus;\n var resolve = Components.Direction.resolve;\n var styles = getAttribute(slide, \"style\");\n var label = getAttribute(slide, ARIA_LABEL);\n var isClone = slideIndex > -1;\n var container = child(slide, \".\" + CLASS_CONTAINER);\n var destroyed;\n\n function mount() {\n if (!isClone) {\n slide.id = root.id + \"-slide\" + pad(index + 1);\n setAttribute(slide, ROLE, pagination ? \"tabpanel\" : \"group\");\n setAttribute(slide, ARIA_ROLEDESCRIPTION, i18n.slide);\n setAttribute(slide, ARIA_LABEL, label || format(i18n.slideLabel, [index + 1, Splide2.length]));\n }\n\n listen();\n }\n\n function listen() {\n bind(slide, \"click\", apply(emit, EVENT_CLICK, self));\n bind(slide, \"keydown\", apply(emit, EVENT_SLIDE_KEYDOWN, self));\n on([EVENT_MOVED, EVENT_SHIFTED, EVENT_SCROLLED], update);\n on(EVENT_NAVIGATION_MOUNTED, initNavigation);\n\n if (updateOnMove) {\n on(EVENT_MOVE, onMove);\n }\n }\n\n function destroy() {\n destroyed = true;\n event.destroy();\n removeClass(slide, STATUS_CLASSES);\n removeAttribute(slide, ALL_ATTRIBUTES);\n setAttribute(slide, \"style\", styles);\n setAttribute(slide, ARIA_LABEL, label || \"\");\n }\n\n function initNavigation() {\n var controls = Splide2.splides.map(function (target) {\n var Slide2 = target.splide.Components.Slides.getAt(index);\n return Slide2 ? Slide2.slide.id : \"\";\n }).join(\" \");\n setAttribute(slide, ARIA_LABEL, format(i18n.slideX, (isClone ? slideIndex : index) + 1));\n setAttribute(slide, ARIA_CONTROLS, controls);\n setAttribute(slide, ROLE, slideFocus ? \"button\" : \"\");\n slideFocus && removeAttribute(slide, ARIA_ROLEDESCRIPTION);\n }\n\n function onMove() {\n if (!destroyed) {\n update();\n }\n }\n\n function update() {\n if (!destroyed) {\n var curr = Splide2.index;\n updateActivity();\n updateVisibility();\n toggleClass(slide, CLASS_PREV, index === curr - 1);\n toggleClass(slide, CLASS_NEXT, index === curr + 1);\n }\n }\n\n function updateActivity() {\n var active = isActive();\n\n if (active !== hasClass(slide, CLASS_ACTIVE)) {\n toggleClass(slide, CLASS_ACTIVE, active);\n setAttribute(slide, ARIA_CURRENT, isNavigation && active || \"\");\n emit(active ? EVENT_ACTIVE : EVENT_INACTIVE, self);\n }\n }\n\n function updateVisibility() {\n var visible = isVisible();\n var hidden = !visible && (!isActive() || isClone);\n\n if (!Splide2.state.is([MOVING, SCROLLING])) {\n setAttribute(slide, ARIA_HIDDEN, hidden || \"\");\n }\n\n setAttribute(queryAll(slide, options.focusableNodes || \"\"), TAB_INDEX, hidden ? -1 : \"\");\n\n if (slideFocus) {\n setAttribute(slide, TAB_INDEX, hidden ? -1 : 0);\n }\n\n if (visible !== hasClass(slide, CLASS_VISIBLE)) {\n toggleClass(slide, CLASS_VISIBLE, visible);\n emit(visible ? EVENT_VISIBLE : EVENT_HIDDEN, self);\n }\n\n if (!visible && document.activeElement === slide) {\n var Slide2 = Components.Slides.getAt(Splide2.index);\n Slide2 && focus(Slide2.slide);\n }\n }\n\n function style$1(prop, value, useContainer) {\n style(useContainer && container || slide, prop, value);\n }\n\n function isActive() {\n var curr = Splide2.index;\n return curr === index || options.cloneStatus && curr === slideIndex;\n }\n\n function isVisible() {\n if (Splide2.is(FADE)) {\n return isActive();\n }\n\n var trackRect = rect(Components.Elements.track);\n var slideRect = rect(slide);\n var left = resolve(\"left\", true);\n var right = resolve(\"right\", true);\n return floor(trackRect[left]) <= ceil(slideRect[left]) && floor(slideRect[right]) <= ceil(trackRect[right]);\n }\n\n function isWithin(from, distance) {\n var diff = abs(from - index);\n\n if (!isClone && (options.rewind || Splide2.is(LOOP))) {\n diff = min(diff, Splide2.length - diff);\n }\n\n return diff <= distance;\n }\n\n var self = {\n index: index,\n slideIndex: slideIndex,\n slide: slide,\n container: container,\n isClone: isClone,\n mount: mount,\n destroy: destroy,\n update: update,\n style: style$1,\n isWithin: isWithin\n };\n return self;\n}\n\nfunction Slides(Splide2, Components2, options) {\n var _EventInterface2 = EventInterface(Splide2),\n on = _EventInterface2.on,\n emit = _EventInterface2.emit,\n bind = _EventInterface2.bind;\n\n var _Components2$Elements = Components2.Elements,\n slides = _Components2$Elements.slides,\n list = _Components2$Elements.list;\n var Slides2 = [];\n\n function mount() {\n init();\n on(EVENT_REFRESH, destroy);\n on(EVENT_REFRESH, init);\n }\n\n function init() {\n slides.forEach(function (slide, index) {\n register(slide, index, -1);\n });\n }\n\n function destroy() {\n forEach$1(function (Slide2) {\n Slide2.destroy();\n });\n empty(Slides2);\n }\n\n function update() {\n forEach$1(function (Slide2) {\n Slide2.update();\n });\n }\n\n function register(slide, index, slideIndex) {\n var object = Slide$1(Splide2, index, slideIndex, slide);\n object.mount();\n Slides2.push(object);\n Slides2.sort(function (Slide1, Slide2) {\n return Slide1.index - Slide2.index;\n });\n }\n\n function get(excludeClones) {\n return excludeClones ? filter(function (Slide2) {\n return !Slide2.isClone;\n }) : Slides2;\n }\n\n function getIn(page) {\n var Controller = Components2.Controller;\n var index = Controller.toIndex(page);\n var max = Controller.hasFocus() ? 1 : options.perPage;\n return filter(function (Slide2) {\n return between(Slide2.index, index, index + max - 1);\n });\n }\n\n function getAt(index) {\n return filter(index)[0];\n }\n\n function add(items, index) {\n forEach(items, function (slide) {\n if (isString(slide)) {\n slide = parseHtml(slide);\n }\n\n if (isHTMLElement(slide)) {\n var ref = slides[index];\n ref ? before(slide, ref) : append(list, slide);\n addClass(slide, options.classes.slide);\n observeImages(slide, apply(emit, EVENT_RESIZE));\n }\n });\n emit(EVENT_REFRESH);\n }\n\n function remove$1(matcher) {\n remove(filter(matcher).map(function (Slide2) {\n return Slide2.slide;\n }));\n emit(EVENT_REFRESH);\n }\n\n function forEach$1(iteratee, excludeClones) {\n get(excludeClones).forEach(iteratee);\n }\n\n function filter(matcher) {\n return Slides2.filter(isFunction(matcher) ? matcher : function (Slide2) {\n return isString(matcher) ? matches(Slide2.slide, matcher) : includes(toArray(matcher), Slide2.index);\n });\n }\n\n function style(prop, value, useContainer) {\n forEach$1(function (Slide2) {\n Slide2.style(prop, value, useContainer);\n });\n }\n\n function observeImages(elm, callback) {\n var images = queryAll(elm, \"img\");\n var length = images.length;\n\n if (length) {\n images.forEach(function (img) {\n bind(img, \"load error\", function () {\n if (! --length) {\n callback();\n }\n });\n });\n } else {\n callback();\n }\n }\n\n function getLength(excludeClones) {\n return excludeClones ? slides.length : Slides2.length;\n }\n\n function isEnough() {\n return Slides2.length > options.perPage;\n }\n\n return {\n mount: mount,\n destroy: destroy,\n update: update,\n register: register,\n get: get,\n getIn: getIn,\n getAt: getAt,\n add: add,\n remove: remove$1,\n forEach: forEach$1,\n filter: filter,\n style: style,\n getLength: getLength,\n isEnough: isEnough\n };\n}\n\nfunction Layout(Splide2, Components2, options) {\n var _EventInterface3 = EventInterface(Splide2),\n on = _EventInterface3.on,\n bind = _EventInterface3.bind,\n emit = _EventInterface3.emit;\n\n var Slides = Components2.Slides;\n var resolve = Components2.Direction.resolve;\n var _Components2$Elements2 = Components2.Elements,\n root = _Components2$Elements2.root,\n track = _Components2$Elements2.track,\n list = _Components2$Elements2.list;\n var getAt = Slides.getAt,\n styleSlides = Slides.style;\n var vertical;\n var rootRect;\n var overflow;\n\n function mount() {\n init();\n bind(window, \"resize load\", Throttle(apply(emit, EVENT_RESIZE)));\n on([EVENT_UPDATED, EVENT_REFRESH], init);\n on(EVENT_RESIZE, resize);\n }\n\n function init() {\n vertical = options.direction === TTB;\n style(root, \"maxWidth\", unit(options.width));\n style(track, resolve(\"paddingLeft\"), cssPadding(false));\n style(track, resolve(\"paddingRight\"), cssPadding(true));\n resize(true);\n }\n\n function resize(force) {\n var newRect = rect(root);\n\n if (force || rootRect.width !== newRect.width || rootRect.height !== newRect.height) {\n style(track, \"height\", cssTrackHeight());\n styleSlides(resolve(\"marginRight\"), unit(options.gap));\n styleSlides(\"width\", cssSlideWidth());\n styleSlides(\"height\", cssSlideHeight(), true);\n rootRect = newRect;\n emit(EVENT_RESIZED);\n\n if (overflow !== (overflow = isOverflow())) {\n toggleClass(root, CLASS_OVERFLOW, overflow);\n emit(EVENT_OVERFLOW, overflow);\n }\n }\n }\n\n function cssPadding(right) {\n var padding = options.padding;\n var prop = resolve(right ? \"right\" : \"left\");\n return padding && unit(padding[prop] || (isObject(padding) ? 0 : padding)) || \"0px\";\n }\n\n function cssTrackHeight() {\n var height = \"\";\n\n if (vertical) {\n height = cssHeight();\n assert(height, \"height or heightRatio is missing.\");\n height = \"calc(\" + height + \" - \" + cssPadding(false) + \" - \" + cssPadding(true) + \")\";\n }\n\n return height;\n }\n\n function cssHeight() {\n return unit(options.height || rect(list).width * options.heightRatio);\n }\n\n function cssSlideWidth() {\n return options.autoWidth ? null : unit(options.fixedWidth) || (vertical ? \"\" : cssSlideSize());\n }\n\n function cssSlideHeight() {\n return unit(options.fixedHeight) || (vertical ? options.autoHeight ? null : cssSlideSize() : cssHeight());\n }\n\n function cssSlideSize() {\n var gap = unit(options.gap);\n return \"calc((100%\" + (gap && \" + \" + gap) + \")/\" + (options.perPage || 1) + (gap && \" - \" + gap) + \")\";\n }\n\n function listSize() {\n return rect(list)[resolve(\"width\")];\n }\n\n function slideSize(index, withoutGap) {\n var Slide = getAt(index || 0);\n return Slide ? rect(Slide.slide)[resolve(\"width\")] + (withoutGap ? 0 : getGap()) : 0;\n }\n\n function totalSize(index, withoutGap) {\n var Slide = getAt(index);\n\n if (Slide) {\n var right = rect(Slide.slide)[resolve(\"right\")];\n var left = rect(list)[resolve(\"left\")];\n return abs(right - left) + (withoutGap ? 0 : getGap());\n }\n\n return 0;\n }\n\n function sliderSize(withoutGap) {\n return totalSize(Splide2.length - 1) - totalSize(0) + slideSize(0, withoutGap);\n }\n\n function getGap() {\n var Slide = getAt(0);\n return Slide && parseFloat(style(Slide.slide, resolve(\"marginRight\"))) || 0;\n }\n\n function getPadding(right) {\n return parseFloat(style(track, resolve(\"padding\" + (right ? \"Right\" : \"Left\")))) || 0;\n }\n\n function isOverflow() {\n return Splide2.is(FADE) || sliderSize(true) > listSize();\n }\n\n return {\n mount: mount,\n resize: resize,\n listSize: listSize,\n slideSize: slideSize,\n sliderSize: sliderSize,\n totalSize: totalSize,\n getPadding: getPadding,\n isOverflow: isOverflow\n };\n}\n\nvar MULTIPLIER = 2;\n\nfunction Clones(Splide2, Components2, options) {\n var event = EventInterface(Splide2);\n var on = event.on;\n var Elements = Components2.Elements,\n Slides = Components2.Slides;\n var resolve = Components2.Direction.resolve;\n var clones = [];\n var cloneCount;\n\n function mount() {\n on(EVENT_REFRESH, remount);\n on([EVENT_UPDATED, EVENT_RESIZE], observe);\n\n if (cloneCount = computeCloneCount()) {\n generate(cloneCount);\n Components2.Layout.resize(true);\n }\n }\n\n function remount() {\n destroy();\n mount();\n }\n\n function destroy() {\n remove(clones);\n empty(clones);\n event.destroy();\n }\n\n function observe() {\n var count = computeCloneCount();\n\n if (cloneCount !== count) {\n if (cloneCount < count || !count) {\n event.emit(EVENT_REFRESH);\n }\n }\n }\n\n function generate(count) {\n var slides = Slides.get().slice();\n var length = slides.length;\n\n if (length) {\n while (slides.length < count) {\n push(slides, slides);\n }\n\n push(slides.slice(-count), slides.slice(0, count)).forEach(function (Slide, index) {\n var isHead = index < count;\n var clone = cloneDeep(Slide.slide, index);\n isHead ? before(clone, slides[0].slide) : append(Elements.list, clone);\n push(clones, clone);\n Slides.register(clone, index - count + (isHead ? 0 : length), Slide.index);\n });\n }\n }\n\n function cloneDeep(elm, index) {\n var clone = elm.cloneNode(true);\n addClass(clone, options.classes.clone);\n clone.id = Splide2.root.id + \"-clone\" + pad(index + 1);\n return clone;\n }\n\n function computeCloneCount() {\n var clones2 = options.clones;\n\n if (!Splide2.is(LOOP)) {\n clones2 = 0;\n } else if (isUndefined(clones2)) {\n var fixedSize = options[resolve(\"fixedWidth\")] && Components2.Layout.slideSize(0);\n var fixedCount = fixedSize && ceil(rect(Elements.track)[resolve(\"width\")] / fixedSize);\n clones2 = fixedCount || options[resolve(\"autoWidth\")] && Splide2.length || options.perPage * MULTIPLIER;\n }\n\n return clones2;\n }\n\n return {\n mount: mount,\n destroy: destroy\n };\n}\n\nfunction Move(Splide2, Components2, options) {\n var _EventInterface4 = EventInterface(Splide2),\n on = _EventInterface4.on,\n emit = _EventInterface4.emit;\n\n var set = Splide2.state.set;\n var _Components2$Layout = Components2.Layout,\n slideSize = _Components2$Layout.slideSize,\n getPadding = _Components2$Layout.getPadding,\n totalSize = _Components2$Layout.totalSize,\n listSize = _Components2$Layout.listSize,\n sliderSize = _Components2$Layout.sliderSize;\n var _Components2$Directio = Components2.Direction,\n resolve = _Components2$Directio.resolve,\n orient = _Components2$Directio.orient;\n var _Components2$Elements3 = Components2.Elements,\n list = _Components2$Elements3.list,\n track = _Components2$Elements3.track;\n var Transition;\n\n function mount() {\n Transition = Components2.Transition;\n on([EVENT_MOUNTED, EVENT_RESIZED, EVENT_UPDATED, EVENT_REFRESH], reposition);\n }\n\n function reposition() {\n if (!Components2.Controller.isBusy()) {\n Components2.Scroll.cancel();\n jump(Splide2.index);\n Components2.Slides.update();\n }\n }\n\n function move(dest, index, prev, callback) {\n if (dest !== index && canShift(dest > prev)) {\n cancel();\n translate(shift(getPosition(), dest > prev), true);\n }\n\n set(MOVING);\n emit(EVENT_MOVE, index, prev, dest);\n Transition.start(index, function () {\n set(IDLE);\n emit(EVENT_MOVED, index, prev, dest);\n callback && callback();\n });\n }\n\n function jump(index) {\n translate(toPosition(index, true));\n }\n\n function translate(position, preventLoop) {\n if (!Splide2.is(FADE)) {\n var destination = preventLoop ? position : loop(position);\n style(list, \"transform\", \"translate\" + resolve(\"X\") + \"(\" + destination + \"px)\");\n position !== destination && emit(EVENT_SHIFTED);\n }\n }\n\n function loop(position) {\n if (Splide2.is(LOOP)) {\n var index = toIndex(position);\n var exceededMax = index > Components2.Controller.getEnd();\n var exceededMin = index < 0;\n\n if (exceededMin || exceededMax) {\n position = shift(position, exceededMax);\n }\n }\n\n return position;\n }\n\n function shift(position, backwards) {\n var excess = position - getLimit(backwards);\n var size = sliderSize();\n position -= orient(size * (ceil(abs(excess) / size) || 1)) * (backwards ? 1 : -1);\n return position;\n }\n\n function cancel() {\n translate(getPosition(), true);\n Transition.cancel();\n }\n\n function toIndex(position) {\n var Slides = Components2.Slides.get();\n var index = 0;\n var minDistance = Infinity;\n\n for (var i = 0; i < Slides.length; i++) {\n var slideIndex = Slides[i].index;\n var distance = abs(toPosition(slideIndex, true) - position);\n\n if (distance <= minDistance) {\n minDistance = distance;\n index = slideIndex;\n } else {\n break;\n }\n }\n\n return index;\n }\n\n function toPosition(index, trimming) {\n var position = orient(totalSize(index - 1) - offset(index));\n return trimming ? trim(position) : position;\n }\n\n function getPosition() {\n var left = resolve(\"left\");\n return rect(list)[left] - rect(track)[left] + orient(getPadding(false));\n }\n\n function trim(position) {\n if (options.trimSpace && Splide2.is(SLIDE)) {\n position = clamp(position, 0, orient(sliderSize(true) - listSize()));\n }\n\n return position;\n }\n\n function offset(index) {\n var focus = options.focus;\n return focus === \"center\" ? (listSize() - slideSize(index, true)) / 2 : +focus * slideSize(index) || 0;\n }\n\n function getLimit(max) {\n return toPosition(max ? Components2.Controller.getEnd() : 0, !!options.trimSpace);\n }\n\n function canShift(backwards) {\n var shifted = orient(shift(getPosition(), backwards));\n return backwards ? shifted >= 0 : shifted <= list[resolve(\"scrollWidth\")] - rect(track)[resolve(\"width\")];\n }\n\n function exceededLimit(max, position) {\n position = isUndefined(position) ? getPosition() : position;\n var exceededMin = max !== true && orient(position) < orient(getLimit(false));\n var exceededMax = max !== false && orient(position) > orient(getLimit(true));\n return exceededMin || exceededMax;\n }\n\n return {\n mount: mount,\n move: move,\n jump: jump,\n translate: translate,\n shift: shift,\n cancel: cancel,\n toIndex: toIndex,\n toPosition: toPosition,\n getPosition: getPosition,\n getLimit: getLimit,\n exceededLimit: exceededLimit,\n reposition: reposition\n };\n}\n\nfunction Controller(Splide2, Components2, options) {\n var _EventInterface5 = EventInterface(Splide2),\n on = _EventInterface5.on,\n emit = _EventInterface5.emit;\n\n var Move = Components2.Move;\n var getPosition = Move.getPosition,\n getLimit = Move.getLimit,\n toPosition = Move.toPosition;\n var _Components2$Slides = Components2.Slides,\n isEnough = _Components2$Slides.isEnough,\n getLength = _Components2$Slides.getLength;\n var omitEnd = options.omitEnd;\n var isLoop = Splide2.is(LOOP);\n var isSlide = Splide2.is(SLIDE);\n var getNext = apply(getAdjacent, false);\n var getPrev = apply(getAdjacent, true);\n var currIndex = options.start || 0;\n var endIndex;\n var prevIndex = currIndex;\n var slideCount;\n var perMove;\n var perPage;\n\n function mount() {\n init();\n on([EVENT_UPDATED, EVENT_REFRESH, EVENT_END_INDEX_CHANGED], init);\n on(EVENT_RESIZED, onResized);\n }\n\n function init() {\n slideCount = getLength(true);\n perMove = options.perMove;\n perPage = options.perPage;\n endIndex = getEnd();\n var index = clamp(currIndex, 0, omitEnd ? endIndex : slideCount - 1);\n\n if (index !== currIndex) {\n currIndex = index;\n Move.reposition();\n }\n }\n\n function onResized() {\n if (endIndex !== getEnd()) {\n emit(EVENT_END_INDEX_CHANGED);\n }\n }\n\n function go(control, allowSameIndex, callback) {\n if (!isBusy()) {\n var dest = parse(control);\n var index = loop(dest);\n\n if (index > -1 && (allowSameIndex || index !== currIndex)) {\n setIndex(index);\n Move.move(dest, index, prevIndex, callback);\n }\n }\n }\n\n function scroll(destination, duration, snap, callback) {\n Components2.Scroll.scroll(destination, duration, snap, function () {\n var index = loop(Move.toIndex(getPosition()));\n setIndex(omitEnd ? min(index, endIndex) : index);\n callback && callback();\n });\n }\n\n function parse(control) {\n var index = currIndex;\n\n if (isString(control)) {\n var _ref = control.match(/([+\\-<>])(\\d+)?/) || [],\n indicator = _ref[1],\n number = _ref[2];\n\n if (indicator === \"+\" || indicator === \"-\") {\n index = computeDestIndex(currIndex + +(\"\" + indicator + (+number || 1)), currIndex);\n } else if (indicator === \">\") {\n index = number ? toIndex(+number) : getNext(true);\n } else if (indicator === \"<\") {\n index = getPrev(true);\n }\n } else {\n index = isLoop ? control : clamp(control, 0, endIndex);\n }\n\n return index;\n }\n\n function getAdjacent(prev, destination) {\n var number = perMove || (hasFocus() ? 1 : perPage);\n var dest = computeDestIndex(currIndex + number * (prev ? -1 : 1), currIndex, !(perMove || hasFocus()));\n\n if (dest === -1 && isSlide) {\n if (!approximatelyEqual(getPosition(), getLimit(!prev), 1)) {\n return prev ? 0 : endIndex;\n }\n }\n\n return destination ? dest : loop(dest);\n }\n\n function computeDestIndex(dest, from, snapPage) {\n if (isEnough() || hasFocus()) {\n var index = computeMovableDestIndex(dest);\n\n if (index !== dest) {\n from = dest;\n dest = index;\n snapPage = false;\n }\n\n if (dest < 0 || dest > endIndex) {\n if (!perMove && (between(0, dest, from, true) || between(endIndex, from, dest, true))) {\n dest = toIndex(toPage(dest));\n } else {\n if (isLoop) {\n dest = snapPage ? dest < 0 ? -(slideCount % perPage || perPage) : slideCount : dest;\n } else if (options.rewind) {\n dest = dest < 0 ? endIndex : 0;\n } else {\n dest = -1;\n }\n }\n } else {\n if (snapPage && dest !== from) {\n dest = toIndex(toPage(from) + (dest < from ? -1 : 1));\n }\n }\n } else {\n dest = -1;\n }\n\n return dest;\n }\n\n function computeMovableDestIndex(dest) {\n if (isSlide && options.trimSpace === \"move\" && dest !== currIndex) {\n var position = getPosition();\n\n while (position === toPosition(dest, true) && between(dest, 0, Splide2.length - 1, !options.rewind)) {\n dest < currIndex ? --dest : ++dest;\n }\n }\n\n return dest;\n }\n\n function loop(index) {\n return isLoop ? (index + slideCount) % slideCount || 0 : index;\n }\n\n function getEnd() {\n var end = slideCount - (hasFocus() || isLoop && perMove ? 1 : perPage);\n\n while (omitEnd && end-- > 0) {\n if (toPosition(slideCount - 1, true) !== toPosition(end, true)) {\n end++;\n break;\n }\n }\n\n return clamp(end, 0, slideCount - 1);\n }\n\n function toIndex(page) {\n return clamp(hasFocus() ? page : perPage * page, 0, endIndex);\n }\n\n function toPage(index) {\n return hasFocus() ? min(index, endIndex) : floor((index >= endIndex ? slideCount - 1 : index) / perPage);\n }\n\n function toDest(destination) {\n var closest = Move.toIndex(destination);\n return isSlide ? clamp(closest, 0, endIndex) : closest;\n }\n\n function setIndex(index) {\n if (index !== currIndex) {\n prevIndex = currIndex;\n currIndex = index;\n }\n }\n\n function getIndex(prev) {\n return prev ? prevIndex : currIndex;\n }\n\n function hasFocus() {\n return !isUndefined(options.focus) || options.isNavigation;\n }\n\n function isBusy() {\n return Splide2.state.is([MOVING, SCROLLING]) && !!options.waitForTransition;\n }\n\n return {\n mount: mount,\n go: go,\n scroll: scroll,\n getNext: getNext,\n getPrev: getPrev,\n getAdjacent: getAdjacent,\n getEnd: getEnd,\n setIndex: setIndex,\n getIndex: getIndex,\n toIndex: toIndex,\n toPage: toPage,\n toDest: toDest,\n hasFocus: hasFocus,\n isBusy: isBusy\n };\n}\n\nvar XML_NAME_SPACE = \"http://www.w3.org/2000/svg\";\nvar PATH = \"m15.5 0.932-4.3 4.38 14.5 14.6-14.5 14.5 4.3 4.4 14.6-14.6 4.4-4.3-4.4-4.4-14.6-14.6z\";\nvar SIZE = 40;\n\nfunction Arrows(Splide2, Components2, options) {\n var event = EventInterface(Splide2);\n var on = event.on,\n bind = event.bind,\n emit = event.emit;\n var classes = options.classes,\n i18n = options.i18n;\n var Elements = Components2.Elements,\n Controller = Components2.Controller;\n var placeholder = Elements.arrows,\n track = Elements.track;\n var wrapper = placeholder;\n var prev = Elements.prev;\n var next = Elements.next;\n var created;\n var wrapperClasses;\n var arrows = {};\n\n function mount() {\n init();\n on(EVENT_UPDATED, remount);\n }\n\n function remount() {\n destroy();\n mount();\n }\n\n function init() {\n var enabled = options.arrows;\n\n if (enabled && !(prev && next)) {\n createArrows();\n }\n\n if (prev && next) {\n assign(arrows, {\n prev: prev,\n next: next\n });\n display(wrapper, enabled ? \"\" : \"none\");\n addClass(wrapper, wrapperClasses = CLASS_ARROWS + \"--\" + options.direction);\n\n if (enabled) {\n listen();\n update();\n setAttribute([prev, next], ARIA_CONTROLS, track.id);\n emit(EVENT_ARROWS_MOUNTED, prev, next);\n }\n }\n }\n\n function destroy() {\n event.destroy();\n removeClass(wrapper, wrapperClasses);\n\n if (created) {\n remove(placeholder ? [prev, next] : wrapper);\n prev = next = null;\n } else {\n removeAttribute([prev, next], ALL_ATTRIBUTES);\n }\n }\n\n function listen() {\n on([EVENT_MOUNTED, EVENT_MOVED, EVENT_REFRESH, EVENT_SCROLLED, EVENT_END_INDEX_CHANGED], update);\n bind(next, \"click\", apply(go, \">\"));\n bind(prev, \"click\", apply(go, \"<\"));\n }\n\n function go(control) {\n Controller.go(control, true);\n }\n\n function createArrows() {\n wrapper = placeholder || create(\"div\", classes.arrows);\n prev = createArrow(true);\n next = createArrow(false);\n created = true;\n append(wrapper, [prev, next]);\n !placeholder && before(wrapper, track);\n }\n\n function createArrow(prev2) {\n var arrow = \"\";\n };\n\n _proto3.html = function html() {\n var _this$config = this.config,\n rootClass = _this$config.rootClass,\n listTag = _this$config.listTag,\n arrows = _this$config.arrows,\n beforeTrack = _this$config.beforeTrack,\n afterTrack = _this$config.afterTrack,\n slider = _this$config.slider,\n beforeSlider = _this$config.beforeSlider,\n afterSlider = _this$config.afterSlider;\n var html = \"\";\n html += \"
\";\n html += \"\";\n\n if (slider) {\n html += beforeSlider || \"\";\n html += \"
\";\n }\n\n html += beforeTrack || \"\";\n\n if (arrows) {\n html += this.renderArrows();\n }\n\n html += \"
\";\n html += \"<\" + listTag + \" class=\\\"splide__list\\\">\";\n html += this.renderSlides();\n html += \"\";\n html += \"
\";\n html += afterTrack || \"\";\n\n if (slider) {\n html += \"
\";\n html += afterSlider || \"\";\n }\n\n html += \"
\";\n return html;\n };\n\n return SplideRenderer;\n}();\n\nexport { CLASSES, CLASS_ACTIVE, CLASS_ARROW, CLASS_ARROWS, CLASS_ARROW_NEXT, CLASS_ARROW_PREV, CLASS_CLONE, CLASS_CONTAINER, CLASS_FOCUS_IN, CLASS_INITIALIZED, CLASS_LIST, CLASS_LOADING, CLASS_NEXT, CLASS_OVERFLOW, CLASS_PAGINATION, CLASS_PAGINATION_PAGE, CLASS_PREV, CLASS_PROGRESS, CLASS_PROGRESS_BAR, CLASS_ROOT, CLASS_SLIDE, CLASS_SPINNER, CLASS_SR, CLASS_TOGGLE, CLASS_TOGGLE_PAUSE, CLASS_TOGGLE_PLAY, CLASS_TRACK, CLASS_VISIBLE, DEFAULTS, EVENT_ACTIVE, EVENT_ARROWS_MOUNTED, EVENT_ARROWS_UPDATED, EVENT_AUTOPLAY_PAUSE, EVENT_AUTOPLAY_PLAY, EVENT_AUTOPLAY_PLAYING, EVENT_CLICK, EVENT_DESTROY, EVENT_DRAG, EVENT_DRAGGED, EVENT_DRAGGING, EVENT_END_INDEX_CHANGED, EVENT_HIDDEN, EVENT_INACTIVE, EVENT_LAZYLOAD_LOADED, EVENT_MOUNTED, EVENT_MOVE, EVENT_MOVED, EVENT_NAVIGATION_MOUNTED, EVENT_OVERFLOW, EVENT_PAGINATION_MOUNTED, EVENT_PAGINATION_UPDATED, EVENT_READY, EVENT_REFRESH, EVENT_RESIZE, EVENT_RESIZED, EVENT_SCROLL, EVENT_SCROLLED, EVENT_SHIFTED, EVENT_SLIDE_KEYDOWN, EVENT_UPDATED, EVENT_VISIBLE, EventBinder, EventInterface, FADE, LOOP, LTR, RTL, RequestInterval, SLIDE, STATUS_CLASSES, Splide, SplideRenderer, State, TTB, Throttle, Splide as default };\n","/*!\r\n * jQuery & Zepto Lazy - v1.7.10\r\n * http://jquery.eisbehr.de/lazy/\r\n *\r\n * Copyright 2012 - 2018, Daniel 'Eisbehr' Kern\r\n *\r\n * Dual licensed under the MIT and GPL-2.0 licenses:\r\n * http://www.opensource.org/licenses/mit-license.php\r\n * http://www.gnu.org/licenses/gpl-2.0.html\r\n *\r\n * $(\"img.lazy\").lazy();\r\n */\r\n\r\n;(function(window, undefined) {\r\n \"use strict\";\r\n\r\n // noinspection JSUnresolvedVariable\r\n /**\r\n * library instance - here and not in construct to be shorter in minimization\r\n * @return void\r\n */\r\n var $ = window.jQuery || window.Zepto,\r\n\r\n /**\r\n * unique plugin instance id counter\r\n * @type {number}\r\n */\r\n lazyInstanceId = 0,\r\n\r\n /**\r\n * helper to register window load for jQuery 3\r\n * @type {boolean}\r\n */ \r\n windowLoaded = false;\r\n\r\n /**\r\n * make lazy available to jquery - and make it a bit more case-insensitive :)\r\n * @access public\r\n * @type {function}\r\n * @param {object} settings\r\n * @return {LazyPlugin}\r\n */\r\n $.fn.Lazy = $.fn.lazy = function(settings) {\r\n return new LazyPlugin(this, settings);\r\n };\r\n\r\n /**\r\n * helper to add plugins to lazy prototype configuration\r\n * @access public\r\n * @type {function}\r\n * @param {string|Array} names\r\n * @param {string|Array|function} [elements]\r\n * @param {function} loader\r\n * @return void\r\n */\r\n $.Lazy = $.lazy = function(names, elements, loader) {\r\n // make second parameter optional\r\n if ($.isFunction(elements)) {\r\n loader = elements;\r\n elements = [];\r\n }\r\n\r\n // exit here if parameter is not a callable function\r\n if (!$.isFunction(loader)) {\r\n return;\r\n }\r\n\r\n // make parameters an array of names to be sure\r\n names = $.isArray(names) ? names : [names];\r\n elements = $.isArray(elements) ? elements : [elements];\r\n\r\n var config = LazyPlugin.prototype.config,\r\n forced = config._f || (config._f = {});\r\n\r\n // add the loader plugin for every name\r\n for (var i = 0, l = names.length; i < l; i++) {\r\n if (config[names[i]] === undefined || $.isFunction(config[names[i]])) {\r\n config[names[i]] = loader;\r\n }\r\n }\r\n\r\n // add forced elements loader\r\n for (var c = 0, a = elements.length; c < a; c++) {\r\n forced[elements[c]] = names[0];\r\n }\r\n };\r\n\r\n /**\r\n * contains all logic and the whole element handling\r\n * is packed in a private function outside class to reduce memory usage, because it will not be created on every plugin instance\r\n * @access private\r\n * @type {function}\r\n * @param {LazyPlugin} instance\r\n * @param {object} config\r\n * @param {object|Array} items\r\n * @param {object} events\r\n * @param {string} namespace\r\n * @return void\r\n */\r\n function _executeLazy(instance, config, items, events, namespace) {\r\n /**\r\n * a helper to trigger the 'onFinishedAll' callback after all other events\r\n * @access private\r\n * @type {number}\r\n */\r\n var _awaitingAfterLoad = 0,\r\n\r\n /**\r\n * visible content width\r\n * @access private\r\n * @type {number}\r\n */\r\n _actualWidth = -1,\r\n\r\n /**\r\n * visible content height\r\n * @access private\r\n * @type {number}\r\n */\r\n _actualHeight = -1,\r\n\r\n /**\r\n * determine possibly detected high pixel density\r\n * @access private\r\n * @type {boolean}\r\n */\r\n _isRetinaDisplay = false, \r\n\r\n /**\r\n * dictionary entry for better minimization\r\n * @access private\r\n * @type {string}\r\n */\r\n _afterLoad = 'afterLoad',\r\n\r\n /**\r\n * dictionary entry for better minimization\r\n * @access private\r\n * @type {string}\r\n */\r\n _load = 'load',\r\n\r\n /**\r\n * dictionary entry for better minimization\r\n * @access private\r\n * @type {string}\r\n */\r\n _error = 'error',\r\n\r\n /**\r\n * dictionary entry for better minimization\r\n * @access private\r\n * @type {string}\r\n */\r\n _img = 'img',\r\n\r\n /**\r\n * dictionary entry for better minimization\r\n * @access private\r\n * @type {string}\r\n */\r\n _src = 'src',\r\n\r\n /**\r\n * dictionary entry for better minimization\r\n * @access private\r\n * @type {string}\r\n */\r\n _srcset = 'srcset',\r\n\r\n /**\r\n * dictionary entry for better minimization\r\n * @access private\r\n * @type {string}\r\n */\r\n _sizes = 'sizes',\r\n\r\n /**\r\n * dictionary entry for better minimization\r\n * @access private\r\n * @type {string}\r\n */\r\n _backgroundImage = 'background-image';\r\n\r\n /**\r\n * initialize plugin\r\n * bind loading to events or set delay time to load all items at once\r\n * @access private\r\n * @return void\r\n */\r\n function _initialize() {\r\n // detect actual device pixel ratio\r\n // noinspection JSUnresolvedVariable\r\n _isRetinaDisplay = window.devicePixelRatio > 1;\r\n\r\n // prepare all initial items\r\n items = _prepareItems(items);\r\n\r\n // if delay time is set load all items at once after delay time\r\n if (config.delay >= 0) {\r\n setTimeout(function() {\r\n _lazyLoadItems(true);\r\n }, config.delay);\r\n }\r\n\r\n // if no delay is set or combine usage is active bind events\r\n if (config.delay < 0 || config.combined) {\r\n // create unique event function\r\n events.e = _throttle(config.throttle, function(event) {\r\n // reset detected window size on resize event\r\n if (event.type === 'resize') {\r\n _actualWidth = _actualHeight = -1;\r\n }\r\n\r\n // execute 'lazy magic'\r\n _lazyLoadItems(event.all);\r\n });\r\n\r\n // create function to add new items to instance\r\n events.a = function(additionalItems) {\r\n additionalItems = _prepareItems(additionalItems);\r\n items.push.apply(items, additionalItems);\r\n };\r\n\r\n // create function to get all instance items left\r\n events.g = function() {\r\n // filter loaded items before return in case internal filter was not running until now\r\n return (items = $(items).filter(function() {\r\n return !$(this).data(config.loadedName);\r\n }));\r\n };\r\n\r\n // create function to force loading elements\r\n events.f = function(forcedItems) {\r\n for (var i = 0; i < forcedItems.length; i++) {\r\n // only handle item if available in current instance\r\n // use a compare function, because Zepto can't handle object parameter for filter\r\n // var item = items.filter(forcedItems[i]);\r\n /* jshint loopfunc: true */\r\n var item = items.filter(function() {\r\n return this === forcedItems[i];\r\n });\r\n\r\n if (item.length) {\r\n _lazyLoadItems(false, item); \r\n }\r\n }\r\n };\r\n\r\n // load initial items\r\n _lazyLoadItems();\r\n\r\n // bind lazy load functions to scroll and resize event\r\n // noinspection JSUnresolvedVariable\r\n $(config.appendScroll).on('scroll.' + namespace + ' resize.' + namespace, events.e);\r\n }\r\n }\r\n\r\n /**\r\n * prepare items before handle them\r\n * @access private\r\n * @param {Array|object|jQuery} items\r\n * @return {Array|object|jQuery}\r\n */\r\n function _prepareItems(items) {\r\n // fetch used configurations before loops\r\n var defaultImage = config.defaultImage,\r\n placeholder = config.placeholder,\r\n imageBase = config.imageBase,\r\n srcsetAttribute = config.srcsetAttribute,\r\n loaderAttribute = config.loaderAttribute,\r\n forcedTags = config._f || {};\r\n\r\n // filter items and only add those who not handled yet and got needed attributes available\r\n items = $(items).filter(function() {\r\n var element = $(this),\r\n tag = _getElementTagName(this);\r\n\r\n return !element.data(config.handledName) && \r\n (element.attr(config.attribute) || element.attr(srcsetAttribute) || element.attr(loaderAttribute) || forcedTags[tag] !== undefined);\r\n })\r\n\r\n // append plugin instance to all elements\r\n .data('plugin_' + config.name, instance);\r\n\r\n for (var i = 0, l = items.length; i < l; i++) {\r\n var element = $(items[i]),\r\n tag = _getElementTagName(items[i]),\r\n elementImageBase = element.attr(config.imageBaseAttribute) || imageBase;\r\n\r\n // generate and update source set if an image base is set\r\n if (tag === _img && elementImageBase && element.attr(srcsetAttribute)) {\r\n element.attr(srcsetAttribute, _getCorrectedSrcSet(element.attr(srcsetAttribute), elementImageBase));\r\n }\r\n\r\n // add loader to forced element types\r\n if (forcedTags[tag] !== undefined && !element.attr(loaderAttribute)) {\r\n element.attr(loaderAttribute, forcedTags[tag]);\r\n }\r\n\r\n // set default image on every element without source\r\n if (tag === _img && defaultImage && !element.attr(_src)) {\r\n element.attr(_src, defaultImage);\r\n }\r\n\r\n // set placeholder on every element without background image\r\n else if (tag !== _img && placeholder && (!element.css(_backgroundImage) || element.css(_backgroundImage) === 'none')) {\r\n element.css(_backgroundImage, \"url('\" + placeholder + \"')\");\r\n }\r\n }\r\n\r\n return items;\r\n }\r\n\r\n /**\r\n * the 'lazy magic' - check all items\r\n * @access private\r\n * @param {boolean} [allItems]\r\n * @param {object} [forced]\r\n * @return void\r\n */\r\n function _lazyLoadItems(allItems, forced) {\r\n // skip if no items where left\r\n if (!items.length) {\r\n // destroy instance if option is enabled\r\n if (config.autoDestroy) {\r\n // noinspection JSUnresolvedFunction\r\n instance.destroy();\r\n }\r\n\r\n return;\r\n }\r\n\r\n var elements = forced || items,\r\n loadTriggered = false,\r\n imageBase = config.imageBase || '',\r\n srcsetAttribute = config.srcsetAttribute,\r\n handledName = config.handledName;\r\n\r\n // loop all available items\r\n for (var i = 0; i < elements.length; i++) {\r\n // item is at least in loadable area\r\n if (allItems || forced || _isInLoadableArea(elements[i])) {\r\n var element = $(elements[i]),\r\n tag = _getElementTagName(elements[i]),\r\n attribute = element.attr(config.attribute),\r\n elementImageBase = element.attr(config.imageBaseAttribute) || imageBase,\r\n customLoader = element.attr(config.loaderAttribute);\r\n\r\n // is not already handled \r\n if (!element.data(handledName) &&\r\n // and is visible or visibility doesn't matter\r\n (!config.visibleOnly || element.is(':visible')) && (\r\n // and image source or source set attribute is available\r\n (attribute || element.attr(srcsetAttribute)) && (\r\n // and is image tag where attribute is not equal source or source set\r\n (tag === _img && (elementImageBase + attribute !== element.attr(_src) || element.attr(srcsetAttribute) !== element.attr(_srcset))) ||\r\n // or is non image tag where attribute is not equal background\r\n (tag !== _img && elementImageBase + attribute !== element.css(_backgroundImage))\r\n ) ||\r\n // or custom loader is available\r\n customLoader))\r\n {\r\n // mark element always as handled as this point to prevent double handling\r\n loadTriggered = true;\r\n element.data(handledName, true);\r\n\r\n // load item\r\n _handleItem(element, tag, elementImageBase, customLoader);\r\n }\r\n }\r\n }\r\n\r\n // when something was loaded remove them from remaining items\r\n if (loadTriggered) {\r\n items = $(items).filter(function() {\r\n return !$(this).data(handledName);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * load the given element the lazy way\r\n * @access private\r\n * @param {object} element\r\n * @param {string} tag\r\n * @param {string} imageBase\r\n * @param {function} [customLoader]\r\n * @return void\r\n */\r\n function _handleItem(element, tag, imageBase, customLoader) {\r\n // increment count of items waiting for after load\r\n ++_awaitingAfterLoad;\r\n\r\n // extended error callback for correct 'onFinishedAll' handling\r\n var errorCallback = function() {\r\n _triggerCallback('onError', element);\r\n _reduceAwaiting();\r\n\r\n // prevent further callback calls\r\n errorCallback = $.noop;\r\n };\r\n\r\n // trigger function before loading image\r\n _triggerCallback('beforeLoad', element);\r\n\r\n // fetch all double used data here for better code minimization\r\n var srcAttribute = config.attribute,\r\n srcsetAttribute = config.srcsetAttribute,\r\n sizesAttribute = config.sizesAttribute,\r\n retinaAttribute = config.retinaAttribute,\r\n removeAttribute = config.removeAttribute,\r\n loadedName = config.loadedName,\r\n elementRetina = element.attr(retinaAttribute);\r\n\r\n // handle custom loader\r\n if (customLoader) {\r\n // on load callback\r\n var loadCallback = function() {\r\n // remove attribute from element\r\n if (removeAttribute) {\r\n element.removeAttr(config.loaderAttribute);\r\n }\r\n\r\n // mark element as loaded\r\n element.data(loadedName, true);\r\n\r\n // call after load event\r\n _triggerCallback(_afterLoad, element);\r\n\r\n // remove item from waiting queue and possibly trigger finished event\r\n // it's needed to be asynchronous to run after filter was in _lazyLoadItems\r\n setTimeout(_reduceAwaiting, 1);\r\n\r\n // prevent further callback calls\r\n loadCallback = $.noop;\r\n };\r\n\r\n // bind error event to trigger callback and reduce waiting amount\r\n element.off(_error).one(_error, errorCallback)\r\n\r\n // bind after load callback to element\r\n .one(_load, loadCallback);\r\n\r\n // trigger custom loader and handle response\r\n if (!_triggerCallback(customLoader, element, function(response) {\r\n if(response) {\r\n element.off(_load);\r\n loadCallback();\r\n }\r\n else {\r\n element.off(_error);\r\n errorCallback();\r\n }\r\n })) {\r\n element.trigger(_error);\r\n }\r\n }\r\n\r\n // handle images\r\n else {\r\n // create image object\r\n var imageObj = $(new Image());\r\n\r\n // bind error event to trigger callback and reduce waiting amount\r\n imageObj.one(_error, errorCallback)\r\n\r\n // bind after load callback to image\r\n .one(_load, function() {\r\n // remove element from view\r\n element.hide();\r\n\r\n // set image back to element\r\n // do it as single 'attr' calls, to be sure 'src' is set after 'srcset'\r\n if (tag === _img) {\r\n element.attr(_sizes, imageObj.attr(_sizes))\r\n .attr(_srcset, imageObj.attr(_srcset))\r\n .attr(_src, imageObj.attr(_src));\r\n }\r\n else {\r\n element.css(_backgroundImage, \"url('\" + imageObj.attr(_src) + \"')\");\r\n }\r\n\r\n // bring it back with some effect!\r\n element[config.effect](config.effectTime);\r\n\r\n // remove attribute from element\r\n if (removeAttribute) {\r\n element.removeAttr(srcAttribute + ' ' + srcsetAttribute + ' ' + retinaAttribute + ' ' + config.imageBaseAttribute);\r\n\r\n // only remove 'sizes' attribute, if it was a custom one\r\n if (sizesAttribute !== _sizes) {\r\n element.removeAttr(sizesAttribute);\r\n }\r\n }\r\n\r\n // mark element as loaded\r\n element.data(loadedName, true);\r\n\r\n // call after load event\r\n _triggerCallback(_afterLoad, element);\r\n\r\n // cleanup image object\r\n imageObj.remove();\r\n\r\n // remove item from waiting queue and possibly trigger finished event\r\n _reduceAwaiting();\r\n });\r\n\r\n // set sources\r\n // do it as single 'attr' calls, to be sure 'src' is set after 'srcset'\r\n var imageSrc = (_isRetinaDisplay && elementRetina ? elementRetina : element.attr(srcAttribute)) || '';\r\n imageObj.attr(_sizes, element.attr(sizesAttribute))\r\n .attr(_srcset, element.attr(srcsetAttribute))\r\n .attr(_src, imageSrc ? imageBase + imageSrc : null);\r\n\r\n // call after load even on cached image\r\n imageObj.complete && imageObj.trigger(_load); // jshint ignore : line\r\n }\r\n }\r\n\r\n /**\r\n * check if the given element is inside the current viewport or threshold\r\n * @access private\r\n * @param {object} element\r\n * @return {boolean}\r\n */\r\n function _isInLoadableArea(element) {\r\n var elementBound = element.getBoundingClientRect(),\r\n direction = config.scrollDirection,\r\n threshold = config.threshold,\r\n vertical = // check if element is in loadable area from top\r\n ((_getActualHeight() + threshold) > elementBound.top) &&\r\n // check if element is even in loadable are from bottom\r\n (-threshold < elementBound.bottom),\r\n horizontal = // check if element is in loadable area from left\r\n ((_getActualWidth() + threshold) > elementBound.left) &&\r\n // check if element is even in loadable area from right\r\n (-threshold < elementBound.right);\r\n\r\n if (direction === 'vertical') {\r\n return vertical;\r\n }\r\n else if (direction === 'horizontal') {\r\n return horizontal;\r\n }\r\n\r\n return vertical && horizontal;\r\n }\r\n\r\n /**\r\n * receive the current viewed width of the browser\r\n * @access private\r\n * @return {number}\r\n */\r\n function _getActualWidth() {\r\n return _actualWidth >= 0 ? _actualWidth : (_actualWidth = $(window).width());\r\n }\r\n\r\n /**\r\n * receive the current viewed height of the browser\r\n * @access private\r\n * @return {number}\r\n */\r\n function _getActualHeight() {\r\n return _actualHeight >= 0 ? _actualHeight : (_actualHeight = $(window).height());\r\n }\r\n\r\n /**\r\n * get lowercase tag name of an element\r\n * @access private\r\n * @param {object} element\r\n * @returns {string}\r\n */\r\n function _getElementTagName(element) {\r\n return element.tagName.toLowerCase();\r\n }\r\n\r\n /**\r\n * prepend image base to all srcset entries\r\n * @access private\r\n * @param {string} srcset\r\n * @param {string} imageBase\r\n * @returns {string}\r\n */\r\n function _getCorrectedSrcSet(srcset, imageBase) {\r\n if (imageBase) {\r\n // trim, remove unnecessary spaces and split entries\r\n var entries = srcset.split(',');\r\n srcset = '';\r\n\r\n for (var i = 0, l = entries.length; i < l; i++) {\r\n srcset += imageBase + entries[i].trim() + (i !== l - 1 ? ',' : '');\r\n }\r\n }\r\n\r\n return srcset;\r\n }\r\n\r\n /**\r\n * helper function to throttle down event triggering\r\n * @access private\r\n * @param {number} delay\r\n * @param {function} callback\r\n * @return {function}\r\n */\r\n function _throttle(delay, callback) {\r\n var timeout,\r\n lastExecute = 0;\r\n\r\n return function(event, ignoreThrottle) {\r\n var elapsed = +new Date() - lastExecute;\r\n\r\n function run() {\r\n lastExecute = +new Date();\r\n // noinspection JSUnresolvedFunction\r\n callback.call(instance, event);\r\n }\r\n\r\n timeout && clearTimeout(timeout); // jshint ignore : line\r\n\r\n if (elapsed > delay || !config.enableThrottle || ignoreThrottle) {\r\n run();\r\n }\r\n else {\r\n timeout = setTimeout(run, delay - elapsed);\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * reduce count of awaiting elements to 'afterLoad' event and fire 'onFinishedAll' if reached zero\r\n * @access private\r\n * @return void\r\n */\r\n function _reduceAwaiting() {\r\n --_awaitingAfterLoad;\r\n\r\n // if no items were left trigger finished event\r\n if (!items.length && !_awaitingAfterLoad) {\r\n _triggerCallback('onFinishedAll');\r\n }\r\n }\r\n\r\n /**\r\n * single implementation to handle callbacks, pass element and set 'this' to current instance\r\n * @access private\r\n * @param {string|function} callback\r\n * @param {object} [element]\r\n * @param {*} [args]\r\n * @return {boolean}\r\n */\r\n function _triggerCallback(callback, element, args) {\r\n if ((callback = config[callback])) {\r\n // jQuery's internal '$(arguments).slice(1)' are causing problems at least on old iPads\r\n // below is shorthand of 'Array.prototype.slice.call(arguments, 1)'\r\n callback.apply(instance, [].slice.call(arguments, 1));\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n // if event driven or window is already loaded don't wait for page loading\r\n if (config.bind === 'event' || windowLoaded) {\r\n _initialize();\r\n }\r\n\r\n // otherwise load initial items and start lazy after page load\r\n else {\r\n // noinspection JSUnresolvedVariable\r\n $(window).on(_load + '.' + namespace, _initialize);\r\n } \r\n }\r\n\r\n /**\r\n * lazy plugin class constructor\r\n * @constructor\r\n * @access private\r\n * @param {object} elements\r\n * @param {object} settings\r\n * @return {object|LazyPlugin}\r\n */\r\n function LazyPlugin(elements, settings) {\r\n /**\r\n * this lazy plugin instance\r\n * @access private\r\n * @type {object|LazyPlugin|LazyPlugin.prototype}\r\n */\r\n var _instance = this,\r\n\r\n /**\r\n * this lazy plugin instance configuration\r\n * @access private\r\n * @type {object}\r\n */\r\n _config = $.extend({}, _instance.config, settings),\r\n\r\n /**\r\n * instance generated event executed on container scroll or resize\r\n * packed in an object to be referenceable and short named because properties will not be minified\r\n * @access private\r\n * @type {object}\r\n */\r\n _events = {},\r\n\r\n /**\r\n * unique namespace for instance related events\r\n * @access private\r\n * @type {string}\r\n */\r\n _namespace = _config.name + '-' + (++lazyInstanceId);\r\n\r\n // noinspection JSUndefinedPropertyAssignment\r\n /**\r\n * wrapper to get or set an entry from plugin instance configuration\r\n * much smaller on minify as direct access\r\n * @access public\r\n * @type {function}\r\n * @param {string} entryName\r\n * @param {*} [value]\r\n * @return {LazyPlugin|*}\r\n */\r\n _instance.config = function(entryName, value) {\r\n if (value === undefined) {\r\n return _config[entryName];\r\n }\r\n\r\n _config[entryName] = value;\r\n return _instance;\r\n };\r\n\r\n // noinspection JSUndefinedPropertyAssignment\r\n /**\r\n * add additional items to current instance\r\n * @access public\r\n * @param {Array|object|string} items\r\n * @return {LazyPlugin}\r\n */\r\n _instance.addItems = function(items) {\r\n _events.a && _events.a($.type(items) === 'string' ? $(items) : items); // jshint ignore : line\r\n return _instance;\r\n };\r\n\r\n // noinspection JSUndefinedPropertyAssignment\r\n /**\r\n * get all left items of this instance\r\n * @access public\r\n * @returns {object}\r\n */\r\n _instance.getItems = function() {\r\n return _events.g ? _events.g() : {};\r\n };\r\n\r\n // noinspection JSUndefinedPropertyAssignment\r\n /**\r\n * force lazy to load all items in loadable area right now\r\n * by default without throttle\r\n * @access public\r\n * @type {function}\r\n * @param {boolean} [useThrottle]\r\n * @return {LazyPlugin}\r\n */\r\n _instance.update = function(useThrottle) {\r\n _events.e && _events.e({}, !useThrottle); // jshint ignore : line\r\n return _instance;\r\n };\r\n\r\n // noinspection JSUndefinedPropertyAssignment\r\n /**\r\n * force element(s) to load directly, ignoring the viewport\r\n * @access public\r\n * @param {Array|object|string} items\r\n * @return {LazyPlugin}\r\n */\r\n _instance.force = function(items) {\r\n _events.f && _events.f($.type(items) === 'string' ? $(items) : items); // jshint ignore : line\r\n return _instance;\r\n };\r\n\r\n // noinspection JSUndefinedPropertyAssignment\r\n /**\r\n * force lazy to load all available items right now\r\n * this call ignores throttling\r\n * @access public\r\n * @type {function}\r\n * @return {LazyPlugin}\r\n */\r\n _instance.loadAll = function() {\r\n _events.e && _events.e({all: true}, true); // jshint ignore : line\r\n return _instance;\r\n };\r\n\r\n // noinspection JSUndefinedPropertyAssignment\r\n /**\r\n * destroy this plugin instance\r\n * @access public\r\n * @type {function}\r\n * @return undefined\r\n */\r\n _instance.destroy = function() {\r\n // unbind instance generated events\r\n // noinspection JSUnresolvedFunction, JSUnresolvedVariable\r\n $(_config.appendScroll).off('.' + _namespace, _events.e);\r\n // noinspection JSUnresolvedVariable\r\n $(window).off('.' + _namespace);\r\n\r\n // clear events\r\n _events = {};\r\n\r\n return undefined;\r\n };\r\n\r\n // start using lazy and return all elements to be chainable or instance for further use\r\n // noinspection JSUnresolvedVariable\r\n _executeLazy(_instance, _config, elements, _events, _namespace);\r\n return _config.chainable ? elements : _instance;\r\n }\r\n\r\n /**\r\n * settings and configuration data\r\n * @access public\r\n * @type {object|*}\r\n */\r\n LazyPlugin.prototype.config = {\r\n // general\r\n name : 'lazy',\r\n chainable : true,\r\n autoDestroy : true,\r\n bind : 'load',\r\n threshold : 500,\r\n visibleOnly : false,\r\n appendScroll : window,\r\n scrollDirection : 'both',\r\n imageBase : null,\r\n defaultImage : 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==',\r\n placeholder : null,\r\n delay : -1,\r\n combined : false,\r\n\r\n // attributes\r\n attribute : 'data-src',\r\n srcsetAttribute : 'data-srcset',\r\n sizesAttribute : 'data-sizes',\r\n retinaAttribute : 'data-retina',\r\n loaderAttribute : 'data-loader',\r\n imageBaseAttribute : 'data-imagebase',\r\n removeAttribute : true,\r\n handledName : 'handled',\r\n loadedName : 'loaded',\r\n\r\n // effect\r\n effect : 'show',\r\n effectTime : 0,\r\n\r\n // throttle\r\n enableThrottle : true,\r\n throttle : 250,\r\n\r\n // callbacks\r\n beforeLoad : undefined,\r\n afterLoad : undefined,\r\n onError : undefined,\r\n onFinishedAll : undefined\r\n };\r\n\r\n // register window load event globally to prevent not loading elements\r\n // since jQuery 3.X ready state is fully async and may be executed after 'load' \r\n $(window).on('load', function() {\r\n windowLoaded = true;\r\n });\r\n})(window);","/* eslint-disable */\nif (!jQuery) {\n console.log('jquery.popupoverlay - jQuery not defined.');\n}\nrequire('./jquery.popupoverlay');","/*!\r\n * jQuery Popup Overlay\r\n *\r\n * @requires jQuery v1.7.1+\r\n * @link https://vast-engineering.github.com/jquery-popup-overlay/\r\n */\r\n;(function ($) { /* eslint-disable-line */\r\n\r\n var $window = $(window);\r\n var options = {};\r\n var zindexvalues = [];\r\n var lastclicked = [];\r\n var scrollbarwidth;\r\n var bodymarginright = null;\r\n var opensuffix = '_open';\r\n var closesuffix = '_close';\r\n var visiblePopupsArray = [];\r\n var transitionsupport = null;\r\n var opentimer;\r\n var iOS = /(iPad|iPhone|iPod)/.test(navigator.userAgent);\r\n var focusableElementsString = \"a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]\";\r\n\r\n var methods = {\r\n\r\n _init: function (el) {\r\n var $el = $(el);\r\n var options = $el.data('popupoptions');\r\n lastclicked[el.id] = false;\r\n zindexvalues[el.id] = 0;\r\n\r\n if (!$el.data('popup-initialized')) {\r\n $el.attr('data-popup-initialized', 'true');\r\n methods._initonce(el);\r\n }\r\n\r\n if (options.autoopen) {\r\n setTimeout(function() {\r\n methods.show(el, 0);\r\n }, 0);\r\n }\r\n },\r\n\r\n _initonce: function (el) {\r\n var $el = $(el);\r\n var $body = $('body');\r\n var $wrapper;\r\n var options = $el.data('popupoptions');\r\n\r\n bodymarginright = parseInt($body.css('margin-right'), 10);\r\n transitionsupport = document.body.style.webkitTransition !== undefined ||\r\n document.body.style.MozTransition !== undefined ||\r\n document.body.style.msTransition !== undefined ||\r\n document.body.style.OTransition !== undefined ||\r\n document.body.style.transition !== undefined;\r\n\r\n if (options.scrolllock) {\r\n // Calculate the browser's scrollbar width dynamically\r\n var parent;\r\n var child;\r\n if (typeof scrollbarwidth === 'undefined') {\r\n parent = $('
').appendTo('body');\r\n child = parent.children();\r\n scrollbarwidth = child.innerWidth() - child.height(99).innerWidth();\r\n parent.remove();\r\n }\r\n }\r\n\r\n if (!$el.attr('id')) {\r\n $el.attr('id', 'j-popup-' + parseInt((Math.random() * 100000000), 10));\r\n }\r\n\r\n $el.addClass('popup_content');\r\n\r\n if ((options.background) && (!$('#' + el.id + '_background').length)) {\r\n\r\n $body.append('
');\r\n\r\n var $background = $('#' + el.id + '_background');\r\n\r\n $background.css({\r\n opacity: 0,\r\n visibility: 'hidden',\r\n backgroundColor: options.color,\r\n position: 'fixed',\r\n top: 0,\r\n right: 0,\r\n bottom: 0,\r\n left: 0\r\n });\r\n\r\n if (options.setzindex && !options.autozindex) {\r\n $background.css('z-index', '100000');\r\n }\r\n\r\n if (options.transition) {\r\n $background.css('transition', options.transition);\r\n }\r\n }\r\n\r\n $body.append(el);\r\n\r\n $el.wrap('
');\r\n\r\n $wrapper = $('#' + el.id + '_wrapper');\r\n\r\n $wrapper.css({\r\n opacity: 0,\r\n visibility: 'hidden',\r\n position: 'absolute'\r\n });\r\n\r\n // Make div clickable in iOS\r\n if (iOS) {\r\n $background = $('#' + el.id + '_background');\r\n $background.css('cursor', 'pointer');\r\n $(options.pagecontainer).css('cursor', 'pointer');\r\n }\r\n\r\n if (options.type == 'overlay' && !options.absolute && options.background) {\r\n $wrapper.css('overflow','auto');\r\n $wrapper[0].style.WebkitOverflowScrolling = 'touch'; // for smooth scrolling in overflow:auto divs in iOS\r\n }\r\n\r\n $el.css({\r\n opacity: 0,\r\n visibility: 'hidden',\r\n 'pointer-events': 'auto', // reset pointer events back to default for a child element\r\n display: 'inline-block'\r\n });\r\n\r\n if (options.setzindex && !options.autozindex) {\r\n $wrapper.css('z-index', '100001');\r\n }\r\n\r\n if (!options.outline) {\r\n $el.css('outline', 'none');\r\n }\r\n\r\n if (options.transition) {\r\n $el.css('transition', options.transition);\r\n $wrapper.css('transition', options.transition);\r\n }\r\n\r\n // Hide popup content from screen readers initially\r\n $el.attr('aria-hidden', true);\r\n\r\n if (options.type == 'overlay') {\r\n $el.css({\r\n textAlign: 'left',\r\n position: 'relative',\r\n verticalAlign: 'middle'\r\n });\r\n\r\n $wrapper.css({\r\n position: 'fixed',\r\n width: '100%',\r\n height: '100%',\r\n top: 0,\r\n left: 0,\r\n textAlign: 'center'\r\n });\r\n\r\n // CSS vertical align helper\r\n $wrapper.append('
');\r\n\r\n $('.popup_align').css({\r\n display: 'inline-block',\r\n verticalAlign: 'middle',\r\n height: '100%'\r\n });\r\n }\r\n\r\n // Add WAI ARIA role to announce dialog to screen readers\r\n $el.attr('role', 'dialog');\r\n\r\n var openelement = (options.openelement) ? options.openelement : ('.' + el.id + opensuffix);\r\n\r\n $(openelement).each(function (i, item) {\r\n $(item).attr('data-popup-ordinal', i);\r\n\r\n if (!item.id) {\r\n $(item).attr('id', 'open_' + parseInt((Math.random() * 100000000), 10));\r\n }\r\n });\r\n\r\n // Set aria-labelledby (if aria-label or aria-labelledby is not set in html)\r\n if (!($el.attr('aria-labelledby') || $el.attr('aria-label'))) {\r\n $el.attr('aria-labelledby', $(openelement).attr('id'));\r\n }\r\n\r\n // Show and hide tooltips on hover\r\n if(options.action == 'hover'){\r\n options.keepfocus = false;\r\n\r\n // Handler: mouseenter, focusin\r\n $(openelement).on('mouseenter', function () {\r\n methods.show(el, $(this).data('popup-ordinal'));\r\n });\r\n\r\n // Handler: mouseleave, focusout\r\n $(openelement).on('mouseleave', function () {\r\n methods.hide(el);\r\n });\r\n\r\n } else {\r\n\r\n // Handler: Show popup when clicked on `open` element\r\n $(document).on('click.jqp', openelement, function (event) {\r\n event.preventDefault();\r\n\r\n var ord = $(this).data('popup-ordinal');\r\n setTimeout(function() { // setTimeout is to allow `close` method to finish (for issues with multiple tooltips)\r\n methods.show(el, ord);\r\n }, 0);\r\n });\r\n }\r\n\r\n if (options.closebutton) {\r\n methods.addclosebutton(el);\r\n }\r\n\r\n if (options.detach) {\r\n $el.detach();\r\n } else {\r\n $el.hide();\r\n }\r\n },\r\n\r\n /**\r\n * Show method\r\n *\r\n * @param {object} el - popup instance DOM node\r\n * @param {number} ordinal - order number of an `open` element\r\n */\r\n show: function (el, ordinal) {\r\n var $el = $(el);\r\n\r\n if ($el.data('popup-visible')) return;\r\n\r\n // Initialize if not initialized. Required for: $('#popup').popup('show')\r\n if (!$el.data('popup-initialized')) {\r\n methods._init(el);\r\n }\r\n $el.attr('data-popup-initialized', 'true');\r\n\r\n var $body = $('body');\r\n var options = $el.data('popupoptions');\r\n var $wrapper = $('#' + el.id + '_wrapper');\r\n var $background = $('#' + el.id + '_background');\r\n\r\n // `beforeopen` callback event\r\n callback(el, ordinal, options.beforeopen);\r\n\r\n // Remember last clicked place\r\n lastclicked[el.id] = ordinal;\r\n\r\n // Add popup id to visiblePopupsArray\r\n setTimeout(function() {\r\n visiblePopupsArray.push(el.id);\r\n }, 0);\r\n\r\n // Calculating maximum z-index\r\n if (options.autozindex) {\r\n\r\n var elements = document.getElementsByTagName('*');\r\n var len = elements.length;\r\n var maxzindex = 0;\r\n\r\n for(var i=0; i= 0) {\r\n $('#' + el.id + '_background').css({\r\n zIndex: (zindexvalues[el.id] + 1)\r\n });\r\n }\r\n }\r\n\r\n // Add z-index to the wrapper\r\n if (zindexvalues[el.id] >= 0) {\r\n $wrapper.css({\r\n zIndex: (zindexvalues[el.id] + 2)\r\n });\r\n }\r\n }\r\n\r\n if (options.detach) {\r\n $wrapper.prepend(el);\r\n $el.show();\r\n } else {\r\n $el.show();\r\n }\r\n\r\n opentimer = setTimeout(function() {\r\n $wrapper.css({\r\n visibility: 'visible',\r\n opacity: 1\r\n });\r\n\r\n $('html').addClass('popup_visible').addClass('popup_visible_' + el.id);\r\n $wrapper.addClass('popup_wrapper_visible');\r\n }, 20); // 20ms required for opening animation to occur in FF\r\n\r\n // Disable background layer scrolling when popup is opened\r\n if (options.scrolllock) {\r\n $body.css('overflow', 'hidden');\r\n if ($body.height() > $window.height()) {\r\n $body.css('margin-right', bodymarginright + scrollbarwidth);\r\n }\r\n }\r\n\r\n $el.css({\r\n 'visibility': 'visible',\r\n 'opacity': 1\r\n });\r\n\r\n // Show background\r\n if (options.background) {\r\n $background.css({\r\n 'visibility': 'visible',\r\n 'opacity': options.opacity\r\n });\r\n\r\n // Fix IE8 issue with background not appearing\r\n setTimeout(function() {\r\n $background.css({\r\n 'opacity': options.opacity\r\n });\r\n }, 0);\r\n }\r\n\r\n $el.data('popup-visible', true);\r\n\r\n // Position popup\r\n methods.reposition(el, ordinal);\r\n\r\n // Remember which element had focus before opening a popup\r\n $el.data('focusedelementbeforepopup', document.activeElement);\r\n\r\n // Make holder div programatically focusable with tabindex:-1 (tabindex:0 is keyboard focusable)\r\n $el.attr('tabindex', -1);\r\n\r\n // Focus the popup or user specified element.\r\n // Initial timeout of 50ms is set to give some time to popup to show after clicking on\r\n // `open` element, and after animation is complete to prevent background scrolling.\r\n setTimeout(function() {\r\n if (options.focuselement === 'closebutton') { // e.g. focuselement:'closebutton'\r\n $('#' + el.id + ' .' + el.id + closesuffix + ':first').focus();\r\n } else if (options.focuselement) { // e.g. focuselement:'#my-close-button'\r\n $(options.focuselement).focus();\r\n } else if (options.focuselement === true || options.keepfocus) { // e.g. focuselement:true OR keepfocus:true\r\n $el.focus();\r\n }\r\n }, options.focusdelay);\r\n\r\n // Hide main content from screen readers\r\n if (options.keepfocus) {\r\n $(options.pagecontainer).attr('aria-hidden', true);\r\n }\r\n\r\n // Reveal popup content to screen readers\r\n $el.attr('aria-hidden', false);\r\n\r\n callback(el, ordinal, options.onopen);\r\n\r\n if (transitionsupport) {\r\n $wrapper.one('transitionend', function() {\r\n callback(el, ordinal, options.opentransitionend);\r\n });\r\n } else {\r\n callback(el, ordinal, options.opentransitionend);\r\n }\r\n\r\n // Handler: Reposition tooltip when window is resized\r\n if (options.type == 'tooltip') {\r\n $(window).on('resize.' + el.id, function () {\r\n methods.reposition(el, ordinal);\r\n });\r\n }\r\n },\r\n\r\n /**\r\n * Hide method\r\n *\r\n * @param object el - popup instance DOM node\r\n * @param boolean outerClick - click on the outer content below popup\r\n */\r\n hide: function (el, outerClick) {\r\n // Get index of popup ID inside of visiblePopupsArray\r\n var popupIdIndex = $.inArray(el.id, visiblePopupsArray);\r\n\r\n // If popup is not opened, ignore the rest of the function\r\n if (popupIdIndex === -1) {\r\n return;\r\n }\r\n\r\n if(opentimer) clearTimeout(opentimer);\r\n\r\n var $body = $('body');\r\n var $el = $(el);\r\n var options = $el.data('popupoptions');\r\n var $wrapper = $('#' + el.id + '_wrapper');\r\n var $background = $('#' + el.id + '_background');\r\n\r\n $el.data('popup-visible', false);\r\n\r\n if (visiblePopupsArray.length === 1) {\r\n $('html').removeClass('popup_visible').removeClass('popup_visible_' + el.id);\r\n } else {\r\n if($('html').hasClass('popup_visible_' + el.id)) {\r\n $('html').removeClass('popup_visible_' + el.id);\r\n }\r\n }\r\n\r\n // Remove popup from the visiblePopupsArray\r\n visiblePopupsArray.splice(popupIdIndex, 1);\r\n\r\n if($wrapper.hasClass('popup_wrapper_visible')) {\r\n $wrapper.removeClass('popup_wrapper_visible');\r\n }\r\n\r\n // Focus back on saved element\r\n if (options.keepfocus && !outerClick) {\r\n setTimeout(function() {\r\n if ($($el.data('focusedelementbeforepopup')).is(':visible')) {\r\n $el.data('focusedelementbeforepopup').focus();\r\n }\r\n }, 0);\r\n }\r\n\r\n // Hide popup\r\n $wrapper.css({\r\n 'visibility': 'hidden',\r\n 'opacity': 0\r\n });\r\n $el.css({\r\n 'visibility': 'hidden',\r\n 'opacity': 0\r\n });\r\n\r\n // Hide background\r\n if (options.background) {\r\n $background.css({\r\n 'visibility': 'hidden',\r\n 'opacity': 0\r\n });\r\n }\r\n\r\n // Reveal main content to screen readers\r\n $(options.pagecontainer).attr('aria-hidden', false);\r\n\r\n // Hide popup content from screen readers\r\n $el.attr('aria-hidden', true);\r\n\r\n // `onclose` callback event\r\n callback(el, lastclicked[el.id], options.onclose);\r\n\r\n if (transitionsupport && $el.css('transition-duration') !== '0s') {\r\n $el.one('transitionend', function() {\r\n\r\n if (!($el.data('popup-visible'))) {\r\n if (options.detach) {\r\n $el.detach();\r\n } else {\r\n $el.hide();\r\n }\r\n }\r\n\r\n // Re-enable scrolling of background layer, if needed\r\n if (options.scrolllock) {\r\n setTimeout(function() {\r\n if ($.grep(visiblePopupsArray, function(eid) { return $(\"#\"+eid).data('popupoptions').scrolllock }).length) {\r\n // Some \"scolllock=true\" popup is currently visible, leave scrolling disabled\r\n return;\r\n }\r\n $body.css({\r\n overflow: 'visible',\r\n 'margin-right': bodymarginright\r\n });\r\n }, 10); // 10ms added for CSS transition in Firefox which doesn't like overflow:auto\r\n }\r\n\r\n callback(el, lastclicked[el.id], options.closetransitionend);\r\n });\r\n } else {\r\n if (options.detach) {\r\n $el.detach();\r\n } else {\r\n $el.hide();\r\n }\r\n\r\n // Re-enable scrolling of background layer, if needed\r\n if (options.scrolllock) {\r\n setTimeout(function() {\r\n if ($.grep(visiblePopupsArray, function(eid) { return $(\"#\"+eid).data('popupoptions').scrolllock }).length) {\r\n // Some \"scrolllock=true\" popup is currently visible, leave scrolling disabled\r\n return;\r\n }\r\n $body.css({\r\n overflow: 'visible',\r\n 'margin-right': bodymarginright\r\n });\r\n }, 10); // 10ms added for CSS transition in Firefox which doesn't like overflow:auto\r\n }\r\n\r\n callback(el, lastclicked[el.id], options.closetransitionend);\r\n }\r\n\r\n if (options.type == 'tooltip') {\r\n $(window).off('resize.' + el.id);\r\n }\r\n },\r\n\r\n /**\r\n * Toggle method\r\n *\r\n * @param {object} el - popup instance DOM node\r\n * @param {number} ordinal - order number of an `open` element\r\n */\r\n toggle: function (el, ordinal) {\r\n if ($(el).data('popup-visible')) {\r\n methods.hide(el);\r\n } else {\r\n setTimeout(function() {\r\n methods.show(el, ordinal);\r\n }, 0);\r\n }\r\n },\r\n\r\n /**\r\n * Reposition method\r\n *\r\n * @param {object} el - popup instance DOM node\r\n * @param {number} ordinal - order number of an `open` element\r\n */\r\n reposition: function (el, ordinal) {\r\n var $el = $(el);\r\n var options = $el.data('popupoptions');\r\n var $wrapper = $('#' + el.id + '_wrapper');\r\n\r\n ordinal = ordinal || 0;\r\n\r\n // Tooltip type\r\n if (options.type == 'tooltip') {\r\n // TODO: this static assignments should probably be moved to init method\r\n $wrapper.css({\r\n 'position': 'absolute'\r\n });\r\n\r\n var $tooltipanchor;\r\n if (options.tooltipanchor) {\r\n $tooltipanchor = $(options.tooltipanchor);\r\n } else if (options.openelement) {\r\n $tooltipanchor = $(options.openelement).filter('[data-popup-ordinal=\"' + ordinal + '\"]');\r\n } else {\r\n $tooltipanchor = $('.' + el.id + opensuffix + '[data-popup-ordinal=\"' + ordinal + '\"]');\r\n }\r\n\r\n var linkOffset = $tooltipanchor.offset() || { left: 0, top: 0 };\r\n\r\n // Horizontal position for tooltip\r\n if (options.horizontal == 'right') {\r\n $wrapper.css('left', linkOffset.left + $tooltipanchor.outerWidth() + options.offsetleft);\r\n } else if (options.horizontal == 'leftedge') {\r\n $wrapper.css('left', linkOffset.left + options.offsetleft);\r\n } else if (options.horizontal == 'left') {\r\n $wrapper.css('right', $window.width() - linkOffset.left - options.offsetleft);\r\n } else if (options.horizontal == 'rightedge') {\r\n $wrapper.css('right', $window.width() - linkOffset.left - $tooltipanchor.outerWidth() - options.offsetleft);\r\n } else {\r\n $wrapper.css('left', linkOffset.left + ($tooltipanchor.outerWidth() / 2) - ($el.outerWidth() / 2) - parseFloat($el.css('marginLeft')) + options.offsetleft);\r\n }\r\n\r\n // Vertical position for tooltip\r\n if (options.vertical == 'bottom') {\r\n $wrapper.css('top', linkOffset.top + $tooltipanchor.outerHeight() + options.offsettop);\r\n } else if (options.vertical == 'bottomedge') {\r\n $wrapper.css('top', linkOffset.top + $tooltipanchor.outerHeight() - $el.outerHeight() + options.offsettop);\r\n } else if (options.vertical == 'top') {\r\n $wrapper.css('bottom', $window.height() - linkOffset.top - options.offsettop);\r\n } else if (options.vertical == 'topedge') {\r\n $wrapper.css('bottom', $window.height() - linkOffset.top - $el.outerHeight() - options.offsettop);\r\n } else {\r\n $wrapper.css('top', linkOffset.top + ($tooltipanchor.outerHeight() / 2) - ($el.outerHeight() / 2) - parseFloat($el.css('marginTop')) + options.offsettop);\r\n }\r\n\r\n // Overlay type\r\n } else if (options.type == 'overlay') {\r\n // TODO all static assignments in this block should probably be moved to init method\r\n\r\n // Horizontal position for overlay\r\n if (options.horizontal) {\r\n $wrapper.css('text-align', options.horizontal);\r\n } else {\r\n $wrapper.css('text-align', 'center');\r\n }\r\n\r\n // Vertical position for overlay\r\n if (options.vertical) {\r\n $el.css('vertical-align', options.vertical);\r\n } else {\r\n $el.css('vertical-align', 'middle');\r\n }\r\n\r\n if (options.absolute) {\r\n $wrapper.css({\r\n position: 'absolute',\r\n top: window.scrollY\r\n });\r\n }\r\n\r\n if (!options.background) {\r\n $wrapper.css({ 'pointer-events': 'none' });\r\n\r\n // If popup doesnt fit the viewport, and if background doesn't exist, add scrollbar to popup div instead of wrapper\r\n if (!options.absolute && !isInViewport(el)) {\r\n $el.css('overflow', 'auto');\r\n $el[0].style.WebkitOverflowScrolling = 'touch'; // for smooth scrolling in overflow:auto divs in iOS\r\n $el.css('max-height', 'calc(100% - ' + $el.css('margin-top') + ' - ' + $el.css('margin-bottom') + ')');\r\n }\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Add-close-button method\r\n *\r\n * @param {object} el - popup instance DOM node\r\n */\r\n addclosebutton: function (el) {\r\n var genericCloseButton;\r\n\r\n if ($(el).data('popupoptions').closebuttonmarkup) {\r\n genericCloseButton = $(options.closebuttonmarkup).addClass(el.id + '_close');\r\n } else {\r\n genericCloseButton = '';\r\n }\r\n\r\n if ($(el).data('popup-initialized')){\r\n $(el).append(genericCloseButton);\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n /**\r\n * Callback event calls\r\n *\r\n * @param {object} el - popup instance DOM node\r\n * @param {number} ordinal - order number of an `open` element\r\n * @param {function} func - callback function\r\n */\r\n var callback = function (el, ordinal, func) {\r\n var options = $(el).data('popupoptions');\r\n var openelement;\r\n var elementclicked;\r\n if (typeof options === 'undefined') return;\r\n openelement = options.openelement ? options.openelement : ('.' + el.id + opensuffix);\r\n elementclicked = $(openelement + '[data-popup-ordinal=\"' + ordinal + '\"]');\r\n if (typeof func == 'function') {\r\n func.call($(el), el, elementclicked);\r\n }\r\n };\r\n\r\n /**\r\n * Check if element is fully in viewport\r\n *\r\n * @param {object} el - popup instance DOM node\r\n */\r\n var isInViewport = function (el) {\r\n var bounding = el.getBoundingClientRect();\r\n return (\r\n bounding.top >= 0 &&\r\n bounding.left >= 0 &&\r\n bounding.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\r\n bounding.right <= (window.innerWidth || document.documentElement.clientWidth)\r\n );\r\n };\r\n\r\n // Hide popup if ESC key is pressed\r\n $(document).on('keydown', function (event) {\r\n if(visiblePopupsArray.length) {\r\n var elementId = visiblePopupsArray[visiblePopupsArray.length - 1];\r\n var el = document.getElementById(elementId);\r\n\r\n if ($(el).data('popupoptions').escape && event.keyCode == 27) {\r\n methods.hide(el);\r\n }\r\n }\r\n });\r\n\r\n var mousedownTarget;\r\n\r\n $(document).on('mousedown', function (event) {\r\n mousedownTarget = event.target;\r\n });\r\n\r\n // Hide popup on click\r\n $(document).on('click', function (event) {\r\n if(visiblePopupsArray.length) {\r\n var elementId = visiblePopupsArray[visiblePopupsArray.length - 1];\r\n var el = document.getElementById(elementId);\r\n var closeButton = ($(el).data('popupoptions').closeelement) ? $(el).data('popupoptions').closeelement : ('.' + el.id + closesuffix);\r\n\r\n // If Close button clicked\r\n if ($(event.target).closest(closeButton).length) {\r\n event.preventDefault();\r\n methods.hide(el);\r\n }\r\n\r\n // If clicked outside of popup\r\n if ($(el).data('popupoptions')\r\n && $(el).data('popupoptions').blur\r\n && !$(event.target).closest($(el).data('popupoptions').blurignore).length\r\n && !$(event.target).closest('#' + elementId).length\r\n && !$(mousedownTarget).closest('#' + elementId).length\r\n && event.which !== 2\r\n && $(event.target).is(':visible')) {\r\n\r\n if ($(el).data('popupoptions').background) {\r\n // If clicked on popup cover\r\n methods.hide(el);\r\n\r\n // Older iOS/Safari will trigger a click on the elements below the cover,\r\n // when tapping on the cover, so the default action needs to be prevented.\r\n event.preventDefault();\r\n\r\n } else {\r\n // If clicked on outer content\r\n methods.hide(el, true);\r\n }\r\n }\r\n }\r\n });\r\n\r\n // Keep keyboard focus inside of popup\r\n $(document).on('keydown', function(event) {\r\n if(visiblePopupsArray.length && event.which == 9) {\r\n // If tab or shift-tab pressed\r\n var elementId = visiblePopupsArray[visiblePopupsArray.length - 1];\r\n var el = document.getElementById(elementId);\r\n var options = $(el).data('popupoptions');\r\n\r\n // If the last opened popup doesn't have `keepfocus` option, ignore the rest and don't lock the focus inside of popup.\r\n if (!options.keepfocus) {\r\n return;\r\n }\r\n\r\n // Get list of all children elements in given object\r\n var popupItems = $(el).find('*');\r\n\r\n // Get list of focusable items\r\n var focusableItems = popupItems.filter(focusableElementsString).filter(':visible');\r\n\r\n // Get currently focused item\r\n var focusedItem = $(':focus');\r\n\r\n // Get the number of focusable items\r\n var numberOfFocusableItems = focusableItems.length;\r\n\r\n // Get the index of the currently focused item\r\n var focusedItemIndex = focusableItems.index(focusedItem);\r\n\r\n // If popup doesn't contain focusable elements, focus popup itself\r\n if (numberOfFocusableItems === 0) {\r\n $(el).focus();\r\n event.preventDefault();\r\n } else {\r\n if (event.shiftKey) {\r\n // Back tab\r\n // If focused on first item and user preses back-tab, go to the last focusable item\r\n if (focusedItemIndex === 0) {\r\n focusableItems.get(numberOfFocusableItems - 1).focus();\r\n event.preventDefault();\r\n }\r\n\r\n } else {\r\n // Forward tab\r\n // If focused on the last item and user preses tab, go to the first focusable item\r\n if (focusedItemIndex == numberOfFocusableItems - 1) {\r\n focusableItems.get(0).focus();\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * Plugin API\r\n */\r\n $.fn.popup = function (customoptions) {\r\n return this.each(function () {\r\n\r\n var $el = $(this);\r\n var newDefaults = $.extend(true, {}, $.fn.popup.defaults);\r\n\r\n // Set defaults for tooltips dynamically instead of implicitly, so they can be overriden with custom options.\r\n if (customoptions && customoptions.type === 'tooltip') {\r\n newDefaults.background = false;\r\n }\r\n\r\n if (typeof customoptions === 'object') { // e.g. $('#popup').popup({'color':'blue'})\r\n var opt = $.extend({}, newDefaults, $el.data('popupoptions'), customoptions);\r\n $el.data('popupoptions', opt);\r\n options = $el.data('popupoptions');\r\n\r\n methods._init(this);\r\n\r\n } else if (typeof customoptions === 'string') { // e.g. $('#popup').popup('hide')\r\n if (!($el.data('popupoptions'))) {\r\n $el.data('popupoptions', newDefaults);\r\n options = $el.data('popupoptions');\r\n }\r\n\r\n methods[customoptions].call(this, this);\r\n\r\n } else { // e.g. $('#popup').popup()\r\n if (!($el.data('popupoptions'))) {\r\n $el.data('popupoptions', newDefaults);\r\n options = $el.data('popupoptions');\r\n }\r\n\r\n methods._init(this);\r\n\r\n }\r\n\r\n });\r\n };\r\n\r\n // destroy all popups\r\n $.fn.popup.destroyall = function () {\r\n // TODO: create tests to check if we can use `hide` method (perhaps we'll need to remove transitions)\r\n // or we need another way of removing the data when destroying.\r\n for(var i=0; i < visiblePopupsArray.length; i++) {\r\n $('#' + visiblePopupsArray[i]).popup('hide');\r\n }\r\n $('.popup_wrapper').remove();\r\n $('.popup_background').remove();\r\n // visiblePopupsArray = []; // TODO: check if we need this for SPA and popups with fadeOut animation and scrolllock\r\n $(document).off('click.jqp');\r\n };\r\n\r\n $.fn.popup.defaults = {\r\n type: 'overlay',\r\n absolute: false,\r\n autoopen: false,\r\n background: true,\r\n color: 'black',\r\n opacity: '0.5',\r\n horizontal: 'center',\r\n vertical: 'middle',\r\n offsettop: 0,\r\n offsetleft: 0,\r\n escape: true,\r\n blur: true,\r\n blurignore: null,\r\n setzindex: true,\r\n autozindex: false,\r\n scrolllock: false,\r\n closebutton: false,\r\n closebuttonmarkup: null,\r\n keepfocus: true,\r\n focuselement: null,\r\n focusdelay: 50,\r\n outline: false,\r\n pagecontainer: null,\r\n detach: false,\r\n openelement: null,\r\n closeelement: null,\r\n transition: null,\r\n tooltipanchor: null,\r\n beforeopen: null,\r\n onclose: null,\r\n onopen: null,\r\n opentransitionend: null,\r\n closetransitionend: null\r\n };\r\n\r\n})(jQuery); /* eslint-disable-line */\r\n","/*!\n * jQuery UI Focusable 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: :focusable Selector\n//>>group: Core\n//>>description: Selects elements which can be focused.\n//>>docs: http://api.jqueryui.com/focusable-selector/\n\n( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\n// Selectors\n$.ui.focusable = function( element, hasTabindex ) {\n\tvar map, mapName, img, focusableIfVisible, fieldset,\n\t\tnodeName = element.nodeName.toLowerCase();\n\n\tif ( \"area\" === nodeName ) {\n\t\tmap = element.parentNode;\n\t\tmapName = map.name;\n\t\tif ( !element.href || !mapName || map.nodeName.toLowerCase() !== \"map\" ) {\n\t\t\treturn false;\n\t\t}\n\t\timg = $( \"img[usemap='#\" + mapName + \"']\" );\n\t\treturn img.length > 0 && img.is( \":visible\" );\n\t}\n\n\tif ( /^(input|select|textarea|button|object)$/.test( nodeName ) ) {\n\t\tfocusableIfVisible = !element.disabled;\n\n\t\tif ( focusableIfVisible ) {\n\n\t\t\t// Form controls within a disabled fieldset are disabled.\n\t\t\t// However, controls within the fieldset's legend do not get disabled.\n\t\t\t// Since controls generally aren't placed inside legends, we skip\n\t\t\t// this portion of the check.\n\t\t\tfieldset = $( element ).closest( \"fieldset\" )[ 0 ];\n\t\t\tif ( fieldset ) {\n\t\t\t\tfocusableIfVisible = !fieldset.disabled;\n\t\t\t}\n\t\t}\n\t} else if ( \"a\" === nodeName ) {\n\t\tfocusableIfVisible = element.href || hasTabindex;\n\t} else {\n\t\tfocusableIfVisible = hasTabindex;\n\t}\n\n\treturn focusableIfVisible && $( element ).is( \":visible\" ) && visible( $( element ) );\n};\n\n// Support: IE 8 only\n// IE 8 doesn't resolve inherit to visible/hidden for computed values\nfunction visible( element ) {\n\tvar visibility = element.css( \"visibility\" );\n\twhile ( visibility === \"inherit\" ) {\n\t\telement = element.parent();\n\t\tvisibility = element.css( \"visibility\" );\n\t}\n\treturn visibility === \"visible\";\n}\n\n$.extend( $.expr.pseudos, {\n\tfocusable: function( element ) {\n\t\treturn $.ui.focusable( element, $.attr( element, \"tabindex\" ) != null );\n\t}\n} );\n\nreturn $.ui.focusable;\n\n} );\n","/*!\n * jQuery UI Scroll Parent 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: scrollParent\n//>>group: Core\n//>>description: Get the closest ancestor element that is scrollable.\n//>>docs: http://api.jqueryui.com/scrollParent/\n\n( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\nreturn $.fn.scrollParent = function( includeHidden ) {\n\tvar position = this.css( \"position\" ),\n\t\texcludeStaticParent = position === \"absolute\",\n\t\toverflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,\n\t\tscrollParent = this.parents().filter( function() {\n\t\t\tvar parent = $( this );\n\t\t\tif ( excludeStaticParent && parent.css( \"position\" ) === \"static\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn overflowRegex.test( parent.css( \"overflow\" ) + parent.css( \"overflow-y\" ) +\n\t\t\t\tparent.css( \"overflow-x\" ) );\n\t\t} ).eq( 0 );\n\n\treturn position === \"fixed\" || !scrollParent.length ?\n\t\t$( this[ 0 ].ownerDocument || document ) :\n\t\tscrollParent;\n};\n\n} );\n","/*!\n * jQuery UI Tabbable 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: :tabbable Selector\n//>>group: Core\n//>>description: Selects elements which can be tabbed to.\n//>>docs: http://api.jqueryui.com/tabbable-selector/\n\n( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\", \"./focusable\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\nreturn $.extend( $.expr.pseudos, {\n\ttabbable: function( element ) {\n\t\tvar tabIndex = $.attr( element, \"tabindex\" ),\n\t\t\thasTabindex = tabIndex != null;\n\t\treturn ( !hasTabindex || tabIndex >= 0 ) && $.ui.focusable( element, hasTabindex );\n\t}\n} );\n\n} );\n","/*!\n * jQuery UI Unique ID 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: uniqueId\n//>>group: Core\n//>>description: Functions to generate and remove uniqueId's\n//>>docs: http://api.jqueryui.com/uniqueId/\n\n( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\nreturn $.fn.extend( {\n\tuniqueId: ( function() {\n\t\tvar uuid = 0;\n\n\t\treturn function() {\n\t\t\treturn this.each( function() {\n\t\t\t\tif ( !this.id ) {\n\t\t\t\t\tthis.id = \"ui-id-\" + ( ++uuid );\n\t\t\t\t}\n\t\t\t} );\n\t\t};\n\t} )(),\n\n\tremoveUniqueId: function() {\n\t\treturn this.each( function() {\n\t\t\tif ( /^ui-id-\\d+$/.test( this.id ) ) {\n\t\t\t\t$( this ).removeAttr( \"id\" );\n\t\t\t}\n\t\t} );\n\t}\n} );\n\n} );\n","( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\n$.ui = $.ui || {};\n\nreturn $.ui.version = \"1.13.2\";\n\n} );\n","/*!\nWaypoints - 4.0.1\nCopyright © 2011-2016 Caleb Troughton\nLicensed under the MIT license.\nhttps://github.com/imakewebthings/waypoints/blob/master/licenses.txt\n*/\n(function() {\n 'use strict'\n\n var keyCounter = 0\n var allWaypoints = {}\n\n /* http://imakewebthings.com/waypoints/api/waypoint */\n function Waypoint(options) {\n if (!options) {\n throw new Error('No options passed to Waypoint constructor')\n }\n if (!options.element) {\n throw new Error('No element option passed to Waypoint constructor')\n }\n if (!options.handler) {\n throw new Error('No handler option passed to Waypoint constructor')\n }\n\n this.key = 'waypoint-' + keyCounter\n this.options = Waypoint.Adapter.extend({}, Waypoint.defaults, options)\n this.element = this.options.element\n this.adapter = new Waypoint.Adapter(this.element)\n this.callback = options.handler\n this.axis = this.options.horizontal ? 'horizontal' : 'vertical'\n this.enabled = this.options.enabled\n this.triggerPoint = null\n this.group = Waypoint.Group.findOrCreate({\n name: this.options.group,\n axis: this.axis\n })\n this.context = Waypoint.Context.findOrCreateByElement(this.options.context)\n\n if (Waypoint.offsetAliases[this.options.offset]) {\n this.options.offset = Waypoint.offsetAliases[this.options.offset]\n }\n this.group.add(this)\n this.context.add(this)\n allWaypoints[this.key] = this\n keyCounter += 1\n }\n\n /* Private */\n Waypoint.prototype.queueTrigger = function(direction) {\n this.group.queueTrigger(this, direction)\n }\n\n /* Private */\n Waypoint.prototype.trigger = function(args) {\n if (!this.enabled) {\n return\n }\n if (this.callback) {\n this.callback.apply(this, args)\n }\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/destroy */\n Waypoint.prototype.destroy = function() {\n this.context.remove(this)\n this.group.remove(this)\n delete allWaypoints[this.key]\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/disable */\n Waypoint.prototype.disable = function() {\n this.enabled = false\n return this\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/enable */\n Waypoint.prototype.enable = function() {\n this.context.refresh()\n this.enabled = true\n return this\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/next */\n Waypoint.prototype.next = function() {\n return this.group.next(this)\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/previous */\n Waypoint.prototype.previous = function() {\n return this.group.previous(this)\n }\n\n /* Private */\n Waypoint.invokeAll = function(method) {\n var allWaypointsArray = []\n for (var waypointKey in allWaypoints) {\n allWaypointsArray.push(allWaypoints[waypointKey])\n }\n for (var i = 0, end = allWaypointsArray.length; i < end; i++) {\n allWaypointsArray[i][method]()\n }\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/destroy-all */\n Waypoint.destroyAll = function() {\n Waypoint.invokeAll('destroy')\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/disable-all */\n Waypoint.disableAll = function() {\n Waypoint.invokeAll('disable')\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/enable-all */\n Waypoint.enableAll = function() {\n Waypoint.Context.refreshAll()\n for (var waypointKey in allWaypoints) {\n allWaypoints[waypointKey].enabled = true\n }\n return this\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/refresh-all */\n Waypoint.refreshAll = function() {\n Waypoint.Context.refreshAll()\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/viewport-height */\n Waypoint.viewportHeight = function() {\n return window.innerHeight || document.documentElement.clientHeight\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/viewport-width */\n Waypoint.viewportWidth = function() {\n return document.documentElement.clientWidth\n }\n\n Waypoint.adapters = []\n\n Waypoint.defaults = {\n context: window,\n continuous: true,\n enabled: true,\n group: 'default',\n horizontal: false,\n offset: 0\n }\n\n Waypoint.offsetAliases = {\n 'bottom-in-view': function() {\n return this.context.innerHeight() - this.adapter.outerHeight()\n },\n 'right-in-view': function() {\n return this.context.innerWidth() - this.adapter.outerWidth()\n }\n }\n\n window.Waypoint = Waypoint\n}())\n;(function() {\n 'use strict'\n\n function requestAnimationFrameShim(callback) {\n window.setTimeout(callback, 1000 / 60)\n }\n\n var keyCounter = 0\n var contexts = {}\n var Waypoint = window.Waypoint\n var oldWindowLoad = window.onload\n\n /* http://imakewebthings.com/waypoints/api/context */\n function Context(element) {\n this.element = element\n this.Adapter = Waypoint.Adapter\n this.adapter = new this.Adapter(element)\n this.key = 'waypoint-context-' + keyCounter\n this.didScroll = false\n this.didResize = false\n this.oldScroll = {\n x: this.adapter.scrollLeft(),\n y: this.adapter.scrollTop()\n }\n this.waypoints = {\n vertical: {},\n horizontal: {}\n }\n\n element.waypointContextKey = this.key\n contexts[element.waypointContextKey] = this\n keyCounter += 1\n if (!Waypoint.windowContext) {\n Waypoint.windowContext = true\n Waypoint.windowContext = new Context(window)\n }\n\n this.createThrottledScrollHandler()\n this.createThrottledResizeHandler()\n }\n\n /* Private */\n Context.prototype.add = function(waypoint) {\n var axis = waypoint.options.horizontal ? 'horizontal' : 'vertical'\n this.waypoints[axis][waypoint.key] = waypoint\n this.refresh()\n }\n\n /* Private */\n Context.prototype.checkEmpty = function() {\n var horizontalEmpty = this.Adapter.isEmptyObject(this.waypoints.horizontal)\n var verticalEmpty = this.Adapter.isEmptyObject(this.waypoints.vertical)\n var isWindow = this.element == this.element.window\n if (horizontalEmpty && verticalEmpty && !isWindow) {\n this.adapter.off('.waypoints')\n delete contexts[this.key]\n }\n }\n\n /* Private */\n Context.prototype.createThrottledResizeHandler = function() {\n var self = this\n\n function resizeHandler() {\n self.handleResize()\n self.didResize = false\n }\n\n this.adapter.on('resize.waypoints', function() {\n if (!self.didResize) {\n self.didResize = true\n Waypoint.requestAnimationFrame(resizeHandler)\n }\n })\n }\n\n /* Private */\n Context.prototype.createThrottledScrollHandler = function() {\n var self = this\n function scrollHandler() {\n self.handleScroll()\n self.didScroll = false\n }\n\n this.adapter.on('scroll.waypoints', function() {\n if (!self.didScroll || Waypoint.isTouch) {\n self.didScroll = true\n Waypoint.requestAnimationFrame(scrollHandler)\n }\n })\n }\n\n /* Private */\n Context.prototype.handleResize = function() {\n Waypoint.Context.refreshAll()\n }\n\n /* Private */\n Context.prototype.handleScroll = function() {\n var triggeredGroups = {}\n var axes = {\n horizontal: {\n newScroll: this.adapter.scrollLeft(),\n oldScroll: this.oldScroll.x,\n forward: 'right',\n backward: 'left'\n },\n vertical: {\n newScroll: this.adapter.scrollTop(),\n oldScroll: this.oldScroll.y,\n forward: 'down',\n backward: 'up'\n }\n }\n\n for (var axisKey in axes) {\n var axis = axes[axisKey]\n var isForward = axis.newScroll > axis.oldScroll\n var direction = isForward ? axis.forward : axis.backward\n\n for (var waypointKey in this.waypoints[axisKey]) {\n var waypoint = this.waypoints[axisKey][waypointKey]\n if (waypoint.triggerPoint === null) {\n continue\n }\n var wasBeforeTriggerPoint = axis.oldScroll < waypoint.triggerPoint\n var nowAfterTriggerPoint = axis.newScroll >= waypoint.triggerPoint\n var crossedForward = wasBeforeTriggerPoint && nowAfterTriggerPoint\n var crossedBackward = !wasBeforeTriggerPoint && !nowAfterTriggerPoint\n if (crossedForward || crossedBackward) {\n waypoint.queueTrigger(direction)\n triggeredGroups[waypoint.group.id] = waypoint.group\n }\n }\n }\n\n for (var groupKey in triggeredGroups) {\n triggeredGroups[groupKey].flushTriggers()\n }\n\n this.oldScroll = {\n x: axes.horizontal.newScroll,\n y: axes.vertical.newScroll\n }\n }\n\n /* Private */\n Context.prototype.innerHeight = function() {\n /*eslint-disable eqeqeq */\n if (this.element == this.element.window) {\n return Waypoint.viewportHeight()\n }\n /*eslint-enable eqeqeq */\n return this.adapter.innerHeight()\n }\n\n /* Private */\n Context.prototype.remove = function(waypoint) {\n delete this.waypoints[waypoint.axis][waypoint.key]\n this.checkEmpty()\n }\n\n /* Private */\n Context.prototype.innerWidth = function() {\n /*eslint-disable eqeqeq */\n if (this.element == this.element.window) {\n return Waypoint.viewportWidth()\n }\n /*eslint-enable eqeqeq */\n return this.adapter.innerWidth()\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/context-destroy */\n Context.prototype.destroy = function() {\n var allWaypoints = []\n for (var axis in this.waypoints) {\n for (var waypointKey in this.waypoints[axis]) {\n allWaypoints.push(this.waypoints[axis][waypointKey])\n }\n }\n for (var i = 0, end = allWaypoints.length; i < end; i++) {\n allWaypoints[i].destroy()\n }\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/context-refresh */\n Context.prototype.refresh = function() {\n /*eslint-disable eqeqeq */\n var isWindow = this.element == this.element.window\n /*eslint-enable eqeqeq */\n var contextOffset = isWindow ? undefined : this.adapter.offset()\n var triggeredGroups = {}\n var axes\n\n this.handleScroll()\n axes = {\n horizontal: {\n contextOffset: isWindow ? 0 : contextOffset.left,\n contextScroll: isWindow ? 0 : this.oldScroll.x,\n contextDimension: this.innerWidth(),\n oldScroll: this.oldScroll.x,\n forward: 'right',\n backward: 'left',\n offsetProp: 'left'\n },\n vertical: {\n contextOffset: isWindow ? 0 : contextOffset.top,\n contextScroll: isWindow ? 0 : this.oldScroll.y,\n contextDimension: this.innerHeight(),\n oldScroll: this.oldScroll.y,\n forward: 'down',\n backward: 'up',\n offsetProp: 'top'\n }\n }\n\n for (var axisKey in axes) {\n var axis = axes[axisKey]\n for (var waypointKey in this.waypoints[axisKey]) {\n var waypoint = this.waypoints[axisKey][waypointKey]\n var adjustment = waypoint.options.offset\n var oldTriggerPoint = waypoint.triggerPoint\n var elementOffset = 0\n var freshWaypoint = oldTriggerPoint == null\n var contextModifier, wasBeforeScroll, nowAfterScroll\n var triggeredBackward, triggeredForward\n\n if (waypoint.element !== waypoint.element.window) {\n elementOffset = waypoint.adapter.offset()[axis.offsetProp]\n }\n\n if (typeof adjustment === 'function') {\n adjustment = adjustment.apply(waypoint)\n }\n else if (typeof adjustment === 'string') {\n adjustment = parseFloat(adjustment)\n if (waypoint.options.offset.indexOf('%') > - 1) {\n adjustment = Math.ceil(axis.contextDimension * adjustment / 100)\n }\n }\n\n contextModifier = axis.contextScroll - axis.contextOffset\n waypoint.triggerPoint = Math.floor(elementOffset + contextModifier - adjustment)\n wasBeforeScroll = oldTriggerPoint < axis.oldScroll\n nowAfterScroll = waypoint.triggerPoint >= axis.oldScroll\n triggeredBackward = wasBeforeScroll && nowAfterScroll\n triggeredForward = !wasBeforeScroll && !nowAfterScroll\n\n if (!freshWaypoint && triggeredBackward) {\n waypoint.queueTrigger(axis.backward)\n triggeredGroups[waypoint.group.id] = waypoint.group\n }\n else if (!freshWaypoint && triggeredForward) {\n waypoint.queueTrigger(axis.forward)\n triggeredGroups[waypoint.group.id] = waypoint.group\n }\n else if (freshWaypoint && axis.oldScroll >= waypoint.triggerPoint) {\n waypoint.queueTrigger(axis.forward)\n triggeredGroups[waypoint.group.id] = waypoint.group\n }\n }\n }\n\n Waypoint.requestAnimationFrame(function() {\n for (var groupKey in triggeredGroups) {\n triggeredGroups[groupKey].flushTriggers()\n }\n })\n\n return this\n }\n\n /* Private */\n Context.findOrCreateByElement = function(element) {\n return Context.findByElement(element) || new Context(element)\n }\n\n /* Private */\n Context.refreshAll = function() {\n for (var contextId in contexts) {\n contexts[contextId].refresh()\n }\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/context-find-by-element */\n Context.findByElement = function(element) {\n return contexts[element.waypointContextKey]\n }\n\n window.onload = function() {\n if (oldWindowLoad) {\n oldWindowLoad()\n }\n Context.refreshAll()\n }\n\n\n Waypoint.requestAnimationFrame = function(callback) {\n var requestFn = window.requestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n requestAnimationFrameShim\n requestFn.call(window, callback)\n }\n Waypoint.Context = Context\n}())\n;(function() {\n 'use strict'\n\n function byTriggerPoint(a, b) {\n return a.triggerPoint - b.triggerPoint\n }\n\n function byReverseTriggerPoint(a, b) {\n return b.triggerPoint - a.triggerPoint\n }\n\n var groups = {\n vertical: {},\n horizontal: {}\n }\n var Waypoint = window.Waypoint\n\n /* http://imakewebthings.com/waypoints/api/group */\n function Group(options) {\n this.name = options.name\n this.axis = options.axis\n this.id = this.name + '-' + this.axis\n this.waypoints = []\n this.clearTriggerQueues()\n groups[this.axis][this.name] = this\n }\n\n /* Private */\n Group.prototype.add = function(waypoint) {\n this.waypoints.push(waypoint)\n }\n\n /* Private */\n Group.prototype.clearTriggerQueues = function() {\n this.triggerQueues = {\n up: [],\n down: [],\n left: [],\n right: []\n }\n }\n\n /* Private */\n Group.prototype.flushTriggers = function() {\n for (var direction in this.triggerQueues) {\n var waypoints = this.triggerQueues[direction]\n var reverse = direction === 'up' || direction === 'left'\n waypoints.sort(reverse ? byReverseTriggerPoint : byTriggerPoint)\n for (var i = 0, end = waypoints.length; i < end; i += 1) {\n var waypoint = waypoints[i]\n if (waypoint.options.continuous || i === waypoints.length - 1) {\n waypoint.trigger([direction])\n }\n }\n }\n this.clearTriggerQueues()\n }\n\n /* Private */\n Group.prototype.next = function(waypoint) {\n this.waypoints.sort(byTriggerPoint)\n var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)\n var isLast = index === this.waypoints.length - 1\n return isLast ? null : this.waypoints[index + 1]\n }\n\n /* Private */\n Group.prototype.previous = function(waypoint) {\n this.waypoints.sort(byTriggerPoint)\n var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)\n return index ? this.waypoints[index - 1] : null\n }\n\n /* Private */\n Group.prototype.queueTrigger = function(waypoint, direction) {\n this.triggerQueues[direction].push(waypoint)\n }\n\n /* Private */\n Group.prototype.remove = function(waypoint) {\n var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)\n if (index > -1) {\n this.waypoints.splice(index, 1)\n }\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/first */\n Group.prototype.first = function() {\n return this.waypoints[0]\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/last */\n Group.prototype.last = function() {\n return this.waypoints[this.waypoints.length - 1]\n }\n\n /* Private */\n Group.findOrCreate = function(options) {\n return groups[options.axis][options.name] || new Group(options)\n }\n\n Waypoint.Group = Group\n}())\n;(function() {\n 'use strict'\n\n var $ = window.jQuery\n var Waypoint = window.Waypoint\n\n function JQueryAdapter(element) {\n this.$element = $(element)\n }\n\n $.each([\n 'innerHeight',\n 'innerWidth',\n 'off',\n 'offset',\n 'on',\n 'outerHeight',\n 'outerWidth',\n 'scrollLeft',\n 'scrollTop'\n ], function(i, method) {\n JQueryAdapter.prototype[method] = function() {\n var args = Array.prototype.slice.call(arguments)\n return this.$element[method].apply(this.$element, args)\n }\n })\n\n $.each([\n 'extend',\n 'inArray',\n 'isEmptyObject'\n ], function(i, method) {\n JQueryAdapter[method] = $[method]\n })\n\n Waypoint.adapters.push({\n name: 'jquery',\n Adapter: JQueryAdapter\n })\n Waypoint.Adapter = JQueryAdapter\n}())\n;(function() {\n 'use strict'\n\n var Waypoint = window.Waypoint\n\n function createExtension(framework) {\n return function() {\n var waypoints = []\n var overrides = arguments[0]\n\n if (framework.isFunction(arguments[0])) {\n overrides = framework.extend({}, arguments[1])\n overrides.handler = arguments[0]\n }\n\n this.each(function() {\n var options = framework.extend({}, overrides, {\n element: this\n })\n if (typeof options.context === 'string') {\n options.context = framework(this).closest(options.context)[0]\n }\n waypoints.push(new Waypoint(options))\n })\n\n return waypoints\n }\n }\n\n if (window.jQuery) {\n window.jQuery.fn.waypoint = createExtension(window.jQuery)\n }\n if (window.Zepto) {\n window.Zepto.fn.waypoint = createExtension(window.Zepto)\n }\n}())\n;","/*!\nWaypoints Sticky Element Shortcut - 4.0.1\nCopyright © 2011-2016 Caleb Troughton\nLicensed under the MIT license.\nhttps://github.com/imakewebthings/waypoints/blob/master/licenses.txt\n*/\n(function() {\n 'use strict'\n\n var $ = window.jQuery\n var Waypoint = window.Waypoint\n\n /* http://imakewebthings.com/waypoints/shortcuts/sticky-elements */\n function Sticky(options) {\n this.options = $.extend({}, Waypoint.defaults, Sticky.defaults, options)\n this.element = this.options.element\n this.$element = $(this.element)\n this.createWrapper()\n this.createWaypoint()\n }\n\n /* Private */\n Sticky.prototype.createWaypoint = function() {\n var originalHandler = this.options.handler\n\n this.waypoint = new Waypoint($.extend({}, this.options, {\n element: this.wrapper,\n handler: $.proxy(function(direction) {\n var shouldBeStuck = this.options.direction.indexOf(direction) > -1\n var wrapperHeight = shouldBeStuck ? this.$element.outerHeight(true) : ''\n\n this.$wrapper.height(wrapperHeight)\n this.$element.toggleClass(this.options.stuckClass, shouldBeStuck)\n\n if (originalHandler) {\n originalHandler.call(this, direction)\n }\n }, this)\n }))\n }\n\n /* Private */\n Sticky.prototype.createWrapper = function() {\n if (this.options.wrapper) {\n this.$element.wrap(this.options.wrapper)\n }\n this.$wrapper = this.$element.parent()\n this.wrapper = this.$wrapper[0]\n }\n\n /* Public */\n Sticky.prototype.destroy = function() {\n if (this.$element.parent()[0] === this.wrapper) {\n this.waypoint.destroy()\n this.$element.removeClass(this.options.stuckClass)\n if (this.options.wrapper) {\n this.$element.unwrap()\n }\n }\n }\n\n Sticky.defaults = {\n wrapper: '
',\n stuckClass: 'stuck',\n direction: 'down right'\n }\n\n Waypoint.Sticky = Sticky\n}())\n;","module.exports = jQuery;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/*\r\n * Main entry file for public JS and CSS\r\n */\n\n/* Main Scripts */\nrequire(\"./scripts/master.js\");\n\n/* Main Styles */\nrequire('./styles/master.scss');"],"names":[],"sourceRoot":""}