{"version":3,"sources":["panel.js","ajax.js","util.js","script.js","vendor/slick.min.js","vendor/awesome/filter.js","vendor/awesome/viewport.js"],"names":["e","n","t","r","o","s","i","a","l","C","hasOwnProperty","name","push","toLowerCase","options","aliases","length","fn","split","LA_Modernizr","Boolean","g","join","_","className","_config","classPrefix","S","baseVal","enableJSClass","RegExp","replace","enableClasses","indexOf","createElement","arguments","createElementNS","call","apply","toUpperCase","f","u","d","c","body","fake","p","parseInt","id","appendChild","type","styleSheet","cssText","createTextNode","style","background","overflow","parentNode","removeChild","offsetHeight","m","CSS","supports","getComputedStyle","position","h","P","modElem","v","y","shift","charAt","slice","b","E","w","_version","usePrefixes","_q","on","this","setTimeout","addTest","addAsyncTest","prototype","documentElement","nodeName","x","_cssomPrefixes","_domPrefixes","N","elem","unshift","testAllProps","z","window","document","eval","k","String","fromCharCode","toString","_T","rotate","deg","rad","parseFloat","Math","PI","costheta","cos","sintheta","sin","$M","skew","dx","dy","radX","radY","tan","translate","scale","substr","fromString","exec","AwesomePanel","shiftFixed","el","scrollTop","scrollLeft","bh","wh","$offsetP","nu","offset","oLeft","oTop","coords","newCSS","_b","transf","$t","$","css","addClass","isIE","transProp","attr","translation","parent","is","left","top","isFF","hide","right","bottom","transition","get","show","isNaN","toChangeHor","toChangeVert","$body","height","htmlMargins","$win","JSON","stringify","unshiftFixed","newCss","$el","removeClass","defTranslationStr","parse","transitionProperty","getVendorPropertyName","prop","vendorProp","prefixes","div","prop_","jQuery","self","item_id","model_name","content_url","overlayvisible","$html","test","navigator","userAgent","direction","width","panel","overlay","spinner","animation","animation_start","animation_end","hide_content","find","show_content","open","$parent","append","scroll_top","scroll_left","each","hasClass","closest","close","off","$fixed","cssanimations","remove","one","callback_close","html_pool","html","appendHTML","showHTML","callback_open","bindActions","init","load_model","then","load_content","data","AwesomeAjax","prefix","result","callback_success","callback_error","ajax","action","success_handler","error_handler","publish_model","delete_model","args","url","security","success","responseArray","wpAjax","parseAjaxResponse","errors","responses","success_error_handler","error","AwesomeUtil","detect_os","os_name","appVersion","toObject","arr","rv","find_in_array_of_objects","array","key","value","index","item","hex_to_rgb","hex","calc_size","raw","endsWith","clean_number","get_keys","obj","list","find_key_by_value","needle","haystack","find_index_by_value","keys","start_with","regex","match","replace_all","capitalize","end","Array","last","isVisible","windowScrollTopView","elemTop","AET","call_slider","selector","slick","enable_slider","count","autoplay","speed","adaptive","accessibility","draggable","infinite","slidesToShow","mobileFirst","slidesToScroll","autoplaySpeed","adaptiveHeight","prevArrow","nextArrow","responsive","slider_fallbacks","enable_slider_photo","variableWidth","lazyLoad","event","currentSlide","select_testimonial","calc_short_text_nubbin_position","init_filter","aet_filter","AwesomeFilter","container","controls","item_selector","control_selector","control_active","attribut","init_search","slider","query","val","trim","undefined","title","$group","parents","testimonials","trigger","bind_profiles","init_animations","$container","AwesomeViewport","add","element","threshold","enter","get_name","text","str","substring","init_panel","target","tagName","group_id","testimonial_id","aet_panel","init_summary_panel","eq","items","siblings","blocks","testimonial","block","init_showcase","calc_rating_icons_size","group","on_resize_handler","fill_max_width","outerWidth","round","icon_max_width","rating","resize","calc_social_icons_size","container_showcase","icons","origin_size","active","short_texts","short_text","photos","content_box","$nubbin","group_width","group_offset","active_width","active_offset","short_text_width","nubbin_offset","blocks_offset","calculate_slider_items_size","slider_width","item_max_width","bind_rating_select","$fill","$input","block_width","mouse_x","pageX","ceil","new_testimonial_from_form","preventDefault","$shortcode","$form","$wrapper","$button","$success","$spinner","$alert","redirectURL","serialize","hide_form","show_form","hide_button","show_button","hide_success","show_success","a_ajax","grecaptcha","widget_id","reset","location","href","message","bind_testimonial_form_button","form","dfd","Deferred","resolve","forEach","bind","panel_animation","bind_summary_resize","summaries","toArray","breakpoints","summary","$summary","breakpoint","settings","factory","define","amd","exports","module","require","LA_Slick","dataSettings","defaults","appendArrows","appendDots","arrows","asNavFor","centerMode","centerPadding","cssEase","customPaging","dots","dotsClass","easing","edgeFriction","fade","focusOnSelect","initialSlide","pauseOnHover","pauseOnFocus","pauseOnDotsHover","respondTo","rows","rtl","slide","slidesPerRow","swipe","swipeToSlide","touchMove","touchThreshold","useCSS","useTransform","vertical","verticalSwiping","waitForAnimate","zIndex","initials","animating","dragging","autoPlayTimer","currentDirection","currentLeft","$dots","listWidth","listHeight","loadIndex","$nextArrow","$prevArrow","slideCount","slideWidth","$slideTrack","$slides","sliding","slideOffset","swipeLeft","$list","touchObject","transformsEnabled","unslicked","extend","activeBreakpoint","animType","animProp","breakpointSettings","cssTransitions","focussed","interrupted","hidden","paused","positionProp","rowCount","shouldClick","$slider","$slidesCache","transformType","transitionType","visibilityChange","windowWidth","windowTimer","originalSettings","mozHidden","webkitHidden","autoPlay","proxy","autoPlayClear","autoPlayIterator","changeSlide","clickHandler","selectHandler","setPosition","swipeHandler","dragHandler","keyHandler","instanceUid","htmlExpr","registerBreakpoints","activateADA","aria-hidden","tabindex","addSlide","slickAdd","markup","addBefore","unload","appendTo","insertBefore","insertAfter","prependTo","children","detach","reinit","animateHeight","targetHeight","outerHeight","animate","animateSlide","targetLeft","callback","animProps","animStart","duration","step","now","complete","applyTransition","disableTransition","getNavTarget","not","slideHandler","setInterval","clearInterval","slideTo","buildArrows","removeAttr","aria-disabled","buildDots","dot","getDotCount","first","buildOut","wrapAll","wrap","setupInfinite","updateDots","setSlideClasses","buildRows","newSlides","numOfSlides","originalSlides","slidesPerSection","createDocumentFragment","row","empty","display","checkResponsive","initial","forceUpdate","targetBreakpoint","respondToWidth","triggerBreakpoint","sliderWidth","innerWidth","min","unslick","refresh","dontAnimate","indexOffset","unevenOffset","$target","currentTarget","checkNavigable","navigables","prevNavigable","getNavigableIndexes","cleanUpEvents","interrupt","visibility","cleanUpSlideEvents","orientationChange","cleanUpRows","stopImmediatePropagation","stopPropagation","destroy","fadeSlide","slideIndex","opacity","fadeSlideOut","filterSlides","slickFilter","filter","focusHandler","$sf","getCurrent","slickCurrentSlide","breakPoint","counter","pagerQty","getLeft","verticalHeight","targetSlide","verticalOffset","floor","offsetLeft","getOption","slickGetOption","option","max","indexes","getSlick","getSlideCount","slidesTraversed","swipedSlide","centerOffset","abs","goTo","slickGoTo","creation","setProps","startLoad","loadSlider","initializeEvents","updateArrows","initADA","role","aria-describedby","aria-selected","aria-controls","initArrowEvents","initDotEvents","initSlideEvents","initUI","keyCode","loadImages","imagesScope","image","imageSource","imageToLoad","onload","onerror","src","loadRange","cloneRange","rangeStart","rangeEnd","progressiveLazyLoad","next","slickNext","pause","slickPause","play","slickPlay","postSlide","prev","slickPrev","tryCount","$imgsToLoad","initializing","lastVisibleIndex","currentBreakpoint","responsiveSettings","splice","sort","clearTimeout","windowDelay","removeSlide","slickRemove","removeBefore","removeAll","setCSS","positionProps","setDimensions","padding","setFade","setHeight","setOption","slickSetOption","opt","bodyStyle","WebkitTransition","MozTransition","msTransition","OTransform","perspectiveProperty","webkitPerspective","MozTransform","MozPerspective","webkitTransform","msTransform","transform","allSlides","remainder","infiniteCount","clone","toggle","targetElement","sync","animSlide","oldSlide","slideLeft","navTarget","swipeDirection","xDist","yDist","swipeAngle","startX","curX","startY","curY","atan2","swipeEnd","swipeLength","edgeHit","minSwipe","fingerCount","originalEvent","touches","swipeStart","swipeMove","curLeft","positionOffset","clientX","pageY","clientY","sqrt","pow","unfilterSlides","slickUnfilter","fromBreakpoint","ret","Cowboy","throttle","j","Date","guid","debounce","instance","$window","ViewportItem","isFunction","TypeError","isThresholdPercentage","hasLeaveCallback","leave","$element","update","delay","triggered","Viewport","lastScrollY","windowHeight","throttleTime","onResize","bindEvents","willProcessNextFrame","requestAnimationFrame","setScrollTop","process","onScroll","hasActiveHandlers","unbindEvents","maybeUnbindEvents","viewportItem","saveDimensions","isInViewport","isTopInView","percentage","st","isTopPastPercent","viewportTop","viewportHeight","elementTop","elementHeight","viewportBottom","distFromViewportBottomToElementTop","percentFromBottom","isOutOfViewport","viewport","side","bool","isBottomInView","elementBottom","triggerEnter","inArray","triggerLeave","isBottomOutOfView","getInstance"],"mappings":"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","file":"all.min.js","sourcesContent":["/*! modernizr 3.2.0 (Custom Build) -> detect CSS animations | MIT *\r\n * http://modernizr.com/download/?-cssanimations !*/\r\n!function(e,n,t){function r(e,n){return typeof e===n}function o(){var e,n,t,o,s,i,a;for(var l in C)if(C.hasOwnProperty(l)){if(e=[],n=C[l],n.name&&(e.push(n.name.toLowerCase()),n.options&&n.options.aliases&&n.options.aliases.length))for(t=0;t<n.options.aliases.length;t++)e.push(n.options.aliases[t].toLowerCase());for(o=r(n.fn,\"function\")?n.fn():n.fn,s=0;s<e.length;s++)i=e[s],a=i.split(\".\"),1===a.length?LA_Modernizr[a[0]]=o:(!LA_Modernizr[a[0]]||LA_Modernizr[a[0]]instanceof Boolean||(LA_Modernizr[a[0]]=new Boolean(LA_Modernizr[a[0]])),LA_Modernizr[a[0]][a[1]]=o),g.push((o?\"\":\"no-\")+a.join(\"-\"))}}function s(e){var n=_.className,t=LA_Modernizr._config.classPrefix||\"\";if(S&&(n=n.baseVal),LA_Modernizr._config.enableJSClass){var r=new RegExp(\"(^|\\\\s)\"+t+\"no-js(\\\\s|$)\");n=n.replace(r,\"$1\"+t+\"js$2\")}LA_Modernizr._config.enableClasses&&(n+=\" \"+t+e.join(\" \"+t),S?_.className.baseVal=n:_.className=n)}function i(e,n){return!!~(\"\"+e).indexOf(n)}function a(){return\"function\"!=typeof n.createElement?n.createElement(arguments[0]):S?n.createElementNS.call(n,\"http://www.w3.org/2000/svg\",arguments[0]):n.createElement.apply(n,arguments)}function l(e){return e.replace(/([a-z])-([a-z])/g,function(e,n,t){return n+t.toUpperCase()}).replace(/^-/,\"\")}function f(e,n){return function(){return e.apply(n,arguments)}}function u(e,n,t){var o;for(var s in e)if(e[s]in n)return t===!1?e[s]:(o=n[e[s]],r(o,\"function\")?f(o,t||n):o);return!1}function d(e){return e.replace(/([A-Z])/g,function(e,n){return\"-\"+n.toLowerCase()}).replace(/^ms-/,\"-ms-\")}function c(){var e=n.body;return e||(e=a(S?\"svg\":\"body\"),e.fake=!0),e}function p(e,t,r,o){var s,i,l,f,u=\"modernizr\",d=a(\"div\"),p=c();if(parseInt(r,10))for(;r--;)l=a(\"div\"),l.id=o?o[r]:u+(r+1),d.appendChild(l);return s=a(\"style\"),s.type=\"text/css\",s.id=\"s\"+u,(p.fake?p:d).appendChild(s),p.appendChild(d),s.styleSheet?s.styleSheet.cssText=e:s.appendChild(n.createTextNode(e)),d.id=u,p.fake&&(p.style.background=\"\",p.style.overflow=\"hidden\",f=_.style.overflow,_.style.overflow=\"hidden\",_.appendChild(p)),i=t(d,e),p.fake?(p.parentNode.removeChild(p),_.style.overflow=f,_.offsetHeight):d.parentNode.removeChild(d),!!i}function m(n,r){var o=n.length;if(\"CSS\"in e&&\"supports\"in e.CSS){for(;o--;)if(e.CSS.supports(d(n[o]),r))return!0;return!1}if(\"CSSSupportsRule\"in e){for(var s=[];o--;)s.push(\"(\"+d(n[o])+\":\"+r+\")\");return s=s.join(\" or \"),p(\"@supports (\"+s+\") { #modernizr { position: absolute; } }\",function(e){return\"absolute\"==getComputedStyle(e,null).position})}return t}function h(e,n,o,s){function f(){d&&(delete P.style,delete P.modElem)}if(s=r(s,\"undefined\")?!1:s,!r(o,\"undefined\")){var u=m(e,o);if(!r(u,\"undefined\"))return u}for(var d,c,p,h,v,y=[\"modernizr\",\"tspan\"];!P.style;)d=!0,P.modElem=a(y.shift()),P.style=P.modElem.style;for(p=e.length,c=0;p>c;c++)if(h=e[c],v=P.style[h],i(h,\"-\")&&(h=l(h)),P.style[h]!==t){if(s||r(o,\"undefined\"))return f(),\"pfx\"==n?h:!0;try{P.style[h]=o}catch(g){}if(P.style[h]!=v)return f(),\"pfx\"==n?h:!0}return f(),!1}function v(e,n,t,o,s){var i=e.charAt(0).toUpperCase()+e.slice(1),a=(e+\" \"+b.join(i+\" \")+i).split(\" \");return r(n,\"string\")||r(n,\"undefined\")?h(a,n,o,s):(a=(e+\" \"+E.join(i+\" \")+i).split(\" \"),u(a,n,t))}function y(e,n,r){return v(e,t,t,n,r)}var g=[],C=[],w={_version:\"3.2.0\",_config:{classPrefix:\"\",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,n){var t=this;setTimeout(function(){n(t[e])},0)},addTest:function(e,n,t){C.push({name:e,fn:n,options:t})},addAsyncTest:function(e){C.push({name:null,fn:e})}},LA_Modernizr=function(){};LA_Modernizr.prototype=w,LA_Modernizr=new LA_Modernizr;var _=n.documentElement,S=\"svg\"===_.nodeName.toLowerCase(),x=\"Moz O ms Webkit\",b=w._config.usePrefixes?x.split(\" \"):[];w._cssomPrefixes=b;var E=w._config.usePrefixes?x.toLowerCase().split(\" \"):[];w._domPrefixes=E;var N={elem:a(\"modernizr\")};LA_Modernizr._q.push(function(){delete N.elem});var P={style:N.elem.style};LA_Modernizr._q.unshift(function(){delete P.style}),w.testAllProps=v,w.testAllProps=y,LA_Modernizr.addTest(\"cssanimations\",y(\"animationName\",\"a\",!0)),o(),s(g),delete w.addTest,delete w.addAsyncTest;for(var z=0;z<LA_Modernizr._q.length;z++)LA_Modernizr._q[z]();e.LA_Modernizr=LA_Modernizr}(window,document);\r\n\r\n// matrix library\r\neval(function (p, a, c, k, e, r) {\r\n    e = function (c) {\r\n        return (c < a ? '' : e(parseInt(c / a))) + ((c = c % a) > 35 ? String.fromCharCode(c + 29) : c.toString(36))\r\n    };\r\n    if (!''.replace(/^/, String)) {\r\n        while (c--) r[e(c)] = k[c] || e(c);\r\n        k = [\r\n            function (e) {\r\n                return r[e]\r\n            }\r\n        ];\r\n        e = function () {\r\n            return '\\\\w+'\r\n        };\r\n        c = 1\r\n    }\r\n    ;\r\n    while (c--)\r\n        if (k[c]) p = p.replace(new RegExp('\\\\b' + e(c) + '\\\\b', 'g'), k[c]);\r\n    return p\r\n}('9 17={3i:\\'0.1.3\\',16:1e-6};l v(){}v.23={e:l(i){8(i<1||i>7.4.q)?w:7.4[i-1]},2R:l(){8 7.4.q},1u:l(){8 F.1x(7.2u(7))},24:l(a){9 n=7.4.q;9 V=a.4||a;o(n!=V.q){8 1L}J{o(F.13(7.4[n-1]-V[n-1])>17.16){8 1L}}H(--n);8 2x},1q:l(){8 v.u(7.4)},1b:l(a){9 b=[];7.28(l(x,i){b.19(a(x,i))});8 v.u(b)},28:l(a){9 n=7.4.q,k=n,i;J{i=k-n;a(7.4[i],i+1)}H(--n)},2q:l(){9 r=7.1u();o(r===0){8 7.1q()}8 7.1b(l(x){8 x/r})},1C:l(a){9 V=a.4||a;9 n=7.4.q,k=n,i;o(n!=V.q){8 w}9 b=0,1D=0,1F=0;7.28(l(x,i){b+=x*V[i-1];1D+=x*x;1F+=V[i-1]*V[i-1]});1D=F.1x(1D);1F=F.1x(1F);o(1D*1F===0){8 w}9 c=b/(1D*1F);o(c<-1){c=-1}o(c>1){c=1}8 F.37(c)},1m:l(a){9 b=7.1C(a);8(b===w)?w:(b<=17.16)},34:l(a){9 b=7.1C(a);8(b===w)?w:(F.13(b-F.1A)<=17.16)},2k:l(a){9 b=7.2u(a);8(b===w)?w:(F.13(b)<=17.16)},2j:l(a){9 V=a.4||a;o(7.4.q!=V.q){8 w}8 7.1b(l(x,i){8 x+V[i-1]})},2C:l(a){9 V=a.4||a;o(7.4.q!=V.q){8 w}8 7.1b(l(x,i){8 x-V[i-1]})},22:l(k){8 7.1b(l(x){8 x*k})},x:l(k){8 7.22(k)},2u:l(a){9 V=a.4||a;9 i,2g=0,n=7.4.q;o(n!=V.q){8 w}J{2g+=7.4[n-1]*V[n-1]}H(--n);8 2g},2f:l(a){9 B=a.4||a;o(7.4.q!=3||B.q!=3){8 w}9 A=7.4;8 v.u([(A[1]*B[2])-(A[2]*B[1]),(A[2]*B[0])-(A[0]*B[2]),(A[0]*B[1])-(A[1]*B[0])])},2A:l(){9 m=0,n=7.4.q,k=n,i;J{i=k-n;o(F.13(7.4[i])>F.13(m)){m=7.4[i]}}H(--n);8 m},2Z:l(x){9 a=w,n=7.4.q,k=n,i;J{i=k-n;o(a===w&&7.4[i]==x){a=i+1}}H(--n);8 a},3g:l(){8 S.2X(7.4)},2d:l(){8 7.1b(l(x){8 F.2d(x)})},2V:l(x){8 7.1b(l(y){8(F.13(y-x)<=17.16)?x:y})},1o:l(a){o(a.K){8 a.1o(7)}9 V=a.4||a;o(V.q!=7.4.q){8 w}9 b=0,2b;7.28(l(x,i){2b=x-V[i-1];b+=2b*2b});8 F.1x(b)},3a:l(a){8 a.1h(7)},2T:l(a){8 a.1h(7)},1V:l(t,a){9 V,R,x,y,z;2S(7.4.q){27 2:V=a.4||a;o(V.q!=2){8 w}R=S.1R(t).4;x=7.4[0]-V[0];y=7.4[1]-V[1];8 v.u([V[0]+R[0][0]*x+R[0][1]*y,V[1]+R[1][0]*x+R[1][1]*y]);1I;27 3:o(!a.U){8 w}9 C=a.1r(7).4;R=S.1R(t,a.U).4;x=7.4[0]-C[0];y=7.4[1]-C[1];z=7.4[2]-C[2];8 v.u([C[0]+R[0][0]*x+R[0][1]*y+R[0][2]*z,C[1]+R[1][0]*x+R[1][1]*y+R[1][2]*z,C[2]+R[2][0]*x+R[2][1]*y+R[2][2]*z]);1I;2P:8 w}},1t:l(a){o(a.K){9 P=7.4.2O();9 C=a.1r(P).4;8 v.u([C[0]+(C[0]-P[0]),C[1]+(C[1]-P[1]),C[2]+(C[2]-(P[2]||0))])}1d{9 Q=a.4||a;o(7.4.q!=Q.q){8 w}8 7.1b(l(x,i){8 Q[i-1]+(Q[i-1]-x)})}},1N:l(){9 V=7.1q();2S(V.4.q){27 3:1I;27 2:V.4.19(0);1I;2P:8 w}8 V},2n:l(){8\\'[\\'+7.4.2K(\\', \\')+\\']\\'},26:l(a){7.4=(a.4||a).2O();8 7}};v.u=l(a){9 V=25 v();8 V.26(a)};v.i=v.u([1,0,0]);v.j=v.u([0,1,0]);v.k=v.u([0,0,1]);v.2J=l(n){9 a=[];J{a.19(F.2F())}H(--n);8 v.u(a)};v.1j=l(n){9 a=[];J{a.19(0)}H(--n);8 v.u(a)};l S(){}S.23={e:l(i,j){o(i<1||i>7.4.q||j<1||j>7.4[0].q){8 w}8 7.4[i-1][j-1]},33:l(i){o(i>7.4.q){8 w}8 v.u(7.4[i-1])},2E:l(j){o(j>7.4[0].q){8 w}9 a=[],n=7.4.q,k=n,i;J{i=k-n;a.19(7.4[i][j-1])}H(--n);8 v.u(a)},2R:l(){8{2D:7.4.q,1p:7.4[0].q}},2D:l(){8 7.4.q},1p:l(){8 7.4[0].q},24:l(a){9 M=a.4||a;o(1g(M[0][0])==\\'1f\\'){M=S.u(M).4}o(7.4.q!=M.q||7.4[0].q!=M[0].q){8 1L}9 b=7.4.q,15=b,i,G,10=7.4[0].q,j;J{i=15-b;G=10;J{j=10-G;o(F.13(7.4[i][j]-M[i][j])>17.16){8 1L}}H(--G)}H(--b);8 2x},1q:l(){8 S.u(7.4)},1b:l(a){9 b=[],12=7.4.q,15=12,i,G,10=7.4[0].q,j;J{i=15-12;G=10;b[i]=[];J{j=10-G;b[i][j]=a(7.4[i][j],i+1,j+1)}H(--G)}H(--12);8 S.u(b)},2i:l(a){9 M=a.4||a;o(1g(M[0][0])==\\'1f\\'){M=S.u(M).4}8(7.4.q==M.q&&7.4[0].q==M[0].q)},2j:l(a){9 M=a.4||a;o(1g(M[0][0])==\\'1f\\'){M=S.u(M).4}o(!7.2i(M)){8 w}8 7.1b(l(x,i,j){8 x+M[i-1][j-1]})},2C:l(a){9 M=a.4||a;o(1g(M[0][0])==\\'1f\\'){M=S.u(M).4}o(!7.2i(M)){8 w}8 7.1b(l(x,i,j){8 x-M[i-1][j-1]})},2B:l(a){9 M=a.4||a;o(1g(M[0][0])==\\'1f\\'){M=S.u(M).4}8(7.4[0].q==M.q)},22:l(a){o(!a.4){8 7.1b(l(x){8 x*a})}9 b=a.1u?2x:1L;9 M=a.4||a;o(1g(M[0][0])==\\'1f\\'){M=S.u(M).4}o(!7.2B(M)){8 w}9 d=7.4.q,15=d,i,G,10=M[0].q,j;9 e=7.4[0].q,4=[],21,20,c;J{i=15-d;4[i]=[];G=10;J{j=10-G;21=0;20=e;J{c=e-20;21+=7.4[i][c]*M[c][j]}H(--20);4[i][j]=21}H(--G)}H(--d);9 M=S.u(4);8 b?M.2E(1):M},x:l(a){8 7.22(a)},32:l(a,b,c,d){9 e=[],12=c,i,G,j;9 f=7.4.q,1p=7.4[0].q;J{i=c-12;e[i]=[];G=d;J{j=d-G;e[i][j]=7.4[(a+i-1)%f][(b+j-1)%1p]}H(--G)}H(--12);8 S.u(e)},31:l(){9 a=7.4.q,1p=7.4[0].q;9 b=[],12=1p,i,G,j;J{i=1p-12;b[i]=[];G=a;J{j=a-G;b[i][j]=7.4[j][i]}H(--G)}H(--12);8 S.u(b)},1y:l(){8(7.4.q==7.4[0].q)},2A:l(){9 m=0,12=7.4.q,15=12,i,G,10=7.4[0].q,j;J{i=15-12;G=10;J{j=10-G;o(F.13(7.4[i][j])>F.13(m)){m=7.4[i][j]}}H(--G)}H(--12);8 m},2Z:l(x){9 a=w,12=7.4.q,15=12,i,G,10=7.4[0].q,j;J{i=15-12;G=10;J{j=10-G;o(7.4[i][j]==x){8{i:i+1,j:j+1}}}H(--G)}H(--12);8 w},30:l(){o(!7.1y){8 w}9 a=[],n=7.4.q,k=n,i;J{i=k-n;a.19(7.4[i][i])}H(--n);8 v.u(a)},1K:l(){9 M=7.1q(),1c;9 n=7.4.q,k=n,i,1s,1n=7.4[0].q,p;J{i=k-n;o(M.4[i][i]==0){2e(j=i+1;j<k;j++){o(M.4[j][i]!=0){1c=[];1s=1n;J{p=1n-1s;1c.19(M.4[i][p]+M.4[j][p])}H(--1s);M.4[i]=1c;1I}}}o(M.4[i][i]!=0){2e(j=i+1;j<k;j++){9 a=M.4[j][i]/M.4[i][i];1c=[];1s=1n;J{p=1n-1s;1c.19(p<=i?0:M.4[j][p]-M.4[i][p]*a)}H(--1s);M.4[j]=1c}}}H(--n);8 M},3h:l(){8 7.1K()},2z:l(){o(!7.1y()){8 w}9 M=7.1K();9 a=M.4[0][0],n=M.4.q-1,k=n,i;J{i=k-n+1;a=a*M.4[i][i]}H(--n);8 a},3f:l(){8 7.2z()},2y:l(){8(7.1y()&&7.2z()===0)},2Y:l(){o(!7.1y()){8 w}9 a=7.4[0][0],n=7.4.q-1,k=n,i;J{i=k-n+1;a+=7.4[i][i]}H(--n);8 a},3e:l(){8 7.2Y()},1Y:l(){9 M=7.1K(),1Y=0;9 a=7.4.q,15=a,i,G,10=7.4[0].q,j;J{i=15-a;G=10;J{j=10-G;o(F.13(M.4[i][j])>17.16){1Y++;1I}}H(--G)}H(--a);8 1Y},3d:l(){8 7.1Y()},2W:l(a){9 M=a.4||a;o(1g(M[0][0])==\\'1f\\'){M=S.u(M).4}9 T=7.1q(),1p=T.4[0].q;9 b=T.4.q,15=b,i,G,10=M[0].q,j;o(b!=M.q){8 w}J{i=15-b;G=10;J{j=10-G;T.4[i][1p+j]=M[i][j]}H(--G)}H(--b);8 T},2w:l(){o(!7.1y()||7.2y()){8 w}9 a=7.4.q,15=a,i,j;9 M=7.2W(S.I(a)).1K();9 b,1n=M.4[0].q,p,1c,2v;9 c=[],2c;J{i=a-1;1c=[];b=1n;c[i]=[];2v=M.4[i][i];J{p=1n-b;2c=M.4[i][p]/2v;1c.19(2c);o(p>=15){c[i].19(2c)}}H(--b);M.4[i]=1c;2e(j=0;j<i;j++){1c=[];b=1n;J{p=1n-b;1c.19(M.4[j][p]-M.4[i][p]*M.4[j][i])}H(--b);M.4[j]=1c}}H(--a);8 S.u(c)},3c:l(){8 7.2w()},2d:l(){8 7.1b(l(x){8 F.2d(x)})},2V:l(x){8 7.1b(l(p){8(F.13(p-x)<=17.16)?x:p})},2n:l(){9 a=[];9 n=7.4.q,k=n,i;J{i=k-n;a.19(v.u(7.4[i]).2n())}H(--n);8 a.2K(\\'\\\\n\\')},26:l(a){9 i,4=a.4||a;o(1g(4[0][0])!=\\'1f\\'){9 b=4.q,15=b,G,10,j;7.4=[];J{i=15-b;G=4[i].q;10=G;7.4[i]=[];J{j=10-G;7.4[i][j]=4[i][j]}H(--G)}H(--b);8 7}9 n=4.q,k=n;7.4=[];J{i=k-n;7.4.19([4[i]])}H(--n);8 7}};S.u=l(a){9 M=25 S();8 M.26(a)};S.I=l(n){9 a=[],k=n,i,G,j;J{i=k-n;a[i]=[];G=k;J{j=k-G;a[i][j]=(i==j)?1:0}H(--G)}H(--n);8 S.u(a)};S.2X=l(a){9 n=a.q,k=n,i;9 M=S.I(n);J{i=k-n;M.4[i][i]=a[i]}H(--n);8 M};S.1R=l(b,a){o(!a){8 S.u([[F.1H(b),-F.1G(b)],[F.1G(b),F.1H(b)]])}9 d=a.1q();o(d.4.q!=3){8 w}9 e=d.1u();9 x=d.4[0]/e,y=d.4[1]/e,z=d.4[2]/e;9 s=F.1G(b),c=F.1H(b),t=1-c;8 S.u([[t*x*x+c,t*x*y-s*z,t*x*z+s*y],[t*x*y+s*z,t*y*y+c,t*y*z-s*x],[t*x*z-s*y,t*y*z+s*x,t*z*z+c]])};S.3b=l(t){9 c=F.1H(t),s=F.1G(t);8 S.u([[1,0,0],[0,c,-s],[0,s,c]])};S.39=l(t){9 c=F.1H(t),s=F.1G(t);8 S.u([[c,0,s],[0,1,0],[-s,0,c]])};S.38=l(t){9 c=F.1H(t),s=F.1G(t);8 S.u([[c,-s,0],[s,c,0],[0,0,1]])};S.2J=l(n,m){8 S.1j(n,m).1b(l(){8 F.2F()})};S.1j=l(n,m){9 a=[],12=n,i,G,j;J{i=n-12;a[i]=[];G=m;J{j=m-G;a[i][j]=0}H(--G)}H(--12);8 S.u(a)};l 14(){}14.23={24:l(a){8(7.1m(a)&&7.1h(a.K))},1q:l(){8 14.u(7.K,7.U)},2U:l(a){9 V=a.4||a;8 14.u([7.K.4[0]+V[0],7.K.4[1]+V[1],7.K.4[2]+(V[2]||0)],7.U)},1m:l(a){o(a.W){8 a.1m(7)}9 b=7.U.1C(a.U);8(F.13(b)<=17.16||F.13(b-F.1A)<=17.16)},1o:l(a){o(a.W){8 a.1o(7)}o(a.U){o(7.1m(a)){8 7.1o(a.K)}9 N=7.U.2f(a.U).2q().4;9 A=7.K.4,B=a.K.4;8 F.13((A[0]-B[0])*N[0]+(A[1]-B[1])*N[1]+(A[2]-B[2])*N[2])}1d{9 P=a.4||a;9 A=7.K.4,D=7.U.4;9 b=P[0]-A[0],2a=P[1]-A[1],29=(P[2]||0)-A[2];9 c=F.1x(b*b+2a*2a+29*29);o(c===0)8 0;9 d=(b*D[0]+2a*D[1]+29*D[2])/c;9 e=1-d*d;8 F.13(c*F.1x(e<0?0:e))}},1h:l(a){9 b=7.1o(a);8(b!==w&&b<=17.16)},2T:l(a){8 a.1h(7)},1v:l(a){o(a.W){8 a.1v(7)}8(!7.1m(a)&&7.1o(a)<=17.16)},1U:l(a){o(a.W){8 a.1U(7)}o(!7.1v(a)){8 w}9 P=7.K.4,X=7.U.4,Q=a.K.4,Y=a.U.4;9 b=X[0],1z=X[1],1B=X[2],1T=Y[0],1S=Y[1],1M=Y[2];9 c=P[0]-Q[0],2s=P[1]-Q[1],2r=P[2]-Q[2];9 d=-b*c-1z*2s-1B*2r;9 e=1T*c+1S*2s+1M*2r;9 f=b*b+1z*1z+1B*1B;9 g=1T*1T+1S*1S+1M*1M;9 h=b*1T+1z*1S+1B*1M;9 k=(d*g/f+h*e)/(g-h*h);8 v.u([P[0]+k*b,P[1]+k*1z,P[2]+k*1B])},1r:l(a){o(a.U){o(7.1v(a)){8 7.1U(a)}o(7.1m(a)){8 w}9 D=7.U.4,E=a.U.4;9 b=D[0],1l=D[1],1k=D[2],1P=E[0],1O=E[1],1Q=E[2];9 x=(1k*1P-b*1Q),y=(b*1O-1l*1P),z=(1l*1Q-1k*1O);9 N=v.u([x*1Q-y*1O,y*1P-z*1Q,z*1O-x*1P]);9 P=11.u(a.K,N);8 P.1U(7)}1d{9 P=a.4||a;o(7.1h(P)){8 v.u(P)}9 A=7.K.4,D=7.U.4;9 b=D[0],1l=D[1],1k=D[2],1w=A[0],18=A[1],1a=A[2];9 x=b*(P[1]-18)-1l*(P[0]-1w),y=1l*((P[2]||0)-1a)-1k*(P[1]-18),z=1k*(P[0]-1w)-b*((P[2]||0)-1a);9 V=v.u([1l*x-1k*z,1k*y-b*x,b*z-1l*y]);9 k=7.1o(P)/V.1u();8 v.u([P[0]+V.4[0]*k,P[1]+V.4[1]*k,(P[2]||0)+V.4[2]*k])}},1V:l(t,a){o(1g(a.U)==\\'1f\\'){a=14.u(a.1N(),v.k)}9 R=S.1R(t,a.U).4;9 C=a.1r(7.K).4;9 A=7.K.4,D=7.U.4;9 b=C[0],1E=C[1],1J=C[2],1w=A[0],18=A[1],1a=A[2];9 x=1w-b,y=18-1E,z=1a-1J;8 14.u([b+R[0][0]*x+R[0][1]*y+R[0][2]*z,1E+R[1][0]*x+R[1][1]*y+R[1][2]*z,1J+R[2][0]*x+R[2][1]*y+R[2][2]*z],[R[0][0]*D[0]+R[0][1]*D[1]+R[0][2]*D[2],R[1][0]*D[0]+R[1][1]*D[1]+R[1][2]*D[2],R[2][0]*D[0]+R[2][1]*D[1]+R[2][2]*D[2]])},1t:l(a){o(a.W){9 A=7.K.4,D=7.U.4;9 b=A[0],18=A[1],1a=A[2],2N=D[0],1l=D[1],1k=D[2];9 c=7.K.1t(a).4;9 d=b+2N,2h=18+1l,2o=1a+1k;9 Q=a.1r([d,2h,2o]).4;9 e=[Q[0]+(Q[0]-d)-c[0],Q[1]+(Q[1]-2h)-c[1],Q[2]+(Q[2]-2o)-c[2]];8 14.u(c,e)}1d o(a.U){8 7.1V(F.1A,a)}1d{9 P=a.4||a;8 14.u(7.K.1t([P[0],P[1],(P[2]||0)]),7.U)}},1Z:l(a,b){a=v.u(a);b=v.u(b);o(a.4.q==2){a.4.19(0)}o(b.4.q==2){b.4.19(0)}o(a.4.q>3||b.4.q>3){8 w}9 c=b.1u();o(c===0){8 w}7.K=a;7.U=v.u([b.4[0]/c,b.4[1]/c,b.4[2]/c]);8 7}};14.u=l(a,b){9 L=25 14();8 L.1Z(a,b)};14.X=14.u(v.1j(3),v.i);14.Y=14.u(v.1j(3),v.j);14.Z=14.u(v.1j(3),v.k);l 11(){}11.23={24:l(a){8(7.1h(a.K)&&7.1m(a))},1q:l(){8 11.u(7.K,7.W)},2U:l(a){9 V=a.4||a;8 11.u([7.K.4[0]+V[0],7.K.4[1]+V[1],7.K.4[2]+(V[2]||0)],7.W)},1m:l(a){9 b;o(a.W){b=7.W.1C(a.W);8(F.13(b)<=17.16||F.13(F.1A-b)<=17.16)}1d o(a.U){8 7.W.2k(a.U)}8 w},2k:l(a){9 b=7.W.1C(a.W);8(F.13(F.1A/2-b)<=17.16)},1o:l(a){o(7.1v(a)||7.1h(a)){8 0}o(a.K){9 A=7.K.4,B=a.K.4,N=7.W.4;8 F.13((A[0]-B[0])*N[0]+(A[1]-B[1])*N[1]+(A[2]-B[2])*N[2])}1d{9 P=a.4||a;9 A=7.K.4,N=7.W.4;8 F.13((A[0]-P[0])*N[0]+(A[1]-P[1])*N[1]+(A[2]-(P[2]||0))*N[2])}},1h:l(a){o(a.W){8 w}o(a.U){8(7.1h(a.K)&&7.1h(a.K.2j(a.U)))}1d{9 P=a.4||a;9 A=7.K.4,N=7.W.4;9 b=F.13(N[0]*(A[0]-P[0])+N[1]*(A[1]-P[1])+N[2]*(A[2]-(P[2]||0)));8(b<=17.16)}},1v:l(a){o(1g(a.U)==\\'1f\\'&&1g(a.W)==\\'1f\\'){8 w}8!7.1m(a)},1U:l(a){o(!7.1v(a)){8 w}o(a.U){9 A=a.K.4,D=a.U.4,P=7.K.4,N=7.W.4;9 b=(N[0]*(P[0]-A[0])+N[1]*(P[1]-A[1])+N[2]*(P[2]-A[2]))/(N[0]*D[0]+N[1]*D[1]+N[2]*D[2]);8 v.u([A[0]+D[0]*b,A[1]+D[1]*b,A[2]+D[2]*b])}1d o(a.W){9 c=7.W.2f(a.W).2q();9 N=7.W.4,A=7.K.4,O=a.W.4,B=a.K.4;9 d=S.1j(2,2),i=0;H(d.2y()){i++;d=S.u([[N[i%3],N[(i+1)%3]],[O[i%3],O[(i+1)%3]]])}9 e=d.2w().4;9 x=N[0]*A[0]+N[1]*A[1]+N[2]*A[2];9 y=O[0]*B[0]+O[1]*B[1]+O[2]*B[2];9 f=[e[0][0]*x+e[0][1]*y,e[1][0]*x+e[1][1]*y];9 g=[];2e(9 j=1;j<=3;j++){g.19((i==j)?0:f[(j+(5-i)%3)%3])}8 14.u(g,c)}},1r:l(a){9 P=a.4||a;9 A=7.K.4,N=7.W.4;9 b=(A[0]-P[0])*N[0]+(A[1]-P[1])*N[1]+(A[2]-(P[2]||0))*N[2];8 v.u([P[0]+N[0]*b,P[1]+N[1]*b,(P[2]||0)+N[2]*b])},1V:l(t,a){9 R=S.1R(t,a.U).4;9 C=a.1r(7.K).4;9 A=7.K.4,N=7.W.4;9 b=C[0],1E=C[1],1J=C[2],1w=A[0],18=A[1],1a=A[2];9 x=1w-b,y=18-1E,z=1a-1J;8 11.u([b+R[0][0]*x+R[0][1]*y+R[0][2]*z,1E+R[1][0]*x+R[1][1]*y+R[1][2]*z,1J+R[2][0]*x+R[2][1]*y+R[2][2]*z],[R[0][0]*N[0]+R[0][1]*N[1]+R[0][2]*N[2],R[1][0]*N[0]+R[1][1]*N[1]+R[1][2]*N[2],R[2][0]*N[0]+R[2][1]*N[1]+R[2][2]*N[2]])},1t:l(a){o(a.W){9 A=7.K.4,N=7.W.4;9 b=A[0],18=A[1],1a=A[2],2M=N[0],2L=N[1],2Q=N[2];9 c=7.K.1t(a).4;9 d=b+2M,2p=18+2L,2m=1a+2Q;9 Q=a.1r([d,2p,2m]).4;9 e=[Q[0]+(Q[0]-d)-c[0],Q[1]+(Q[1]-2p)-c[1],Q[2]+(Q[2]-2m)-c[2]];8 11.u(c,e)}1d o(a.U){8 7.1V(F.1A,a)}1d{9 P=a.4||a;8 11.u(7.K.1t([P[0],P[1],(P[2]||0)]),7.W)}},1Z:l(a,b,c){a=v.u(a);a=a.1N();o(a===w){8 w}b=v.u(b);b=b.1N();o(b===w){8 w}o(1g(c)==\\'1f\\'){c=w}1d{c=v.u(c);c=c.1N();o(c===w){8 w}}9 d=a.4[0],18=a.4[1],1a=a.4[2];9 e=b.4[0],1W=b.4[1],1X=b.4[2];9 f,1i;o(c!==w){9 g=c.4[0],2l=c.4[1],2t=c.4[2];f=v.u([(1W-18)*(2t-1a)-(1X-1a)*(2l-18),(1X-1a)*(g-d)-(e-d)*(2t-1a),(e-d)*(2l-18)-(1W-18)*(g-d)]);1i=f.1u();o(1i===0){8 w}f=v.u([f.4[0]/1i,f.4[1]/1i,f.4[2]/1i])}1d{1i=F.1x(e*e+1W*1W+1X*1X);o(1i===0){8 w}f=v.u([b.4[0]/1i,b.4[1]/1i,b.4[2]/1i])}7.K=a;7.W=f;8 7}};11.u=l(a,b,c){9 P=25 11();8 P.1Z(a,b,c)};11.2I=11.u(v.1j(3),v.k);11.2H=11.u(v.1j(3),v.i);11.2G=11.u(v.1j(3),v.j);11.36=11.2I;11.35=11.2H;11.3j=11.2G;9 $V=v.u;9 $M=S.u;9 $L=14.u;9 $P=11.u;', 62, 206, '||||elements|||this|return|var||||||||||||function|||if||length||||create|Vector|null|||||||||Math|nj|while||do|anchor||||||||Matrix||direction||normal||||kj|Plane|ni|abs|Line|ki|precision|Sylvester|A2|push|A3|map|els|else||undefined|typeof|contains|mod|Zero|D3|D2|isParallelTo|kp|distanceFrom|cols|dup|pointClosestTo|np|reflectionIn|modulus|intersects|A1|sqrt|isSquare|X2|PI|X3|angleFrom|mod1|C2|mod2|sin|cos|break|C3|toRightTriangular|false|Y3|to3D|E2|E1|E3|Rotation|Y2|Y1|intersectionWith|rotate|v12|v13|rank|setVectors|nc|sum|multiply|prototype|eql|new|setElements|case|each|PA3|PA2|part|new_element|round|for|cross|product|AD2|isSameSizeAs|add|isPerpendicularTo|v22|AN3|inspect|AD3|AN2|toUnitVector|PsubQ3|PsubQ2|v23|dot|divisor|inverse|true|isSingular|determinant|max|canMultiplyFromLeft|subtract|rows|col|random|ZX|YZ|XY|Random|join|N2|N1|D1|slice|default|N3|dimensions|switch|liesIn|translate|snapTo|augment|Diagonal|trace|indexOf|diagonal|transpose|minor|row|isAntiparallelTo|ZY|YX|acos|RotationZ|RotationY|liesOn|RotationX|inv|rk|tr|det|toDiagonalMatrix|toUpperTriangular|version|XZ'.split('|'), 0, {}))\r\n\r\n// transformation matrix calculation\r\nvar _T = {\r\n    rotate: function (deg) {\r\n        var rad = parseFloat(deg) * (Math.PI / 180),\r\n            costheta = Math.cos(rad),\r\n            sintheta = Math.sin(rad);\r\n\r\n        var a = costheta,\r\n            b = sintheta,\r\n            c = -sintheta,\r\n            d = costheta;\r\n\r\n        return $M([\r\n            [a, c, 0],\r\n            [b, d, 0],\r\n            [0, 0, 1]\r\n        ]);\r\n    },\r\n\r\n    skew: function (dx, dy) {\r\n        var radX = parseFloat(dx) * (Math.PI / 180),\r\n            radY = parseFloat(dy) * (Math.PI / 180),\r\n            c = Math.tan(radX),\r\n            b = Math.tan(radY);\r\n\r\n\r\n        return $M([\r\n            [1, c, 0],\r\n            [b, 1, 0],\r\n            [0, 0, 1]\r\n        ]);\r\n    },\r\n\r\n    translate: function (x, y) {\r\n        var e = x || 0,\r\n            f = y || 0;\r\n\r\n        return $M([\r\n            [1, 0, e],\r\n            [0, 1, f],\r\n            [0, 0, 1]\r\n        ]);\r\n    },\r\n\r\n    scale: function (x, y) {\r\n        var a = x || 0,\r\n            d = y || 0;\r\n\r\n        return $M([\r\n            [a, 0, 0],\r\n            [0, d, 0],\r\n            [0, 0, 1]\r\n        ]);\r\n    },\r\n\r\n    toString: function (m) {\r\n        var s = 'matrix(',\r\n            r, c;\r\n\r\n        for (c = 1; c <= 3; c++) {\r\n            for (r = 1; r <= 2; r++)\r\n                s += m.e(r, c) + ', ';\r\n        }\r\n\r\n        s = s.substr(0, s.length - 2) + ')';\r\n\r\n        return s;\r\n    },\r\n\r\n    fromString: function (s) {\r\n        var t = /^matrix\\((\\S*), (\\S*), (\\S*), (\\S*), (\\S*), (\\S*)\\)$/g.exec(s),\r\n            a = parseFloat(!t ? 1 : t[1]),\r\n            b = parseFloat(!t ? 0 : t[2]),\r\n            c = parseFloat(!t ? 0 : t[3]),\r\n            d = parseFloat(!t ? 1 : t[4]),\r\n            e = parseFloat(!t ? 0 : t[5]),\r\n            f = parseFloat(!t ? 0 : t[6]);\r\n\r\n        return $M([\r\n            [a, c, e],\r\n            [b, d, f],\r\n            [0, 0, 1]\r\n        ]);\r\n    }\r\n};\r\n\r\n/**\r\n * Awesome Panel library\r\n *\r\n * Usage example:\r\n *\r\n * HTML - Insert unique plugin-wide {ID}\r\n * --------\r\n * <div class=\"a-slide-panel\" id=\"a-slide-panel-{ID}\">\r\n *    <div id=\"a-slide-panel-spinner\" class=\"a-spinner at-transition\"></div>\r\n * </div>\r\n *\r\n * CSS - Insert correct path to spinner image\r\n * --------\r\n * .a-slide-panel .a-spinner{\r\n *    background: url(\"/wp-content/plugins/{PLUGIN}/admin/img/loading.svg\") center center transparent no-repeat;\r\n * }\r\n *\r\n * JS - params Object\r\n * -------- *\r\n * id               string      |   panel unique ID\r\n * item_id          int         |   model item ID\r\n * model_name       string      |   model name (for example custom post type name)\r\n * html             string      |   DOM element #id to insert into panel\r\n * direction        string      |   [right|left|top|bottom] direction for slide\r\n * width            string      |   panel width in px / %\r\n * height           string      |   panel height in px / %\r\n * load_model       callback    |   function to load some data from DB into JS (Backbone etc) model. Must return Deferred object\r\n * callback_open    callback    |   called after panel initialized\r\n * callback_close   callback    |   called after panel closed\r\n *\r\n */\r\n\r\nvar AwesomePanel = function (options) {\r\n    'use strict';\r\n\r\n    var $ = jQuery; // enable jQuery\r\n    var self = this;\r\n\r\n    // Data\r\n    self.options = options;\r\n    self.id = options.id;\r\n    self.item_id = options.item_id; // model item ID passed from page\r\n    self.model_name = options.model_name; // model name passed from page\r\n    self.content_url = options.content_url; // model name passed from page\r\n    self.overlayvisible = true; // store click on overlay to close panel\r\n\r\n    // todo: do this calculations and caching once\r\n    var $body = $('body');\r\n    var $win = $(window);\r\n    var $html = $('html');\r\n    var isIE = /msie|trident.*rv\\:11\\./.test(navigator.userAgent.toLowerCase());\r\n    var isFF = /firefox/.test(navigator.userAgent.toLowerCase());\r\n    var transProp = getVendorPropertyName('transform');\r\n    var translation = _T.translate((self.direction === 'left' ? parseInt(self.width) : -parseInt(self.width)), 0);\r\n    var defTranslationStr = _T.toString(_T.translate(0, 0));\r\n    var htmlMargins = {\r\n        top: parseInt($html.css('marginTop')),\r\n        bottom: parseInt($html.css('marginBottom'))\r\n    }\r\n\r\n    // View\r\n    self.panel = $('<div class=\"a-slide-panel\" id=\"a-slide-panel-' + self.id + '\"></div>'); // panel instance\r\n    self.overlay = $('<div></div>').addClass('a-slide-panel-overlay');\r\n    self.spinner = $('<div class=\"a-slide-panel-spinner a-spinner at-transition\"></div>');\r\n\r\n    self.parent = options.parent || 'body'; // panel parent element\r\n    self.position = self.parent == 'body' ? 'fixed' : 'absolute';\r\n\r\n\r\n    self.direction = options.direction || 'left';\r\n    self.animation = options.animation || 'over';\r\n    self.width = options.width || '100%';\r\n    self.height = options.height || '100%';\r\n\r\n    // Show spinner animation\r\n    self.animation_start = function () {\r\n        // show spinner animation\r\n        self.spinner.addClass('fade-animation-in');\r\n    };\r\n\r\n    // Hide spinner animation\r\n    self.animation_end = function () {\r\n        self.spinner.removeClass('fade-animation-in'); // hide spinner animation\r\n    };\r\n\r\n    // Hide panel content\r\n    self.hide_content = function () {\r\n        self.panel.find('.a-slide-panel-content-wrapper').removeClass('fade-animation-in');\r\n    };\r\n\r\n    // Show panel content\r\n    self.show_content = function () {\r\n        self.panel.find('.a-slide-panel-content-wrapper').addClass('fade-animation-in');\r\n    };\r\n\r\n    // Open Panel\r\n    self.open = function () {\r\n        var $parent = $(self.parent);\r\n\r\n        window[self.id + '_panel_openinig'] = true;\r\n        window[self.id + '_overlayvisible'] = true;\r\n\r\n        $parent.append(self.overlay);\r\n        $parent.addClass('a-slide-panel-parent');\r\n\r\n        //create panel\r\n        window[self.id + '_panel_object'] = self;\r\n        window[self.id + '_panel'] = self.panel;\r\n        $parent.append(self.panel);\r\n\r\n        self.panel.css('width', self.width);\r\n        self.panel.css('height', self.height);\r\n\r\n        self.panel.addClass('a-slide-to-' + self.direction);\r\n        setTimeout(function () {\r\n            if (self.animation == 'push') {\r\n                var translate = self.direction == 'left' ? '-' + self.width : self.width;\r\n                var style = '<style type=\"text/css\" id=\"a-slide-panel-styles\">\\\r\n                            .a-slide-panel-push > *{\\\r\n                            -webkit-transform:translateX(' + translate + ');\\\r\n                            -moz-transform:translateX(' + translate + ');\\\r\n                            -ms-transform:translateX(' + translate + ');\\\r\n                            -o-transform:translateX(' + translate + ');\\\r\n                            transform:translateX(' + translate + ');\\\r\n                            }\\\r\n                            </style>';\r\n                $parent.append(style);\r\n            }\r\n\r\n            $parent.addClass('a-slide-panel-' + self.animation);\r\n            self.panel.addClass('a-slide-panel-active');\r\n            $(self.overlay).addClass('open');\r\n            $(self.overlay).css('position', self.position);\r\n\r\n            if (self.animation == 'push') {\r\n                var scroll_top = $win.scrollTop();\r\n                var scroll_left = $win.scrollLeft();\r\n                if (self.direction == 'left' || self.direction == 'right') {\r\n                    scroll_left = +scroll_left;\r\n                }\r\n                $parent.find('*').each(function (i, el) {\r\n                    if (!$(el).hasClass('a-slide-panel') &&\r\n                        !$(el).hasClass('a-slide-panel-overlay') &&\r\n                        !$(el).parent().is($(self.parent)) &&\r\n                        $(el).closest('.a-slide-panel').length === 0) {\r\n                        shiftFixed(i, el, scroll_top, scroll_left);\r\n                    }\r\n                });\r\n            }\r\n\r\n            setTimeout(function () {\r\n                window[self.id + '_panel_openinig'] = false;\r\n\r\n                $parent.addClass('at-overflow-hidden');\r\n                if ($(window).height() < $(document).height()) {\r\n                    $parent.addClass('at-overflow-hidden-' + self.direction);\r\n                }\r\n            }, 400);\r\n        }, 14); // dirty hack to wait css class assign\r\n    };\r\n\r\n    // Close Panel\r\n    self.close = function () {\r\n        $('.close-panel', $(self.parent)).off('click');\r\n        if (self.animation == 'push') {\r\n            var $fixed = $('.at_fixed_inner_el');\r\n            $fixed.each(function (i, el) {\r\n                unshiftFixed(i, el);\r\n            });\r\n        }\r\n        if (LA_Modernizr.cssanimations) {\r\n            $(self.overlay).remove(); // if IE => just remove overlay\r\n            window[self.id + '_overlayvisible'] = false;\r\n        } else { // else remove after animation ends\r\n            $(self.parent).find(self.overlay)\r\n                .one('webkitAnimationEnd oanimationend msAnimationEnd animationend', function () {\r\n                    $(self.overlay).remove();\r\n                }).addClass('remove-overlay');\r\n        }\r\n\r\n        self.panel.removeClass('a-slide-panel-active');\r\n        $(self.parent).removeClass('a-slide-panel-' + self.animation);\r\n\r\n        $(self.parent).removeClass('at-overflow-hidden');\r\n        $(self.parent).removeClass('at-overflow-hidden-' + self.direction);\r\n\r\n        if (typeof self.options.callback_close === 'function') {\r\n            self.options.callback_close(); // close panel callback\r\n        }\r\n\r\n        setTimeout(function () {\r\n            if (self.animation == 'push') {\r\n                $('#a-slide-panel-styles', self.parent).remove();\r\n            }\r\n            $(self.parent).removeClass('a-slide-panel-parent');\r\n            if ($(self.html_pool)) {\r\n                $(self.html_pool).append($(self.html)); // return panel content back to hidden div (aka pool)\r\n            }\r\n            self.hide_content();\r\n            $(self.panel).remove();\r\n            delete window[self.id + '_panel'];\r\n        }, 500);\r\n    };\r\n\r\n    // Append HTML\r\n    self.appendHTML = function () {\r\n        self.html = self.html || options.html; // HTML to append\r\n        self.html_pool = $(self.html).parent();\r\n        var $html = $(self.html) || self.html; // get panel content as jQuery object\r\n        self.panel.append($html); // append panel content\r\n\r\n        self.panel.append(self.spinner); // append spinner\r\n        self.animation_start(); // show loading animation\r\n        self.hide_content(); // hide it temporary (until model is loaded)\r\n    };\r\n\r\n    self.showHTML = function () {\r\n        self.animation_end(); // hide loading animation\r\n        self.show_content(); // show panel content\r\n        if (typeof self.options.callback_open === 'function') {\r\n            self.options.callback_open();\r\n        }\r\n    }\r\n\r\n    // Bind Actions to buttons\r\n    self.bindActions = function () {\r\n        var $parent = $(self.parent);\r\n\r\n        $(self.overlay, $parent).on('click', function () {\r\n            if (window[self.id + '_overlayvisible']) {\r\n                self.close();\r\n            }\r\n        });\r\n        $('.close-panel', $parent).on('click', function () {\r\n            if (window[self.id + '_overlayvisible']) {\r\n                self.close();\r\n            }\r\n        });\r\n    };\r\n\r\n    function shiftFixed(i, el, scrollTop, scrollLeft, bh, wh) {\r\n        var $t = $(el);\r\n        var $offsetP;\r\n        var t;\r\n        var nu;\r\n        var offset;\r\n        var oLeft;\r\n        var oTop;\r\n        var coords;\r\n        var newCSS;\r\n        var _b;\r\n        var transf;\r\n\r\n        if ($t.css('position') === 'fixed') {\r\n\r\n            $t.addClass('at_fixed_inner_el')\r\n\r\n            if (isIE) {\r\n\r\n                t = $t.css(transProp);\r\n\r\n                if (t !== 'none') {\r\n                    $t.attr('ncf-old-matrix', t);\r\n                    t = _T.fromString(t);\r\n                    nu = t.x(translation); // add translation\r\n                    $t.css(transProp, _T.toString(nu)).attr('ncf-transformed', 1);\r\n                } else {\r\n                    $t.css(transProp, _T.toString(translation)/*, transition: trans + 'transform 0.5s cubic-bezier(0.645, 0.045, 0.355, 1)', transitionDelay: '90ms'*/).attr('ncf-transformed', 1);\r\n                }\r\n\r\n            } else {\r\n\r\n                $offsetP = $t;\r\n\r\n                while ($offsetP = $offsetP.parent()) {\r\n                    transf = $offsetP.css(transProp);\r\n                    if ((transf && transf !== 'none') || $offsetP.is('body')) {\r\n                        break\r\n                    }\r\n                }\r\n\r\n                offset = $offsetP.offset();\r\n                oLeft = offset.left;\r\n                oTop = offset.top;\r\n\r\n                if (isFF && $t.is(':visible')) {\r\n                    $t.hide().attr('ncf-ff-hidden', 1);\r\n                }\r\n\r\n                coords = {\r\n                    left: $t.css('left'),\r\n                    right: $t.css('right'),\r\n                    top: $t.css('top'),\r\n                    bottom: $t.css('bottom'),\r\n                    transition: window.getComputedStyle($t.get(0)).transition\r\n                }\r\n\r\n                if (isFF && $t.attr('ncf-ff-hidden')) $t.show();\r\n\r\n                newCSS = {};\r\n                _b = parseInt(coords.bottom);\r\n                _b = isNaN(_b) ? 0 : _b;\r\n\r\n                if (coords.left !== 'auto') {\r\n                    coords.toChangeHor = 'left';\r\n                    newCSS[coords.toChangeHor] = '-=' + (oLeft - scrollLeft);\r\n                } else if (coords.right !== 'auto') {\r\n                    coords.toChangeHor = 'right';\r\n                    newCSS[coords.toChangeHor] = '-=' + (oLeft - scrollLeft);\r\n                } else {\r\n                    coords.toChangeHor = 'left'\r\n                }\r\n\r\n                if (coords.top !== 'auto') {\r\n                    coords.toChangeVert = 'top';\r\n                    newCSS[coords.toChangeVert] = oTop - scrollTop > 0 ? parseInt(coords.top) - (oTop - scrollTop) : parseInt(coords.top) + (scrollTop - oTop);\r\n                } else if (coords.bottom !== 'auto') {\r\n                    coords.toChangeVert = 'bottom';\r\n                    newCSS[coords.toChangeVert] = $body.height() + htmlMargins.top + htmlMargins.bottom + _b - $win.height() - scrollTop + 'px';\r\n                } else {\r\n                    coords.toChangeVert = 'top';\r\n                    newCSS[coords.toChangeVert] = scrollTop;\r\n                }\r\n\r\n                newCSS['transitionProperty'] = 'none';\r\n                $t.css(newCSS).attr('ncf-old-pos', JSON.stringify(coords))\r\n                $t.css('tra')\r\n            }\r\n        }\r\n    }\r\n\r\n    function unshiftFixed(i, el) {\r\n        var $el = $(el);\r\n        var coords;\r\n        var newCss;\r\n        if (isIE) {\r\n            setTimeout(function () {\r\n                $el.removeClass('at_fixed_inner_el');\r\n            }, 500);\r\n            if ($el.attr('ncf-old-matrix')) {\r\n                $el.css(transProp, $el.attr('ncf-old-matrix')).attr('ncf-old-matrix', '');\r\n            } else {\r\n                $el.css(transProp, defTranslationStr).attr('ncf-transformed', '');\r\n            }\r\n        } else {\r\n            setTimeout(function () {\r\n                $el.removeClass('at_fixed_inner_el');\r\n                coords = JSON.parse($el.attr('ncf-old-pos'));\r\n                newCss = {};\r\n                if (coords) {\r\n                    newCss[coords.toChangeHor] = coords[coords.toChangeHor];\r\n                    newCss[coords.toChangeVert] = coords[coords.toChangeVert];\r\n                    //newCss['transitionProperty'] = '';\r\n                    if (coords.toChangeVert === 'bottom') newCss['top'] = '';\r\n                    $el.css(newCss);\r\n                    $el.attr('ncf-old-pos', '');\r\n                } else {\r\n                    $el.css({left: '', top: '', bottom: '', right: '', 'transitionProperty': ''})\r\n                }\r\n            }, 500);\r\n            setTimeout(function () {\r\n                $el.css('transition', coords.transition);\r\n            }, 700);\r\n        }\r\n    }\r\n\r\n    function getVendorPropertyName(prop) {\r\n\r\n        var prefixes = ['Moz', 'Webkit', 'O', 'ms'],\r\n            vendorProp, i,\r\n            div = document.createElement('div'),\r\n            prop_ = prop.charAt(0).toUpperCase() + prop.substr(1);\r\n\r\n        if (prop in div.style) {\r\n            return prop;\r\n        }\r\n\r\n        for (i = 0; i < prefixes.length; ++i) {\r\n\r\n            vendorProp = prefixes[i] + prop_;\r\n\r\n            if (vendorProp in div.style) {\r\n                return vendorProp;\r\n            }\r\n\r\n        }\r\n\r\n        // Avoid memory leak in IE.\r\n        this.div = null;\r\n    };\r\n\r\n\r\n    // Init Panel\r\n    self.init = function () {\r\n        self.open(); // create panel HTML\r\n        self.bindActions(); // bind close button & overlay clicks\r\n        // load backbone model if arg passed\r\n        if (typeof self.options.load_model === 'function') {\r\n            self.appendHTML();\r\n\r\n            self.options.load_model(self.item_id, self.model_name).then(function () {\r\n                self.showHTML();\r\n            });\r\n            return;\r\n        }\r\n        if (typeof self.options.load_content === 'object') {\r\n            self.panel.append(self.spinner); // append spinner\r\n            self.animation_start(); // show loading animation\r\n\r\n            self.options.load_content.then(function (data) {\r\n                self.html = data;\r\n                self.appendHTML();\r\n                self.showHTML();\r\n            });\r\n            return;\r\n        }\r\n        self.appendHTML(); // append panel to DOM\r\n        self.showHTML();\r\n    };\r\n};","/**\r\n * Ajax functions, used in Panel\r\n */\r\n\r\n\r\nvar AwesomeAjax = function(prefix){\r\n    'use strict';\r\n\r\n    var $ = jQuery; // enable jQuery\r\n    var self = this;\r\n    var prefix = prefix + '_';\r\n    self.result = {};\r\n\r\n\r\n\r\n    // Load model data from WP\r\n    self.load_model = function(model_name, item_id, callback_success, callback_error){\r\n        return self.ajax({\r\n            action: prefix + 'get_' + model_name,\r\n            data: {\r\n                'id': item_id\r\n            },\r\n            success_handler: callback_success,\r\n            error_handler: callback_error\r\n        });\r\n    };\r\n\r\n    self.publish_model = function (id, callback_success, callback_error) {\r\n        return self.ajax({\r\n            action: prefix + 'publish_model',\r\n            data: {\r\n                'id': id\r\n            },\r\n            success_handler: callback_success,\r\n            error_handler: callback_error\r\n        });\r\n    }\r\n\r\n    // delete model by ID and model name\r\n    self.delete_model = function(id, model_name){\r\n        return self.ajax({\r\n            action: prefix + 'delete_model',\r\n            data: {\r\n                'id': id,\r\n                'model_name': model_name\r\n            },\r\n            success_handler: function (result) {\r\n                return result;\r\n            }\r\n        });\r\n    };\r\n\r\n    // WP AJAX wrapper\r\n    self.ajax = function (args) {\r\n        return $.ajax({\r\n            url: window[prefix + 'localize']['ajaxurl'],\r\n            type: 'post',\r\n            data: {\r\n                action: args.action,\r\n                security: window[prefix + 'localize']['ajax_nonce'],\r\n                data: args.data || {}\r\n            },\r\n            success: function (data) {\r\n                var responseArray = wpAjax.parseAjaxResponse(data);\r\n                if(responseArray.errors){\r\n                    var errors =  responseArray.responses[0].errors;\r\n                    args.success_error_handler(errors)\r\n                }else{\r\n                    var result = JSON.parse(responseArray.responses[0].data);\r\n                    args.success_handler(result);\r\n                }\r\n            },\r\n            error: function (data) {\r\n                args.error_handler(data);\r\n            }\r\n        });\r\n    }\r\n};","/**\r\n * System functions\r\n */\r\nvar AwesomeUtil = {\r\n    // detect OS\r\n    detect_os: function () {\r\n        var os_name = \"Unknown OS\";\r\n        if (navigator.appVersion.indexOf(\"Win\") != -1) os_name = \"Windows\";\r\n        if (navigator.appVersion.indexOf(\"Mac\") != -1) os_name = \"MacOS\";\r\n        if (navigator.appVersion.indexOf(\"X11\") != -1) os_name = \"UNIX\";\r\n        if (navigator.appVersion.indexOf(\"Linux\") != -1) os_name = \"Linux\";\r\n        return os_name;\r\n    },\r\n\r\n    // convert array to object\r\n    toObject: function (arr) {\r\n        var rv = {};\r\n        for (var i = 0; i < arr.length; ++i) {\r\n            if (typeof arr[i] === 'object') {\r\n                rv[i] = AwesomeUtil.toObject(arr[i]);\r\n            } else {\r\n                rv[i] = arr[i];\r\n            }\r\n        }\r\n        return rv;\r\n    },\r\n\r\n    // helper function to find some value in array of objects\r\n    find_in_array_of_objects: function (array, key, value){\r\n        var result = false;\r\n        jQuery.each(array, function(index, item){\r\n            if(item.hasOwnProperty(key) && item[key] == value){\r\n                result = true;\r\n            }\r\n        });\r\n        return result;\r\n    },\r\n\r\n    // convert HEX color to RGB color\r\n    hex_to_rgb: function (hex){\r\n        hex = parseInt(hex, 16);\r\n        var r = hex >> 16;\r\n        var g = hex >> 8 & 0xFF;\r\n        var b = hex & 0xFF;\r\n        return [r,g,b];\r\n    },\r\n\r\n    // calculate size properly\r\n    calc_size: function (raw){\r\n        raw = ''+raw;\r\n        if(raw.endsWith('%') || raw.endsWith('px')){\r\n            return raw;\r\n        }\r\n        var result = raw.replace('/[^0-9]/', '');\r\n        return result + 'px';\r\n    },\r\n\r\n    // clean number from non-digit characters\r\n    clean_number: function (raw) {\r\n        return parseInt(raw.replace(/\\D+/g, ''));\r\n    },\r\n\r\n    get_keys: function (obj){\r\n        var result = {};\r\n        var i = 0;\r\n        _.each(obj, function (value, key, list) {\r\n            if(typeof value === 'object'){\r\n                result[i] = AwesomeUtil.get_keys(value);\r\n            }else{\r\n                result[i] = key;\r\n            }\r\n            i++;\r\n        });\r\n        return result;\r\n    },\r\n\r\n    find_key_by_value: function (needle, haystack) {\r\n        var result;\r\n        _.find(haystack, function(value, key){\r\n            if(typeof value === 'object'){\r\n                result = AwesomeUtil.find_key_by_value(needle, value);\r\n            }else{\r\n                if (value === needle) {\r\n                    result = key;\r\n                    return true;\r\n                }else{\r\n                    return false;\r\n                }\r\n            }\r\n        });\r\n        return result;\r\n    },\r\n\r\n    find_index_by_value: function (needle, haystack) {\r\n        var keys = AwesomeUtil.get_keys(haystack);\r\n        var key = AwesomeUtil.find_key_by_value(needle, haystack);\r\n        var result = AwesomeUtil.find_key_by_value(key, keys);\r\n\r\n        return result;\r\n    },\r\n\r\n    removeClass: function (el, start_with) {\r\n        jQuery(el).removeClass (function (index, css) {\r\n            var regex = new RegExp('(^|\\\\s)' + start_with + '\\\\S+', 'g');\r\n            return (css.match (regex) || []).join(' ');\r\n        });\r\n    }\r\n};\r\n\r\n// smart replace for templates\r\nString.prototype.replace_all = function(find, replace){\r\n    return this.replace(new RegExp(find, 'g'), replace);\r\n};\r\n\r\n// capitalize\r\nString.prototype.capitalize = function () {\r\n    return this.charAt(0).toUpperCase() + this.slice(1);\r\n};\r\n\r\n// check string ends with special characters\r\nString.prototype.endsWith = function(end){\r\n    return this.indexOf(end, this.length - end.length) !== -1;\r\n};\r\n\r\n// Array last item\r\nif (!Array.prototype.last){\r\n    Array.prototype.last = function(){\r\n        return this[this.length - 1];\r\n    };\r\n};\r\n\r\nvar $ = jQuery;\r\n// check if element visible on screen\r\n$.fn.isVisible = function (parent) {\r\n    var $parent = parent !== 'undefined' ? $(parent) : $(window);\r\n    var windowScrollTopView = $parent.scrollTop();\r\n    var elemTop = $(this).height();\r\n    return (\r\n        elemTop >= windowScrollTopView\r\n    );\r\n};","var AET = window.AET || (function ($) {\r\n        'use strict';\r\n\r\n        var a_ajax = new AwesomeAjax('aet');\r\n\r\n        var slider_fallbacks = function (count) {\r\n            return [\r\n                {\r\n                    breakpoint: 1200,\r\n                    settings: {\r\n                        slidesToShow: count,\r\n                        slidesToScroll: count\r\n                    }\r\n                },\r\n                {\r\n                    breakpoint: 1100,\r\n                    settings: {\r\n                        slidesToShow: count < 8 ? count : 8,\r\n                        slidesToScroll: count\r\n                    }\r\n                },\r\n                {\r\n                    breakpoint: 1024,\r\n                    settings: {\r\n                        slidesToShow: count < 6 ? count : 6,\r\n                        slidesToScroll: count\r\n                    }\r\n                },\r\n                {\r\n                    breakpoint: 768,\r\n                    settings: {\r\n                        slidesToShow: count < 5 ? count : 5,\r\n                        slidesToScroll: count\r\n                    }\r\n                },\r\n                {\r\n                    breakpoint: 667,\r\n                    settings: {\r\n                        slidesToShow: count < 4 ? count : 4,\r\n                        slidesToScroll: count\r\n                    }\r\n                },\r\n                {\r\n                    breakpoint: 568,\r\n                    settings: {\r\n                        slidesToShow: count < 3 ? count : 3,\r\n                        slidesToScroll: count\r\n                    }\r\n                },\r\n                {\r\n                    breakpoint: 400,\r\n                    settings: {\r\n                        slidesToShow: count < 2 ? count : 2,\r\n                        slidesToScroll: 1\r\n                    }\r\n                },\r\n                {\r\n                    breakpoint: 1,\r\n                    settings: {\r\n                        slidesToShow: 1,\r\n                        slidesToScroll: 1\r\n                    }\r\n                }\r\n            ];\r\n        };\r\n\r\n        function call_slider(selector, options) {\r\n            return jQuery(selector).slick(options);\r\n        }\r\n\r\n        function enable_slider(id, options) {\r\n            id = parseInt(id);\r\n            var count = parseInt(options.count),\r\n                autoplay = options.autoplay == 1 ? true : false || false,\r\n                speed = parseInt(options.speed),\r\n                adaptive = options.adaptive == 1 ? true : false || false,\r\n                selector = '#aet-layout-' + id + ' > .slider-enabled',\r\n                options = {\r\n                    accessibility: false,\r\n                    speed: 1000,\r\n                    draggable: true,\r\n                    infinite: true,\r\n                    slidesToShow: count,\r\n                    mobileFirst: true,\r\n                    slidesToScroll: count,\r\n                    autoplay: autoplay,\r\n                    autoplaySpeed: speed,\r\n                    adaptiveHeight: adaptive,\r\n                    prevArrow: '<div type=\"button\" title=\"Previous\" class=\"aet-button slick-prev\"><svg viewBox=\"0 0 26 26\"><use xlink:href=\"#icon-arrow-left\"></use></svg></div>',\r\n                    nextArrow: '<div type=\"button\" title=\"Next\" class=\"aet-button slick-next\"><svg viewBox=\"0 0 26 26\"><use xlink:href=\"#icon-arrow-right\"></use></svg></div>',\r\n                    responsive: slider_fallbacks(count)\r\n                };\r\n            window['aet_slider_' + id] = call_slider(selector, options);\r\n        }\r\n\r\n        function enable_slider_photo(id, options) {\r\n            id = parseInt(id);\r\n            var count = parseInt(options.count),\r\n                autoplay = options.autoplay == 1 ? true : false || false,\r\n                speed = parseInt(options.speed),\r\n                adaptive = options.adaptive == 1 ? true : false || false,\r\n                selector = '#aet-layout-' + id + ' .testimonials-photo',\r\n                options = {\r\n                    accessibility: false,\r\n                    speed: 1000,\r\n                    draggable: true,\r\n                    slidesToShow: count,\r\n                    mobileFirst: true,\r\n                    slidesToScroll: count,\r\n                    variableWidth: true,\r\n                    infinite: true,\r\n                    autoplay: autoplay,\r\n                    autoplaySpeed: speed,\r\n                    adaptiveHeight: adaptive,\r\n                    lazyLoad: 'progressive',\r\n                    prevArrow: '<div type=\"button\" title=\"Previous\" class=\"aet-button slick-prev\"><svg viewBox=\"0 0 26 26\"><use xlink:href=\"#icon-arrow-left\"></use></svg></div>',\r\n                    nextArrow: '<div type=\"button\" title=\"Next\" class=\"aet-button slick-next\"><svg viewBox=\"0 0 26 26\"><use xlink:href=\"#icon-arrow-right\"></use></svg></div>',\r\n                    responsive: slider_fallbacks(count)\r\n                };\r\n            window['aet_slider_photo_' + id] = call_slider(selector, options);\r\n            $(selector).on('afterChange', function (event, slick, direction) {\r\n                var index = slick.currentSlide;\r\n                var item = $('#aet-layout-' + id + ' .testimonials-photo li[data-slick-index=\"' + index + '\"]');\r\n                select_testimonial(item);\r\n                setTimeout(function () {\r\n                    calc_short_text_nubbin_position(id);\r\n                }, 1);\r\n\r\n            });\r\n        }\r\n\r\n        function init_filter(id) {\r\n            id = parseInt(id);\r\n            var aet_filter = new AwesomeFilter({\r\n                container: $('[group-id=\"' + id + '\"].filter-container'),\r\n                controls: $('[group-id=\"' + id + '\"].filter-controls'),\r\n                item_selector: '.isotope-item',\r\n                control_selector: '.aet-button',\r\n                control_active: 'aet-button-active',\r\n                attribut: 'group-id',\r\n                id: id\r\n            });\r\n            aet_filter.init();\r\n        }\r\n\r\n        function init_search(id, slider) {\r\n            $('#aet-layout-' + id + ' [data-action=\"testimonials-search\"]').on('input', function () {\r\n                var query = $(this).val().trim().toLowerCase();\r\n\r\n                if(slider){\r\n                    if(window['aet_slider_' + id] !== undefined){\r\n                        window['aet_slider_' + id].slick('slickUnfilter');\r\n                        window['aet_slider_' + id].slick('slickFilter', function () {\r\n                            var title = $(this).data(\"title\").toLowerCase() || \"\";\r\n                            if (title.indexOf(query) !== -1) {\r\n                                return true;\r\n                            }\r\n                            return false;\r\n                        });\r\n                    }\r\n                    if(window['aet_slider_photo_' + id] !== undefined){\r\n                        window['aet_slider_photo_' + id].slick('slickUnfilter');\r\n                        window['aet_slider_photo_' + id].slick('slickFilter', function () {\r\n                            var title = $(this).data(\"title\").toLowerCase() || \"\";\r\n                            if (title.indexOf(query) !== -1) {\r\n                                return true;\r\n                            }\r\n                            return false;\r\n                        });\r\n                    }\r\n\r\n                }else{\r\n                    var $group = $(this).parents('.aet-layout').get(0);\r\n                    var testimonials = $('ul[group-id].testimonials-box > li', $group);\r\n                    testimonials.hide();\r\n                    $.each(testimonials, function (index, item) {\r\n                        var title = $(item).data(\"title\").toLowerCase() || \"\";\r\n                        if (title.indexOf(query) !== -1) {\r\n                            $(item).show();\r\n                        }\r\n                    });\r\n                }\r\n            });\r\n\r\n            $('#aet-layout-' + id + ' [data-action=\"clear-search\"]').on('click', function () {\r\n                $('#aet-layout-' + id + ' [data-action=\"testimonials-search\"]').val('').trigger('input');\r\n            });\r\n        }\r\n\r\n        function bind_profiles(id) {\r\n            id = parseInt(id);\r\n            $('[group-id=\"' + id + '\"] [aet-profile]').on('click', function () {\r\n                var url = $(this).attr('data-profile');\r\n                window.open(url, '_self');\r\n            });\r\n        }\r\n\r\n        function init_animations(id) {\r\n            id = parseInt(id);\r\n            var $container = $('#aet-layout-' + id);\r\n            $container.addClass('aet-animations-enabled');\r\n\r\n            AwesomeViewport.add({\r\n                element: $container[0],\r\n                threshold: '30%',\r\n                enter: function () {\r\n                    $(this).addClass('aet-transition__in');\r\n                }\r\n            });\r\n\r\n            $container.find('li').each(function (i, el) {\r\n                var $t = $(this);\r\n                var name = get_name($t.find('.testimonial_name .group-field-content').text());\r\n                if (!name) return;\r\n                $(this).data('name', name).find('.photo-container').attr('data-name', 'Meet &#xa; ' + name).parent().append('<span class=\"aet-img-caption\"><strong>Meet</strong><br>' + name + '</span>');\r\n            });\r\n        }\r\n\r\n        function get_name(str) {\r\n            var result;\r\n            // get first word, assuming it's first name\r\n            var index = str.indexOf(\" \");\r\n            result = index === -1 ? str : str.substring(0, index);\r\n\r\n            return result;\r\n        }\r\n\r\n\r\n        function init_panel(id, animation) {\r\n            id = parseInt(id);\r\n            $('[group-id=\"' + id + '\"].testimonials-box li[testimonial-id]').on('click', function (e) {\r\n                // if clicked on single showcase photo or on outer link\r\n                if ($(this).attr('data-showcase-block') == 'photo' || e.target.tagName == 'A' || $(e.target).parent().get(0).tagName == 'A') {\r\n                    return;\r\n                }\r\n                var group_id = $(this).parents('.testimonials-box').attr('group-id');\r\n                var testimonial_id = $(this).attr('testimonial-id');\r\n                var prefix = group_id + '_' + testimonial_id;\r\n\r\n                if (typeof window['aet_' + prefix + '_panel'] != 'object' && !window['la_panel_opened']) {\r\n                    var aet_panel = new AwesomePanel({\r\n                        id: 'aet_' + prefix,\r\n                        direction: 'left',\r\n                        width: '500px',\r\n                        height: '100%',\r\n                        animation: animation,\r\n                        html: '#aet_testimonial_panel_' + prefix\r\n                    });\r\n                    aet_panel.init();\r\n                }\r\n            });\r\n        }\r\n\r\n        function init_summary_panel(id, animation) {\r\n            $('#aet-summary-' + id + ' .submit').on('click', function (e) {\r\n                var $parent = $(this).parents('.aet-summary'),\r\n                    id = $parent.attr('id').replace_all('aet-summary-', '');\r\n                // if clicked on single showcase photo or on outer link\r\n                if (typeof window['aet_summary' + id + '_panel'] != 'object' && !window['la_panel_opened']) {\r\n                    var aet_panel = new AwesomePanel({\r\n                        id: 'aet_summary_' + id,\r\n                        direction: 'left',\r\n                        width: '500px',\r\n                        height: '100%',\r\n                        animation: animation,\r\n                        html: $('.aet-testimonial-panel', $parent)\r\n                    });\r\n                    aet_panel.init();\r\n                }\r\n            });\r\n        }\r\n\r\n        function select_testimonial(item) {\r\n            var parent = $(item).parents('.aet-layout').eq(0);\r\n            var items = $(item).siblings();\r\n            var blocks = ['name', 'position', 'short_text', 'divider', 'source', 'rating', 'social'];\r\n            var testimonial = item.attr('testimonial-id');\r\n            items.removeClass('active');\r\n            item.addClass('active');\r\n            $.each(blocks, function (index, block) {\r\n                $('.testimonials-' + block + ' > li', parent).hide().removeClass('active');\r\n                $('.testimonials-' + block + ' > li[testimonial-id=\"' + testimonial + '\"]', parent).show().addClass('active');\r\n            });\r\n        }\r\n\r\n        function init_showcase(id) {\r\n            id = parseInt(id);\r\n            var parent = $('#aet-layout-' + id);\r\n            var items = $('.testimonials-photo li', parent);\r\n            $(items).on('click', function (e) {\r\n                var item = $(this);\r\n                select_testimonial(item);\r\n                calc_short_text_nubbin_position(id);\r\n            });\r\n        }\r\n\r\n        function calc_rating_icons_size(id) {\r\n            var group = $('#aet-layout-' + id);\r\n            $('.testimonial_rating .group-field-content', group).css('max-width', 'auto');\r\n\r\n            var on_resize_handler = function () {\r\n                var testimonials = $('li .testimonial_rating', group),\r\n                    fill_max_width = $('li .testimonial_rating:visible', group).outerWidth();\r\n                fill_max_width = Math.round(fill_max_width / 10) * 10;\r\n                $('.group-field-content', testimonials).css('max-width', fill_max_width);\r\n                var icon_max_width = $('li .rating-background:visible > *', group).outerWidth();\r\n\r\n                $(testimonials).each(function (index, testimonial) {\r\n                    var rating = parseInt($(testimonial).attr('data-rating'));\r\n                    $('.rating-fill', testimonial).css('max-width', fill_max_width * rating / 100);\r\n                    $('.rating-background > *', testimonial).each(function (index, item) {\r\n                        $(item).css('max-height', icon_max_width);\r\n                    });\r\n                    $('.rating-fill > *', testimonial).each(function (index, item) {\r\n                        $(item).css('max-width', icon_max_width);\r\n                        $(item).css('max-height', icon_max_width);\r\n                    });\r\n                });\r\n            };\r\n            on_resize_handler();\r\n            $(window).resize(function () {\r\n                on_resize_handler();\r\n            });\r\n        }\r\n\r\n        function calc_social_icons_size(id) {\r\n            var group = $('#aet-layout-' + id);\r\n            $('.testimonial_social .group-field-content', group).css('max-width', 'auto');\r\n\r\n            var on_resize_handler = function () {\r\n                var testimonials = $('li .testimonial_social', group) || $('.testimonials-social > li', group),\r\n                    container = $('.testimonial_social', group),\r\n                    container_showcase = $('.testimonials-social', group),\r\n                    fill_max_width = container.outerWidth() === 0 ? container_showcase.outerWidth() : container.outerWidth(),\r\n                    icon_max_width,\r\n                    count = 0;\r\n                fill_max_width = Math.round(fill_max_width / 10) * 10;\r\n\r\n                $('.group-field-content', $(testimonials)).css('max-width', fill_max_width);\r\n\r\n                $(testimonials).each(function (index, item) {\r\n                    var icons = $('.group-field-content > a', item);\r\n                    count = icons.length > count ? icons.length : count;\r\n                });\r\n\r\n                icon_max_width = fill_max_width / count;\r\n                var origin_size = $(testimonials).css('font-size');\r\n\r\n                if(origin_size && +AwesomeUtil.clean_number(origin_size) > icon_max_width){\r\n                    $(testimonials).css('font-size', icon_max_width);\r\n                    $(testimonials).each(function (index, item) {\r\n                        var icons = $('.group-field-content > a', item);\r\n                        $(icons).each(function (index, item) {\r\n                            $(item).css('font-size', icon_max_width);\r\n                        });\r\n                    });\r\n                }\r\n            };\r\n            on_resize_handler();\r\n            $(window).resize(function () {\r\n                on_resize_handler();\r\n            });\r\n        }\r\n\r\n        function calc_short_text_nubbin_position(id) {\r\n            var selector = '#aet-layout-' + id;\r\n            var group = $(selector);\r\n\r\n            var on_resize_handler = function () {\r\n                var active = $('.testimonials-photo .slick-track li.active:not(.slick-cloned), .testimonials-photo .slick-track li.active', group),\r\n                    short_texts = $('.testimonials-short_text', group),\r\n                    short_text = $('.active .testimonial_short_text', short_texts),\r\n                    photos = $('ul.testimonials-photo', group),\r\n                    content_box = $('.group-field-content', short_text),\r\n                    $nubbin = $('.nubbin', short_text),\r\n                    testimonial_id = active.attr('testimonial-id'),\r\n                    group_width = group.outerWidth(),\r\n                    group_offset = group.offset()['left'],\r\n                    active_width = active.outerWidth(),\r\n                    active_offset = active.offset()['left'],\r\n                    short_text_width = short_texts.outerWidth(),\r\n                    nubbin_offset = active_offset - group_offset + active_width / 2 - 17 - (group_width - short_text_width) / 2,\r\n                    blocks_offset = active_offset - group_offset + active_width / 2 - group_width / 2;\r\n                $nubbin.css('left', 'auto');\r\n                $('li[testimonial-id=\"' + testimonial_id + '\"] .nubbin', short_texts).css('left', nubbin_offset);\r\n                $('.level-2 ul.testimonials-box:not(.testimonials-photo)', group).css('left', blocks_offset);\r\n\r\n                if ($nubbin.offset().left < content_box.offset().left) {\r\n                    content_box.css('min-width', photos.outerWidth());\r\n                }\r\n            }\r\n            setTimeout(function () {\r\n                on_resize_handler();\r\n            }, 14);\r\n            $(selector + ':not(.aet-bound)').addClass('aet-bound').on('resize', function () {\r\n                on_resize_handler();\r\n            });\r\n        }\r\n\r\n        function calculate_slider_items_size(id, count) {\r\n            var selector = '.aet-layout-single_showcase[id=\"aet-layout-' + id + '\"]';\r\n            var group = $(selector);\r\n            var on_resize_handler = function () {\r\n                var slider = $('.slick-list', group),\r\n                    slider_width = slider.outerWidth(),\r\n                    items = $('.slick-slide', group),\r\n                    item_max_width = slider_width / count;\r\n                items.css('max-width', item_max_width);\r\n\r\n            }\r\n            on_resize_handler();\r\n            $(selector + ':not(.aet-slider-bound)').addClass('aet-slider-bound').on('resize', function () {\r\n                on_resize_handler();\r\n            });\r\n        }\r\n\r\n        function bind_rating_select(id) {\r\n            var form = $('#aet-form-' + id),\r\n                $parent,\r\n                $fill,\r\n                $input,\r\n                block_width,\r\n                rating;\r\n            $(document).on('mouseover', '#aet-form-' + id + ' .testimonial_rating .skill-value', function (e) {\r\n                var mouse_x = e.pageX - $(this).offset().left;\r\n                $parent = $(this).parents('.testimonial_rating');\r\n                $fill = $(this).find('.rating-fill');\r\n                $input = $parent.find('[name=\"rating\"]');\r\n                block_width = $(this).outerWidth();\r\n                rating = Math.ceil(mouse_x * 100 / block_width / 10) * 10;\r\n\r\n                $fill.css('width', rating + '%');\r\n            });\r\n\r\n            $(document).on('mouseout', '#aet-form-' + id + ' .testimonial_rating .skill-value', function (e) {\r\n                rating = $input.val();\r\n                $fill.css('width', rating + '%');\r\n            });\r\n\r\n            $(document).on('click', '#aet-form-' + id + ' .testimonial_rating .skill-value', function (e) {\r\n                $input.val(rating);\r\n                $fill.css('width', rating + '%');\r\n            });\r\n        }\r\n\r\n\r\n        // Submission form submit\r\n        function new_testimonial_from_form(id) {\r\n            $(document).off('click', '[data-aet-form-id=\"' + id + '\"] .aet-form-block-submit');\r\n            $(document).on('click', '[data-aet-form-id=\"' + id + '\"] .aet-form-block-submit', function (e) {\r\n                e.preventDefault();\r\n\r\n                var $shortcode = $(this).parents('[data-aet-form-id=\"' + id + '\"]'),\r\n                    $form = $('form', $shortcode),\r\n                    $wrapper = $('.aet-form-wrap', $shortcode),\r\n                    $button = $('.aet-form-block-submit', $shortcode),\r\n                    $success = $('.aet-form-success', $shortcode),\r\n                    $spinner = $('.a-spinner', $shortcode),\r\n                    $alert = $('.aet-form-alert', $shortcode),\r\n                    redirectURL = $shortcode.attr('data-redirect');\r\n\r\n                var data = $form.serialize(),\r\n                    hide_form = function () {\r\n                        $('input, textarea', $form).prop('disabled', true);\r\n                        $wrapper.removeClass('fade-animation-in');\r\n                        $spinner.addClass('fade-animation-in');\r\n                    },\r\n                    show_form = function () {\r\n                        $('input, textarea', $form).prop('disabled', false);\r\n                        $wrapper.addClass('fade-animation-in');\r\n                        $spinner.removeClass('fade-animation-in');\r\n                    },\r\n                    hide_button = function () {\r\n                        $button.removeClass('fade-animation-in');\r\n                    },\r\n                    show_button = function () {\r\n                        $button.addClass('fade-animation-in');\r\n                    },\r\n                    hide_success = function () {\r\n                        $success.removeClass('fade-animation-in');\r\n                    },\r\n                    show_success = function () {\r\n                        $spinner.removeClass('fade-animation-in');\r\n                        $success.addClass('fade-animation-in');\r\n                        $success.find('.progress').css('width', '100%');\r\n                    };\r\n\r\n\r\n                $alert.hide();\r\n                hide_form();\r\n                hide_button();\r\n\r\n                a_ajax.ajax({\r\n                    action: 'aet_new_testimonial_from_from',\r\n                    data: {\r\n                        data: data\r\n                    },\r\n                    success_handler: function (data) {\r\n                        show_success();\r\n                        if (typeof grecaptcha !== 'undefined') {\r\n                            var widget_id = window['g_recaptcha_' + id];\r\n                            grecaptcha.reset(widget_id);\r\n                        }\r\n                        setTimeout(function () {\r\n                            hide_success();\r\n                            show_button();\r\n                            show_form();\r\n                            if (redirectURL !== '') {\r\n                                window.location.href = redirectURL;\r\n                            }\r\n                        }, 3000);\r\n                    },\r\n                    success_error_handler: function (errors) {\r\n                        var html = '<div>';\r\n                        $.each(errors, function (index, value) {\r\n                            html += '<p>' + value.message + '</p>';\r\n                        });\r\n                        html += '</div>';\r\n                        $alert.show().html(html);\r\n                        show_form();\r\n                        show_button();\r\n                    },\r\n                    error_handler: function (data) {\r\n                        $alert.show().html('<div>' + data + '</div>');\r\n                        show_form();\r\n                        show_button();\r\n                    }\r\n                });\r\n\r\n            });\r\n        }\r\n\r\n        function bind_testimonial_form_button() {\r\n            var load_content = function (form) {\r\n                    var dfd = $.Deferred();\r\n                    a_ajax.ajax({\r\n                        action: 'aet_get_form_html',\r\n                        data: {\r\n                            id: form.id\r\n                        },\r\n                        success_handler: function (data) {\r\n                            data = '<div class=\"aet-testimonial-panel aet-testimonial-panel-empty_white a-slide-panel-content-wrapper\">\\\r\n                                        <div class=\"a-scroll\">\\\r\n                                            <div class=\"aet-testimonial-panel-container\">\\\r\n                                                <div class=\"aet-testimonial-panel-body\">' +\r\n                                                    data +\r\n                                                '</div>\\\r\n                                            </div>\\\r\n                                        </div>\\\r\n                                    </div>';\r\n                            dfd.resolve(data);\r\n                        }\r\n                    });\r\n                    return dfd;\r\n                };\r\n            window['aet_localize']['submit_selectors'].forEach(function (item, i, arr) {\r\n                var selector = item.selector || 'aet_submission_form_trigger_' + item.id;\r\n\r\n                load_content = load_content.bind(this);\r\n                $(document).off('click', selector);\r\n                $(document).on('click', selector, function (e) {\r\n                    e.preventDefault();\r\n                    var args = {\r\n                        id: 'aet_',\r\n                        direction: 'left',\r\n                        width: '500px',\r\n                        height: '100%',\r\n                        animation: item.panel_animation,\r\n                        load_content: load_content(item)\r\n                    };\r\n                    window.panel = new AwesomePanel(args);\r\n                    panel.init();\r\n                });\r\n            });\r\n        }\r\n\r\n        function bind_summary_resize(id) {\r\n            var summaries = $('.aet-summary').toArray(),\r\n                breakpoints = [480, 667];\r\n            var on_resize_handler = function () {\r\n                summaries.forEach(function (summary, i, arr) {\r\n                    var $summary = $(summary);\r\n                    if ($summary.attr('id') != 'aet-summary-' + id) return;\r\n\r\n                    var width = $summary.outerWidth();\r\n                    AwesomeUtil.removeClass($summary, 'aet-breakpoint-');\r\n                    breakpoints.forEach(function (item, i, arr) {\r\n                        if (width <= item) {\r\n                            $summary.addClass('aet-breakpoint-' + item);\r\n                        }\r\n                    });\r\n                });\r\n            };\r\n\r\n            on_resize_handler();\r\n            $(window).resize(function () {\r\n                on_resize_handler();\r\n            });\r\n        }\r\n\r\n        bind_testimonial_form_button();\r\n\r\n        return {\r\n            'enable_slider': enable_slider,\r\n            'enable_slider_photo': enable_slider_photo,\r\n            'init_animations': init_animations,\r\n            'init_filter': init_filter,\r\n            'init_search': init_search,\r\n            'init_panel': init_panel,\r\n            'init_summary_panel': init_summary_panel,\r\n            'bind_profiles': bind_profiles,\r\n            'calc_rating_icons_size': calc_rating_icons_size,\r\n            'calc_social_icons_size': calc_social_icons_size,\r\n            'init_showcase': init_showcase,\r\n            'calc_short_text_nubbin_position': calc_short_text_nubbin_position,\r\n            'calculate_slider_items_size': calculate_slider_items_size,\r\n            'new_testimonial_from_form': new_testimonial_from_form,\r\n            'bind_testimonial_form_button': bind_testimonial_form_button,\r\n            'bind_rating_select': bind_rating_select,\r\n            'bind_summary_resize': bind_summary_resize\r\n        };\r\n    })(jQuery);","/*\n _ _      _       _\n ___| (_) ___| | __  (_)___\n / __| | |/ __| |/ /  | / __|\n \\__ \\ | | (__|   < _ | \\__ \\\n |___/_|_|\\___|_|\\_(_)/ |___/\n |__/\n\n Version: 1.5.9\n Author: Ken Wheeler\n Website: http://kenwheeler.github.io\n Docs: http://kenwheeler.github.io/slick\n Repo: http://github.com/kenwheeler/slick\n Issues: http://github.com/kenwheeler/slick/issues\n\n */\n/* global window, document, define, jQuery, setInterval, clearInterval */\n(function(factory) {\n    'use strict';\n    if (typeof define === 'function' && define.amd) {\n        define(['jquery'], factory);\n    } else if (typeof exports !== 'undefined') {\n        module.exports = factory(require('jquery'));\n    } else {\n        factory(jQuery);\n    }\n\n}(function($) {\n    'use strict';\n    var LA_Slick = window.LA_Slick || {};\n\n    LA_Slick = (function() {\n\n        var instanceUid = 0;\n\n        function LA_Slick(element, settings) {\n\n            var _ = this, dataSettings;\n\n            _.defaults = {\n                accessibility: true,\n                adaptiveHeight: false,\n                appendArrows: $(element),\n                appendDots: $(element),\n                arrows: true,\n                asNavFor: null,\n                prevArrow: '<button type=\"button\" data-role=\"none\" class=\"slick-prev\" aria-label=\"Previous\" tabindex=\"0\" role=\"button\">Previous</button>',\n                nextArrow: '<button type=\"button\" data-role=\"none\" class=\"slick-next\" aria-label=\"Next\" tabindex=\"0\" role=\"button\">Next</button>',\n                autoplay: false,\n                autoplaySpeed: 3000,\n                centerMode: false,\n                centerPadding: '50px',\n                cssEase: 'ease',\n                customPaging: function(slider, i) {\n                    return $('<button type=\"button\" data-role=\"none\" role=\"button\" tabindex=\"0\" />').text(i + 1);\n                },\n                dots: false,\n                dotsClass: 'slick-dots',\n                draggable: true,\n                easing: 'linear',\n                edgeFriction: 0.35,\n                fade: false,\n                focusOnSelect: false,\n                infinite: true,\n                initialSlide: 0,\n                lazyLoad: 'ondemand',\n                mobileFirst: false,\n                pauseOnHover: true,\n                pauseOnFocus: true,\n                pauseOnDotsHover: false,\n                respondTo: 'window',\n                responsive: null,\n                rows: 1,\n                rtl: false,\n                slide: '',\n                slidesPerRow: 1,\n                slidesToShow: 1,\n                slidesToScroll: 1,\n                speed: 500,\n                swipe: true,\n                swipeToSlide: false,\n                touchMove: true,\n                touchThreshold: 5,\n                useCSS: true,\n                useTransform: true,\n                variableWidth: false,\n                vertical: false,\n                verticalSwiping: false,\n                waitForAnimate: true,\n                zIndex: 1000\n            };\n\n            _.initials = {\n                animating: false,\n                dragging: false,\n                autoPlayTimer: null,\n                currentDirection: 0,\n                currentLeft: null,\n                currentSlide: 0,\n                direction: 1,\n                $dots: null,\n                listWidth: null,\n                listHeight: null,\n                loadIndex: 0,\n                $nextArrow: null,\n                $prevArrow: null,\n                slideCount: null,\n                slideWidth: null,\n                $slideTrack: null,\n                $slides: null,\n                sliding: false,\n                slideOffset: 0,\n                swipeLeft: null,\n                $list: null,\n                touchObject: {},\n                transformsEnabled: false,\n                unslicked: false\n            };\n\n            $.extend(_, _.initials);\n\n            _.activeBreakpoint = null;\n            _.animType = null;\n            _.animProp = null;\n            _.breakpoints = [];\n            _.breakpointSettings = [];\n            _.cssTransitions = false;\n            _.focussed = false;\n            _.interrupted = false;\n            _.hidden = 'hidden';\n            _.paused = true;\n            _.positionProp = null;\n            _.respondTo = null;\n            _.rowCount = 1;\n            _.shouldClick = true;\n            _.$slider = $(element);\n            _.$slidesCache = null;\n            _.transformType = null;\n            _.transitionType = null;\n            _.visibilityChange = 'visibilitychange';\n            _.windowWidth = 0;\n            _.windowTimer = null;\n\n            dataSettings = $(element).data('slick') || {};\n\n            _.options = $.extend({}, _.defaults, settings, dataSettings);\n\n            _.currentSlide = _.options.initialSlide;\n\n            _.originalSettings = _.options;\n\n            if (typeof document.mozHidden !== 'undefined') {\n                _.hidden = 'mozHidden';\n                _.visibilityChange = 'mozvisibilitychange';\n            } else if (typeof document.webkitHidden !== 'undefined') {\n                _.hidden = 'webkitHidden';\n                _.visibilityChange = 'webkitvisibilitychange';\n            }\n\n            _.autoPlay = $.proxy(_.autoPlay, _);\n            _.autoPlayClear = $.proxy(_.autoPlayClear, _);\n            _.autoPlayIterator = $.proxy(_.autoPlayIterator, _);\n            _.changeSlide = $.proxy(_.changeSlide, _);\n            _.clickHandler = $.proxy(_.clickHandler, _);\n            _.selectHandler = $.proxy(_.selectHandler, _);\n            _.setPosition = $.proxy(_.setPosition, _);\n            _.swipeHandler = $.proxy(_.swipeHandler, _);\n            _.dragHandler = $.proxy(_.dragHandler, _);\n            _.keyHandler = $.proxy(_.keyHandler, _);\n\n            _.instanceUid = instanceUid++;\n\n            // A simple way to check for HTML strings\n            // Strict HTML recognition (must start with <)\n            // Extracted from jQuery v1.11 source\n            _.htmlExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*)$/;\n\n\n            _.registerBreakpoints();\n            _.init(true);\n\n        }\n\n        return LA_Slick;\n\n    }());\n\n    LA_Slick.prototype.activateADA = function() {\n        var _ = this;\n\n        _.$slideTrack.find('.slick-active').attr({\n            'aria-hidden': 'false'\n        }).find('a, input, button, select').attr({\n            'tabindex': '0'\n        });\n\n    };\n\n    LA_Slick.prototype.addSlide = LA_Slick.prototype.slickAdd = function(markup, index, addBefore) {\n\n        var _ = this;\n\n        if (typeof(index) === 'boolean') {\n            addBefore = index;\n            index = null;\n        } else if (index < 0 || (index >= _.slideCount)) {\n            return false;\n        }\n\n        _.unload();\n\n        if (typeof(index) === 'number') {\n            if (index === 0 && _.$slides.length === 0) {\n                $(markup).appendTo(_.$slideTrack);\n            } else if (addBefore) {\n                $(markup).insertBefore(_.$slides.eq(index));\n            } else {\n                $(markup).insertAfter(_.$slides.eq(index));\n            }\n        } else {\n            if (addBefore === true) {\n                $(markup).prependTo(_.$slideTrack);\n            } else {\n                $(markup).appendTo(_.$slideTrack);\n            }\n        }\n\n        _.$slides = _.$slideTrack.children(this.options.slide);\n\n        _.$slideTrack.children(this.options.slide).detach();\n\n        _.$slideTrack.append(_.$slides);\n\n        _.$slides.each(function(index, element) {\n            $(element).attr('data-slick-index', index);\n        });\n\n        _.$slidesCache = _.$slides;\n\n        _.reinit();\n\n    };\n\n    LA_Slick.prototype.animateHeight = function() {\n        var _ = this;\n        if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {\n            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);\n            _.$list.animate({\n                height: targetHeight\n            }, _.options.speed);\n        }\n    };\n\n    LA_Slick.prototype.animateSlide = function(targetLeft, callback) {\n\n        var animProps = {},\n            _ = this;\n\n        _.animateHeight();\n\n        if (_.options.rtl === true && _.options.vertical === false) {\n            targetLeft = -targetLeft;\n        }\n        if (_.transformsEnabled === false) {\n            if (_.options.vertical === false) {\n                _.$slideTrack.animate({\n                    left: targetLeft\n                }, _.options.speed, _.options.easing, callback);\n            } else {\n                _.$slideTrack.animate({\n                    top: targetLeft\n                }, _.options.speed, _.options.easing, callback);\n            }\n\n        } else {\n\n            if (_.cssTransitions === false) {\n                if (_.options.rtl === true) {\n                    _.currentLeft = -(_.currentLeft);\n                }\n                $({\n                    animStart: _.currentLeft\n                }).animate({\n                    animStart: targetLeft\n                }, {\n                    duration: _.options.speed,\n                    easing: _.options.easing,\n                    step: function(now) {\n                        now = Math.ceil(now);\n                        if (_.options.vertical === false) {\n                            animProps[_.animType] = 'translate(' +\n                                now + 'px, 0px)';\n                            _.$slideTrack.css(animProps);\n                        } else {\n                            animProps[_.animType] = 'translate(0px,' +\n                                now + 'px)';\n                            _.$slideTrack.css(animProps);\n                        }\n                    },\n                    complete: function() {\n                        if (callback) {\n                            callback.call();\n                        }\n                    }\n                });\n\n            } else {\n\n                _.applyTransition();\n                targetLeft = Math.ceil(targetLeft);\n\n                if (_.options.vertical === false) {\n                    animProps[_.animType] = 'translate3d(' + targetLeft + 'px, 0px, 0px)';\n                } else {\n                    animProps[_.animType] = 'translate3d(0px,' + targetLeft + 'px, 0px)';\n                }\n                _.$slideTrack.css(animProps);\n\n                if (callback) {\n                    setTimeout(function() {\n\n                        _.disableTransition();\n\n                        callback.call();\n                    }, _.options.speed);\n                }\n\n            }\n\n        }\n\n    };\n\n    LA_Slick.prototype.getNavTarget = function() {\n\n        var _ = this,\n            asNavFor = _.options.asNavFor;\n\n        if ( asNavFor && asNavFor !== null ) {\n            asNavFor = $(asNavFor).not(_.$slider);\n        }\n\n        return asNavFor;\n\n    };\n\n    LA_Slick.prototype.asNavFor = function(index) {\n\n        var _ = this,\n            asNavFor = _.getNavTarget();\n\n        if ( asNavFor !== null && typeof asNavFor === 'object' ) {\n            asNavFor.each(function() {\n                var target = $(this).slick('getSlick');\n                if(!target.unslicked) {\n                    target.slideHandler(index, true);\n                }\n            });\n        }\n\n    };\n\n    LA_Slick.prototype.applyTransition = function(slide) {\n\n        var _ = this,\n            transition = {};\n\n        if (_.options.fade === false) {\n            transition[_.transitionType] = _.transformType + ' ' + _.options.speed + 'ms ' + _.options.cssEase;\n        } else {\n            transition[_.transitionType] = 'opacity ' + _.options.speed + 'ms ' + _.options.cssEase;\n        }\n\n        if (_.options.fade === false) {\n            _.$slideTrack.css(transition);\n        } else {\n            _.$slides.eq(slide).css(transition);\n        }\n\n    };\n\n    LA_Slick.prototype.autoPlay = function() {\n\n        var _ = this;\n\n        _.autoPlayClear();\n\n        if ( _.slideCount > _.options.slidesToShow ) {\n            _.autoPlayTimer = setInterval( _.autoPlayIterator, _.options.autoplaySpeed );\n        }\n\n    };\n\n    LA_Slick.prototype.autoPlayClear = function() {\n\n        var _ = this;\n\n        if (_.autoPlayTimer) {\n            clearInterval(_.autoPlayTimer);\n        }\n\n    };\n\n    LA_Slick.prototype.autoPlayIterator = function() {\n\n        var _ = this,\n            slideTo = _.currentSlide + _.options.slidesToScroll;\n\n        if ( !_.paused && !_.interrupted && !_.focussed ) {\n\n            if ( _.options.infinite === false ) {\n\n                if ( _.direction === 1 && ( _.currentSlide + 1 ) === ( _.slideCount - 1 )) {\n                    _.direction = 0;\n                }\n\n                else if ( _.direction === 0 ) {\n\n                    slideTo = _.currentSlide - _.options.slidesToScroll;\n\n                    if ( _.currentSlide - 1 === 0 ) {\n                        _.direction = 1;\n                    }\n\n                }\n\n            }\n\n            _.slideHandler( slideTo );\n\n        }\n\n    };\n\n    LA_Slick.prototype.buildArrows = function() {\n\n        var _ = this;\n\n        if (_.options.arrows === true ) {\n\n            _.$prevArrow = $(_.options.prevArrow).addClass('slick-arrow');\n            _.$nextArrow = $(_.options.nextArrow).addClass('slick-arrow');\n\n            if( _.slideCount > _.options.slidesToShow ) {\n\n                _.$prevArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');\n                _.$nextArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');\n\n                if (_.htmlExpr.test(_.options.prevArrow)) {\n                    _.$prevArrow.prependTo(_.options.appendArrows);\n                }\n\n                if (_.htmlExpr.test(_.options.nextArrow)) {\n                    _.$nextArrow.appendTo(_.options.appendArrows);\n                }\n\n                if (_.options.infinite !== true) {\n                    _.$prevArrow\n                        .addClass('slick-disabled')\n                        .attr('aria-disabled', 'true');\n                }\n\n            } else {\n\n                _.$prevArrow.add( _.$nextArrow )\n\n                    .addClass('slick-hidden')\n                    .attr({\n                        'aria-disabled': 'true',\n                        'tabindex': '-1'\n                    });\n\n            }\n\n        }\n\n    };\n\n    LA_Slick.prototype.buildDots = function() {\n\n        var _ = this,\n            i, dot;\n\n        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n\n            _.$slider.addClass('slick-dotted');\n\n            dot = $('<ul />').addClass(_.options.dotsClass);\n\n            for (i = 0; i <= _.getDotCount(); i += 1) {\n                dot.append($('<li />').append(_.options.customPaging.call(this, _, i)));\n            }\n\n            _.$dots = dot.appendTo(_.options.appendDots);\n\n            _.$dots.find('li').first().addClass('slick-active').attr('aria-hidden', 'false');\n\n        }\n\n    };\n\n    LA_Slick.prototype.buildOut = function() {\n\n        var _ = this;\n\n        _.$slides =\n            _.$slider\n                .children( _.options.slide + ':not(.slick-cloned)')\n                .addClass('slick-slide');\n\n        _.slideCount = _.$slides.length;\n\n        _.$slides.each(function(index, element) {\n            $(element)\n                .attr('data-slick-index', index)\n                .data('originalStyling', $(element).attr('style') || '');\n        });\n\n        _.$slider.addClass('slick-slider');\n\n        _.$slideTrack = (_.slideCount === 0) ?\n            $('<div class=\"slick-track\"/>').appendTo(_.$slider) :\n            _.$slides.wrapAll('<div class=\"slick-track\"/>').parent();\n\n        _.$list = _.$slideTrack.wrap(\n            '<div aria-live=\"polite\" class=\"slick-list\"/>').parent();\n        _.$slideTrack.css('opacity', 0);\n\n        if (_.options.centerMode === true || _.options.swipeToSlide === true) {\n            _.options.slidesToScroll = 1;\n        }\n\n        $('img[data-lazy]', _.$slider).not('[src]').addClass('slick-loading');\n\n        _.setupInfinite();\n\n        _.buildArrows();\n\n        _.buildDots();\n\n        _.updateDots();\n\n\n        _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);\n\n        if (_.options.draggable === true) {\n            _.$list.addClass('draggable');\n        }\n\n    };\n\n    LA_Slick.prototype.buildRows = function() {\n\n        var _ = this, a, b, c, newSlides, numOfSlides, originalSlides,slidesPerSection;\n\n        newSlides = document.createDocumentFragment();\n        originalSlides = _.$slider.children();\n\n        if(_.options.rows > 1) {\n\n            slidesPerSection = _.options.slidesPerRow * _.options.rows;\n            numOfSlides = Math.ceil(\n                originalSlides.length / slidesPerSection\n            );\n\n            for(a = 0; a < numOfSlides; a++){\n                var slide = document.createElement('div');\n                for(b = 0; b < _.options.rows; b++) {\n                    var row = document.createElement('div');\n                    for(c = 0; c < _.options.slidesPerRow; c++) {\n                        var target = (a * slidesPerSection + ((b * _.options.slidesPerRow) + c));\n                        if (originalSlides.get(target)) {\n                            row.appendChild(originalSlides.get(target));\n                        }\n                    }\n                    slide.appendChild(row);\n                }\n                newSlides.appendChild(slide);\n            }\n\n            _.$slider.empty().append(newSlides);\n            _.$slider.children().children().children()\n                .css({\n                    'width':(100 / _.options.slidesPerRow) + '%',\n                    'display': 'inline-block'\n                });\n\n        }\n\n    };\n\n    LA_Slick.prototype.checkResponsive = function(initial, forceUpdate) {\n\n        var _ = this,\n            breakpoint, targetBreakpoint, respondToWidth, triggerBreakpoint = false;\n        var sliderWidth = _.$slider.width();\n        var windowWidth = window.innerWidth || $(window).width();\n\n        if (_.respondTo === 'window') {\n            respondToWidth = windowWidth;\n        } else if (_.respondTo === 'slider') {\n            respondToWidth = sliderWidth;\n        } else if (_.respondTo === 'min') {\n            respondToWidth = Math.min(windowWidth, sliderWidth);\n        }\n\n        if ( _.options.responsive &&\n            _.options.responsive.length &&\n            _.options.responsive !== null) {\n\n            targetBreakpoint = null;\n\n            for (breakpoint in _.breakpoints) {\n                if (_.breakpoints.hasOwnProperty(breakpoint)) {\n                    if (_.originalSettings.mobileFirst === false) {\n                        if (respondToWidth < _.breakpoints[breakpoint]) {\n                            targetBreakpoint = _.breakpoints[breakpoint];\n                        }\n                    } else {\n                        if (respondToWidth > _.breakpoints[breakpoint]) {\n                            targetBreakpoint = _.breakpoints[breakpoint];\n                        }\n                    }\n                }\n            }\n\n            if (targetBreakpoint !== null) {\n                if (_.activeBreakpoint !== null) {\n                    if (targetBreakpoint !== _.activeBreakpoint || forceUpdate) {\n                        _.activeBreakpoint =\n                            targetBreakpoint;\n                        if (_.breakpointSettings[targetBreakpoint] === 'unslick') {\n                            _.unslick(targetBreakpoint);\n                        } else {\n                            _.options = $.extend({}, _.originalSettings,\n                                _.breakpointSettings[\n                                    targetBreakpoint]);\n                            if (initial === true) {\n                                _.currentSlide = _.options.initialSlide;\n                            }\n                            _.refresh(initial);\n                        }\n                        triggerBreakpoint = targetBreakpoint;\n                    }\n                } else {\n                    _.activeBreakpoint = targetBreakpoint;\n                    if (_.breakpointSettings[targetBreakpoint] === 'unslick') {\n                        _.unslick(targetBreakpoint);\n                    } else {\n                        _.options = $.extend({}, _.originalSettings,\n                            _.breakpointSettings[\n                                targetBreakpoint]);\n                        if (initial === true) {\n                            _.currentSlide = _.options.initialSlide;\n                        }\n                        _.refresh(initial);\n                    }\n                    triggerBreakpoint = targetBreakpoint;\n                }\n            } else {\n                if (_.activeBreakpoint !== null) {\n                    _.activeBreakpoint = null;\n                    _.options = _.originalSettings;\n                    if (initial === true) {\n                        _.currentSlide = _.options.initialSlide;\n                    }\n                    _.refresh(initial);\n                    triggerBreakpoint = targetBreakpoint;\n                }\n            }\n\n            // only trigger breakpoints during an actual break. not on initialize.\n            if( !initial && triggerBreakpoint !== false ) {\n                _.$slider.trigger('breakpoint', [_, triggerBreakpoint]);\n            }\n        }\n\n    };\n\n    LA_Slick.prototype.changeSlide = function(event, dontAnimate) {\n\n        var _ = this,\n            $target = $(event.currentTarget),\n            indexOffset, slideOffset, unevenOffset;\n\n        // If target is a link, prevent default action.\n        if($target.is('a')) {\n            event.preventDefault();\n        }\n\n        // If target is not the <li> element (ie: a child), find the <li>.\n        if(!$target.is('li')) {\n            $target = $target.closest('li');\n        }\n\n        unevenOffset = (_.slideCount % _.options.slidesToScroll !== 0);\n        indexOffset = unevenOffset ? 0 : (_.slideCount - _.currentSlide) % _.options.slidesToScroll;\n\n        switch (event.data.message) {\n\n            case 'previous':\n                slideOffset = indexOffset === 0 ? _.options.slidesToScroll : _.options.slidesToShow - indexOffset;\n                if (_.slideCount > _.options.slidesToShow) {\n                    _.slideHandler(_.currentSlide - slideOffset, false, dontAnimate);\n                }\n                break;\n\n            case 'next':\n                slideOffset = indexOffset === 0 ? _.options.slidesToScroll : indexOffset;\n                if (_.slideCount > _.options.slidesToShow) {\n                    _.slideHandler(_.currentSlide + slideOffset, false, dontAnimate);\n                }\n                break;\n\n            case 'index':\n                var index = event.data.index === 0 ? 0 :\n                event.data.index || $target.index() * _.options.slidesToScroll;\n\n                _.slideHandler(_.checkNavigable(index), false, dontAnimate);\n                $target.children().trigger('focus');\n                break;\n\n            default:\n                return;\n        }\n\n    };\n\n    LA_Slick.prototype.checkNavigable = function(index) {\n\n        var _ = this,\n            navigables, prevNavigable;\n\n        navigables = _.getNavigableIndexes();\n        prevNavigable = 0;\n        if (index > navigables[navigables.length - 1]) {\n            index = navigables[navigables.length - 1];\n        } else {\n            for (var n in navigables) {\n                if (index < navigables[n]) {\n                    index = prevNavigable;\n                    break;\n                }\n                prevNavigable = navigables[n];\n            }\n        }\n\n        return index;\n    };\n\n    LA_Slick.prototype.cleanUpEvents = function() {\n\n        var _ = this;\n\n        if (_.options.dots && _.$dots !== null) {\n\n            $('li', _.$dots)\n                .off('click.slick', _.changeSlide)\n                .off('mouseenter.slick', $.proxy(_.interrupt, _, true))\n                .off('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n        }\n\n        _.$slider.off('focus.slick blur.slick');\n\n        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n            _.$prevArrow && _.$prevArrow.off('click.slick', _.changeSlide);\n            _.$nextArrow && _.$nextArrow.off('click.slick', _.changeSlide);\n        }\n\n        _.$list.off('touchstart.slick mousedown.slick', _.swipeHandler);\n        _.$list.off('touchmove.slick mousemove.slick', _.swipeHandler);\n        _.$list.off('touchend.slick mouseup.slick', _.swipeHandler);\n        _.$list.off('touchcancel.slick mouseleave.slick', _.swipeHandler);\n\n        _.$list.off('click.slick', _.clickHandler);\n\n        $(document).off(_.visibilityChange, _.visibility);\n\n        _.cleanUpSlideEvents();\n\n        if (_.options.accessibility === true) {\n            _.$list.off('keydown.slick', _.keyHandler);\n        }\n\n        if (_.options.focusOnSelect === true) {\n            $(_.$slideTrack).children().off('click.slick', _.selectHandler);\n        }\n\n        $(window).off('orientationchange.slick.slick-' + _.instanceUid, _.orientationChange);\n\n        $(window).off('resize.slick.slick-' + _.instanceUid, _.resize);\n\n        $('[draggable!=true]', _.$slideTrack).off('dragstart', _.preventDefault);\n\n        $(window).off('load.slick.slick-' + _.instanceUid, _.setPosition);\n        $(document).off('ready.slick.slick-' + _.instanceUid, _.setPosition);\n\n    };\n\n    LA_Slick.prototype.cleanUpSlideEvents = function() {\n\n        var _ = this;\n\n        _.$list.off('mouseenter.slick', $.proxy(_.interrupt, _, true));\n        _.$list.off('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n    };\n\n    LA_Slick.prototype.cleanUpRows = function() {\n\n        var _ = this, originalSlides;\n\n        if(_.options.rows > 1) {\n            originalSlides = _.$slides.children().children();\n            originalSlides.removeAttr('style');\n            _.$slider.empty().append(originalSlides);\n        }\n\n    };\n\n    LA_Slick.prototype.clickHandler = function(event) {\n\n        var _ = this;\n\n        if (_.shouldClick === false) {\n            event.stopImmediatePropagation();\n            event.stopPropagation();\n            event.preventDefault();\n        }\n\n    };\n\n    LA_Slick.prototype.destroy = function(refresh) {\n\n        var _ = this;\n\n        _.autoPlayClear();\n\n        _.touchObject = {};\n\n        _.cleanUpEvents();\n\n        $('.slick-cloned', _.$slider).detach();\n\n        if (_.$dots) {\n            _.$dots.remove();\n        }\n\n\n        if ( _.$prevArrow && _.$prevArrow.length ) {\n\n            _.$prevArrow\n                .removeClass('slick-disabled slick-arrow slick-hidden')\n                .removeAttr('aria-hidden aria-disabled tabindex')\n                .css('display','');\n\n            if ( _.htmlExpr.test( _.options.prevArrow )) {\n                _.$prevArrow.remove();\n            }\n        }\n\n        if ( _.$nextArrow && _.$nextArrow.length ) {\n\n            _.$nextArrow\n                .removeClass('slick-disabled slick-arrow slick-hidden')\n                .removeAttr('aria-hidden aria-disabled tabindex')\n                .css('display','');\n\n            if ( _.htmlExpr.test( _.options.nextArrow )) {\n                _.$nextArrow.remove();\n            }\n\n        }\n\n\n        if (_.$slides) {\n\n            _.$slides\n                .removeClass('slick-slide slick-active slick-center slick-visible slick-current')\n                .removeAttr('aria-hidden')\n                .removeAttr('data-slick-index')\n                .each(function(){\n                    $(this).attr('style', $(this).data('originalStyling'));\n                });\n\n            _.$slideTrack.children(this.options.slide).detach();\n\n            _.$slideTrack.detach();\n\n            _.$list.detach();\n\n            _.$slider.append(_.$slides);\n        }\n\n        _.cleanUpRows();\n\n        _.$slider.removeClass('slick-slider');\n        _.$slider.removeClass('slick-initialized');\n        _.$slider.removeClass('slick-dotted');\n\n        _.unslicked = true;\n\n        if(!refresh) {\n            _.$slider.trigger('destroy', [_]);\n        }\n\n    };\n\n    LA_Slick.prototype.disableTransition = function(slide) {\n\n        var _ = this,\n            transition = {};\n\n        transition[_.transitionType] = '';\n\n        if (_.options.fade === false) {\n            _.$slideTrack.css(transition);\n        } else {\n            _.$slides.eq(slide).css(transition);\n        }\n\n    };\n\n    LA_Slick.prototype.fadeSlide = function(slideIndex, callback) {\n\n        var _ = this;\n\n        if (_.cssTransitions === false) {\n\n            _.$slides.eq(slideIndex).css({\n                zIndex: _.options.zIndex\n            });\n\n            _.$slides.eq(slideIndex).animate({\n                opacity: 1\n            }, _.options.speed, _.options.easing, callback);\n\n        } else {\n\n            _.applyTransition(slideIndex);\n\n            _.$slides.eq(slideIndex).css({\n                opacity: 1,\n                zIndex: _.options.zIndex\n            });\n\n            if (callback) {\n                setTimeout(function() {\n\n                    _.disableTransition(slideIndex);\n\n                    callback.call();\n                }, _.options.speed);\n            }\n\n        }\n\n    };\n\n    LA_Slick.prototype.fadeSlideOut = function(slideIndex) {\n\n        var _ = this;\n\n        if (_.cssTransitions === false) {\n\n            _.$slides.eq(slideIndex).animate({\n                opacity: 0,\n                zIndex: _.options.zIndex - 2\n            }, _.options.speed, _.options.easing);\n\n        } else {\n\n            _.applyTransition(slideIndex);\n\n            _.$slides.eq(slideIndex).css({\n                opacity: 0,\n                zIndex: _.options.zIndex - 2\n            });\n\n        }\n\n    };\n\n    LA_Slick.prototype.filterSlides = LA_Slick.prototype.slickFilter = function(filter) {\n\n        var _ = this;\n\n        if (filter !== null) {\n\n            _.$slidesCache = _.$slides;\n\n            _.unload();\n\n            _.$slideTrack.children(this.options.slide).detach();\n\n            _.$slidesCache.filter(filter).appendTo(_.$slideTrack);\n\n            _.reinit();\n\n        }\n\n    };\n\n    LA_Slick.prototype.focusHandler = function() {\n\n        var _ = this;\n\n        _.$slider\n            .off('focus.slick blur.slick')\n            .on('focus.slick blur.slick',\n                '*:not(.slick-arrow)', function(event) {\n\n                    event.stopImmediatePropagation();\n                    var $sf = $(this);\n\n                    setTimeout(function() {\n\n                        if( _.options.pauseOnFocus ) {\n                            _.focussed = $sf.is(':focus');\n                            _.autoPlay();\n                        }\n\n                    }, 0);\n\n                });\n    };\n\n    LA_Slick.prototype.getCurrent = LA_Slick.prototype.slickCurrentSlide = function() {\n\n        var _ = this;\n        return _.currentSlide;\n\n    };\n\n    LA_Slick.prototype.getDotCount = function() {\n\n        var _ = this;\n\n        var breakPoint = 0;\n        var counter = 0;\n        var pagerQty = 0;\n\n        if (_.options.infinite === true) {\n            while (breakPoint < _.slideCount) {\n                ++pagerQty;\n                breakPoint = counter + _.options.slidesToScroll;\n                counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\n            }\n        } else if (_.options.centerMode === true) {\n            pagerQty = _.slideCount;\n        } else {\n            while (breakPoint < _.slideCount) {\n                ++pagerQty;\n                breakPoint = counter + _.options.slidesToScroll;\n                counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\n            }\n        }\n\n        return pagerQty - 1;\n\n    };\n\n    LA_Slick.prototype.getLeft = function(slideIndex) {\n\n        var _ = this,\n            targetLeft,\n            verticalHeight,\n            verticalOffset = 0,\n            targetSlide;\n\n        _.slideOffset = 0;\n        verticalHeight = _.$slides.first().outerHeight(true);\n\n        if (_.options.infinite === true) {\n            if (_.slideCount > _.options.slidesToShow) {\n                _.slideOffset = (_.slideWidth * _.options.slidesToShow) * -1;\n                verticalOffset = (verticalHeight * _.options.slidesToShow) * -1;\n            }\n            if (_.slideCount % _.options.slidesToScroll !== 0) {\n                if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) {\n                    if (slideIndex > _.slideCount) {\n                        _.slideOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * _.slideWidth) * -1;\n                        verticalOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * verticalHeight) * -1;\n                    } else {\n                        _.slideOffset = ((_.slideCount % _.options.slidesToScroll) * _.slideWidth) * -1;\n                        verticalOffset = ((_.slideCount % _.options.slidesToScroll) * verticalHeight) * -1;\n                    }\n                }\n            }\n        } else {\n            if (slideIndex + _.options.slidesToShow > _.slideCount) {\n                _.slideOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * _.slideWidth;\n                verticalOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * verticalHeight;\n            }\n        }\n\n        if (_.slideCount <= _.options.slidesToShow) {\n            _.slideOffset = 0;\n            verticalOffset = 0;\n        }\n\n        if (_.options.centerMode === true && _.options.infinite === true) {\n            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth;\n        } else if (_.options.centerMode === true) {\n            _.slideOffset = 0;\n            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2);\n        }\n\n        if (_.options.vertical === false) {\n            targetLeft = ((slideIndex * _.slideWidth) * -1) + _.slideOffset;\n        } else {\n            targetLeft = ((slideIndex * verticalHeight) * -1) + verticalOffset;\n        }\n\n        if (_.options.variableWidth === true) {\n\n            if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {\n                targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);\n            } else {\n                targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow);\n            }\n\n            if (_.options.rtl === true) {\n                if (targetSlide[0]) {\n                    targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;\n                } else {\n                    targetLeft =  0;\n                }\n            } else {\n                targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;\n            }\n\n            if (_.options.centerMode === true) {\n                if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {\n                    targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);\n                } else {\n                    targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow + 1);\n                }\n\n                if (_.options.rtl === true) {\n                    if (targetSlide[0]) {\n                        targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;\n                    } else {\n                        targetLeft =  0;\n                    }\n                } else {\n                    targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;\n                }\n\n                targetLeft += (_.$list.width() - targetSlide.outerWidth()) / 2;\n            }\n        }\n\n        return targetLeft;\n\n    };\n\n    LA_Slick.prototype.getOption = LA_Slick.prototype.slickGetOption = function(option) {\n\n        var _ = this;\n\n        return _.options[option];\n\n    };\n\n    LA_Slick.prototype.getNavigableIndexes = function() {\n\n        var _ = this,\n            breakPoint = 0,\n            counter = 0,\n            indexes = [],\n            max;\n\n        if (_.options.infinite === false) {\n            max = _.slideCount;\n        } else {\n            breakPoint = _.options.slidesToScroll * -1;\n            counter = _.options.slidesToScroll * -1;\n            max = _.slideCount * 2;\n        }\n\n        while (breakPoint < max) {\n            indexes.push(breakPoint);\n            breakPoint = counter + _.options.slidesToScroll;\n            counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\n        }\n\n        return indexes;\n\n    };\n\n    LA_Slick.prototype.getSlick = function() {\n\n        return this;\n\n    };\n\n    LA_Slick.prototype.getSlideCount = function() {\n\n        var _ = this,\n            slidesTraversed, swipedSlide, centerOffset;\n\n        centerOffset = _.options.centerMode === true ? _.slideWidth * Math.floor(_.options.slidesToShow / 2) : 0;\n\n        if (_.options.swipeToSlide === true) {\n            _.$slideTrack.find('.slick-slide').each(function(index, slide) {\n                if (slide.offsetLeft - centerOffset + ($(slide).outerWidth() / 2) > (_.swipeLeft * -1)) {\n                    swipedSlide = slide;\n                    return false;\n                }\n            });\n\n            slidesTraversed = Math.abs($(swipedSlide).attr('data-slick-index') - _.currentSlide) || 1;\n\n            return slidesTraversed;\n\n        } else {\n            return _.options.slidesToScroll;\n        }\n\n    };\n\n    LA_Slick.prototype.goTo = LA_Slick.prototype.slickGoTo = function(slide, dontAnimate) {\n\n        var _ = this;\n\n        _.changeSlide({\n            data: {\n                message: 'index',\n                index: parseInt(slide)\n            }\n        }, dontAnimate);\n\n    };\n\n    LA_Slick.prototype.init = function(creation) {\n\n        var _ = this;\n\n        if (!$(_.$slider).hasClass('slick-initialized')) {\n\n            $(_.$slider).addClass('slick-initialized');\n\n            _.buildRows();\n            _.buildOut();\n            _.setProps();\n            _.startLoad();\n            _.loadSlider();\n            _.initializeEvents();\n            _.updateArrows();\n            _.updateDots();\n            _.checkResponsive(true);\n            _.focusHandler();\n\n        }\n\n        if (creation) {\n            _.$slider.trigger('init', [_]);\n        }\n\n        if (_.options.accessibility === true) {\n            _.initADA();\n        }\n\n        if ( _.options.autoplay ) {\n\n            _.paused = false;\n            _.autoPlay();\n\n        }\n\n    };\n\n    LA_Slick.prototype.initADA = function() {\n        var _ = this;\n        _.$slides.add(_.$slideTrack.find('.slick-cloned')).attr({\n            'aria-hidden': 'true',\n            'tabindex': '-1'\n        }).find('a, input, button, select').attr({\n            'tabindex': '-1'\n        });\n\n        _.$slideTrack.attr('role', 'listbox');\n\n        _.$slides.not(_.$slideTrack.find('.slick-cloned')).each(function(i) {\n            $(this).attr({\n                'role': 'option',\n                'aria-describedby': 'slick-slide' + _.instanceUid + i + ''\n            });\n        });\n\n        if (_.$dots !== null) {\n            _.$dots.attr('role', 'tablist').find('li').each(function(i) {\n                    $(this).attr({\n                        'role': 'presentation',\n                        'aria-selected': 'false',\n                        'aria-controls': 'navigation' + _.instanceUid + i + '',\n                        'id': 'slick-slide' + _.instanceUid + i + ''\n                    });\n                })\n                .first().attr('aria-selected', 'true').end()\n                .find('button').attr('role', 'button').end()\n                .closest('div').attr('role', 'toolbar');\n        }\n        _.activateADA();\n\n    };\n\n    LA_Slick.prototype.initArrowEvents = function() {\n\n        var _ = this;\n\n        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n            _.$prevArrow\n                .off('click.slick')\n                .on('click.slick', {\n                    message: 'previous'\n                }, _.changeSlide);\n            _.$nextArrow\n                .off('click.slick')\n                .on('click.slick', {\n                    message: 'next'\n                }, _.changeSlide);\n        }\n\n    };\n\n    LA_Slick.prototype.initDotEvents = function() {\n\n        var _ = this;\n\n        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n            $('li', _.$dots).on('click.slick', {\n                message: 'index'\n            }, _.changeSlide);\n        }\n\n        if ( _.options.dots === true && _.options.pauseOnDotsHover === true ) {\n\n            $('li', _.$dots)\n                .on('mouseenter.slick', $.proxy(_.interrupt, _, true))\n                .on('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n        }\n\n    };\n\n    LA_Slick.prototype.initSlideEvents = function() {\n\n        var _ = this;\n\n        if ( _.options.pauseOnHover ) {\n\n            _.$list.on('mouseenter.slick', $.proxy(_.interrupt, _, true));\n            _.$list.on('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n        }\n\n    };\n\n    LA_Slick.prototype.initializeEvents = function() {\n\n        var _ = this;\n\n        _.initArrowEvents();\n\n        _.initDotEvents();\n        _.initSlideEvents();\n\n        _.$list.on('touchstart.slick mousedown.slick', {\n            action: 'start'\n        }, _.swipeHandler);\n        _.$list.on('touchmove.slick mousemove.slick', {\n            action: 'move'\n        }, _.swipeHandler);\n        _.$list.on('touchend.slick mouseup.slick', {\n            action: 'end'\n        }, _.swipeHandler);\n        _.$list.on('touchcancel.slick mouseleave.slick', {\n            action: 'end'\n        }, _.swipeHandler);\n\n        _.$list.on('click.slick', _.clickHandler);\n\n        $(document).on(_.visibilityChange, $.proxy(_.visibility, _));\n\n        if (_.options.accessibility === true) {\n            _.$list.on('keydown.slick', _.keyHandler);\n        }\n\n        if (_.options.focusOnSelect === true) {\n            $(_.$slideTrack).children().on('click.slick', _.selectHandler);\n        }\n\n        $(window).on('orientationchange.slick.slick-' + _.instanceUid, $.proxy(_.orientationChange, _));\n\n        $(window).on('resize.slick.slick-' + _.instanceUid, $.proxy(_.resize, _));\n\n        $('[draggable!=true]', _.$slideTrack).on('dragstart', _.preventDefault);\n\n        $(window).on('load.slick.slick-' + _.instanceUid, _.setPosition);\n        $(document).on('ready.slick.slick-' + _.instanceUid, _.setPosition);\n\n    };\n\n    LA_Slick.prototype.initUI = function() {\n\n        var _ = this;\n\n        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n\n            _.$prevArrow.show();\n            _.$nextArrow.show();\n\n        }\n\n        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n\n            _.$dots.show();\n\n        }\n\n    };\n\n    LA_Slick.prototype.keyHandler = function(event) {\n\n        var _ = this;\n        //Dont slide if the cursor is inside the form fields and arrow keys are pressed\n        if(!event.target.tagName.match('TEXTAREA|INPUT|SELECT')) {\n            if (event.keyCode === 37 && _.options.accessibility === true) {\n                _.changeSlide({\n                    data: {\n                        message: _.options.rtl === true ? 'next' :  'previous'\n                    }\n                });\n            } else if (event.keyCode === 39 && _.options.accessibility === true) {\n                _.changeSlide({\n                    data: {\n                        message: _.options.rtl === true ? 'previous' : 'next'\n                    }\n                });\n            }\n        }\n\n    };\n\n    LA_Slick.prototype.lazyLoad = function() {\n\n        var _ = this,\n            loadRange, cloneRange, rangeStart, rangeEnd;\n\n        function loadImages(imagesScope) {\n\n            $('img[data-lazy]', imagesScope).each(function() {\n\n                var image = $(this),\n                    imageSource = $(this).attr('data-lazy'),\n                    imageToLoad = document.createElement('img');\n\n                imageToLoad.onload = function() {\n\n                    image\n                        .animate({ opacity: 0 }, 100, function() {\n                            image\n                                .attr('src', imageSource)\n                                .animate({ opacity: 1 }, 200, function() {\n                                    image\n                                        .removeAttr('data-lazy')\n                                        .removeClass('slick-loading');\n                                });\n                            _.$slider.trigger('lazyLoaded', [_, image, imageSource]);\n                        });\n\n                };\n\n                imageToLoad.onerror = function() {\n\n                    image\n                        .removeAttr( 'data-lazy' )\n                        .removeClass( 'slick-loading' )\n                        .addClass( 'slick-lazyload-error' );\n\n                    _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);\n\n                };\n\n                imageToLoad.src = imageSource;\n\n            });\n\n        }\n\n        if (_.options.centerMode === true) {\n            if (_.options.infinite === true) {\n                rangeStart = _.currentSlide + (_.options.slidesToShow / 2 + 1);\n                rangeEnd = rangeStart + _.options.slidesToShow + 2;\n            } else {\n                rangeStart = Math.max(0, _.currentSlide - (_.options.slidesToShow / 2 + 1));\n                rangeEnd = 2 + (_.options.slidesToShow / 2 + 1) + _.currentSlide;\n            }\n        } else {\n            rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide;\n            rangeEnd = Math.ceil(rangeStart + _.options.slidesToShow);\n            if (_.options.fade === true) {\n                if (rangeStart > 0) rangeStart--;\n                if (rangeEnd <= _.slideCount) rangeEnd++;\n            }\n        }\n\n        loadRange = _.$slider.find('.slick-slide').slice(rangeStart, rangeEnd);\n        loadImages(loadRange);\n\n        if (_.slideCount <= _.options.slidesToShow) {\n            cloneRange = _.$slider.find('.slick-slide');\n            loadImages(cloneRange);\n        } else\n        if (_.currentSlide >= _.slideCount - _.options.slidesToShow) {\n            cloneRange = _.$slider.find('.slick-cloned').slice(0, _.options.slidesToShow);\n            loadImages(cloneRange);\n        } else if (_.currentSlide === 0) {\n            cloneRange = _.$slider.find('.slick-cloned').slice(_.options.slidesToShow * -1);\n            loadImages(cloneRange);\n        }\n\n    };\n\n    LA_Slick.prototype.loadSlider = function() {\n\n        var _ = this;\n\n        _.setPosition();\n\n        _.$slideTrack.css({\n            opacity: 1\n        });\n\n        _.$slider.removeClass('slick-loading');\n\n        _.initUI();\n\n        if (_.options.lazyLoad === 'progressive') {\n            _.progressiveLazyLoad();\n        }\n\n    };\n\n    LA_Slick.prototype.next = LA_Slick.prototype.slickNext = function() {\n\n        var _ = this;\n\n        _.changeSlide({\n            data: {\n                message: 'next'\n            }\n        });\n\n    };\n\n    LA_Slick.prototype.orientationChange = function() {\n\n        var _ = this;\n\n        _.checkResponsive();\n        _.setPosition();\n\n    };\n\n    LA_Slick.prototype.pause = LA_Slick.prototype.slickPause = function() {\n\n        var _ = this;\n\n        _.autoPlayClear();\n        _.paused = true;\n\n    };\n\n    LA_Slick.prototype.play = LA_Slick.prototype.slickPlay = function() {\n\n        var _ = this;\n\n        _.autoPlay();\n        _.options.autoplay = true;\n        _.paused = false;\n        _.focussed = false;\n        _.interrupted = false;\n\n    };\n\n    LA_Slick.prototype.postSlide = function(index) {\n\n        var _ = this;\n\n        if( !_.unslicked ) {\n\n            _.$slider.trigger('afterChange', [_, index]);\n\n            _.animating = false;\n\n            _.setPosition();\n\n            _.swipeLeft = null;\n\n            if ( _.options.autoplay ) {\n                _.autoPlay();\n            }\n\n            if (_.options.accessibility === true) {\n                _.initADA();\n            }\n\n        }\n\n    };\n\n    LA_Slick.prototype.prev = LA_Slick.prototype.slickPrev = function() {\n\n        var _ = this;\n\n        _.changeSlide({\n            data: {\n                message: 'previous'\n            }\n        });\n\n    };\n\n    LA_Slick.prototype.preventDefault = function(event) {\n\n        event.preventDefault();\n\n    };\n\n    LA_Slick.prototype.progressiveLazyLoad = function( tryCount ) {\n\n        tryCount = tryCount || 1;\n\n        var _ = this,\n            $imgsToLoad = $( 'img[data-lazy]', _.$slider ),\n            image,\n            imageSource,\n            imageToLoad;\n\n        if ( $imgsToLoad.length ) {\n\n            image = $imgsToLoad.first();\n            imageSource = image.attr('data-lazy');\n            imageToLoad = document.createElement('img');\n\n            imageToLoad.onload = function() {\n\n                image\n                    .attr( 'src', imageSource )\n                    .removeAttr('data-lazy')\n                    .removeClass('slick-loading');\n\n                if ( _.options.adaptiveHeight === true ) {\n                    _.setPosition();\n                }\n\n                _.$slider.trigger('lazyLoaded', [ _, image, imageSource ]);\n                _.progressiveLazyLoad();\n\n            };\n\n            imageToLoad.onerror = function() {\n\n                if ( tryCount < 3 ) {\n\n                    /**\n                     * try to load the image 3 times,\n                     * leave a slight delay so we don't get\n                     * servers blocking the request.\n                     */\n                    setTimeout( function() {\n                        _.progressiveLazyLoad( tryCount + 1 );\n                    }, 500 );\n\n                } else {\n\n                    image\n                        .removeAttr( 'data-lazy' )\n                        .removeClass( 'slick-loading' )\n                        .addClass( 'slick-lazyload-error' );\n\n                    _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);\n\n                    _.progressiveLazyLoad();\n\n                }\n\n            };\n\n            imageToLoad.src = imageSource;\n\n        } else {\n\n            _.$slider.trigger('allImagesLoaded', [ _ ]);\n\n        }\n\n    };\n\n    LA_Slick.prototype.refresh = function( initializing ) {\n\n        var _ = this, currentSlide, lastVisibleIndex;\n\n        lastVisibleIndex = _.slideCount - _.options.slidesToShow;\n\n        // in non-infinite sliders, we don't want to go past the\n        // last visible index.\n        if( !_.options.infinite && ( _.currentSlide > lastVisibleIndex )) {\n            _.currentSlide = lastVisibleIndex;\n        }\n\n        // if less slides than to show, go to start.\n        if ( _.slideCount <= _.options.slidesToShow ) {\n            _.currentSlide = 0;\n\n        }\n\n        currentSlide = _.currentSlide;\n\n        _.destroy(true);\n\n        $.extend(_, _.initials, { currentSlide: currentSlide });\n\n        _.init();\n\n        if( !initializing ) {\n\n            _.changeSlide({\n                data: {\n                    message: 'index',\n                    index: currentSlide\n                }\n            }, false);\n\n        }\n\n    };\n\n    LA_Slick.prototype.registerBreakpoints = function() {\n\n        var _ = this, breakpoint, currentBreakpoint, l,\n            responsiveSettings = _.options.responsive || null;\n\n        if ( $.type(responsiveSettings) === 'array' && responsiveSettings.length ) {\n\n            _.respondTo = _.options.respondTo || 'window';\n\n            for ( breakpoint in responsiveSettings ) {\n\n                l = _.breakpoints.length-1;\n                currentBreakpoint = responsiveSettings[breakpoint].breakpoint;\n\n                if (responsiveSettings.hasOwnProperty(breakpoint)) {\n\n                    // loop through the breakpoints and cut out any existing\n                    // ones with the same breakpoint number, we don't want dupes.\n                    while( l >= 0 ) {\n                        if( _.breakpoints[l] && _.breakpoints[l] === currentBreakpoint ) {\n                            _.breakpoints.splice(l,1);\n                        }\n                        l--;\n                    }\n\n                    _.breakpoints.push(currentBreakpoint);\n                    _.breakpointSettings[currentBreakpoint] = responsiveSettings[breakpoint].settings;\n\n                }\n\n            }\n\n            _.breakpoints.sort(function(a, b) {\n                return ( _.options.mobileFirst ) ? a-b : b-a;\n            });\n\n        }\n\n    };\n\n    LA_Slick.prototype.reinit = function() {\n\n        var _ = this;\n\n        _.$slides =\n            _.$slideTrack\n                .children(_.options.slide)\n                .addClass('slick-slide');\n\n        _.slideCount = _.$slides.length;\n\n        if (_.currentSlide >= _.slideCount && _.currentSlide !== 0) {\n            _.currentSlide = _.currentSlide - _.options.slidesToScroll;\n        }\n\n        if (_.slideCount <= _.options.slidesToShow) {\n            _.currentSlide = 0;\n        }\n\n        _.registerBreakpoints();\n\n        _.setProps();\n        _.setupInfinite();\n        _.buildArrows();\n        _.updateArrows();\n        _.initArrowEvents();\n        _.buildDots();\n        _.updateDots();\n        _.initDotEvents();\n        _.cleanUpSlideEvents();\n        _.initSlideEvents();\n\n        _.checkResponsive(false, true);\n\n        if (_.options.focusOnSelect === true) {\n            $(_.$slideTrack).children().on('click.slick', _.selectHandler);\n        }\n\n        _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);\n\n        _.setPosition();\n        _.focusHandler();\n\n        _.paused = !_.options.autoplay;\n        _.autoPlay();\n\n        _.$slider.trigger('reInit', [_]);\n\n    };\n\n    LA_Slick.prototype.resize = function() {\n\n        var _ = this;\n\n        if ($(window).width() !== _.windowWidth) {\n            clearTimeout(_.windowDelay);\n            _.windowDelay = window.setTimeout(function() {\n                _.windowWidth = $(window).width();\n                _.checkResponsive();\n                if( !_.unslicked ) { _.setPosition(); }\n            }, 50);\n        }\n    };\n\n    LA_Slick.prototype.removeSlide = LA_Slick.prototype.slickRemove = function(index, removeBefore, removeAll) {\n\n        var _ = this;\n\n        if (typeof(index) === 'boolean') {\n            removeBefore = index;\n            index = removeBefore === true ? 0 : _.slideCount - 1;\n        } else {\n            index = removeBefore === true ? --index : index;\n        }\n\n        if (_.slideCount < 1 || index < 0 || index > _.slideCount - 1) {\n            return false;\n        }\n\n        _.unload();\n\n        if (removeAll === true) {\n            _.$slideTrack.children().remove();\n        } else {\n            _.$slideTrack.children(this.options.slide).eq(index).remove();\n        }\n\n        _.$slides = _.$slideTrack.children(this.options.slide);\n\n        _.$slideTrack.children(this.options.slide).detach();\n\n        _.$slideTrack.append(_.$slides);\n\n        _.$slidesCache = _.$slides;\n\n        _.reinit();\n\n    };\n\n    LA_Slick.prototype.setCSS = function(position) {\n\n        var _ = this,\n            positionProps = {},\n            x, y;\n\n        if (_.options.rtl === true) {\n            position = -position;\n        }\n        x = _.positionProp == 'left' ? Math.ceil(position) + 'px' : '0px';\n        y = _.positionProp == 'top' ? Math.ceil(position) + 'px' : '0px';\n\n        positionProps[_.positionProp] = position;\n\n        if (_.transformsEnabled === false) {\n            _.$slideTrack.css(positionProps);\n        } else {\n            positionProps = {};\n            if (_.cssTransitions === false) {\n                positionProps[_.animType] = 'translate(' + x + ', ' + y + ')';\n                _.$slideTrack.css(positionProps);\n            } else {\n                positionProps[_.animType] = 'translate3d(' + x + ', ' + y + ', 0px)';\n                _.$slideTrack.css(positionProps);\n            }\n        }\n\n    };\n\n    LA_Slick.prototype.setDimensions = function() {\n\n        var _ = this;\n\n        if (_.options.vertical === false) {\n            if (_.options.centerMode === true) {\n                _.$list.css({\n                    padding: ('0px ' + _.options.centerPadding)\n                });\n            }\n        } else {\n            _.$list.height(_.$slides.first().outerHeight(true) * _.options.slidesToShow);\n            if (_.options.centerMode === true) {\n                _.$list.css({\n                    padding: (_.options.centerPadding + ' 0px')\n                });\n            }\n        }\n\n        _.listWidth = _.$list.width();\n        _.listHeight = _.$list.height();\n\n\n        if (_.options.vertical === false && _.options.variableWidth === false) {\n            _.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow);\n            _.$slideTrack.width(Math.ceil((_.slideWidth * _.$slideTrack.children('.slick-slide').length)));\n\n        } else if (_.options.variableWidth === true) {\n            _.$slideTrack.width(5000 * _.slideCount);\n        } else {\n            _.slideWidth = Math.ceil(_.listWidth);\n            _.$slideTrack.height(Math.ceil((_.$slides.first().outerHeight(true) * _.$slideTrack.children('.slick-slide').length)));\n        }\n\n        var offset = _.$slides.first().outerWidth(true) - _.$slides.first().width();\n        if (_.options.variableWidth === false) _.$slideTrack.children('.slick-slide').width(_.slideWidth - offset);\n\n    };\n\n    LA_Slick.prototype.setFade = function() {\n\n        var _ = this,\n            targetLeft;\n\n        _.$slides.each(function(index, element) {\n            targetLeft = (_.slideWidth * index) * -1;\n            if (_.options.rtl === true) {\n                $(element).css({\n                    position: 'relative',\n                    right: targetLeft,\n                    top: 0,\n                    zIndex: _.options.zIndex - 2,\n                    opacity: 0\n                });\n            } else {\n                $(element).css({\n                    position: 'relative',\n                    left: targetLeft,\n                    top: 0,\n                    zIndex: _.options.zIndex - 2,\n                    opacity: 0\n                });\n            }\n        });\n\n        _.$slides.eq(_.currentSlide).css({\n            zIndex: _.options.zIndex - 1,\n            opacity: 1\n        });\n\n    };\n\n    LA_Slick.prototype.setHeight = function() {\n\n        var _ = this;\n\n        if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {\n            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);\n            _.$list.css('height', targetHeight);\n        }\n\n    };\n\n    LA_Slick.prototype.setOption =\n        LA_Slick.prototype.slickSetOption = function() {\n\n            /**\n             * accepts arguments in format of:\n             *\n             *  - for changing a single option's value:\n             *     .slick(\"setOption\", option, value, refresh )\n             *\n             *  - for changing a set of responsive options:\n             *     .slick(\"setOption\", 'responsive', [{}, ...], refresh )\n             *\n             *  - for updating multiple values at once (not responsive)\n             *     .slick(\"setOption\", { 'option': value, ... }, refresh )\n             */\n\n            var _ = this, l, item, option, value, refresh = false, type;\n\n            if( $.type( arguments[0] ) === 'object' ) {\n\n                option =  arguments[0];\n                refresh = arguments[1];\n                type = 'multiple';\n\n            } else if ( $.type( arguments[0] ) === 'string' ) {\n\n                option =  arguments[0];\n                value = arguments[1];\n                refresh = arguments[2];\n\n                if ( arguments[0] === 'responsive' && $.type( arguments[1] ) === 'array' ) {\n\n                    type = 'responsive';\n\n                } else if ( typeof arguments[1] !== 'undefined' ) {\n\n                    type = 'single';\n\n                }\n\n            }\n\n            if ( type === 'single' ) {\n\n                _.options[option] = value;\n\n\n            } else if ( type === 'multiple' ) {\n\n                $.each( option , function( opt, val ) {\n\n                    _.options[opt] = val;\n\n                });\n\n\n            } else if ( type === 'responsive' ) {\n\n                for ( item in value ) {\n\n                    if( $.type( _.options.responsive ) !== 'array' ) {\n\n                        _.options.responsive = [ value[item] ];\n\n                    } else {\n\n                        l = _.options.responsive.length-1;\n\n                        // loop through the responsive object and splice out duplicates.\n                        while( l >= 0 ) {\n\n                            if( _.options.responsive[l].breakpoint === value[item].breakpoint ) {\n\n                                _.options.responsive.splice(l,1);\n\n                            }\n\n                            l--;\n\n                        }\n\n                        _.options.responsive.push( value[item] );\n\n                    }\n\n                }\n\n            }\n\n            if ( refresh ) {\n\n                _.unload();\n                _.reinit();\n\n            }\n\n        };\n\n    LA_Slick.prototype.setPosition = function() {\n\n        var _ = this;\n\n        _.setDimensions();\n\n        _.setHeight();\n\n        if (_.options.fade === false) {\n            _.setCSS(_.getLeft(_.currentSlide));\n        } else {\n            _.setFade();\n        }\n\n        _.$slider.trigger('setPosition', [_]);\n\n    };\n\n    LA_Slick.prototype.setProps = function() {\n\n        var _ = this,\n            bodyStyle = document.body.style;\n\n        _.positionProp = _.options.vertical === true ? 'top' : 'left';\n\n        if (_.positionProp === 'top') {\n            _.$slider.addClass('slick-vertical');\n        } else {\n            _.$slider.removeClass('slick-vertical');\n        }\n\n        if (bodyStyle.WebkitTransition !== undefined ||\n            bodyStyle.MozTransition !== undefined ||\n            bodyStyle.msTransition !== undefined) {\n            if (_.options.useCSS === true) {\n                _.cssTransitions = true;\n            }\n        }\n\n        if ( _.options.fade ) {\n            if ( typeof _.options.zIndex === 'number' ) {\n                if( _.options.zIndex < 3 ) {\n                    _.options.zIndex = 3;\n                }\n            } else {\n                _.options.zIndex = _.defaults.zIndex;\n            }\n        }\n\n        if (bodyStyle.OTransform !== undefined) {\n            _.animType = 'OTransform';\n            _.transformType = '-o-transform';\n            _.transitionType = 'OTransition';\n            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;\n        }\n        if (bodyStyle.MozTransform !== undefined) {\n            _.animType = 'MozTransform';\n            _.transformType = '-moz-transform';\n            _.transitionType = 'MozTransition';\n            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.MozPerspective === undefined) _.animType = false;\n        }\n        if (bodyStyle.webkitTransform !== undefined) {\n            _.animType = 'webkitTransform';\n            _.transformType = '-webkit-transform';\n            _.transitionType = 'webkitTransition';\n            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;\n        }\n        if (bodyStyle.msTransform !== undefined) {\n            _.animType = 'msTransform';\n            _.transformType = '-ms-transform';\n            _.transitionType = 'msTransition';\n            if (bodyStyle.msTransform === undefined) _.animType = false;\n        }\n        if (bodyStyle.transform !== undefined && _.animType !== false) {\n            _.animType = 'transform';\n            _.transformType = 'transform';\n            _.transitionType = 'transition';\n        }\n        _.transformsEnabled = _.options.useTransform && (_.animType !== null && _.animType !== false);\n    };\n\n\n    LA_Slick.prototype.setSlideClasses = function(index) {\n\n        var _ = this,\n            centerOffset, allSlides, indexOffset, remainder;\n\n        allSlides = _.$slider\n            .find('.slick-slide')\n            .removeClass('slick-active slick-center slick-current')\n            .attr('aria-hidden', 'true');\n\n        _.$slides\n            .eq(index)\n            .addClass('slick-current');\n\n        if (_.options.centerMode === true) {\n\n            centerOffset = Math.floor(_.options.slidesToShow / 2);\n\n            if (_.options.infinite === true) {\n\n                if (index >= centerOffset && index <= (_.slideCount - 1) - centerOffset) {\n\n                    _.$slides\n                        .slice(index - centerOffset, index + centerOffset + 1)\n                        .addClass('slick-active')\n                        .attr('aria-hidden', 'false');\n\n                } else {\n\n                    indexOffset = _.options.slidesToShow + index;\n                    allSlides\n                        .slice(indexOffset - centerOffset + 1, indexOffset + centerOffset + 2)\n                        .addClass('slick-active')\n                        .attr('aria-hidden', 'false');\n\n                }\n\n                if (index === 0) {\n\n                    allSlides\n                        .eq(allSlides.length - 1 - _.options.slidesToShow)\n                        .addClass('slick-center');\n\n                } else if (index === _.slideCount - 1) {\n\n                    allSlides\n                        .eq(_.options.slidesToShow)\n                        .addClass('slick-center');\n\n                }\n\n            }\n\n            _.$slides\n                .eq(index)\n                .addClass('slick-center');\n\n        } else {\n\n            if (index >= 0 && index <= (_.slideCount - _.options.slidesToShow)) {\n\n                _.$slides\n                    .slice(index, index + _.options.slidesToShow)\n                    .addClass('slick-active')\n                    .attr('aria-hidden', 'false');\n\n            } else if (allSlides.length <= _.options.slidesToShow) {\n\n                allSlides\n                    .addClass('slick-active')\n                    .attr('aria-hidden', 'false');\n\n            } else {\n\n                remainder = _.slideCount % _.options.slidesToShow;\n                indexOffset = _.options.infinite === true ? _.options.slidesToShow + index : index;\n\n                if (_.options.slidesToShow == _.options.slidesToScroll && (_.slideCount - index) < _.options.slidesToShow) {\n\n                    allSlides\n                        .slice(indexOffset - (_.options.slidesToShow - remainder), indexOffset + remainder)\n                        .addClass('slick-active')\n                        .attr('aria-hidden', 'false');\n\n                } else {\n\n                    allSlides\n                        .slice(indexOffset, indexOffset + _.options.slidesToShow)\n                        .addClass('slick-active')\n                        .attr('aria-hidden', 'false');\n\n                }\n\n            }\n\n        }\n\n        if (_.options.lazyLoad === 'ondemand') {\n            _.lazyLoad();\n        }\n\n    };\n\n    LA_Slick.prototype.setupInfinite = function() {\n\n        var _ = this,\n            i, slideIndex, infiniteCount;\n\n        if (_.options.fade === true) {\n            _.options.centerMode = false;\n        }\n\n        if (_.options.infinite === true && _.options.fade === false) {\n\n            slideIndex = null;\n\n            if (_.slideCount > _.options.slidesToShow) {\n\n                if (_.options.centerMode === true) {\n                    infiniteCount = _.options.slidesToShow + 1;\n                } else {\n                    infiniteCount = _.options.slidesToShow;\n                }\n\n                for (i = _.slideCount; i > (_.slideCount -\n                infiniteCount); i -= 1) {\n                    slideIndex = i - 1;\n                    $(_.$slides[slideIndex]).clone(true).attr('id', '')\n                        .attr('data-slick-index', slideIndex - _.slideCount)\n                        .prependTo(_.$slideTrack).addClass('slick-cloned');\n                }\n                for (i = 0; i < infiniteCount; i += 1) {\n                    slideIndex = i;\n                    $(_.$slides[slideIndex]).clone(true).attr('id', '')\n                        .attr('data-slick-index', slideIndex + _.slideCount)\n                        .appendTo(_.$slideTrack).addClass('slick-cloned');\n                }\n                _.$slideTrack.find('.slick-cloned').find('[id]').each(function() {\n                    $(this).attr('id', '');\n                });\n\n            }\n\n        }\n\n    };\n\n    LA_Slick.prototype.interrupt = function( toggle ) {\n\n        var _ = this;\n\n        if( !toggle ) {\n            _.autoPlay();\n        }\n        _.interrupted = toggle;\n\n    };\n\n    LA_Slick.prototype.selectHandler = function(event) {\n\n        var _ = this;\n\n        var targetElement =\n            $(event.target).is('.slick-slide') ?\n                $(event.target) :\n                $(event.target).parents('.slick-slide');\n\n        var index = parseInt(targetElement.attr('data-slick-index'));\n\n        if (!index) index = 0;\n\n        if (_.slideCount <= _.options.slidesToShow) {\n\n            _.setSlideClasses(index);\n            _.asNavFor(index);\n            return;\n\n        }\n\n        _.slideHandler(index);\n\n    };\n\n    LA_Slick.prototype.slideHandler = function(index, sync, dontAnimate) {\n\n        var targetSlide, animSlide, oldSlide, slideLeft, targetLeft = null,\n            _ = this, navTarget;\n\n        sync = sync || false;\n\n        if (_.animating === true && _.options.waitForAnimate === true) {\n            return;\n        }\n\n        if (_.options.fade === true && _.currentSlide === index) {\n            return;\n        }\n\n        if (_.slideCount <= _.options.slidesToShow) {\n            return;\n        }\n\n        if (sync === false) {\n            _.asNavFor(index);\n        }\n\n        targetSlide = index;\n        targetLeft = _.getLeft(targetSlide);\n        slideLeft = _.getLeft(_.currentSlide);\n\n        _.currentLeft = _.swipeLeft === null ? slideLeft : _.swipeLeft;\n\n        if (_.options.infinite === false && _.options.centerMode === false && (index < 0 || index > _.getDotCount() * _.options.slidesToScroll)) {\n            if (_.options.fade === false) {\n                targetSlide = _.currentSlide;\n                if (dontAnimate !== true) {\n                    _.animateSlide(slideLeft, function() {\n                        _.postSlide(targetSlide);\n                    });\n                } else {\n                    _.postSlide(targetSlide);\n                }\n            }\n            return;\n        } else if (_.options.infinite === false && _.options.centerMode === true && (index < 0 || index > (_.slideCount - _.options.slidesToScroll))) {\n            if (_.options.fade === false) {\n                targetSlide = _.currentSlide;\n                if (dontAnimate !== true) {\n                    _.animateSlide(slideLeft, function() {\n                        _.postSlide(targetSlide);\n                    });\n                } else {\n                    _.postSlide(targetSlide);\n                }\n            }\n            return;\n        }\n\n        if ( _.options.autoplay ) {\n            clearInterval(_.autoPlayTimer);\n        }\n\n        if (targetSlide < 0) {\n            if (_.slideCount % _.options.slidesToScroll !== 0) {\n                animSlide = _.slideCount - (_.slideCount % _.options.slidesToScroll);\n            } else {\n                animSlide = _.slideCount + targetSlide;\n            }\n        } else if (targetSlide >= _.slideCount) {\n            if (_.slideCount % _.options.slidesToScroll !== 0) {\n                animSlide = 0;\n            } else {\n                animSlide = targetSlide - _.slideCount;\n            }\n        } else {\n            animSlide = targetSlide;\n        }\n\n        _.animating = true;\n\n        _.$slider.trigger('beforeChange', [_, _.currentSlide, animSlide]);\n\n        oldSlide = _.currentSlide;\n        _.currentSlide = animSlide;\n\n        _.setSlideClasses(_.currentSlide);\n\n        if ( _.options.asNavFor ) {\n\n            navTarget = _.getNavTarget();\n            navTarget = navTarget.slick('getSlick');\n\n            if ( navTarget.slideCount <= navTarget.options.slidesToShow ) {\n                navTarget.setSlideClasses(_.currentSlide);\n            }\n\n        }\n\n        _.updateDots();\n        _.updateArrows();\n\n        if (_.options.fade === true) {\n            if (dontAnimate !== true) {\n\n                _.fadeSlideOut(oldSlide);\n\n                _.fadeSlide(animSlide, function() {\n                    _.postSlide(animSlide);\n                });\n\n            } else {\n                _.postSlide(animSlide);\n            }\n            _.animateHeight();\n            return;\n        }\n\n        if (dontAnimate !== true) {\n            _.animateSlide(targetLeft, function() {\n                _.postSlide(animSlide);\n            });\n        } else {\n            _.postSlide(animSlide);\n        }\n\n    };\n\n    LA_Slick.prototype.startLoad = function() {\n\n        var _ = this;\n\n        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n\n            _.$prevArrow.hide();\n            _.$nextArrow.hide();\n\n        }\n\n        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n\n            _.$dots.hide();\n\n        }\n\n        _.$slider.addClass('slick-loading');\n\n    };\n\n    LA_Slick.prototype.swipeDirection = function() {\n\n        var xDist, yDist, r, swipeAngle, _ = this;\n\n        xDist = _.touchObject.startX - _.touchObject.curX;\n        yDist = _.touchObject.startY - _.touchObject.curY;\n        r = Math.atan2(yDist, xDist);\n\n        swipeAngle = Math.round(r * 180 / Math.PI);\n        if (swipeAngle < 0) {\n            swipeAngle = 360 - Math.abs(swipeAngle);\n        }\n\n        if ((swipeAngle <= 45) && (swipeAngle >= 0)) {\n            return (_.options.rtl === false ? 'left' : 'right');\n        }\n        if ((swipeAngle <= 360) && (swipeAngle >= 315)) {\n            return (_.options.rtl === false ? 'left' : 'right');\n        }\n        if ((swipeAngle >= 135) && (swipeAngle <= 225)) {\n            return (_.options.rtl === false ? 'right' : 'left');\n        }\n        if (_.options.verticalSwiping === true) {\n            if ((swipeAngle >= 35) && (swipeAngle <= 135)) {\n                return 'down';\n            } else {\n                return 'up';\n            }\n        }\n\n        return 'vertical';\n\n    };\n\n    LA_Slick.prototype.swipeEnd = function(event) {\n\n        var _ = this,\n            slideCount,\n            direction;\n\n        _.dragging = false;\n        _.interrupted = false;\n        _.shouldClick = ( _.touchObject.swipeLength > 10 ) ? false : true;\n\n        if ( _.touchObject.curX === undefined ) {\n            return false;\n        }\n\n        if ( _.touchObject.edgeHit === true ) {\n            _.$slider.trigger('edge', [_, _.swipeDirection() ]);\n        }\n\n        if ( _.touchObject.swipeLength >= _.touchObject.minSwipe ) {\n\n            direction = _.swipeDirection();\n\n            switch ( direction ) {\n\n                case 'left':\n                case 'down':\n\n                    slideCount =\n                        _.options.swipeToSlide ?\n                            _.checkNavigable( _.currentSlide + _.getSlideCount() ) :\n                        _.currentSlide + _.getSlideCount();\n\n                    _.currentDirection = 0;\n\n                    break;\n\n                case 'right':\n                case 'up':\n\n                    slideCount =\n                        _.options.swipeToSlide ?\n                            _.checkNavigable( _.currentSlide - _.getSlideCount() ) :\n                        _.currentSlide - _.getSlideCount();\n\n                    _.currentDirection = 1;\n\n                    break;\n\n                default:\n\n\n            }\n\n            if( direction != 'vertical' ) {\n\n                _.slideHandler( slideCount );\n                _.touchObject = {};\n                _.$slider.trigger('swipe', [_, direction ]);\n\n            }\n\n        } else {\n\n            if ( _.touchObject.startX !== _.touchObject.curX ) {\n\n                _.slideHandler( _.currentSlide );\n                _.touchObject = {};\n\n            }\n\n        }\n\n    };\n\n    LA_Slick.prototype.swipeHandler = function(event) {\n\n        var _ = this;\n\n        if ((_.options.swipe === false) || ('ontouchend' in document && _.options.swipe === false)) {\n            return;\n        } else if (_.options.draggable === false && event.type.indexOf('mouse') !== -1) {\n            return;\n        }\n\n        _.touchObject.fingerCount = event.originalEvent && event.originalEvent.touches !== undefined ?\n            event.originalEvent.touches.length : 1;\n\n        _.touchObject.minSwipe = _.listWidth / _.options\n                .touchThreshold;\n\n        if (_.options.verticalSwiping === true) {\n            _.touchObject.minSwipe = _.listHeight / _.options\n                    .touchThreshold;\n        }\n\n        switch (event.data.action) {\n\n            case 'start':\n                _.swipeStart(event);\n                break;\n\n            case 'move':\n                _.swipeMove(event);\n                break;\n\n            case 'end':\n                _.swipeEnd(event);\n                break;\n\n        }\n\n    };\n\n    LA_Slick.prototype.swipeMove = function(event) {\n\n        var _ = this,\n            edgeWasHit = false,\n            curLeft, swipeDirection, swipeLength, positionOffset, touches;\n\n        touches = event.originalEvent !== undefined ? event.originalEvent.touches : null;\n\n        if (!_.dragging || touches && touches.length !== 1) {\n            return false;\n        }\n\n        curLeft = _.getLeft(_.currentSlide);\n\n        _.touchObject.curX = touches !== undefined ? touches[0].pageX : event.clientX;\n        _.touchObject.curY = touches !== undefined ? touches[0].pageY : event.clientY;\n\n        _.touchObject.swipeLength = Math.round(Math.sqrt(\n            Math.pow(_.touchObject.curX - _.touchObject.startX, 2)));\n\n        if (_.options.verticalSwiping === true) {\n            _.touchObject.swipeLength = Math.round(Math.sqrt(\n                Math.pow(_.touchObject.curY - _.touchObject.startY, 2)));\n        }\n\n        swipeDirection = _.swipeDirection();\n\n        if (swipeDirection === 'vertical') {\n            return;\n        }\n\n        if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) {\n            event.preventDefault();\n        }\n\n        positionOffset = (_.options.rtl === false ? 1 : -1) * (_.touchObject.curX > _.touchObject.startX ? 1 : -1);\n        if (_.options.verticalSwiping === true) {\n            positionOffset = _.touchObject.curY > _.touchObject.startY ? 1 : -1;\n        }\n\n\n        swipeLength = _.touchObject.swipeLength;\n\n        _.touchObject.edgeHit = false;\n\n        if (_.options.infinite === false) {\n            if ((_.currentSlide === 0 && swipeDirection === 'right') || (_.currentSlide >= _.getDotCount() && swipeDirection === 'left')) {\n                swipeLength = _.touchObject.swipeLength * _.options.edgeFriction;\n                _.touchObject.edgeHit = true;\n            }\n        }\n\n        if (_.options.vertical === false) {\n            _.swipeLeft = curLeft + swipeLength * positionOffset;\n        } else {\n            _.swipeLeft = curLeft + (swipeLength * (_.$list.height() / _.listWidth)) * positionOffset;\n        }\n        if (_.options.verticalSwiping === true) {\n            _.swipeLeft = curLeft + swipeLength * positionOffset;\n        }\n\n        if (_.options.fade === true || _.options.touchMove === false) {\n            return false;\n        }\n\n        if (_.animating === true) {\n            _.swipeLeft = null;\n            return false;\n        }\n\n        _.setCSS(_.swipeLeft);\n\n    };\n\n    LA_Slick.prototype.swipeStart = function(event) {\n\n        var _ = this,\n            touches;\n\n        _.interrupted = true;\n\n        if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) {\n            _.touchObject = {};\n            return false;\n        }\n\n        if (event.originalEvent !== undefined && event.originalEvent.touches !== undefined) {\n            touches = event.originalEvent.touches[0];\n        }\n\n        _.touchObject.startX = _.touchObject.curX = touches !== undefined ? touches.pageX : event.clientX;\n        _.touchObject.startY = _.touchObject.curY = touches !== undefined ? touches.pageY : event.clientY;\n\n        _.dragging = true;\n\n    };\n\n    LA_Slick.prototype.unfilterSlides = LA_Slick.prototype.slickUnfilter = function() {\n\n        var _ = this;\n\n        if (_.$slidesCache !== null) {\n\n            _.unload();\n\n            _.$slideTrack.children(this.options.slide).detach();\n\n            _.$slidesCache.appendTo(_.$slideTrack);\n\n            _.reinit();\n\n        }\n\n    };\n\n    LA_Slick.prototype.unload = function() {\n\n        var _ = this;\n\n        $('.slick-cloned', _.$slider).remove();\n\n        if (_.$dots) {\n            _.$dots.remove();\n        }\n\n        if (_.$prevArrow && _.htmlExpr.test(_.options.prevArrow)) {\n            _.$prevArrow.remove();\n        }\n\n        if (_.$nextArrow && _.htmlExpr.test(_.options.nextArrow)) {\n            _.$nextArrow.remove();\n        }\n\n        _.$slides\n            .removeClass('slick-slide slick-active slick-visible slick-current')\n            .attr('aria-hidden', 'true')\n            .css('width', '');\n\n    };\n\n    LA_Slick.prototype.unslick = function(fromBreakpoint) {\n\n        var _ = this;\n        _.$slider.trigger('unslick', [_, fromBreakpoint]);\n        _.destroy();\n\n    };\n\n    LA_Slick.prototype.updateArrows = function() {\n\n        var _ = this,\n            centerOffset;\n\n        centerOffset = Math.floor(_.options.slidesToShow / 2);\n\n        if ( _.options.arrows === true &&\n            _.slideCount > _.options.slidesToShow &&\n            !_.options.infinite ) {\n\n            _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n            _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n            if (_.currentSlide === 0) {\n\n                _.$prevArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\n                _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n            } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) {\n\n                _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\n                _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n            } else if (_.currentSlide >= _.slideCount - 1 && _.options.centerMode === true) {\n\n                _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\n                _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n            }\n\n        }\n\n    };\n\n    LA_Slick.prototype.updateDots = function() {\n\n        var _ = this;\n\n        if (_.$dots !== null) {\n\n            _.$dots\n                .find('li')\n                .removeClass('slick-active')\n                .attr('aria-hidden', 'true');\n\n            _.$dots\n                .find('li')\n                .eq(Math.floor(_.currentSlide / _.options.slidesToScroll))\n                .addClass('slick-active')\n                .attr('aria-hidden', 'false');\n\n        }\n\n    };\n\n    LA_Slick.prototype.visibility = function() {\n\n        var _ = this;\n\n        if ( _.options.autoplay ) {\n\n            if ( document[_.hidden] ) {\n\n                _.interrupted = true;\n\n            } else {\n\n                _.interrupted = false;\n\n            }\n\n        }\n\n    };\n\n    $.fn.slick = function() {\n        var _ = this,\n            opt = arguments[0],\n            args = Array.prototype.slice.call(arguments, 1),\n            l = _.length,\n            i,\n            ret;\n        for (i = 0; i < l; i++) {\n            if (typeof opt == 'object' || typeof opt == 'undefined')\n                _[i].slick = new LA_Slick(_[i], opt);\n            else\n                ret = _[i].slick[opt].apply(_[i].slick, args);\n            if (typeof ret != 'undefined') return ret;\n        }\n        return _;\n    };\n\n}));","var AwesomeFilter = function (options) {\r\n    'use strict';\r\n\r\n    var $ = jQuery; // enable jQuery\r\n    var self = this;\r\n\r\n    self.options = options;\r\n\r\n    self.bind = function () {\r\n        $(self.options.control_selector, self.options.controls).on('click', function () {\r\n            var filter = $(this).attr('data-filter');\r\n            filter = filter == '*' ? filter : '.awesome-filter-' + filter;\r\n            $('.filter-item ' + self.options.control_selector, self.options.controls).removeClass(self.options.control_active);\r\n            $(this).addClass(self.options.control_active);\r\n\r\n            self.filter(filter);\r\n        });\r\n    }\r\n\r\n    self.filter = function(filter){\r\n\r\n        $('.filter-item', self.options.container).hide();\r\n        $('.filter-item' + filter, self.options.container).show();\r\n    }\r\n\r\n    self.init = function () {\r\n        self.bind();\r\n    }\r\n}","/*\r\n * jQuery throttle / debounce - v1.1 - 3/7/2010\r\n * http://benalman.com/projects/jquery-throttle-debounce-plugin/\r\n *\r\n * Copyright (c) 2010 \"Cowboy\" Ben Alman\r\n * Dual licensed under the MIT and GPL licenses.\r\n * http://benalman.com/about/license/\r\n */\r\n(function(b,c){var $=b.jQuery||b.Cowboy||(b.Cowboy={}),a;$.throttle=a=function(e,f,j,i){var h,d=0;if(typeof f!==\"boolean\"){i=j;j=f;f=c}function g(){var o=this,m=+new Date()-d,n=arguments;function l(){d=+new Date();j.apply(o,n)}function k(){h=c}if(i&&!h){l()}h&&clearTimeout(h);if(i===c&&m>e){l()}else{if(f!==true){h=setTimeout(i?k:l,i===c?e-m:e)}}}if($.guid){g.guid=j.guid=j.guid||$.guid++}return g};$.debounce=function(d,e,f){return f===c?a(d,e,false):a(d,f,e!==false)}})(this);\r\n\r\n// Viewport Helper\r\n// --------------------------------------------\r\n//\r\n// * **Class:** Viewport\r\n// * **Version:** 1.0\r\n// * **Modified:** 06/26/2013\r\n// * **Author:** Glen Cheney\r\n// * **Dependencies:** jQuery 1.7+, SONY Settings, throttle/debounce\r\n//\r\n// *Notes:*\r\n//\r\n// If you need to be notified when an element is scrolled into view, use this module.\r\n// This module keeps track of all elements that want to be watched and caches their offsets\r\n// and dimensions in order to keep scrolling as smooth as possible.\r\n//\r\n// *Example Usage:*\r\n//\r\n//      Viewport.add({\r\n//        element: document.getElementById('some-wrapper'),\r\n//        threshold: '50%',\r\n//        enter: function( element ) {\r\n//          console.log('the top of \"element\" is 50% in view');\r\n//        },\r\n//        leave: function() {\r\n//          console.log('bottom of element has left the viewport');\r\n//        }\r\n//      });\r\n//\r\n// *Viewport.add parameters:*\r\n//\r\n// * `element` is a DOM element and `callback` is a function. `this` in the callback is the element.\r\n// * Using an options object, a `threshold` can be set.\r\n//   It is either an integer value from the bottom of the window, a string percentage, or a float\r\n//   between 0 and 1 which represents the percent.\r\n//\r\n\r\nvar AwesomeViewport = (function( $ ) {\r\n\r\n    'use strict';\r\n\r\n    var instance = null;\r\n    var $window = $(window);\r\n\r\n    var ViewportItem = function( options ) {\r\n        var self = this;\r\n\r\n        // Get defaults\r\n        $.extend( self, ViewportItem.options, options, ViewportItem.settings );\r\n\r\n        // The whole point is to have a callback function.\r\n        // Don't do anything if it's not given\r\n        if ( !$.isFunction( self.enter ) ) {\r\n            throw new TypeError('Viewport.add :: No `enter` function provided in Viewport options.');\r\n        }\r\n\r\n        // Threshold can be a percentage. Parse it.\r\n        if ( (typeof self.threshold === 'string' && self.threshold.indexOf('%') > -1 ) ) {\r\n            self.isThresholdPercentage = true;\r\n            self.threshold = parseFloat( self.threshold ) / 100;\r\n\r\n        } else if ( self.threshold < 1 && self.threshold > 0 ) {\r\n            self.isThresholdPercentage = true;\r\n        }\r\n\r\n        self.hasLeaveCallback = $.isFunction( self.leave );\r\n        self.$element = $( self.element );\r\n\r\n        // Cache element's offsets and dimensions\r\n        self.update();\r\n    };\r\n\r\n    ViewportItem.prototype.update = function() {\r\n        var self = this;\r\n\r\n        self.offset = self.$element.offset();\r\n        self.height = self.$element.height();\r\n        self.width = self.$element.width();\r\n\r\n    };\r\n\r\n    ViewportItem.options = {\r\n        threshold: 200,\r\n        delay: 0\r\n    };\r\n\r\n    ViewportItem.settings = {\r\n        triggered: false,\r\n        isThresholdPercentage: false\r\n    };\r\n\r\n    var Viewport = function() {\r\n        this.init();\r\n    };\r\n\r\n    Viewport.prototype = {\r\n\r\n        init : function() {\r\n            var self = this;\r\n\r\n            self.list = [];\r\n            self.lastScrollY = 0;\r\n            self.windowHeight = $window.height();\r\n            self.windowWidth = $window.width();\r\n            self.throttleTime = 100;\r\n\r\n            self.onResize();\r\n            self.bindEvents();\r\n\r\n            // What's nice here is that rAF won't execute until the user is on this tab,\r\n            // so if they open the page in a new tab which they aren't looking at,\r\n            // this will execute when they come back to that tab\r\n            self.willProcessNextFrame = true;\r\n            requestAnimationFrame(function() {\r\n                self.setScrollTop();\r\n                self.process();\r\n                self.willProcessNextFrame = false;\r\n            });\r\n        },\r\n\r\n        bindEvents : function() {\r\n            var self = this,\r\n                refresh;\r\n\r\n            // Updates offsets after a zero timeout\r\n            refresh = function() {\r\n                setTimeout(function refreshWithDelay() {\r\n                    self.refresh();\r\n                }, 0);\r\n            };\r\n\r\n            // Listen for global resize\r\n            $window.on('resize.viewport', $.proxy( self.onResize, self ));\r\n\r\n            // Throttle scrolling because it doesn't need to be super accurate\r\n            $window.on('scroll.viewport', $.throttle( self.throttleTime, $.proxy( self.onScroll, self ) ));\r\n\r\n            self.hasActiveHandlers = true;\r\n        },\r\n\r\n        unbindEvents : function() {\r\n            $window.off('.viewport');\r\n\r\n            this.hasActiveHandlers = false;\r\n        },\r\n\r\n        maybeUnbindEvents : function() {\r\n            var self = this;\r\n\r\n            // Not currently watching anything, unbind events\r\n            if ( !self.list.length ) {\r\n                self.unbindEvents();\r\n            }\r\n        },\r\n\r\n        add : function( viewportItem ) {\r\n            var self = this;\r\n\r\n            self.list.push( viewportItem );\r\n\r\n            // Event handlers are removed if a callback is triggered and the\r\n            // watch list is empty. Because modules are instantiated asynchronously,\r\n            // another module could potentially add itself to the watch list when the events\r\n            // have been unbound.\r\n            // Check here if events have been unbound and bind them again if they have\r\n            if ( !self.hasActiveHandlers ) {\r\n                self.bindEvents();\r\n            }\r\n\r\n            if ( !self.willProcessNextFrame ) {\r\n                self.willProcessNextFrame = true;\r\n                requestAnimationFrame(function() {\r\n                    self.willProcessNextFrame = false;\r\n                    self.process();\r\n                });\r\n            }\r\n        },\r\n\r\n        saveDimensions : function() {\r\n            var self = this;\r\n\r\n            $.each(self.list, function( i, viewportItem ) {\r\n                viewportItem.update();\r\n            });\r\n\r\n            // self.documentHeight\r\n            self.windowHeight = $window.height();\r\n            self.windowWidth = $window.width();\r\n        },\r\n\r\n        // Throttled scroll event\r\n        onScroll : function() {\r\n            var self = this;\r\n\r\n            // No point in doing anything if there aren't any viewports to watch\r\n            if ( !self.list.length ) {\r\n                return;\r\n            }\r\n\r\n            self.refresh();\r\n\r\n            // Save the new scroll top\r\n            self.setScrollTop();\r\n\r\n            self.process();\r\n        },\r\n\r\n        // Debounced resize event\r\n        onResize : function() {\r\n            this.refresh();\r\n        },\r\n\r\n        refresh : function() {\r\n\r\n            // No point in doing anything if there aren't any viewports to watch\r\n            if ( !this.list.length ) {\r\n                return;\r\n            }\r\n\r\n            // Update offsets and width/height for each viewport item\r\n            this.saveDimensions();\r\n\r\n        },\r\n\r\n        isInViewport : function( viewportItem ) {\r\n            var self = this,\r\n                offset = viewportItem.offset,\r\n                threshold = viewportItem.threshold,\r\n                percentage = threshold,\r\n                st = self.lastScrollY,\r\n                isTopInView;\r\n\r\n            if ( viewportItem.isThresholdPercentage ) {\r\n                threshold = 0;\r\n            }\r\n\r\n            // Other checks could be added here in the future\r\n            isTopInView = self.isTopInView( st, self.windowHeight, offset.top, viewportItem.height, threshold );\r\n\r\n            // If the top isn't in view with zero threshold,\r\n            // don't bother checking if it's at a percent of the window\r\n            if ( isTopInView && viewportItem.isThresholdPercentage ) {\r\n\r\n                isTopInView = self.isTopPastPercent( st, self.windowHeight, offset.top, viewportItem.height, percentage );\r\n            }\r\n\r\n            return isTopInView;\r\n        },\r\n\r\n        // If  the top of the element (plus the threshold) is past the viewport's top\r\n        // and the top of the element (plus the threshold) is not past the viewport's bottom.\r\n        // Then the top is in view.\r\n        isTopInView : function( viewportTop, viewportHeight, elementTop, elementHeight, threshold ) {\r\n            var viewportBottom = viewportTop + viewportHeight;\r\n            return (elementTop + threshold) >= viewportTop && (elementTop + threshold) < viewportBottom;\r\n        },\r\n\r\n        isTopPastPercent : function( viewportTop, viewportHeight, elementTop, elementHeight, percentage ) {\r\n\r\n            var viewportBottom = viewportTop + viewportHeight,\r\n                distFromViewportBottomToElementTop = viewportBottom - elementTop,\r\n                percentFromBottom = distFromViewportBottomToElementTop / viewportHeight;\r\n            return percentFromBottom >= percentage;\r\n        },\r\n\r\n        isOutOfViewport : function( viewport, side ) {\r\n            var self = this,\r\n                offset = viewport.offset,\r\n                st = self.lastScrollY,\r\n                bool;\r\n\r\n            if ( side === 'bottom' ) {\r\n                bool = !self.isBottomInView( st, self.windowHeight, offset.top, viewport.height );\r\n            }\r\n\r\n            return bool;\r\n        },\r\n\r\n        isBottomInView : function( viewportTop, viewportHeight, elementTop, elementHeight ) {\r\n            var viewportBottom = viewportTop + viewportHeight,\r\n                elementBottom = elementTop + elementHeight;\r\n            return elementBottom > viewportTop && elementBottom <= viewportBottom;\r\n        },\r\n\r\n        triggerEnter : function( viewportItem ) {\r\n            var self = this;\r\n            // Queue up the callback with the delay. Default is 0\r\n            setTimeout(function() {\r\n                viewportItem.enter.call( viewportItem.element, viewportItem );\r\n\r\n            }, viewportItem.delay);\r\n\r\n\r\n\r\n            if ( $.isFunction( viewportItem.leave ) ) {\r\n                viewportItem.triggered = true;\r\n\r\n                // If the leave property is not a function,\r\n                // The module no longer needs to watch it, so remove from list\r\n                // However, the list may have been modified already in this loop, so find the\r\n                // index of the viewport item instead of using the loop index.\r\n            } else {\r\n                self.list.splice( $.inArray( viewportItem, self.list ), 1 );\r\n            }\r\n\r\n            // If there are no more, unbind from scroll and resize events\r\n            self.maybeUnbindEvents();\r\n        },\r\n\r\n        triggerLeave : function( viewportItem ) {\r\n            // var self = this;\r\n\r\n            // Queue up the callback with the delay. Default is 0\r\n            setTimeout(function() {\r\n                viewportItem.leave.call( viewportItem.element, viewportItem );\r\n            }, viewportItem.delay);\r\n\r\n            viewportItem.triggered = false;\r\n        },\r\n\r\n        setScrollTop : function() {\r\n            // Save the new scroll top\r\n            this.lastScrollY = $window.scrollTop();\r\n        },\r\n\r\n        process : function() {\r\n            var self = this,\r\n\r\n            // The list can possibly be modified mid loop,\r\n            // so the loop needs a copy of the variable which won't be modified\r\n                list = $.extend( [], self.list );\r\n\r\n            $.each(list, function( i, viewportItem ) {\r\n                var isInViewport = self.isInViewport( viewportItem ),\r\n                    isBottomOutOfView = viewportItem.hasLeaveCallback && self.isOutOfViewport( viewportItem, 'bottom' );\r\n\r\n                // If the enter callback hasn't been triggerd and it's in the viewport,\r\n                // trigger the enter callback\r\n                if ( !viewportItem.triggered && isInViewport ) {\r\n                    return self.triggerEnter( viewportItem );\r\n                }\r\n\r\n                // This viewport has already come into view once and now it is out of view\r\n                // It's not in view, the bottom is out of view, the list item's enter has been triggered\r\n                if ( !isInViewport && isBottomOutOfView && viewportItem.triggered ) {\r\n                    return self.triggerLeave( viewportItem );\r\n                }\r\n            });\r\n        }\r\n    };\r\n\r\n\r\n    Viewport.add = function( options ) {\r\n        var instance = Viewport.getInstance();\r\n        return instance.add( new ViewportItem( options ) );\r\n    };\r\n\r\n\r\n    Viewport.refresh = function() {\r\n        Viewport.getInstance().refresh();\r\n    };\r\n\r\n\r\n    Viewport.getInstance = function() {\r\n        if ( !instance ) {\r\n            instance = new Viewport();\r\n        }\r\n\r\n        return instance;\r\n    };\r\n\r\n\r\n    return Viewport;\r\n}( jQuery ));"],"sourceRoot":"/source/"}