From 2fcea871bed9f759ae995b52870d3186d52d797c Mon Sep 17 00:00:00 2001 From: Bellord Date: Thu, 11 Jun 2026 20:05:10 +0300 Subject: [PATCH] upLG --- assets/lightGallery/README.md | 219 ++ assets/lightGallery/css/lg-autoplay.css | 39 + assets/lightGallery/css/lg-autoplay.css.map | 1 + assets/lightGallery/css/lg-comments.css | 119 + assets/lightGallery/css/lg-comments.css.map | 1 + assets/lightGallery/css/lg-fullscreen.css | 8 + assets/lightGallery/css/lg-fullscreen.css.map | 1 + assets/lightGallery/css/lg-medium-zoom.css | 15 + .../lightGallery/css/lg-medium-zoom.css.map | 1 + assets/lightGallery/css/lg-pager.css | 82 + assets/lightGallery/css/lg-pager.css.map | 1 + .../lightGallery/css/lg-relative-caption.css | 16 + .../css/lg-relative-caption.css.map | 1 + assets/lightGallery/css/lg-rotate.css | 49 + assets/lightGallery/css/lg-rotate.css.map | 1 + assets/lightGallery/css/lg-share.css | 127 + assets/lightGallery/css/lg-share.css.map | 1 + assets/lightGallery/css/lg-thumbnail.css | 93 + assets/lightGallery/css/lg-thumbnail.css.map | 1 + assets/lightGallery/css/lg-transitions.css | 845 +++++ .../lightGallery/css/lg-transitions.css.map | 1 + assets/lightGallery/css/lg-video.css | 135 + assets/lightGallery/css/lg-video.css.map | 1 + assets/lightGallery/css/lg-zoom.css | 104 + assets/lightGallery/css/lg-zoom.css.map | 1 + .../lightGallery/css/lightgallery-bundle.css | 1444 +++++++++ .../css/lightgallery-bundle.css.map | 1 + .../css/lightgallery-bundle.min.css | 1 + assets/lightGallery/css/lightgallery-core.css | 350 +++ .../css/lightgallery-core.css.map | 1 + assets/lightGallery/css/lightgallery.css | 668 ++++ assets/lightGallery/css/lightgallery.css.map | 1 + assets/lightGallery/fonts/lg.eot | Bin 2760 -> 0 bytes assets/lightGallery/fonts/lg.svg | 29 +- assets/lightGallery/fonts/lg.ttf | Bin 2616 -> 4756 bytes assets/lightGallery/fonts/lg.woff | Bin 2692 -> 4832 bytes assets/lightGallery/fonts/lg.woff2 | Bin 0 -> 2332 bytes assets/lightGallery/images/loading.gif | Bin 0 -> 4178 bytes assets/lightGallery/index.d.ts | 4 + assets/lightGallery/lg-events.d.ts | 300 ++ assets/lightGallery/lg-plugin.d.ts | 7 + assets/lightGallery/lg-settings.d.ts | 425 +++ assets/lightGallery/lg-utils.d.ts | 228 ++ assets/lightGallery/lgQuery.d.ts | 56 + assets/lightGallery/lightGallery.css | 916 ------ assets/lightGallery/lightGallery.js | 1823 ----------- assets/lightGallery/lightgallery-2.9.0.tgz | Bin 0 -> 1259149 bytes assets/lightGallery/lightgallery.d.ts | 305 ++ assets/lightGallery/lightgallery.es5.js | 2786 ++++++++++++++++ assets/lightGallery/lightgallery.es5.js.map | 1 + assets/lightGallery/lightgallery.min.js | 8 + assets/lightGallery/lightgallery.umd.js | 2794 +++++++++++++++++ assets/lightGallery/lightgallery.umd.js.map | 1 + assets/lightGallery/package.json | 33 + .../autoplay/lg-autoplay-settings.d.ts | 38 + .../plugins/autoplay/lg-autoplay.d.ts | 22 + .../plugins/autoplay/lg-autoplay.es5.js | 250 ++ .../plugins/autoplay/lg-autoplay.es5.js.map | 1 + .../plugins/autoplay/lg-autoplay.min.js | 8 + .../plugins/autoplay/lg-autoplay.umd.js | 258 ++ .../plugins/autoplay/lg-autoplay.umd.js.map | 1 + .../plugins/autoplay/package.json | 7 + .../plugins/comment/lg-comment-settings.d.ts | 33 + .../plugins/comment/lg-comment.d.ts | 25 + .../plugins/comment/lg-comment.es5.js | 205 ++ .../plugins/comment/lg-comment.es5.js.map | 1 + .../plugins/comment/lg-comment.min.js | 8 + .../plugins/comment/lg-comment.umd.js | 213 ++ .../plugins/comment/lg-comment.umd.js.map | 1 + .../lightGallery/plugins/comment/package.json | 7 + .../fullscreen/lg-fullscreen-settings.d.ts | 14 + .../plugins/fullscreen/lg-fullscreen.d.ts | 16 + .../plugins/fullscreen/lg-fullscreen.es5.js | 135 + .../fullscreen/lg-fullscreen.es5.js.map | 1 + .../plugins/fullscreen/lg-fullscreen.min.js | 8 + .../plugins/fullscreen/lg-fullscreen.umd.js | 143 + .../fullscreen/lg-fullscreen.umd.js.map | 1 + .../plugins/fullscreen/package.json | 7 + .../plugins/hash/lg-hash-settings.d.ts | 16 + assets/lightGallery/plugins/hash/lg-hash.d.ts | 23 + .../lightGallery/plugins/hash/lg-hash.es5.js | 198 ++ .../plugins/hash/lg-hash.es5.js.map | 1 + .../lightGallery/plugins/hash/lg-hash.min.js | 8 + .../lightGallery/plugins/hash/lg-hash.umd.js | 206 ++ .../plugins/hash/lg-hash.umd.js.map | 1 + assets/lightGallery/plugins/hash/package.json | 7 + .../mediumZoom/lg-medium-zoom-settings.d.ts | 16 + .../plugins/mediumZoom/lg-medium-zoom.d.ts | 12 + .../plugins/mediumZoom/lg-medium-zoom.es5.js | 132 + .../mediumZoom/lg-medium-zoom.es5.js.map | 1 + .../plugins/mediumZoom/lg-medium-zoom.min.js | 8 + .../plugins/mediumZoom/lg-medium-zoom.umd.js | 140 + .../mediumZoom/lg-medium-zoom.umd.js.map | 1 + .../plugins/mediumZoom/package.json | 7 + .../plugins/pager/lg-pager-settings.d.ts | 7 + .../lightGallery/plugins/pager/lg-pager.d.ts | 13 + .../plugins/pager/lg-pager.es5.js | 139 + .../plugins/pager/lg-pager.es5.js.map | 1 + .../plugins/pager/lg-pager.min.js | 8 + .../plugins/pager/lg-pager.umd.js | 147 + .../plugins/pager/lg-pager.umd.js.map | 1 + .../lightGallery/plugins/pager/package.json | 7 + .../lg-relative-caption-settings.d.ts | 7 + .../relativeCaption/lg-relative-caption.d.ts | 14 + .../lg-relative-caption.es5.js | 154 + .../lg-relative-caption.es5.js.map | 1 + .../lg-relative-caption.min.js | 8 + .../lg-relative-caption.umd.js | 162 + .../lg-relative-caption.umd.js.map | 1 + .../plugins/relativeCaption/package.json | 7 + .../plugins/rotate/lg-rotate-settings.d.ts | 45 + .../plugins/rotate/lg-rotate.d.ts | 24 + .../plugins/rotate/lg-rotate.es5.js | 274 ++ .../plugins/rotate/lg-rotate.es5.js.map | 1 + .../plugins/rotate/lg-rotate.min.js | 8 + .../plugins/rotate/lg-rotate.umd.js | 282 ++ .../plugins/rotate/lg-rotate.umd.js.map | 1 + .../lightGallery/plugins/rotate/package.json | 7 + .../plugins/share/lg-fb-share-utils.d.ts | 2 + .../share/lg-pinterest-share-utils.d.ts | 2 + .../plugins/share/lg-share-settings.d.ts | 57 + .../lightGallery/plugins/share/lg-share.d.ts | 15 + .../plugins/share/lg-share.es5.js | 219 ++ .../plugins/share/lg-share.es5.js.map | 1 + .../plugins/share/lg-share.min.js | 8 + .../plugins/share/lg-share.umd.js | 227 ++ .../plugins/share/lg-share.umd.js.map | 1 + .../plugins/share/lg-twitter-share-utils.d.ts | 2 + .../lightGallery/plugins/share/package.json | 7 + assets/lightGallery/plugins/share/types.d.ts | 6 + .../thumbnail/lg-thumbnail-settings.d.ts | 70 + .../plugins/thumbnail/lg-thumbnail.d.ts | 48 + .../plugins/thumbnail/lg-thumbnail.es5.js | 487 +++ .../plugins/thumbnail/lg-thumbnail.es5.js.map | 1 + .../plugins/thumbnail/lg-thumbnail.min.js | 8 + .../plugins/thumbnail/lg-thumbnail.umd.js | 495 +++ .../plugins/thumbnail/lg-thumbnail.umd.js.map | 1 + .../plugins/thumbnail/package.json | 7 + .../plugins/video/lg-video-settings.d.ts | 71 + .../plugins/video/lg-video-utils.d.ts | 10 + .../lightGallery/plugins/video/lg-video.d.ts | 104 + .../plugins/video/lg-video.es5.js | 545 ++++ .../plugins/video/lg-video.es5.js.map | 1 + .../plugins/video/lg-video.min.js | 8 + .../plugins/video/lg-video.umd.js | 553 ++++ .../plugins/video/lg-video.umd.js.map | 1 + .../lightGallery/plugins/video/package.json | 7 + assets/lightGallery/plugins/video/types.d.ts | 8 + .../lg-vimeo-thumbnail-settings.d.ts | 11 + .../vimeoThumbnail/lg-vimeo-thumbnail.d.ts | 14 + .../vimeoThumbnail/lg-vimeo-thumbnail.es5.js | 182 ++ .../lg-vimeo-thumbnail.es5.js.map | 1 + .../vimeoThumbnail/lg-vimeo-thumbnail.min.js | 8 + .../vimeoThumbnail/lg-vimeo-thumbnail.umd.js | 190 ++ .../lg-vimeo-thumbnail.umd.js.map | 1 + .../plugins/vimeoThumbnail/package.json | 7 + .../plugins/zoom/lg-zoom-settings.d.ts | 51 + assets/lightGallery/plugins/zoom/lg-zoom.d.ts | 108 + .../lightGallery/plugins/zoom/lg-zoom.es5.js | 980 ++++++ .../plugins/zoom/lg-zoom.es5.js.map | 1 + .../lightGallery/plugins/zoom/lg-zoom.min.js | 8 + .../lightGallery/plugins/zoom/lg-zoom.umd.js | 988 ++++++ .../plugins/zoom/lg-zoom.umd.js.map | 1 + assets/lightGallery/plugins/zoom/package.json | 7 + assets/lightGallery/types.d.ts | 40 + assets/toolkit/toolkit.css | 20 +- assets/toolkit/toolkit.js | 34 +- assets/toolkit/toolkit.min.js | 2 +- templates/form/field/material/input/edit.php | 18 +- .../form/field/material/textarea/edit.php | 67 + templates/svg/rent.php | 1 + 171 files changed, 20476 insertions(+), 2780 deletions(-) create mode 100644 assets/lightGallery/README.md create mode 100644 assets/lightGallery/css/lg-autoplay.css create mode 100644 assets/lightGallery/css/lg-autoplay.css.map create mode 100644 assets/lightGallery/css/lg-comments.css create mode 100644 assets/lightGallery/css/lg-comments.css.map create mode 100644 assets/lightGallery/css/lg-fullscreen.css create mode 100644 assets/lightGallery/css/lg-fullscreen.css.map create mode 100644 assets/lightGallery/css/lg-medium-zoom.css create mode 100644 assets/lightGallery/css/lg-medium-zoom.css.map create mode 100644 assets/lightGallery/css/lg-pager.css create mode 100644 assets/lightGallery/css/lg-pager.css.map create mode 100644 assets/lightGallery/css/lg-relative-caption.css create mode 100644 assets/lightGallery/css/lg-relative-caption.css.map create mode 100644 assets/lightGallery/css/lg-rotate.css create mode 100644 assets/lightGallery/css/lg-rotate.css.map create mode 100644 assets/lightGallery/css/lg-share.css create mode 100644 assets/lightGallery/css/lg-share.css.map create mode 100644 assets/lightGallery/css/lg-thumbnail.css create mode 100644 assets/lightGallery/css/lg-thumbnail.css.map create mode 100644 assets/lightGallery/css/lg-transitions.css create mode 100644 assets/lightGallery/css/lg-transitions.css.map create mode 100644 assets/lightGallery/css/lg-video.css create mode 100644 assets/lightGallery/css/lg-video.css.map create mode 100644 assets/lightGallery/css/lg-zoom.css create mode 100644 assets/lightGallery/css/lg-zoom.css.map create mode 100644 assets/lightGallery/css/lightgallery-bundle.css create mode 100644 assets/lightGallery/css/lightgallery-bundle.css.map create mode 100644 assets/lightGallery/css/lightgallery-bundle.min.css create mode 100644 assets/lightGallery/css/lightgallery-core.css create mode 100644 assets/lightGallery/css/lightgallery-core.css.map create mode 100644 assets/lightGallery/css/lightgallery.css create mode 100644 assets/lightGallery/css/lightgallery.css.map delete mode 100644 assets/lightGallery/fonts/lg.eot create mode 100644 assets/lightGallery/fonts/lg.woff2 create mode 100644 assets/lightGallery/images/loading.gif create mode 100644 assets/lightGallery/index.d.ts create mode 100644 assets/lightGallery/lg-events.d.ts create mode 100644 assets/lightGallery/lg-plugin.d.ts create mode 100644 assets/lightGallery/lg-settings.d.ts create mode 100644 assets/lightGallery/lg-utils.d.ts create mode 100644 assets/lightGallery/lgQuery.d.ts delete mode 100644 assets/lightGallery/lightGallery.css delete mode 100644 assets/lightGallery/lightGallery.js create mode 100644 assets/lightGallery/lightgallery-2.9.0.tgz create mode 100644 assets/lightGallery/lightgallery.d.ts create mode 100644 assets/lightGallery/lightgallery.es5.js create mode 100644 assets/lightGallery/lightgallery.es5.js.map create mode 100644 assets/lightGallery/lightgallery.min.js create mode 100644 assets/lightGallery/lightgallery.umd.js create mode 100644 assets/lightGallery/lightgallery.umd.js.map create mode 100644 assets/lightGallery/package.json create mode 100644 assets/lightGallery/plugins/autoplay/lg-autoplay-settings.d.ts create mode 100644 assets/lightGallery/plugins/autoplay/lg-autoplay.d.ts create mode 100644 assets/lightGallery/plugins/autoplay/lg-autoplay.es5.js create mode 100644 assets/lightGallery/plugins/autoplay/lg-autoplay.es5.js.map create mode 100644 assets/lightGallery/plugins/autoplay/lg-autoplay.min.js create mode 100644 assets/lightGallery/plugins/autoplay/lg-autoplay.umd.js create mode 100644 assets/lightGallery/plugins/autoplay/lg-autoplay.umd.js.map create mode 100644 assets/lightGallery/plugins/autoplay/package.json create mode 100644 assets/lightGallery/plugins/comment/lg-comment-settings.d.ts create mode 100644 assets/lightGallery/plugins/comment/lg-comment.d.ts create mode 100644 assets/lightGallery/plugins/comment/lg-comment.es5.js create mode 100644 assets/lightGallery/plugins/comment/lg-comment.es5.js.map create mode 100644 assets/lightGallery/plugins/comment/lg-comment.min.js create mode 100644 assets/lightGallery/plugins/comment/lg-comment.umd.js create mode 100644 assets/lightGallery/plugins/comment/lg-comment.umd.js.map create mode 100644 assets/lightGallery/plugins/comment/package.json create mode 100644 assets/lightGallery/plugins/fullscreen/lg-fullscreen-settings.d.ts create mode 100644 assets/lightGallery/plugins/fullscreen/lg-fullscreen.d.ts create mode 100644 assets/lightGallery/plugins/fullscreen/lg-fullscreen.es5.js create mode 100644 assets/lightGallery/plugins/fullscreen/lg-fullscreen.es5.js.map create mode 100644 assets/lightGallery/plugins/fullscreen/lg-fullscreen.min.js create mode 100644 assets/lightGallery/plugins/fullscreen/lg-fullscreen.umd.js create mode 100644 assets/lightGallery/plugins/fullscreen/lg-fullscreen.umd.js.map create mode 100644 assets/lightGallery/plugins/fullscreen/package.json create mode 100644 assets/lightGallery/plugins/hash/lg-hash-settings.d.ts create mode 100644 assets/lightGallery/plugins/hash/lg-hash.d.ts create mode 100644 assets/lightGallery/plugins/hash/lg-hash.es5.js create mode 100644 assets/lightGallery/plugins/hash/lg-hash.es5.js.map create mode 100644 assets/lightGallery/plugins/hash/lg-hash.min.js create mode 100644 assets/lightGallery/plugins/hash/lg-hash.umd.js create mode 100644 assets/lightGallery/plugins/hash/lg-hash.umd.js.map create mode 100644 assets/lightGallery/plugins/hash/package.json create mode 100644 assets/lightGallery/plugins/mediumZoom/lg-medium-zoom-settings.d.ts create mode 100644 assets/lightGallery/plugins/mediumZoom/lg-medium-zoom.d.ts create mode 100644 assets/lightGallery/plugins/mediumZoom/lg-medium-zoom.es5.js create mode 100644 assets/lightGallery/plugins/mediumZoom/lg-medium-zoom.es5.js.map create mode 100644 assets/lightGallery/plugins/mediumZoom/lg-medium-zoom.min.js create mode 100644 assets/lightGallery/plugins/mediumZoom/lg-medium-zoom.umd.js create mode 100644 assets/lightGallery/plugins/mediumZoom/lg-medium-zoom.umd.js.map create mode 100644 assets/lightGallery/plugins/mediumZoom/package.json create mode 100644 assets/lightGallery/plugins/pager/lg-pager-settings.d.ts create mode 100644 assets/lightGallery/plugins/pager/lg-pager.d.ts create mode 100644 assets/lightGallery/plugins/pager/lg-pager.es5.js create mode 100644 assets/lightGallery/plugins/pager/lg-pager.es5.js.map create mode 100644 assets/lightGallery/plugins/pager/lg-pager.min.js create mode 100644 assets/lightGallery/plugins/pager/lg-pager.umd.js create mode 100644 assets/lightGallery/plugins/pager/lg-pager.umd.js.map create mode 100644 assets/lightGallery/plugins/pager/package.json create mode 100644 assets/lightGallery/plugins/relativeCaption/lg-relative-caption-settings.d.ts create mode 100644 assets/lightGallery/plugins/relativeCaption/lg-relative-caption.d.ts create mode 100644 assets/lightGallery/plugins/relativeCaption/lg-relative-caption.es5.js create mode 100644 assets/lightGallery/plugins/relativeCaption/lg-relative-caption.es5.js.map create mode 100644 assets/lightGallery/plugins/relativeCaption/lg-relative-caption.min.js create mode 100644 assets/lightGallery/plugins/relativeCaption/lg-relative-caption.umd.js create mode 100644 assets/lightGallery/plugins/relativeCaption/lg-relative-caption.umd.js.map create mode 100644 assets/lightGallery/plugins/relativeCaption/package.json create mode 100644 assets/lightGallery/plugins/rotate/lg-rotate-settings.d.ts create mode 100644 assets/lightGallery/plugins/rotate/lg-rotate.d.ts create mode 100644 assets/lightGallery/plugins/rotate/lg-rotate.es5.js create mode 100644 assets/lightGallery/plugins/rotate/lg-rotate.es5.js.map create mode 100644 assets/lightGallery/plugins/rotate/lg-rotate.min.js create mode 100644 assets/lightGallery/plugins/rotate/lg-rotate.umd.js create mode 100644 assets/lightGallery/plugins/rotate/lg-rotate.umd.js.map create mode 100644 assets/lightGallery/plugins/rotate/package.json create mode 100644 assets/lightGallery/plugins/share/lg-fb-share-utils.d.ts create mode 100644 assets/lightGallery/plugins/share/lg-pinterest-share-utils.d.ts create mode 100644 assets/lightGallery/plugins/share/lg-share-settings.d.ts create mode 100644 assets/lightGallery/plugins/share/lg-share.d.ts create mode 100644 assets/lightGallery/plugins/share/lg-share.es5.js create mode 100644 assets/lightGallery/plugins/share/lg-share.es5.js.map create mode 100644 assets/lightGallery/plugins/share/lg-share.min.js create mode 100644 assets/lightGallery/plugins/share/lg-share.umd.js create mode 100644 assets/lightGallery/plugins/share/lg-share.umd.js.map create mode 100644 assets/lightGallery/plugins/share/lg-twitter-share-utils.d.ts create mode 100644 assets/lightGallery/plugins/share/package.json create mode 100644 assets/lightGallery/plugins/share/types.d.ts create mode 100644 assets/lightGallery/plugins/thumbnail/lg-thumbnail-settings.d.ts create mode 100644 assets/lightGallery/plugins/thumbnail/lg-thumbnail.d.ts create mode 100644 assets/lightGallery/plugins/thumbnail/lg-thumbnail.es5.js create mode 100644 assets/lightGallery/plugins/thumbnail/lg-thumbnail.es5.js.map create mode 100644 assets/lightGallery/plugins/thumbnail/lg-thumbnail.min.js create mode 100644 assets/lightGallery/plugins/thumbnail/lg-thumbnail.umd.js create mode 100644 assets/lightGallery/plugins/thumbnail/lg-thumbnail.umd.js.map create mode 100644 assets/lightGallery/plugins/thumbnail/package.json create mode 100644 assets/lightGallery/plugins/video/lg-video-settings.d.ts create mode 100644 assets/lightGallery/plugins/video/lg-video-utils.d.ts create mode 100644 assets/lightGallery/plugins/video/lg-video.d.ts create mode 100644 assets/lightGallery/plugins/video/lg-video.es5.js create mode 100644 assets/lightGallery/plugins/video/lg-video.es5.js.map create mode 100644 assets/lightGallery/plugins/video/lg-video.min.js create mode 100644 assets/lightGallery/plugins/video/lg-video.umd.js create mode 100644 assets/lightGallery/plugins/video/lg-video.umd.js.map create mode 100644 assets/lightGallery/plugins/video/package.json create mode 100644 assets/lightGallery/plugins/video/types.d.ts create mode 100644 assets/lightGallery/plugins/vimeoThumbnail/lg-vimeo-thumbnail-settings.d.ts create mode 100644 assets/lightGallery/plugins/vimeoThumbnail/lg-vimeo-thumbnail.d.ts create mode 100644 assets/lightGallery/plugins/vimeoThumbnail/lg-vimeo-thumbnail.es5.js create mode 100644 assets/lightGallery/plugins/vimeoThumbnail/lg-vimeo-thumbnail.es5.js.map create mode 100644 assets/lightGallery/plugins/vimeoThumbnail/lg-vimeo-thumbnail.min.js create mode 100644 assets/lightGallery/plugins/vimeoThumbnail/lg-vimeo-thumbnail.umd.js create mode 100644 assets/lightGallery/plugins/vimeoThumbnail/lg-vimeo-thumbnail.umd.js.map create mode 100644 assets/lightGallery/plugins/vimeoThumbnail/package.json create mode 100644 assets/lightGallery/plugins/zoom/lg-zoom-settings.d.ts create mode 100644 assets/lightGallery/plugins/zoom/lg-zoom.d.ts create mode 100644 assets/lightGallery/plugins/zoom/lg-zoom.es5.js create mode 100644 assets/lightGallery/plugins/zoom/lg-zoom.es5.js.map create mode 100644 assets/lightGallery/plugins/zoom/lg-zoom.min.js create mode 100644 assets/lightGallery/plugins/zoom/lg-zoom.umd.js create mode 100644 assets/lightGallery/plugins/zoom/lg-zoom.umd.js.map create mode 100644 assets/lightGallery/plugins/zoom/package.json create mode 100644 assets/lightGallery/types.d.ts create mode 100644 templates/form/field/material/textarea/edit.php create mode 100644 templates/svg/rent.php diff --git a/assets/lightGallery/README.md b/assets/lightGallery/README.md new file mode 100644 index 0000000..dcd5b35 --- /dev/null +++ b/assets/lightGallery/README.md @@ -0,0 +1,219 @@ +![commit](https://badgen.net/github/last-commit/sachinchoolur/lightGallery/master) +![npm](https://img.shields.io/npm/v/lightgallery.svg?color=red) +![npm-tag](https://badgen.net/github/tag/sachinchoolur/lightgallery) +![size](https://badgen.net/bundlephobia/minzip/lightgallery?color=cyan) +![tree-shaking](https://badgen.net/bundlephobia/tree-shaking/lightgallery?color=purple) +![types](https://badgen.net/npm/types/lightgallery?color=blue) +![hits](https://badgen.net/jsdelivr/hits/npm/lightgallery?color=pink) + +# lightGallery + +A customizable, modular, responsive, lightbox gallery plugin. No dependencies.\\ +Available for React.js, Angular, Vue.js, and typescript. + +![lightgallery](https://www.lightgalleryjs.com/lightgallery-demo.png) + +## Core features + +- Fully responsive. +- Modular architecture with built in plugins. +- Highly optimized for touch devices. +- Mouse drag supports for desktops. +- Double-click/Double-tap to see actual size of the image. +- Animated thumbnails. +- Social sharing. +- YouTube Vimeo Wistia and html5 videos Support. +- 20+ Hardware-Accelerated CSS3 transitions. +- Dynamic mode. +- Inline gallery. +- Full screen support. +- Zoom in/out, Pinch to zoom. +- Swipe/Drag up/down support to close gallery. +- Browser history API(deep linking). +- Responsive images. +- HTML iframe support. +- Multiple instances on one page. +- Easily customizable via CSS (SCSS) and Settings. +- Smart image preloading and code optimization. +- Keyboard Navigation for desktop. +- SVG icons. +- Accessibility support. +- Rotate, flip images. +- And many more. + +## Documentation + +- [Getting started](https://www.lightgalleryjs.com/docs/getting-started/) +- [Settings](https://www.lightgalleryjs.com/docs/settings/) +- [React](https://www.lightgalleryjs.com/docs/react/) +- [Vue.js](https://www.lightgalleryjs.com/docs/vue/) +- [Angular](https://www.lightgalleryjs.com/docs/angular/) +- [Demos](https://www.lightgalleryjs.com/demos/thumbnails/) +- [CodePen](https://codepen.io/collection/BNNjpR) + +## Installation + +lightGallery is available on NPM, Yarn, Bower, CDNs, and GitHub. You can use any +of the following method to download lightGallery. + +- [NPM](https://www.npmjs.com/) - NPM is a package manager for the JavaScript + programming language. You can install `lightgallery` using the following + command + + ```sh + npm install lightgallery + ``` + +- [YARN](https://yarnpkg.com/) - Yarn is another popular package manager for + the JavaScript programming language. If you prefer you can use Yarn instead + of NPM + + ```sh + yarn add lightgallery + ``` + +- [Bower](http://bower.io) - You can find lightGallery on Bower package + manager as well + + ```sh + bower install lightgallery --save + ``` + +- [GitHub](https://github.com/sachinchoolur/lightGallery/archive/master.zip) - + You can also directly download lightgallery from GitHub + +- CDN - If you prefer to use a CDN, you can load files via + [jsdelivr](https://www.jsdelivr.com/projects/lightgallery), + [cdnjs](https://cdnjs.com/libraries/lightgallery) or + [unpkg](https://unpkg.com/browse/lightgallery@latest/) + +#### Include CSS and Javascript files + +First of all, include lightgallery.css in the <head> of the document. If +you want include any lightGallery plugin such as thumbnails or zoom, you need to +include respective css files as well. + +Alternatively you can include `lightgallery-bundle.css` which contains +lightGallery and all plugin styles instead of separate stylesheets. + +If you like you can also import scss files instead of css files from the `scss` +folder. + +```HTML + + + + + + + + + + + + +``` + +Then include lightgallery.umd.js into your document. If you want to include any +lightgallery plugin you can include it after lightgallery.umd.js. + +```HTML + + .... + + + + + + + +``` + +lightGallery supports AMD, CommonJS and ES6 modules too. + +```JavaScript +import lightGallery from 'lightgallery'; + +// Plugins +import lgThumbnail from 'lightgallery/plugins/thumbnail' +import lgZoom from 'lightgallery/plugins/zoom' + +``` + +#### The markup + +lightgallery does not force you to use any kind of markup. you can use whatever +markup you want. +Here can find +detailed examples of different kinds of markups. + +If you know the original size of the media, you can pass it via +`data-lg-size="${width}-${height}"` attribute for the initial +[zoom](https://www.lightgalleryjs.com/docs/settings/#zoomFromOrigin) animation. +But, this is completely optional. + +```HTML +
+ + .. + + + .. + + ... +
+``` + +#### Initialize lightGallery + +Finally, you need to initiate the gallery by adding the following code. + +```javascript + +``` + +[CodePen Demos](https://codepen.io/collection/BNNjpR) + +#### License Key + +You'll receive a license key via email one you purchase a license [More info](https://www.lightgalleryjs.com/docs/settings/#licenseKey) + +#### Plugins + +As shown above, you need to pass the plugins via settings if you want to use any +lightGallery plugins. + +If you are including lightGallery files via script tag, please use the same +plugins names as follows. + +`lgZoom`, `lgAutoplay`, ` lgComment`, `lgFullscreen `, `lgHash`, `lgPager`, +`lgRotate`, `lgShare`, `lgThumbnail`, `lgVideo`, `lgMediumZoom` + +## Browser support + +lightGallery supports all major browsers including IE 10 and above. + +## License + +#### Commercial license + +If you want to use lightGallery to develop commercial sites, themes, projects, +and applications, the Commercial license is the appropriate license. With this +option, your source code is kept proprietary. +[Read more about the commercial license](https://www.lightgalleryjs.com/license/) + +#### Open source license + +If you are creating an open source application under a license compatible with +the GNU GPL license v3, you may use this project under the terms of the GPLv3. + +## Support + +If you have any questions, suggestions, feedback, please reach out to [contact@lightgalleryjs.com](mailto:contact@lightgalleryjs.com) or DM me on [twitter](https://twitter.com/SachinNeravath) diff --git a/assets/lightGallery/css/lg-autoplay.css b/assets/lightGallery/css/lg-autoplay.css new file mode 100644 index 0000000..cae5e8f --- /dev/null +++ b/assets/lightGallery/css/lg-autoplay.css @@ -0,0 +1,39 @@ +.lg-progress-bar { + background-color: #333; + height: 5px; + left: 0; + position: absolute; + top: 0; + width: 100%; + z-index: 1083; + opacity: 0; + will-change: opacity; + -webkit-transition: opacity 0.08s ease 0s; + -moz-transition: opacity 0.08s ease 0s; + -o-transition: opacity 0.08s ease 0s; + transition: opacity 0.08s ease 0s; +} +.lg-progress-bar .lg-progress { + background-color: rgb(169, 7, 7); + height: 5px; + width: 0; +} +.lg-progress-bar.lg-start .lg-progress { + width: 100%; +} +.lg-show-autoplay .lg-progress-bar { + opacity: 1; +} + +.lg-autoplay-button:after { + content: "\e01d"; +} +.lg-show-autoplay .lg-autoplay-button:after { + content: "\e01a"; +} +.lg-single-item .lg-autoplay-button { + opacity: 0.75; + pointer-events: none; +} + +/*# sourceMappingURL=lg-autoplay.css.map */ diff --git a/assets/lightGallery/css/lg-autoplay.css.map b/assets/lightGallery/css/lg-autoplay.css.map new file mode 100644 index 0000000..99de90f --- /dev/null +++ b/assets/lightGallery/css/lg-autoplay.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["../../src/scss/lg-autoplay.scss","../../src/scss/_lg-variables.scss","../../src/scss/_lg-mixins.scss"],"names":[],"mappings":"AAGA;EACI,kBC0BiB;EDzBjB,QC2BqB;ED1BrB;EACA;EACA;EACA;EACA,SCiDiB;EDhDjB;EACA;EE8RA;EACA;EACA;EACA,YFhSA;;AAEA;EACI,kBCTa;EDUb,QCeiB;EDdjB;;AAIA;EACI;;AAIR;EACI;;;AAKJ;EAII;;AAHA;EACI;;AAIR;EACI,SCb2B;EDc3B","file":"lg-autoplay.css"} \ No newline at end of file diff --git a/assets/lightGallery/css/lg-comments.css b/assets/lightGallery/css/lg-comments.css new file mode 100644 index 0000000..562b51a --- /dev/null +++ b/assets/lightGallery/css/lg-comments.css @@ -0,0 +1,119 @@ +.lg-comment-box { + width: 420px; + max-width: 100%; + position: absolute; + right: 0; + top: 0; + bottom: 0; + z-index: 9999; + background-color: #fff; + will-change: transform; + -moz-transform: translate3d(100%, 0, 0); + -o-transform: translate3d(100%, 0, 0); + -ms-transform: translate3d(100%, 0, 0); + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + -webkit-transition: -webkit-transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s; + -moz-transition: -moz-transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s; + -o-transition: -o-transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s; + transition: transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s; +} +.lg-comment-box .lg-comment-title { + margin: 0; + color: #fff; + font-size: 18px; +} +.lg-comment-box .lg-comment-header { + background-color: #000; + padding: 12px 20px; + position: absolute; + left: 0; + right: 0; + top: 0; +} +.lg-comment-box .lg-comment-body { + height: 100% !important; + padding-top: 43px !important; + width: 100% !important; +} +.lg-comment-box .fb-comments { + height: 100%; + width: 100%; + background: url("../images/loading.gif") no-repeat scroll center center #fff; + overflow-y: auto; + display: inline-block; +} +.lg-comment-box .fb-comments[fb-xfbml-state=rendered] { + background-image: none; +} +.lg-comment-box .fb-comments > span { + max-width: 100%; +} +.lg-comment-box .lg-comment-close { + position: absolute; + right: 5px; + top: 12px; + cursor: pointer; + font-size: 20px; + color: #999; + will-change: color; + -webkit-transition: color 0.2s linear; + -o-transition: color 0.2s linear; + transition: color 0.2s linear; +} +.lg-comment-box .lg-comment-close:hover { + color: #fff; +} +.lg-comment-box .lg-comment-close:after { + content: "\e070"; +} +.lg-comment-box iframe { + max-width: 100% !important; + width: 100% !important; +} +.lg-comment-box #disqus_thread { + padding: 0 20px; +} + +.lg-outer .lg-comment-overlay { + background-color: rgba(0, 0, 0, 0.25); + bottom: 0; + cursor: default; + left: 0; + position: fixed; + right: 0; + top: 0; + z-index: 1081; + opacity: 0; + visibility: hidden; + will-change: visibility, opacity; + -webkit-transition: visibility 0s linear 0.18s, opacity 0.18s linear 0s; + -o-transition: visibility 0s linear 0.18s, opacity 0.18s linear 0s; + transition: visibility 0s linear 0.18s, opacity 0.18s linear 0s; +} +.lg-outer .lg-comment-toggle:after { + content: "\e908"; +} +.lg-outer.lg-comment-active .lg-comment-overlay { + -webkit-transition-delay: 0s; + transition-delay: 0s; + -moz-transform: translate3d(0, 0px, 0); + -o-transform: translate3d(0, 0px, 0); + -ms-transform: translate3d(0, 0px, 0); + -webkit-transform: translate3d(0, 0px, 0); + transform: translate3d(0, 0px, 0); + opacity: 1; + visibility: visible; +} +.lg-outer.lg-comment-active .lg-comment-toggle { + color: #fff; +} +.lg-outer.lg-comment-active .lg-comment-box { + -moz-transform: translate3d(0, 0, 0); + -o-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} + +/*# sourceMappingURL=lg-comments.css.map */ diff --git a/assets/lightGallery/css/lg-comments.css.map b/assets/lightGallery/css/lg-comments.css.map new file mode 100644 index 0000000..7c0cb0a --- /dev/null +++ b/assets/lightGallery/css/lg-comments.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["../../src/scss/lg-comments.scss","../../src/scss/_lg-mixins.scss"],"names":[],"mappings":"AAGA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ECyMA,gBDxMmB;ECyMnB,cDzMmB;EC0MnB,eD1MmB;EC2MnB,mBD3MmB;EC4MnB,WD5MmB;EC6RnB;EACA;EACA;EACA,YD/RA;;AAEA;EACI;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;;AAGJ;EACI;EACA;EACA;EAEA;EACA;;AACA;EACI;;AAEJ;EACI;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;ECoKJ,oBDnKI;ECoKJ,eDpKI;ECqKJ,YDrKI;;AACA;EACI;;AAEJ;EACI;;AAIR;EACI;EACA;;AAGJ;EACI;;;AAIJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ECqIJ,oBDpII;ECqIJ,eDrII;ECsIJ,YDtII;;AAMA;EACI;;AAIJ;ECoIJ,0BDnIkC;ECoIlC,kBDpIkC;EC8GlC,gBD7G2B;EC8G3B,cD9G2B;EC+G3B,eD/G2B;ECgH3B,mBDhH2B;ECiH3B,WDjH2B;EACnB;EACA;;AAEJ;EACI;;AAEJ;ECsGJ,gBDrG2B;ECsG3B,cDtG2B;ECuG3B,eDvG2B;ECwG3B,mBDxG2B;ECyG3B,WDzG2B","file":"lg-comments.css"} \ No newline at end of file diff --git a/assets/lightGallery/css/lg-fullscreen.css b/assets/lightGallery/css/lg-fullscreen.css new file mode 100644 index 0000000..51c2516 --- /dev/null +++ b/assets/lightGallery/css/lg-fullscreen.css @@ -0,0 +1,8 @@ +.lg-fullscreen:after { + content: "\e20c"; +} +.lg-fullscreen-on .lg-fullscreen:after { + content: "\e20d"; +} + +/*# sourceMappingURL=lg-fullscreen.css.map */ diff --git a/assets/lightGallery/css/lg-fullscreen.css.map b/assets/lightGallery/css/lg-fullscreen.css.map new file mode 100644 index 0000000..9543949 --- /dev/null +++ b/assets/lightGallery/css/lg-fullscreen.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["../../src/scss/lg-fullscreen.scss"],"names":[],"mappings":"AACI;EACI;;AAEA;EACI","file":"lg-fullscreen.css"} \ No newline at end of file diff --git a/assets/lightGallery/css/lg-medium-zoom.css b/assets/lightGallery/css/lg-medium-zoom.css new file mode 100644 index 0000000..bc3bda3 --- /dev/null +++ b/assets/lightGallery/css/lg-medium-zoom.css @@ -0,0 +1,15 @@ +.lg-medium-zoom-item { + cursor: zoom-in; +} + +.lg-medium-zoom .lg-outer { + cursor: zoom-out; +} +.lg-medium-zoom .lg-outer.lg-grab img.lg-object { + cursor: zoom-out; +} +.lg-medium-zoom .lg-outer.lg-grabbing img.lg-object { + cursor: zoom-out; +} + +/*# sourceMappingURL=lg-medium-zoom.css.map */ diff --git a/assets/lightGallery/css/lg-medium-zoom.css.map b/assets/lightGallery/css/lg-medium-zoom.css.map new file mode 100644 index 0000000..59e3c5a --- /dev/null +++ b/assets/lightGallery/css/lg-medium-zoom.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["../../src/scss/lg-medium-zoom.scss"],"names":[],"mappings":"AAAA;EACI;;;AAGA;EACI;;AAGI;EACI;;AAKJ;EACI","file":"lg-medium-zoom.css"} \ No newline at end of file diff --git a/assets/lightGallery/css/lg-pager.css b/assets/lightGallery/css/lg-pager.css new file mode 100644 index 0000000..47318c6 --- /dev/null +++ b/assets/lightGallery/css/lg-pager.css @@ -0,0 +1,82 @@ +.lg-outer .lg-pager-outer { + text-align: center; + z-index: 1080; + height: 10px; + margin-bottom: 10px; +} +.lg-outer .lg-pager-outer.lg-pager-hover .lg-pager-cont { + overflow: visible; +} +.lg-outer.lg-single-item .lg-pager-outer { + display: none; +} +.lg-outer .lg-pager-cont { + cursor: pointer; + display: inline-block; + overflow: hidden; + position: relative; + vertical-align: top; + margin: 0 5px; +} +.lg-outer .lg-pager-cont:hover .lg-pager-thumb-cont { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} +.lg-outer .lg-pager-cont.lg-pager-active .lg-pager { + box-shadow: 0 0 0 2px white inset; +} +.lg-outer .lg-pager-thumb-cont { + background-color: #fff; + color: #fff; + bottom: 100%; + height: 83px; + left: 0; + margin-bottom: 20px; + margin-left: -60px; + opacity: 0; + padding: 5px; + position: absolute; + width: 120px; + border-radius: 3px; + will-change: transform, opacity; + -webkit-transition: opacity 0.15s ease 0s, -webkit-transform 0.15s ease 0s; + -moz-transition: opacity 0.15s ease 0s, -moz-transform 0.15s ease 0s; + -o-transition: opacity 0.15s ease 0s, -o-transform 0.15s ease 0s; + transition: opacity 0.15s ease 0s, transform 0.15s ease 0s; + -webkit-transform: translate3d(0, 5px, 0); + transform: translate3d(0, 5px, 0); +} +.lg-outer .lg-pager-thumb-cont img { + width: 100%; + height: 100%; +} +.lg-outer .lg-pager { + background-color: rgba(255, 255, 255, 0.5); + border-radius: 50%; + box-shadow: 0 0 0 8px rgba(255, 255, 255, 0.7) inset; + display: block; + height: 12px; + -webkit-transition: box-shadow 0.3s ease 0s; + -o-transition: box-shadow 0.3s ease 0s; + transition: box-shadow 0.3s ease 0s; + width: 12px; +} +.lg-outer .lg-pager:hover, .lg-outer .lg-pager:focus { + box-shadow: 0 0 0 8px white inset; +} +.lg-outer .lg-caret { + border-left: 10px solid transparent; + border-right: 10px solid transparent; + border-top: 10px dashed; + bottom: -10px; + display: inline-block; + height: 0; + left: 50%; + margin-left: -5px; + position: absolute; + vertical-align: middle; + width: 0; +} + +/*# sourceMappingURL=lg-pager.css.map */ diff --git a/assets/lightGallery/css/lg-pager.css.map b/assets/lightGallery/css/lg-pager.css.map new file mode 100644 index 0000000..9471357 --- /dev/null +++ b/assets/lightGallery/css/lg-pager.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["../../src/scss/lg-pager.scss","../../src/scss/_lg-variables.scss","../../src/scss/_lg-mixins.scss"],"names":[],"mappings":"AAII;EACI;EACA,SC0DO;EDzDP;EACA;;AAGI;EACI;;AAMR;EACI;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;;AAGI;EACI;EEkIZ;EACA;;AF7HQ;EACI;;AAKZ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EEgPJ;EACA;EACA;EACA,YFlPI;EEwGJ;EACA;;AFnGI;EACI;EACA;;AAIR;EACI;EACA;EACA;EACA;EACA;EEmJJ,oBFlJI;EEmJJ,eFnJI;EEoJJ,YFpJI;EACA;;AAEA;EAEI;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA","file":"lg-pager.css"} \ No newline at end of file diff --git a/assets/lightGallery/css/lg-relative-caption.css b/assets/lightGallery/css/lg-relative-caption.css new file mode 100644 index 0000000..4198dc2 --- /dev/null +++ b/assets/lightGallery/css/lg-relative-caption.css @@ -0,0 +1,16 @@ +.lg-relative-caption .lg-outer .lg-sub-html { + white-space: normal; + bottom: auto; + padding: 0; + background-image: none; +} +.lg-relative-caption .lg-outer .lg-relative-caption-item { + opacity: 0; + padding: 16px 0; + transition: 0.5s opacity ease; +} +.lg-relative-caption .lg-outer .lg-show-caption .lg-relative-caption-item { + opacity: 1; +} + +/*# sourceMappingURL=lg-relative-caption.css.map */ diff --git a/assets/lightGallery/css/lg-relative-caption.css.map b/assets/lightGallery/css/lg-relative-caption.css.map new file mode 100644 index 0000000..c0ecdcd --- /dev/null +++ b/assets/lightGallery/css/lg-relative-caption.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["../../src/scss/lg-relative-caption.scss"],"names":[],"mappings":"AAEQ;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;;AAIA;EACI","file":"lg-relative-caption.css"} \ No newline at end of file diff --git a/assets/lightGallery/css/lg-rotate.css b/assets/lightGallery/css/lg-rotate.css new file mode 100644 index 0000000..c63ec3b --- /dev/null +++ b/assets/lightGallery/css/lg-rotate.css @@ -0,0 +1,49 @@ +.lg-outer .lg-img-rotate { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + -webkit-transition: -webkit-transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s; + -moz-transition: -moz-transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s; + -o-transition: -o-transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s; + transition: transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s; +} +.lg-outer[data-lg-slide-type=video] .lg-rotate-left, +.lg-outer[data-lg-slide-type=video] .lg-rotate-right, +.lg-outer[data-lg-slide-type=video] .lg-flip-ver, +.lg-outer[data-lg-slide-type=video] .lg-flip-hor, .lg-outer[data-lg-slide-type=iframe] .lg-rotate-left, +.lg-outer[data-lg-slide-type=iframe] .lg-rotate-right, +.lg-outer[data-lg-slide-type=iframe] .lg-flip-ver, +.lg-outer[data-lg-slide-type=iframe] .lg-flip-hor { + opacity: 0.75; + pointer-events: none; +} +.lg-outer .lg-img-rotate:before { + content: ""; + display: inline-block; + height: 100%; + vertical-align: middle; +} + +.lg-rotate-left:after { + content: "\e900"; +} + +.lg-rotate-right:after { + content: "\e901"; +} + +.lg-icon.lg-flip-hor, .lg-icon.lg-flip-ver { + font-size: 26px; +} + +.lg-flip-ver:after { + content: "\e903"; +} + +.lg-flip-hor:after { + content: "\e902"; +} + +/*# sourceMappingURL=lg-rotate.css.map */ diff --git a/assets/lightGallery/css/lg-rotate.css.map b/assets/lightGallery/css/lg-rotate.css.map new file mode 100644 index 0000000..3761e7a --- /dev/null +++ b/assets/lightGallery/css/lg-rotate.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["../../src/scss/lg-rotate.scss","../../src/scss/_lg-mixins.scss","../../src/scss/_lg-variables.scss"],"names":[],"mappings":"AAII;EACI;EACA;EACA;EACA;EACA;ECiSJ;EACA;EACA;EACA,YDnSI;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAII,SEOuB;EFNvB;;AAIJ;EACI;EACA;EACA;EACA;;;AAMR;EACI;;;AAKJ;EACI;;;AAKJ;EAEI;;;AAKJ;EACI;;;AAKJ;EACI","file":"lg-rotate.css"} \ No newline at end of file diff --git a/assets/lightGallery/css/lg-share.css b/assets/lightGallery/css/lg-share.css new file mode 100644 index 0000000..39936e3 --- /dev/null +++ b/assets/lightGallery/css/lg-share.css @@ -0,0 +1,127 @@ +.lg-outer .lg-dropdown-overlay { + background-color: rgba(0, 0, 0, 0.25); + bottom: 0; + cursor: default; + left: 0; + position: absolute; + right: 0; + top: 0; + z-index: 1081; + opacity: 0; + visibility: hidden; + will-change: visibility, opacity; + -webkit-transition: visibility 0s linear 0.18s, opacity 0.18s linear 0s; + -o-transition: visibility 0s linear 0.18s, opacity 0.18s linear 0s; + transition: visibility 0s linear 0.18s, opacity 0.18s linear 0s; +} +.lg-outer.lg-dropdown-active .lg-dropdown, +.lg-outer.lg-dropdown-active .lg-dropdown-overlay { + -webkit-transition-delay: 0s; + transition-delay: 0s; + -moz-transform: translate3d(0, 0px, 0); + -o-transform: translate3d(0, 0px, 0); + -ms-transform: translate3d(0, 0px, 0); + -webkit-transform: translate3d(0, 0px, 0); + transform: translate3d(0, 0px, 0); + opacity: 1; + visibility: visible; +} +.lg-outer.lg-dropdown-active .lg-share { + color: #fff; +} +.lg-outer .lg-dropdown { + background-color: #fff; + border-radius: 2px; + font-size: 14px; + list-style-type: none; + margin: 0; + padding: 10px 0; + position: absolute; + right: 0; + text-align: left; + top: 50px; + opacity: 0; + visibility: hidden; + -moz-transform: translate3d(0, 5px, 0); + -o-transform: translate3d(0, 5px, 0); + -ms-transform: translate3d(0, 5px, 0); + -webkit-transform: translate3d(0, 5px, 0); + transform: translate3d(0, 5px, 0); + will-change: visibility, opacity, transform; + -webkit-transition: -webkit-transform 0.18s linear 0s, visibility 0s linear 0.5s, opacity 0.18s linear 0s; + -moz-transition: -moz-transform 0.18s linear 0s, visibility 0s linear 0.5s, opacity 0.18s linear 0s; + -o-transition: -o-transform 0.18s linear 0s, visibility 0s linear 0.5s, opacity 0.18s linear 0s; + transition: transform 0.18s linear 0s, visibility 0s linear 0.5s, opacity 0.18s linear 0s; +} +.lg-outer .lg-dropdown:after { + content: ""; + display: block; + height: 0; + width: 0; + position: absolute; + border: 8px solid transparent; + border-bottom-color: #fff; + right: 16px; + top: -16px; +} +.lg-outer .lg-dropdown > li:last-child { + margin-bottom: 0px; +} +.lg-outer .lg-dropdown > li:hover a { + color: #333; +} +.lg-outer .lg-dropdown a { + color: #333; + display: block; + white-space: pre; + padding: 4px 12px; + font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 12px; +} +.lg-outer .lg-dropdown a:hover { + background-color: rgba(0, 0, 0, 0.07); +} +.lg-outer .lg-dropdown .lg-dropdown-text { + display: inline-block; + line-height: 1; + margin-top: -3px; + vertical-align: middle; +} +.lg-outer .lg-dropdown .lg-icon { + color: #333; + display: inline-block; + float: none; + font-size: 20px; + height: auto; + line-height: 1; + margin-right: 8px; + padding: 0; + vertical-align: middle; + width: auto; +} +.lg-outer .lg-share { + position: relative; +} +.lg-outer .lg-share:after { + content: "\e80d"; +} +.lg-outer .lg-share-facebook .lg-icon { + color: #3b5998; +} +.lg-outer .lg-share-facebook .lg-icon:after { + content: "\e904"; +} +.lg-outer .lg-share-twitter .lg-icon { + color: #00aced; +} +.lg-outer .lg-share-twitter .lg-icon:after { + content: "\e907"; +} +.lg-outer .lg-share-pinterest .lg-icon { + color: #cb2027; +} +.lg-outer .lg-share-pinterest .lg-icon:after { + content: "\e906"; +} + +/*# sourceMappingURL=lg-share.css.map */ diff --git a/assets/lightGallery/css/lg-share.css.map b/assets/lightGallery/css/lg-share.css.map new file mode 100644 index 0000000..ce39b03 --- /dev/null +++ b/assets/lightGallery/css/lg-share.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["../../src/scss/lg-share.scss","../../src/scss/_lg-mixins.scss"],"names":[],"mappings":"AAII;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ECgNJ,oBD/MI;ECgNJ,eDhNI;ECiNJ,YDjNI;;AAMA;AAAA;ECoNJ,0BDlNkC;ECmNlC,kBDnNkC;EC6LlC,gBD5L2B;EC6L3B,cD7L2B;EC8L3B,eD9L2B;EC+L3B,mBD/L2B;ECgM3B,WDhM2B;EACnB;EACA;;AAEJ;EACI;;AAGR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ECwKJ,gBDvKuB;ECwKvB,cDxKuB;ECyKvB,eDzKuB;EC0KvB,mBD1KuB;EC2KvB,WD3KuB;EACnB;EC2PJ;EACA;EACA;EACA,YD7PI;;AAMA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;EACI;;AAGA;EACI;;AAIZ;EACI;EACA;EACA;EACA;EACA;EAEA;;AACA;EACI;;AAGR;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGR;EACI;;AACA;EACI;;AAIJ;EACI;;AACA;EACI;;AAKR;EACI;;AACA;EACI;;AAKR;EACI;;AACA;EACI","file":"lg-share.css"} \ No newline at end of file diff --git a/assets/lightGallery/css/lg-thumbnail.css b/assets/lightGallery/css/lg-thumbnail.css new file mode 100644 index 0000000..3fc755d --- /dev/null +++ b/assets/lightGallery/css/lg-thumbnail.css @@ -0,0 +1,93 @@ +.lg-outer .lg-thumb-outer { + background-color: #0d0a0a; + width: 100%; + max-height: 350px; + overflow: hidden; + float: left; +} +.lg-outer .lg-thumb-outer.lg-grab .lg-thumb-item { + cursor: -webkit-grab; + cursor: -moz-grab; + cursor: -o-grab; + cursor: -ms-grab; + cursor: grab; +} +.lg-outer .lg-thumb-outer.lg-grabbing .lg-thumb-item { + cursor: move; + cursor: -webkit-grabbing; + cursor: -moz-grabbing; + cursor: -o-grabbing; + cursor: -ms-grabbing; + cursor: grabbing; +} +.lg-outer .lg-thumb-outer.lg-dragging .lg-thumb { + -webkit-transition-duration: 0s !important; + transition-duration: 0s !important; +} +.lg-outer .lg-thumb-outer.lg-rebuilding-thumbnails .lg-thumb { + -webkit-transition-duration: 0s !important; + transition-duration: 0s !important; +} +.lg-outer .lg-thumb-outer.lg-thumb-align-middle { + text-align: center; +} +.lg-outer .lg-thumb-outer.lg-thumb-align-left { + text-align: left; +} +.lg-outer .lg-thumb-outer.lg-thumb-align-right { + text-align: right; +} +.lg-outer.lg-single-item .lg-thumb-outer { + display: none; +} +.lg-outer .lg-thumb { + padding: 5px 0; + height: 100%; + margin-bottom: -5px; + display: inline-block; + vertical-align: middle; +} +@media (min-width: 768px) { + .lg-outer .lg-thumb { + padding: 10px 0; + } +} +.lg-outer .lg-thumb-item { + cursor: pointer; + float: left; + overflow: hidden; + height: 100%; + border-radius: 2px; + margin-bottom: 5px; + will-change: border-color; +} +@media (min-width: 768px) { + .lg-outer .lg-thumb-item { + border-radius: 4px; + border: 2px solid #fff; + -webkit-transition: border-color 0.25s ease; + -o-transition: border-color 0.25s ease; + transition: border-color 0.25s ease; + } +} +.lg-outer .lg-thumb-item.active, .lg-outer .lg-thumb-item:hover { + border-color: rgb(169, 7, 7); +} +.lg-outer .lg-thumb-item img { + width: 100%; + height: 100%; + object-fit: cover; + display: block; +} +.lg-outer.lg-can-toggle .lg-item { + padding-bottom: 0; +} +.lg-outer .lg-toggle-thumb:after { + content: "\e1ff"; +} +.lg-outer.lg-animate-thumb .lg-thumb { + -webkit-transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); +} + +/*# sourceMappingURL=lg-thumbnail.css.map */ diff --git a/assets/lightGallery/css/lg-thumbnail.css.map b/assets/lightGallery/css/lg-thumbnail.css.map new file mode 100644 index 0000000..4208464 --- /dev/null +++ b/assets/lightGallery/css/lg-thumbnail.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["../../src/scss/lg-thumbnail.scss","../../src/scss/_lg-variables.scss","../../src/scss/_lg-mixins.scss"],"names":[],"mappings":"AAMI;EACI,kBC6CM;ED5CN;EACA;EACA;EACA;;AAGI;EE+SR;EACA;EACA;EACA;EACA;;AF7SQ;EEiTR;EACA;EACA;EACA;EACA;EACA;;AFhTQ;EEqNR,6BFpNY;EEqNZ,qBFrNY;;AAIJ;EEgNR,6BF/MY;EEgNZ,qBFhNY;;AAIR;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAKJ;EACI;;AAIR;EACI;EACA;EACA;EACA;EACA;;AACA;EANJ;IAOQ;;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA,eAnEY;EAoEZ;;AACA;EARJ;IASQ;IACA;IEqJR,oBFpJQ;IEqJR,eFrJQ;IEsJR,YFtJQ;;;AAGJ;EAEI,cCzES;;AD4Eb;EACI;EACA;EACA;EACA;;AAKJ;EACI;;AAKJ;EACI;;AAIJ;EE6IJ,oCF3IY;EE4IZ,4BF5IY","file":"lg-thumbnail.css"} \ No newline at end of file diff --git a/assets/lightGallery/css/lg-transitions.css b/assets/lightGallery/css/lg-transitions.css new file mode 100644 index 0000000..efc84e7 --- /dev/null +++ b/assets/lightGallery/css/lg-transitions.css @@ -0,0 +1,845 @@ +.lg-css3.lg-zoom-in .lg-item { + opacity: 0; +} +.lg-css3.lg-zoom-in .lg-item.lg-prev-slide { + -webkit-transform: scale3d(1.3, 1.3, 1.3); + transform: scale3d(1.3, 1.3, 1.3); +} +.lg-css3.lg-zoom-in .lg-item.lg-next-slide { + -webkit-transform: scale3d(1.3, 1.3, 1.3); + transform: scale3d(1.3, 1.3, 1.3); +} +.lg-css3.lg-zoom-in .lg-item.lg-current { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + opacity: 1; +} +.lg-css3.lg-zoom-in .lg-item.lg-prev-slide, .lg-css3.lg-zoom-in .lg-item.lg-next-slide, .lg-css3.lg-zoom-in .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; +} + +.lg-css3.lg-lollipop-rev .lg-item { + opacity: 0; +} +.lg-css3.lg-lollipop-rev .lg-item.lg-prev-slide { + -moz-transform: translate3d(0, 0, 0) scale(0.5); + -o-transform: translate3d(0, 0, 0) scale(0.5); + -ms-transform: translate3d(0, 0, 0) scale(0.5); + -webkit-transform: translate3d(0, 0, 0) scale(0.5); + transform: translate3d(0, 0, 0) scale(0.5); +} +.lg-css3.lg-lollipop-rev .lg-item.lg-next-slide { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); +} +.lg-css3.lg-lollipop-rev .lg-item.lg-current { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; +} +.lg-css3.lg-lollipop-rev .lg-item.lg-prev-slide, .lg-css3.lg-lollipop-rev .lg-item.lg-next-slide, .lg-css3.lg-lollipop-rev .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; +} + +.lg-css3.lg-slide-skew-ver-cross .lg-item { + opacity: 0; +} +.lg-css3.lg-slide-skew-ver-cross .lg-item.lg-prev-slide { + -moz-transform: skew(0deg, 20deg) translate3d(0, -100%, 0px); + -o-transform: skew(0deg, 20deg) translate3d(0, -100%, 0px); + -ms-transform: skew(0deg, 20deg) translate3d(0, -100%, 0px); + -webkit-transform: skew(0deg, 20deg) translate3d(0, -100%, 0px); + transform: skew(0deg, 20deg) translate3d(0, -100%, 0px); +} +.lg-css3.lg-slide-skew-ver-cross .lg-item.lg-next-slide { + -moz-transform: skew(0deg, 20deg) translate3d(0, 100%, 0px); + -o-transform: skew(0deg, 20deg) translate3d(0, 100%, 0px); + -ms-transform: skew(0deg, 20deg) translate3d(0, 100%, 0px); + -webkit-transform: skew(0deg, 20deg) translate3d(0, 100%, 0px); + transform: skew(0deg, 20deg) translate3d(0, 100%, 0px); +} +.lg-css3.lg-slide-skew-ver-cross .lg-item.lg-current { + -moz-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + -o-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + -ms-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + -webkit-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + opacity: 1; +} +.lg-css3.lg-slide-skew-ver-cross .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-ver-cross .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-ver-cross .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; +} + +.lg-css3.lg-lollipop .lg-item { + opacity: 0; +} +.lg-css3.lg-lollipop .lg-item.lg-prev-slide { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); +} +.lg-css3.lg-lollipop .lg-item.lg-next-slide { + -moz-transform: translate3d(0, 0, 0) scale(0.5); + -o-transform: translate3d(0, 0, 0) scale(0.5); + -ms-transform: translate3d(0, 0, 0) scale(0.5); + -webkit-transform: translate3d(0, 0, 0) scale(0.5); + transform: translate3d(0, 0, 0) scale(0.5); +} +.lg-css3.lg-lollipop .lg-item.lg-current { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; +} +.lg-css3.lg-lollipop .lg-item.lg-prev-slide, .lg-css3.lg-lollipop .lg-item.lg-next-slide, .lg-css3.lg-lollipop .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; +} + +.lg-css3.lg-slide-skew-ver-rev .lg-item { + opacity: 0; +} +.lg-css3.lg-slide-skew-ver-rev .lg-item.lg-prev-slide { + -moz-transform: skew(-60deg, 0deg) translate3d(0, -100%, 0px); + -o-transform: skew(-60deg, 0deg) translate3d(0, -100%, 0px); + -ms-transform: skew(-60deg, 0deg) translate3d(0, -100%, 0px); + -webkit-transform: skew(-60deg, 0deg) translate3d(0, -100%, 0px); + transform: skew(-60deg, 0deg) translate3d(0, -100%, 0px); +} +.lg-css3.lg-slide-skew-ver-rev .lg-item.lg-next-slide { + -moz-transform: skew(-60deg, 0deg) translate3d(0, 100%, 0px); + -o-transform: skew(-60deg, 0deg) translate3d(0, 100%, 0px); + -ms-transform: skew(-60deg, 0deg) translate3d(0, 100%, 0px); + -webkit-transform: skew(-60deg, 0deg) translate3d(0, 100%, 0px); + transform: skew(-60deg, 0deg) translate3d(0, 100%, 0px); +} +.lg-css3.lg-slide-skew-ver-rev .lg-item.lg-current { + -moz-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + -o-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + -ms-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + -webkit-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + opacity: 1; +} +.lg-css3.lg-slide-skew-ver-rev .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-ver-rev .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-ver-rev .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; +} + +.lg-css3.lg-rotate-rev .lg-item { + opacity: 0; +} +.lg-css3.lg-rotate-rev .lg-item.lg-prev-slide { + -moz-transform: rotate(360deg); + -o-transform: rotate(360deg); + -ms-transform: rotate(360deg); + -webkit-transform: rotate(360deg); + transform: rotate(360deg); +} +.lg-css3.lg-rotate-rev .lg-item.lg-next-slide { + -moz-transform: rotate(-360deg); + -o-transform: rotate(-360deg); + -ms-transform: rotate(-360deg); + -webkit-transform: rotate(-360deg); + transform: rotate(-360deg); +} +.lg-css3.lg-rotate-rev .lg-item.lg-current { + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + -ms-transform: rotate(0deg); + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + opacity: 1; +} +.lg-css3.lg-rotate-rev .lg-item.lg-prev-slide, .lg-css3.lg-rotate-rev .lg-item.lg-next-slide, .lg-css3.lg-rotate-rev .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; +} + +.lg-css3.lg-slide-skew-ver .lg-item { + opacity: 0; +} +.lg-css3.lg-slide-skew-ver .lg-item.lg-prev-slide { + -moz-transform: skew(60deg, 0deg) translate3d(0, -100%, 0px); + -o-transform: skew(60deg, 0deg) translate3d(0, -100%, 0px); + -ms-transform: skew(60deg, 0deg) translate3d(0, -100%, 0px); + -webkit-transform: skew(60deg, 0deg) translate3d(0, -100%, 0px); + transform: skew(60deg, 0deg) translate3d(0, -100%, 0px); +} +.lg-css3.lg-slide-skew-ver .lg-item.lg-next-slide { + -moz-transform: skew(60deg, 0deg) translate3d(0, 100%, 0px); + -o-transform: skew(60deg, 0deg) translate3d(0, 100%, 0px); + -ms-transform: skew(60deg, 0deg) translate3d(0, 100%, 0px); + -webkit-transform: skew(60deg, 0deg) translate3d(0, 100%, 0px); + transform: skew(60deg, 0deg) translate3d(0, 100%, 0px); +} +.lg-css3.lg-slide-skew-ver .lg-item.lg-current { + -moz-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + -o-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + -ms-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + -webkit-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + opacity: 1; +} +.lg-css3.lg-slide-skew-ver .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-ver .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-ver .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; +} + +.lg-css3.lg-rotate .lg-item { + opacity: 0; +} +.lg-css3.lg-rotate .lg-item.lg-prev-slide { + -moz-transform: rotate(-360deg); + -o-transform: rotate(-360deg); + -ms-transform: rotate(-360deg); + -webkit-transform: rotate(-360deg); + transform: rotate(-360deg); +} +.lg-css3.lg-rotate .lg-item.lg-next-slide { + -moz-transform: rotate(360deg); + -o-transform: rotate(360deg); + -ms-transform: rotate(360deg); + -webkit-transform: rotate(360deg); + transform: rotate(360deg); +} +.lg-css3.lg-rotate .lg-item.lg-current { + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + -ms-transform: rotate(0deg); + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + opacity: 1; +} +.lg-css3.lg-rotate .lg-item.lg-prev-slide, .lg-css3.lg-rotate .lg-item.lg-next-slide, .lg-css3.lg-rotate .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; +} + +.lg-css3.lg-slide-skew .lg-item { + opacity: 0; +} +.lg-css3.lg-slide-skew .lg-item.lg-prev-slide { + -moz-transform: skew(20deg, 0deg) translate3d(-100%, 0%, 0px); + -o-transform: skew(20deg, 0deg) translate3d(-100%, 0%, 0px); + -ms-transform: skew(20deg, 0deg) translate3d(-100%, 0%, 0px); + -webkit-transform: skew(20deg, 0deg) translate3d(-100%, 0%, 0px); + transform: skew(20deg, 0deg) translate3d(-100%, 0%, 0px); +} +.lg-css3.lg-slide-skew .lg-item.lg-next-slide { + -moz-transform: skew(20deg, 0deg) translate3d(100%, 0%, 0px); + -o-transform: skew(20deg, 0deg) translate3d(100%, 0%, 0px); + -ms-transform: skew(20deg, 0deg) translate3d(100%, 0%, 0px); + -webkit-transform: skew(20deg, 0deg) translate3d(100%, 0%, 0px); + transform: skew(20deg, 0deg) translate3d(100%, 0%, 0px); +} +.lg-css3.lg-slide-skew .lg-item.lg-current { + -moz-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + -o-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + -ms-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + -webkit-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + opacity: 1; +} +.lg-css3.lg-slide-skew .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew .lg-item.lg-next-slide, .lg-css3.lg-slide-skew .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; +} + +.lg-css3.lg-scale-up .lg-item { + opacity: 0; +} +.lg-css3.lg-scale-up .lg-item.lg-prev-slide { + -moz-transform: scale3d(0.8, 0.8, 0.8) translate3d(0%, 10%, 0); + -o-transform: scale3d(0.8, 0.8, 0.8) translate3d(0%, 10%, 0); + -ms-transform: scale3d(0.8, 0.8, 0.8) translate3d(0%, 10%, 0); + -webkit-transform: scale3d(0.8, 0.8, 0.8) translate3d(0%, 10%, 0); + transform: scale3d(0.8, 0.8, 0.8) translate3d(0%, 10%, 0); +} +.lg-css3.lg-scale-up .lg-item.lg-next-slide { + -moz-transform: scale3d(0.8, 0.8, 0.8) translate3d(0%, 10%, 0); + -o-transform: scale3d(0.8, 0.8, 0.8) translate3d(0%, 10%, 0); + -ms-transform: scale3d(0.8, 0.8, 0.8) translate3d(0%, 10%, 0); + -webkit-transform: scale3d(0.8, 0.8, 0.8) translate3d(0%, 10%, 0); + transform: scale3d(0.8, 0.8, 0.8) translate3d(0%, 10%, 0); +} +.lg-css3.lg-scale-up .lg-item.lg-current { + -moz-transform: scale3d(1, 1, 1) translate3d(0, 0, 0); + -o-transform: scale3d(1, 1, 1) translate3d(0, 0, 0); + -ms-transform: scale3d(1, 1, 1) translate3d(0, 0, 0); + -webkit-transform: scale3d(1, 1, 1) translate3d(0, 0, 0); + transform: scale3d(1, 1, 1) translate3d(0, 0, 0); + opacity: 1; +} +.lg-css3.lg-scale-up .lg-item.lg-prev-slide, .lg-css3.lg-scale-up .lg-item.lg-next-slide, .lg-css3.lg-scale-up .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; +} + +.lg-css3.lg-slide-vertical-growth .lg-item { + opacity: 0; +} +.lg-css3.lg-slide-vertical-growth .lg-item.lg-prev-slide { + -moz-transform: scale3d(0.5, 0.5, 0.5) translate3d(0, -150%, 0); + -o-transform: scale3d(0.5, 0.5, 0.5) translate3d(0, -150%, 0); + -ms-transform: scale3d(0.5, 0.5, 0.5) translate3d(0, -150%, 0); + -webkit-transform: scale3d(0.5, 0.5, 0.5) translate3d(0, -150%, 0); + transform: scale3d(0.5, 0.5, 0.5) translate3d(0, -150%, 0); +} +.lg-css3.lg-slide-vertical-growth .lg-item.lg-next-slide { + -moz-transform: scale3d(0.5, 0.5, 0.5) translate3d(0, 150%, 0); + -o-transform: scale3d(0.5, 0.5, 0.5) translate3d(0, 150%, 0); + -ms-transform: scale3d(0.5, 0.5, 0.5) translate3d(0, 150%, 0); + -webkit-transform: scale3d(0.5, 0.5, 0.5) translate3d(0, 150%, 0); + transform: scale3d(0.5, 0.5, 0.5) translate3d(0, 150%, 0); +} +.lg-css3.lg-slide-vertical-growth .lg-item.lg-current { + -moz-transform: scale3d(1, 1, 1) translate3d(0, 0, 0); + -o-transform: scale3d(1, 1, 1) translate3d(0, 0, 0); + -ms-transform: scale3d(1, 1, 1) translate3d(0, 0, 0); + -webkit-transform: scale3d(1, 1, 1) translate3d(0, 0, 0); + transform: scale3d(1, 1, 1) translate3d(0, 0, 0); + opacity: 1; +} +.lg-css3.lg-slide-vertical-growth .lg-item.lg-prev-slide, .lg-css3.lg-slide-vertical-growth .lg-item.lg-next-slide, .lg-css3.lg-slide-vertical-growth .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; +} + +.lg-css3.lg-slide-circular-vertical .lg-item { + opacity: 0; +} +.lg-css3.lg-slide-circular-vertical .lg-item.lg-prev-slide { + -moz-transform: scale3d(0, 0, 0) translate3d(0, -100%, 0); + -o-transform: scale3d(0, 0, 0) translate3d(0, -100%, 0); + -ms-transform: scale3d(0, 0, 0) translate3d(0, -100%, 0); + -webkit-transform: scale3d(0, 0, 0) translate3d(0, -100%, 0); + transform: scale3d(0, 0, 0) translate3d(0, -100%, 0); +} +.lg-css3.lg-slide-circular-vertical .lg-item.lg-next-slide { + -moz-transform: scale3d(0, 0, 0) translate3d(0, 100%, 0); + -o-transform: scale3d(0, 0, 0) translate3d(0, 100%, 0); + -ms-transform: scale3d(0, 0, 0) translate3d(0, 100%, 0); + -webkit-transform: scale3d(0, 0, 0) translate3d(0, 100%, 0); + transform: scale3d(0, 0, 0) translate3d(0, 100%, 0); +} +.lg-css3.lg-slide-circular-vertical .lg-item.lg-current { + -moz-transform: scale3d(1, 1, 1) translate3d(0, 0, 0); + -o-transform: scale3d(1, 1, 1) translate3d(0, 0, 0); + -ms-transform: scale3d(1, 1, 1) translate3d(0, 0, 0); + -webkit-transform: scale3d(1, 1, 1) translate3d(0, 0, 0); + transform: scale3d(1, 1, 1) translate3d(0, 0, 0); + opacity: 1; +} +.lg-css3.lg-slide-circular-vertical .lg-item.lg-prev-slide, .lg-css3.lg-slide-circular-vertical .lg-item.lg-next-slide, .lg-css3.lg-slide-circular-vertical .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; +} + +.lg-css3.lg-slide-vertical .lg-item { + opacity: 0; +} +.lg-css3.lg-slide-vertical .lg-item.lg-prev-slide { + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); +} +.lg-css3.lg-slide-vertical .lg-item.lg-next-slide { + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); +} +.lg-css3.lg-slide-vertical .lg-item.lg-current { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; +} +.lg-css3.lg-slide-vertical .lg-item.lg-prev-slide, .lg-css3.lg-slide-vertical .lg-item.lg-next-slide, .lg-css3.lg-slide-vertical .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; +} + +.lg-css3.lg-slide-circular .lg-item { + opacity: 0; +} +.lg-css3.lg-slide-circular .lg-item.lg-prev-slide { + -moz-transform: scale3d(0, 0, 0) translate3d(-100%, 0, 0); + -o-transform: scale3d(0, 0, 0) translate3d(-100%, 0, 0); + -ms-transform: scale3d(0, 0, 0) translate3d(-100%, 0, 0); + -webkit-transform: scale3d(0, 0, 0) translate3d(-100%, 0, 0); + transform: scale3d(0, 0, 0) translate3d(-100%, 0, 0); +} +.lg-css3.lg-slide-circular .lg-item.lg-next-slide { + -moz-transform: scale3d(0, 0, 0) translate3d(100%, 0, 0); + -o-transform: scale3d(0, 0, 0) translate3d(100%, 0, 0); + -ms-transform: scale3d(0, 0, 0) translate3d(100%, 0, 0); + -webkit-transform: scale3d(0, 0, 0) translate3d(100%, 0, 0); + transform: scale3d(0, 0, 0) translate3d(100%, 0, 0); +} +.lg-css3.lg-slide-circular .lg-item.lg-current { + -moz-transform: scale3d(1, 1, 1) translate3d(0, 0, 0); + -o-transform: scale3d(1, 1, 1) translate3d(0, 0, 0); + -ms-transform: scale3d(1, 1, 1) translate3d(0, 0, 0); + -webkit-transform: scale3d(1, 1, 1) translate3d(0, 0, 0); + transform: scale3d(1, 1, 1) translate3d(0, 0, 0); + opacity: 1; +} +.lg-css3.lg-slide-circular .lg-item.lg-prev-slide, .lg-css3.lg-slide-circular .lg-item.lg-next-slide, .lg-css3.lg-slide-circular .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; +} + +.lg-css3.lg-soft-zoom .lg-item { + opacity: 0; +} +.lg-css3.lg-soft-zoom .lg-item.lg-prev-slide { + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); +} +.lg-css3.lg-soft-zoom .lg-item.lg-next-slide { + -webkit-transform: scale3d(0.9, 0.9, 0.9); + transform: scale3d(0.9, 0.9, 0.9); +} +.lg-css3.lg-soft-zoom .lg-item.lg-current { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + opacity: 1; +} +.lg-css3.lg-soft-zoom .lg-item.lg-prev-slide, .lg-css3.lg-soft-zoom .lg-item.lg-next-slide, .lg-css3.lg-soft-zoom .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; +} + +.lg-css3.lg-slide-skew-cross-rev .lg-item { + opacity: 0; +} +.lg-css3.lg-slide-skew-cross-rev .lg-item.lg-prev-slide { + -moz-transform: skew(0deg, -60deg) translate3d(-100%, 0%, 0px); + -o-transform: skew(0deg, -60deg) translate3d(-100%, 0%, 0px); + -ms-transform: skew(0deg, -60deg) translate3d(-100%, 0%, 0px); + -webkit-transform: skew(0deg, -60deg) translate3d(-100%, 0%, 0px); + transform: skew(0deg, -60deg) translate3d(-100%, 0%, 0px); +} +.lg-css3.lg-slide-skew-cross-rev .lg-item.lg-next-slide { + -moz-transform: skew(0deg, -60deg) translate3d(100%, 0%, 0px); + -o-transform: skew(0deg, -60deg) translate3d(100%, 0%, 0px); + -ms-transform: skew(0deg, -60deg) translate3d(100%, 0%, 0px); + -webkit-transform: skew(0deg, -60deg) translate3d(100%, 0%, 0px); + transform: skew(0deg, -60deg) translate3d(100%, 0%, 0px); +} +.lg-css3.lg-slide-skew-cross-rev .lg-item.lg-current { + -moz-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + -o-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + -ms-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + -webkit-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + opacity: 1; +} +.lg-css3.lg-slide-skew-cross-rev .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-cross-rev .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-cross-rev .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; +} + +.lg-css3.lg-tube .lg-item { + opacity: 0; +} +.lg-css3.lg-tube .lg-item.lg-prev-slide { + -moz-transform: scale3d(1, 0, 1) translate3d(-100%, 0, 0); + -o-transform: scale3d(1, 0, 1) translate3d(-100%, 0, 0); + -ms-transform: scale3d(1, 0, 1) translate3d(-100%, 0, 0); + -webkit-transform: scale3d(1, 0, 1) translate3d(-100%, 0, 0); + transform: scale3d(1, 0, 1) translate3d(-100%, 0, 0); +} +.lg-css3.lg-tube .lg-item.lg-next-slide { + -moz-transform: scale3d(1, 0, 1) translate3d(100%, 0, 0); + -o-transform: scale3d(1, 0, 1) translate3d(100%, 0, 0); + -ms-transform: scale3d(1, 0, 1) translate3d(100%, 0, 0); + -webkit-transform: scale3d(1, 0, 1) translate3d(100%, 0, 0); + transform: scale3d(1, 0, 1) translate3d(100%, 0, 0); +} +.lg-css3.lg-tube .lg-item.lg-current { + -moz-transform: scale3d(1, 1, 1) translate3d(0, 0, 0); + -o-transform: scale3d(1, 1, 1) translate3d(0, 0, 0); + -ms-transform: scale3d(1, 1, 1) translate3d(0, 0, 0); + -webkit-transform: scale3d(1, 1, 1) translate3d(0, 0, 0); + transform: scale3d(1, 1, 1) translate3d(0, 0, 0); + opacity: 1; +} +.lg-css3.lg-tube .lg-item.lg-prev-slide, .lg-css3.lg-tube .lg-item.lg-next-slide, .lg-css3.lg-tube .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; +} + +.lg-css3.lg-slide-skew-cross .lg-item { + opacity: 0; +} +.lg-css3.lg-slide-skew-cross .lg-item.lg-prev-slide { + -moz-transform: skew(0deg, 60deg) translate3d(-100%, 0%, 0px); + -o-transform: skew(0deg, 60deg) translate3d(-100%, 0%, 0px); + -ms-transform: skew(0deg, 60deg) translate3d(-100%, 0%, 0px); + -webkit-transform: skew(0deg, 60deg) translate3d(-100%, 0%, 0px); + transform: skew(0deg, 60deg) translate3d(-100%, 0%, 0px); +} +.lg-css3.lg-slide-skew-cross .lg-item.lg-next-slide { + -moz-transform: skew(0deg, 60deg) translate3d(100%, 0%, 0px); + -o-transform: skew(0deg, 60deg) translate3d(100%, 0%, 0px); + -ms-transform: skew(0deg, 60deg) translate3d(100%, 0%, 0px); + -webkit-transform: skew(0deg, 60deg) translate3d(100%, 0%, 0px); + transform: skew(0deg, 60deg) translate3d(100%, 0%, 0px); +} +.lg-css3.lg-slide-skew-cross .lg-item.lg-current { + -moz-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + -o-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + -ms-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + -webkit-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + opacity: 1; +} +.lg-css3.lg-slide-skew-cross .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-cross .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-cross .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; +} + +.lg-css3.lg-zoom-in-big .lg-item { + opacity: 0; +} +.lg-css3.lg-zoom-in-big .lg-item.lg-prev-slide { + -webkit-transform: scale3d(2, 2, 2); + transform: scale3d(2, 2, 2); +} +.lg-css3.lg-zoom-in-big .lg-item.lg-next-slide { + -webkit-transform: scale3d(2, 2, 2); + transform: scale3d(2, 2, 2); +} +.lg-css3.lg-zoom-in-big .lg-item.lg-current { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + opacity: 1; +} +.lg-css3.lg-zoom-in-big .lg-item.lg-prev-slide, .lg-css3.lg-zoom-in-big .lg-item.lg-next-slide, .lg-css3.lg-zoom-in-big .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; +} + +.lg-css3.lg-slide-skew-only-rev .lg-item { + opacity: 0; +} +.lg-css3.lg-slide-skew-only-rev .lg-item.lg-prev-slide { + -moz-transform: skew(-10deg, 0deg); + -o-transform: skew(-10deg, 0deg); + -ms-transform: skew(-10deg, 0deg); + -webkit-transform: skew(-10deg, 0deg); + transform: skew(-10deg, 0deg); +} +.lg-css3.lg-slide-skew-only-rev .lg-item.lg-next-slide { + -moz-transform: skew(-10deg, 0deg); + -o-transform: skew(-10deg, 0deg); + -ms-transform: skew(-10deg, 0deg); + -webkit-transform: skew(-10deg, 0deg); + transform: skew(-10deg, 0deg); +} +.lg-css3.lg-slide-skew-only-rev .lg-item.lg-current { + -moz-transform: skew(0deg, 0deg); + -o-transform: skew(0deg, 0deg); + -ms-transform: skew(0deg, 0deg); + -webkit-transform: skew(0deg, 0deg); + transform: skew(0deg, 0deg); + opacity: 1; +} +.lg-css3.lg-slide-skew-only-rev .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-only-rev .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-only-rev .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; +} + +.lg-css3.lg-zoom-in-out .lg-item { + opacity: 0; +} +.lg-css3.lg-zoom-in-out .lg-item.lg-prev-slide { + -webkit-transform: scale3d(2, 2, 2); + transform: scale3d(2, 2, 2); +} +.lg-css3.lg-zoom-in-out .lg-item.lg-next-slide { + -webkit-transform: scale3d(0, 0, 0); + transform: scale3d(0, 0, 0); +} +.lg-css3.lg-zoom-in-out .lg-item.lg-current { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + opacity: 1; +} +.lg-css3.lg-zoom-in-out .lg-item.lg-prev-slide, .lg-css3.lg-zoom-in-out .lg-item.lg-next-slide, .lg-css3.lg-zoom-in-out .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; +} + +.lg-css3.lg-slide-skew-only-y-rev .lg-item { + opacity: 0; +} +.lg-css3.lg-slide-skew-only-y-rev .lg-item.lg-prev-slide { + -moz-transform: skew(0deg, -10deg); + -o-transform: skew(0deg, -10deg); + -ms-transform: skew(0deg, -10deg); + -webkit-transform: skew(0deg, -10deg); + transform: skew(0deg, -10deg); +} +.lg-css3.lg-slide-skew-only-y-rev .lg-item.lg-next-slide { + -moz-transform: skew(0deg, -10deg); + -o-transform: skew(0deg, -10deg); + -ms-transform: skew(0deg, -10deg); + -webkit-transform: skew(0deg, -10deg); + transform: skew(0deg, -10deg); +} +.lg-css3.lg-slide-skew-only-y-rev .lg-item.lg-current { + -moz-transform: skew(0deg, 0deg); + -o-transform: skew(0deg, 0deg); + -ms-transform: skew(0deg, 0deg); + -webkit-transform: skew(0deg, 0deg); + transform: skew(0deg, 0deg); + opacity: 1; +} +.lg-css3.lg-slide-skew-only-y-rev .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-only-y-rev .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-only-y-rev .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; +} + +.lg-css3.lg-slide-skew-only-y .lg-item { + opacity: 0; +} +.lg-css3.lg-slide-skew-only-y .lg-item.lg-prev-slide { + -moz-transform: skew(0deg, 10deg); + -o-transform: skew(0deg, 10deg); + -ms-transform: skew(0deg, 10deg); + -webkit-transform: skew(0deg, 10deg); + transform: skew(0deg, 10deg); +} +.lg-css3.lg-slide-skew-only-y .lg-item.lg-next-slide { + -moz-transform: skew(0deg, 10deg); + -o-transform: skew(0deg, 10deg); + -ms-transform: skew(0deg, 10deg); + -webkit-transform: skew(0deg, 10deg); + transform: skew(0deg, 10deg); +} +.lg-css3.lg-slide-skew-only-y .lg-item.lg-current { + -moz-transform: skew(0deg, 0deg); + -o-transform: skew(0deg, 0deg); + -ms-transform: skew(0deg, 0deg); + -webkit-transform: skew(0deg, 0deg); + transform: skew(0deg, 0deg); + opacity: 1; +} +.lg-css3.lg-slide-skew-only-y .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-only-y .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-only-y .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; +} + +.lg-css3.lg-zoom-out-big .lg-item { + opacity: 0; +} +.lg-css3.lg-zoom-out-big .lg-item.lg-prev-slide { + -webkit-transform: scale3d(0, 0, 0); + transform: scale3d(0, 0, 0); +} +.lg-css3.lg-zoom-out-big .lg-item.lg-next-slide { + -webkit-transform: scale3d(0, 0, 0); + transform: scale3d(0, 0, 0); +} +.lg-css3.lg-zoom-out-big .lg-item.lg-current { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + opacity: 1; +} +.lg-css3.lg-zoom-out-big .lg-item.lg-prev-slide, .lg-css3.lg-zoom-out-big .lg-item.lg-next-slide, .lg-css3.lg-zoom-out-big .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; +} + +.lg-css3.lg-slide-skew-only .lg-item { + opacity: 0; +} +.lg-css3.lg-slide-skew-only .lg-item.lg-prev-slide { + -moz-transform: skew(10deg, 0deg); + -o-transform: skew(10deg, 0deg); + -ms-transform: skew(10deg, 0deg); + -webkit-transform: skew(10deg, 0deg); + transform: skew(10deg, 0deg); +} +.lg-css3.lg-slide-skew-only .lg-item.lg-next-slide { + -moz-transform: skew(10deg, 0deg); + -o-transform: skew(10deg, 0deg); + -ms-transform: skew(10deg, 0deg); + -webkit-transform: skew(10deg, 0deg); + transform: skew(10deg, 0deg); +} +.lg-css3.lg-slide-skew-only .lg-item.lg-current { + -moz-transform: skew(0deg, 0deg); + -o-transform: skew(0deg, 0deg); + -ms-transform: skew(0deg, 0deg); + -webkit-transform: skew(0deg, 0deg); + transform: skew(0deg, 0deg); + opacity: 1; +} +.lg-css3.lg-slide-skew-only .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-only .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-only .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; +} + +.lg-css3.lg-zoom-out-in .lg-item { + opacity: 0; +} +.lg-css3.lg-zoom-out-in .lg-item.lg-prev-slide { + -webkit-transform: scale3d(0, 0, 0); + transform: scale3d(0, 0, 0); +} +.lg-css3.lg-zoom-out-in .lg-item.lg-next-slide { + -webkit-transform: scale3d(2, 2, 2); + transform: scale3d(2, 2, 2); +} +.lg-css3.lg-zoom-out-in .lg-item.lg-current { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + opacity: 1; +} +.lg-css3.lg-zoom-out-in .lg-item.lg-prev-slide, .lg-css3.lg-zoom-out-in .lg-item.lg-next-slide, .lg-css3.lg-zoom-out-in .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; +} + +.lg-css3.lg-slide-skew-rev .lg-item { + opacity: 0; +} +.lg-css3.lg-slide-skew-rev .lg-item.lg-prev-slide { + -moz-transform: skew(-20deg, 0deg) translate3d(-100%, 0%, 0px); + -o-transform: skew(-20deg, 0deg) translate3d(-100%, 0%, 0px); + -ms-transform: skew(-20deg, 0deg) translate3d(-100%, 0%, 0px); + -webkit-transform: skew(-20deg, 0deg) translate3d(-100%, 0%, 0px); + transform: skew(-20deg, 0deg) translate3d(-100%, 0%, 0px); +} +.lg-css3.lg-slide-skew-rev .lg-item.lg-next-slide { + -moz-transform: skew(-20deg, 0deg) translate3d(100%, 0%, 0px); + -o-transform: skew(-20deg, 0deg) translate3d(100%, 0%, 0px); + -ms-transform: skew(-20deg, 0deg) translate3d(100%, 0%, 0px); + -webkit-transform: skew(-20deg, 0deg) translate3d(100%, 0%, 0px); + transform: skew(-20deg, 0deg) translate3d(100%, 0%, 0px); +} +.lg-css3.lg-slide-skew-rev .lg-item.lg-current { + -moz-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + -o-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + -ms-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + -webkit-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + opacity: 1; +} +.lg-css3.lg-slide-skew-rev .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-rev .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-rev .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; +} + +.lg-css3.lg-zoom-out .lg-item { + opacity: 0; +} +.lg-css3.lg-zoom-out .lg-item.lg-prev-slide { + -webkit-transform: scale3d(0.7, 0.7, 0.7); + transform: scale3d(0.7, 0.7, 0.7); +} +.lg-css3.lg-zoom-out .lg-item.lg-next-slide { + -webkit-transform: scale3d(0.7, 0.7, 0.7); + transform: scale3d(0.7, 0.7, 0.7); +} +.lg-css3.lg-zoom-out .lg-item.lg-current { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + opacity: 1; +} +.lg-css3.lg-zoom-out .lg-item.lg-prev-slide, .lg-css3.lg-zoom-out .lg-item.lg-next-slide, .lg-css3.lg-zoom-out .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; +} + +.lg-css3.lg-slide-skew-ver-cross-rev .lg-item { + opacity: 0; +} +.lg-css3.lg-slide-skew-ver-cross-rev .lg-item.lg-prev-slide { + -moz-transform: skew(0deg, -20deg) translate3d(0, -100%, 0px); + -o-transform: skew(0deg, -20deg) translate3d(0, -100%, 0px); + -ms-transform: skew(0deg, -20deg) translate3d(0, -100%, 0px); + -webkit-transform: skew(0deg, -20deg) translate3d(0, -100%, 0px); + transform: skew(0deg, -20deg) translate3d(0, -100%, 0px); +} +.lg-css3.lg-slide-skew-ver-cross-rev .lg-item.lg-next-slide { + -moz-transform: skew(0deg, -20deg) translate3d(0, 100%, 0px); + -o-transform: skew(0deg, -20deg) translate3d(0, 100%, 0px); + -ms-transform: skew(0deg, -20deg) translate3d(0, 100%, 0px); + -webkit-transform: skew(0deg, -20deg) translate3d(0, 100%, 0px); + transform: skew(0deg, -20deg) translate3d(0, 100%, 0px); +} +.lg-css3.lg-slide-skew-ver-cross-rev .lg-item.lg-current { + -moz-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + -o-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + -ms-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + -webkit-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px); + opacity: 1; +} +.lg-css3.lg-slide-skew-ver-cross-rev .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-ver-cross-rev .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-ver-cross-rev .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; +} + +/*# sourceMappingURL=lg-transitions.css.map */ diff --git a/assets/lightGallery/css/lg-transitions.css.map b/assets/lightGallery/css/lg-transitions.css.map new file mode 100644 index 0000000..385c961 --- /dev/null +++ b/assets/lightGallery/css/lg-transitions.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["../../src/scss/transitions/_lg-zoom-in.scss","../../src/scss/_lg-mixins.scss","../../src/scss/transitions/_lg-lollipop-rev.scss","../../src/scss/transitions/_lg-slide-skew-ver-cross.scss","../../src/scss/transitions/_lg-lollipop.scss","../../src/scss/transitions/_lg-slide-skew-ver-rev.scss","../../src/scss/transitions/_lg-rotate-rev.scss","../../src/scss/transitions/_lg-slide-skew-ver.scss","../../src/scss/transitions/_lg-rotate.scss","../../src/scss/transitions/_lg-slide-skew.scss","../../src/scss/transitions/_lg-scale-up.scss","../../src/scss/transitions/_lg-slide-vertical-growth.scss","../../src/scss/transitions/_lg-slide-circular-vertical.scss","../../src/scss/transitions/_lg-slide-vertical.scss","../../src/scss/transitions/_lg-slide-circular.scss","../../src/scss/transitions/_lg-soft-zoom.scss","../../src/scss/transitions/_lg-slide-skew-cross-rev.scss","../../src/scss/transitions/_lg-tube.scss","../../src/scss/transitions/_lg-slide-skew-cross.scss","../../src/scss/transitions/_lg-zoom-in-big.scss","../../src/scss/transitions/_lg-slide-skew-only-rev.scss","../../src/scss/transitions/_lg-zoom-in-out.scss","../../src/scss/transitions/_lg-slide-skew-only-y-rev.scss","../../src/scss/transitions/_lg-slide-skew-only-y.scss","../../src/scss/transitions/_lg-zoom-out-big.scss","../../src/scss/transitions/_lg-slide-skew-only.scss","../../src/scss/transitions/_lg-zoom-out-in.scss","../../src/scss/transitions/_lg-slide-skew-rev.scss","../../src/scss/transitions/_lg-zoom-out.scss","../../src/scss/transitions/_lg-slide-skew-ver-cross-rev.scss"],"names":[],"mappings":"AAIQ;EACI;;AAEA;ECiKR;EACA;;AD9JQ;EC6JR;EACA;;AD1JQ;ECyJR;EACA;EDxJY;;AAGJ;ECsRR;EACA;EACA;EACA,YDtRY;;;AEnBR;EACI;;AAEA;ED8MR,gBC7M+B;ED8M/B,cC9M+B;ED+M/B,eC/M+B;EDgN/B,mBChN+B;EDiN/B,WCjN+B;;AAGvB;EDwJR;EACA;;ACrJQ;EDoJR;EACA;ECnJY;;AAGJ;EDsRR;EACA;EACA;EACA,YCtRY;;;ACnBR;EACI;;AAEA;EF8MR,gBE5MgB;EF6MhB,cE7MgB;EF8MhB,eE9MgB;EF+MhB,mBE/MgB;EFgNhB,WEhNgB;;AAIR;EFwMR,gBEvM+B;EFwM/B,cExM+B;EFyM/B,eEzM+B;EF0M/B,mBE1M+B;EF2M/B,WE3M+B;;AAGvB;EFoMR,gBEnM+B;EFoM/B,cEpM+B;EFqM/B,eErM+B;EFsM/B,mBEtM+B;EFuM/B,WEvM+B;EACnB;;AAGJ;EFoRR;EACA;EACA;EACA,YEpRY;;;ACrBR;EACI;;AAEA;EH4JR;EACA;;AGzJQ;EH0MR,gBGzM+B;EH0M/B,cG1M+B;EH2M/B,eG3M+B;EH4M/B,mBG5M+B;EH6M/B,WG7M+B;;AAGvB;EHoJR;EACA;EGnJY;;AAGJ;EHsRR;EACA;EACA;EACA,YGtRY;;;ACnBR;EACI;;AAEA;EJ8MR,gBI5MgB;EJ6MhB,cI7MgB;EJ8MhB,eI9MgB;EJ+MhB,mBI/MgB;EJgNhB,WIhNgB;;AAIR;EJwMR,gBItMgB;EJuMhB,cIvMgB;EJwMhB,eIxMgB;EJyMhB,mBIzMgB;EJ0MhB,WI1MgB;;AAIR;EJkMR,gBIjM+B;EJkM/B,cIlM+B;EJmM/B,eInM+B;EJoM/B,mBIpM+B;EJqM/B,WIrM+B;EACnB;;AAGJ;EJkRR;EACA;EACA;EACA,YIlRY;;;ACvBR;EACI;;AAEA;EL8MR,gBK7M+B;EL8M/B,cK9M+B;EL+M/B,eK/M+B;ELgN/B,mBKhN+B;ELiN/B,WKjN+B;;AAGvB;EL0MR,gBKzM+B;EL0M/B,cK1M+B;EL2M/B,eK3M+B;EL4M/B,mBK5M+B;EL6M/B,WK7M+B;;AAGvB;ELsMR,gBKrM+B;ELsM/B,cKtM+B;ELuM/B,eKvM+B;ELwM/B,mBKxM+B;ELyM/B,WKzM+B;EACnB;;AAGJ;ELsRR;EACA;EACA;EACA,YKtRY;;;ACnBR;EACI;;AAEA;EN8MR,gBM5MgB;EN6MhB,cM7MgB;EN8MhB,eM9MgB;EN+MhB,mBM/MgB;ENgNhB,WMhNgB;;AAIR;ENwMR,gBMvM+B;ENwM/B,cMxM+B;ENyM/B,eMzM+B;EN0M/B,mBM1M+B;EN2M/B,WM3M+B;;AAGvB;ENoMR,gBMnM+B;ENoM/B,cMpM+B;ENqM/B,eMrM+B;ENsM/B,mBMtM+B;ENuM/B,WMvM+B;EACnB;;AAGJ;ENoRR;EACA;EACA;EACA,YMpRY;;;ACrBR;EACI;;AAEA;EP8MR,gBO7M+B;EP8M/B,cO9M+B;EP+M/B,eO/M+B;EPgN/B,mBOhN+B;EPiN/B,WOjN+B;;AAGvB;EP0MR,gBOzM+B;EP0M/B,cO1M+B;EP2M/B,eO3M+B;EP4M/B,mBO5M+B;EP6M/B,WO7M+B;;AAGvB;EPsMR,gBOrM+B;EPsM/B,cOtM+B;EPuM/B,eOvM+B;EPwM/B,mBOxM+B;EPyM/B,WOzM+B;EACnB;;AAGJ;EPsRR;EACA;EACA;EACA,YOtRY;;;ACnBR;EACI;;AAEA;ER8MR,gBQ5MgB;ER6MhB,cQ7MgB;ER8MhB,eQ9MgB;ER+MhB,mBQ/MgB;ERgNhB,WQhNgB;;AAIR;ERwMR,gBQtMgB;ERuMhB,cQvMgB;ERwMhB,eQxMgB;ERyMhB,mBQzMgB;ER0MhB,WQ1MgB;;AAIR;ERkMR,gBQjM+B;ERkM/B,cQlM+B;ERmM/B,eQnM+B;ERoM/B,mBQpM+B;ERqM/B,WQrM+B;EACnB;;AAGJ;ERkRR;EACA;EACA;EACA,YQlRY;;;ACvBR;EACI;;AAEA;ET8MR,gBS5MgB;ET6MhB,cS7MgB;ET8MhB,eS9MgB;ET+MhB,mBS/MgB;ETgNhB,WShNgB;;AAIR;ETwMR,gBStMgB;ETuMhB,cSvMgB;ETwMhB,eSxMgB;ETyMhB,mBSzMgB;ET0MhB,WS1MgB;;AAIR;ETkMR,gBSjM+B;ETkM/B,cSlM+B;ETmM/B,eSnM+B;EToM/B,mBSpM+B;ETqM/B,WSrM+B;EACnB;;AAGJ;ETkRR;EACA;EACA;EACA,YSlRY;;;ACvBR;EACI;;AAEA;EV8MR,gBU5MgB;EV6MhB,cU7MgB;EV8MhB,eU9MgB;EV+MhB,mBU/MgB;EVgNhB,WUhNgB;;AAIR;EVwMR,gBUtMgB;EVuMhB,cUvMgB;EVwMhB,eUxMgB;EVyMhB,mBUzMgB;EV0MhB,WU1MgB;;AAIR;EVkMR,gBUjM+B;EVkM/B,cUlM+B;EVmM/B,eUnM+B;EVoM/B,mBUpM+B;EVqM/B,WUrM+B;EACnB;;AAGJ;EVkRR;EACA;EACA;EACA,YUlRY;;;ACvBR;EACI;;AAEA;EX8MR,gBW7M+B;EX8M/B,cW9M+B;EX+M/B,eW/M+B;EXgN/B,mBWhN+B;EXiN/B,WWjN+B;;AAGvB;EX0MR,gBWzM+B;EX0M/B,cW1M+B;EX2M/B,eW3M+B;EX4M/B,mBW5M+B;EX6M/B,WW7M+B;;AAGvB;EXsMR,gBWrM+B;EXsM/B,cWtM+B;EXuM/B,eWvM+B;EXwM/B,mBWxM+B;EXyM/B,WWzM+B;EACnB;;AAGJ;EXsRR;EACA;EACA;EACA,YWtRY;;;ACnBR;EACI;;AAEA;EZ4JR;EACA;;AYzJQ;EZwJR;EACA;;AYrJQ;EZoJR;EACA;EYnJY;;AAGJ;EZsRR;EACA;EACA;EACA,YYtRY;;;ACnBR;EACI;;AAEA;Eb8MR,gBa7M+B;Eb8M/B,ca9M+B;Eb+M/B,ea/M+B;EbgN/B,mBahN+B;EbiN/B,WajN+B;;AAGvB;Eb0MR,gBazM+B;Eb0M/B,ca1M+B;Eb2M/B,ea3M+B;Eb4M/B,mBa5M+B;Eb6M/B,Wa7M+B;;AAGvB;EbsMR,gBarM+B;EbsM/B,catM+B;EbuM/B,eavM+B;EbwM/B,mBaxM+B;EbyM/B,WazM+B;EACnB;;AAGJ;EbsRR;EACA;EACA;EACA,YatRY;;;ACnBR;EACI;;AAEA;EdiKR;EACA;;Ac9JQ;Ed6JR;EACA;;Ac1JQ;EdyJR;EACA;EcxJY;;AAGJ;EdsRR;EACA;EACA;EACA,YctRY;;;ACnBR;EACI;;AAEA;Ef8MR,gBe5MgB;Ef6MhB,ce7MgB;Ef8MhB,ee9MgB;Ef+MhB,mBe/MgB;EfgNhB,WehNgB;;AAIR;EfwMR,gBetMgB;EfuMhB,cevMgB;EfwMhB,eexMgB;EfyMhB,mBezMgB;Ef0MhB,We1MgB;;AAIR;EfkMR,gBejM+B;EfkM/B,celM+B;EfmM/B,eenM+B;EfoM/B,mBepM+B;EfqM/B,WerM+B;EACnB;;AAGJ;EfkRR;EACA;EACA;EACA,YelRY;;;ACvBR;EACI;;AAEA;EhB8MR,gBgB7M+B;EhB8M/B,cgB9M+B;EhB+M/B,egB/M+B;EhBgN/B,mBgBhN+B;EhBiN/B,WgBjN+B;;AAGvB;EhB0MR,gBgBzM+B;EhB0M/B,cgB1M+B;EhB2M/B,egB3M+B;EhB4M/B,mBgB5M+B;EhB6M/B,WgB7M+B;;AAGvB;EhBsMR,gBgBrM+B;EhBsM/B,cgBtM+B;EhBuM/B,egBvM+B;EhBwM/B,mBgBxM+B;EhByM/B,WgBzM+B;EACnB;;AAGJ;EhBsRR;EACA;EACA;EACA,YgBtRY;;;ACnBR;EACI;;AAEA;EjB8MR,gBiB5MgB;EjB6MhB,ciB7MgB;EjB8MhB,eiB9MgB;EjB+MhB,mBiB/MgB;EjBgNhB,WiBhNgB;;AAIR;EjBwMR,gBiBtMgB;EjBuMhB,ciBvMgB;EjBwMhB,eiBxMgB;EjByMhB,mBiBzMgB;EjB0MhB,WiB1MgB;;AAIR;EjBkMR,gBiBjM+B;EjBkM/B,ciBlM+B;EjBmM/B,eiBnM+B;EjBoM/B,mBiBpM+B;EjBqM/B,WiBrM+B;EACnB;;AAGJ;EjBkRR;EACA;EACA;EACA,YiBlRY;;;ACvBR;EACI;;AAEA;ElBiKR;EACA;;AkB9JQ;ElB6JR;EACA;;AkB1JQ;ElByJR;EACA;EkBxJY;;AAGJ;ElBsRR;EACA;EACA;EACA,YkBtRY;;;ACnBR;EACI;;AAEA;EnB8MR,gBmB7M+B;EnB8M/B,cmB9M+B;EnB+M/B,emB/M+B;EnBgN/B,mBmBhN+B;EnBiN/B,WmBjN+B;;AAGvB;EnB0MR,gBmBzM+B;EnB0M/B,cmB1M+B;EnB2M/B,emB3M+B;EnB4M/B,mBmB5M+B;EnB6M/B,WmB7M+B;;AAGvB;EnBsMR,gBmBrM+B;EnBsM/B,cmBtM+B;EnBuM/B,emBvM+B;EnBwM/B,mBmBxM+B;EnByM/B,WmBzM+B;EACnB;;AAGJ;EnBsRR;EACA;EACA;EACA,YmBtRY;;;ACnBR;EACI;;AAEA;EpBiKR;EACA;;AoB9JQ;EpB6JR;EACA;;AoB1JQ;EpByJR;EACA;EoBxJY;;AAGJ;EpBsRR;EACA;EACA;EACA,YoBtRY;;;ACnBR;EACI;;AAEA;ErB8MR,gBqB7M+B;ErB8M/B,cqB9M+B;ErB+M/B,eqB/M+B;ErBgN/B,mBqBhN+B;ErBiN/B,WqBjN+B;;AAGvB;ErB0MR,gBqBzM+B;ErB0M/B,cqB1M+B;ErB2M/B,eqB3M+B;ErB4M/B,mBqB5M+B;ErB6M/B,WqB7M+B;;AAGvB;ErBsMR,gBqBrM+B;ErBsM/B,cqBtM+B;ErBuM/B,eqBvM+B;ErBwM/B,mBqBxM+B;ErByM/B,WqBzM+B;EACnB;;AAGJ;ErBsRR;EACA;EACA;EACA,YqBtRY;;;ACnBR;EACI;;AAEA;EtB8MR,gBsB7M+B;EtB8M/B,csB9M+B;EtB+M/B,esB/M+B;EtBgN/B,mBsBhN+B;EtBiN/B,WsBjN+B;;AAGvB;EtB0MR,gBsBzM+B;EtB0M/B,csB1M+B;EtB2M/B,esB3M+B;EtB4M/B,mBsB5M+B;EtB6M/B,WsB7M+B;;AAGvB;EtBsMR,gBsBrM+B;EtBsM/B,csBtM+B;EtBuM/B,esBvM+B;EtBwM/B,mBsBxM+B;EtByM/B,WsBzM+B;EACnB;;AAGJ;EtBsRR;EACA;EACA;EACA,YsBtRY;;;ACnBR;EACI;;AAEA;EvBiKR;EACA;;AuB9JQ;EvB6JR;EACA;;AuB1JQ;EvByJR;EACA;EuBxJY;;AAGJ;EvBsRR;EACA;EACA;EACA,YuBtRY;;;ACnBR;EACI;;AAEA;ExB8MR,gBwB7M+B;ExB8M/B,cwB9M+B;ExB+M/B,ewB/M+B;ExBgN/B,mBwBhN+B;ExBiN/B,WwBjN+B;;AAGvB;ExB0MR,gBwBzM+B;ExB0M/B,cwB1M+B;ExB2M/B,ewB3M+B;ExB4M/B,mBwB5M+B;ExB6M/B,WwB7M+B;;AAGvB;ExBsMR,gBwBrM+B;ExBsM/B,cwBtM+B;ExBuM/B,ewBvM+B;ExBwM/B,mBwBxM+B;ExByM/B,WwBzM+B;EACnB;;AAGJ;ExBsRR;EACA;EACA;EACA,YwBtRY;;;ACnBR;EACI;;AAEA;EzBiKR;EACA;;AyB9JQ;EzB6JR;EACA;;AyB1JQ;EzByJR;EACA;EyBxJY;;AAGJ;EzBsRR;EACA;EACA;EACA,YyBtRY;;;ACnBR;EACI;;AAEA;E1B8MR,gB0B5MgB;E1B6MhB,c0B7MgB;E1B8MhB,e0B9MgB;E1B+MhB,mB0B/MgB;E1BgNhB,W0BhNgB;;AAIR;E1BwMR,gB0BtMgB;E1BuMhB,c0BvMgB;E1BwMhB,e0BxMgB;E1ByMhB,mB0BzMgB;E1B0MhB,W0B1MgB;;AAIR;E1BkMR,gB0BjM+B;E1BkM/B,c0BlM+B;E1BmM/B,e0BnM+B;E1BoM/B,mB0BpM+B;E1BqM/B,W0BrM+B;EACnB;;AAGJ;E1BkRR;EACA;EACA;EACA,Y0BlRY;;;ACvBR;EACI;;AAEA;E3BiKR;EACA;;A2B9JQ;E3B6JR;EACA;;A2B1JQ;E3ByJR;EACA;E2BxJY;;AAGJ;E3BsRR;EACA;EACA;EACA,Y2BtRY;;;ACnBR;EACI;;AAEA;E5B8MR,gB4B5MgB;E5B6MhB,c4B7MgB;E5B8MhB,e4B9MgB;E5B+MhB,mB4B/MgB;E5BgNhB,W4BhNgB;;AAIR;E5BwMR,gB4BtMgB;E5BuMhB,c4BvMgB;E5BwMhB,e4BxMgB;E5ByMhB,mB4BzMgB;E5B0MhB,W4B1MgB;;AAIR;E5BkMR,gB4BjM+B;E5BkM/B,c4BlM+B;E5BmM/B,e4BnM+B;E5BoM/B,mB4BpM+B;E5BqM/B,W4BrM+B;EACnB;;AAGJ;E5BkRR;EACA;EACA;EACA,Y4BlRY","file":"lg-transitions.css"} \ No newline at end of file diff --git a/assets/lightGallery/css/lg-video.css b/assets/lightGallery/css/lg-video.css new file mode 100644 index 0000000..7195a37 --- /dev/null +++ b/assets/lightGallery/css/lg-video.css @@ -0,0 +1,135 @@ +.lg-outer .lg-video-cont { + text-align: center; + display: inline-block; + vertical-align: middle; + position: relative; +} +.lg-outer .lg-video-cont .lg-object { + width: 100% !important; + height: 100% !important; +} +.lg-outer .lg-has-iframe .lg-video-cont { + -webkit-overflow-scrolling: touch; + overflow: auto; +} +.lg-outer .lg-video-object { + position: absolute; + left: 0; + right: 0; + width: 100%; + height: 100%; + top: 0; + bottom: 0; + z-index: 3; +} +.lg-outer .lg-video-poster { + z-index: 1; +} +.lg-outer .lg-has-video .lg-video-object { + opacity: 0; + will-change: opacity; + -webkit-transition: opacity 0.3s ease-in; + -o-transition: opacity 0.3s ease-in; + transition: opacity 0.3s ease-in; +} +.lg-outer .lg-has-video.lg-video-loaded .lg-video-poster, +.lg-outer .lg-has-video.lg-video-loaded .lg-video-play-button { + opacity: 0 !important; +} +.lg-outer .lg-has-video.lg-video-loaded .lg-video-object { + opacity: 1; +} + +@keyframes lg-play-stroke { + 0% { + stroke-dasharray: 1, 200; + stroke-dashoffset: 0; + } + 50% { + stroke-dasharray: 89, 200; + stroke-dashoffset: -35px; + } + 100% { + stroke-dasharray: 89, 200; + stroke-dashoffset: -124px; + } +} +@keyframes lg-play-rotate { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +.lg-video-play-button { + width: 18%; + max-width: 140px; + position: absolute; + top: 50%; + left: 50%; + z-index: 2; + cursor: pointer; + transform: translate(-50%, -50%) scale(1); + will-change: opacity, transform; + -webkit-transition: -webkit-transform 0.25s cubic-bezier(0.17, 0.88, 0.32, 1.28), opacity 0.1s; + -moz-transition: -moz-transform 0.25s cubic-bezier(0.17, 0.88, 0.32, 1.28), opacity 0.1s; + -o-transition: -o-transform 0.25s cubic-bezier(0.17, 0.88, 0.32, 1.28), opacity 0.1s; + transition: transform 0.25s cubic-bezier(0.17, 0.88, 0.32, 1.28), opacity 0.1s; +} +.lg-video-play-button:hover .lg-video-play-icon-bg, +.lg-video-play-button:hover .lg-video-play-icon { + opacity: 1; +} + +.lg-video-play-icon-bg { + fill: none; + stroke-width: 3%; + stroke: #fcfcfc; + opacity: 0.6; + will-change: opacity; + -webkit-transition: opacity 0.12s ease-in; + -o-transition: opacity 0.12s ease-in; + transition: opacity 0.12s ease-in; +} + +.lg-video-play-icon-circle { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + fill: none; + stroke-width: 3%; + stroke: rgba(30, 30, 30, 0.9); + stroke-opacity: 1; + stroke-linecap: round; + stroke-dasharray: 200; + stroke-dashoffset: 200; +} + +.lg-video-play-icon { + position: absolute; + width: 25%; + max-width: 120px; + left: 50%; + top: 50%; + transform: translate3d(-50%, -50%, 0); + opacity: 0.6; + will-change: opacity; + -webkit-transition: opacity 0.12s ease-in; + -o-transition: opacity 0.12s ease-in; + transition: opacity 0.12s ease-in; +} +.lg-video-play-icon .lg-video-play-icon-inner { + fill: #fcfcfc; +} + +.lg-video-loading .lg-video-play-icon-circle { + animation: lg-play-rotate 2s linear 0.25s infinite, lg-play-stroke 1.5s ease-in-out 0.25s infinite; +} + +.lg-video-loaded .lg-video-play-button { + opacity: 0; + transform: translate(-50%, -50%) scale(0.7); +} + +/*# sourceMappingURL=lg-video.css.map */ diff --git a/assets/lightGallery/css/lg-video.css.map b/assets/lightGallery/css/lg-video.css.map new file mode 100644 index 0000000..761e1d7 --- /dev/null +++ b/assets/lightGallery/css/lg-video.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["../../src/scss/lg-video.scss","../../src/scss/_lg-mixins.scss"],"names":[],"mappings":"AAII;EACI;EACA;EACA;EACA;;AACA;EACI;EACA;;AAKJ;EACI;EACA;;AAGR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;;AAIA;EACI;EACA;ECyLR,oBDxLQ;ECyLR,eDzLQ;EC0LR,YD1LQ;;AAIA;AAAA;EAEI;;AAGJ;EACI;;;AAMhB;EACI;IACI;IACA;;EAGJ;IACI;IACA;;EAGJ;IACI;IACA;;;AAIR;EACI;IACI;IACA;;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ECkNA;EACA;EACA;EACA,YDpNA;;AAKI;AAAA;EAEI;;;AAIZ;EACI;EACA;EACA;EACA;EACA;ECsHA,oBDrHA;ECsHA,eDtHA;ECuHA,YDvHA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EC4FA,oBD3FA;EC4FA,eD5FA;EC6FA,YD7FA;;AACA;EACI;;;AAKJ;EACI;;;AAKJ;EACI;EACA","file":"lg-video.css"} \ No newline at end of file diff --git a/assets/lightGallery/css/lg-zoom.css b/assets/lightGallery/css/lg-zoom.css new file mode 100644 index 0000000..ab2374e --- /dev/null +++ b/assets/lightGallery/css/lg-zoom.css @@ -0,0 +1,104 @@ +.lg-outer.lg-css3.lg-zoom-dragging .lg-item.lg-complete.lg-zoomable .lg-img-wrap, +.lg-outer.lg-css3.lg-zoom-dragging .lg-item.lg-complete.lg-zoomable .lg-image { + -webkit-transition-duration: 0ms !important; + transition-duration: 0ms !important; +} +.lg-outer.lg-use-transition-for-zoom .lg-item.lg-complete.lg-zoomable .lg-img-wrap { + will-change: transform; + -webkit-transition: -webkit-transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s; + -moz-transition: -moz-transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s; + -o-transition: -o-transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s; + transition: transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s; +} +.lg-outer.lg-use-transition-for-zoom.lg-zoom-drag-transition .lg-item.lg-complete.lg-zoomable .lg-img-wrap { + will-change: transform; + -webkit-transition: -webkit-transform 0.8s cubic-bezier(0, 0, 0.25, 1) 0s; + -moz-transition: -moz-transform 0.8s cubic-bezier(0, 0, 0.25, 1) 0s; + -o-transition: -o-transform 0.8s cubic-bezier(0, 0, 0.25, 1) 0s; + transition: transform 0.8s cubic-bezier(0, 0, 0.25, 1) 0s; +} +.lg-outer .lg-item.lg-complete.lg-zoomable .lg-img-wrap { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + backface-visibility: hidden; +} +.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image, +.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + -webkit-transition: -webkit-transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s, opacity 0.15s !important; + -moz-transition: -moz-transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s, opacity 0.15s !important; + -o-transition: -o-transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s, opacity 0.15s !important; + transition: transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s, opacity 0.15s !important; + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + backface-visibility: hidden; +} +.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image.no-transition, +.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img.no-transition { + transition: none !important; +} +.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image.reset-transition, +.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img.reset-transition { + transform: scale3d(1, 1, 1) translate3d(-50%, -50%, 0px) !important; + max-width: none !important; + max-height: none !important; + top: 50% !important; + left: 50% !important; +} +.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image.reset-transition-x, +.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img.reset-transition-x { + transform: scale3d(1, 1, 1) translate3d(-50%, 0, 0px) !important; + top: 0 !important; + left: 50% !important; + max-width: none !important; + max-height: none !important; +} +.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image.reset-transition-y, +.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img.reset-transition-y { + transform: scale3d(1, 1, 1) translate3d(0, -50%, 0px) !important; + top: 50% !important; + left: 0% !important; + max-width: none !important; + max-height: none !important; +} + +.lg-icon.lg-zoom-in:after { + content: "\e311"; +} +.lg-actual-size .lg-icon.lg-zoom-in { + opacity: 1; + pointer-events: auto; +} +.lg-icon.lg-actual-size { + font-size: 20px; +} +.lg-icon.lg-actual-size:after { + content: "\e033"; +} +.lg-icon.lg-zoom-out { + opacity: 0.5; + pointer-events: none; +} +.lg-icon.lg-zoom-out:after { + content: "\e312"; +} +.lg-zoomed .lg-icon.lg-zoom-out { + opacity: 1; + pointer-events: auto; +} + +.lg-outer[data-lg-slide-type=video] .lg-zoom-in, +.lg-outer[data-lg-slide-type=video] .lg-actual-size, +.lg-outer[data-lg-slide-type=video] .lg-zoom-out, .lg-outer[data-lg-slide-type=iframe] .lg-zoom-in, +.lg-outer[data-lg-slide-type=iframe] .lg-actual-size, +.lg-outer[data-lg-slide-type=iframe] .lg-zoom-out, .lg-outer.lg-first-slide-loading .lg-zoom-in, +.lg-outer.lg-first-slide-loading .lg-actual-size, +.lg-outer.lg-first-slide-loading .lg-zoom-out { + opacity: 0.75; + pointer-events: none; +} + +/*# sourceMappingURL=lg-zoom.css.map */ diff --git a/assets/lightGallery/css/lg-zoom.css.map b/assets/lightGallery/css/lg-zoom.css.map new file mode 100644 index 0000000..cc5a09f --- /dev/null +++ b/assets/lightGallery/css/lg-zoom.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["../../src/scss/lg-zoom.scss","../../src/scss/_lg-mixins.scss","../../src/scss/_lg-variables.scss"],"names":[],"mappings":"AAOY;AAAA;ECwOR,6BDtOY;ECuOZ,qBDvOY;;AAMJ;EACI;EC0RZ;EACA;EACA;EACA,YD5RY;;AAQA;EACI;ECgRhB;EACA;EACA;EACA,YDlRgB;;AASZ;EC+HJ;EACA;EAhFA,6BD9CqC;EC+CrC,0BD/CqC;ECgDrC,qBDhDqC;;AAGjC;AAAA;EC+HJ;EACA;EAiIA;EACA;EACA;EACA,YDhQQ;ECuCR,6BDlCqC;ECmCrC,0BDnCqC;ECoCrC,qBDpCqC;;AAE7B;AAAA;EACI;;AAEJ;AAAA;EACI;EACA;EACA;EACA;EACA;;AAEJ;AAAA;EACI;EACA;EACA;EACA;EACA;;AAEJ;AAAA;EACI;EACA;EACA;EACA;EACA;;;AASR;EACI;;AAEJ;EACI;EACA;;AAIR;EACI;;AACA;EACI;;AAIR;EACI;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;;AAQJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGI,SE7FuB;EF8FvB","file":"lg-zoom.css"} \ No newline at end of file diff --git a/assets/lightGallery/css/lightgallery-bundle.css b/assets/lightGallery/css/lightgallery-bundle.css new file mode 100644 index 0000000..09d4482 --- /dev/null +++ b/assets/lightGallery/css/lightgallery-bundle.css @@ -0,0 +1,1444 @@ +@font-face { + font-family: "lg"; + src: url("../fonts/lg.woff2?io9a6k") format("woff2"), url("../fonts/lg.ttf?io9a6k") format("truetype"), url("../fonts/lg.woff?io9a6k") format("woff"), url("../fonts/lg.svg?io9a6k#lg") format("svg"); + font-weight: normal; + font-style: normal; + font-display: block; +} +.lg-icon { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: "lg" !important; + speak: never; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.lg-container { + font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; +} + +.lg-next, +.lg-prev { + background-color: rgba(0, 0, 0, 0.45); + border-radius: 2px; + color: #999; + cursor: pointer; + display: block; + font-size: 22px; + margin-top: -10px; + padding: 8px 10px 9px; + position: absolute; + top: 50%; + z-index: 1084; + outline: none; + border: none; +} +.lg-next.disabled, +.lg-prev.disabled { + opacity: 0 !important; + cursor: default; +} +.lg-next:hover:not(.disabled), +.lg-prev:hover:not(.disabled) { + color: #fff; +} +.lg-single-item .lg-next, +.lg-single-item .lg-prev { + display: none; +} + +.lg-next { + right: 20px; +} +.lg-next:before { + content: "\e095"; +} + +.lg-prev { + left: 20px; +} +.lg-prev:after { + content: "\e094"; +} + +@-webkit-keyframes lg-right-end { + 0% { + left: 0; + } + 50% { + left: -30px; + } + 100% { + left: 0; + } +} +@-moz-keyframes lg-right-end { + 0% { + left: 0; + } + 50% { + left: -30px; + } + 100% { + left: 0; + } +} +@-ms-keyframes lg-right-end { + 0% { + left: 0; + } + 50% { + left: -30px; + } + 100% { + left: 0; + } +} +@keyframes lg-right-end { + 0% { + left: 0; + } + 50% { + left: -30px; + } + 100% { + left: 0; + } +} +@-webkit-keyframes lg-left-end { + 0% { + left: 0; + } + 50% { + left: 30px; + } + 100% { + left: 0; + } +} +@-moz-keyframes lg-left-end { + 0% { + left: 0; + } + 50% { + left: 30px; + } + 100% { + left: 0; + } +} +@-ms-keyframes lg-left-end { + 0% { + left: 0; + } + 50% { + left: 30px; + } + 100% { + left: 0; + } +} +@keyframes lg-left-end { + 0% { + left: 0; + } + 50% { + left: 30px; + } + 100% { + left: 0; + } +} +.lg-outer.lg-right-end .lg-object { + -webkit-animation: lg-right-end 0.3s; + -o-animation: lg-right-end 0.3s; + animation: lg-right-end 0.3s; + position: relative; +} +.lg-outer.lg-left-end .lg-object { + -webkit-animation: lg-left-end 0.3s; + -o-animation: lg-left-end 0.3s; + animation: lg-left-end 0.3s; + position: relative; +} + +.lg-toolbar { + z-index: 1082; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.lg-media-overlap .lg-toolbar { + background-image: linear-gradient(0deg, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.4)); +} +.lg-toolbar .lg-icon { + color: #999; + cursor: pointer; + float: right; + font-size: 24px; + height: 47px; + line-height: 27px; + padding: 10px 0; + text-align: center; + width: 50px; + text-decoration: none !important; + outline: medium none; + will-change: color; + -webkit-transition: color 0.2s linear; + -o-transition: color 0.2s linear; + transition: color 0.2s linear; + background: none; + border: none; + box-shadow: none; +} +.lg-toolbar .lg-icon.lg-icon-18 { + font-size: 18px; +} +.lg-toolbar .lg-icon:hover { + color: #fff; +} +.lg-toolbar .lg-close:after { + content: "\e070"; +} +.lg-toolbar .lg-maximize { + font-size: 22px; +} +.lg-toolbar .lg-maximize:after { + content: "\e90a"; +} +.lg-toolbar .lg-download:after { + content: "\e0f2"; +} + +.lg-sub-html { + color: #eee; + font-size: 16px; + padding: 10px 40px; + text-align: center; + z-index: 1080; + opacity: 0; + -webkit-transition: opacity 0.2s ease-out 0s; + -o-transition: opacity 0.2s ease-out 0s; + transition: opacity 0.2s ease-out 0s; +} +.lg-sub-html h4 { + margin: 0; + font-size: 13px; + font-weight: bold; +} +.lg-sub-html p { + font-size: 12px; + margin: 5px 0 0; +} +.lg-sub-html a { + color: inherit; +} +.lg-sub-html a:hover { + text-decoration: underline; +} +.lg-media-overlap .lg-sub-html { + background-image: linear-gradient(180deg, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.6)); +} +.lg-item .lg-sub-html { + position: absolute; + bottom: 0; + right: 0; + left: 0; +} + +.lg-error-msg { + font-size: 14px; + color: #999; +} + +.lg-counter { + color: #999; + display: inline-block; + font-size: 16px; + padding-left: 20px; + padding-top: 12px; + height: 47px; + vertical-align: middle; +} + +.lg-closing .lg-toolbar, +.lg-closing .lg-prev, +.lg-closing .lg-next, +.lg-closing .lg-sub-html { + opacity: 0; + -webkit-transition: -webkit-transform 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, color 0.08 linear; + -moz-transition: -moz-transform 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, color 0.08 linear; + -o-transition: -o-transform 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, color 0.08 linear; + transition: transform 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, color 0.08 linear; +} + +body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable) .lg-img-wrap, +body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable) .lg-video-cont, +body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable) .lg-media-cont { + opacity: 0; + -moz-transform: scale3d(0.5, 0.5, 0.5); + -o-transform: scale3d(0.5, 0.5, 0.5); + -ms-transform: scale3d(0.5, 0.5, 0.5); + -webkit-transform: scale3d(0.5, 0.5, 0.5); + transform: scale3d(0.5, 0.5, 0.5); + will-change: transform, opacity; + -webkit-transition: -webkit-transform 250ms cubic-bezier(0, 0, 0.25, 1) 0s, opacity 250ms cubic-bezier(0, 0, 0.25, 1) !important; + -moz-transition: -moz-transform 250ms cubic-bezier(0, 0, 0.25, 1) 0s, opacity 250ms cubic-bezier(0, 0, 0.25, 1) !important; + -o-transition: -o-transform 250ms cubic-bezier(0, 0, 0.25, 1) 0s, opacity 250ms cubic-bezier(0, 0, 0.25, 1) !important; + transition: transform 250ms cubic-bezier(0, 0, 0.25, 1) 0s, opacity 250ms cubic-bezier(0, 0, 0.25, 1) !important; +} +body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable).lg-complete .lg-img-wrap, +body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable).lg-complete .lg-video-cont, +body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable).lg-complete .lg-media-cont { + opacity: 1; + -moz-transform: scale3d(1, 1, 1); + -o-transform: scale3d(1, 1, 1); + -ms-transform: scale3d(1, 1, 1); + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); +} + +.lg-icon:focus-visible { + color: #fff; + border-radius: 3px; + outline: 1px dashed rgba(255, 255, 255, 0.6); +} + +.lg-toolbar .lg-icon:focus-visible { + border-radius: 8px; + outline-offset: -5px; +} + +.lg-outer .lg-thumb-outer { + background-color: #0d0a0a; + width: 100%; + max-height: 350px; + overflow: hidden; + float: left; +} +.lg-outer .lg-thumb-outer.lg-grab .lg-thumb-item { + cursor: -webkit-grab; + cursor: -moz-grab; + cursor: -o-grab; + cursor: -ms-grab; + cursor: grab; +} +.lg-outer .lg-thumb-outer.lg-grabbing .lg-thumb-item { + cursor: move; + cursor: -webkit-grabbing; + cursor: -moz-grabbing; + cursor: -o-grabbing; + cursor: -ms-grabbing; + cursor: grabbing; +} +.lg-outer .lg-thumb-outer.lg-dragging .lg-thumb { + -webkit-transition-duration: 0s !important; + transition-duration: 0s !important; +} +.lg-outer .lg-thumb-outer.lg-rebuilding-thumbnails .lg-thumb { + -webkit-transition-duration: 0s !important; + transition-duration: 0s !important; +} +.lg-outer .lg-thumb-outer.lg-thumb-align-middle { + text-align: center; +} +.lg-outer .lg-thumb-outer.lg-thumb-align-left { + text-align: left; +} +.lg-outer .lg-thumb-outer.lg-thumb-align-right { + text-align: right; +} +.lg-outer.lg-single-item .lg-thumb-outer { + display: none; +} +.lg-outer .lg-thumb { + padding: 5px 0; + height: 100%; + margin-bottom: -5px; + display: inline-block; + vertical-align: middle; +} +@media (min-width: 768px) { + .lg-outer .lg-thumb { + padding: 10px 0; + } +} +.lg-outer .lg-thumb-item { + cursor: pointer; + float: left; + overflow: hidden; + height: 100%; + border-radius: 2px; + margin-bottom: 5px; + will-change: border-color; +} +@media (min-width: 768px) { + .lg-outer .lg-thumb-item { + border-radius: 4px; + border: 2px solid #fff; + -webkit-transition: border-color 0.25s ease; + -o-transition: border-color 0.25s ease; + transition: border-color 0.25s ease; + } +} +.lg-outer .lg-thumb-item.active, .lg-outer .lg-thumb-item:hover { + border-color: rgb(169, 7, 7); +} +.lg-outer .lg-thumb-item img { + width: 100%; + height: 100%; + object-fit: cover; + display: block; +} +.lg-outer.lg-can-toggle .lg-item { + padding-bottom: 0; +} +.lg-outer .lg-toggle-thumb:after { + content: "\e1ff"; +} +.lg-outer.lg-animate-thumb .lg-thumb { + -webkit-transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); +} + +.lg-outer .lg-video-cont { + text-align: center; + display: inline-block; + vertical-align: middle; + position: relative; +} +.lg-outer .lg-video-cont .lg-object { + width: 100% !important; + height: 100% !important; +} +.lg-outer .lg-has-iframe .lg-video-cont { + -webkit-overflow-scrolling: touch; + overflow: auto; +} +.lg-outer .lg-video-object { + position: absolute; + left: 0; + right: 0; + width: 100%; + height: 100%; + top: 0; + bottom: 0; + z-index: 3; +} +.lg-outer .lg-video-poster { + z-index: 1; +} +.lg-outer .lg-has-video .lg-video-object { + opacity: 0; + will-change: opacity; + -webkit-transition: opacity 0.3s ease-in; + -o-transition: opacity 0.3s ease-in; + transition: opacity 0.3s ease-in; +} +.lg-outer .lg-has-video.lg-video-loaded .lg-video-poster, +.lg-outer .lg-has-video.lg-video-loaded .lg-video-play-button { + opacity: 0 !important; +} +.lg-outer .lg-has-video.lg-video-loaded .lg-video-object { + opacity: 1; +} + +@keyframes lg-play-stroke { + 0% { + stroke-dasharray: 1, 200; + stroke-dashoffset: 0; + } + 50% { + stroke-dasharray: 89, 200; + stroke-dashoffset: -35px; + } + 100% { + stroke-dasharray: 89, 200; + stroke-dashoffset: -124px; + } +} +@keyframes lg-play-rotate { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +.lg-video-play-button { + width: 18%; + max-width: 140px; + position: absolute; + top: 50%; + left: 50%; + z-index: 2; + cursor: pointer; + transform: translate(-50%, -50%) scale(1); + will-change: opacity, transform; + -webkit-transition: -webkit-transform 0.25s cubic-bezier(0.17, 0.88, 0.32, 1.28), opacity 0.1s; + -moz-transition: -moz-transform 0.25s cubic-bezier(0.17, 0.88, 0.32, 1.28), opacity 0.1s; + -o-transition: -o-transform 0.25s cubic-bezier(0.17, 0.88, 0.32, 1.28), opacity 0.1s; + transition: transform 0.25s cubic-bezier(0.17, 0.88, 0.32, 1.28), opacity 0.1s; +} +.lg-video-play-button:hover .lg-video-play-icon-bg, +.lg-video-play-button:hover .lg-video-play-icon { + opacity: 1; +} + +.lg-video-play-icon-bg { + fill: none; + stroke-width: 3%; + stroke: #fcfcfc; + opacity: 0.6; + will-change: opacity; + -webkit-transition: opacity 0.12s ease-in; + -o-transition: opacity 0.12s ease-in; + transition: opacity 0.12s ease-in; +} + +.lg-video-play-icon-circle { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + fill: none; + stroke-width: 3%; + stroke: rgba(30, 30, 30, 0.9); + stroke-opacity: 1; + stroke-linecap: round; + stroke-dasharray: 200; + stroke-dashoffset: 200; +} + +.lg-video-play-icon { + position: absolute; + width: 25%; + max-width: 120px; + left: 50%; + top: 50%; + transform: translate3d(-50%, -50%, 0); + opacity: 0.6; + will-change: opacity; + -webkit-transition: opacity 0.12s ease-in; + -o-transition: opacity 0.12s ease-in; + transition: opacity 0.12s ease-in; +} +.lg-video-play-icon .lg-video-play-icon-inner { + fill: #fcfcfc; +} + +.lg-video-loading .lg-video-play-icon-circle { + animation: lg-play-rotate 2s linear 0.25s infinite, lg-play-stroke 1.5s ease-in-out 0.25s infinite; +} + +.lg-video-loaded .lg-video-play-button { + opacity: 0; + transform: translate(-50%, -50%) scale(0.7); +} + +.lg-progress-bar { + background-color: #333; + height: 5px; + left: 0; + position: absolute; + top: 0; + width: 100%; + z-index: 1083; + opacity: 0; + will-change: opacity; + -webkit-transition: opacity 0.08s ease 0s; + -moz-transition: opacity 0.08s ease 0s; + -o-transition: opacity 0.08s ease 0s; + transition: opacity 0.08s ease 0s; +} +.lg-progress-bar .lg-progress { + background-color: rgb(169, 7, 7); + height: 5px; + width: 0; +} +.lg-progress-bar.lg-start .lg-progress { + width: 100%; +} +.lg-show-autoplay .lg-progress-bar { + opacity: 1; +} + +.lg-autoplay-button:after { + content: "\e01d"; +} +.lg-show-autoplay .lg-autoplay-button:after { + content: "\e01a"; +} +.lg-single-item .lg-autoplay-button { + opacity: 0.75; + pointer-events: none; +} + +.lg-outer.lg-css3.lg-zoom-dragging .lg-item.lg-complete.lg-zoomable .lg-img-wrap, +.lg-outer.lg-css3.lg-zoom-dragging .lg-item.lg-complete.lg-zoomable .lg-image { + -webkit-transition-duration: 0ms !important; + transition-duration: 0ms !important; +} +.lg-outer.lg-use-transition-for-zoom .lg-item.lg-complete.lg-zoomable .lg-img-wrap { + will-change: transform; + -webkit-transition: -webkit-transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s; + -moz-transition: -moz-transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s; + -o-transition: -o-transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s; + transition: transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s; +} +.lg-outer.lg-use-transition-for-zoom.lg-zoom-drag-transition .lg-item.lg-complete.lg-zoomable .lg-img-wrap { + will-change: transform; + -webkit-transition: -webkit-transform 0.8s cubic-bezier(0, 0, 0.25, 1) 0s; + -moz-transition: -moz-transform 0.8s cubic-bezier(0, 0, 0.25, 1) 0s; + -o-transition: -o-transform 0.8s cubic-bezier(0, 0, 0.25, 1) 0s; + transition: transform 0.8s cubic-bezier(0, 0, 0.25, 1) 0s; +} +.lg-outer .lg-item.lg-complete.lg-zoomable .lg-img-wrap { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + backface-visibility: hidden; +} +.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image, +.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + -webkit-transition: -webkit-transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s, opacity 0.15s !important; + -moz-transition: -moz-transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s, opacity 0.15s !important; + -o-transition: -o-transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s, opacity 0.15s !important; + transition: transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s, opacity 0.15s !important; + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + backface-visibility: hidden; +} +.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image.no-transition, +.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img.no-transition { + transition: none !important; +} +.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image.reset-transition, +.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img.reset-transition { + transform: scale3d(1, 1, 1) translate3d(-50%, -50%, 0px) !important; + max-width: none !important; + max-height: none !important; + top: 50% !important; + left: 50% !important; +} +.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image.reset-transition-x, +.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img.reset-transition-x { + transform: scale3d(1, 1, 1) translate3d(-50%, 0, 0px) !important; + top: 0 !important; + left: 50% !important; + max-width: none !important; + max-height: none !important; +} +.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image.reset-transition-y, +.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img.reset-transition-y { + transform: scale3d(1, 1, 1) translate3d(0, -50%, 0px) !important; + top: 50% !important; + left: 0% !important; + max-width: none !important; + max-height: none !important; +} + +.lg-icon.lg-zoom-in:after { + content: "\e311"; +} +.lg-actual-size .lg-icon.lg-zoom-in { + opacity: 1; + pointer-events: auto; +} +.lg-icon.lg-actual-size { + font-size: 20px; +} +.lg-icon.lg-actual-size:after { + content: "\e033"; +} +.lg-icon.lg-zoom-out { + opacity: 0.5; + pointer-events: none; +} +.lg-icon.lg-zoom-out:after { + content: "\e312"; +} +.lg-zoomed .lg-icon.lg-zoom-out { + opacity: 1; + pointer-events: auto; +} + +.lg-outer[data-lg-slide-type=video] .lg-zoom-in, +.lg-outer[data-lg-slide-type=video] .lg-actual-size, +.lg-outer[data-lg-slide-type=video] .lg-zoom-out, .lg-outer[data-lg-slide-type=iframe] .lg-zoom-in, +.lg-outer[data-lg-slide-type=iframe] .lg-actual-size, +.lg-outer[data-lg-slide-type=iframe] .lg-zoom-out, .lg-outer.lg-first-slide-loading .lg-zoom-in, +.lg-outer.lg-first-slide-loading .lg-actual-size, +.lg-outer.lg-first-slide-loading .lg-zoom-out { + opacity: 0.75; + pointer-events: none; +} + +.lg-outer .lg-pager-outer { + text-align: center; + z-index: 1080; + height: 10px; + margin-bottom: 10px; +} +.lg-outer .lg-pager-outer.lg-pager-hover .lg-pager-cont { + overflow: visible; +} +.lg-outer.lg-single-item .lg-pager-outer { + display: none; +} +.lg-outer .lg-pager-cont { + cursor: pointer; + display: inline-block; + overflow: hidden; + position: relative; + vertical-align: top; + margin: 0 5px; +} +.lg-outer .lg-pager-cont:hover .lg-pager-thumb-cont { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} +.lg-outer .lg-pager-cont.lg-pager-active .lg-pager { + box-shadow: 0 0 0 2px white inset; +} +.lg-outer .lg-pager-thumb-cont { + background-color: #fff; + color: #fff; + bottom: 100%; + height: 83px; + left: 0; + margin-bottom: 20px; + margin-left: -60px; + opacity: 0; + padding: 5px; + position: absolute; + width: 120px; + border-radius: 3px; + will-change: transform, opacity; + -webkit-transition: opacity 0.15s ease 0s, -webkit-transform 0.15s ease 0s; + -moz-transition: opacity 0.15s ease 0s, -moz-transform 0.15s ease 0s; + -o-transition: opacity 0.15s ease 0s, -o-transform 0.15s ease 0s; + transition: opacity 0.15s ease 0s, transform 0.15s ease 0s; + -webkit-transform: translate3d(0, 5px, 0); + transform: translate3d(0, 5px, 0); +} +.lg-outer .lg-pager-thumb-cont img { + width: 100%; + height: 100%; +} +.lg-outer .lg-pager { + background-color: rgba(255, 255, 255, 0.5); + border-radius: 50%; + box-shadow: 0 0 0 8px rgba(255, 255, 255, 0.7) inset; + display: block; + height: 12px; + -webkit-transition: box-shadow 0.3s ease 0s; + -o-transition: box-shadow 0.3s ease 0s; + transition: box-shadow 0.3s ease 0s; + width: 12px; +} +.lg-outer .lg-pager:hover, .lg-outer .lg-pager:focus { + box-shadow: 0 0 0 8px white inset; +} +.lg-outer .lg-caret { + border-left: 10px solid transparent; + border-right: 10px solid transparent; + border-top: 10px dashed; + bottom: -10px; + display: inline-block; + height: 0; + left: 50%; + margin-left: -5px; + position: absolute; + vertical-align: middle; + width: 0; +} + +.lg-fullscreen:after { + content: "\e20c"; +} +.lg-fullscreen-on .lg-fullscreen:after { + content: "\e20d"; +} + +.lg-outer .lg-dropdown-overlay { + background-color: rgba(0, 0, 0, 0.25); + bottom: 0; + cursor: default; + left: 0; + position: absolute; + right: 0; + top: 0; + z-index: 1081; + opacity: 0; + visibility: hidden; + will-change: visibility, opacity; + -webkit-transition: visibility 0s linear 0.18s, opacity 0.18s linear 0s; + -o-transition: visibility 0s linear 0.18s, opacity 0.18s linear 0s; + transition: visibility 0s linear 0.18s, opacity 0.18s linear 0s; +} +.lg-outer.lg-dropdown-active .lg-dropdown, +.lg-outer.lg-dropdown-active .lg-dropdown-overlay { + -webkit-transition-delay: 0s; + transition-delay: 0s; + -moz-transform: translate3d(0, 0px, 0); + -o-transform: translate3d(0, 0px, 0); + -ms-transform: translate3d(0, 0px, 0); + -webkit-transform: translate3d(0, 0px, 0); + transform: translate3d(0, 0px, 0); + opacity: 1; + visibility: visible; +} +.lg-outer.lg-dropdown-active .lg-share { + color: #fff; +} +.lg-outer .lg-dropdown { + background-color: #fff; + border-radius: 2px; + font-size: 14px; + list-style-type: none; + margin: 0; + padding: 10px 0; + position: absolute; + right: 0; + text-align: left; + top: 50px; + opacity: 0; + visibility: hidden; + -moz-transform: translate3d(0, 5px, 0); + -o-transform: translate3d(0, 5px, 0); + -ms-transform: translate3d(0, 5px, 0); + -webkit-transform: translate3d(0, 5px, 0); + transform: translate3d(0, 5px, 0); + will-change: visibility, opacity, transform; + -webkit-transition: -webkit-transform 0.18s linear 0s, visibility 0s linear 0.5s, opacity 0.18s linear 0s; + -moz-transition: -moz-transform 0.18s linear 0s, visibility 0s linear 0.5s, opacity 0.18s linear 0s; + -o-transition: -o-transform 0.18s linear 0s, visibility 0s linear 0.5s, opacity 0.18s linear 0s; + transition: transform 0.18s linear 0s, visibility 0s linear 0.5s, opacity 0.18s linear 0s; +} +.lg-outer .lg-dropdown:after { + content: ""; + display: block; + height: 0; + width: 0; + position: absolute; + border: 8px solid transparent; + border-bottom-color: #fff; + right: 16px; + top: -16px; +} +.lg-outer .lg-dropdown > li:last-child { + margin-bottom: 0px; +} +.lg-outer .lg-dropdown > li:hover a { + color: #333; +} +.lg-outer .lg-dropdown a { + color: #333; + display: block; + white-space: pre; + padding: 4px 12px; + font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 12px; +} +.lg-outer .lg-dropdown a:hover { + background-color: rgba(0, 0, 0, 0.07); +} +.lg-outer .lg-dropdown .lg-dropdown-text { + display: inline-block; + line-height: 1; + margin-top: -3px; + vertical-align: middle; +} +.lg-outer .lg-dropdown .lg-icon { + color: #333; + display: inline-block; + float: none; + font-size: 20px; + height: auto; + line-height: 1; + margin-right: 8px; + padding: 0; + vertical-align: middle; + width: auto; +} +.lg-outer .lg-share { + position: relative; +} +.lg-outer .lg-share:after { + content: "\e80d"; +} +.lg-outer .lg-share-facebook .lg-icon { + color: #3b5998; +} +.lg-outer .lg-share-facebook .lg-icon:after { + content: "\e904"; +} +.lg-outer .lg-share-twitter .lg-icon { + color: #00aced; +} +.lg-outer .lg-share-twitter .lg-icon:after { + content: "\e907"; +} +.lg-outer .lg-share-pinterest .lg-icon { + color: #cb2027; +} +.lg-outer .lg-share-pinterest .lg-icon:after { + content: "\e906"; +} + +.lg-comment-box { + width: 420px; + max-width: 100%; + position: absolute; + right: 0; + top: 0; + bottom: 0; + z-index: 9999; + background-color: #fff; + will-change: transform; + -moz-transform: translate3d(100%, 0, 0); + -o-transform: translate3d(100%, 0, 0); + -ms-transform: translate3d(100%, 0, 0); + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + -webkit-transition: -webkit-transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s; + -moz-transition: -moz-transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s; + -o-transition: -o-transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s; + transition: transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s; +} +.lg-comment-box .lg-comment-title { + margin: 0; + color: #fff; + font-size: 18px; +} +.lg-comment-box .lg-comment-header { + background-color: #000; + padding: 12px 20px; + position: absolute; + left: 0; + right: 0; + top: 0; +} +.lg-comment-box .lg-comment-body { + height: 100% !important; + padding-top: 43px !important; + width: 100% !important; +} +.lg-comment-box .fb-comments { + height: 100%; + width: 100%; + background: url("../images/loading.gif") no-repeat scroll center center #fff; + overflow-y: auto; + display: inline-block; +} +.lg-comment-box .fb-comments[fb-xfbml-state=rendered] { + background-image: none; +} +.lg-comment-box .fb-comments > span { + max-width: 100%; +} +.lg-comment-box .lg-comment-close { + position: absolute; + right: 5px; + top: 12px; + cursor: pointer; + font-size: 20px; + color: #999; + will-change: color; + -webkit-transition: color 0.2s linear; + -o-transition: color 0.2s linear; + transition: color 0.2s linear; +} +.lg-comment-box .lg-comment-close:hover { + color: #fff; +} +.lg-comment-box .lg-comment-close:after { + content: "\e070"; +} +.lg-comment-box iframe { + max-width: 100% !important; + width: 100% !important; +} +.lg-comment-box #disqus_thread { + padding: 0 20px; +} + +.lg-outer .lg-comment-overlay { + background-color: rgba(0, 0, 0, 0.25); + bottom: 0; + cursor: default; + left: 0; + position: fixed; + right: 0; + top: 0; + z-index: 1081; + opacity: 0; + visibility: hidden; + will-change: visibility, opacity; + -webkit-transition: visibility 0s linear 0.18s, opacity 0.18s linear 0s; + -o-transition: visibility 0s linear 0.18s, opacity 0.18s linear 0s; + transition: visibility 0s linear 0.18s, opacity 0.18s linear 0s; +} +.lg-outer .lg-comment-toggle:after { + content: "\e908"; +} +.lg-outer.lg-comment-active .lg-comment-overlay { + -webkit-transition-delay: 0s; + transition-delay: 0s; + -moz-transform: translate3d(0, 0px, 0); + -o-transform: translate3d(0, 0px, 0); + -ms-transform: translate3d(0, 0px, 0); + -webkit-transform: translate3d(0, 0px, 0); + transform: translate3d(0, 0px, 0); + opacity: 1; + visibility: visible; +} +.lg-outer.lg-comment-active .lg-comment-toggle { + color: #fff; +} +.lg-outer.lg-comment-active .lg-comment-box { + -moz-transform: translate3d(0, 0, 0); + -o-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} + +.lg-outer .lg-img-rotate { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + -webkit-transition: -webkit-transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s; + -moz-transition: -moz-transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s; + -o-transition: -o-transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s; + transition: transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s; +} +.lg-outer[data-lg-slide-type=video] .lg-rotate-left, +.lg-outer[data-lg-slide-type=video] .lg-rotate-right, +.lg-outer[data-lg-slide-type=video] .lg-flip-ver, +.lg-outer[data-lg-slide-type=video] .lg-flip-hor, .lg-outer[data-lg-slide-type=iframe] .lg-rotate-left, +.lg-outer[data-lg-slide-type=iframe] .lg-rotate-right, +.lg-outer[data-lg-slide-type=iframe] .lg-flip-ver, +.lg-outer[data-lg-slide-type=iframe] .lg-flip-hor { + opacity: 0.75; + pointer-events: none; +} +.lg-outer .lg-img-rotate:before { + content: ""; + display: inline-block; + height: 100%; + vertical-align: middle; +} + +.lg-rotate-left:after { + content: "\e900"; +} + +.lg-rotate-right:after { + content: "\e901"; +} + +.lg-icon.lg-flip-hor, .lg-icon.lg-flip-ver { + font-size: 26px; +} + +.lg-flip-ver:after { + content: "\e903"; +} + +.lg-flip-hor:after { + content: "\e902"; +} + +.lg-medium-zoom-item { + cursor: zoom-in; +} + +.lg-medium-zoom .lg-outer { + cursor: zoom-out; +} +.lg-medium-zoom .lg-outer.lg-grab img.lg-object { + cursor: zoom-out; +} +.lg-medium-zoom .lg-outer.lg-grabbing img.lg-object { + cursor: zoom-out; +} + +.lg-relative-caption .lg-outer .lg-sub-html { + white-space: normal; + bottom: auto; + padding: 0; + background-image: none; +} +.lg-relative-caption .lg-outer .lg-relative-caption-item { + opacity: 0; + padding: 16px 0; + transition: 0.5s opacity ease; +} +.lg-relative-caption .lg-outer .lg-show-caption .lg-relative-caption-item { + opacity: 1; +} + +.lg-group:after { + content: ""; + display: table; + clear: both; +} + +.lg-container { + display: none; + outline: none; +} +.lg-container.lg-show { + display: block; +} + +.lg-on { + scroll-behavior: unset; +} + +.lg-overlay-open { + overflow: hidden; +} + +.lg-toolbar, +.lg-prev, +.lg-next, +.lg-pager-outer, +.lg-hide-sub-html .lg-sub-html { + opacity: 0; + will-change: transform, opacity; + -webkit-transition: -webkit-transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s; + -moz-transition: -moz-transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s; + -o-transition: -o-transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s; + transition: transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s; +} + +.lg-show-in .lg-toolbar, +.lg-show-in .lg-prev, +.lg-show-in .lg-next, +.lg-show-in .lg-pager-outer { + opacity: 1; +} +.lg-show-in.lg-hide-sub-html .lg-sub-html { + opacity: 1; +} +.lg-show-in .lg-hide-items .lg-prev { + opacity: 0; + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); +} +.lg-show-in .lg-hide-items .lg-next { + opacity: 0; + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); +} +.lg-show-in .lg-hide-items .lg-toolbar { + opacity: 0; + -webkit-transform: translate3d(0, -10px, 0); + transform: translate3d(0, -10px, 0); +} +.lg-show-in .lg-hide-items.lg-hide-sub-html .lg-sub-html { + opacity: 0; + -webkit-transform: translate3d(0, 20px, 0); + transform: translate3d(0, 20px, 0); +} + +.lg-outer { + width: 100%; + height: 100%; + position: fixed; + top: 0; + left: 0; + z-index: 1050; + text-align: left; + opacity: 0.001; + outline: none; + will-change: auto; + overflow: hidden; + -webkit-transition: opacity 0.15s ease 0s; + -o-transition: opacity 0.15s ease 0s; + transition: opacity 0.15s ease 0s; +} +.lg-outer * { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.lg-outer.lg-zoom-from-image { + opacity: 1; +} +.lg-outer.lg-visible { + opacity: 1; +} +.lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-prev-slide, .lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-next-slide, .lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-current { + -webkit-transition-duration: inherit !important; + transition-duration: inherit !important; + -webkit-transition-timing-function: inherit !important; + transition-timing-function: inherit !important; +} +.lg-outer.lg-css3.lg-dragging .lg-item.lg-prev-slide, .lg-outer.lg-css3.lg-dragging .lg-item.lg-next-slide, .lg-outer.lg-css3.lg-dragging .lg-item.lg-current { + -webkit-transition-duration: 0s !important; + transition-duration: 0s !important; + opacity: 1; +} +.lg-outer.lg-grab img.lg-object { + cursor: -webkit-grab; + cursor: -moz-grab; + cursor: -o-grab; + cursor: -ms-grab; + cursor: grab; +} +.lg-outer.lg-grabbing img.lg-object { + cursor: move; + cursor: -webkit-grabbing; + cursor: -moz-grabbing; + cursor: -o-grabbing; + cursor: -ms-grabbing; + cursor: grabbing; +} +.lg-outer .lg-content { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; +} +.lg-outer .lg-inner { + width: 100%; + position: absolute; + left: 0; + top: 0; + bottom: 0; + -webkit-transition: opacity 0s; + -o-transition: opacity 0s; + transition: opacity 0s; + white-space: nowrap; +} +.lg-outer .lg-item { + display: none !important; +} +.lg-outer .lg-item:not(.lg-start-end-progress) { + background: url("../images/loading.gif") no-repeat scroll center center transparent; +} +.lg-outer.lg-css3 .lg-prev-slide, +.lg-outer.lg-css3 .lg-current, +.lg-outer.lg-css3 .lg-next-slide { + display: inline-block !important; +} +.lg-outer.lg-css .lg-current { + display: inline-block !important; +} +.lg-outer .lg-item, +.lg-outer .lg-img-wrap { + display: inline-block; + text-align: center; + position: absolute; + width: 100%; + height: 100%; +} +.lg-outer .lg-item:before, +.lg-outer .lg-img-wrap:before { + content: ""; + display: inline-block; + height: 100%; + vertical-align: middle; +} +.lg-outer .lg-img-wrap { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + white-space: nowrap; + font-size: 0; +} +.lg-outer .lg-item.lg-complete { + background-image: none; +} +.lg-outer .lg-item.lg-current { + z-index: 1060; +} +.lg-outer .lg-object { + display: inline-block; + vertical-align: middle; + max-width: 100%; + max-height: 100%; + width: auto; + height: auto; + position: relative; +} +.lg-outer .lg-empty-html.lg-sub-html, +.lg-outer .lg-empty-html .lg-sub-html { + display: none; +} +.lg-outer.lg-hide-download .lg-download { + opacity: 0.75; + pointer-events: none; +} +.lg-outer .lg-first-slide .lg-dummy-img { + position: absolute; + top: 50%; + left: 50%; +} +.lg-outer.lg-components-open:not(.lg-zoomed) .lg-components { + -webkit-transform: translate3d(0, 0%, 0); + transform: translate3d(0, 0%, 0); + opacity: 1; +} +.lg-outer.lg-components-open:not(.lg-zoomed) .lg-sub-html { + opacity: 1; + transition: opacity 0.2s ease-out 0.15s; +} +.lg-outer .lg-media-cont { + text-align: center; + display: inline-block; + vertical-align: middle; + position: relative; +} +.lg-outer .lg-media-cont .lg-object { + width: 100% !important; + height: 100% !important; +} +.lg-outer .lg-has-iframe .lg-media-cont { + -webkit-overflow-scrolling: touch; + overflow: auto; +} + +.lg-backdrop { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 1040; + background-color: #000; + opacity: 0; + will-change: auto; + -webkit-transition: opacity 333ms ease-in 0s; + -o-transition: opacity 333ms ease-in 0s; + transition: opacity 333ms ease-in 0s; +} +.lg-backdrop.in { + opacity: 1; +} + +.lg-css3.lg-no-trans .lg-prev-slide, +.lg-css3.lg-no-trans .lg-next-slide, +.lg-css3.lg-no-trans .lg-current { + -webkit-transition: none 0s ease 0s !important; + -moz-transition: none 0s ease 0s !important; + -o-transition: none 0s ease 0s !important; + transition: none 0s ease 0s !important; +} +.lg-css3.lg-use-css3 .lg-item { + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + backface-visibility: hidden; +} +.lg-css3.lg-fade .lg-item { + opacity: 0; +} +.lg-css3.lg-fade .lg-item.lg-current { + opacity: 1; +} +.lg-css3.lg-fade .lg-item.lg-prev-slide, .lg-css3.lg-fade .lg-item.lg-next-slide, .lg-css3.lg-fade .lg-item.lg-current { + -webkit-transition: opacity 0.1s ease 0s; + -moz-transition: opacity 0.1s ease 0s; + -o-transition: opacity 0.1s ease 0s; + transition: opacity 0.1s ease 0s; +} +.lg-css3.lg-use-css3 .lg-item.lg-start-progress { + -webkit-transition: -webkit-transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s; + -o-transition: -o-transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s; + transition: transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s; +} +.lg-css3.lg-use-css3 .lg-item.lg-start-end-progress { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s; +} +.lg-css3.lg-slide.lg-use-css3 .lg-item { + opacity: 0; +} +.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); +} +.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); +} +.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; +} +.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide, .lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide, .lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; +} + +.lg-container { + display: none; +} +.lg-container.lg-show { + display: block; +} +.lg-container.lg-dragging-vertical .lg-backdrop { + -webkit-transition-duration: 0s !important; + transition-duration: 0s !important; +} +.lg-container.lg-dragging-vertical .lg-css3 .lg-item.lg-current { + -webkit-transition-duration: 0s !important; + transition-duration: 0s !important; + opacity: 1; +} + +.lg-inline .lg-backdrop, +.lg-inline .lg-outer { + position: absolute; +} +.lg-inline .lg-backdrop { + z-index: 1; +} +.lg-inline .lg-outer { + z-index: 2; +} +.lg-inline .lg-maximize:after { + content: "\e909"; +} + +.lg-components { + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + will-change: transform; + -webkit-transition: -webkit-transform 0.35s ease-out 0s; + -moz-transition: -moz-transform 0.35s ease-out 0s; + -o-transition: -o-transform 0.35s ease-out 0s; + transition: transform 0.35s ease-out 0s; + z-index: 1080; + position: absolute; + bottom: 0; + right: 0; + left: 0; +} + +/*# sourceMappingURL=lightgallery-bundle.css.map */ diff --git a/assets/lightGallery/css/lightgallery-bundle.css.map b/assets/lightGallery/css/lightgallery-bundle.css.map new file mode 100644 index 0000000..98cf1d3 --- /dev/null +++ b/assets/lightGallery/css/lightgallery-bundle.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["../../src/scss/_lg-fonts.scss","../../src/scss/_lg-theme-default.scss","../../src/scss/_lg-variables.scss","../../src/scss/_lg-mixins.scss","../../src/scss/lg-thumbnail.scss","../../src/scss/lg-video.scss","../../src/scss/lg-autoplay.scss","../../src/scss/lg-zoom.scss","../../src/scss/lg-pager.scss","../../src/scss/lg-fullscreen.scss","../../src/scss/lg-share.scss","../../src/scss/lg-comments.scss","../../src/scss/lg-rotate.scss","../../src/scss/lg-medium-zoom.scss","../../src/scss/lg-relative-caption.scss","../../src/scss/lightgallery-core.scss"],"names":[],"mappings":"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","file":"lightgallery-bundle.css"} \ No newline at end of file diff --git a/assets/lightGallery/css/lightgallery-bundle.min.css b/assets/lightGallery/css/lightgallery-bundle.min.css new file mode 100644 index 0000000..da7c3ce --- /dev/null +++ b/assets/lightGallery/css/lightgallery-bundle.min.css @@ -0,0 +1 @@ +@font-face{font-family:lg;src:url(../fonts/lg.woff2?io9a6k) format("woff2"),url(../fonts/lg.ttf?io9a6k) format("truetype"),url(../fonts/lg.woff?io9a6k) format("woff"),url(../fonts/lg.svg?io9a6k#lg) format("svg");font-weight:400;font-style:normal;font-display:block}.lg-icon{font-family:lg!important;speak:never;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.lg-container{font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.lg-next,.lg-prev{background-color:rgba(0,0,0,.45);border-radius:2px;color:#999;cursor:pointer;display:block;font-size:22px;margin-top:-10px;padding:8px 10px 9px;position:absolute;top:50%;z-index:1084;outline:0;border:none}.lg-next.disabled,.lg-prev.disabled{opacity:0!important;cursor:default}.lg-next:hover:not(.disabled),.lg-prev:hover:not(.disabled){color:#fff}.lg-single-item .lg-next,.lg-single-item .lg-prev{display:none}.lg-next{right:20px}.lg-next:before{content:"\e095"}.lg-prev{left:20px}.lg-prev:after{content:"\e094"}@-webkit-keyframes lg-right-end{0%{left:0}50%{left:-30px}100%{left:0}}@-moz-keyframes lg-right-end{0%{left:0}50%{left:-30px}100%{left:0}}@-ms-keyframes lg-right-end{0%{left:0}50%{left:-30px}100%{left:0}}@keyframes lg-right-end{0%{left:0}50%{left:-30px}100%{left:0}}@-webkit-keyframes lg-left-end{0%{left:0}50%{left:30px}100%{left:0}}@-moz-keyframes lg-left-end{0%{left:0}50%{left:30px}100%{left:0}}@-ms-keyframes lg-left-end{0%{left:0}50%{left:30px}100%{left:0}}@keyframes lg-left-end{0%{left:0}50%{left:30px}100%{left:0}}.lg-outer.lg-right-end .lg-object{-webkit-animation:lg-right-end .3s;-o-animation:lg-right-end .3s;animation:lg-right-end .3s;position:relative}.lg-outer.lg-left-end .lg-object{-webkit-animation:lg-left-end .3s;-o-animation:lg-left-end .3s;animation:lg-left-end .3s;position:relative}.lg-toolbar{z-index:1082;left:0;position:absolute;top:0;width:100%}.lg-media-overlap .lg-toolbar{background-image:linear-gradient(0deg,rgba(0,0,0,0),rgba(0,0,0,.4))}.lg-toolbar .lg-icon{color:#999;cursor:pointer;float:right;font-size:24px;height:47px;line-height:27px;padding:10px 0;text-align:center;width:50px;text-decoration:none!important;outline:medium none;will-change:color;-webkit-transition:color .2s linear;-o-transition:color .2s linear;transition:color .2s linear;background:0 0;border:none;box-shadow:none}.lg-toolbar .lg-icon.lg-icon-18{font-size:18px}.lg-toolbar .lg-icon:hover{color:#fff}.lg-toolbar .lg-close:after{content:"\e070"}.lg-toolbar .lg-maximize{font-size:22px}.lg-toolbar .lg-maximize:after{content:"\e90a"}.lg-toolbar .lg-download:after{content:"\e0f2"}.lg-sub-html{color:#eee;font-size:16px;padding:10px 40px;text-align:center;z-index:1080;opacity:0;-webkit-transition:opacity .2s ease-out 0s;-o-transition:opacity .2s ease-out 0s;transition:opacity .2s ease-out 0s}.lg-sub-html h4{margin:0;font-size:13px;font-weight:700}.lg-sub-html p{font-size:12px;margin:5px 0 0}.lg-sub-html a{color:inherit}.lg-sub-html a:hover{text-decoration:underline}.lg-media-overlap .lg-sub-html{background-image:linear-gradient(180deg,rgba(0,0,0,0),rgba(0,0,0,.6))}.lg-item .lg-sub-html{position:absolute;bottom:0;right:0;left:0}.lg-error-msg{font-size:14px;color:#999}.lg-counter{color:#999;display:inline-block;font-size:16px;padding-left:20px;padding-top:12px;height:47px;vertical-align:middle}.lg-closing .lg-next,.lg-closing .lg-prev,.lg-closing .lg-sub-html,.lg-closing .lg-toolbar{opacity:0;-webkit-transition:-webkit-transform .08 cubic-bezier(0,0,.25,1) 0s,opacity .08 cubic-bezier(0,0,.25,1) 0s,color .08 linear;-moz-transition:-moz-transform .08 cubic-bezier(0,0,.25,1) 0s,opacity .08 cubic-bezier(0,0,.25,1) 0s,color .08 linear;-o-transition:-o-transform .08 cubic-bezier(0,0,.25,1) 0s,opacity .08 cubic-bezier(0,0,.25,1) 0s,color .08 linear;transition:transform .08 cubic-bezier(0,0,.25,1) 0s,opacity .08 cubic-bezier(0,0,.25,1) 0s,color .08 linear}body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable) .lg-img-wrap,body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable) .lg-media-cont,body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable) .lg-video-cont{opacity:0;-moz-transform:scale3d(.5,.5,.5);-o-transform:scale3d(.5,.5,.5);-ms-transform:scale3d(.5,.5,.5);-webkit-transform:scale3d(.5,.5,.5);transform:scale3d(.5,.5,.5);will-change:transform,opacity;-webkit-transition:-webkit-transform 250ms cubic-bezier(0,0,.25,1) 0s,opacity 250ms cubic-bezier(0,0,.25,1)!important;-moz-transition:-moz-transform 250ms cubic-bezier(0,0,.25,1) 0s,opacity 250ms cubic-bezier(0,0,.25,1)!important;-o-transition:-o-transform 250ms cubic-bezier(0,0,.25,1) 0s,opacity 250ms cubic-bezier(0,0,.25,1)!important;transition:transform 250ms cubic-bezier(0,0,.25,1) 0s,opacity 250ms cubic-bezier(0,0,.25,1)!important}body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable).lg-complete .lg-img-wrap,body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable).lg-complete .lg-media-cont,body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable).lg-complete .lg-video-cont{opacity:1;-moz-transform:scale3d(1,1,1);-o-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}.lg-icon:focus-visible{color:#fff;border-radius:3px;outline:1px dashed rgba(255,255,255,.6)}.lg-toolbar .lg-icon:focus-visible{border-radius:8px;outline-offset:-5px}.lg-outer .lg-thumb-outer{background-color:#0d0a0a;width:100%;max-height:350px;overflow:hidden;float:left}.lg-outer .lg-thumb-outer.lg-grab .lg-thumb-item{cursor:-webkit-grab;cursor:-moz-grab;cursor:-o-grab;cursor:-ms-grab;cursor:grab}.lg-outer .lg-thumb-outer.lg-grabbing .lg-thumb-item{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:-o-grabbing;cursor:-ms-grabbing;cursor:grabbing}.lg-outer .lg-thumb-outer.lg-dragging .lg-thumb{-webkit-transition-duration:0s!important;transition-duration:0s!important}.lg-outer .lg-thumb-outer.lg-rebuilding-thumbnails .lg-thumb{-webkit-transition-duration:0s!important;transition-duration:0s!important}.lg-outer .lg-thumb-outer.lg-thumb-align-middle{text-align:center}.lg-outer .lg-thumb-outer.lg-thumb-align-left{text-align:left}.lg-outer .lg-thumb-outer.lg-thumb-align-right{text-align:right}.lg-outer.lg-single-item .lg-thumb-outer{display:none}.lg-outer .lg-thumb{padding:5px 0;height:100%;margin-bottom:-5px;display:inline-block;vertical-align:middle}@media (min-width:768px){.lg-outer .lg-thumb{padding:10px 0}}.lg-outer .lg-thumb-item{cursor:pointer;float:left;overflow:hidden;height:100%;border-radius:2px;margin-bottom:5px;will-change:border-color}@media (min-width:768px){.lg-outer .lg-thumb-item{border-radius:4px;border:2px solid #fff;-webkit-transition:border-color .25s ease;-o-transition:border-color .25s ease;transition:border-color .25s ease}}.lg-outer .lg-thumb-item.active,.lg-outer .lg-thumb-item:hover{border-color:#a90707}.lg-outer .lg-thumb-item img{width:100%;height:100%;object-fit:cover;display:block}.lg-outer.lg-can-toggle .lg-item{padding-bottom:0}.lg-outer .lg-toggle-thumb:after{content:"\e1ff"}.lg-outer.lg-animate-thumb .lg-thumb{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1)}.lg-outer .lg-video-cont{text-align:center;display:inline-block;vertical-align:middle;position:relative}.lg-outer .lg-video-cont .lg-object{width:100%!important;height:100%!important}.lg-outer .lg-has-iframe .lg-video-cont{-webkit-overflow-scrolling:touch;overflow:auto}.lg-outer .lg-video-object{position:absolute;left:0;right:0;width:100%;height:100%;top:0;bottom:0;z-index:3}.lg-outer .lg-video-poster{z-index:1}.lg-outer .lg-has-video .lg-video-object{opacity:0;will-change:opacity;-webkit-transition:opacity .3s ease-in;-o-transition:opacity .3s ease-in;transition:opacity .3s ease-in}.lg-outer .lg-has-video.lg-video-loaded .lg-video-play-button,.lg-outer .lg-has-video.lg-video-loaded .lg-video-poster{opacity:0!important}.lg-outer .lg-has-video.lg-video-loaded .lg-video-object{opacity:1}@keyframes lg-play-stroke{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}100%{stroke-dasharray:89,200;stroke-dashoffset:-124px}}@keyframes lg-play-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.lg-video-play-button{width:18%;max-width:140px;position:absolute;top:50%;left:50%;z-index:2;cursor:pointer;transform:translate(-50%,-50%) scale(1);will-change:opacity,transform;-webkit-transition:-webkit-transform .25s cubic-bezier(.17,.88,.32,1.28),opacity .1s;-moz-transition:-moz-transform .25s cubic-bezier(.17,.88,.32,1.28),opacity .1s;-o-transition:-o-transform .25s cubic-bezier(.17,.88,.32,1.28),opacity .1s;transition:transform .25s cubic-bezier(.17,.88,.32,1.28),opacity .1s}.lg-video-play-button:hover .lg-video-play-icon,.lg-video-play-button:hover .lg-video-play-icon-bg{opacity:1}.lg-video-play-icon-bg{fill:none;stroke-width:3%;stroke:#fcfcfc;opacity:.6;will-change:opacity;-webkit-transition:opacity .12s ease-in;-o-transition:opacity .12s ease-in;transition:opacity .12s ease-in}.lg-video-play-icon-circle{position:absolute;top:0;left:0;bottom:0;right:0;fill:none;stroke-width:3%;stroke:rgba(30,30,30,.9);stroke-opacity:1;stroke-linecap:round;stroke-dasharray:200;stroke-dashoffset:200}.lg-video-play-icon{position:absolute;width:25%;max-width:120px;left:50%;top:50%;transform:translate3d(-50%,-50%,0);opacity:.6;will-change:opacity;-webkit-transition:opacity .12s ease-in;-o-transition:opacity .12s ease-in;transition:opacity .12s ease-in}.lg-video-play-icon .lg-video-play-icon-inner{fill:#fcfcfc}.lg-video-loading .lg-video-play-icon-circle{animation:lg-play-rotate 2s linear .25s infinite,lg-play-stroke 1.5s ease-in-out .25s infinite}.lg-video-loaded .lg-video-play-button{opacity:0;transform:translate(-50%,-50%) scale(.7)}.lg-progress-bar{background-color:#333;height:5px;left:0;position:absolute;top:0;width:100%;z-index:1083;opacity:0;will-change:opacity;-webkit-transition:opacity 80ms ease 0s;-moz-transition:opacity 80ms ease 0s;-o-transition:opacity 80ms ease 0s;transition:opacity 80ms ease 0s}.lg-progress-bar .lg-progress{background-color:#a90707;height:5px;width:0}.lg-progress-bar.lg-start .lg-progress{width:100%}.lg-show-autoplay .lg-progress-bar{opacity:1}.lg-autoplay-button:after{content:"\e01d"}.lg-show-autoplay .lg-autoplay-button:after{content:"\e01a"}.lg-single-item .lg-autoplay-button{opacity:.75;pointer-events:none}.lg-outer.lg-css3.lg-zoom-dragging .lg-item.lg-complete.lg-zoomable .lg-image,.lg-outer.lg-css3.lg-zoom-dragging .lg-item.lg-complete.lg-zoomable .lg-img-wrap{-webkit-transition-duration:0s!important;transition-duration:0s!important}.lg-outer.lg-use-transition-for-zoom .lg-item.lg-complete.lg-zoomable .lg-img-wrap{will-change:transform;-webkit-transition:-webkit-transform .5s cubic-bezier(.12,.415,.01,1.19) 0s;-moz-transition:-moz-transform .5s cubic-bezier(.12,.415,.01,1.19) 0s;-o-transition:-o-transform .5s cubic-bezier(.12,.415,.01,1.19) 0s;transition:transform .5s cubic-bezier(.12,.415,.01,1.19) 0s}.lg-outer.lg-use-transition-for-zoom.lg-zoom-drag-transition .lg-item.lg-complete.lg-zoomable .lg-img-wrap{will-change:transform;-webkit-transition:-webkit-transform .8s cubic-bezier(0,0,.25,1) 0s;-moz-transition:-moz-transform .8s cubic-bezier(0,0,.25,1) 0s;-o-transition:-o-transform .8s cubic-bezier(0,0,.25,1) 0s;transition:transform .8s cubic-bezier(0,0,.25,1) 0s}.lg-outer .lg-item.lg-complete.lg-zoomable .lg-img-wrap{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden}.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img,.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);-webkit-transition:-webkit-transform .5s cubic-bezier(.12,.415,.01,1.19) 0s,opacity .15s!important;-moz-transition:-moz-transform .5s cubic-bezier(.12,.415,.01,1.19) 0s,opacity .15s!important;-o-transition:-o-transform .5s cubic-bezier(.12,.415,.01,1.19) 0s,opacity .15s!important;transition:transform .5s cubic-bezier(.12,.415,.01,1.19) 0s,opacity .15s!important;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden}.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img.no-transition,.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image.no-transition{transition:none!important}.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img.reset-transition,.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image.reset-transition{transform:scale3d(1,1,1) translate3d(-50%,-50%,0)!important;max-width:none!important;max-height:none!important;top:50%!important;left:50%!important}.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img.reset-transition-x,.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image.reset-transition-x{transform:scale3d(1,1,1) translate3d(-50%,0,0)!important;top:0!important;left:50%!important;max-width:none!important;max-height:none!important}.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img.reset-transition-y,.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image.reset-transition-y{transform:scale3d(1,1,1) translate3d(0,-50%,0)!important;top:50%!important;left:0!important;max-width:none!important;max-height:none!important}.lg-icon.lg-zoom-in:after{content:"\e311"}.lg-actual-size .lg-icon.lg-zoom-in{opacity:1;pointer-events:auto}.lg-icon.lg-actual-size{font-size:20px}.lg-icon.lg-actual-size:after{content:"\e033"}.lg-icon.lg-zoom-out{opacity:.5;pointer-events:none}.lg-icon.lg-zoom-out:after{content:"\e312"}.lg-zoomed .lg-icon.lg-zoom-out{opacity:1;pointer-events:auto}.lg-outer.lg-first-slide-loading .lg-actual-size,.lg-outer.lg-first-slide-loading .lg-zoom-in,.lg-outer.lg-first-slide-loading .lg-zoom-out,.lg-outer[data-lg-slide-type=iframe] .lg-actual-size,.lg-outer[data-lg-slide-type=iframe] .lg-zoom-in,.lg-outer[data-lg-slide-type=iframe] .lg-zoom-out,.lg-outer[data-lg-slide-type=video] .lg-actual-size,.lg-outer[data-lg-slide-type=video] .lg-zoom-in,.lg-outer[data-lg-slide-type=video] .lg-zoom-out{opacity:.75;pointer-events:none}.lg-outer .lg-pager-outer{text-align:center;z-index:1080;height:10px;margin-bottom:10px}.lg-outer .lg-pager-outer.lg-pager-hover .lg-pager-cont{overflow:visible}.lg-outer.lg-single-item .lg-pager-outer{display:none}.lg-outer .lg-pager-cont{cursor:pointer;display:inline-block;overflow:hidden;position:relative;vertical-align:top;margin:0 5px}.lg-outer .lg-pager-cont:hover .lg-pager-thumb-cont{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.lg-outer .lg-pager-cont.lg-pager-active .lg-pager{box-shadow:0 0 0 2px #fff inset}.lg-outer .lg-pager-thumb-cont{background-color:#fff;color:#fff;bottom:100%;height:83px;left:0;margin-bottom:20px;margin-left:-60px;opacity:0;padding:5px;position:absolute;width:120px;border-radius:3px;will-change:transform,opacity;-webkit-transition:opacity .15s ease 0s,-webkit-transform .15s ease 0s;-moz-transition:opacity .15s ease 0s,-moz-transform .15s ease 0s;-o-transition:opacity .15s ease 0s,-o-transform .15s ease 0s;transition:opacity .15s ease 0s,transform .15s ease 0s;-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}.lg-outer .lg-pager-thumb-cont img{width:100%;height:100%}.lg-outer .lg-pager{background-color:rgba(255,255,255,.5);border-radius:50%;box-shadow:0 0 0 8px rgba(255,255,255,.7) inset;display:block;height:12px;-webkit-transition:box-shadow .3s ease 0s;-o-transition:box-shadow .3s ease 0s;transition:box-shadow .3s ease 0s;width:12px}.lg-outer .lg-pager:focus,.lg-outer .lg-pager:hover{box-shadow:0 0 0 8px #fff inset}.lg-outer .lg-caret{border-left:10px solid transparent;border-right:10px solid transparent;border-top:10px dashed;bottom:-10px;display:inline-block;height:0;left:50%;margin-left:-5px;position:absolute;vertical-align:middle;width:0}.lg-fullscreen:after{content:"\e20c"}.lg-fullscreen-on .lg-fullscreen:after{content:"\e20d"}.lg-outer .lg-dropdown-overlay{background-color:rgba(0,0,0,.25);bottom:0;cursor:default;left:0;position:absolute;right:0;top:0;z-index:1081;opacity:0;visibility:hidden;will-change:visibility,opacity;-webkit-transition:visibility 0s linear .18s,opacity .18s linear 0s;-o-transition:visibility 0s linear .18s,opacity .18s linear 0s;transition:visibility 0s linear .18s,opacity .18s linear 0s}.lg-outer.lg-dropdown-active .lg-dropdown,.lg-outer.lg-dropdown-active .lg-dropdown-overlay{-webkit-transition-delay:0s;transition-delay:0s;-moz-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1;visibility:visible}.lg-outer.lg-dropdown-active .lg-share{color:#fff}.lg-outer .lg-dropdown{background-color:#fff;border-radius:2px;font-size:14px;list-style-type:none;margin:0;padding:10px 0;position:absolute;right:0;text-align:left;top:50px;opacity:0;visibility:hidden;-moz-transform:translate3d(0,5px,0);-o-transform:translate3d(0,5px,0);-ms-transform:translate3d(0,5px,0);-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0);will-change:visibility,opacity,transform;-webkit-transition:-webkit-transform .18s linear 0s,visibility 0s linear .5s,opacity .18s linear 0s;-moz-transition:-moz-transform .18s linear 0s,visibility 0s linear .5s,opacity .18s linear 0s;-o-transition:-o-transform .18s linear 0s,visibility 0s linear .5s,opacity .18s linear 0s;transition:transform .18s linear 0s,visibility 0s linear .5s,opacity .18s linear 0s}.lg-outer .lg-dropdown:after{content:"";display:block;height:0;width:0;position:absolute;border:8px solid transparent;border-bottom-color:#fff;right:16px;top:-16px}.lg-outer .lg-dropdown>li:last-child{margin-bottom:0}.lg-outer .lg-dropdown>li:hover a{color:#333}.lg-outer .lg-dropdown a{color:#333;display:block;white-space:pre;padding:4px 12px;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px}.lg-outer .lg-dropdown a:hover{background-color:rgba(0,0,0,.07)}.lg-outer .lg-dropdown .lg-dropdown-text{display:inline-block;line-height:1;margin-top:-3px;vertical-align:middle}.lg-outer .lg-dropdown .lg-icon{color:#333;display:inline-block;float:none;font-size:20px;height:auto;line-height:1;margin-right:8px;padding:0;vertical-align:middle;width:auto}.lg-outer .lg-share{position:relative}.lg-outer .lg-share:after{content:"\e80d"}.lg-outer .lg-share-facebook .lg-icon{color:#3b5998}.lg-outer .lg-share-facebook .lg-icon:after{content:"\e904"}.lg-outer .lg-share-twitter .lg-icon{color:#00aced}.lg-outer .lg-share-twitter .lg-icon:after{content:"\e907"}.lg-outer .lg-share-pinterest .lg-icon{color:#cb2027}.lg-outer .lg-share-pinterest .lg-icon:after{content:"\e906"}.lg-comment-box{width:420px;max-width:100%;position:absolute;right:0;top:0;bottom:0;z-index:9999;background-color:#fff;will-change:transform;-moz-transform:translate3d(100%,0,0);-o-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);-webkit-transition:-webkit-transform .4s cubic-bezier(0,0,.25,1) 0s;-moz-transition:-moz-transform .4s cubic-bezier(0,0,.25,1) 0s;-o-transition:-o-transform .4s cubic-bezier(0,0,.25,1) 0s;transition:transform .4s cubic-bezier(0,0,.25,1) 0s}.lg-comment-box .lg-comment-title{margin:0;color:#fff;font-size:18px}.lg-comment-box .lg-comment-header{background-color:#000;padding:12px 20px;position:absolute;left:0;right:0;top:0}.lg-comment-box .lg-comment-body{height:100%!important;padding-top:43px!important;width:100%!important}.lg-comment-box .fb-comments{height:100%;width:100%;background:url(../images/loading.gif) no-repeat scroll center center #fff;overflow-y:auto;display:inline-block}.lg-comment-box .fb-comments[fb-xfbml-state=rendered]{background-image:none}.lg-comment-box .fb-comments>span{max-width:100%}.lg-comment-box .lg-comment-close{position:absolute;right:5px;top:12px;cursor:pointer;font-size:20px;color:#999;will-change:color;-webkit-transition:color .2s linear;-o-transition:color .2s linear;transition:color .2s linear}.lg-comment-box .lg-comment-close:hover{color:#fff}.lg-comment-box .lg-comment-close:after{content:"\e070"}.lg-comment-box iframe{max-width:100%!important;width:100%!important}.lg-comment-box #disqus_thread{padding:0 20px}.lg-outer .lg-comment-overlay{background-color:rgba(0,0,0,.25);bottom:0;cursor:default;left:0;position:fixed;right:0;top:0;z-index:1081;opacity:0;visibility:hidden;will-change:visibility,opacity;-webkit-transition:visibility 0s linear .18s,opacity .18s linear 0s;-o-transition:visibility 0s linear .18s,opacity .18s linear 0s;transition:visibility 0s linear .18s,opacity .18s linear 0s}.lg-outer .lg-comment-toggle:after{content:"\e908"}.lg-outer.lg-comment-active .lg-comment-overlay{-webkit-transition-delay:0s;transition-delay:0s;-moz-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1;visibility:visible}.lg-outer.lg-comment-active .lg-comment-toggle{color:#fff}.lg-outer.lg-comment-active .lg-comment-box{-moz-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.lg-outer .lg-img-rotate{position:absolute;left:0;right:0;top:0;bottom:0;-webkit-transition:-webkit-transform .4s cubic-bezier(0,0,.25,1) 0s;-moz-transition:-moz-transform .4s cubic-bezier(0,0,.25,1) 0s;-o-transition:-o-transform .4s cubic-bezier(0,0,.25,1) 0s;transition:transform .4s cubic-bezier(0,0,.25,1) 0s}.lg-outer[data-lg-slide-type=iframe] .lg-flip-hor,.lg-outer[data-lg-slide-type=iframe] .lg-flip-ver,.lg-outer[data-lg-slide-type=iframe] .lg-rotate-left,.lg-outer[data-lg-slide-type=iframe] .lg-rotate-right,.lg-outer[data-lg-slide-type=video] .lg-flip-hor,.lg-outer[data-lg-slide-type=video] .lg-flip-ver,.lg-outer[data-lg-slide-type=video] .lg-rotate-left,.lg-outer[data-lg-slide-type=video] .lg-rotate-right{opacity:.75;pointer-events:none}.lg-outer .lg-img-rotate:before{content:"";display:inline-block;height:100%;vertical-align:middle}.lg-rotate-left:after{content:"\e900"}.lg-rotate-right:after{content:"\e901"}.lg-icon.lg-flip-hor,.lg-icon.lg-flip-ver{font-size:26px}.lg-flip-ver:after{content:"\e903"}.lg-flip-hor:after{content:"\e902"}.lg-medium-zoom-item{cursor:zoom-in}.lg-medium-zoom .lg-outer{cursor:zoom-out}.lg-medium-zoom .lg-outer.lg-grab img.lg-object{cursor:zoom-out}.lg-medium-zoom .lg-outer.lg-grabbing img.lg-object{cursor:zoom-out}.lg-relative-caption .lg-outer .lg-sub-html{white-space:normal;bottom:auto;padding:0;background-image:none}.lg-relative-caption .lg-outer .lg-relative-caption-item{opacity:0;padding:16px 0;transition:.5s opacity ease}.lg-relative-caption .lg-outer .lg-show-caption .lg-relative-caption-item{opacity:1}.lg-group:after{content:"";display:table;clear:both}.lg-container{display:none;outline:0}.lg-container.lg-show{display:block}.lg-on{scroll-behavior:unset}.lg-overlay-open{overflow:hidden}.lg-hide-sub-html .lg-sub-html,.lg-next,.lg-pager-outer,.lg-prev,.lg-toolbar{opacity:0;will-change:transform,opacity;-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1) 0s,opacity .25s cubic-bezier(0,0,.25,1) 0s;-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1) 0s,opacity .25s cubic-bezier(0,0,.25,1) 0s;-o-transition:-o-transform .25s cubic-bezier(0,0,.25,1) 0s,opacity .25s cubic-bezier(0,0,.25,1) 0s;transition:transform .25s cubic-bezier(0,0,.25,1) 0s,opacity .25s cubic-bezier(0,0,.25,1) 0s}.lg-show-in .lg-next,.lg-show-in .lg-pager-outer,.lg-show-in .lg-prev,.lg-show-in .lg-toolbar{opacity:1}.lg-show-in.lg-hide-sub-html .lg-sub-html{opacity:1}.lg-show-in .lg-hide-items .lg-prev{opacity:0;-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}.lg-show-in .lg-hide-items .lg-next{opacity:0;-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}.lg-show-in .lg-hide-items .lg-toolbar{opacity:0;-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}.lg-show-in .lg-hide-items.lg-hide-sub-html .lg-sub-html{opacity:0;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}.lg-outer{width:100%;height:100%;position:fixed;top:0;left:0;z-index:1050;text-align:left;opacity:.001;outline:0;will-change:auto;overflow:hidden;-webkit-transition:opacity .15s ease 0s;-o-transition:opacity .15s ease 0s;transition:opacity .15s ease 0s}.lg-outer *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.lg-outer.lg-zoom-from-image{opacity:1}.lg-outer.lg-visible{opacity:1}.lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-current,.lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-next-slide,.lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-prev-slide{-webkit-transition-duration:inherit!important;transition-duration:inherit!important;-webkit-transition-timing-function:inherit!important;transition-timing-function:inherit!important}.lg-outer.lg-css3.lg-dragging .lg-item.lg-current,.lg-outer.lg-css3.lg-dragging .lg-item.lg-next-slide,.lg-outer.lg-css3.lg-dragging .lg-item.lg-prev-slide{-webkit-transition-duration:0s!important;transition-duration:0s!important;opacity:1}.lg-outer.lg-grab img.lg-object{cursor:-webkit-grab;cursor:-moz-grab;cursor:-o-grab;cursor:-ms-grab;cursor:grab}.lg-outer.lg-grabbing img.lg-object{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:-o-grabbing;cursor:-ms-grabbing;cursor:grabbing}.lg-outer .lg-content{position:absolute;top:0;left:0;right:0;bottom:0}.lg-outer .lg-inner{width:100%;position:absolute;left:0;top:0;bottom:0;-webkit-transition:opacity 0s;-o-transition:opacity 0s;transition:opacity 0s;white-space:nowrap}.lg-outer .lg-item{display:none!important}.lg-outer .lg-item:not(.lg-start-end-progress){background:url(../images/loading.gif) no-repeat scroll center center transparent}.lg-outer.lg-css3 .lg-current,.lg-outer.lg-css3 .lg-next-slide,.lg-outer.lg-css3 .lg-prev-slide{display:inline-block!important}.lg-outer.lg-css .lg-current{display:inline-block!important}.lg-outer .lg-img-wrap,.lg-outer .lg-item{display:inline-block;text-align:center;position:absolute;width:100%;height:100%}.lg-outer .lg-img-wrap:before,.lg-outer .lg-item:before{content:"";display:inline-block;height:100%;vertical-align:middle}.lg-outer .lg-img-wrap{position:absolute;left:0;right:0;top:0;bottom:0;white-space:nowrap;font-size:0}.lg-outer .lg-item.lg-complete{background-image:none}.lg-outer .lg-item.lg-current{z-index:1060}.lg-outer .lg-object{display:inline-block;vertical-align:middle;max-width:100%;max-height:100%;width:auto;height:auto;position:relative}.lg-outer .lg-empty-html .lg-sub-html,.lg-outer .lg-empty-html.lg-sub-html{display:none}.lg-outer.lg-hide-download .lg-download{opacity:.75;pointer-events:none}.lg-outer .lg-first-slide .lg-dummy-img{position:absolute;top:50%;left:50%}.lg-outer.lg-components-open:not(.lg-zoomed) .lg-components{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.lg-outer.lg-components-open:not(.lg-zoomed) .lg-sub-html{opacity:1;transition:opacity .2s ease-out .15s}.lg-outer .lg-media-cont{text-align:center;display:inline-block;vertical-align:middle;position:relative}.lg-outer .lg-media-cont .lg-object{width:100%!important;height:100%!important}.lg-outer .lg-has-iframe .lg-media-cont{-webkit-overflow-scrolling:touch;overflow:auto}.lg-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;z-index:1040;background-color:#000;opacity:0;will-change:auto;-webkit-transition:opacity 333ms ease-in 0s;-o-transition:opacity 333ms ease-in 0s;transition:opacity 333ms ease-in 0s}.lg-backdrop.in{opacity:1}.lg-css3.lg-no-trans .lg-current,.lg-css3.lg-no-trans .lg-next-slide,.lg-css3.lg-no-trans .lg-prev-slide{-webkit-transition:none 0s ease 0s!important;-moz-transition:none 0s ease 0s!important;-o-transition:none 0s ease 0s!important;transition:none 0s ease 0s!important}.lg-css3.lg-use-css3 .lg-item{-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden}.lg-css3.lg-fade .lg-item{opacity:0}.lg-css3.lg-fade .lg-item.lg-current{opacity:1}.lg-css3.lg-fade .lg-item.lg-current,.lg-css3.lg-fade .lg-item.lg-next-slide,.lg-css3.lg-fade .lg-item.lg-prev-slide{-webkit-transition:opacity .1s ease 0s;-moz-transition:opacity .1s ease 0s;-o-transition:opacity .1s ease 0s;transition:opacity .1s ease 0s}.lg-css3.lg-use-css3 .lg-item.lg-start-progress{-webkit-transition:-webkit-transform 1s cubic-bezier(.175,.885,.32,1.275) 0s;-moz-transition:-moz-transform 1s cubic-bezier(.175,.885,.32,1.275) 0s;-o-transition:-o-transform 1s cubic-bezier(.175,.885,.32,1.275) 0s;transition:transform 1s cubic-bezier(.175,.885,.32,1.275) 0s}.lg-css3.lg-use-css3 .lg-item.lg-start-end-progress{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s}.lg-css3.lg-slide.lg-use-css3 .lg-item{opacity:0}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current,.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide,.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s}.lg-container{display:none}.lg-container.lg-show{display:block}.lg-container.lg-dragging-vertical .lg-backdrop{-webkit-transition-duration:0s!important;transition-duration:0s!important}.lg-container.lg-dragging-vertical .lg-css3 .lg-item.lg-current{-webkit-transition-duration:0s!important;transition-duration:0s!important;opacity:1}.lg-inline .lg-backdrop,.lg-inline .lg-outer{position:absolute}.lg-inline .lg-backdrop{z-index:1}.lg-inline .lg-outer{z-index:2}.lg-inline .lg-maximize:after{content:"\e909"}.lg-components{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);will-change:transform;-webkit-transition:-webkit-transform .35s ease-out 0s;-moz-transition:-moz-transform .35s ease-out 0s;-o-transition:-o-transform .35s ease-out 0s;transition:transform .35s ease-out 0s;z-index:1080;position:absolute;bottom:0;right:0;left:0} \ No newline at end of file diff --git a/assets/lightGallery/css/lightgallery-core.css b/assets/lightGallery/css/lightgallery-core.css new file mode 100644 index 0000000..42ec381 --- /dev/null +++ b/assets/lightGallery/css/lightgallery-core.css @@ -0,0 +1,350 @@ +.lg-group:after { + content: ""; + display: table; + clear: both; +} + +.lg-container { + display: none; + outline: none; +} +.lg-container.lg-show { + display: block; +} + +.lg-on { + scroll-behavior: unset; +} + +.lg-overlay-open { + overflow: hidden; +} + +.lg-toolbar, +.lg-prev, +.lg-next, +.lg-pager-outer, +.lg-hide-sub-html .lg-sub-html { + opacity: 0; + will-change: transform, opacity; + -webkit-transition: -webkit-transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s; + -moz-transition: -moz-transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s; + -o-transition: -o-transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s; + transition: transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s; +} + +.lg-show-in .lg-toolbar, +.lg-show-in .lg-prev, +.lg-show-in .lg-next, +.lg-show-in .lg-pager-outer { + opacity: 1; +} +.lg-show-in.lg-hide-sub-html .lg-sub-html { + opacity: 1; +} +.lg-show-in .lg-hide-items .lg-prev { + opacity: 0; + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); +} +.lg-show-in .lg-hide-items .lg-next { + opacity: 0; + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); +} +.lg-show-in .lg-hide-items .lg-toolbar { + opacity: 0; + -webkit-transform: translate3d(0, -10px, 0); + transform: translate3d(0, -10px, 0); +} +.lg-show-in .lg-hide-items.lg-hide-sub-html .lg-sub-html { + opacity: 0; + -webkit-transform: translate3d(0, 20px, 0); + transform: translate3d(0, 20px, 0); +} + +.lg-outer { + width: 100%; + height: 100%; + position: fixed; + top: 0; + left: 0; + z-index: 1050; + text-align: left; + opacity: 0.001; + outline: none; + will-change: auto; + overflow: hidden; + -webkit-transition: opacity 0.15s ease 0s; + -o-transition: opacity 0.15s ease 0s; + transition: opacity 0.15s ease 0s; +} +.lg-outer * { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.lg-outer.lg-zoom-from-image { + opacity: 1; +} +.lg-outer.lg-visible { + opacity: 1; +} +.lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-prev-slide, .lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-next-slide, .lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-current { + -webkit-transition-duration: inherit !important; + transition-duration: inherit !important; + -webkit-transition-timing-function: inherit !important; + transition-timing-function: inherit !important; +} +.lg-outer.lg-css3.lg-dragging .lg-item.lg-prev-slide, .lg-outer.lg-css3.lg-dragging .lg-item.lg-next-slide, .lg-outer.lg-css3.lg-dragging .lg-item.lg-current { + -webkit-transition-duration: 0s !important; + transition-duration: 0s !important; + opacity: 1; +} +.lg-outer.lg-grab img.lg-object { + cursor: -webkit-grab; + cursor: -moz-grab; + cursor: -o-grab; + cursor: -ms-grab; + cursor: grab; +} +.lg-outer.lg-grabbing img.lg-object { + cursor: move; + cursor: -webkit-grabbing; + cursor: -moz-grabbing; + cursor: -o-grabbing; + cursor: -ms-grabbing; + cursor: grabbing; +} +.lg-outer .lg-content { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; +} +.lg-outer .lg-inner { + width: 100%; + position: absolute; + left: 0; + top: 0; + bottom: 0; + -webkit-transition: opacity 0s; + -o-transition: opacity 0s; + transition: opacity 0s; + white-space: nowrap; +} +.lg-outer .lg-item { + display: none !important; +} +.lg-outer .lg-item:not(.lg-start-end-progress) { + background: url("../images/loading.gif") no-repeat scroll center center transparent; +} +.lg-outer.lg-css3 .lg-prev-slide, +.lg-outer.lg-css3 .lg-current, +.lg-outer.lg-css3 .lg-next-slide { + display: inline-block !important; +} +.lg-outer.lg-css .lg-current { + display: inline-block !important; +} +.lg-outer .lg-item, +.lg-outer .lg-img-wrap { + display: inline-block; + text-align: center; + position: absolute; + width: 100%; + height: 100%; +} +.lg-outer .lg-item:before, +.lg-outer .lg-img-wrap:before { + content: ""; + display: inline-block; + height: 100%; + vertical-align: middle; +} +.lg-outer .lg-img-wrap { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + white-space: nowrap; + font-size: 0; +} +.lg-outer .lg-item.lg-complete { + background-image: none; +} +.lg-outer .lg-item.lg-current { + z-index: 1060; +} +.lg-outer .lg-object { + display: inline-block; + vertical-align: middle; + max-width: 100%; + max-height: 100%; + width: auto; + height: auto; + position: relative; +} +.lg-outer .lg-empty-html.lg-sub-html, +.lg-outer .lg-empty-html .lg-sub-html { + display: none; +} +.lg-outer.lg-hide-download .lg-download { + opacity: 0.75; + pointer-events: none; +} +.lg-outer .lg-first-slide .lg-dummy-img { + position: absolute; + top: 50%; + left: 50%; +} +.lg-outer.lg-components-open:not(.lg-zoomed) .lg-components { + -webkit-transform: translate3d(0, 0%, 0); + transform: translate3d(0, 0%, 0); + opacity: 1; +} +.lg-outer.lg-components-open:not(.lg-zoomed) .lg-sub-html { + opacity: 1; + transition: opacity 0.2s ease-out 0.15s; +} +.lg-outer .lg-media-cont { + text-align: center; + display: inline-block; + vertical-align: middle; + position: relative; +} +.lg-outer .lg-media-cont .lg-object { + width: 100% !important; + height: 100% !important; +} +.lg-outer .lg-has-iframe .lg-media-cont { + -webkit-overflow-scrolling: touch; + overflow: auto; +} + +.lg-backdrop { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 1040; + background-color: #000; + opacity: 0; + will-change: auto; + -webkit-transition: opacity 333ms ease-in 0s; + -o-transition: opacity 333ms ease-in 0s; + transition: opacity 333ms ease-in 0s; +} +.lg-backdrop.in { + opacity: 1; +} + +.lg-css3.lg-no-trans .lg-prev-slide, +.lg-css3.lg-no-trans .lg-next-slide, +.lg-css3.lg-no-trans .lg-current { + -webkit-transition: none 0s ease 0s !important; + -moz-transition: none 0s ease 0s !important; + -o-transition: none 0s ease 0s !important; + transition: none 0s ease 0s !important; +} +.lg-css3.lg-use-css3 .lg-item { + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + backface-visibility: hidden; +} +.lg-css3.lg-fade .lg-item { + opacity: 0; +} +.lg-css3.lg-fade .lg-item.lg-current { + opacity: 1; +} +.lg-css3.lg-fade .lg-item.lg-prev-slide, .lg-css3.lg-fade .lg-item.lg-next-slide, .lg-css3.lg-fade .lg-item.lg-current { + -webkit-transition: opacity 0.1s ease 0s; + -moz-transition: opacity 0.1s ease 0s; + -o-transition: opacity 0.1s ease 0s; + transition: opacity 0.1s ease 0s; +} +.lg-css3.lg-use-css3 .lg-item.lg-start-progress { + -webkit-transition: -webkit-transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s; + -o-transition: -o-transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s; + transition: transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s; +} +.lg-css3.lg-use-css3 .lg-item.lg-start-end-progress { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s; +} +.lg-css3.lg-slide.lg-use-css3 .lg-item { + opacity: 0; +} +.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); +} +.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); +} +.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; +} +.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide, .lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide, .lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; +} + +.lg-container { + display: none; +} +.lg-container.lg-show { + display: block; +} +.lg-container.lg-dragging-vertical .lg-backdrop { + -webkit-transition-duration: 0s !important; + transition-duration: 0s !important; +} +.lg-container.lg-dragging-vertical .lg-css3 .lg-item.lg-current { + -webkit-transition-duration: 0s !important; + transition-duration: 0s !important; + opacity: 1; +} + +.lg-inline .lg-backdrop, +.lg-inline .lg-outer { + position: absolute; +} +.lg-inline .lg-backdrop { + z-index: 1; +} +.lg-inline .lg-outer { + z-index: 2; +} +.lg-inline .lg-maximize:after { + content: "\e909"; +} + +.lg-components { + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + will-change: transform; + -webkit-transition: -webkit-transform 0.35s ease-out 0s; + -moz-transition: -moz-transform 0.35s ease-out 0s; + -o-transition: -o-transform 0.35s ease-out 0s; + transition: transform 0.35s ease-out 0s; + z-index: 1080; + position: absolute; + bottom: 0; + right: 0; + left: 0; +} + +/*# sourceMappingURL=lightgallery-core.css.map */ diff --git a/assets/lightGallery/css/lightgallery-core.css.map b/assets/lightGallery/css/lightgallery-core.css.map new file mode 100644 index 0000000..d7ba949 --- /dev/null +++ b/assets/lightGallery/css/lightgallery-core.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["../../src/scss/lightgallery-core.scss","../../src/scss/_lg-mixins.scss","../../src/scss/_lg-variables.scss"],"names":[],"mappings":"AAIA;EACI;EACA;EACA;;;AAKJ;EACI;EACA;;AACA;EACI;;;AAGR;EACI;;;AAEJ;EACI;;;AAIJ;AAAA;AAAA;AAAA;AAAA;EAKI;EACA;ECyQA;EACA;EACA;EACA,YD3QA;;;AAOA;AAAA;AAAA;AAAA;EAII;;AAGA;EACI;;AAIJ;EACI;EC6GR;EACA;;AD1GI;EACI;ECwGR;EACA;;ADrGI;EACI;ECmGR;EACA;;AD/FQ;EACI;EC6FZ;EACA;;;ADvFJ;EACI;EACA;EACA;EACA;EACA;EACA,SEzBW;EF0BX;EACA;EACA;EACA;EACA;ECuIA,oBDrIA;ECsIA,eDtIA;ECuIA,YDvIA;;AAEA;ECSA,oBDRwB;ECSxB,iBDTwB;ECUxB,YDVwB;;AAGxB;EACI;;AAGJ;EACI;;AAMI;ECoIR,6BDjIY;ECkIZ,qBDlIY;ECsIZ,oCDrIgD;ECsIhD,4BDtIgD;;AAQxC;ECwHR,6BDrHY;ECsHZ,qBDtHY;EACA;;AAOR;EC2LJ;EACA;EACA;EACA;EACA;;ADzLI;EC6LJ;EACA;EACA;EACA;EACA;EACA;;AD7LA;EACI;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;ECqEJ,oBDpEI;ECqEJ,eDrEI;ECsEJ,YDtEI;EACA;;AAGJ;EAKI;;AAJA;EACI;;AAMJ;AAAA;AAAA;EAGI;;AAIJ;EACI;;AAIR;AAAA;EAEI;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACI;EACA;EACA;EACA;;AAIR;EACI;EACA;EACA;EACA;EACA;EAEA;EACA;;AAIA;EACI;;AAGJ;EACI,SElJE;;AFsJV;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAKA;AAAA;EAEI;;AAKJ;EACI,SEjNuB;EFkNvB;;AAKJ;EACI;EACA;EACA;;AAMA;ECxFR;EACA;EDyFY;;AAEJ;EACI;EACA;;AAKZ;EACI;EACA;EACA;EACA;;AACA;EACI;EACA;;AAKJ;EACI;EACA;;;AAKZ;EACI;EACA;EACA;EACA;EACA;EACA,SE5Nc;EF6Nd,kBExRa;EFyRb;EACA;ECnEA,oBDoEA;ECnEA,eDmEA;EClEA,YDkEA;;AACA;EACI,SErSW;;;AF6SX;AAAA;AAAA;ECHJ;EACA;EACA;EACA,YDGQ;;AAKJ;ECjOJ,6BDkOqC;ECjOrC,0BDiOqC;EChOrC,qBDgOqC;;AAMjC;EACI;;AAEA;EACI;;AAIJ;EC1BR;EACA;EACA;EACA,YD0BY;;AAMJ;ECnCR;EACA;EACA;EACA,YDiCY;;AAKJ;ECzCR;EACA;EACA;EACA,YDuCY;;AASJ;EACI;;AAEA;EC7LZ;EACA;;ADgMY;ECjMZ;EACA;;ADoMY;ECrMZ;EACA;EDsMgB;;AAIJ;ECpEZ;EACA;EACA;EACA,YDoEgB;;;AAUpB;EACI;;AACA;EACI;;AAKA;ECpJJ,6BDqJQ;ECpJR,qBDoJQ;;AAII;ECzJZ,6BD0JgB;ECzJhB,qBDyJgB;EACA;;;AAUhB;AAAA;EAEI;;AAEJ;EACI;;AAEJ;EACI;;AAGA;EACI;;;AAMZ;ECnQI;EACA;EDoQA;EC9HA;EACA;EACA;EACA,YD4HA;EACA,SE3WgB;EF4WhB;EACA;EACA;EACA","file":"lightgallery-core.css"} \ No newline at end of file diff --git a/assets/lightGallery/css/lightgallery.css b/assets/lightGallery/css/lightgallery.css new file mode 100644 index 0000000..d804d19 --- /dev/null +++ b/assets/lightGallery/css/lightgallery.css @@ -0,0 +1,668 @@ +@font-face { + font-family: "lg"; + src: url("../fonts/lg.woff2?io9a6k") format("woff2"), url("../fonts/lg.ttf?io9a6k") format("truetype"), url("../fonts/lg.woff?io9a6k") format("woff"), url("../fonts/lg.svg?io9a6k#lg") format("svg"); + font-weight: normal; + font-style: normal; + font-display: block; +} +.lg-icon { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: "lg" !important; + speak: never; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.lg-container { + font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; +} + +.lg-next, +.lg-prev { + background-color: rgba(0, 0, 0, 0.45); + border-radius: 2px; + color: #999; + cursor: pointer; + display: block; + font-size: 22px; + margin-top: -10px; + padding: 8px 10px 9px; + position: absolute; + top: 50%; + z-index: 1084; + outline: none; + border: none; +} +.lg-next.disabled, +.lg-prev.disabled { + opacity: 0 !important; + cursor: default; +} +.lg-next:hover:not(.disabled), +.lg-prev:hover:not(.disabled) { + color: #fff; +} +.lg-single-item .lg-next, +.lg-single-item .lg-prev { + display: none; +} + +.lg-next { + right: 20px; +} +.lg-next:before { + content: "\e095"; +} + +.lg-prev { + left: 20px; +} +.lg-prev:after { + content: "\e094"; +} + +@-webkit-keyframes lg-right-end { + 0% { + left: 0; + } + 50% { + left: -30px; + } + 100% { + left: 0; + } +} +@-moz-keyframes lg-right-end { + 0% { + left: 0; + } + 50% { + left: -30px; + } + 100% { + left: 0; + } +} +@-ms-keyframes lg-right-end { + 0% { + left: 0; + } + 50% { + left: -30px; + } + 100% { + left: 0; + } +} +@keyframes lg-right-end { + 0% { + left: 0; + } + 50% { + left: -30px; + } + 100% { + left: 0; + } +} +@-webkit-keyframes lg-left-end { + 0% { + left: 0; + } + 50% { + left: 30px; + } + 100% { + left: 0; + } +} +@-moz-keyframes lg-left-end { + 0% { + left: 0; + } + 50% { + left: 30px; + } + 100% { + left: 0; + } +} +@-ms-keyframes lg-left-end { + 0% { + left: 0; + } + 50% { + left: 30px; + } + 100% { + left: 0; + } +} +@keyframes lg-left-end { + 0% { + left: 0; + } + 50% { + left: 30px; + } + 100% { + left: 0; + } +} +.lg-outer.lg-right-end .lg-object { + -webkit-animation: lg-right-end 0.3s; + -o-animation: lg-right-end 0.3s; + animation: lg-right-end 0.3s; + position: relative; +} +.lg-outer.lg-left-end .lg-object { + -webkit-animation: lg-left-end 0.3s; + -o-animation: lg-left-end 0.3s; + animation: lg-left-end 0.3s; + position: relative; +} + +.lg-toolbar { + z-index: 1082; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.lg-media-overlap .lg-toolbar { + background-image: linear-gradient(0deg, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.4)); +} +.lg-toolbar .lg-icon { + color: #999; + cursor: pointer; + float: right; + font-size: 24px; + height: 47px; + line-height: 27px; + padding: 10px 0; + text-align: center; + width: 50px; + text-decoration: none !important; + outline: medium none; + will-change: color; + -webkit-transition: color 0.2s linear; + -o-transition: color 0.2s linear; + transition: color 0.2s linear; + background: none; + border: none; + box-shadow: none; +} +.lg-toolbar .lg-icon.lg-icon-18 { + font-size: 18px; +} +.lg-toolbar .lg-icon:hover { + color: #fff; +} +.lg-toolbar .lg-close:after { + content: "\e070"; +} +.lg-toolbar .lg-maximize { + font-size: 22px; +} +.lg-toolbar .lg-maximize:after { + content: "\e90a"; +} +.lg-toolbar .lg-download:after { + content: "\e0f2"; +} + +.lg-sub-html { + color: #eee; + font-size: 16px; + padding: 10px 40px; + text-align: center; + z-index: 1080; + opacity: 0; + -webkit-transition: opacity 0.2s ease-out 0s; + -o-transition: opacity 0.2s ease-out 0s; + transition: opacity 0.2s ease-out 0s; +} +.lg-sub-html h4 { + margin: 0; + font-size: 13px; + font-weight: bold; +} +.lg-sub-html p { + font-size: 12px; + margin: 5px 0 0; +} +.lg-sub-html a { + color: inherit; +} +.lg-sub-html a:hover { + text-decoration: underline; +} +.lg-media-overlap .lg-sub-html { + background-image: linear-gradient(180deg, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.6)); +} +.lg-item .lg-sub-html { + position: absolute; + bottom: 0; + right: 0; + left: 0; +} + +.lg-error-msg { + font-size: 14px; + color: #999; +} + +.lg-counter { + color: #999; + display: inline-block; + font-size: 16px; + padding-left: 20px; + padding-top: 12px; + height: 47px; + vertical-align: middle; +} + +.lg-closing .lg-toolbar, +.lg-closing .lg-prev, +.lg-closing .lg-next, +.lg-closing .lg-sub-html { + opacity: 0; + -webkit-transition: -webkit-transform 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, color 0.08 linear; + -moz-transition: -moz-transform 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, color 0.08 linear; + -o-transition: -o-transform 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, color 0.08 linear; + transition: transform 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, color 0.08 linear; +} + +body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable) .lg-img-wrap, +body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable) .lg-video-cont, +body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable) .lg-media-cont { + opacity: 0; + -moz-transform: scale3d(0.5, 0.5, 0.5); + -o-transform: scale3d(0.5, 0.5, 0.5); + -ms-transform: scale3d(0.5, 0.5, 0.5); + -webkit-transform: scale3d(0.5, 0.5, 0.5); + transform: scale3d(0.5, 0.5, 0.5); + will-change: transform, opacity; + -webkit-transition: -webkit-transform 250ms cubic-bezier(0, 0, 0.25, 1) 0s, opacity 250ms cubic-bezier(0, 0, 0.25, 1) !important; + -moz-transition: -moz-transform 250ms cubic-bezier(0, 0, 0.25, 1) 0s, opacity 250ms cubic-bezier(0, 0, 0.25, 1) !important; + -o-transition: -o-transform 250ms cubic-bezier(0, 0, 0.25, 1) 0s, opacity 250ms cubic-bezier(0, 0, 0.25, 1) !important; + transition: transform 250ms cubic-bezier(0, 0, 0.25, 1) 0s, opacity 250ms cubic-bezier(0, 0, 0.25, 1) !important; +} +body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable).lg-complete .lg-img-wrap, +body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable).lg-complete .lg-video-cont, +body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable).lg-complete .lg-media-cont { + opacity: 1; + -moz-transform: scale3d(1, 1, 1); + -o-transform: scale3d(1, 1, 1); + -ms-transform: scale3d(1, 1, 1); + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); +} + +.lg-icon:focus-visible { + color: #fff; + border-radius: 3px; + outline: 1px dashed rgba(255, 255, 255, 0.6); +} + +.lg-toolbar .lg-icon:focus-visible { + border-radius: 8px; + outline-offset: -5px; +} + +.lg-group:after { + content: ""; + display: table; + clear: both; +} + +.lg-container { + display: none; + outline: none; +} +.lg-container.lg-show { + display: block; +} + +.lg-on { + scroll-behavior: unset; +} + +.lg-overlay-open { + overflow: hidden; +} + +.lg-toolbar, +.lg-prev, +.lg-next, +.lg-pager-outer, +.lg-hide-sub-html .lg-sub-html { + opacity: 0; + will-change: transform, opacity; + -webkit-transition: -webkit-transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s; + -moz-transition: -moz-transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s; + -o-transition: -o-transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s; + transition: transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s; +} + +.lg-show-in .lg-toolbar, +.lg-show-in .lg-prev, +.lg-show-in .lg-next, +.lg-show-in .lg-pager-outer { + opacity: 1; +} +.lg-show-in.lg-hide-sub-html .lg-sub-html { + opacity: 1; +} +.lg-show-in .lg-hide-items .lg-prev { + opacity: 0; + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); +} +.lg-show-in .lg-hide-items .lg-next { + opacity: 0; + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); +} +.lg-show-in .lg-hide-items .lg-toolbar { + opacity: 0; + -webkit-transform: translate3d(0, -10px, 0); + transform: translate3d(0, -10px, 0); +} +.lg-show-in .lg-hide-items.lg-hide-sub-html .lg-sub-html { + opacity: 0; + -webkit-transform: translate3d(0, 20px, 0); + transform: translate3d(0, 20px, 0); +} + +.lg-outer { + width: 100%; + height: 100%; + position: fixed; + top: 0; + left: 0; + z-index: 1050; + text-align: left; + opacity: 0.001; + outline: none; + will-change: auto; + overflow: hidden; + -webkit-transition: opacity 0.15s ease 0s; + -o-transition: opacity 0.15s ease 0s; + transition: opacity 0.15s ease 0s; +} +.lg-outer * { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.lg-outer.lg-zoom-from-image { + opacity: 1; +} +.lg-outer.lg-visible { + opacity: 1; +} +.lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-prev-slide, .lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-next-slide, .lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-current { + -webkit-transition-duration: inherit !important; + transition-duration: inherit !important; + -webkit-transition-timing-function: inherit !important; + transition-timing-function: inherit !important; +} +.lg-outer.lg-css3.lg-dragging .lg-item.lg-prev-slide, .lg-outer.lg-css3.lg-dragging .lg-item.lg-next-slide, .lg-outer.lg-css3.lg-dragging .lg-item.lg-current { + -webkit-transition-duration: 0s !important; + transition-duration: 0s !important; + opacity: 1; +} +.lg-outer.lg-grab img.lg-object { + cursor: -webkit-grab; + cursor: -moz-grab; + cursor: -o-grab; + cursor: -ms-grab; + cursor: grab; +} +.lg-outer.lg-grabbing img.lg-object { + cursor: move; + cursor: -webkit-grabbing; + cursor: -moz-grabbing; + cursor: -o-grabbing; + cursor: -ms-grabbing; + cursor: grabbing; +} +.lg-outer .lg-content { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; +} +.lg-outer .lg-inner { + width: 100%; + position: absolute; + left: 0; + top: 0; + bottom: 0; + -webkit-transition: opacity 0s; + -o-transition: opacity 0s; + transition: opacity 0s; + white-space: nowrap; +} +.lg-outer .lg-item { + display: none !important; +} +.lg-outer .lg-item:not(.lg-start-end-progress) { + background: url("../images/loading.gif") no-repeat scroll center center transparent; +} +.lg-outer.lg-css3 .lg-prev-slide, +.lg-outer.lg-css3 .lg-current, +.lg-outer.lg-css3 .lg-next-slide { + display: inline-block !important; +} +.lg-outer.lg-css .lg-current { + display: inline-block !important; +} +.lg-outer .lg-item, +.lg-outer .lg-img-wrap { + display: inline-block; + text-align: center; + position: absolute; + width: 100%; + height: 100%; +} +.lg-outer .lg-item:before, +.lg-outer .lg-img-wrap:before { + content: ""; + display: inline-block; + height: 100%; + vertical-align: middle; +} +.lg-outer .lg-img-wrap { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + white-space: nowrap; + font-size: 0; +} +.lg-outer .lg-item.lg-complete { + background-image: none; +} +.lg-outer .lg-item.lg-current { + z-index: 1060; +} +.lg-outer .lg-object { + display: inline-block; + vertical-align: middle; + max-width: 100%; + max-height: 100%; + width: auto; + height: auto; + position: relative; +} +.lg-outer .lg-empty-html.lg-sub-html, +.lg-outer .lg-empty-html .lg-sub-html { + display: none; +} +.lg-outer.lg-hide-download .lg-download { + opacity: 0.75; + pointer-events: none; +} +.lg-outer .lg-first-slide .lg-dummy-img { + position: absolute; + top: 50%; + left: 50%; +} +.lg-outer.lg-components-open:not(.lg-zoomed) .lg-components { + -webkit-transform: translate3d(0, 0%, 0); + transform: translate3d(0, 0%, 0); + opacity: 1; +} +.lg-outer.lg-components-open:not(.lg-zoomed) .lg-sub-html { + opacity: 1; + transition: opacity 0.2s ease-out 0.15s; +} +.lg-outer .lg-media-cont { + text-align: center; + display: inline-block; + vertical-align: middle; + position: relative; +} +.lg-outer .lg-media-cont .lg-object { + width: 100% !important; + height: 100% !important; +} +.lg-outer .lg-has-iframe .lg-media-cont { + -webkit-overflow-scrolling: touch; + overflow: auto; +} + +.lg-backdrop { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 1040; + background-color: #000; + opacity: 0; + will-change: auto; + -webkit-transition: opacity 333ms ease-in 0s; + -o-transition: opacity 333ms ease-in 0s; + transition: opacity 333ms ease-in 0s; +} +.lg-backdrop.in { + opacity: 1; +} + +.lg-css3.lg-no-trans .lg-prev-slide, +.lg-css3.lg-no-trans .lg-next-slide, +.lg-css3.lg-no-trans .lg-current { + -webkit-transition: none 0s ease 0s !important; + -moz-transition: none 0s ease 0s !important; + -o-transition: none 0s ease 0s !important; + transition: none 0s ease 0s !important; +} +.lg-css3.lg-use-css3 .lg-item { + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + backface-visibility: hidden; +} +.lg-css3.lg-fade .lg-item { + opacity: 0; +} +.lg-css3.lg-fade .lg-item.lg-current { + opacity: 1; +} +.lg-css3.lg-fade .lg-item.lg-prev-slide, .lg-css3.lg-fade .lg-item.lg-next-slide, .lg-css3.lg-fade .lg-item.lg-current { + -webkit-transition: opacity 0.1s ease 0s; + -moz-transition: opacity 0.1s ease 0s; + -o-transition: opacity 0.1s ease 0s; + transition: opacity 0.1s ease 0s; +} +.lg-css3.lg-use-css3 .lg-item.lg-start-progress { + -webkit-transition: -webkit-transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s; + -o-transition: -o-transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s; + transition: transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s; +} +.lg-css3.lg-use-css3 .lg-item.lg-start-end-progress { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s; +} +.lg-css3.lg-slide.lg-use-css3 .lg-item { + opacity: 0; +} +.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); +} +.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); +} +.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; +} +.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide, .lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide, .lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current { + -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; + transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; +} + +.lg-container { + display: none; +} +.lg-container.lg-show { + display: block; +} +.lg-container.lg-dragging-vertical .lg-backdrop { + -webkit-transition-duration: 0s !important; + transition-duration: 0s !important; +} +.lg-container.lg-dragging-vertical .lg-css3 .lg-item.lg-current { + -webkit-transition-duration: 0s !important; + transition-duration: 0s !important; + opacity: 1; +} + +.lg-inline .lg-backdrop, +.lg-inline .lg-outer { + position: absolute; +} +.lg-inline .lg-backdrop { + z-index: 1; +} +.lg-inline .lg-outer { + z-index: 2; +} +.lg-inline .lg-maximize:after { + content: "\e909"; +} + +.lg-components { + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + will-change: transform; + -webkit-transition: -webkit-transform 0.35s ease-out 0s; + -moz-transition: -moz-transform 0.35s ease-out 0s; + -o-transition: -o-transform 0.35s ease-out 0s; + transition: transform 0.35s ease-out 0s; + z-index: 1080; + position: absolute; + bottom: 0; + right: 0; + left: 0; +} + +/*# sourceMappingURL=lightgallery.css.map */ diff --git a/assets/lightGallery/css/lightgallery.css.map b/assets/lightGallery/css/lightgallery.css.map new file mode 100644 index 0000000..64eafa8 --- /dev/null +++ b/assets/lightGallery/css/lightgallery.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["../../src/scss/_lg-fonts.scss","../../src/scss/_lg-theme-default.scss","../../src/scss/_lg-variables.scss","../../src/scss/_lg-mixins.scss","../../src/scss/lightgallery-core.scss"],"names":[],"mappings":"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","file":"lightgallery.css"} \ No newline at end of file diff --git a/assets/lightGallery/fonts/lg.eot b/assets/lightGallery/fonts/lg.eot deleted file mode 100644 index 5967563a0ad9ead3448d6dbe9c3e7034ec75a778..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2760 zcma)8UuaWj6hGg+X;Ryp)X)G=Y3&@mA9RAL@PVNZMTVGlCK{yGIR1hr4w|Hp)>3;vTw08qgg06qO+9 zqa-9HD$^|KR3IOnq!68erZoqUop)1}WIFN2Tj9}OH@P7B8tuJwK2^Lv^5IPw^@Cr? zq{>B%d%-VZ?9Alm-+y%U*B`*&fzL--Ej43*d**W@`vUZ1SqL0?`A6{IfIpheSFVnd z{W$o?;LqmtbjtpH=TRaD8u{|6t3^6Ur@^0RzL3gmf8Dz^1%8G|x?9xC732x(I>368 zXmD)zA5HWEmCCyf(rxaIrJ`!p`2LD?!a+xfUNqH)B2=*&?z ztol*HBIE~94VgM2^Q|3PJG@q0`)uuxUz+RA4R>?1*<=@O&8LP&*>D*e(cBpLZQ$|1 z&4KcO_el5QX8+&tv^@i3a=Q~G;IDU^1vXIh6=TBItmn&Y*bqXl$q8idpTVI))A0A`zYHsGqZ^4Lp$!rCAE9|?3w^sLxPL5b%?y(y~qQMXmPCI_Vz z>~<0kuOr|HL<3Q8R1Q9Qa<=s+Ew&Iun3JG{d>acth&e`0dWFAL8-Ke-f{P@^RB_wo zRFrjT(XBY0ihDD&t|(5I+u2xkIz`awmI+d~vTg`50GkSzQ;aAGu`8b7MG)31ye9mu z)$m)ZA|>4Hm;J*PB5!8Q$kHMrD~P8wRuIKVz=(|aND-0uDTpUgjYj08Jc9iIHtP5I zBf=3-vDj)&s&B?&P^-qP*RZx!uZvnENqaCSfjI(m_TbXlhcj>(^$E~%tYbv=47s=y z+#N%U7|7pN7|4)GwK}NDj?sAJw#6k($VyNn&b?_NLBt2c)?QOPIcYz=gc5Sdp~yat z7g3Eko*}Qt;H2boyjqPfR~xikjmN9YacKphK|ta-bag17=U4T}?AQ8r5!K)#LsAV6 z;5ObQ^uSdq!BNi1@%@?vk0<OfW5Q}RjNDkpt;)@q)rI|agr?~W`ih>2 zVKFYQi@V}yDJT_;XuULs^T5RJcT=C}Y3F38k1T9H0?b?`a)?(gxlED>Ti6C1vv3D> zxBb{5k67|9IwWwT8bQ0Ues&8xv9h-;+=DZ^1YX!UONBnMFrQ<|!V>j}a~77#CQe$| z27JlF9n>cdTG$SG)WThKN)#>JP4AFuVJEWr(!xD-p1#dx_`#B`REp&@;c#ZQlAW6l zrS*KcoJwbB3+b$`=jKY`+$?M^rgAy0G*4No;49)KbB4nBGI-HcAf3a4geZ;IO&-!R z-aTnZXYtnIQOB2qO$oXjq#47{MOfwV@ylr5jJbX0)MT8dXp-WbArjP!TA{4ZmC{;B zFJ+Kc8oX8xPff%Pcbt})ln$gJbQxheXc}AyxP-uF0xV&@h89MY35qARQh8P{_)dmS z{P%0kESK3|(lT?oRB7i!&s1H|3l(2RD`=%uMVs+W&-*6Q`joC0LUaK+6i_Z7^5FRV g!&Bfjnt^PZ=Fv|WMVx{q+lH`1jCa=VZM?<*1Io7^ng9R* diff --git a/assets/lightGallery/fonts/lg.svg b/assets/lightGallery/fonts/lg.svg index f7c4714..fe8b075 100644 --- a/assets/lightGallery/fonts/lg.svg +++ b/assets/lightGallery/fonts/lg.svg @@ -6,18 +6,18 @@ @@ -29,6 +29,7 @@ + @@ -38,4 +39,16 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/lightGallery/fonts/lg.ttf b/assets/lightGallery/fonts/lg.ttf index c28a50948df3dd87e1a78d89fc517036df9395e4..825f4832d409eaebc9684ea59d1e599c364f721d 100644 GIT binary patch literal 4756 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 c_8Bw}+Z-)noEA--MI?ug diff --git a/assets/lightGallery/fonts/lg.woff b/assets/lightGallery/fonts/lg.woff index c0599a54af509a959f090fff8bb1d93bc978202e..fd02a6f46e7fed18d854fe47e4f4c2931ed05a9e 100644 GIT binary patch literal 4832 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 T$r4sSXOiGKDXfAxF literal 2692 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 C#$m<) literal 0 HcmV?d00001 diff --git a/assets/lightGallery/images/loading.gif b/assets/lightGallery/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..4744c4556c71275769cdd16f1194c2f77cb6153c GIT binary patch literal 4178 zcmd7VX;c&Gng{SoZAq$Xt**i^&?!oH}0 zVv8`e0RaK80&d`?Z36*iUj-FyMFqqi)E@2WcD(VbLQN8&V4`Ec~70+`9IIU zO6KYA>=Mocc)%|J;Nal!`SWKdC#TJuH;Y7~)vH$r1qGFql&DmyRjXD>BoaqQ$DEv; zqM{<1Ocog#xqtuuwQJYL#l^|x^4{LwmX?;r#>SH;Pww8md(E0P?d|O~H8t1mBdqf{z^zw6Ea;Zfm9(aLazUF6Q~N`U_>OviLj*?xJAF9-noS(qB@VP)jZk;Qde`RI4J zomp;!mCEUz`sG2{2ts=A_p>ReD0U@nNF=^VG<@jxW?=~bUrYxWq9oDIEeE6vB48jL zP_pAuR0>C!9r_laD}yEUtpH4=GQ7k@gaHCU2(FBaVJqsLxyTz<6b22CuT{E7FAFK;waGV5c?oEp13xTW znXAXYYw>FVeMPA7&7B@iENw{XX~v4d)Z;$<^_d|trG~=WXBdkdce(EJa6BB^>wnzx zSUB;=l$hz^FO=3slADhvZA?q$of-ojB@=@-S~1WJT^gPIY?$%$30dIy=G4qe&#qh~ z!a$ctJtdJMw;yO*Y!72+^%3K2cRw1?KRWJ@6|3U>#l_>Jel$v|fb9K>K{R;lM7CNoB-> z$s&B4|1KydK%%cNF2>kLgE1UOkeV1m0vVE|f!JglR-1TK1k*Mdm^F}QTQ42VqBE}> zh6i1W3S7`&N~8qVY~N=*jG7d08XV&EI-T8?nFu!F-|ne(a_VvXTRRDPjAlokW
X}UWz08V_@o{j+otpay;*D-dGqNeK?82 zSFiTSQS#Yy(sZh>b1?x_Iy(PWMH{Xk&4b<6p#R2H>n8GFv%E#oV`YvN?= zi_Obrz;S0auSuLkk*;)Eea!7-D#HgoG~1%;`pTlr$kwA!SYv5Hb@s^k`eOGwCzk~a z44pOVeyM09!0A4!9JF%*RvIcs?0x)!z;|x15(61ONWg9>jWbY25)o6#90_S zBkzEJL8RDZAq4FO;<9}JBqP(rhmMv(Xt-=w0?w;n2+Q-Z6JZz1SQXy*rYdhb#A}!T z6jm<9(+ASK13}iUG1jK@cW-*Ls1F`enRoB@hW$MGfZ0Ddlw3JJcD3*I<=4UYBq&Kt zdx6n~Ga+iBn-)^siIr{;g+XqZQ3(60A^lh*h0mcm_&wr77U#cT_l<5Df>f?+4i9vL z+H$SSIIb6^k{*fy-@`Bc+~D^sK#prh?9&+!^R)o0Dnm#Dn#%l)L$ew;bK@$f)1YzT z+tcPYU#s;ihbknaK_3TLkDl1k{!x-r`d;9_C<`NZMtg|=+Y#TCty4@sQ&cI=!%D)= z9g)}MM`aQ>a(H^>oacx1S*Z@_zKbOhJ7cLsvpk8eL5ybc84 zmawSM^R1<-C>oW@M4Qk3n1B$!P-z@{|3$f@OCci~ElxA}5VEL`UcY6JhC;zeQ^I6O zZC>Pl&5mL`RG|d`rv2lD<&){98$3NqC1+G=nF+gtx>wTy@W#^Yr%uefE>$4HyrTKY z76s%`4(T6s>vp_k<;yp-3GM8@CAfWp<4n6{@DEGk|KBf7+fm!Ebh4 z9~)86xSCIKdQPWWo!iT(AM3`W%;sLBk^3>M=j(KZR z4$o>R27`PC%ZWGxgJPQa2o@)t*EZ;LMMRMRZl@3{^JAI4Rw|VF<~>aL=ZoPVFtYAk zN2naA?`#;M>vhY7@?NQKLvl$pp+#m=Y4+A~k%(^e+;GXHDi2sU4OBge4Kso;(wa23 z=aEuEvV|SqSaFX4iB&*s?4)oNK}LMKcv%5SKuho48->H#2L7ClkPwYn`8wp;D}&T( zzOQcq@F&0fH>M~Z)cXq7NoQeO1BJ9DT)a9oskWcVLi9T-Qx?|Ioll@~ttfy;FNL8Sm}6CV{U%4WtvMXoBArxt^}(4HL?*dKs8~ zAXmyu(qDL>>lr|hu|2A4SzL8v$2W_nen4qQ%sI|NVJbug?bx|e37DQJ#-fXZ!a_-;JeW;taBCZunjBFR`G}lFa*K7F(I){-27070Ix>pF{Sn~Z3BZ(m@Q~E&SIDL@U9UV&o|?gi zZ;gy6;}icj7~20a5QLc3QEGVWmee*C#F*(|pUwa>(y6>YXtX{Q-K58J1o#S7_BT6& z4nGTs=xWn_z{_<3ZA){<9aRBUsa@Gr-fzsXnVZMYJGw_P8jBxOHD|vAutqo}pvZ2; z!VuRbn0j;tXuH_IbJSJ~=q38?+M9e>;BUXb6!~9=*@?_aJFRx!CNL={0=#T(^v5l# zMpcZ{c>>@Q!$8LMF*`TF`MHy_*RtwEL0FQ6RIt7a1!U}C0dUd?Gi zM$X1StY`6#kv}nv=O_i`-co(z5@!t{3BBQHb+2PyoW-{|P8+I@GIuz_y7aZ^0&g^J z1J>6cAe6LatWY?g`uJ>xo; literal 0 HcmV?d00001 diff --git a/assets/lightGallery/index.d.ts b/assets/lightGallery/index.d.ts new file mode 100644 index 0000000..a978d62 --- /dev/null +++ b/assets/lightGallery/index.d.ts @@ -0,0 +1,4 @@ +import { LightGallerySettings } from './lg-settings'; +import { LightGallery } from './lightgallery'; +declare function lightGallery(el: HTMLElement, options?: LightGallerySettings): LightGallery; +export default lightGallery; diff --git a/assets/lightGallery/lg-events.d.ts b/assets/lightGallery/lg-events.d.ts new file mode 100644 index 0000000..2f6f4ed --- /dev/null +++ b/assets/lightGallery/lg-events.d.ts @@ -0,0 +1,300 @@ +import { LightGallery } from './lightgallery'; +import { VideoSource } from './plugins/video/types'; +/** + * List of lightGallery events + * All events should be documented here + * Below interfaces are used to build the website documentations + * */ +export declare const lGEvents: { + [key: string]: string; +}; +/** + * Fired only once when lightGallery is initialized + * @name lgInit + * @method onInit + * @example + * const lg = document.getElementById('custom-events-demo'); + * // Perform any action on lightGallery initialization. + * // Init event returns the plugin instance that can be used to call any lightGalley public method + * let pluginInstance = null; + * lg.addEventListener('lgInit', (event) => { + * pluginInstance = event.detail.instance; + * }); + * lightGallery(lg); + * @see Methods + */ +export interface InitDetail { + /** + * lightGallery plugin instance + */ + instance: LightGallery; +} +/** + * Fired when the slide content has been inserted into it's slide container. + * @name lgAfterAppendSlide + * @method onAfterAppendSlide + */ +export interface AfterAppendSlideEventDetail { + /** + * Index of the slide + */ + index: number; +} +/** + * Fired immediately before opening the gallery + * @name lgBeforeOpen + * @method onBeforeOpen + */ +export interface BeforeOpenDetail { +} +/** + * Fired immediately after opening the gallery + * @name lgAfterOpen + * @method onAfterOpen + */ +export interface AfterOpenDetail { +} +/** + * Fired once the media inside the slide has been completely loaded . + * @name lgSlideItemLoad + * @method onSlideItemLoad + */ +export interface SlideItemLoadDetail { + /** + * Index of the slide + */ + index: number; + /** + * For the first slide, lightGallery adds some delay for displaying the loaded slide item. + * This delay is required for the transition effect when the slide item is displayed + * Respect the delay when you use this event + */ + delay: number; + isFirstSlide: boolean; +} +/** + * Fired immediately before each slide transition. + * @name lgBeforeSlide + * @method onBeforeSlide + * @example + * const lg = document.getElementById('custom-events-demo'); + * // Perform any action before each slide transition + * lg.addEventListener('lgBeforeSlide', (event) => { + * const { index, prevIndex } = event.detail; + * alert(index, prevIndex); + * }); + * lightGallery(lg); + */ +export interface BeforeSlideDetail { + /** + * Index of the previous slide + */ + prevIndex: number; + /** + * Index of the slide + */ + index: number; + /** + * true if slide function called via touch event or mouse drag + */ + fromTouch: boolean; + /** + * true if slide function called via thumbnail click + */ + fromThumb: boolean; +} +/** + * Fired immediately after each slide transition. + * @name lgAfterSlide + * @method onAfterSlide + */ +export interface AfterSlideDetail { + /** + * Index of the previous slide + */ + prevIndex: number; + /** + * Index of the slide + */ + index: number; + /** + * true if slide function called via touch event or mouse drag + */ + fromTouch: boolean; + /** + * true if slide function called via thumbnail click + */ + fromThumb: boolean; +} +/** + * Fired when the video poster is clicked. + * @name lgPosterClick + * @method onPosterClick + */ +export interface PosterClickDetail { +} +/** + * Fired when the drag event to move to different slide starts. + * @name lgDragStart + * @method onDragStart + */ +export interface DragStartDetail { +} +/** + * Fired periodically during the drag operation. + * @name lgDragMove + * @method onDragMove + */ +export interface DragMoveDetail { +} +/** + * Fired when the user has finished the drag operation + * @name lgDragEnd + * @method onDragEnd + */ +export interface DragEndDetail { +} +/** + * Fired immediately before the start of the close process. + * @name lgBeforeClose + * @method onBeforeClose + */ +export interface BeforeCloseDetail { +} +/** + * Fired immediately once lightGallery is closed. + * @name lgAfterClose + * @method onAfterClose + */ +export interface AfterCloseDetail { + /** + * lightGallery plugin instance + */ + instance: LightGallery; +} +/** + * Fired immediately before each "next" slide transition + * @name lgBeforeNextSlide + * @method onBeforeNextSlide + */ +export interface BeforeNextSlideDetail { + /** + * Index of the slide + */ + index: number; + /** + * true if slide function called via touch event or mouse drag + */ + fromTouch: boolean; +} +/** + * Fired immediately before each "prev" slide transition + * @name lgBeforePrevSlide + * @method onBeforePrevSlide + */ +export interface BeforePrevSlideDetail { + /** + * Index of the slide + */ + index: number; + /** + * true if slide function called via touch event or mouse drag + */ + fromTouch: boolean; +} +/** + * Fired when the sub-html content (ex : title/ description) has been appended into the slide. + * @name lgAfterAppendSubHtml + * @method onAfterAppendSubHtml + */ +export interface AfterAppendSubHtmlDetail { + /** + * Index of the slide + */ + index: number; +} +/** + * Fired when the lightGallery container has been resized. + * @name lgContainerResize + * @method onContainerResize + */ +export interface ContainerResizeDetail { + /** + * Index of the slide + */ + index: number; +} +/** + * Fired when lightGallery detects video slide + * @name lgHasVideo + * @method onHasVideo + */ +export interface HasVideoDetail { + /** + * Index of the slide, + */ + index: number; + /** + * Video source + */ + src: string; + /** + * HTML5 video source if available + *

+ HTML5 video source = source: { + src: string; + type: string; + }[]; + attributes: HTMLVideoElement; + *

+ */ + html5Video: VideoSource; + /** + * True if video has poster + */ + hasPoster: boolean; +} +/** + * Fired when the image is rotated in anticlockwise direction + * @name lgRotateLeft + * @method onRotateLeft + */ +export interface RotateLeftDetail { + /** + * Index of the slide + */ + index: number; +} +/** + * Fired when the image is rotated in clockwise direction + * @name lgRotateRight + * @method onRotateRight + */ +export interface RotateRightDetail { + /** + * Index of the slide + */ + index: number; +} +/** + * Fired when the image is flipped horizontally + * @name lgFlipHorizontal + * @method onFlipHorizontal + */ +export interface FlipHorizontalDetail { + /** + * Index of the slide + */ + index: number; +} +/** + * Fired when the image is flipped vertically + * @name lgFlipVertical + * @method onFlipVertical + */ +export interface FlipVerticalDetail { + /** + * Index of the slide + */ + index: number; +} diff --git a/assets/lightGallery/lg-plugin.d.ts b/assets/lightGallery/lg-plugin.d.ts new file mode 100644 index 0000000..2dfd32e --- /dev/null +++ b/assets/lightGallery/lg-plugin.d.ts @@ -0,0 +1,7 @@ +import { LgQuery } from './lgQuery'; +import { LightGallery } from './lightgallery'; +export declare class LgPlugin { + core: LightGallery; + $LG: LgQuery; + constructor(core: LightGallery, $LG: LgQuery); +} diff --git a/assets/lightGallery/lg-settings.d.ts b/assets/lightGallery/lg-settings.d.ts new file mode 100644 index 0000000..0bb399d --- /dev/null +++ b/assets/lightGallery/lg-settings.d.ts @@ -0,0 +1,425 @@ +import { GalleryItem } from './lg-utils'; +import { LgQuery } from './lgQuery'; +import { LightGallery } from './lightgallery'; +import { AutoplaySettings } from './plugins/autoplay/lg-autoplay-settings'; +import { CommentSettings } from './plugins/comment/lg-comment-settings'; +import { FullscreenSettings } from './plugins/fullscreen/lg-fullscreen-settings'; +import { HashSettings } from './plugins/hash/lg-hash-settings'; +import { MediumZoomSettings } from './plugins/mediumZoom/lg-medium-zoom-settings'; +import { PagerSettings } from './plugins/pager/lg-pager-settings'; +import { RotateSettings } from './plugins/rotate/lg-rotate-settings'; +import { ShareSettings } from './plugins/share/lg-share-settings'; +import { ThumbnailsSettings } from './plugins/thumbnail/lg-thumbnail-settings'; +import { VideoSettings } from './plugins/video/lg-video-settings'; +import { ZoomSettings } from './plugins/zoom/lg-zoom-settings'; +declare type LightGalleryCoreMobileSettings = Exclude; +export interface MobileSettings extends LightGalleryCoreMobileSettings, Partial, Partial, Partial, Partial, Partial, Partial, Partial, Partial, Partial, Partial { +} +export interface LightGalleryCoreStrings { + closeGallery: string; + toggleMaximize: string; + previousSlide: string; + nextSlide: string; + download: string; + playVideo: string; + mediaLoadingFailed: string; +} +export declare type LightGalleryAllSettings = LightGalleryCoreSettings & ZoomSettings & ThumbnailsSettings & VideoSettings & AutoplaySettings & CommentSettings & FullscreenSettings & HashSettings & PagerSettings & RotateSettings & ShareSettings & MediumZoomSettings; +export declare type LightGallerySettings = Partial; +export interface LightGalleryCoreSettings { + /** + * Type of transition between images. + */ + mode: 'lg-slide' | 'lg-fade' | 'lg-zoom-in' | 'lg-zoom-in-big' | 'lg-zoom-out' | 'lg-zoom-out-big' | 'lg-zoom-out-in' | 'lg-zoom-in-out' | 'lg-soft-zoom' | 'lg-scale-up' | 'lg-slide-circular' | 'lg-slide-circular-vertical' | 'lg-slide-vertical' | 'lg-slide-vertical-growth' | 'lg-slide-skew-only' | 'lg-slide-skew-only-rev' | 'lg-slide-skew-only-y' | 'lg-slide-skew-only-y-rev' | 'lg-slide-skew' | 'lg-slide-skew-rev' | 'lg-slide-skew-cross' | 'lg-slide-skew-cross-rev' | 'lg-slide-skew-ver' | 'lg-slide-skew-ver-rev' | 'lg-slide-skew-ver-cross' | 'lg-slide-skew-ver-cross-rev' | 'lg-lollipop' | 'lg-lollipop-rev' | 'lg-rotate' | 'lg-rotate-rev' | 'lg-tube'; + /** + * Slide animation CSS easing property + */ + easing: string; + /** + *Transition duration (in ms). + */ + speed: number; + /** + * If you are using lightGallery for commercial projects, you need to purchase a commercial license + * to get the license key. For projects that are compatible with GPLv3 license, + * please contact us for getting a license key at
contact@lightgalleryjs.com. + * If you want to test lightGallery before purchasing a commercial license, you can + * use `0000-0000-000-0000` as a temporary license key + */ + licenseKey: string; + /** + * Height of the gallery. + * example '100%' , '300px' + */ + height: string; + /** + * Width of the gallery. + * example '100%' , '300px' + */ + width: string; + /** + * Add custom class for gallery container + * This can be used to set different style for different galleries + */ + addClass: string; + /** + * Start animation class for the gallery. + * @description + *
    + *
  • startClass will be empty zoomFromOrigin is true.
  • + *
  • This can be used to change the starting effect when the image is loaded
  • + *
  • This is also applied when navigating to new slides
  • + *
+ */ + startClass: string; + /** + * Enable zoom from origin effect. + * @description You need to know the original image size upfront and provide it via data-lg-size attribute as data-lg-size="1920-1280" + * + * If you don't know, the size of a few images in the list, you can skip the data-lg-size attribute for the particular slides, + * lightGallery will show the default animation if data-lg-size is not available + * + * If you are using responsive images, + * you can pass a comma separated list of sizes combined with a max-width (up to what size the particular image should be used) + * + * example - + * data-lg-size="240-160-375, 400-267-480, 1600-1067" + * data-responsive="img-240.jpg 375, img-400.jpg 480" + * data-src="img-1600.jpg" + * + * In the above example, upto 375 width img.240.jpg and lg-size 240-160 will be used. + * Similarly, upto 480 pixel width size 400-267 and img-400.jpg will be used + * And above 480, lg-size 1600-1067 and img-1600.jpg will be used + * + *
    + *
  • At the moment, zoomFromOrigin options is supported only for image slides.
  • + *
  • Will be false if dynamic option is enabled or galleryID found in the URL.
  • + *
  • startClass will be empty if zoomFromOrigin is true to avoid css conflicts.
  • + *
+ */ + zoomFromOrigin: boolean; + /** + * Zoom from image animation duration + */ + startAnimationDuration: number; + /** + * Backdrop transition duration. + * Note - Do not change the value of backdrop via css. + */ + backdropDuration: number; + /** + * Configure where the gallery should be appended. + * Useful to create inline galleries and more + * It is an empty string in the default settings and later assigned to document.body to avoid accessing document for SSR + */ + container: HTMLElement | (() => HTMLElement | null) | (string | null); + /** + * Delay for hiding gallery controls in ms. + * Pass 0 if you don't want to hide the controls + */ + hideBarsDelay: number; + /** + * Delay in hiding controls for the first time when gallery is opened + */ + showBarsAfter: number; + /** + * Delay slide transitions. + * @description This is useful if you want to do any action in the current slide before moving to next slide. + *
+ * For example, fading out the captions before going to next slide. + * .lg-slide-progress class name is added to the current slide immediately after calling the slide method. + * But transition begins only after the delay + *
+ */ + slideDelay: number; + /** + * Support legacy browsers + * @description Currently this is used only for adding support to srcset attribute via picturefill library + * If true lightGallery will show warning message to include picturefill library + */ + supportLegacyBrowser: boolean; + /** + * If true, toolbar, captions and thumbnails will not overlap with media element + * This will not effect thumbnails if animateThumb is false + * Also, toggle thumbnails button is not displayed if allowMediaOverlap is false + *
+ * Note - Changing the position of the media on every slide transition creates a flickering effect. + * Therefore, the height of the caption is calculated dynamically, only once based on the first slide caption. + *
+ *
+ * if you have dynamic captions for each media, + * you can provide an appropriate height for the captions via allowMediaOverlap option + *
+ */ + allowMediaOverlap: boolean; + /** + * Video max size. + * @description This can be over-written by passing specific size via data-lg-size attribute + * Recommended video resolution and & aspect ratios https://support.google.com/youtube/answer/6375112 + */ + videoMaxSize: string; + /** + * Automatically load poster image for YouTube videos + */ + loadYouTubePoster: boolean; + /** + * Height of the caption for calculating allowMediaOverlap positions + * Note - this is only used to find the position of media item if allowMediaOverlap is true. + * Not for setting height of the captions + * Set 0 if you want to calculate the height of captions dynamically + */ + defaultCaptionHeight: number; + /** + * aria-labelledby attribute fot gallery + */ + ariaLabelledby: string; + /** + * aria-describedby attribute for gallery + */ + ariaDescribedby: string; + /** + * Hide scrollbar when gallery is opened + * @version V2.5.0 + */ + hideScrollbar: boolean; + /** + * Reset to previous scrollPosition when lightGallery is closed + * @description By default, lightGallery doesn't hide the scrollbar for a smooth opening transition. + * If a user changes the scroll position, lightGallery resets it to the previous value + * @version V2.5.0 + */ + resetScrollPosition: boolean; + /** + * If false user won't be able to close the gallery at all + * This is useful for creating inline galleries. + */ + closable: boolean; + /** + * allows vertical drag/swipe to close gallery + * false if option closable is false + */ + swipeToClose: boolean; + /** + * allows clicks on black area to close gallery. + */ + closeOnTap: boolean; + /** + * If false, close button won't be displayed. + * Useful for creating inline galleries. + */ + showCloseIcon: boolean; + /** + * Show maximize icon. + * Useful for creating inline galleries. + */ + showMaximizeIcon: boolean; + /** + * If false, will disable the ability to loop back to the beginning of the gallery from the last slide. + */ + loop: boolean; + /** + * Whether the LightGallery could be closed by pressing the "Esc" key. + */ + escKey: boolean; + /** + * Enable keyboard navigation + */ + keyPress: boolean; + /** + * Trap focus within the lightGallery + * @version V2.5.0 + */ + trapFocus: boolean; + /** + * If false, prev/next buttons will not be displayed. + */ + controls: boolean; + /** + * Enable slideEnd animation + */ + slideEndAnimation: boolean; + /** + * If true, prev/next button will be hidden on first/last image. + * @description Note - this option will be ignored if loop or slideEndAnimation is set to true + */ + hideControlOnEnd: boolean; + /** + * ability to navigate to next/prev slides on mousewheel + */ + mousewheel: boolean; + /** + * Option to get captions from alt or title tags. + */ + getCaptionFromTitleOrAlt: boolean; + /** + * control where the sub-html should be appended. + * If you choose '.lg-outer', you are responsible for placing the div at the right position. + * '.lg-outer' is useful if you want show custom HTML outside the normal gallery + */ + appendSubHtmlTo: '.lg-sub-html' | '.lg-item' | '.lg-outer'; + /** + * Set to true if the selector in "data-sub-html" should use the current item as its origin. + */ + subHtmlSelectorRelative: boolean; + /** + * number of preload slides + * @description will exicute only after the current slide is fully loaded. + * for example, if you click on 4th image and if preload = 1 then 3rd slide and 5th + * slide will be loaded in the background after the 4th slide is fully loaded.. + * if preload is 2 then 2nd 3rd 5th 6th slides will be preloaded. + */ + preload: number; + /** + * Control how many slide items should be kept in dom at a time + * @description To improve performance by reducing number of gallery items in the dom, + * lightGallery keeps only the lowest possible number of slides in the dom at a time. + * This has a minimum value of 3 + */ + numberOfSlideItemsInDom: number; + /** + * Custom selector property instead of direct children. + * @description Based on your markup structure, you can specify custom selectors to fetch media data for the gallery + * Pass "this" to select same element + * You can also pass HTMLCollection directly + * Example - '.my-selector' | '#my-selector' | this | document.querySelectorAll('.my-selector') + */ + selector: string | HTMLCollection[]; + /** + * By default selector element relative to the current gallery. + * Instead of that you can tell lightGallery to select element relative to another element. + * Example - '.my-selector-container' | '#my-selector-container' + * In the code this become selector = document.querySelector(this.s.selectWithin ).querySelectorAll(this.s.selector); + */ + selectWithin: string; + /** + * Custom html for next control + */ + nextHtml: string; + /** + * Custom html for prev control + */ + prevHtml: string; + /** + * specify which slide should load initially + */ + index: number; + /** + * Set width for iframe. + */ + iframeWidth: string; + /** + * Set height for iframe. + */ + iframeHeight: string; + /** + * Set max width for iframe. + */ + iframeMaxWidth: string; + /** + * Set max height for iframe. + */ + iframeMaxHeight: string; + /** + * Enable download button. + * @description By default download url will be taken from data-src/href attribute but it supports only for modern browsers. + * If you want you can provide another url for download via data-download-url. + * pass false in data-download-url if you want to hide download button for the particular slide. + */ + download: boolean; + /** + * Whether to show total number of images and index number of currently displayed image. + */ + counter: boolean; + /** + * Where the counter should be appended + */ + appendCounterTo: string; + /** + * By setting the swipeThreshold (in px) you can set how far the user must swipe for the next/prev image. + */ + swipeThreshold: number; + /** + * Enables swipe support for touch devices + */ + enableSwipe: boolean; + /** + * Enables desktop mouse drag support + */ + enableDrag: boolean; + /** + * LightGallery can be instantiated and launched programmatically by setting this option to true and populating dynamicEl option (see below) with the definitions of images. + */ + dynamic: boolean; + /** + * An array of objects (src, iframe, subHtml, thumb, poster, responsive, srcset sizes) representing gallery elements. + */ + dynamicEl: GalleryItem[]; + /** + * Fetch custom properties from the selector + * @description this is useful for plugin development + * By default lightGallery fetches and store all the props selectors to + * reduce frequent dom interaction for fetching props every time. + * + * If you need any addition data to be fetched and stored in the galleryItems variable, + * you can do this just by passing the prop names via extraProps + * @example + * HTML: + *
+ * + * + *
+ * JS: + * lightGallery(document.getElementById('lightGallery'), { + * extraProps: ['customProp'] + * }) + * // Note - If you are using dynamic mode, you can pass any custom prop in the galleryItem + * lightGallery(document.getElementById('lightGallery'), { + * dynamic: true, + * dynamicEl: [{ + * src: 'img/img1.jpg', + * customProp:'abc', + * }] + * }) + * + */ + extraProps: string[]; + /** + * Option to fetch different thumbnail image other than first image + * @description If you want to use external image for thumbnail, + * add the path of that image inside "data-" attribute + * and set value of this option to the name of your custom attribute. + * + * @example + *
+ * + *
+ * + * lightGallery(document.getElementById('lightGallery'), { + * exThumbImage: 'data-external-thumb-image' + * }) + */ + exThumbImage: string; + /** + * Function to detect mobile devices + */ + isMobile?: () => boolean; + /** + * Separate settings for mobile devices + * @description Note - this is applied only at the time of loading + * by default controls and close buttons are disabled on mobile devices. + * use this options if you want to enable them or change any other settings for mobile devices + * Note - mobileSettings does not merge default values, You need to provide all mobileSettings including default values + */ + mobileSettings: Partial; + /** + * Customize string. + * @description This can be useful if you want to localize the lightGallery strings to other languages. + * Use your own service to translate the strings and pass it via settings.strings + * You can find dedicated strings option for all lightGallery modules in their respective documentation. + * Note - You need to provide values for all the strings. For example, even if you just want to change the closeGallery string, you need to provide all the other strings as well. + */ + strings: LightGalleryCoreStrings; + plugins: (new (instance: LightGallery, $LG: LgQuery) => any)[]; +} +export declare const lightGalleryCoreSettings: LightGalleryCoreSettings; +export {}; diff --git a/assets/lightGallery/lg-utils.d.ts b/assets/lightGallery/lg-utils.d.ts new file mode 100644 index 0000000..4bdca5f --- /dev/null +++ b/assets/lightGallery/lg-utils.d.ts @@ -0,0 +1,228 @@ +import { lgQuery } from './lgQuery'; +import { VideoSource } from './plugins/video/types'; +import { VideoInfo } from './types'; +export interface ImageSize { + width: number; + height: number; +} +export interface ImageSources { + media?: string; + srcset: string; + sizes?: string; + type?: string; +} +export interface GalleryItem { + /** + * url of the media + * @data-attr data-src + */ + src?: string; + /** + * Source attributes for the picture element + * @data-attr data-sources + */ + sources?: ImageSources[]; + /** + * Thumbnail url + * @description By default lightGallery uses the image inside gallery selector as thumbnail. + * But, If you want to use external image for thumbnail, + * pass the thumbnail url via any data attribute and + * pass the attribute name via exThumbImage option + * @example + *
+ * + *
+ * + * lightGallery(document.getElementById('lightGallery'), { + * exThumbImage: 'data-external-thumb-image' + * }) + * @data-attr data-* + */ + thumb?: string; + /** + * alt attribute for the image + * @data-attr alt + */ + alt?: string; + /** + * Title attribute for the video + * @data-attr title + */ + title?: string; + /** + * Title for iframe + * @data-attr data-iframe-title + */ + iframeTitle?: string; + /** + * Caption for the slide + * @description You can either pass the HTML markup or the ID or class name of the element which contains the captions + * @data-attr data-sub-html + */ + subHtml?: string; + /** + * url of the file which contain the sub html. + * @description Note - Does not support Internet Explorer browser + * @data-attr data-sub-html-url + */ + subHtmlUrl?: string; + /** + * Video source + * @data-attr data-video + */ + video?: VideoSource; + /** + * Poster url + * @data-attr data-poster + */ + poster?: string; + /** + * Custom slide name to use in the url when hash plugin is enabled + * @data-attr data-slide-name + */ + slideName?: string; + /** + * List of images and viewport's max width separated by comma. + * @description Ex?: img/1-375.jpg 375, img/1-480.jpg 480, img/1-757.jpg 757. + * @data-attr data-responsive + */ + responsive?: string; + /** + * srcset attribute values for the main image + * @data-attr data-srcset + */ + srcset?: string; + /** + * srcset sizes attribute for the main image + * @data-attr data-sizes + */ + sizes?: string; + /** + * Set true is you want to open your url in an iframe + * @data-attr data-iframe + */ + iframe?: boolean; + /** + * Download url for your image/video. + * @description Pass false if you want to disable the download button. + * @data-attr data-download-url + */ + downloadUrl?: string | boolean; + /** + * Name of the file after it is downloaded. + * @description The HTML value of the download attribute. + * There are no restrictions on allowed values, and the browser will automatically + * detect the correct file extension and add it to the file (.img, .pdf, .txt, .html, etc.). + * More info + * @data-attr data-download + */ + download?: string | boolean; + /** + * Actual size of the image in px. + * @description This is used in zoom plugin to see the actual size of the image when double taped on the image. + * @data-attr data-width + */ + width?: string; + /** + * Facebook share URL. + * @description Specify only if you want to provide separate share URL for the specific slide. By default, current browser URL is taken. + * @data-attr data-facebook-share-url + */ + facebookShareUrl?: string; + /** + * Tweet text + * @data-attr data-tweet-text + */ + tweetText?: string; + /** + * Twitter share URL. + * @description Specify only if you want to provide separate share URL for the specific slide. By default, current browser URL will be taken. + * @data-attr data-twitter-share-url + */ + twitterShareUrl?: string; + /** + * Pinterest share URL. + * @description Specify only if you want to provide separate share URL for the specific slide. By default, current browser URL will be taken. + * Note?: Pinterest requires absolute URL + * @data-attr data-pinterest-share-url + */ + pinterestShareUrl?: string; + /** + * Description for Pinterest post. + * @data-attr data-pinterest-text + */ + pinterestText?: string; + /** + * Facebook comments body html + * @description Please refer facebook official documentation for generating the HTML markup + * @example + *
+ *
+ * @data-attr data-fb-html + */ + fbHtml?: string; + /** + * Disqus page identifier + * @description Please refer official disqus documentation for more info + * @data-attr data-disqus-identifier + */ + disqusIdentifier?: string; + /** + * Disqus page url + * @description Please refer official disqus documentation for more info + * @data-attr data-disqus-url + */ + disqusUrl?: string; + __slideVideoInfo?: VideoInfo; + [key: string]: any; +} +export declare function convertToData(attr: string): string; +declare const utils: { + /** + * Fetches HTML content from a given URL and inserts it into a specified element. + * + * @param url - The URL to fetch the HTML content from. + * @param element - The DOM element (jQuery object) to insert the HTML content into. + * @param insertMethod - The method to insert the HTML ('append' or 'replace'). + */ + fetchCaptionFromUrl(url: string, element: lgQuery, insertMethod: 'append' | 'replace'): void; + /** + * get possible width and height from the lgSize attribute. Used for ZoomFromOrigin option + */ + getSize(el: HTMLElement, container: lgQuery, spacing?: number, defaultLgSize?: string | undefined): ImageSize | undefined; + /** + * @desc Get transform value based on the imageSize. Used for ZoomFromOrigin option + * @param {jQuery Element} + * @returns {String} Transform CSS string + */ + getTransform(el: HTMLElement, container: lgQuery, top: number, bottom: number, imageSize?: ImageSize | undefined): string | undefined; + getIframeMarkup(iframeWidth: string, iframeHeight: string, iframeMaxWidth: string, iframeMaxHeight: string, src?: string | undefined, iframeTitle?: string | undefined): string; + getImgMarkup(index: number, src: string, altAttr: string, srcset?: string | undefined, sizes?: string | undefined, sources?: ImageSources[] | undefined): string; + getResponsiveSrc(srcItms: string[]): string; + isImageLoaded(img: HTMLImageElement): boolean; + getVideoPosterMarkup(_poster: string, dummyImg: string | HTMLElement, videoContStyle: string, playVideoString: string, _isVideo?: VideoInfo | undefined): string; + getFocusableElements(container: HTMLElement): NodeListOf; + /** + * @desc Create dynamic elements array from gallery items when dynamic option is false + * It helps to avoid frequent DOM interaction + * and avoid multiple checks for dynamic elments + * + * @returns {Array} dynamicEl + */ + getDynamicOptions(items: any, extraProps: string[], getCaptionFromTitleOrAlt: boolean, exThumbImage: string): GalleryItem[]; + isMobile(): boolean; + /** + * @desc Check the given src is video + * @param {String} src + * @return {Object} video type + * Ex:{ youtube : ["//www.youtube.com/watch?v=c0asJgSyxcY", "c0asJgSyxcY"] } + * + * @todo - this information can be moved to dynamicEl to avoid frequent calls + */ + isVideo(src: string, isHTML5VIdeo: boolean, index: number): VideoInfo | undefined; +}; +export default utils; diff --git a/assets/lightGallery/lgQuery.d.ts b/assets/lightGallery/lgQuery.d.ts new file mode 100644 index 0000000..42dc4d1 --- /dev/null +++ b/assets/lightGallery/lgQuery.d.ts @@ -0,0 +1,56 @@ +interface Offset { + left: number; + top: number; +} +export declare type LgQuery = (selector: any) => lgQuery; +export declare class lgQuery { + static eventListeners: { + [key: string]: any[]; + }; + static generateUUID(): string; + private selector; + private firstElement; + private cssVenderPrefixes; + constructor(selector: string | Element); + private _getSelector; + private _each; + private _setCssVendorPrefix; + private _getFirstEl; + private isEventMatched; + attr(attr: string): string; + attr(attr: string, value: string | number | boolean): this; + find(selector: any): lgQuery; + first(): lgQuery; + eq(index: number): lgQuery; + parent(): lgQuery; + get(): HTMLElement; + removeAttr(attributes: string): this; + wrap(className: string): this; + addClass(classNames?: string): this; + removeClass(classNames: string): this; + hasClass(className: string): boolean; + hasAttribute(attribute: string): boolean; + toggleClass(className: string): this; + css(property: string, value?: string | number): this; + on(events: string, listener: (e: any) => void): this; + once(event: string, listener: (e: any) => void): this; + off(event: string): this; + trigger(event: string, detail?: Detail): this; + load(url: string): this; + html(): string; + html(html: string): this; + append(html: string | HTMLElement): this; + prepend(html: string | HTMLElement): this; + remove(): this; + empty(): this; + scrollTop(): number; + scrollTop(scrollTop: number): this; + scrollLeft(): number; + scrollLeft(scrollLeft?: number): this; + offset(): Offset; + style(): CSSStyleDeclaration; + width(): number; + height(): number; +} +export declare function $LG(selector: any): lgQuery; +export {}; diff --git a/assets/lightGallery/lightGallery.css b/assets/lightGallery/lightGallery.css deleted file mode 100644 index 15fb290..0000000 --- a/assets/lightGallery/lightGallery.css +++ /dev/null @@ -1,916 +0,0 @@ -@font-face { - font-family: 'lg'; - src: url("fonts/lg.eot?n1z373"); - src: url("fonts/lg.eot?#iefixn1z373") format("embedded-opentype"), - url("fonts/lg.woff?n1z373") format("woff"), - url("fonts/lg.ttf?n1z373") format("truetype"), - url("fonts/lg.svg?n1z373#lg") format("svg"); - font-weight: normal; - font-style: normal; -} -.lg-icon { - font-family: 'lg'; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - /* Better Font Rendering =========== */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.lg-actions .lg-next, .lg-actions .lg-prev { - background-color: rgba(255,255,255,0.5); - border-radius: 2px; - color: #999; - cursor: pointer; - display: block; - font-size: 22px; - margin-top: -10px; - padding: 8px 10px 9px; - position: absolute; - top: calc((100% - 100px) / 2 - 25px); - z-index: 1080; - border: none; - outline: none; -} -.lg-actions .lg-next.disabled, .lg-actions .lg-prev.disabled { - pointer-events: none; - opacity: 0.5; -} -.lg-actions .lg-next:hover, .lg-actions .lg-prev:hover { - color: #404040; -} -.lg-actions .lg-next { - right: 20px; -} -.lg-actions .lg-next:before { - /*content: "\e095";*/ - content: " "; - background-image: url("data:image/svg+xml;base64,PHN2ZyBjbGFzcz0ib3dsX3JpZ2h0X3N2ZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgd2lkdGg9IjI3cHgiIGhlaWdodD0iNTBweCIgdmVyc2lvbj0iMS4xIiBzdHlsZT0ic2hhcGUtcmVuZGVyaW5nOmdlb21ldHJpY1ByZWNpc2lvbjsgdGV4dC1yZW5kZXJpbmc6Z2VvbWV0cmljUHJlY2lzaW9uOyBpbWFnZS1yZW5kZXJpbmc6b3B0aW1pemVRdWFsaXR5OyBmaWxsLXJ1bGU6ZXZlbm9kZDsgY2xpcC1ydWxlOmV2ZW5vZGQiIHZpZXdCb3g9IjAgMCAyOTY0NiA1NDU2NiI+PGcgaWQ9ItCh0LvQvtC5X3gwMDIwXzEiPjxwYXRoIGNsYXNzPSIiIHN0eWxlPSJmaWxsOiNlNWU1ZTUiIGQ9Ik0yODM1OCAwbC0yNzA3MCAwYy03MDgsMCAtMTI4OCw1ODAgLTEyODgsMTI4OGwwIDUxOTkwYzAsNzA4IDU4MCwxMjg4IDEyODgsMTI4OGwyNzA3MCAwYzcxMCwwIDEyODgsLTU4MCAxMjg4LC0xMjg4bDAgLTUxOTkwYzAsLTcwOCAtNTc4LC0xMjg4IC0xMjg4LC0xMjg4em0tMjA5OTIgMTc1MTVsOTc2NyA5NzY3IC05NzY3IDk3NjggMjU3MyAyNTczIDk3NjcgLTk3NjggMjU3MyAtMjU3MyAtMjU3MyAtMjU3MyAtOTc2NyAtOTc2NyAtMjU3MyAyNTczeiI+PC9wYXRoPjwvZz48L3N2Zz4="); - background-position: right; - width: 50px; - height: 50px; - position: absolute; - left: -42px; - /* z-index: 1000000000; */ - background-repeat: no-repeat; - transition: 0.3s; -} -.lg-actions .lg-next:hover:before { - background-image: url("data:image/svg+xml;base64,PHN2ZyBjbGFzcz0ib3dsX3JpZ2h0X3N2ZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgd2lkdGg9IjI3cHgiIGhlaWdodD0iNTBweCIgdmVyc2lvbj0iMS4xIiBzdHlsZT0ic2hhcGUtcmVuZGVyaW5nOmdlb21ldHJpY1ByZWNpc2lvbjsgdGV4dC1yZW5kZXJpbmc6Z2VvbWV0cmljUHJlY2lzaW9uOyBpbWFnZS1yZW5kZXJpbmc6b3B0aW1pemVRdWFsaXR5OyBmaWxsLXJ1bGU6ZXZlbm9kZDsgY2xpcC1ydWxlOmV2ZW5vZGQiIHZpZXdCb3g9IjAgMCAyOTY0NiA1NDU2NiI+PGcgaWQ9ItCh0LvQvtC5X3gwMDIwXzEiPjxwYXRoIGNsYXNzPSIiIHN0eWxlPSJmaWxsOiMwMDAiIGQ9Ik0yODM1OCAwbC0yNzA3MCAwYy03MDgsMCAtMTI4OCw1ODAgLTEyODgsMTI4OGwwIDUxOTkwYzAsNzA4IDU4MCwxMjg4IDEyODgsMTI4OGwyNzA3MCAwYzcxMCwwIDEyODgsLTU4MCAxMjg4LC0xMjg4bDAgLTUxOTkwYzAsLTcwOCAtNTc4LC0xMjg4IC0xMjg4LC0xMjg4em0tMjA5OTIgMTc1MTVsOTc2NyA5NzY3IC05NzY3IDk3NjggMjU3MyAyNTczIDk3NjcgLTk3NjggMjU3MyAtMjU3MyAtMjU3MyAtMjU3MyAtOTc2NyAtOTc2NyAtMjU3MyAyNTczeiI+PC9wYXRoPjwvZz48L3N2Zz4="); -} -.lg-actions .lg-prev { - left: 20px; -} -.lg-actions .lg-prev:after { - /* content: "\e094"; */ - content:""; - background-image: url("data:image/svg+xml;base64,PHN2ZyBjbGFzcz0ib3dsX2xlZnRfc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3BhY2U9InByZXNlcnZlIiB3aWR0aD0iMjdweCIgaGVpZ2h0PSI1MHB4IiB2ZXJzaW9uPSIxLjEiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6Z2VvbWV0cmljUHJlY2lzaW9uOyB0ZXh0LXJlbmRlcmluZzpnZW9tZXRyaWNQcmVjaXNpb247IGltYWdlLXJlbmRlcmluZzpvcHRpbWl6ZVF1YWxpdHk7IGZpbGwtcnVsZTpldmVub2RkOyBjbGlwLXJ1bGU6ZXZlbm9kZCIgdmlld0JveD0iMCAwIDI5NjQ2IDU0NTY2Ij48ZyBpZD0i0KHQu9C+0LlfeDAwMjBfMSI+PHBhdGggY2xhc3M9IiIgc3R5bGU9ImZpbGw6I2U1ZTVlNSIgZD0iTTEyODggMGwyNzA3MCAwYzcwOCwwIDEyODgsNTgwIDEyODgsMTI4OGwwIDUxOTkwYzAsNzA4IC01ODAsMTI4OCAtMTI4OCwxMjg4bC0yNzA3MCAwYy03MDksMCAtMTI4OCwtNTgwIC0xMjg4LC0xMjg4bDAgLTUxOTkwYzAsLTcwOCA1NzksLTEyODggMTI4OCwtMTI4OHptMjA5OTIgMTc1MTVsLTk3NjYgOTc2NyA5NzY2IDk3NjggLTI1NzMgMjU3MyAtOTc2NyAtOTc2OCAtMjU3MyAtMjU3MyAyNTczIC0yNTczIDk3NjcgLTk3NjcgMjU3MyAyNTczeiI+PC9wYXRoPjwvZz48L3N2Zz4="); - background-position: left; - width: 50px; - height: 50px; - position: absolute; - right: -42px; - background-repeat: no-repeat; - transition: 0.3s; -} -.lg-actions .lg-prev:hover:after { - background-image: url("data:image/svg+xml;base64,PHN2ZyBjbGFzcz0ib3dsX2xlZnRfc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3BhY2U9InByZXNlcnZlIiB3aWR0aD0iMjdweCIgaGVpZ2h0PSI1MHB4IiB2ZXJzaW9uPSIxLjEiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6Z2VvbWV0cmljUHJlY2lzaW9uOyB0ZXh0LXJlbmRlcmluZzpnZW9tZXRyaWNQcmVjaXNpb247IGltYWdlLXJlbmRlcmluZzpvcHRpbWl6ZVF1YWxpdHk7IGZpbGwtcnVsZTpldmVub2RkOyBjbGlwLXJ1bGU6ZXZlbm9kZCIgdmlld0JveD0iMCAwIDI5NjQ2IDU0NTY2Ij48ZyBpZD0i0KHQu9C+0LlfeDAwMjBfMSI+PHBhdGggY2xhc3M9IiIgc3R5bGU9ImZpbGw6IzAwMCIgZD0iTTEyODggMGwyNzA3MCAwYzcwOCwwIDEyODgsNTgwIDEyODgsMTI4OGwwIDUxOTkwYzAsNzA4IC01ODAsMTI4OCAtMTI4OCwxMjg4bC0yNzA3MCAwYy03MDksMCAtMTI4OCwtNTgwIC0xMjg4LC0xMjg4bDAgLTUxOTkwYzAsLTcwOCA1NzksLTEyODggMTI4OCwtMTI4OHptMjA5OTIgMTc1MTVsLTk3NjYgOTc2NyA5NzY2IDk3NjggLTI1NzMgMjU3MyAtOTc2NyAtOTc2OCAtMjU3MyAtMjU3MyAyNTczIC0yNTczIDk3NjcgLTk3NjcgMjU3MyAyNTczeiI+PC9wYXRoPjwvZz48L3N2Zz4="); -} - -@-webkit-keyframes lg-right-end { - 0% { - left: 0; - } - 50% { - left: -30px; - } - 100% { - left: 0; - } -} -@-moz-keyframes lg-right-end { - 0% { - left: 0; - } - 50% { - left: -30px; - } - 100% { - left: 0; - } -} -@keyframes lg-right-end { - 0% { - left: 0; - } - 50% { - left: -30px; - } - 100% { - left: 0; - } -} -@-webkit-keyframes lg-left-end { - 0% { - left: 0; - } - 50% { - left: 30px; - } - 100% { - left: 0; - } -} -@-moz-keyframes lg-left-end { - 0% { - left: 0; - } - 50% { - left: 30px; - } - 100% { - left: 0; - } -} -@keyframes lg-left-end { - 0% { - left: 0; - } - 50% { - left: 30px; - } - 100% { - left: 0; - } -} -.lg-outer.lg-right-end .lg-object { - -webkit-animation: lg-right-end 0.3s; - -moz-animation: lg-right-end 0.3s; - animation: lg-right-end 0.3s; - position: relative; -} -.lg-outer.lg-left-end .lg-object { - -webkit-animation: lg-left-end 0.3s; - -moz-animation: lg-left-end 0.3s; - animation: lg-left-end 0.3s; - position: relative; -} - -.lg-toolbar { - z-index: 1080; - left: 0; - position: absolute; - top: 0; - width: 100%; - background-color: rgba(255, 255, 255, 0.45); -} -.lg-toolbar .lg-icon { - color: #bfbfbf; - cursor: pointer; - float: right; - font-size: 24px; - height: 47px; - line-height: 27px; - padding: 10px 0; - text-align: center; - width: 50px; - text-decoration: none !important; - outline: medium none; -} -.lg-close.lg-icon { - /* background-color: #ffffff; */ - /* border-radius: 2px 2px 0 0; */ - /* color: #999; */ - /* cursor: pointer; */ - font-size: 30px; - height: 39px; - line-height: 27px; - padding: 5px 0; - position: absolute; - right: 20px; - text-align: center; - top: 20px; - width: 50px; - /* border: 1px solid #e0e0e0; */ - /* border-bottom: none; */ -} - -.lg-toolbar .lg-icon:hover { - color: #404040; -} -.lg-toolbar .lg-close:after { - content: "\e070"; -} -.lg-toolbar .lg-download:after { - content: "\e0f2"; -} - -.lg-sub-html { - /*background-color: rgba(0, 0, 0, 0.45);*/ - bottom: 0; - color: #404040; - font-size: 16px; - left: 0; - padding: 10px 40px; - position: fixed; - right: 0; - text-align: center; - z-index: 1080; -} -.lg-sub-html h4 { - margin: 0; - font-size: 13px; - font-weight: bold; -} -.lg-sub-html p { - font-size: 12px; - margin: 5px 0 0; -} - -#lg-counter { - color: #999; - display: inline-block; - font-size: 16px; - padding-left: 20px; - padding-top: 12px; - vertical-align: middle; -} - -.lg-toolbar, .lg-prev, .lg-next { - opacity: 1; - -moz-transition: -moz-transform 0.35s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.35s cubic-bezier(0, 0, 0.25, 1) 0s; - transition: -webkit-transform 0.35s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.35s cubic-bezier(0, 0, 0.25, 1) 0s; - transition: transform 0.35s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.35s cubic-bezier(0, 0, 0.25, 1) 0s; -} - -.lg-hide-items .lg-prev { - opacity: 0; - -webkit-transform: translate3d(-10px, 0, 0); - -moz-transform: translate3d(-10px, 0, 0); - transform: translate3d(-10px, 0, 0); -} -.lg-hide-items .lg-next { - opacity: 0; - -webkit-transform: translate3d(10px, 0, 0); - -moz-transform: translate3d(10px, 0, 0); - transform: translate3d(10px, 0, 0); -} -.lg-hide-items .lg-toolbar { - opacity: 0; - -webkit-transform: translate3d(0, -10px, 0); - -moz-transform: translate3d(0, -10px, 0); - transform: translate3d(0, -10px, 0); -} - -body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-object { - -webkit-transform: scale3d(0.5, 0.5, 0.5); - -moz-transform: scale3d(0.5, 0.5, 0.5); - transform: scale3d(0.5, 0.5, 0.5); - opacity: 0; - -moz-transition: -moz-transform 250ms ease 0s, opacity 250ms !important; - transition: -webkit-transform 250ms ease 0s, opacity 250ms !important; - transition: transform 250ms ease 0s, opacity 250ms !important; - -webkit-transform-origin: 50% 50%; - -moz-transform-origin: 50% 50%; - -ms-transform-origin: 50% 50%; - transform-origin: 50% 50%; -} -body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item.lg-complete .lg-object { - -webkit-transform: scale3d(1, 1, 1); - -moz-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - opacity: 1; -} - -.lg-outer .lg-thumb-outer { - background-color: #ffffff; - border-top: 1px solid #e0e0e0; - bottom: 0; - position: absolute; - width: 100%; - z-index: 1080; - max-height: 350px; - -webkit-transform: translate3d(0, 100%, 0); - -moz-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - -moz-transition: -moz-transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s; - transition: -webkit-transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s; - transition: transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s; -} -.lg-outer .lg-thumb-outer.lg-grab .lg-thumb-item { - cursor: -webkit-grab; - cursor: -moz-grab; - cursor: -o-grab; - cursor: -ms-grab; - cursor: grab; -} -.lg-outer .lg-thumb-outer.lg-grabbing .lg-thumb-item { - cursor: move; - cursor: -webkit-grabbing; - cursor: -moz-grabbing; - cursor: -o-grabbing; - cursor: -ms-grabbing; - cursor: grabbing; -} -.lg-outer .lg-thumb-outer.lg-dragging .lg-thumb { - -moz-transition-duration: 0s !important; - transition-duration: 0s !important; -} -.lg-outer.lg-thumb-open .lg-thumb-outer { - -webkit-transform: translate3d(0, 0%, 0); - -moz-transform: translate3d(0, 0%, 0); - transform: translate3d(0, 0%, 0); -} -.lg-outer .lg-thumb { - padding: 10px 0; - height: 100%; - margin-bottom: -5px; - margin-right: auto; - margin-left: auto; -} -.lg-outer .lg-thumb-item { - cursor: pointer; - float: left; - overflow: hidden; - height: 100%; - /*border: 2px solid #FFF;*/ - /*border-radius: 4px;*/ - margin-bottom: 5px; - opacity: 0.3; - position: relative; - background: transparent; - -moz-transition: opacity 0.1s ease; - transition: opacity 0.1s ease; -} -@media (min-width: 1025px) { - .lg-outer .lg-thumb-item { - -moz-transition: border-color 0.25s ease, opacity 0.1s ease; - transition: border-color 0.25s ease, opacity 0.1s ease; - } -} -.lg-outer .lg-thumb-item.active, .lg-outer .lg-thumb-item:hover { - opacity: 1; - /*border-color: #a90707;*/ -} -.lg-outer .lg-thumb-item img { - /*width: 100%; - height: 100%;*/ - width: auto; - height: auto; - max-width: 100%; - max-height: 100%; - margin: auto; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; -} -.lg-outer.lg-has-thumb .lg-item { - padding-bottom: 120px; -} -.lg-outer.lg-can-toggle .lg-item { - padding-bottom: 0; -} -.lg-outer.lg-pull-caption-up .lg-sub-html { - -moz-transition: bottom 0.25s ease; - transition: bottom 0.25s ease; -} -.lg-outer.lg-pull-caption-up.lg-thumb-open .lg-sub-html { - bottom: 100px; -} -.lg-outer .lg-toogle-thumb { - background-color: #ffffff; - border-radius: 2px 2px 0 0; - color: #bfbfbf; - cursor: pointer; - font-size: 24px; - height: 39px; - line-height: 27px; - padding: 5px 0; - position: absolute; - right: 20px; - text-align: center; - top: -39px; - width: 50px; - border: 1px solid #e0e0e0; - border-bottom: none; -} -.lg-outer .lg-toogle-thumb:after { - content: "\e1ff"; -} -.lg-outer .lg-toogle-thumb:hover { - color: #404040; -} - -.lg-outer .lg-video-cont { - display: inline-block; - vertical-align: middle; - max-width: 1140px; - max-height: 100%; - width: 100%; - padding: 0 5px; - z-index: 1; - position: relative; -} -.lg-outer .lg-video { - width: 100%; - height: 0; - padding-bottom: 56.25%; - overflow: hidden; - position: relative; -} -.lg-outer .lg-video .lg-object { - display: inline-block; - position: absolute; - top: 0; - left: 0; - width: 100% !important; - height: 100% !important; -} -.lg-outer .lg-video .lg-video-play { - width: 84px; - height: 59px; - position: absolute; - left: 50%; - top: 50%; - margin-left: -42px; - margin-top: -30px; - z-index: 1080; - cursor: pointer; -} -.lg-outer .lg-has-vimeo .lg-video-play { - background: url("../images/vimeo-play.png") no-repeat scroll 0 0 transparent; -} -.lg-outer .lg-has-vimeo:hover .lg-video-play { - background: url("../images/vimeo-play.png") no-repeat scroll 0 -58px transparent; -} -.lg-outer .lg-has-html5 .lg-video-play { - background: transparent url("../images/video-play.png") no-repeat scroll 0 0; - height: 64px; - margin-left: -32px; - margin-top: -32px; - width: 64px; - opacity: 0.8; -} -.lg-outer .lg-has-html5:hover .lg-video-play { - opacity: 1; -} -.lg-outer .lg-has-youtube .lg-video-play { - background: url("../images/youtube-play.png") no-repeat scroll 0 0 transparent; -} -.lg-outer .lg-has-youtube:hover .lg-video-play { - background: url("../images/youtube-play.png") no-repeat scroll 0 -60px transparent; -} -.lg-outer .lg-video-object { - width: 100% !important; - height: 100% !important; - position: absolute; - top: 0; - left: 0; -} -.lg-outer .lg-has-video .lg-video-object { - visibility: hidden; -} -.lg-outer .lg-has-video.lg-video-palying .lg-object, .lg-outer .lg-has-video.lg-video-palying .lg-video-play { - display: none; -} -.lg-outer .lg-has-video.lg-video-palying .lg-video-object { - visibility: visible; -} - -.lg-progress-bar { - background-color: #333; - height: 5px; - left: 0; - position: absolute; - top: 0; - width: 100%; - z-index: 1080; - opacity: 0; - -moz-transition: opacity 0.08s ease 0s; - transition: opacity 0.08s ease 0s; -} -.lg-progress-bar .lg-progress { - background-color: #a90707; - height: 5px; - width: 0; -} -.lg-progress-bar.lg-start .lg-progress { - width: 100%; -} -.lg-show-autoplay .lg-progress-bar { - opacity: 1; -} - -.lg-autoplay-button:after { - content: "\e01d"; -} -.lg-show-autoplay .lg-autoplay-button:after { - content: "\e01a"; -} - -.lg-outer.lg-css3.lg-zoom-dragging .lg-item.lg-complete.lg-zoomable .lg-img-wrap, .lg-outer.lg-css3.lg-zoom-dragging .lg-item.lg-complete.lg-zoomable .lg-image { - -moz-transition-duration: 0s; - transition-duration: 0s; -} -.lg-outer .lg-item.lg-complete.lg-zoomable .lg-img-wrap { - -moz-transition: -moz-transform 0.3s ease 0s; - transition: -webkit-transform 0.3s ease 0s; - transition: transform 0.3s ease 0s; - -webkit-transform: translate3d(0, 0, 0); - -moz-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - backface-visibility: hidden; -} -.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image { - -webkit-transform: scale3d(1, 1, 1); - -moz-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - -moz-transition: -moz-transform 0.3s ease 0s, opacity 0.15s !important; - transition: -webkit-transform 0.3s ease 0s, opacity 0.15s !important; - transition: transform 0.3s ease 0s, opacity 0.15s !important; - -webkit-transform-origin: 0 0; - -moz-transform-origin: 0 0; - -ms-transform-origin: 0 0; - transform-origin: 0 0; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - backface-visibility: hidden; -} - -#lg-zoom-in:after { - content: "\e311"; -} - -#lg-zoom-out { - opacity: 0.5; - pointer-events: none; -} -#lg-zoom-out:after { - content: "\e312"; -} -.lg-zoomed #lg-zoom-out { - opacity: 1; - pointer-events: auto; -} - -.lg-outer .lg-pager-outer { - bottom: 60px; - left: 0; - position: absolute; - right: 0; - text-align: center; - z-index: 1080; - height: 10px; -} -.lg-outer .lg-pager-outer.lg-pager-hover .lg-pager-cont { - overflow: visible; -} -.lg-outer .lg-pager-cont { - cursor: pointer; - display: inline-block; - overflow: hidden; - position: relative; - vertical-align: top; - margin: 0 5px; -} -.lg-outer .lg-pager-cont:hover .lg-pager-thumb-cont { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - -moz-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); -} -.lg-outer .lg-pager-cont.lg-pager-active .lg-pager { - box-shadow: 0 0 0 2px white inset; -} -.lg-outer .lg-pager-thumb-cont { - background-color: #fff; - color: #FFF; - bottom: 100%; - height: 83px; - left: 0; - margin-bottom: 20px; - margin-left: -60px; - opacity: 0; - padding: 5px; - position: absolute; - width: 120px; - border-radius: 3px; - -moz-transition: opacity 0.15s ease 0s, -moz-transform 0.15s ease 0s; - transition: opacity 0.15s ease 0s, -webkit-transform 0.15s ease 0s; - transition: opacity 0.15s ease 0s, transform 0.15s ease 0s; - -webkit-transform: translate3d(0, 5px, 0); - -moz-transform: translate3d(0, 5px, 0); - transform: translate3d(0, 5px, 0); -} -.lg-outer .lg-pager-thumb-cont img { - width: 100%; - height: 100%; -} -.lg-outer .lg-pager { - background-color: rgba(255, 255, 255, 0.5); - border-radius: 50%; - box-shadow: 0 0 0 8px rgba(255, 255, 255, 0.7) inset; - display: block; - height: 12px; - -moz-transition: box-shadow 0.3s ease 0s; - transition: box-shadow 0.3s ease 0s; - width: 12px; -} -.lg-outer .lg-pager:hover, .lg-outer .lg-pager:focus { - box-shadow: 0 0 0 8px white inset; -} -.lg-outer .lg-caret { - border-left: 10px solid transparent; - border-right: 10px solid transparent; - border-top: 10px dashed; - bottom: -10px; - display: inline-block; - height: 0; - left: 50%; - margin-left: -5px; - position: absolute; - vertical-align: middle; - width: 0; -} - -.lg-fullscreen:after { - content: "\e20c"; -} -.lg-fullscreen-on .lg-fullscreen:after { - content: "\e20d"; -} - -.group { - *zoom: 1; -} - -.group:before, .group:after { - display: table; - content: ""; - line-height: 0; -} - -.group:after { - clear: both; -} - -.lg-outer { - width: 100%; - height: 100%; - position: fixed; - top: 0; - left: 0; - z-index: 1050; - opacity: 0; - -moz-transition: opacity 0.15s ease 0s; - transition: opacity 0.15s ease 0s; -} -@media(max-width: 959px){ - .lg-outer { - cursor: pointer; - } -} -.lg-outer * { - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.lg-outer.lg-visible { - opacity: 1; -} -.lg-outer.lg-css3 .lg-item.lg-prev-slide, .lg-outer.lg-css3 .lg-item.lg-next-slide, .lg-outer.lg-css3 .lg-item.lg-current { - -moz-transition-duration: inherit !important; - transition-duration: inherit !important; - -moz-transition-timing-function: inherit !important; - transition-timing-function: inherit !important; -} -.lg-outer.lg-css3.lg-dragging .lg-item.lg-prev-slide, .lg-outer.lg-css3.lg-dragging .lg-item.lg-next-slide, .lg-outer.lg-css3.lg-dragging .lg-item.lg-current { - -moz-transition-duration: 0s !important; - transition-duration: 0s !important; - opacity: 1; -} -.lg-outer.lg-grab img.lg-object { - cursor: -webkit-grab; - cursor: -moz-grab; - cursor: -o-grab; - cursor: -ms-grab; - cursor: grab; -} -.lg-outer.lg-grabbing img.lg-object { - cursor: move; - cursor: -webkit-grabbing; - cursor: -moz-grabbing; - cursor: -o-grabbing; - cursor: -ms-grabbing; - cursor: grabbing; -} -.lg-outer .lg { - height: 100%; - width: 100%; - position: relative; - overflow: hidden; - margin-left: auto; - margin-right: auto; - max-width: 100%; - max-height: 100%; -} -.lg-outer .lg-inner { - width: 100%; - height: calc(100% - 100px); - position: absolute; - left: 0; - top: 0; - white-space: nowrap; -} -.owl-carousel .owl-nav [class*='owl-']:hover svg { - fill: black; -} -.lg-outer .lg-item { - /*background: url("../images/loading.gif") no-repeat scroll center center transparent;*/ - display: none !important; - -} -.lg-outer .lg-item:after { - content: ''; - position: absolute; - top: 50%; - left: 50%; - margin-top: -16px; - margin-left: -16px; - width: 32px; - height: 32px; - background: transparent; - border-width: 2px; - border-style: solid; - border-color: #ffd300; - border-bottom-color: transparent; - border-radius: 100%; - -webkit-animation: ball-clip-rotate 0.75s linear infinite; - -moz-animation: ball-clip-rotate 0.75s linear infinite; - animation: ball-clip-rotate 0.75s linear infinite; - z-index: 0; -} -.lg-outer.lg-css3 .lg-prev-slide, .lg-outer.lg-css3 .lg-current, .lg-outer.lg-css3 .lg-next-slide { - display: inline-block !important; -} -.lg-outer.lg-css .lg-current { - display: inline-block !important; -} -.lg-outer .lg-item, .lg-outer .lg-img-wrap { - display: inline-block; - text-align: center; - position: absolute; - width: 100%; - height: 100%; - z-index: 1; - background-color: white; -} -.lg-outer .lg-item:before, .lg-outer .lg-img-wrap:before { - content: ""; - display: inline-block; - height: 50%; - width: 1px; - margin-right: -1px; -} -.lg-outer .lg-img-wrap { - top: 0; - bottom: 0; - left: 0; - right: 0; - padding: 10px 5px 40px; -} -.lg-outer .lg-item.lg-complete { - background-image: none; -} -.lg-outer .lg-item.lg-current { - z-index: 1060; -} -.lg-outer .lg-image { - display: inline-block; - vertical-align: middle; - max-width: 100%; - max-height: 100%; - width: auto !important; - height: auto !important; -} -.lg-outer.lg-show-after-load .lg-item .lg-object, .lg-outer.lg-show-after-load .lg-item .lg-video-play { - opacity: 0; - -moz-transition: opacity 0.15s ease 0s; - transition: opacity 0.15s ease 0s; -} -.lg-outer.lg-show-after-load .lg-item.lg-complete .lg-object, .lg-outer.lg-show-after-load .lg-item.lg-complete .lg-video-play { - opacity: 1; -} -.lg-outer .lg-empty-html { - display: none; -} -.lg-outer.lg-hide-download #lg-download { - display: none; -} - -.lg-backdrop { - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 1040; - background-color: #ffffff; - opacity: 0; - -moz-transition: opacity 0.15s ease 0s; - transition: opacity 0.15s ease 0s; -} -.lg-backdrop.in { - opacity: 1; -} - -.lg-css3.lg-no-trans .lg-prev-slide, .lg-css3.lg-no-trans .lg-next-slide, .lg-css3.lg-no-trans .lg-current { - -moz-transition: none 0s ease 0s !important; - transition: none 0s ease 0s !important; -} -.lg-css3.lg-use-css3 .lg-item { - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - backface-visibility: hidden; -} -.lg-css3.lg-use-left .lg-item { - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - backface-visibility: hidden; -} -.lg-css3.lg-fade .lg-item { - opacity: 0; -} -.lg-css3.lg-fade .lg-item.lg-current { - opacity: 1; -} -.lg-css3.lg-fade .lg-item.lg-prev-slide, .lg-css3.lg-fade .lg-item.lg-next-slide, .lg-css3.lg-fade .lg-item.lg-current { - -moz-transition: opacity 0.1s ease 0s; - transition: opacity 0.1s ease 0s; -} -.lg-css3.lg-slide.lg-use-css3 .lg-item { - opacity: 0; -} -.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide { - -webkit-transform: translate3d(-100%, 0, 0); - -moz-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); -} -.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide { - -webkit-transform: translate3d(100%, 0, 0); - -moz-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); -} -.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current { - -webkit-transform: translate3d(0, 0, 0); - -moz-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; -} -.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide, .lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide, .lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current { - -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; - transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; - transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; -} -.lg-css3.lg-slide.lg-use-left .lg-item { - opacity: 0; - position: absolute; - left: 0; -} -.lg-css3.lg-slide.lg-use-left .lg-item.lg-prev-slide { - left: -100%; -} -.lg-css3.lg-slide.lg-use-left .lg-item.lg-next-slide { - left: 100%; -} -.lg-css3.lg-slide.lg-use-left .lg-item.lg-current { - left: 0; - opacity: 1; -} -.lg-css3.lg-slide.lg-use-left .lg-item.lg-prev-slide, .lg-css3.lg-slide.lg-use-left .lg-item.lg-next-slide, .lg-css3.lg-slide.lg-use-left .lg-item.lg-current { - -moz-transition: left 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; - transition: left 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; -} -.default-gallery img, .clients-gallery img, .clients-gallery .clients-gallery--img { - -webkit-filter: grayscale(100%); - -moz-filter: grayscale(100%); - -ms-filter: grayscale(100%); - -o-filter: grayscale(100%); - filter: grayscale(100%); - filter: gray; /* IE 6-9 */ -} -.default-gallery img:hover, .clients-gallery img:hover, .clients-gallery .clients-gallery--img:hover { - -webkit-filter: none; - -moz-filter: none; - -ms-filter: none; - -o-filter: none; - filter: none; - filter: none; /* IE 6-9 */ -} - diff --git a/assets/lightGallery/lightGallery.js b/assets/lightGallery/lightGallery.js deleted file mode 100644 index 05fbac4..0000000 --- a/assets/lightGallery/lightGallery.js +++ /dev/null @@ -1,1823 +0,0 @@ -/** @module lightGallery */ -__PluginManager__.register('lightGallery',function(require, exports, module, global) { - - var $ = require('jQuery'); - - /** - * @memberOf kit - */ - /** ! lightgallery - v1.6.5 - 2017-11-16 - * http://sachinchoolur.github.io/lightGallery/ - * Copyright (c) 2017 Sachin N; Licensed GPLv3 - */ - (function() { - 'use strict'; - - var defaults = { - - mode: 'lg-slide', - - // Ex : 'ease' - cssEasing: 'ease', - - //'for jquery animation' - easing: 'linear', - speed: 600, - height: '100%', - width: '100%', - addClass: '', - startClass: 'lg-start-zoom', - backdropDuration: 150, - hideBarsDelay: 6000, - - useLeft: false, - - closable: true, - loop: true, - escKey: true, - keyPress: true, - controls: true, - slideEndAnimatoin: true, - hideControlOnEnd: false, - mousewheel: true, - - getCaptionFromTitleOrAlt: true, - - // .lg-item || '.lg-sub-html' - appendSubHtmlTo: '.lg-sub-html', - - subHtmlSelectorRelative: false, - - /** - * @desc number of preload slides - * will exicute only after the current slide is fully loaded. - * - * @ex you clicked on 4th image and if preload = 1 then 3rd slide and 5th - * slide will be loaded in the background after the 4th slide is fully loaded.. - * if preload is 2 then 2nd 3rd 5th 6th slides will be preloaded.. ... ... - * - */ - preload: 1, - showAfterLoad: true, - selector: '', - selectWithin: '', - nextHtml: '', - prevHtml: '', - - // 0, 1 - index: false, - - iframeMaxWidth: '100%', - - download: true, - counter: true, - appendCounterTo: '.lg-toolbar', - - swipeThreshold: 50, - enableSwipe: true, - enableDrag: true, - - dynamic: false, - dynamicEl: [], - galleryId: 1 - }; - - /** - * @memberOf {kit.$} - * @memberOf {}kit.$ - */ - function Plugin(element, options) { - - // Current lightGallery element - this.el = element; - - // Current jquery element - this.$el = $(element); - - // lightGallery settings - this.s = $.extend({}, defaults, options); - - // When using dynamic mode, ensure dynamicEl is an array - if (this.s.dynamic && this.s.dynamicEl !== 'undefined' && this.s.dynamicEl.constructor === Array && !this.s.dynamicEl.length) { - throw ('When using dynamic mode, you must also define dynamicEl as an Array.'); - } - - // lightGallery modules - this.modules = {}; - - // false when lightgallery complete first slide; - this.lGalleryOn = false; - - this.lgBusy = false; - - // Timeout function for hiding controls; - this.hideBartimeout = false; - - // To determine browser supports for touch events; - this.isTouch = ('ontouchstart' in document.documentElement); - - // Disable hideControlOnEnd if sildeEndAnimation is true - if (this.s.slideEndAnimatoin) { - this.s.hideControlOnEnd = false; - } - - // Gallery items - if (this.s.dynamic) { - this.$items = this.s.dynamicEl; - } else { - if (this.s.selector === 'this') { - this.$items = this.$el; - } else if (this.s.selector !== '') { - if (this.s.selectWithin) { - this.$items = $(this.s.selectWithin).find(this.s.selector); - } else { - this.$items = this.$el.find($(this.s.selector)); - } - } else { - this.$items = this.$el.children(); - } - } - - // .lg-item - this.$slide = ''; - - // .lg-outer - this.$outer = ''; - - this.init(); - - return this; - } - - Plugin.prototype.init = function() { - - var _this = this; - - // s.preload should not be more than $item.length - if (_this.s.preload > _this.$items.length) { - _this.s.preload = _this.$items.length; - } - - // if dynamic option is enabled execute immediately - var _hash = window.location.hash; - if (_hash.indexOf('lg=' + this.s.galleryId) > 0) { - - _this.index = parseInt(_hash.split('&slide=')[1], 10); - - $('body').addClass('lg-from-hash'); - if (!$('body').hasClass('lg-on')) { - setTimeout(function() { - _this.build(_this.index); - }); - - $('body').addClass('lg-on'); - } - } - - if (_this.s.dynamic) { - - _this.$el.trigger('onBeforeOpen.lg'); - - _this.index = _this.s.index || 0; - - // prevent accidental double execution - if (!$('body').hasClass('lg-on')) { - setTimeout(function() { - _this.build(_this.index); - $('body').addClass('lg-on'); - }); - } - } else { - - // Using different namespace for click because click event should not unbind if selector is same object('this') - _this.$items.on('click.lgcustom', function(event) { - - // For IE8 - try { - event.preventDefault(); - event.preventDefault(); - } catch (er) { - event.returnValue = false; - } - - _this.$el.trigger('onBeforeOpen.lg'); - - _this.index = _this.s.index || _this.$items.index(this); - - // prevent accidental double execution - if (!$('body').hasClass('lg-on')) { - _this.build(_this.index); - $('body').addClass('lg-on'); - } - }); - } - - }; - - Plugin.prototype.build = function(index) { - - var _this = this; - - _this.structure(); - - // module constructor - $.each($.fn.lightGallery.modules, function(key) { - _this.modules[key] = new $.fn.lightGallery.modules[key](_this.el); - }); - - // initiate slide function - _this.slide(index, false, false, false); - - if (_this.s.keyPress) { - _this.keyPress(); - } - - if (_this.$items.length > 1) { - - _this.arrow(); - - setTimeout(function() { - _this.enableDrag(); - _this.enableSwipe(); - }, 50); - - if (_this.s.mousewheel) { - _this.mousewheel(); - } - } else { - _this.$slide.on('click.lg', function() { - _this.$el.trigger('onSlideClick.lg'); - }); - } - - _this.counter(); - - _this.closeGallery(); - - _this.$el.trigger('onAfterOpen.lg'); - - // Hide controllers if mouse doesn't move for some period - _this.$outer.on('mousemove.lg click.lg touchstart.lg', function() { - - _this.$outer.removeClass('lg-hide-items'); - - clearTimeout(_this.hideBartimeout); - - // Timeout will be cleared on each slide movement also - _this.hideBartimeout = setTimeout(function() { - _this.$outer.addClass('lg-hide-items'); - }, _this.s.hideBarsDelay); - - }); - - _this.$outer.trigger('mousemove.lg'); - - }; - - Plugin.prototype.structure = function() { - var list = ''; - var controls = ''; - var i = 0; - var subHtmlCont = ''; - var template; - var _this = this; - - $('body').append('
'); - $('.lg-backdrop').css('transition-duration', this.s.backdropDuration + 'ms'); - - // Create gallery items - for (i = 0; i < this.$items.length; i++) { - list += '
'; - } - - // Create controlls - if (this.s.controls && this.$items.length > 1) { - controls = '
' + - '' + - '' + - '
'; - } - - if (this.s.appendSubHtmlTo === '.lg-sub-html') { - subHtmlCont = '
'; - } - - template = '
' + - '
' + - '
' + list + '
' + - '
' + - '' + - '
' + - controls + - subHtmlCont + - '
' + - '
'; - - $('body').append(template); - this.$outer = $('.lg-outer'); - this.$slide = this.$outer.find('.lg-item'); - - if (this.s.useLeft) { - this.$outer.addClass('lg-use-left'); - - // Set mode lg-slide if use left is true; - this.s.mode = 'lg-slide'; - } else { - this.$outer.addClass('lg-use-css3'); - } - - // For fixed height gallery - _this.setTop(); - $(window).on('resize.lg orientationchange.lg', function() { - setTimeout(function() { - _this.setTop(); - }, 100); - }); - - // add class lg-current to remove initial transition - this.$slide.eq(this.index).addClass('lg-current'); - - // add Class for css support and transition mode - if (this.doCss()) { - this.$outer.addClass('lg-css3'); - } else { - this.$outer.addClass('lg-css'); - - // Set speed 0 because no animation will happen if browser doesn't support css3 - this.s.speed = 0; - } - - this.$outer.addClass(this.s.mode); - - if (this.s.enableDrag && this.$items.length > 1) { - this.$outer.addClass('lg-grab'); - } - - if (this.s.showAfterLoad) { - this.$outer.addClass('lg-show-after-load'); - } - - if (this.doCss()) { - var $inner = this.$outer.find('.lg-inner'); - $inner.css('transition-timing-function', this.s.cssEasing); - $inner.css('transition-duration', this.s.speed + 'ms'); - } - - setTimeout(function() { - $('.lg-backdrop').addClass('in'); - }); - - setTimeout(function() { - _this.$outer.addClass('lg-visible'); - }, this.s.backdropDuration); - - if (this.s.download) { - this.$outer.find('.lg-toolbar').append(''); - } - - // Store the current scroll top value to scroll back after closing the gallery.. - this.prevScrollTop = $(window).scrollTop(); - }; - - // For fixed height gallery - Plugin.prototype.setTop = function() { - if (this.s.height !== '100%') { - var wH = $(window).height(); - var top = (wH - parseInt(this.s.height, 10)) / 2; - var $lGallery = this.$outer.find('.lg'); - if (wH >= parseInt(this.s.height, 10)) { - $lGallery.css('top', top + 'px'); - } else { - $lGallery.css('top', '0px'); - } - } - }; - - // Find css3 support - Plugin.prototype.doCss = function() { - // check for css animation support - var support = function() { - var transition = ['transition', 'MozTransition', 'WebkitTransition', 'OTransition', 'msTransition', 'KhtmlTransition']; - var root = document.documentElement; - var i = 0; - for (i = 0; i < transition.length; i++) { - if (transition[i] in root.style) { - return true; - } - } - }; - - if (support()) { - return true; - } - - return false; - }; - - /** - * @desc Check the given src is video - * @param {String} src - * @return {Object} video type - * Ex:{ youtube : ["//www.youtube.com/watch?v=c0asJgSyxcY", "c0asJgSyxcY"] } - */ - Plugin.prototype.isVideo = function(src, index) { - - var html; - if (this.s.dynamic) { - html = this.s.dynamicEl[index].html; - } else { - html = this.$items.eq(index).attr('data-html'); - } - - if (!src) { - if(html) { - return { - html5: true - }; - } else { - console.error('lightGallery :- data-src is not pvovided on slide item ' + (index + 1) + '. Please make sure the selector property is properly configured. More info - http://sachinchoolur.github.io/lightGallery/demos/html-markup.html'); - return false; - } - } - - var youtube = src.match(/\/\/(?:www\.)?youtu(?:\.be|be\.com)\/(?:watch\?v=|embed\/)?([a-z0-9\-\_\%]+)/i); - var vimeo = src.match(/\/\/(?:www\.)?vimeo.com\/([0-9a-z\-_]+)/i); - var dailymotion = src.match(/\/\/(?:www\.)?dai.ly\/([0-9a-z\-_]+)/i); - var vk = src.match(/\/\/(?:www\.)?(?:vk\.com|vkontakte\.ru)\/(?:video_ext\.php\?)(.*)/i); - - if (youtube) { - return { - youtube: youtube - }; - } else if (vimeo) { - return { - vimeo: vimeo - }; - } else if (dailymotion) { - return { - dailymotion: dailymotion - }; - } else if (vk) { - return { - vk: vk - }; - } - }; - - /** - * @desc Create image counter - * Ex: 1/10 - */ - Plugin.prototype.counter = function() { - if (this.s.counter) { - $(this.s.appendCounterTo).append('
' + (parseInt(this.index, 10) + 1) + ' / ' + this.$items.length + '
'); - } - }; - - /** - * @desc add sub-html into the slide - * @param {Number} index - index of the slide - */ - Plugin.prototype.addHtml = function(index) { - var subHtml = null; - var subHtmlUrl; - var $currentEle; - if (this.s.dynamic) { - if (this.s.dynamicEl[index].subHtmlUrl) { - subHtmlUrl = this.s.dynamicEl[index].subHtmlUrl; - } else { - subHtml = this.s.dynamicEl[index].subHtml; - } - } else { - $currentEle = this.$items.eq(index); - if ($currentEle.attr('data-sub-html-url')) { - subHtmlUrl = $currentEle.attr('data-sub-html-url'); - } else { - subHtml = $currentEle.attr('data-sub-html'); - if (this.s.getCaptionFromTitleOrAlt && !subHtml) { - subHtml = $currentEle.attr('title') || $currentEle.find('img').first().attr('alt'); - } - } - } - - if (!subHtmlUrl) { - if (typeof subHtml !== 'undefined' && subHtml !== null) { - - // get first letter of subhtml - // if first letter starts with . or # get the html form the jQuery object - var fL = subHtml.substring(0, 1); - if (fL === '.' || fL === '#') { - if (this.s.subHtmlSelectorRelative && !this.s.dynamic) { - subHtml = $currentEle.find(subHtml).html(); - } else { - subHtml = $(subHtml).html(); - } - } - } else { - subHtml = ''; - } - } - - if (this.s.appendSubHtmlTo === '.lg-sub-html') { - - if (subHtmlUrl) { - this.$outer.find(this.s.appendSubHtmlTo).load(subHtmlUrl); - } else { - this.$outer.find(this.s.appendSubHtmlTo).html(subHtml); - } - - } else { - - if (subHtmlUrl) { - this.$slide.eq(index).load(subHtmlUrl); - } else { - this.$slide.eq(index).append(subHtml); - } - } - - // Add lg-empty-html class if title doesn't exist - if (typeof subHtml !== 'undefined' && subHtml !== null) { - if (subHtml === '') { - this.$outer.find(this.s.appendSubHtmlTo).addClass('lg-empty-html'); - } else { - this.$outer.find(this.s.appendSubHtmlTo).removeClass('lg-empty-html'); - } - } - - this.$el.trigger('onAfterAppendSubHtml.lg', [index]); - }; - - /** - * @desc Preload slides - * @param {Number} index - index of the slide - */ - Plugin.prototype.preload = function(index) { - var i = 1; - var j = 1; - for (i = 1; i <= this.s.preload; i++) { - if (i >= this.$items.length - index) { - break; - } - - this.loadContent(index + i, false, 0); - } - - for (j = 1; j <= this.s.preload; j++) { - if (index - j < 0) { - break; - } - - this.loadContent(index - j, false, 0); - } - }; - - /** - * @desc Load slide content into slide. - * @param {Number} index - index of the slide. - * @param {Boolean} rec - if true call loadcontent() function again. - * @param {Boolean} delay - delay for adding complete class. it is 0 except first time. - */ - Plugin.prototype.loadContent = function(index, rec, delay) { - - var _this = this; - var _hasPoster = false; - var _$img; - var _src; - var _poster; - var _srcset; - var _sizes; - var _html; - var getResponsiveSrc = function(srcItms) { - var rsWidth = []; - var rsSrc = []; - for (var i = 0; i < srcItms.length; i++) { - var __src = srcItms[i].split(' '); - - // Manage empty space - if (__src[0] === '') { - __src.splice(0, 1); - } - - rsSrc.push(__src[0]); - rsWidth.push(__src[1]); - } - - var wWidth = $(window).width(); - for (var j = 0; j < rsWidth.length; j++) { - if (parseInt(rsWidth[j], 10) > wWidth) { - _src = rsSrc[j]; - break; - } - } - }; - - if (_this.s.dynamic) { - - if (_this.s.dynamicEl[index].poster) { - _hasPoster = true; - _poster = _this.s.dynamicEl[index].poster; - } - - _html = _this.s.dynamicEl[index].html; - _src = _this.s.dynamicEl[index].src; - - if (_this.s.dynamicEl[index].responsive) { - var srcDyItms = _this.s.dynamicEl[index].responsive.split(','); - getResponsiveSrc(srcDyItms); - } - - _srcset = _this.s.dynamicEl[index].srcset; - _sizes = _this.s.dynamicEl[index].sizes; - - } else { - - if (_this.$items.eq(index).attr('data-poster')) { - _hasPoster = true; - _poster = _this.$items.eq(index).attr('data-poster'); - } - - _html = _this.$items.eq(index).attr('data-html'); - _src = _this.$items.eq(index).attr('href') || _this.$items.eq(index).attr('data-src'); - - if (_this.$items.eq(index).attr('data-responsive')) { - var srcItms = _this.$items.eq(index).attr('data-responsive').split(','); - getResponsiveSrc(srcItms); - } - - _srcset = _this.$items.eq(index).attr('data-srcset'); - _sizes = _this.$items.eq(index).attr('data-sizes'); - - } - - //if (_src || _srcset || _sizes || _poster) { - - var iframe = false; - if (_this.s.dynamic) { - if (_this.s.dynamicEl[index].iframe) { - iframe = true; - } - } else { - if (_this.$items.eq(index).attr('data-iframe') === 'true') { - iframe = true; - } - } - - var _isVideo = _this.isVideo(_src, index); - if (!_this.$slide.eq(index).hasClass('lg-loaded')) { - if (iframe) { - _this.$slide.eq(index).prepend('
'); - } else if (_hasPoster) { - var videoClass = ''; - if (_isVideo && _isVideo.youtube) { - videoClass = 'lg-has-youtube'; - } else if (_isVideo && _isVideo.vimeo) { - videoClass = 'lg-has-vimeo'; - } else { - videoClass = 'lg-has-html5'; - } - - _this.$slide.eq(index).prepend('
'); - - } else if (_isVideo) { - _this.$slide.eq(index).prepend('
'); - _this.$el.trigger('hasVideo.lg', [index, _src, _html]); - } else { - _this.$slide.eq(index).prepend('
'); - } - - _this.$el.trigger('onAferAppendSlide.lg', [index]); - - _$img = _this.$slide.eq(index).find('.lg-object'); - if (_sizes) { - _$img.attr('sizes', _sizes); - } - - if (_srcset) { - _$img.attr('srcset', _srcset); - try { - picturefill({ - elements: [_$img[0]] - }); - } catch (e) { - console.warn('lightGallery :- If you want srcset to be supported for older browser please include picturefil version 2 javascript library in your document.'); - } - } - - if (this.s.appendSubHtmlTo !== '.lg-sub-html') { - _this.addHtml(index); - } - - _this.$slide.eq(index).addClass('lg-loaded'); - } - - _this.$slide.eq(index).find('.lg-object').on('load.lg error.lg', function() { - - // For first time add some delay for displaying the start animation. - var _speed = 0; - - // Do not change the delay value because it is required for zoom plugin. - // If gallery opened from direct url (hash) speed value should be 0 - if (delay && !$('body').hasClass('lg-from-hash')) { - _speed = delay; - } - - setTimeout(function() { - _this.$slide.eq(index).addClass('lg-complete'); - _this.$el.trigger('onSlideItemLoad.lg', [index, delay || 0]); - }, _speed); - - }); - - // @todo check load state for html5 videos - if (_isVideo && _isVideo.html5 && !_hasPoster) { - _this.$slide.eq(index).addClass('lg-complete'); - } - - if (rec === true) { - if (!_this.$slide.eq(index).hasClass('lg-complete')) { - _this.$slide.eq(index).find('.lg-object').on('load.lg error.lg', function() { - _this.preload(index); - }); - } else { - _this.preload(index); - } - } - - //} - }; - - /** - * @desc slide function for lightgallery - ** Slide() gets call on start - ** ** Set lg.on true once slide() function gets called. - ** Call loadContent() on slide() function inside setTimeout - ** ** On first slide we do not want any animation like slide of fade - ** ** So on first slide( if lg.on if false that is first slide) loadContent() should start loading immediately - ** ** Else loadContent() should wait for the transition to complete. - ** ** So set timeout s.speed + 50 - <=> ** loadContent() will load slide content in to the particular slide - ** ** It has recursion (rec) parameter. if rec === true loadContent() will call preload() function. - ** ** preload will execute only when the previous slide is fully loaded (images iframe) - ** ** avoid simultaneous image load - <=> ** Preload() will check for s.preload value and call loadContent() again accoring to preload value - ** loadContent() <====> Preload(); - - * @param {Number} index - index of the slide - * @param {Boolean} fromTouch - true if slide function called via touch event or mouse drag - * @param {Boolean} fromThumb - true if slide function called via thumbnail click - * @param {String} direction - Direction of the slide(next/prev) - */ - Plugin.prototype.slide = function(index, fromTouch, fromThumb, direction) { - - var _prevIndex = this.$outer.find('.lg-current').index(); - var _this = this; - - // Prevent if multiple call - // Required for hsh plugin - if (_this.lGalleryOn && (_prevIndex === index)) { - return; - } - - var _length = this.$slide.length; - var _time = _this.lGalleryOn ? this.s.speed : 0; - - if (!_this.lgBusy) { - - if (this.s.download) { - var _src; - if (_this.s.dynamic) { - _src = _this.s.dynamicEl[index].downloadUrl !== false && (_this.s.dynamicEl[index].downloadUrl || _this.s.dynamicEl[index].src); - } else { - _src = _this.$items.eq(index).attr('data-download-url') !== 'false' && (_this.$items.eq(index).attr('data-download-url') || _this.$items.eq(index).attr('href') || _this.$items.eq(index).attr('data-src')); - - } - - if (_src) { - $('#lg-download').attr('href', _src); - _this.$outer.removeClass('lg-hide-download'); - } else { - _this.$outer.addClass('lg-hide-download'); - } - } - - this.$el.trigger('onBeforeSlide.lg', [_prevIndex, index, fromTouch, fromThumb]); - - _this.lgBusy = true; - - clearTimeout(_this.hideBartimeout); - - // Add title if this.s.appendSubHtmlTo === lg-sub-html - if (this.s.appendSubHtmlTo === '.lg-sub-html') { - - // wait for slide animation to complete - setTimeout(function() { - _this.addHtml(index); - }, _time); - } - - this.arrowDisable(index); - - if (!direction) { - if (index < _prevIndex) { - direction = 'prev'; - } else if (index > _prevIndex) { - direction = 'next'; - } - } - - if (!fromTouch) { - - // remove all transitions - _this.$outer.addClass('lg-no-trans'); - - this.$slide.removeClass('lg-prev-slide lg-next-slide'); - - if (direction === 'prev') { - - //prevslide - this.$slide.eq(index).addClass('lg-prev-slide'); - this.$slide.eq(_prevIndex).addClass('lg-next-slide'); - } else { - - // next slide - this.$slide.eq(index).addClass('lg-next-slide'); - this.$slide.eq(_prevIndex).addClass('lg-prev-slide'); - } - - // give 50 ms for browser to add/remove class - setTimeout(function() { - _this.$slide.removeClass('lg-current'); - - //_this.$slide.eq(_prevIndex).removeClass('lg-current'); - _this.$slide.eq(index).addClass('lg-current'); - - // reset all transitions - _this.$outer.removeClass('lg-no-trans'); - }, 50); - } else { - - this.$slide.removeClass('lg-prev-slide lg-current lg-next-slide'); - var touchPrev; - var touchNext; - if (_length > 2) { - touchPrev = index - 1; - touchNext = index + 1; - - if ((index === 0) && (_prevIndex === _length - 1)) { - - // next slide - touchNext = 0; - touchPrev = _length - 1; - } else if ((index === _length - 1) && (_prevIndex === 0)) { - - // prev slide - touchNext = 0; - touchPrev = _length - 1; - } - - } else { - touchPrev = 0; - touchNext = 1; - } - - if (direction === 'prev') { - _this.$slide.eq(touchNext).addClass('lg-next-slide'); - } else { - _this.$slide.eq(touchPrev).addClass('lg-prev-slide'); - } - - _this.$slide.eq(index).addClass('lg-current'); - } - - if (_this.lGalleryOn) { - setTimeout(function() { - _this.loadContent(index, true, 0); - }, this.s.speed + 50); - - setTimeout(function() { - _this.lgBusy = false; - _this.$el.trigger('onAfterSlide.lg', [_prevIndex, index, fromTouch, fromThumb]); - }, this.s.speed); - - } else { - _this.loadContent(index, true, _this.s.backdropDuration); - - _this.lgBusy = false; - _this.$el.trigger('onAfterSlide.lg', [_prevIndex, index, fromTouch, fromThumb]); - } - - _this.lGalleryOn = true; - - if (this.s.counter) { - $('#lg-counter-current').text(index + 1); - } - - } - _this.index = index; - - }; - - /** - * @desc Go to next slide - * @param {Boolean} fromTouch - true if slide function called via touch event - */ - Plugin.prototype.goToNextSlide = function(fromTouch) { - var _this = this; - var _loop = _this.s.loop; - if (fromTouch && _this.$slide.length < 3) { - _loop = false; - } - - if (!_this.lgBusy) { - if ((_this.index + 1) < _this.$slide.length) { - _this.index++; - _this.$el.trigger('onBeforeNextSlide.lg', [_this.index]); - _this.slide(_this.index, fromTouch, false, 'next'); - } else { - if (_loop) { - _this.index = 0; - _this.$el.trigger('onBeforeNextSlide.lg', [_this.index]); - _this.slide(_this.index, fromTouch, false, 'next'); - } else if (_this.s.slideEndAnimatoin && !fromTouch) { - _this.$outer.addClass('lg-right-end'); - setTimeout(function() { - _this.$outer.removeClass('lg-right-end'); - }, 400); - } - } - } - }; - - /** - * @desc Go to previous slide - * @param {Boolean} fromTouch - true if slide function called via touch event - */ - Plugin.prototype.goToPrevSlide = function(fromTouch) { - var _this = this; - var _loop = _this.s.loop; - if (fromTouch && _this.$slide.length < 3) { - _loop = false; - } - - if (!_this.lgBusy) { - if (_this.index > 0) { - _this.index--; - _this.$el.trigger('onBeforePrevSlide.lg', [_this.index, fromTouch]); - _this.slide(_this.index, fromTouch, false, 'prev'); - } else { - if (_loop) { - _this.index = _this.$items.length - 1; - _this.$el.trigger('onBeforePrevSlide.lg', [_this.index, fromTouch]); - _this.slide(_this.index, fromTouch, false, 'prev'); - } else if (_this.s.slideEndAnimatoin && !fromTouch) { - _this.$outer.addClass('lg-left-end'); - setTimeout(function() { - _this.$outer.removeClass('lg-left-end'); - }, 400); - } - } - } - }; - - Plugin.prototype.keyPress = function() { - var _this = this; - if (this.$items.length > 1) { - $(window).on('keyup.lg', function(e) { - if (_this.$items.length > 1) { - if (e.keyCode === 37) { - e.preventDefault(); - _this.goToPrevSlide(); - } - - if (e.keyCode === 39) { - e.preventDefault(); - _this.goToNextSlide(); - } - } - }); - } - - $(window).on('keydown.lg', function(e) { - if (_this.s.escKey === true && e.keyCode === 27) { - e.preventDefault(); - if (!_this.$outer.hasClass('lg-thumb-open')) { - _this.destroy(); - } else { - _this.$outer.removeClass('lg-thumb-open'); - } - } - }); - }; - - Plugin.prototype.arrow = function() { - var _this = this; - this.$outer.find('.lg-prev').on('click.lg', function() { - _this.goToPrevSlide(); - }); - - this.$outer.find('.lg-next').on('click.lg', function() { - _this.goToNextSlide(); - }); - }; - - Plugin.prototype.arrowDisable = function(index) { - - // Disable arrows if s.hideControlOnEnd is true - if (!this.s.loop && this.s.hideControlOnEnd) { - if ((index + 1) < this.$slide.length) { - this.$outer.find('.lg-next').removeAttr('disabled').removeClass('disabled'); - } else { - this.$outer.find('.lg-next').attr('disabled', 'disabled').addClass('disabled'); - } - - if (index > 0) { - this.$outer.find('.lg-prev').removeAttr('disabled').removeClass('disabled'); - } else { - this.$outer.find('.lg-prev').attr('disabled', 'disabled').addClass('disabled'); - } - } - }; - - Plugin.prototype.setTranslate = function($el, xValue, yValue) { - // jQuery supports Automatic CSS prefixing since jQuery 1.8.0 - if (this.s.useLeft) { - $el.css('left', xValue); - } else { - $el.css({ - transform: 'translate3d(' + (xValue) + 'px, ' + yValue + 'px, 0px)' - }); - } - }; - - Plugin.prototype.touchMove = function(startCoords, endCoords) { - - var distance = endCoords - startCoords; - - if (Math.abs(distance) > 15) { - // reset opacity and transition duration - this.$outer.addClass('lg-dragging'); - - // move current slide - this.setTranslate(this.$slide.eq(this.index), distance, 0); - - // move next and prev slide with current slide - this.setTranslate($('.lg-prev-slide'), -this.$slide.eq(this.index).width() + distance, 0); - this.setTranslate($('.lg-next-slide'), this.$slide.eq(this.index).width() + distance, 0); - } - }; - - Plugin.prototype.touchEnd = function(distance) { - var _this = this; - - // keep slide animation for any mode while dragg/swipe - if (_this.s.mode !== 'lg-slide') { - _this.$outer.addClass('lg-slide'); - } - - this.$slide.not('.lg-current, .lg-prev-slide, .lg-next-slide').css('opacity', '0'); - - // set transition duration - setTimeout(function() { - _this.$outer.removeClass('lg-dragging'); - if ((distance < 0) && (Math.abs(distance) > _this.s.swipeThreshold)) { - _this.goToNextSlide(true); - } else if ((distance > 0) && (Math.abs(distance) > _this.s.swipeThreshold)) { - _this.goToPrevSlide(true); - } else if (Math.abs(distance) < 5) { - - // Trigger click if distance is less than 5 pix - _this.$el.trigger('onSlideClick.lg'); - } - - _this.$slide.removeAttr('style'); - }); - - // remove slide class once drag/swipe is completed if mode is not slide - setTimeout(function() { - if (!_this.$outer.hasClass('lg-dragging') && _this.s.mode !== 'lg-slide') { - _this.$outer.removeClass('lg-slide'); - } - }, _this.s.speed + 100); - - }; - - Plugin.prototype.enableSwipe = function() { - var _this = this; - var startCoords = 0; - var endCoords = 0; - var isMoved = false; - - if (_this.s.enableSwipe && _this.doCss()) { - - _this.$slide.on('touchstart.lg', function(e) { - if (!_this.$outer.hasClass('lg-zoomed') && !_this.lgBusy) { - e.preventDefault(); - _this.manageSwipeClass(); - startCoords = e.originalEvent.targetTouches[0].pageX; - } - }); - - _this.$slide.on('touchmove.lg', function(e) { - if (!_this.$outer.hasClass('lg-zoomed')) { - e.preventDefault(); - endCoords = e.originalEvent.targetTouches[0].pageX; - _this.touchMove(startCoords, endCoords); - isMoved = true; - } - }); - - _this.$slide.on('touchend.lg', function() { - if (!_this.$outer.hasClass('lg-zoomed')) { - if (isMoved) { - isMoved = false; - _this.touchEnd(endCoords - startCoords); - } else { - _this.$el.trigger('onSlideClick.lg'); - } - } - }); - } - - }; - - Plugin.prototype.enableDrag = function() { - var _this = this; - var startCoords = 0; - var endCoords = 0; - var isDraging = false; - var isMoved = false; - if (_this.s.enableDrag && _this.doCss()) { - _this.$slide.on('mousedown.lg', function(e) { - // execute only on .lg-object - if (!_this.$outer.hasClass('lg-zoomed')) { - if ($(e.target).hasClass('lg-object') || $(e.target).hasClass('lg-video-play')) { - e.preventDefault(); - - if (!_this.lgBusy) { - _this.manageSwipeClass(); - startCoords = e.pageX; - isDraging = true; - - // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723 - _this.$outer.scrollLeft += 1; - _this.$outer.scrollLeft -= 1; - - // * - - _this.$outer.removeClass('lg-grab').addClass('lg-grabbing'); - - _this.$el.trigger('onDragstart.lg'); - } - - } - } - }); - - $(window).on('mousemove.lg', function(e) { - if (isDraging) { - isMoved = true; - endCoords = e.pageX; - _this.touchMove(startCoords, endCoords); - _this.$el.trigger('onDragmove.lg'); - } - }); - - $(window).on('mouseup.lg', function(e) { - if (isMoved) { - isMoved = false; - _this.touchEnd(endCoords - startCoords); - _this.$el.trigger('onDragend.lg'); - } else if ($(e.target).hasClass('lg-object') || $(e.target).hasClass('lg-video-play')) { - _this.$el.trigger('onSlideClick.lg'); - } - - // Prevent execution on click - if (isDraging) { - isDraging = false; - _this.$outer.removeClass('lg-grabbing').addClass('lg-grab'); - } - }); - - } - }; - - Plugin.prototype.manageSwipeClass = function() { - var _touchNext = this.index + 1; - var _touchPrev = this.index - 1; - if (this.s.loop && this.$slide.length > 2) { - if (this.index === 0) { - _touchPrev = this.$slide.length - 1; - } else if (this.index === this.$slide.length - 1) { - _touchNext = 0; - } - } - - this.$slide.removeClass('lg-next-slide lg-prev-slide'); - if (_touchPrev > -1) { - this.$slide.eq(_touchPrev).addClass('lg-prev-slide'); - } - - this.$slide.eq(_touchNext).addClass('lg-next-slide'); - }; - - Plugin.prototype.mousewheel = function() { - var _this = this; - _this.$outer.on('mousewheel.lg', function(e) { - - if (!e.deltaY) { - return; - } - - if (e.deltaY > 0) { - _this.goToPrevSlide(); - } else { - _this.goToNextSlide(); - } - - e.preventDefault(); - }); - - }; - - Plugin.prototype.closeGallery = function() { - - var _this = this; - var mousedown = false; - this.$outer.find('.lg-close').on('click.lg', function() { - _this.destroy(); - }); - - if (_this.s.closable) { - - // If you drag the slide and release outside gallery gets close on chrome - // for preventing this check mousedown and mouseup happened on .lg-item or lg-outer - _this.$outer.on('mousedown.lg', function(e) { - - if ($(e.target).is('.lg-outer') || $(e.target).is('.lg-item ') || $(e.target).is('.lg-img-wrap')) { - mousedown = true; - } else { - mousedown = false; - } - - }); - - _this.$outer.on('mouseup.lg', function(e) { - - if ($(e.target).is('.lg-outer') || $(e.target).is('.lg-item ') || $(e.target).is('.lg-img-wrap') && mousedown) { - if (!_this.$outer.hasClass('lg-dragging')) { - _this.destroy(); - } - } - - }); - - } - - }; - - Plugin.prototype.destroy = function(d) { - - var _this = this; - - if (!d) { - _this.$el.trigger('onBeforeClose.lg'); - $(window).scrollTop(_this.prevScrollTop); - } - - - /** - * if d is false or undefined destroy will only close the gallery - * plugins instance remains with the element - * - * if d is true destroy will completely remove the plugin - */ - - if (d) { - if (!_this.s.dynamic) { - // only when not using dynamic mode is $items a jquery collection - this.$items.off('click.lg click.lgcustom'); - } - - $.removeData(_this.el, 'lightGallery'); - } - - // Unbind all events added by lightGallery - this.$el.off('.lg.tm'); - - // Distroy all lightGallery modules - $.each($.fn.lightGallery.modules, function(key) { - if (_this.modules[key]) { - _this.modules[key].destroy(); - } - }); - - this.lGalleryOn = false; - - clearTimeout(_this.hideBartimeout); - this.hideBartimeout = false; - $(window).off('.lg'); - $('body').removeClass('lg-on lg-from-hash'); - - if (_this.$outer) { - _this.$outer.removeClass('lg-visible'); - } - - $('.lg-backdrop').removeClass('in'); - - setTimeout(function() { - if (_this.$outer) { - _this.$outer.remove(); - } - - $('.lg-backdrop').remove(); - - if (!d) { - _this.$el.trigger('onCloseAfter.lg'); - } - - }, _this.s.backdropDuration + 50); - }; - - $.fn.lightGallery = function(options) { - return this.each(function() { - if (!$.data(this, 'lightGallery')) { - $.data(this, 'lightGallery', new Plugin(this, options)); - } else { - try { - $(this).data('lightGallery').init(); - } catch (err) { - console.error('lightGallery has not initiated properly'); - } - } - }); - }; - - $.fn.lightGallery.modules = {}; - - })(); - - - /** ! lg-thumbnail - v1.1.0 - 2017-08-08 - * http://sachinchoolur.github.io/lightGallery - * Copyright (c) 2017 Sachin N; Licensed GPLv3 - */ - - (function() { - - 'use strict'; - - var defaults = { - thumbnail: true, - - animateThumb: true, - currentPagerPosition: 'middle', - - thumbWidth: 100, - thumbHeight: '80px', - thumbContHeight: 100, - thumbMargin: 5, - - exThumbImage: false, - showThumbByDefault: true, - toogleThumb: true, - pullCaptionUp: true, - - enableThumbDrag: true, - enableThumbSwipe: true, - swipeThreshold: 50, - - loadYoutubeThumbnail: true, - youtubeThumbSize: 1, - - loadVimeoThumbnail: true, - vimeoThumbSize: 'thumbnail_small', - - loadDailymotionThumbnail: true - }; - - var Thumbnail = function(element) { - - // get lightGallery core plugin data - this.core = $(element).data('lightGallery'); - - // extend module default settings with lightGallery core settings - this.core.s = $.extend({}, defaults, this.core.s); - - this.$el = $(element); - this.$thumbOuter = null; - this.thumbOuterWidth = 0; - this.thumbTotalWidth = (this.core.$items.length * (this.core.s.thumbWidth + this.core.s.thumbMargin)); - this.thumbIndex = this.core.index; - - if (this.core.s.animateThumb) { - this.core.s.thumbHeight = '100%'; - } - - // Thumbnail animation value - this.left = 0; - - this.init(); - - return this; - }; - - Thumbnail.prototype.init = function() { - var _this = this; - if (this.core.s.thumbnail && this.core.$items.length > 1) { - if (this.core.s.showThumbByDefault) { - setTimeout(function(){ - _this.core.$outer.addClass('lg-thumb-open'); - }, 700); - } - - if (this.core.s.pullCaptionUp) { - this.core.$outer.addClass('lg-pull-caption-up'); - } - - this.build(); - if (this.core.s.animateThumb && this.core.doCss()) { - if (this.core.s.enableThumbDrag) { - this.enableThumbDrag(); - } - - if (this.core.s.enableThumbSwipe) { - this.enableThumbSwipe(); - } - - this.thumbClickable = false; - } else { - this.thumbClickable = true; - } - - this.toogle(); - this.thumbkeyPress(); - } - }; - - Thumbnail.prototype.build = function() { - var _this = this; - var thumbList = ''; - var vimeoErrorThumbSize = ''; - var $thumb; - var html = '
' + - '
' + - '
' + - '
'; - - switch (this.core.s.vimeoThumbSize) { - case 'thumbnail_large': - vimeoErrorThumbSize = '640'; - break; - case 'thumbnail_medium': - vimeoErrorThumbSize = '200x150'; - break; - case 'thumbnail_small': - vimeoErrorThumbSize = '100x75'; - } - - _this.core.$outer.addClass('lg-has-thumb'); - - _this.core.$outer.find('.lg').append(html); - - _this.$thumbOuter = _this.core.$outer.find('.lg-thumb-outer'); - _this.thumbOuterWidth = _this.$thumbOuter.width(); - - if (_this.core.s.animateThumb) { - _this.core.$outer.find('.lg-thumb').css({ - width: _this.thumbTotalWidth + 'px', - position: 'relative' - }); - } - - if (this.core.s.animateThumb) { - _this.$thumbOuter.css('height', _this.core.s.thumbContHeight + 'px'); - } - - function getThumb(src, thumb, index) { - var isVideo = _this.core.isVideo(src, index) || {}; - var thumbImg; - var vimeoId = ''; - - if (isVideo.youtube || isVideo.vimeo || isVideo.dailymotion) { - if (isVideo.youtube) { - if (_this.core.s.loadYoutubeThumbnail) { - thumbImg = '//img.youtube.com/vi/' + isVideo.youtube[1] + '/' + _this.core.s.youtubeThumbSize + '.jpg'; - } else { - thumbImg = thumb; - } - } else if (isVideo.vimeo) { - if (_this.core.s.loadVimeoThumbnail) { - thumbImg = '//i.vimeocdn.com/video/error_' + vimeoErrorThumbSize + '.jpg'; - vimeoId = isVideo.vimeo[1]; - } else { - thumbImg = thumb; - } - } else if (isVideo.dailymotion) { - if (_this.core.s.loadDailymotionThumbnail) { - thumbImg = '//www.dailymotion.com/thumbnail/video/' + isVideo.dailymotion[1]; - } else { - thumbImg = thumb; - } - } - } else { - thumbImg = thumb; - } - - thumbList += '
'; - vimeoId = ''; - } - - if (_this.core.s.dynamic) { - for (var i = 0; i < _this.core.s.dynamicEl.length; i++) { - getThumb(_this.core.s.dynamicEl[i].src, _this.core.s.dynamicEl[i].thumb, i); - } - } else { - _this.core.$items.each(function(i) { - - if (!_this.core.s.exThumbImage) { - getThumb($(this).attr('href') || $(this).attr('data-src'), $(this).find('img').attr('data-src') || $(this).find('img').attr('src'), i); - } else { - getThumb($(this).attr('href') || $(this).attr('data-src'), $(this).attr(_this.core.s.exThumbImage), i); - } - - }); - } - - _this.core.$outer.find('.lg-thumb').html(thumbList); - - $thumb = _this.core.$outer.find('.lg-thumb-item'); - - // Load vimeo thumbnails - $thumb.each(function() { - var $this = $(this); - var vimeoVideoId = $this.attr('data-vimeo-id'); - - if (vimeoVideoId) { - $.getJSON('//www.vimeo.com/api/v2/video/' + vimeoVideoId + '.json?callback=?', { - format: 'json' - }, function(data) { - $this.find('img').attr('src', data[0][_this.core.s.vimeoThumbSize]); - }); - } - }); - - // manage active class for thumbnail - $thumb.eq(_this.core.index).addClass('active'); - _this.core.$el.on('onBeforeSlide.lg.tm', function() { - $thumb.removeClass('active'); - $thumb.eq(_this.core.index).addClass('active'); - }); - - $thumb.on('click.lg touchend.lg', function() { - var _$this = $(this); - setTimeout(function() { - - // In IE9 and bellow touch does not support - // Go to slide if browser does not support css transitions - if ((_this.thumbClickable && !_this.core.lgBusy) || !_this.core.doCss()) { - _this.core.index = _$this.index(); - _this.core.slide(_this.core.index, false, true, false); - } - }, 50); - }); - - _this.core.$el.on('onBeforeSlide.lg.tm', function() { - _this.animateThumb(_this.core.index); - }); - - $(window).on('resize.lg.thumb orientationchange.lg.thumb', function() { - setTimeout(function() { - _this.animateThumb(_this.core.index); - _this.thumbOuterWidth = _this.$thumbOuter.width(); - }, 200); - }); - - }; - - Thumbnail.prototype.setTranslate = function(value) { - // jQuery supports Automatic CSS prefixing since jQuery 1.8.0 - this.core.$outer.find('.lg-thumb').css({ - transform: 'translate3d(-' + (value) + 'px, 0px, 0px)' - }); - }; - - Thumbnail.prototype.animateThumb = function(index) { - var $thumb = this.core.$outer.find('.lg-thumb'); - if (this.core.s.animateThumb) { - var position; - switch (this.core.s.currentPagerPosition) { - case 'left': - position = 0; - break; - case 'middle': - position = (this.thumbOuterWidth / 2) - (this.core.s.thumbWidth / 2); - break; - case 'right': - position = this.thumbOuterWidth - this.core.s.thumbWidth; - } - this.left = ((this.core.s.thumbWidth + this.core.s.thumbMargin) * index - 1) - position; - if (this.left > (this.thumbTotalWidth - this.thumbOuterWidth)) { - this.left = this.thumbTotalWidth - this.thumbOuterWidth; - } - - if (this.left < 0) { - this.left = 0; - } - - if (this.core.lGalleryOn) { - if (!$thumb.hasClass('on')) { - this.core.$outer.find('.lg-thumb').css('transition-duration', this.core.s.speed + 'ms'); - } - - if (!this.core.doCss()) { - $thumb.animate({ - left: -this.left + 'px' - }, this.core.s.speed); - } - } else { - if (!this.core.doCss()) { - $thumb.css('left', -this.left + 'px'); - } - } - - this.setTranslate(this.left); - - } - }; - - // Enable thumbnail dragging and swiping - Thumbnail.prototype.enableThumbDrag = function() { - - var _this = this; - var startCoords = 0; - var endCoords = 0; - var isDraging = false; - var isMoved = false; - var tempLeft = 0; - - _this.$thumbOuter.addClass('lg-grab'); - - _this.core.$outer.find('.lg-thumb').on('mousedown.lg.thumb', function(e) { - if (_this.thumbTotalWidth > _this.thumbOuterWidth) { - // execute only on .lg-object - e.preventDefault(); - startCoords = e.pageX; - isDraging = true; - - // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723 - _this.core.$outer.scrollLeft += 1; - _this.core.$outer.scrollLeft -= 1; - - // * - _this.thumbClickable = false; - _this.$thumbOuter.removeClass('lg-grab').addClass('lg-grabbing'); - } - }); - - $(window).on('mousemove.lg.thumb', function(e) { - if (isDraging) { - tempLeft = _this.left; - isMoved = true; - endCoords = e.pageX; - - _this.$thumbOuter.addClass('lg-dragging'); - - tempLeft = tempLeft - (endCoords - startCoords); - - if (tempLeft > (_this.thumbTotalWidth - _this.thumbOuterWidth)) { - tempLeft = _this.thumbTotalWidth - _this.thumbOuterWidth; - } - - if (tempLeft < 0) { - tempLeft = 0; - } - - // move current slide - _this.setTranslate(tempLeft); - - } - }); - - $(window).on('mouseup.lg.thumb', function() { - if (isMoved) { - isMoved = false; - _this.$thumbOuter.removeClass('lg-dragging'); - - _this.left = tempLeft; - - if (Math.abs(endCoords - startCoords) < _this.core.s.swipeThreshold) { - _this.thumbClickable = true; - } - - } else { - _this.thumbClickable = true; - } - - if (isDraging) { - isDraging = false; - _this.$thumbOuter.removeClass('lg-grabbing').addClass('lg-grab'); - } - }); - - }; - - Thumbnail.prototype.enableThumbSwipe = function() { - var _this = this; - var startCoords = 0; - var endCoords = 0; - var isMoved = false; - var tempLeft = 0; - - _this.core.$outer.find('.lg-thumb').on('touchstart.lg', function(e) { - if (_this.thumbTotalWidth > _this.thumbOuterWidth) { - e.preventDefault(); - startCoords = e.originalEvent.targetTouches[0].pageX; - _this.thumbClickable = false; - } - }); - - _this.core.$outer.find('.lg-thumb').on('touchmove.lg', function(e) { - if (_this.thumbTotalWidth > _this.thumbOuterWidth) { - e.preventDefault(); - endCoords = e.originalEvent.targetTouches[0].pageX; - isMoved = true; - - _this.$thumbOuter.addClass('lg-dragging'); - - tempLeft = _this.left; - - tempLeft = tempLeft - (endCoords - startCoords); - - if (tempLeft > (_this.thumbTotalWidth - _this.thumbOuterWidth)) { - tempLeft = _this.thumbTotalWidth - _this.thumbOuterWidth; - } - - if (tempLeft < 0) { - tempLeft = 0; - } - - // move current slide - _this.setTranslate(tempLeft); - - } - }); - - _this.core.$outer.find('.lg-thumb').on('touchend.lg', function() { - if (_this.thumbTotalWidth > _this.thumbOuterWidth) { - - if (isMoved) { - isMoved = false; - _this.$thumbOuter.removeClass('lg-dragging'); - if (Math.abs(endCoords - startCoords) < _this.core.s.swipeThreshold) { - _this.thumbClickable = true; - } - - _this.left = tempLeft; - } else { - _this.thumbClickable = true; - } - } else { - _this.thumbClickable = true; - } - }); - - }; - - Thumbnail.prototype.toogle = function() { - var _this = this; - if (_this.core.s.toogleThumb) { - _this.core.$outer.addClass('lg-can-toggle'); - _this.$thumbOuter.append(''); - _this.core.$outer.find('.lg-toogle-thumb').on('click.lg', function() { - _this.core.$outer.toggleClass('lg-thumb-open'); - }); - } - }; - - Thumbnail.prototype.thumbkeyPress = function() { - var _this = this; - $(window).on('keydown.lg.thumb', function(e) { - if (e.keyCode === 38) { - e.preventDefault(); - _this.core.$outer.addClass('lg-thumb-open'); - } else if (e.keyCode === 40) { - e.preventDefault(); - _this.core.$outer.removeClass('lg-thumb-open'); - } - }); - }; - - Thumbnail.prototype.destroy = function() { - if (this.core.s.thumbnail && this.core.$items.length > 1) { - $(window).off('resize.lg.thumb orientationchange.lg.thumb keydown.lg.thumb'); - this.$thumbOuter.remove(); - this.core.$outer.removeClass('lg-has-thumb'); - } - }; - - $.fn.lightGallery.modules.Thumbnail = Thumbnail; - - })(); - - return module.exports = $.fn.lightGallery; -}); diff --git a/assets/lightGallery/lightgallery-2.9.0.tgz b/assets/lightGallery/lightgallery-2.9.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d0ed422366bb5ec6869f56104ec48b60ec8328a4 GIT binary patch literal 1259149 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

Hi!C4-Db0# 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%0A6n56@E8LFU%nIPxm~jQD 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�J;ae5EGkdSy-9^=kF|34+PN=eOiPlD{N>PyUwt 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Д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 z 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 M4C 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�g$m2$}~-*Qg%NYYfT^FT2FY)en?X<(EkEZ8!k9OeYp`Ij4#* zTN>iBAyupSq;x#XtkZ2n0MgjM)*rW)BV1L&296Vg`=K_?r%M(5*5Kg9Jc$gD>2E*h zG9f8t)vMbPfjcf>O}%UK2WuMLPbIvK{VLr@MI&~KD-VeVc*4RIC(Esru7VGrzY>UR zsT$g6x=(YW@~FdVZrkEti!h>oi}ox0B)c2GZXQA0`=}d2Q(?f;WD_EC#;4_U0t}`T z12!tKWI*J&t&{@HUI$3=f#ss9XrLY1u+dDLblD>A9It*U#KOmqJ|7EJD}2KH3-DkL zP;!(nnEyCHr|AzmkF*BI{0|GO#J&b0`iHt*Y{>BI!>aYblF6w+mevglX@9Zz-mGj%ca>^9 z!zB(Vyf6y7a5I6lo0xPo74u%`h9{)3@#@78H6*==B*-J4r})8dPZJ50g-B{dL(AAh zr-bI=yUIYkO7T=2Bma{Yr_NxX%v5;qvC{b*U6AUmq$JQN`ME+n`d^YFslZ#C!=X zfK22YbiBaK5vZ-}_sAa<7Nm)u<^&62&=}lnl`mH{uM1eY%L#|d@3Rb%Pq#*4jTflz zWd$9kTywR(sI_$i4H4L|KD(#7y5_#1cUE+^CDMT&v+Fy0%fZcMtQS-I9=C=*=J|VZ z={cU>5A(eUuH4FVHp|Cj%GH-oVHvH_h`cy2#%m`zMkZeWMoicHjve$*;*M2F$S|!1 zsdTOlLzp&4?c``$jo(qKnXCrsa+;mysHe}znCoOGRJT|^F5fxrv^op=q3#5+ zhcBuJsO&42t77t^a#RBPC>s?Bwr5Wpnt0bq`6G8HQV3}o-Om^&*0pZ8lz~7};JErN z*d5=vW|R0bw6ewMo7z^{^D0VP04ckfQir$j%D_w^Ba5%>aHu9}xs$@r#w!a@@YxIn zKFvr#P*k+L9O?3j-Z?!bt5XL=oj*^dSB_m_8V~bBFUn zzx=FY65b}qC}O zI6gshv@E|1_p{xd9sku{i&>}Bg-!u$1ZQY#!|R_IXjlV1kcbl+ow%g!l{L8Rl8760 zw2NX?FOJ#ln4zpH?b4_sLS)vIGH6hmxUPz8F%GfQx5HJXk|yYm)nRN`%w^8+aDuX& z?#=Nos8pGX6+1IRs%|?B_39cH*7|)QbhJ%0X0=sz3Y0<&SLkUNGY#!7EZ?9}P)fD4 z!WcPV;JBJ2#YGM15cEhf6mQ4IWDMnKvMwn71kGEP@s*XTqn8VR`rn z9MuF$Oq-jBPfF38VpB*HLp-K)Nct!d6F!%pYldPX;6Kpk^p*? zTc8N*&@C2AjbDJpM>!XpZar5Fg^JW)pTl(RUmP6O>xrQez}U@TiS&!YsDY9AvtV{KGu`V@FgtF6Ks7_H9)tO7x0fw@PPL`ACOSlj7&O@^bbVu&bSsIBCrGu}7(zk`lm}jok01RieceCICCop)L2X4f z;vtgO^dNLD3`fd3ZRH)A7#)?-V+-Nl4_^4l-xE5fR5y1$xHo+qI+bK{ijU~g@mv#6 z6ehb-p@SA(1KY=)R46^|KdB@r3@M;=A#{_)uNh3w!1J%Uyvtj5OAZ}&zpOqi`Pd`o?vVLMl zbc*%8>?QV%d8_1E7Gd%dc;O02ryqyO$EPLUBtB6h&d1I*T)iBlwgW>-@+h)Zjw=qS zSK*}KkdxJP0v!H`QIjn=#%4JmPuD=w76sYc{C&=snc1{FTIOg#IL8K;_Po<2L8hMv zQ~eXmlYUBjzVKG=tG3Le^Sx|$dsnL&wOC}_T)R++Dx7k`>}KP%XyJ zoq7Rc;pU+-s9B>2>=ZA?2_-(qt;4X34w6Yw%HU z0$<)1-~PCCKZxN;jm^HPk%~zOpBjz+r6y$?zd(v_facGNKa^_?UB>TCY0A+z3edy{ zL_ip-!!iGzj;1J80GM9++Oe@1AzS{P$y-8XL5geq>n(?(<@n|Dz5rc$f>MJzGr+%m zL5rHaU1`V00b&)3YSY8RlK$&=X+@hf=$DC`+tGlU1kk4Gzd&NhFx0B{n|o*4X&?h|oRN{piq2 zLdrCP4My#5wTW*La`f}&5kf;%3c56sU!>~3vEav@Nxg)9B@8*?K24*tSn&)TS_a

hL2)ms*eX+9QXQYIWh znh&2++f3PdBJx_t0dJTNu_^JMu3J2H{e05QICJ3jVvzNiK;nZ~5@p_XQ8LyJK9LA) zg9_iX>rV+@8y^Qel?WQ6VbX1M;bY;6FCzeJWNc|PBjn&5EEsn7(X&h|#8@x&9F-e= zny;sgVgYZK4Sq|l5h)rMa5CzId%(A7*kE3N!_I|Tn5O-|5sq!PUed+n?6eK%0AG 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

0{F;r{q=SlG)0Fm11(Re=h%W4qs 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

Cf%{?{ncP&;F_pVuz{!N-EL_K3?r9#RkyJG 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

30Us_(PK5~c zitJUIHNhVdL!*VNS<`((h%^~&M&e3=>duT1n+~u$8ftM}!|sZS>xjLjY2Fy@F3jAX zGK*0qBe-GExQD}%RmUoi5+y?IliV_Fo0e#%dp#QJs&(vzZ9}n?JmMPk@IOTHhKXW^ zPN}BPA42w4NXq$lBZ(bkyj{cA_#p@;&C+C0-~NA#n3{E2u1!phu=>G`6Vozj#K@^M z@o5Jg_oj?UjONU#qQo}>(7sm-enFS4Zw~JpQR}>7oS}5#t7BzgpOwOtB*H~qzGChu z1PoubY(!nt+97|3fEoGo}|j>mLFy4Y@rBFKJh>3-0!Bv>RbgLO?5#Tlps^%;4H8kJ(ftZab0-dUuw**A;HEX47Msa+Q$)0|%C3E>!a zB1>`i@|0-lSQ(8WaFG&PY{ZYWL}W{v&PPRoLvNBuU=(Z=7Allr%(F!Xs(l#SZS6DF z6kEeGWX(_-;^WA63E4FE&NXLv9Ws4$!BCdfBAIq+1uH5Vp#Q8P8eXtSq1o10+h zZQeX-vOigC6M^eCGs1tg{Tlw|dg=QW#-9Hp1syc~gSKV$58)C>s=^ue#`NXSBS>SD} z-bm4Z%sM<#rTp?xmGXNyXy(XNoIxinw!6WS_w)URv8uXvXhFp^9EN7{G)`lKmIO2C zBtbT`Yl;a8aG(;V=wJ~SxsVCuC7x|-PWX0Mrdo zLSrQ3u;fO@+O%w0sP1{Bs6ACv|xPpi3iH*6(U^v~rYGMsfW?TMNw9(`?sIO&_%!wfV>hBK!w zvli;P=U$G_H;>DnU)Gn=P3TSN^z$L++F{ArV<#Ifv zS#0ahl?I^wWV61hU9h1y?PN7>OK&e_V`H%bHnAgH3oo!*EfP}^D802*!b_b4XfftQ zx?9^ET+_7*?@+d3X z`se@p&*zW$oR7w@M~9P*>G2Eq|HGr@;b=OY%-`QRS=>1to!`h9ckkZ){Ik#2tl#f$ ze!l(Ly{)zXwYB~E-ObI;hR@r@ax`~Sxo$sq;j@-V%s#YyH;Z?CpF!`SI**=^p357q`Cr+pRlyHr)Rf z^D)Pt<>J;q)^E*5r|_2h>agkjcy{Riy2a1_p8Kr7@9#a%vj6A(y$5gMkBi>=TSwOJ zf%Rl-u>QvV@!k`;pRSxZ^Q{wSz6I+2?fPeq7=Gr-=5Tu$%Pd45iIhbO^6;r@tm%)n27B234<=F=w! zZp?vyZ3mzr2D~1jEmW4K(pNrEZ{O7-%yHf+J(z z)1ZVMs%tBs?ma&5fd^F^f?d1qu-?~&XZO$||J4ETQ4uP2U~gRSJ^LLXYL_1@0pK51c8kLx#s}XaUrN$8nF=+>?Y`C4%bC=N-f-s z7r2c_`+nksZra>a5bKrJ!(efhba(&9k=hmZ?qAE=fqQz0Q&2;TlUuNbIRVLu_T=m6Zme5%q-5Bui@ zYX9~njm#)ENvCO(#$$ORA&sJbt1o+Ds~`BS21)vT&&$|FkI#KL@)d`Wm%bAn*q1N* z@_tVZkUq=`0%F?M!0+25vTgou=0Fm!V0S9{W(33hL{4mYQCm6Exo4iN60*|{+*dYK zj0i|Sz_K5X(Y*mM#HYXzySv_89}ZuS-5idGzLS&T`oi_NfF75FGJF`_y|C}JV-w!! zk#k?9AQ|4!<6d@-Ka@=zN>2elPXPhXsdj|a3=QyZr%IcM4tVZ!`)UM~%wxi1vv=G+ z-}|y34gvBB9fCBLCPLqEbI>rYWKZ7@-^Tgdec#Loul6%P8F;9F=f3Ve_7M8EVGyeu ze~2QU-E~-TH%JWjbgh8%C^wW2e8eHnlte&nAG};>b7*BC^KzB4HZY#BY$`@^*5d$7n7l*%Jzy?>2I$QO|F(QA7>&^Ego#MAc*Zc5 z=fKN354lN+Nm|n$d5rN7>G6y{Ru;pjU^eY%=}4G3++3)TCA@A=Gn=rMjVCv7q6eil zJcCQRghR$R3gy)U>>&N>JzxRP=?uUL*2=%!CgdjZI+87(*=^G;s_$Cqp z|IQ_W5b)u*Jwot)VkGT^3L4@t`RB9PRPax=XChT5w_gq<)>3wCS;7v$AApmBAHQ<@ z_~O?D!lwYj8_v%8%F~6NSa#;w-spuuD^Pl$>^;2ifB$y)01Uo(n5@JHoan~@is zb@5t{gJdUG#7dkL<{5vG`HjkC2#Trr@qs5Xcuc%d3t1Ach=f%DXpd(3RJizwqPxo8{9i9!VO3+vi(BPQ(Z# zsb2PVtC*W{wrq>|h6LTMJ{iH=JV3m9=|`C45t0Tm=C*D4_AFxalicMt?a~)92O;2j z-j1K5sp3hdwa+-9ALJ0r2jI?6U-bl2Z*v8L$Gl6bK?YiJpTpsbPTKFsU7#GBwkTiE zhYp0)I>Tn%Qr_{az9~>yF)&v1ZN*g(T=~F%@tr?uJKx<8P&N`0NZzOAE)w<>q8l(7 z``2INl8mdAF?@>!%|LRrieiJRk zfXfB6DbB;`J-%Fk9&*_iLsn#7vF!^WC&eKr*){ac7hi4Ai6-%gKjegRHw*}@@Q3x+ z?&sGixopx-MLCMJUFVe@(wgt5?)OiDg>F#Pi;p_eY ziliKyGi-exW--YLdnMq)3TZcyTT~nIS!|bPF^sdIDQ2%pkc@>MKVg^#((i|c{wqi( z{=@Sm*sOfyVuH}OjJP;jP@GZ`QNW=p;di%RGeJs@=Mng*Zydl`4rz2s!e{Q$0`Tw3 zSQSwv9+z#2gd{7>Ycpp`&Hb#Wg;_^U-!o5tY~I7Pw~Nz$E=B*(KpKxI;|G0ajWfu` zvXd~*n+R24(}1J*27ANHfzf!*Ch17v@F)8%+<-3}vwa)Y%6EN7?TvmJ%l&L1lr~Xw z1-`v=L(d|#@4DGq5S{l@ul-l+pSoV-g}`6*JY|Nr+(PgF&_F$bT1xy$KfaKg<9PD$ zkv*BnT0D#MQ??DSIBp_z+pWg^Y`FLEqL<0Xz9}viPrp?*B6YRfC(OMqVaZ~7zuQDm z)GC#F0#Rrnm3B+FLQ)}m2&xFaSd4#uj&ln`Z| zvNYe>aAi9rosZ`$BYvAyBBAGu`8d+uD9qy-ICXD7g_eW7GmqrPh`?g^^c7b*jp7^q zp8;w*Rn%J^J{7-u15bYmPv$xYD2m?1RZ2^QfSg*2HBeJw^gNTvL-ChP#m0aUc;HfsSKpBi|^WA z8Z`^w&4#4IU%A8Er}CQj4Bd;k{-%e)vM`f3Js$dj1Ve~TBd?l}6^prFPw_~C}LJ9Gkzj7!3wkb0c< zWT=4QP{>qRIcYN8>KW#|#|=gAgvI$j5v=-*3|mnMjr@pHykh#@QvoNMvB=n4awA(? z^VGw~shxYDfs=Y$Ou8ok4CqO}5pNFSEEb z&|yuFcBJ#*7@~vR96#+ve)MAygmMsB|HwYQ40Cm$nShJwb}kCoFbbY}z@{c41HTFX zyXVw&q_1itz#v7rOJL5u}zz?kQJe0$;a7l#6;vH!}w6Kzoi&rBhb_dBiT`ZUE3OZ zh{!b3o148h(-?Ykm!|Q(WnoFF!pX2*usn^q!HxOq&TVDEBIiOp!%aUBZlyQ2^jBr&M8I>~kRf)WriLHc&Pq06U-x9+0TO~>k0=*FziLr#6j>8)$Q`u{r>^%? zh*F;Id&mFYJCClz%VB0D3b_%lG2Y^Fh;J0}!bPj5Z@AkJZII9*?q<`EXmds9e+C9) z--lNS-B$$m`@WCx2(S5PPVh@&=pOfnTEWc*zeu?I z5W286yHXp!&07JsL%C!;8pmLpAY?7svrA-+%T{?omm(&Q5u_$A;URFY5xkCT0_HK_ zsnr@7k}UfHOM;_5dfly|Q5h|MV<5SpYi}UA+Gnz97)_I0dHtA~qRmt=7c1?Al97m12 z85ZcGz^?IHrl)|YDL4Gv%vblqpO2%lXU`+R^MsScZ1sfT;|Y+I*RZ-LS()&m|9i7g zz%8omQPFnK-{Oxy#Vi5lGY~i>=z@iX;$@7mu;Q%JdX~gh$-My~9{)9D6`u6&ufO-J z9YhVTg`8P52n1&G1qPRFt3aH{Ah> z$--wcCkxL8g2@}wcWi2345B*gVbErg(FpA$GB|N40^PF)w*r$1zk15Kb;%seaq679 zn=sVILnG*(;K9DCsG%ZlDJpibj6K{y0ML&jl!){vNR1ajt^`Z|-rK(@6f(N~Xl6>C zedi|TBbxdb-{npog=AyJyPoXbkA}W4dXduq(7?Bh%yLQ?kMH|q6tRRyb6xg?;zb)UR4gz{HsaKJe63)_n$=7J-Kgut9?-JkcyD3av^woRuRfZUU#aX#cIP9h0+n^7K*c@5ez&6 zFQ}fMBdGgZy&SLo(7y{Bjdy#c&}{CF4?6dQX09rX0bFD!bF9iaq(yfADv_Zmf1oip z@Bc;2{~!6QK@K>`5XwRxvg|6P&d`TmshEwS{Jgr+MTr0qtPBFpNkmBv*2bD&!41e`Q>b)_VGKc=L~Xw+Reuo>*=So z+H*gjK3rR}2r)l7{@I=0`#v|$AzaKyMKjD(AzL?U4wt7KTpLa{LdSGZqa*_AG*0;h%!Cn^z5-Wm=llgeUg9ll%yZ|I;;*`_T2;U zg--Wj(WiY%IFqjXg$V1|=u4Y6_matt7ypR&m`8O(vDau2XUueI>)~h@ndaCd)YKdw zOw!ZO86RkPC3b1VK5X?!KN#nL@emmCP#@2V7O;-DcHT^BMIStd%*;LQm$gd~ipcst zqC;ENmeMhqQEn%=Zy! zRdb&!)$cQJ^fcUTUg&=kg??7Xs1F>TI`i=esc-bnu-R@mz7LlGe-5sMxm}>pBSDl3 zoW_bfaD~c?I?!|4L`3$9Z&*hmVaWFhuKht60dWdXUQDTGyD}YU;lZsu7TP`xMrO-W z&)u;xcmP5`y}tn(Y@q@6s3&Jw($iXtmBoE>gFL!|6x8>yHPhbx6}i^XY2|kv-?$5W zV{<u1!~t%p2VIA$C(SjNn$!%!^JI{)!DuE-6< zSdWvE@~TjGCkYkPfFDEAHZ1sV5PB;;h$HcqP$GwA=l6-nkD(N)aww`c8bR!%>^V5_ zJ9`0ZUpxWw|72Af6D@x^#9<{XX)Xt|m!bAKm7zbhfF0`86Y>5bk?yG=eiFrLG?kc| zR1BGg_ZPSPFoWwV5w0C=!}6=#SA(#X1L#o!W<7EX0M9jL}c9o5Khz*$bqJq zEiNX{oj`^$mf9&zM1;{UsjWkWtHe4JkEM~y331p;Fbx^)da2+Dr?ROd^fTwNTbng4k@h1>Kbvw}W} zZ5l>-U#LigE?8uWhBEjVoglbd0Mwp~3mP#IF5mr%lt8n~fDB)y{1Pu}4%biJAE)rg z43kZ$E3;F&@0i3(#0a&4^uuPcD_%?R#>p{nK#rNKz>k_0Hy@Osor9nJM?yPj_Q{(N zfN5L@}CCGZMmTj5tnpt1#Rg`J?#%vH|vRkW}G95Nx{bBZCU!@*7VhiLdF ziByd-(-mqn0+kg>KTF`Rlb*x`AY8hyxF8|7F>bYp{Wd)+Y)^2A4>d{XfNv-~UI$l5 z+!>a~{LBIPGq7uI-zRVpYaf>i`BAYv+@oS`!kD_fm#X(915Beo$zpM`OA%LpfQec~ zw6bnpNHI*&`WQk=Sc5bWECXqGqa$=>5+9~}T`alqS(ZW?sMNQaGs_O~bCkvZ^? z|KWbwQ(+1DcpP{LitYTg!Ya1yBpYmGgjMiF8}lXuta;G{)~Djma5N?fI{5&$JVTu% zV_hjQKZ_c)NBvPe2H(yB&hLg`l^))QNXM9vmCs7N1eKN+;k8RVz`OzcHLKDVv!8{A zjtk%=Q26SdNL_928C0R#boutURNX`v&wr5=?^*okm)vYqN$p}3e88=~>TTi1!K@u{ z<3x#>=3XXy8IAT$_m)59lozf*)AFaAG6uep3$Ox5am9-&NS0s$#1kjMBNT+@wNbK zF+cI0(_{ja_-$O~BN=wzVyo)tkG_VO_0np4hY+XypRK(9Rz5X~G7D2i&K&5Gqb_8~ z`h{5_HB^a{wKaVu*l!Q0y%OiaM{@J*3b=OU3P5-@D1*?hTvduLMVrl_D`=kW$=tql z8_97o$7<7!WPd>#0oiR>+%wZcBQ|B z8Hl=QRGL-+>e1nVouCqg-zG*mF`{J-O<%uVf49ww?8UcQhrSn&){GDm?FcHn+H<#9 zy}%$Zn-8OG?k`sgpPZ{_iNsh(iC4N7^s;?5Cbxgd+BD`lq%TcrL%-- zDTLuzcNJR))3W2?KcZ`YVVc(h(}v-k4zdqYfC29BCE?Oo{P{tSqp6m9|B95LvrZQJ z4|2)i&cPxF=(C-K>~k;qD<@$lz=^=yZ(x!qu>?<2iOCeLW#KuliuRn4cuP5x?E4PK zrOSB0HDlLKM}HwA+*!eBk$2%MAZ~$ z4u@(GoK}Y7Em=b!4l>+`<1y}##FPSAy9;XIF8uMf51gW}#61?z5>)d{4{>@ltuh^x zSu6sVZW8-Ggqa3*6T{XlUAtld@;8P()P&}doNtDfJ9&r+vWm=C{bII@b;6L2g~}nD}dY+E*sOB9|zYNo4=zVv#zJ6l>ldB#zsQGX5jONOKyr ziJtrp)|Kx)6+1b!YV-^qPKB>d%?-eo0_eWP z*=h+@2c_sOEB5a|z*U`ocZPCh8eV7LcAXIQ;DFZ`rc^;qdALI>@BY6U%~k=HbudRD zP&I{s_`M@BAi3yciphaae@QX=&q?q~*a0gd1+s`Evn)OziP}R4M(Ji{Gat@+1hXuO zFulmC8&^)lkj3P2{Q9f3gyQ2Ek%TCN#3+Q~gxeeH9c)%R7==(IwteRO_$iCix);;6 zNK}uLeNMAGI=Ko)^_m{4cms+CZ=^Woa~a-I?K7r%;K{|DX#ePC(-X=7G9%ZJv*Liy z2=>)p%9rE`+mm2d_DtS|BLWiIyIy43N-SdD#z_jI2M%QN!lw&}9k~ z6ci|iI^5)(^lcAVyZ&!gbuSX69EGXZ=7WDun^wuG?ECtELU)C(H+D|_SQf5sZpVR-wwKg6nj#keDN&o zwsL5`0RgL3R0tm093E+IVey}qg1ZOj&hV>-ip5r7Uo=l=y2`+9*Za;NrA|syQ@Mamvs0CfBSIz=dba(FB2tjTDV{G z-cyk>>b0a~liO9d+2!q_b+*j`ak)b6d;o!`I6k$|5PPc_QwAnv@q1}YIf$t#Zubbs zr@4r-gu{ar5~B^0G&|-1)2vz5y=f0TiLxnE!s5+@q|Svm4fSNzKiRLaY^d2Jz$Ow;)UC9Y!oZBm%J227epo6lXrE3w3xpO$ym2!orZP zLVZUAo%d8oojCi5GDbY;jv{o$iRKdrqNXyEK^nj#v(DrD;6FpYsV*=9{i|R0ZeekD z51?n1@e^_2VTyp54xz9Igg0Ie<2Ila;t2eURKVQ4p~|}XfgOy()vU#vmAu>&Bkt}d z@0&lL#ZvOv9-*d=L@@B0PBCmn??gWiuHMQ`G6(5KIhq2_%yO4#MX9jH7}AKznr#Is zs1U)E`mJ;1eMGIgOdL8JR{Iagtl&vVQN_V5J$RfFbM;j(R#Q&-vYzLx<4u|?9Eq2&#VlbZZd8wo zHpr76BtJ7F)5Dg0LJ)7b|EEt!WRH9Fe>H>v1J%YqiX^jYxU~k=Q-a@3< z#ZZ!JOr~iW$B=X^3uhIV@!aB2;Hl*Z7i?zK_TGw;8AnANVu72l(yb_W2Y!gFK|Je; zMu9I0Yqnlc!@7PvkB?E3W4g4wepBeu%SsFty0s33l)|x$;2`|@6T?=9ex~0w)iM&Y zpP(y649Q(=(}cAV+YRe1$$O_V&D!nBV~ne`O5cbh8m*2kFq&UMa-!NiPSld-vx&k2 z%#(4MXtEK{5XPXJfjklIMo}Qemxu)m-?;2yV=!X>Ok`tgs^T9Iuio`i@KVQyZ%|8$ z^(PMgKla{yy^SMD9Nb4Ksr74s77kK}-A!H1L$Wz7S+Xd*MOfmBC0YYGb1A-BO~JoSaF7~MjetJOSO?hvUG9I zc3+1=8|+|BDvzJj=exUCo*%-(%YPO2N|NM4JF%17F|-qtWMI01Yf{U1rIX@SrbQpZ zeipqJ@y_mg8=qrdY3_NNDXOcMS3xFu%2%?X-9(RF<0Eh}bG)yvAa_i2i__gu0Ff5E z{ORR(`8!{>%b)WuZ+e}Fn1szFzw_>i)y!AnnGb{v?d5yokp7F>6jyZCTt5CPn__s^ zQ&*;I_RQ!-irf^p!uBoeIn3RE`lk2=`{4&qtZlm=;xR!UsVqdb*%X5{^sUJ0u1YiG z;##et`R*DZcXmZAiP&y;$KCCwd$HY)xa-smPT_z4miJ%<`blu7zOzd%qqm;y?A&@n zM1ozz~n3iLxWo0a4 zV~gl^WBG-c6t4$=${Hcd=HOXqTgx`ik1ch>bXR#WUipx1%N1b>qWmHWf_BqO z%z>l1$Y}~4%egjsf$9=%hV=q$W8tJ{9mTeJD+K@HpT@3i^ljYN1_$FVs)3&?9 znmTY@MgEoHJNp*8&IXqq*26ioWOL_xZUP=X2&bK>Dc~XbSveiQJeUJAMNt&0ok4yQ z&LHKUuud2u%rU!t;IjTeJ{ot(efPFZ7@$coN^KHHLzA6dmIQByZKsM#LPVwf^x5rlH z&A53{HpFt-6)apT#4Pd3nY z;}<&5KY&Y|x`_MDLEL|PuHl^j#Wl(0xJCfR)|I)2VGE-U0h%v-g|jQQB#ryLOL(ye zL#IZ4b3mFGakSE1u){3$I3yq+5Okrjtq+?@eOSaAKtwAmS?$=YqtgaSg7-HUH*I4$ z5T|Q75Sr_tY18q3#E8JLJ)l#u7n#}_xAShjm~OfMhG#;ohGI896T%HnH*8y-N%IlI z_2-|`UMiyatUDoU-)psMC@0I0;b;?%*FxYVExgX7{rf4Dfb1um8~)+#IY@AQ0RArg zAC|iTb2x`fH=k|2IGnP}(swzuYsH3t@3qb-aJ70~OuOc@ty(H);T_6SpM;Npz9q)( zKxPo9X!PvsLp$3y97JPkfziKl??YReMUQ(Fe@#TfeI{(%CiY(#z0k|Yzqkj`J(XgRqP&eoey?9tTD2d8f3cs}JwDcA~mIxiHRlU9PO@|I%B^Z4t&HMTIr(R8c^iP63a*+@l;Uvy!Q`&e8J=%I`Rl`Qc;96{9R%S{N zWuUR_o{_DaNLq`1fz>TcqC#c#6&T+ThstPMw%2rZA1Y(2!HnFfc3QkW4otOkgk78N zs*&6lgwm|r43Ix-ij6NSMxD@mdP$ckC`>cjjJP@!zhf_0%8a)5n(n1E&b6-6siXlp z*O?M?i&$8h=R4nfiAog*`8&mmX%jyyCSh29y&)rXM??QwdZCzC1QwQWuMMzYQk^Qmho3Bt*o9khqm-;;q5^4A=&3*pN)Gy31)?_H+?;gI?$V<2nOGra z>E_tX0>b0JdS@{k-~VOE8k$WI-b_KhWSbo5$4xI54K+o61?CXOwiI9nI`MQ}q1J8X z-EDEM*o!v4)w1yx`)u%@bxJ|J|TJTNsx8wK91uCWCt<32K}FaU4y)$|9b#a z0V4s+%unmV`F1A~-b7DIgEgRI2iiDx>3JP$;7 zMEFB>^KWLBaM&dMw7fmoe)`Lz#3@0Az}yVm5=3TvOT`YVcfAHa>IUW_E&RGDbXq;( zU6w>*&57ozxIWp32tazE-`-cnk(J1y*yiHn2dysJiKQO#&VnZGW9mZ$v|~tUQNzYV;U#EA z`-qM`vn@_u6I(4|mo90SUOegDgf?$d;E7>)F*e*=9MZJ~yDYM1jij#VlWN+dKFY9FJprTcAS3I5~|oNmDC#NFLEyVMAE z*uF|@-Y^FqF(ao3o&sH%QWCFYbEuA?tTQzFk0!aOKMW)1zzCOO>B#JLNkKcp0g>b? z`H!ZB@mNd4P5~9@0%M&K?Kf|{X6VwN+b z79;fQ;~&>x2&<2SfPc0p4Pbrn9JeLdpiE)3VlZ|!%X1T&UdYbr($1a|)LI-FU)IQS zUYs`tiC~BbiZ;Fc7`zM)X&X$1_&U9W?5m}TKHhU(rnTD3VuD-hW_;(d`F*9~T zM4$}H=|eL_o8@h61xVAlbP{pM`xdc((BOC6ql-1f54e1GOcy|fwO{<)9k9=F0%H98 zL_>Lc6^;FK5v0u8FE2SXs_5GH>+w3bD1jrdF8f;LNO9iT^^fy^4IofJW39@U5r&gpdGt;A13hEGQaoH^pNX1z7 zvhvBEdnz2ef|RW*(x)0-;IH9xUyu_yTjBxTorh@GU5jSEfsmlBScLi6NLgv}5M6-d z;ur-EbnF)B&~x3PWkdKxTLAJJ`C8-=mH#yV%S4bxQz;%tk0(fZdl@;1hNEWbTMspp z23HN|BGAi8A@f;~QbTgH?2k0Ia2AU0S@RU>zo_#L1szh(u+V~X7RDhm)O$KDk6x1p zTKP`;B0N{@-P=)t$#!<`{*|;AcmDbq-@~uhWP|(q`o;h8|EFh>jz6Z;Y*^&eE2O+WhwJR`P$`zWeRw*4DS*ZbG@ut=r$; z{SN;9Dy^@1R`oKipetVrXOo^p{rlhK`E>mxtLnU*U*EpnyMB}x+4b$~0b;n`yIz;8 zYMj;Ax8GbJ42E?z9v0Jnc9PAP^8r&#}cuAf{aM^!mXIs*%A=ib}7D*sD9$;v~5XB1x) zt7$&3hbQ=TxIABEHP(7NAAa-A+j;U0G*d5=@+c|H<`^IJeWxhI&!j#sSH&b5Wyz!* zuV(NrnD99~vODU2yet1Ma7P-Iyqqg4(ym&aLhnvLpwsX?Smm^N z`ieiykB{dQ^$q^Ed;ep0wsc3J-q}T8RN0AJRK2r{?iFQi7Ng%5PIQSK^-~t8N}%}c zX?DaTeyM)i1zzH6G)mBKS>&k57eAC${yWkg)5{a;^j>2Mg2)OD?1zaM18=(3*f7Ot0bMDComvD47BI;Rd$r{HqdpkTLMK@ zwp>+n#v*SHPz|I99R2bbW@4Pqk;O~S4U|$)o4Td*WU(5-Di*UKnkllS0C*tbJxJ!O zqL5=Krh{}cA&!olP6iCKt5|Q+rS5Gc4;~UH#|p?oT!2(+Fv)=776aLF*}{dwmx-2c zF%|FsR%cmqKTVFS?C8PU>qD4|ddP#Q-(G+CjQ_fyKE%>`Gg5mR;c=hZmfH;z5A-p&BM-^!3PRYv{86@-yNdpN%6OSSq zWQVX~vD*b~`%u*;5=$s>dg^@(_0}r%70JQ{@I-7JM|lMtmLT-(l?Y4+RzwNInq;sg z(N;6bYuujXJP8yqjzBt{4HW!W$FKu%Mfju2ep?Zu<$krSQou2Bnt_Tfl ziWX@LVaOmYF0cZYsG1AtlrZmbk>K;Vq%X zqS2?P(6+FCBmSS6|2LR<#rjFxBF?|a{0V3_v8UWP4m)%1dH={bjs_~9c2b#D^jb)jzAAELa@>eN5&7#0(T z-d=}pF5g}c3m5iWDD6{lKCG|tIZ?&_K&koHFYZX~(5p0dLG)T*p5B!s=6f?(lIaQbG#wQRR&syw zQ2d>Q>O2sCs7osO_^rzaui*lpF5bK|ex*zJK3XmD@(7!yaf-9>J>9vX>YW@luI{_y z2Fth<3}E1uU_(3}q;eKnU4UuL;$~YOlh4v=M(Pr}ygDvUiY zu5UveIuvK0`Gd&4O3z3H0|prXKen* z(D3Y1|Edw5h|96S_~gA=V07lE*w|#5uRF5qJ#8=`csc4^O?v@hn_$@rJY^#Ws~Ekp zOI^|eL0$R@yNQ4qg1jiiZppuuorMK#ubd&LYk)Q85(rBC8HV&^RTLoA!2aC;>_`|2zB)!+Zg>Ts44O;CF;X ze}rK$lW73L+zz4eUtutZ$7$6BrN-}MVuOE#VZ4$mnYsax(%T>~^&0D%#}AuZ|At@TPtc0&Kl3kQC?_7JxCs(jf>SJyUz>WEiMZR5ven?s(0Sb zAIfX?zb(s2N!JKJtoaKSaQRQDjKfw!MSOk{DrK^O(06M!h6>nAEmXoIuw#W>z!@>#d!gqA(UsY?&l~=60+_E8YdTi}+%*3Gvd~+QfTzmlCf7TaNf* z?HuBr&A7!&hZBppHe(ep{mtZF6Y>nqNlJ_0_TjyD6ej@&gql~_I?6Qqo^+HgPswfp zg|AxOvWPWxy#weEW#_{iEa z>!GZJ(*$5m55`ql*J}%`g92z<^SK3t^?gx=g3yYxfTKp~6OjB6ti_UC`!z4>jayHUbHaj2FLu@$}@jtf*9Cu$5-m zFsUZTOBez5c*+bI`eU?|0Ay|JHiNBhS#FDpe>2Z;AL;?L{`UIA_{aOh^x?oo;c3dZ ziOUSFHcTuE{k^~w_squ>BXyk46=0NC-=pI}U;c;wc%P&-K!9^CY(!~wZjREJfBsW^ z`+IiYL{iBQ8FpBnwxyZA`Ya4nlFruV=Kty>y`*z{b8~UlamejBV>{i3hW?RHU^>6B zol^wT*v!sklCW(INPKB6=)%=x>unj0iyTW&I2o8X!prj_6Sh+F9mC7B+UZ_8ne1Vs zjXk8hV1qO0ZU!;)H{&Woy}Z9F9_k-O{*bOhscpa!TR#DnEYB0%U!TC~?0J>b{a;OY zE`$3+sANG1VFIXjJ~i%Ik%C?8E~PqR+p!2>_+MJoCElPExzs$()02Ff5>#kxo}IF` zr*>crjloLxriR;y>c?|bU=t4bh*~lhcno12C$9|-_i-+4w7DXzSspH4O(d%Yz?|b$ zPLPqEu$3F#T20br+Q$tG%P9pmF5mlOkn0{=1%NAU{q@#nf9uv?Ht!GV``hcXZ!WW$ zl=IG#`qkrk!4_aurO6TCk3~sT!7{t8mx{S0^~Zd{_xIt>NeW!xM3Vp|rbBaGi@6b< z)yD!slk6y66((KhM|Mj<0`qd|-z&s-q$;ZyCG2=7g364Z$U!ZT;+d(Y>WDv~kt0^H z;Tpe=VATtA_%xZNXMN%%Nq4otX+Fi>hdSvXK+LxC_rZm+;dNXxufC?);4I&|1C#vi zX8-ngcYDblVCuKN{jPuKFPpst-omHNZ@<$M&y_U_png7^_5sG=!(y5c4157_=mo%W zE7#Rn)I#`J>h1MJQkaK*rkQkvHZfvEJ)m(w546Rc7aJVN9w6DvxfLT*yk{kB9R$aN zb2VVII2Z7stH~li%L)ONKnQ#gSaVz^NX_M;5cibOC%d80sG!J!2f@VI=?=>)vl0)r zJ(r1=#3+cV)vE;_3Z?G^t|37)v~&V|RvM=s0Y9Wmr^)#|o#kTz6@g~NwkC<*xeoRL z^lCnlEBoh{PXnN%n*g*D-UpEQ(~~lXJ+sDjGCu;bVd-@{z=3Ue=7pHghW|_PU&f8* z5mJl|vG*NWYF`v;6lZtS@y7`W*5(0QLf4e|V+o9|pX`^!ij3{;BrR6NM@JG4vhi{4 z9n0nSR-M`dgyz##MgBCxXi3T+EP%&<sI$!H1u!rzcMyHg%1TSw z2juhv9Fb?7H$_Piw{>xz|VNhv=f}nr(r;%%!WA90SZ7`bucNBv%3K zt=KeKfwXAaH4LgF0*(~OR!n8NeTtcsrqQ?{pz*3Q%p=9IW(FdU6y462+7w1GjhZih zH54CcD)I2*fVn?|P;Lwc|8#L7XPC{a)=}0WZ!$@dP17-)Dy#Ce z&Z;^*yL&uB=+08lv#~t^I&gqu4mIRUYEnpu2#&v}INRf~5xM>P%w0T6t z!PB%N$DbKY39@^1#+uW0P7_p#67JVi8tN{Ow0UoP6*&wiE{fkF9sFW;128MHie_NJ4Jn z=HlFrblpF#^5qh?m(e+$j%cwjvT=R{Xdx*%en3?%yv*2=U_w@y*bCsVWwD|baaH{p z1P5~3A}Odg6l}-K<)Ypm4#h$qOv@5h04mRhfOAxs4uS4YvugM)oGZ4rZoR$!@X~cq z59i>Py7??UJG8Ix0ve*#vP8j>jqOoup&S%QI>kAEU9Mh1s|?f?39yPN;G2W3)3C{f zLJC%~Qb;lA5tUrTwY$_MU#A5nRW(QXeB!Nr;rvLRcMX{G}!;4&Z=n%Gz zO;>)&A$Y7H4&!NIJMQ}?*!4??NfursExTKh#h%FteTbZ%)gmWJ1ojX$$=hTMVj}KbYsA9jZz8x$^2@Ek-N9x+QazNQno06yh8sR= z@RbJ?ReT|7C+PmqE(~EVw0kZm&v81Plv$1Pwvw~;Xh|AL>RDN$Vpw_$TYh0`hfmoT zg->j?0Z7ri({6=BtWh5)BtJD&I_kB=DM2~3aI;nz;e$PO_mqwrc*H|BB(4o|QZbK# zcPlC zX@P~`UVmJV-(IJSN2gU_VsuB=)ULQkfZC%nttRT?!c$y9i5J*zGq_h3?7c_jcvaI0 zB=>zTTCyi#mWw9{r|n!K6CBc!n(5m(;sj~jQ0$;8qZO8DZXct9Rx0p9r(P(a6nrhu zcW&pEk`wlpNk&m%=rA!P5+h+QA~TzUl;C0#Rz97V6(7f#e<4*$rUuK6UwT6@*q+#0 zvCn}WdXG{0d`=OY8X2`-W`f=_sSp_=Dujv|hfQ8luxDq5)1v;++}3kOg1D;JhbLUL zX+fS>1`g|D@PFBXC$7I$~vNaC;_FYLdnpDokEzAf(PaA$%BuYvW-D_g@ADAE9RubuEU$7DY<%YkdJX8O+Owu4Is{rpIU z?x_#v`{k?|x6BUI@{>khYPhPBwMaY8;~uf%8OJzu6c=SneIv6UdNpf*aI2AAef{^<+-a9eJxrhOAfku zNA9-=ha*;Zi2>?keezh|i~}p1p@R$ek$BsmoENkkf7X{!zpcndmkaC^Mb`$g;c_VP zL7uk(l-)aWD)c8#pIr6iiGc$VGn;d74?H8C13k%P$tLG$nUSK~plXfcP$MZwVkqE> zZ-aG+?5is`52eN@qnqNYYa+rbjZn{LY#I-e2>!cRd;tGPzyHBf>xMr^R?UA8tT*99XsC^D*E=|Cw(B5*Y}rYG*`lA~ zAR@gm#Bm|UZuRNLgr!l<5LMlVE)f2MiYB4GuJv6T+VEF%bzv8_ z9QAJ^mbPDCJF#*J zlCj>ng|!-qW90LxKaJHbrg1}No#@ojbTwbAg8zp)V~FB`BSuhC-{a!1%0_wv5|RpY z62VEW1vCPUKpSYGy*S&@`!=pg4EUN>I>^p!g<28P!pS+%2fg6H?N%B&3a^J+z?V0_ z)DA`0m}DpU*fVBjE2KlL)8^cd!2#=!%W`4F=#Xs%A!FE|X27U#3b)#Kaap17sz8D^0^d3R5CjvMd=wO+7p zOcNO)OT>El81^~CV>%)wJt2Woh?+vSMLQ&=){{Gan8_}EwYCUI1hfYzURZLb!IEvK z1nh)h7|;<|(ioGMmHXwQwnShBj1D5OsxV?Dhg6=i3zx8P!M+e+>6%fCTXO6C;Bsy< z5GFgB$wU~Np_q*k-ZRn9iSDO5D^4|{@gkziaUuAZ(vy-g_5rzqagQs9O13S084XOL zN?%~NHRg3RNq&KH@V5GOA9W!4L>n?kYZSu#tr1QZB*j`8yR++0@yO8KfoQoM68@S!L! z9hj9N{QnkCN2li%(kR;Q0C6}aE<$K?_XY#yyyZqXl2%#rVOM)+=op5q?kUBcK`Qja z{5s629G4#4$k5xn(x(5sJ&P9f_<#=x$w_*-q)X`=!NG@xHV%l`x3?fp0eoDkB-{-P zz`Hafr0$;T5B@#HcK%WLiw&l404dvHY#!9`?3jWHgm-=&neFV~t zj-wNxN=1z(hz1exi40wa7L*i2O2!!o3s-r~!2%v_Cu|$rcoQf?7g#Y1!tmo49cT(E zyl+^$%4%@3N5#A+?0>G{jPxd~ELo9E&FfLlZ6fXlCwvoOc1j;kR3K+%J8v&E774LK z=%gbpvynIQ>TNS}F<3ho1Q{UE1=lRArrH#mR$AS&ynWOO45SJN3L7vIE4KhR(`wh+ zR(|DnWQd0i8VbDYWjbqN?-jP-Ey^(^Y49Vt)gmMU6k@a%faaAY!s693vluwy0op6X zG0V*9yjEsC5)ui~xQz+NCzUEl6i{HL?vU)1;J5`cI!f>oPN}V;QdeaLo93!e3f{aT z0T^|9Cr&*4ocLLAf^nQwA+9gR6>ApTx1QBB0n;wW{JHz zIn9c~JKFK*?N~?)MLr^I3Gfhfp6iCAc=nPTPru)mp^k{zz`EL?ZPg4eA)<~)Vj2WG zqr)eBlGHEq#)votVt15|%^h^vRq1!wLHW++rg&lct9E?fSCy1VsDIc|RJ;^!q1HR? zi`h|a8eW6cOZ?3d2xMj(&%5Kc>Y(A>U_%Tzs_0?4elmvG<+v8e8jjij7LMM`S>zTE z8cZ9_1dLAE8h}6Bc9R`+LhOHcOW`|U>}bFa8|=xhxt4YcZJvpo`Vus_a&TrCxtRme z=1)d>+r-HDVA=(lM=ZkGVV>ZsVD@Ji?R${!;#v#T_!-T`^oieyEd*ItmIGC}G z3(WqRh5+XK_}#rpLCv?;iV!1L#AbWyn(~%-5xr~MQUtCpcJ#8dZV}XLeG#BuXpn2mU$q2C+nL>V*S#Rv=t(Rkh`6%=A<~wCW;(wImw6^s!8AMN?>iepEY95 zFBiDU1_N`c%~K6S?Ym}otgum?J=4~(W3=wZkm|f*&kt$9XO?wBN_AdXc?issMu4f# zkIECO6C8DCU;Jq`r9)12UZ9g0v3s*bDEL(8In3{100I%cV4*Ud$WY1frDLKuBBqFR zXBe7Mg-m*WbcE+zf#8DDzgZD&DRG(|vr>hHM$PNf>5H;BM+c%B4o(72R~6CkcqJxX z4EqGfn^Rc!<>`QhY|3zwJb3UR>ByR$4UrLysYi)e_$cT`ZO($St%N>2q0NAFP_%Lb z;PN++lf)mNKf5LH8LdXBM)wI@ks``=1#fY&GMr*%n_MZK&lgVcU6%KAv@pQ?uxmEUYl`-%}EXsh&kaD zdu4tus$Xn$WfM)rcTK1(25=5omPm>N*t$`P?GZ_|Wb(itdeyR3G5IiQKShF~E641XaDK&l=>RDPBuV)Od;;GtJ2K zL&%KXY^MPA%{xjf^hwgRs5-?eK)*l#e6Zi$P?jJDrUe~z&cxHF|J=d;_gwm3})T2+-*H()#@#%0YVTeoOq8T$Pz$k576#xs18wM<-@HJ|YNu314$9+rts zi`A$hB1Okx;DmPZGng^$i@z@&`}I~JDr}g=a94qUeuQ&AF3{&k_rKf87 z_o?G84>8_4%5;og<6;nheb&Ze_pEZT&W;LGGIpNF5|RxNqJKVDUc&iduoO(tm?%7p1Jg8DW?jD!cB4wN)L%(+`N&w>)(pXHP_zzX zM8hE-HQ>;bReknraF>a)Qhi{yt@gcPzxyWb|Nd@cIL&*;4re3HmEX`9da-2@PM8L` zAZ$@T!%?@|OY6*HgBR{XrHS!2l>yP~^P{dD%mz_Pf6Hq&D+UzJ?T!7KXG{!ze4JK0 z%kJg|bn9t(D!Y~3)J1AkRd%;FY$&*;(G0nQvTU@&5?03mwZ6`*{QZ&@>dTcc*A)*h z6a}EMYQyHG_C0Usu=dzL|2eq=FEEy-s`+N~U0XhF)oU@HyrvTZ%gz(`WJo`MOlRr> zaYGpfIeL$JsSDSOROfld7lV3HAg-tA_@&@=ZlS-;4y z0YTPmQuS0V!c49{SJ?CIaWiuncLUJzEva9Nm7>YD!a7 z+qHD_2DNLlRi9&9IZ~8SC{O|)Aa*K*heym0Zd3_qo}8WQ;wno*Osa$8hNbbp8|d()7rsuvygf@79?*{0zHljG#UrO-lF!gaG^SHvtRn_Up;_uubi&)ZDAbse-!Ii zVvs-a8y++&7+i|$MIEZ^v&qY=QsB6+4)$xs_^WdUE*4PNWJOOMkFO*N<3DH_E)Bx) z;zQ-4n#=Q3Ey8Yz_fmhy)yp}bDQk^@LfnsRC*4dB3Kc+qkXDX65M+SXc{hYyYJUfv zT?Tng|8|AgIj}E#-q6o?J}KhUSOxDB-Z@OtVUUgW2a8pG+?7~$*{v-G16e;dVK4%W z^EMm?^bC2_(vDs@aao^}N|1ZDAcb+}Di|(B3p5l-P(5LM99j(J(GeGNkx^K~zWicP zfLrmqt5fWAa;h49%+Biwxw$kP+r$;u3@LgH1<&Q_7HhrJy-+k0ktEdQC|YFpY?EWS z9zG#u5)x~?hU`(KNKh^bylu-_oWp5Knso5Lc?T zNp+VK;OlIe|56? z&#RLS^|dYCL<_ejoRT__GTpzxQ(e<5ApB)Y+R%wt?Jcjiaa6$AR9HG&e{y9#W@}l0ri%TSjOnfRn8Wx zWj3L5f$J?@Z^PTUIYB2zy1}G83y~)V9ehV+HNl{C!Xb84o?+eyiaA}Isouy9Q!{M; zmX>pAiX|cN@5>eIkwKKm{q5U@4O$}j12GOJrjV{5luF3VXMU8b9WG9N@Pw#F#L^YpnVC2krss!>D@%XapHy^Utn-Y0CRryyT& ztfJ0fDBhrWtBP{6`*Kx{Goz$%5gU@z)DVwAwO{LCepDKDRH;D1cyf?KM_V~g;kaxG zILB_@m5bePTiKOYW3FsXI}s~8P){-Pa68$>kmc3DhyfTg+uiQ#FOC;ir>P(%o&RWwRxpN*8m!ghQjd*ttbh= zS~xF;6?8^r87P`N!SF(t5mU09Vuq-tLh2b27Fs|#*r%X5 zI_;rgz%s-z2dR|?6-h9clgG_u)Od%Tv6p}ID2+Yf2qX1a?I$AEKWPA)6Eyhu4!8@= z;mr5=Y*CaIphd)1T|11v!BFj?{9LUW4X0saJ|1nyqDnI*8NfD#i(msBSi@oYHh7Nx z=)mWfYY0w62d4nVL>q#&i;196w-|W-IIWLmP)41DIF47!yg4`4i<#X6uk@Px^;Bf& zHe$e@0Ca;G+;4C|cUqjOI49U+;=XV4&qr`y8(+E$Kicy;G5DoeI}_1)d?=oS7O z9j1=8=?qhUXdb7ZTvNv%A{hx+M3ikxK?y+kvJ$*()ix(V_ZexMrm?EqvMV|U0 z1~)3u9l+}CC4!b~1G#l@Oi^;P<#@26d;T>}1SuT`)D(g^`3$4Z=5XS(y&&zB=L&Drp;hdu87dng-+D! zB~-GAEObc2n1uDfe zw-Of0v<{MPu^y(z#K`aQ0UwE;_o=bK@|Fb-@%vgSRw8bSB>6=BQl#3r; z!TWVhU}o6r-woAPr2RO)m)!d(y2bZ)*nUC!479EL?|}>yh+#y!+ZfI|uW(-tmeKOgm=`$wa`?8@8gb`e6iGs@G`(*da!gj(oB&4bKlr5as-RGtn0q?nr;DHaO0 zK};SRxwE+${61gJkS4IZcTI(i6T91EufgNzQH#^(eqR5!s*?rnloRMYtiLQ0nBF1_ zHFZ9H9B0J>E$IL-p)8vZDMdz+)x)jtw!Yi^%bos*^dx1-n0x0apNdc>eHrK-6^aZa zLL4(GUBo2|s^0g9B}EMSexN?L$5d3|_}>&o0dbo?1X^`h0n4$G?Sg+z&z| zHROC-Be?oL$IN>!!W^qGHyt>P$p|zZp%d1>Srg&@hOVktW~9ZA6~wK>Y5-kX9>CQb zeOA?l=xC^a;+anU;^US2X&h6$cj^Uk0rkrjebfgfsW^?1>dYu*ZRL8T?k44bv0xwB zXmuBd^FhF4&HQkP>GCj3GTXc>N(otF`sN;06fY_s8kTUn}I8NmMYXX;J& z17AjR!j}yM%)Rs>W0yV1T=-eGJT4~!{EUADAay%zW!gdIa7WBhM<0>pmWm@Yg22Ku zFz%EM<8H&0B9lSC#9gZK$?W2GqPp-|_nXbUKq5bU|}h( z+X(t(L~W5xP|AE=;vxjeex<{D^!%lYxr9}|PFCmQx|F%zR7UVAU5RV$6ULyQ5HI{M zD|)tb3#ii%V|^#El3_3Gggz57ynV_=M?B=r4=gh;v9CX+PCjzh!p637r~g@-2>Qkx zPruI!VZmkF_7;F7fq@59YCvI2m{%itVDQ)t3U+4p#4`3G6D0-`u}iY8kKE4X^-Cop z9Fn&9f#{R;P3c*Y0AQWwm;kSjq9Jgc(^4t#rM4Nhh9_xGu{-UKdX2#b;q_X?C}10( z2hzfc%#-PzLzze`UBqOLvv&{vx$h53MEHQOH*YqCXsmfE{BGv1f0C}FB`n!vvX(iR zFT1sY#eQew&8>I6WNS0Dv=BKipoannQ4XU>r)HuEl^Io8`Z2tg{g*JesC!5_iMmJ( zO+T#F=kz-#ei%bJY*l_VuC^m^IZh)bi^;Qzx8Je7#{_YOW{MoJ?CIgsf@!(Mw^VVr z!dOy*;yD9hALqdy{~&?uveG;ZP$&3OppBUbKn^u2rsyo6ce&jj56^FFCc~0jb@)|J zj50JFI;WX+RNF&ts%L;61_4P6Non=O6Yvd#?kT$`fobtxTW$72Cs;bECg0P2lL-GQ zE;mLpjk3~R6G^n(Tcp7CNeFCWE4k3$c{FwMiQ}tYBr5(WT7Qad!r!V?sW0EJj8NIe z+Yy=L1wJSoJTf*dy^pCIiQpziJB)(RYLl_)$KL-26d4M$iJ>Do$8Eajv_^X&1r@r| zo~BUulFhL7(ju4*M%W&s@K!Pw<<;!kTywfNy-%@Rj=6&}nYO4-kJ2g^^8{pCdF?f` zgDx97bNx_%vqE;5P#EJnS)tmYas7QZ=Df|wJ4KQ0 z9SY~VcJc`38~=dQG{!PDKiy0^_;TC!WfaKt4&r34jCyH2koAw#S{k2RXH$GA#gfa7 zPXO@s)^6~qQrUbb4jz`tW1Jl(idLV@MRO;-1tPO zxe%tRH$K6?09z!5I$9M4tn4hCqZwgq1VR2laveLNaiuVrVIwa2sPp zzDlRAKQQ@6GFl^NcmDc(^dXeLLWYMI?hB?vIiTx54xj%xpdCxMu`LVVa}TX%A627+ zS-R+o+EIsRIZ7Ek(u1GgC9d-) zY@#Eq2`t0-I@|>J{U%Tg&;xYmf+v(ZidRW~IPaYn9>w1?m?fGhADPaAm= z@Y6IQ$*#ckTma!o>b~%~2;d5jaX^Z!8PuAPM0tt;r!f=^)fn@oA1r4^UWtaKUDZ-7 zwgSz_j{wg7REYjKlo3)kiHsfN{XR5J_;7UZ8 zZ#LiYItpu}u?V#^&b%ZDV(y$X7Gi|MVhQkGP8~+5QD*C%Lk`iSRFgta;r9dM_XFTp zwk7fVA%I`RgwoE43U5BJf~HxK##2Hgh6;g&5z?StG!Z^P^e8;9X*YUG7MfjH3w-LQ zmpVpAENCH=_fk~J0?21pm9!}-*_u;Cr#g5nEiBP~N#1>O-f>}kjk&5VV5gW!`~Uqv z|F5NCQi{9^IoY^G+Z5E&KS#fW8q>0^3S?a609Nq$W7#Lwiv>_vIMrx&m=yWPEcx;9 z4x6BJ8sc*p8YdGX^ToO9^1w&KKz890VH>U9{7{}^knrQLkGskFtL=x6{L(6h@bfq$fHimj{}eN zalj!Nkqj!>)xnb$e_e>&qMj%>STE37ziFOuIO|dfTU94vBEA;;@7yIXp5qT6hOP)6Y5lKSCXyfwl!Fjn_u0}rf+MvV{L=?7SvFIo{LHH;6EGyeV zr=kJaZR+Ah;oVMn`$x?DN>hjNrNtCFxDhg-{Mwu%$OAS2yfnqCiXHN3D16Af@kx*C z!Z_r~_mY;vhp{kVB(grc1cYnVCsY3|<2XCrEm1(R_h3}%;I$%+706Rj}=5ytbU>L_7X;%#d8s>Ta^X7PEKPb!YIqf zh%moK>=aDL+J}C>?hpA(q}rk^&ZlUg6YWHwL=vEeMVZgZXmP8DbJ5${OtyMBCm;+9 zFu^l2OmJl0n_3;A_oz(*ckzFCs`uwDHoS3Ojf*T9BZ#}3{|hRQ&()u(6A=C9au2WC zS+4#s=x{rHTZX0Lx$%iPh;x}pC+y(SS&W(8?(|7nY*c(&*035>BTpnY#FkZejY}On zJlmSQYEl=^V65u_FQb^FPfXvS?by3*5a7CRgd5Z3-9}G%FZu7$S|$ad*Z-2w7pvtP zWZtMWLL=_$0k~GFDxKuz`eGzxjLNfMNp@g&-z1Ym8x%Fv@}hej!^A^c3x;BM;4sv*t&%!Con3ig7g!Wu>Yj)pBc5^7>v53rJ&On zI-#{JqVHvGyIoU_i34;KwV7G4rRu@>9M7sQPIne4(~;j*gd4#&-n{dfff|rZ_h*+6 zsydWePRvwUK7+v^Xw=;EifMEh-^`ZX|?D&qzjYMj&}0A}$&4+Smp` zv4N2*rk!PwFnM(!FpuPcz=w>;P-2T|F;$nsldsZu z8NEQANg#=y)vRdJs1<4ZBHkqe(%4K_&ArTW{DvyMllI4<6n70R$1RHRk#U>JH%rhM z-i6|{yZ9G$QP5?*t`RbC5N3T)*2|@B-))(2xDI^@Xa_|-WFL5WYA_Oi%#VDyW`zyE z#&*jQq3yXlA~j(H**p5z8v)LLj9KE=cufNmJ`q7e@k(KXgwD^OX?EbBbwQCe44zI= zO@Z<1JG__Gpz7ti@U2d5V^b!))X&IRq#ITU3K+xu#W4sGpYs>#1pZS_KJUyY73`M7 ze1Lfay7TlTpQacTdj$u^ov9(8gzR<2=8qdJX{y+q9+ji8mpfrsgn5)SelmhN$!$0J z#8)R5T$S#8RGG(T+n*Al+dxu-z2`dnr-_&3LUf98%O9OQ7;mQae@qY0&&IFcUhgF! zDw;3esi`!EBGV_ZIuY;8Ij|o_R2iWy&Iw<(Xx8FOCAd|Y(GTR@(1Fv;x*WXG%xm1& z?*4KBg+m*E=zes=&^$GoVnLHZ{kPd@Q;6^gwp@o%uzi93iIJ)dCAShx7V=R9!R&g8QQwmtBRGi zDomD2j0=6?zY7dM!Y*ssWRR#p07g*FM)yhzLc^Y(!%hIX@%y;Odk0s#lWU4@mdTVz&n0Y&=@ims2=1R!R;!W28sj){D&Gz?QjRy?i9r#Chwk4C18_b?qN^t&t_%glhtr7-WyF5 zzIw?g^9a>5+*+*qRM?7v**?f7_j0c+tBLILGh7&ZQjPVZtaIF?O+4=Bcn_#wnin&{ zpqmp4xtr0ENJMYM7^2c+mpnT`LOE(14Ee9$ZT;oW*6_GI?JrA=2L(7`!Lm^U_4~lN%|@2=KEyB9%}PeimD!J?AGSicf-v)Loqk~)uK<@4%E0VQF7@o zpnurlfIZ>~-p}*=H;k~v#_Sl}U+QGu&e^BvU_u98V~KEtIFnA~tSnZe0)tct^0>Ag zBgK1G`KcxutYc{(?irRHdm_?>sWq|yVQ;S)F;A_JS#ix$64-q}i`i?+KK`Bq_Bkx( z3=tu(Jgx66El4bh&RTNGtemV0X?!DUiFgo1Qd-NR>T~QUQi)lh=vH1>|ByH%eD<6! zi{j7cUZ(-}E4)o6(5V2D!um?3!VLohRpk_@w07{YyQxe*$Tbk1s5+RB4CmJlak=REJzWRWA`t65FH!aZwcIBDauInF6=GfqTR77lU4$80yPL`BU& zj3UMfxjvZhqu+&82ijyI%G0H#MXWYCDqW-d<;DnD0G#a>F-pHtOi>>V$3fUw;w{`z zcLoh*=n5>_kf7S=_a&TkMrjB>rhFhnax@y3ZaTE5+6x5;xuj)luevHbIW#hAY`Xo% z2rw^<2;O#?DnCJ;_V1S0&ow`UoGd7(Hsm$q70&B@zL$mqFEc(|dMrnjMM8gG(du~2 zK^9}&X%^fawOc$sURna_|0CaBD5xaaRx3)Xt{k{cV+x_UN4wdOEV1F8Le-^7Sh|bn z=0kRW^QQ5Q!j_9I3;(esVERak#?0CP)HlnyNL|A?g+$~XB{g-$Xahw@tGt*zW6tk5 z#9*L&WWVg_BX1yJmjDi#&FLViRSG$3EBV&M#+;2Vk-v<)HIOj>{O1;>pb;xKiC4?X zyBPsuMsN4CL008y(us~517giqqz0|ag!_>=8ry_>;aH2f6J!VzGVDFtmg8^B+lao* zQKeJBVpQ|#P1N`19hKJ{#+dI0CLj1xJ^?y;nvY>ZGp9&H#yGjaV}#abS-IkeoGPb} z^0mzi@EHsSYmNy<$G%WR(J`uCgPoy;2ugVR&W7ovzQKVuwsJ^DN zO0Z1CG?yLp4x_jgShM?JR|+V0E?2|Vv3b+&!Rz50r|Y5fvP-6c1>`b#yWb>lKAul@ zq{JD{7_G{q{ItiC)$=*jGqyRWZ?e5>Hh^(a(nbH8c1Rw4RqjFQEZl~*zILD|Xh4PD z?FrceVZCKZ;VR64q%5Go*$MAvW|^}DZ9zh%>5!eWKf9c1hg+JJyzinbGM{BR2B({$ z-o9C{El{lK#z?77k7Q-@rku~MO_MB2hEeW~xe?bsa3y?37T_ms(gK{wL8-Ga3==|K z$z~uy1$d-Kra4X5Gmh8#tZSpSy2&V54$d#J60LJHw{=K=nsM|Q@o z2EB1SXL}HM46M7fRArFW>9i|MmQkBOf{hV(MGT7x0>KTsMdy3>$mXV?7*PkBdMt{& z38GxlLNpps|El4zXyC^ul3DE!tzdCouZfsQc}U_n$cQ1igFJsl{^G7wDUy`pr399F zF*(_tn+mvT1%AxVU!Zm%yuRhvZq$tf0EzQ(H=a72W5@5qImcT`#&RgG*D53@?Eg9H*7l0$*9 zD#4gpKa*5WvExcO8Y6XNuxx-$vAjN7jo>_q`Kd&P7?QBXO(^<-P=q@tBwAux&L}mR z`18IHp^fzh*D?YqgFR`XGg0ppJJ1t1*VYKpZ^ci7zycDl3SHO{;5jD56Vz65Mcn~n+2 zF?tI(LoOz|YvlJ*Wn{@cSI7zBVYSNnP|OL`<>BJzpAYuE#d9MF2OlS>RE|lD5pqCq z9+dO$dqNZ($T?kjA7`t7;}h1nc#qbSO$)p&J>moAv+=9om7QGe^p&x1T>V zfkj}s3$5#d?IjTs!YAa$s1u+YCK9X^FjXneCk}l@+#cPSDrypM2Xrhyb+%LfJgn{F z5Yy#+%#_3eqK1h(K~4g@5#Aq(nhWh>lTyjKEUk;}+|A)&D>xz>o!(ek->uzV`9+lf z%kpFqgSp!H1##jYuI7!Pb&Nu|cLMi27+}E#m;O7t})tA822JLLuw0U&{0 z&@yN;rN2mvECp`D)0h9DKYWQ$cI7m!TxkZM_vYapg9gM}yfC{fEhcyzM{K_^S+SlQ zNaVdE6E#sghSQT5m|e?8#ZS|Rk5GspkCqx6RsUeZ5H`Fi4wW+6@qMkNKhK|#doeds zI>U>;^l5(|Xy;&p!En3zBpQR&gb$Dio(68f6cEicT^878^t}I*0Bd$?AD9P+azm_clczYuitbKU=C6r0k1pi%^MzQDn3x-(qQ4q85NI1rkXoq$6ZqZ1 z#Cw}ao2V%@ZCGBF>`^ihtkd6=EIJO5O*~|+bohhw=yFvnyyYkOa#0r09yxHKdsI~W zPcb+IC(3GnB?ZQZ;cLivr;QlITc;JviXtsq&xna2odMVh7=4hgY`Id$0*u0<9oPo z6I~$MIkS<5-bFdR+VPO>0sb|^cNdDBD-4fgw_$0mXbHqLT#smu^En)nGY%JJ%

- zi=;6=7~@rJqXtc=uhkx+MmT)30Sqp^hl#L>-qYMc;)gUtE%pGAAXt zAyz7wslhr}+pZa(=5BuNAPLXXvwQ}JAjW?HvCoVGE&+cDUL!bNmQ&y&vQZzam%}LW z8VSoosEbTlvIRbaxP;9BZOmwq>2DUdzwyamlWm98F&D1os)-Pm=}3m8>Tk&@fU|5` zsAyyufXL!>7vhbYgB z!udWLe9nK*^oatp=jauya;e#nGa{^-qVl3K2vHPgVOo`|Mb!QM#wU}RMO@@yfO4mZ zl!%R!YsdJu%g|hr@qrW>nHJ+<@Ofm4kj+Ky-PL>o!@JT{jg=i-o7vK(8|LYYktikR ze-$1BB;vkvf4{fnGo{}NT;|Fg6mmQ9FQHnCVxAn|*zOn=4hvxyhp|PmhXuPd2r;7(8BizeHVFDM=^O@4nOGKslM-liQ1Y+sbdv&pP>qe$2%Qz8Z> z`;Z>SJ%gYj+=a7X_%^XYlegxGt1nT#HR1M1oKdG$I*K1nLs~xvPze1*5WLU~Y%gKg znos-6(xT_!IZN?y9U(stnw~pX$X;aGM9k4Te91_4VRfe@LdmLp7Ww{udg-0U&4Ok= zLdLD86gT$QQIXC+qP~Pq81s^@e5$r5y2#l>wI4XkVe=}pv$5Z)cjlQPeYoa|z?sN# zxx#224iTFX!%O#e<2}31z-Bm@7Ud`{OdWetR=G^|H$G11(?~hDmq8l@)ypb7f<}*@ z&tFp0zFALn-BWd8|L+=>8Vh^RI8XZ)s`kk+1O>13OfzE(*I z4-nX5)K4g7PnwIXz~a};HuTZR-w^oh;n-6jk!LH=m65;^9qNtsby0>lKfyI-kD+U1P?%Aqm)G($;M|A9LIQTU?>G4<7tmEg!gwl5-=vrFK z+EyDo6AZ~ZL7U+!nPeD$Hc&p`_NTm=G%Voxm{OdKjRT&MHO0MJps!|*Zt-cdqW&Fn zbDZ%}0sGrr-(P%_^yRh3Y_-H8WoPJ5J)b&#qE;rk9b*@3?-Zx$dCiTZ=>}Rdp(WYW z_N7qeUzaN=$FVdhZ`c@ZRmj92=xUx~9#2?iHO?}{6p?U_(DKXxgb_+OT!+YL8A`am zvgV0!Z2?uN=HSGqd7bshM&`ZPO}iWK1$;ednOl=^@_lfeD*Yx}B9WIkwJW-V;UP$L z=|PwB@v-pCoZ5CiA{YyrnrpaYcrh)}IrRG%uE5XR#S=%Im@%+eMlN(8uqoi1I96(TLzCLHmNT&Hz1NQtyi zVswCwYfn(E6^HJ?4?|}V#Y)Gc#?0h{fiO|B#Gjr~g37$HUL=YK%HJaJ3kF3R!vFWT z28;Q$)ALFtycR@B`a4$i!hZG6{HbIz{2}^p@`bKdH9j&?m3MXHi%&cz;$Mne)Ho42 z1Y{&}FdCt^e0~8A*fsipAZ(g#Lu%bY-94+NL4BMb8TKCEBq5j)$)mdg_ zHW!gwxN@I|K7{kqKD@>=ldLC<>a0eDE3f4d-%DIOr>H>BoaSL-TG$4&C>o_7c%{Qu zEfgonEQwmmHIO&spsty)!cfMsa}qx5bH~YzpQ7~p#}<~t2Rh`wYS$r2>Zn_WXHEDi z1^f(!&VuqU_+LE-aNF%0ABu$?!XsuoMzdp64B&DqccI9`!JbGWemv1(!$1dhIm@~x zmG@}mWCa^KFH;aUU3x&-5FR`*&>qexVN%^e#5C8B2_KkcqoC(d6gV}9aL(dKZSb#K+b5gi_^K zPx5Uz0GLe27jZeKiY;3z;?f~i%lRZXJj=AxZ9@Q3-@n!#x0EAHRl+44Cj#z=(lnng zRq$JbgBSB8GC-!^cFtu&Qp~DXwi5(yxPUeFuE`&)X>|X{;jQmiX+9zvu~A%jNHo9; zEX?3!nU&&I@Zs}U1aWJsy7rmo)10W>>#&&Hb@8u*FuZ;T?N|7TcGrL1JOaP>UN-_w zxdBU~O$3oMKF*5?Fql>hSgF9G0g?T-VhS*Q9T18S94;D*2HK(x9nG{!mmS2N;ng1s zvGDn`&Bt8T3ZL+P03OT%N=9kb9J#a6kMY=q<9X2ASE&!;SE;(1w=W#KJ#BEW2o3F0 zM$`l*5SztFNs8>NgGD+UGP$hGY5G#;k(S_?|6yT~*jFJ${vmD`8#4UbuxdH5XmTo$ zrDcPGw7=MUYgRTwca>s1{R#)?i*qMHPn|up^GJw(55o zlE702L^M)21iO@QjD_jm_=}Q#fyh1{vpdEy+zN=U;aRFKr@5Y^oe^K{P`1`53?%Pr zctScJUY|H9-?bAO>;vdy&!)_#Au zc(`79gwJ3wu-+L8r3(Y$4lQWm+w3UKg-( zs|kn7@3IV$78?V%#w*nKvVsm%u9@0i)Y_VXh6t=%pWRbUU2`{}cNTQE5u^h-X47}{ zmVuiKUoR%~J!TDg%(M66+;Tj9oHyHJ9f}Mi5pfSF2mFoq@i=IBSKgOSm&I`Y$v0l9Dk%#Gf557Wsw}GsHacInCoQI zRkvtAF55ZnxIA_GA?^gRhp)Itzu>Bx!D=l|@YNc`v{Z{M+_eq`s?K zLS$b4MGNA;gXx2!J99X%sF1sY+2JP*l7}bkoHXCLr%Tl^Diii-2Hl=hL3{6~H#dR&hK!7l9cYv@h&JAnTiEFQ$nh2+YR+<8Wz^_y(4t2n`q2xE9?{~ zg&3~TV>f0R+FfYAL8G9QYNwepa=^fGHAjl`8jvCAkzy#`j*iWI#0CztysjAz&Mo4A z{N;Z)61|6VUHoMp!9?ezTfvW2!Bh*B=1U`-=h|H=l!(1oo z4TvY|ZOl50p!v!f_i1BT?mhvIssbg(&CT5>rf80_DWr)$9@9A_y_bjypNp?GLp~Ak z5A^xCJ;Ai{_`i*CCom2BX28(RQG~VV7K^3IFF@lXp9h;>d#>mQDpG%K4%4=OesEN) zCyGV@cMHl6>gjmpa|K^a4qn8#*A1>&e!z>ujmL%$#w|uU51z885wxk_fQ=-Q)GH%AjS_%iO@V+hW*pyBsbehnHnmyix?SFiv zHwYTE|4KPS^>3ZCRs+=qowYjT=H}|2=Z%42OzrEBB_O7s?4cKcloO1$OS_2=!JOojS9lBh=rkhF%?K6^UNG|L6aPzmwyPl*^)tajLSI zj?-eiD#&8ZuzTtm;kwk7I@Yu@JTMg9sL*gxG&rf<5`}7=$b-hGwN+RHqxGqPRUoJ= zF!xABR3ti%wT+(FWH{=bT15<5N0lYhdBl&_+mT!?%^`!=ADZKdfV{}|@^K^FE2?Td zd1#M248uNL`vh99o*Ujxw~)wqf<%jrAtZ!A zxo6e*{MoM3mHoq9!u+Q-s12`%KSa`+?zzr|?nqguExaQmqoXo%Y%bhK&I=p)+kuV= z)y)G7?oAtqMx`)0`A2l`crJ;@3zOZb&_Ro?p6=sjER>$~pA-@lh7=IG5W30Y*9@kk z;Mvz)*5xg`B?UFeKgi57cuc|&l&~r(sHuu7O=m~s7HBAzEPy*IYx3k$2j(>zW3!ge z8ssqcGt?131l&bsJ#Gy!-l2hDqd<*`j8VyHXh`CQUx2^1yMAkpxA}~VOyz{>Dpk17 z6BDm#B%wJ)HTWoFV7zq@ z#OQ&PRjdj2WpY~uV;{Icj>j&LalW@^P~v*Q$-tff>bp1c*;Iw=YqG=D@Hv|L(`=fK z&v&cxv<}EWOFQLGmFzN%=A} zDe_U3q53iT zbHU`VLXLRvMpTnMY8g8 z1RA|eAE7w)FT#5Q0W;mTB}U?3l_?;GjO56^bYmurdS8_)N`^rRZO=r4hEZiGrAu_4 zDFbF75nGWaQxP#s)+JtpkAe~S@?P-m&z1Qh7@kzw?5i5Fn1t}D(da+aWZ1^fk>VSm z*|TB~;9tI=MNQsTXvf9@Vik&N)4{`%{Pm}}t#f2kG-1ZS5&&l- zrrt_p-!f z42aXR`Y2NaIad?CWT&Xho;3Hyl1?$Sh2S{Z(suncE2NOBE)KZ0wTA|sN(gw{);;*= zzI&}CK*6^_4k7YcP96qickS-XtT8lEBRKqjTz4_Ibe%%wfi^cT+k&;#;6Cu+J~RyO zLu_zjexYte75XKE0Jz~nSU~)6IWTZZXhr_M?N@=~eln0)#G8K|##;8@opX$5 zCWuDEykTzWN@Hs9I6H`texDXgIcV{AgU#QmAz=fbd=B6R7t#&GwA#@nwDcb~A^1l$ zeEWrN{2P(dpt7{CkhiJm9!&jI~$B;T7i+i}tO}u+lS%1k@!zEWuS`ylHKal}p7$^o;DKkvt2~xa#v*))YYGk~CGQG3ejD44j+d*n5T)39bUv|Q3*Q@Il~OKH zVl->n>^4{PWB6!z%=$qvqe!vb0mdO#3Z@7tmLe+%zTn&+e!34G=%#*xxX4}i#8_e+#Vq6~Z>Dh<46 zvTf&tAmWdS%fL976(uaLBHmeCkD^Y`rv1|@U6|yBJGLmVu1+*gE$3g0y@8}nWo2EL zpOkYd_nh?NPx0(xK&qo+PL0dqE(v=`roa|CJFW8aHwu??gu5;55Rm;?A4vll_!?zZ zWDdq1#!b6+0wA)AUrPp#z+}%VQ(|7zYQb)1ldb`uFP@PRxy#?TB8uX~I01X1s|hvT z^~=ZX6Iy=YMuWB8aArQ>tr*@&c@k7UOE|h>{Sg8vVBPZm053bBSH{8Sv_Ae zwEV~qwn&DC$7y{mLd$vmG+4Z&K7jd|23O)$j~&$Oz5v0`Xwer7?~!jzG2w57{}@bT4%#Ss+YUc2^-5>8#Q6Kypt+L; zgY^C3F?86j!BA%t3+d15>D%iMK^h8I!^d?T5wYEgB|T;F`Uwb!*`)KX2~0* zk6V{Zug(`)*T>xk-&YVCIv#{;eucrp5dh@#h^N{AVB7qzGhl2u$+lb5{!M{J=kk(3 zT?^Fa*IwI80DJ_wGcloAdFad$=X|#4&=WK48#Xo{pPFJ&UAyM+vTLs2XOLt(FT_9@ zS83D0ZN&AQvC`1-o4>*Q9$Nn3!KkVs<2&chAw*JeF*r^N2CIsQ5@*{b-8-A8f7e81na22FXCllofw?M zat83uz(Q-uY2`ukeu$BkC4>R2>)}a0yzyyWTW_}BT?}XGS(Vkog#zR7xH>iSIOJpV_vcKb_m@a3;vmr$dCtvYu)G!I@Qe|xy9&*c42L`{y{olZ^w9AYB0+#w1 z>l{(o7j$GQs7s+Z4%)^_#`&#%PZ<6 z9Mq0|!rE$Ls}XCPzHh*`>bFIC z(EU!q8d*Ru@)Q4BLbyLw<9#SfA!Zuu59&pcFT0(dx9zfOTxr2xsw#)oxU1l!iXpMX zI0v#TpBT(J&>fd0IFsq*tq5iz&W|eAO{X?@B@2D49JcxO;^fBf8z0V15pKn_bwrREn9Bs`@Xg5GT`V%RTy%>@z{qMAs)J* zvgOC)wAS(?3)Y>0#u+LqnrjHO@FfX}G!$y7We^^G^rhyTXf`5ME*8Ru3N(l2!RI8u zN?aa%LPzU%8DtbbTHHVK%50b-&L?5%#9*KXs7HCa%J>*^5 zCa#LVgNcJLbiR3J8=`ywE1}s7DyyiShNaE+7151CA5*r?GfS*=TFbkVYuBR7)puxJ z8`8wG?#20{p@$88@d+CFMi}5Hal&?Q8GHkmuqtMq4o#I=pEI1CFj{C$2wXG-r$A{C zyO@Cn&L8?@!7hdv7C@g)gei%P#lk9U71_)=i%3N@9Y(B%L|Qt|?n;oj2@VxE%El?i zDBv?smHoELE8$m6k*Gz|DhuMlkr79TE+Q!-80QB|R#id!>hXrS;pB#d;(e5vk!LCD z4fO^SQwD;GTPFnyw}p@chXpl$0v9{TLg$}j@R%cod|_ifpSTg}02`bMdSZ9?O2#v7 z;saQWFubrmlYKt`n-0siE+m@(wqqo248-DUeZurYj9vNM*A`*cjI_H@5wY6Vr+FbW zv-Mi4aOEqSX1Pxbf{>4~Zz_|Xb=hDVorKJ%l?_$sStrYy&pIuB=!simMOp}3X9WvK zEVe>V;1m}&>_Srf!Z!7b*b)t1?fvZmy*Kd6LUL_ukbjmORs&;n96)E!%8A| zv+g5~*^x8b`ZzH$JDt$e_Kb;7o3+_wS0bNZn+#0kW9EX0JRDpvUM3#h2Oo@hh&Mj4 zrKS1YNV=*n^@TN8J zWpg}6@dfZiCD2J4tyiQJ>Rs5`J-OCK?Dqo%US&T~OJ2i@M3!H-H(b^7KF0T>w6(^N z@ak+X>iG#2@Q-67C6u;_C62Fd{%gVHK~Tyt+a?{hH&jgVlpWOV3qU#@j_aBfb3n6A zbkPthH+-4r$_ot#B*U1>Hvx0h9SyW{>9c3pyleg8uqh(1J9*MW!`*_7VDTu{8u}cL z)=#DsxW7wpYd?msA4FfI-m&KqEi@>^E@qw$T|G9PU5%*;%5ZJY^1iSgE!YrO=F&F$ z7Md(C@+eooq(Zq7Xv^Sn?4vJopPQ~(a%Gc~Jh|JW51!-1zlW1Q;W)vzZ$0VSV0OLq z11evDtM+NO`VURCZQw6o`j$Nn5=6|DcdZR@$fh@7C3HD+Pfe-HOR^&qk$A2bc2!ql z)za;;p_=9S=vB{aeJRJ(6Ue=_o>GCgu|Dx;a$AcfrtkLJg=%zeeMhzzyG_crba7LP~X2~s)xk~G1ml&H{mqpDo?95~)_oLIfXX)~I zFiX$6RZOiejv2yMPjS3d;1!gV~h$3KGuaTs%E^Oi63pIaV#6m2l2a^lM2@CRQx)A!ldov* zH(;ZmY;9nK2M;3@tHU2AdBILXnR`^b@b#fG!weG?G>B3p6}9cL3@H7+BV2wpv`<1v zw|_Dj%BAuc;~l~3l*=K~D&zFtB@r1JK1^E}dHry=!ccDB{6Zv#WsF9O#!xU5j&OR} zfK)+A<%>x1eq$({t)N1Xu`kCGCE-5^k|!el`cqoK@P8 zD0lu!KqPT$AxRd8#FA<&Sq{Y+g0Pt6Y9w%2`DP zdDG;pp4-`6FPA8`iC_Z>1pThI8s-{eUpq{+-gy5fF`W0&^I^#M2cJukv#BchK4bAd zFIV;YVB0{NFGOLc9jt)5E*BPC4iswQ30mJD{Go+QlxgFfsL@@kz(!=M1(O~@NNv})KJ)lDOnK#^DLVF zC z7FPRZ;P_(PN{3!bEl%A3AA4`2-NunD3cgRN*4%eVSzJZQ zvZQvqv5BHZijqjlrX?NUB2WZDfhY(7H?@7v`;Ga%`I5xzVS-{iL!fIz&Fcn1!kJFiv}BZbDbYe=x)7`l-vp zH#kS}5KmlPLCk)TV^zoP3;b!GVb{Sg%9gjHqq=Leg@vqJHG5;ggFKu1zB@<=I5!6Y zzmhLWW~-Z-bDv~1r^+M-4t}EPD==f3sM-4)>d!LSj($?y;8D`#6q<@of~hXj!nYlQ3ALz_#o<$RT&zkAckc!18$NMN|4MB1h-{Q* zaW^+$G2y({XD@Pmi=bhfUhJJKm9|k-IE+)S$?)!VbDyXaZ{UFbQe<{DL$J4s&+?&k zJN>*q;U4wdQaE1<}ya$@sXcIN2Y4*hj-Eeu5(~I)@V` zYmTC|oCmEO=iR~V2G3oQCoSulvwi|G6CB#$2ImBD4yE0CYc8#CSPK zPv$UmCEG~%fVw11gOnt^VxX#Py+Zol%P?sMUfi=*o}8$mVd_ZHwmj8mhSlrFIq(A2 z%(8CpJH+30;HP5E{>4n^nX=;%%jrw!IWEL+2JDyLPQzjGaI z{-bLR^YUg~rGbft9gT%{|0|uF;~k^J>k6EsUU{{Kk*+!;YI02WtT5c7xV&T>Ql z!_#detRfIC`6s`%tQjW*o7;bO|$ zR~~%4%*p1mx#$(A2MBS>uY)#httGc0WFzI?`D`f$J{D&dme1|Sm(v@^?vN^MWqFU) z=xBjpP`M8`ufL)>y}A&L`fs8Bjhy6E32~?8P{?&O#{gO$mSFPKe#&sjV zx|{Id{$&#e1(eOj^9#?9i41da#)MH2T{!+pP)=ZnNT+Tq`f@)IZxcbyhq_-K zeg|W7D+$SVAOq>_G#_R6v+>|MZa|Y+)xFZ1%*`?=7Od$d(*9{QjICH zkyd9LLfF+?Pf0HcEejV)Ggk{-^tf0MMWvZITP?@vd_$PB2pF&yT6mVa9!wu46?11% zpq$Q=B4ph83qwgSuMH{aHS#A50#pqYs)(|cy<1!aO}QI3g(Mw1jSJdiBug!bC4!i$ z*6|;If*(u&3@mYxs9RlpFx@j5NJ93Y-@@QP=Bl>p*~zjA$%3jmV+a|6P&miwnRGx! zrPl=3eSd;YcXaj}+5QC|n?E!asOMX$!rEz`vy8;R5&|DDjT@`#WDX9<7-NjoJf-Gj ze1=bQFF=YQ$P729rg1o>3aJsmQWVaf4=jFj0e;7^B(Wm!!LeXh4QJ^@Y9g6AU4`>} z1ewX8oSt}!m$ID#D4$*iWG9bk+HW`BCq-di=SZk?l&JG(4U(NOCWTuB2++J8l15ot zn@Y*ZTb3W)!hAcNab)V>bFJV*fC>FI%ul1frVx@yYhqJ;CPJvbEj~o%iVFOwTIclE z#=F9B9+fWoG#g1n)ica^1{q_BNqYI256_}^jfCk7iF6U<78UKh`F@s&=cb#0LTxH5 zNqycN1uj3Qx60e=wG_}+4EtXv)j;p^jH;!cluQHdRoUKPcj8eZIM4duMxgn8d8S&H zSwwhnaa7d;PF8uSgnx=UeuudG8ZEkMY6~a!;~3vOZpSMe*$OFEXFn;HXFq)Z zh?dasqqN5FzRR8ruF=|kRUCg9;Bl9!`ZbtNFN*ARHXBbLt*>`Wa7dPAf2i;59j|v! zC*}Fz;(Q$oPS<;QTHvQa@5j5}Ke)S9V>vYDXk?srC*^RsTb#_YJ96}8-Ri49R>TqW ziO(xj$9rNwk;d7d z^Ha^Gyckz3Lt9$CC=Eq&d{VO8Un}8*ZzcT0)$=jC+$ zT=&2J?$+Ph>cL;v^S{{|Htn6)ppYCQwasxChS$Nv!vKW{tW{g~uR^M9+eOGo;sDz! zO)}V!5XS%4qPBk-RJTB{FSJMdOt0Q-n_ROeuZ>sx33V3oa-*d{NBITBp| z=o4;#F{Nw_m#RZ~Uk;tR5K2Pnt3ZlDO9;z^hLzk$cbbFgr1~7S8?MA*Ubi-<6Ms!rE^F_G41kG~a>UO=4vihx}NxbT^GeDSN$coERp z`ag@t4~vt33W=ZF&)1;vABvk7a41&N3PYQeDr?*|ix?NHE_XM^sT!e4#kBjZxN-M; zi8YEfHNqCeFhQ}q4{GS!wVWSyqbl*Z*d82>-@hy-!+cyFL?AeDy7_2zR`&Z4HMn@? zFmOArUI*7d>x{wt_{+Hgp4B0jl){a0rpl0zxD`RQ;$z9ygLKSAUB{RZXI$HwCyeOf zR~(U`a{41m{EW>=m~?581JasMM|Qa6$%r%nJ-(6ZPRss_btgk7F?TQFRK+26$gQD^ z>UvX@d@YTDlNgX|Vp0zGM~W#y6etihN$`>lXUV1#Nz?yh%uQmcb$TpT9WiTQ66TNN zok}Wul^spKbO0K)sjxL1Ar&@#=k_FeSX=Va?ei#Y*0M+Y(v3^;-1E$nxD4NNUfBMZ z&MWxJbNfq2Hvgj-N{PR(F*Tu(!}KQg0uSK9S^UlL;SqZ%$tX&|g@As4CQEowOG&xs zVKPSj2Bxv4a5%dY15yuOdb2cELaA8irn=6?`1-bzNY^v}of#I(ZkS=fRIwNG@R1FK=IT%%{(bXKCDL}5d zzs_qeEwWTf0|T9H$9I7`QgGWDIe6bD=|`9*1*`g!EMk}tO(m601YU_n&-<%alYG2D z@ku$$;ilw@%_O^n=fJ|+sq&lV#cYOQhm~P!{%Dz_2s5^p-2ypR)|6 zZJb?Am4n{6D8Ox$R z&$4K2cv=;+?Jgqxo|`(0NTlp&uN)MwhulFg1Uj zb6c1b-s^{9pUy>)**vKlC3!OI%s5yQ(xQHCM*STqaL5+^rPd!RCQTNeJU7rD`l4Vn8dU!{AP^cmM#ylnyXN?h#7) zE5g#?e7>5crAE|GieX91F_<3a$7mqJ_#D(!btJrcz62cIS6&|qyzMW%k1(hjaf`j*&S*bDC7gwi%%*T zYI;u5^8FJgRYik!L{7^yh{-o01$F>?Z2NY+V}M?}fO^5VlVVh8mRp2NCGB`YP@`~f z0o2?d9p6Ae-zWxWH_g4mso zJmd(GI#g9@xvjz|*Fu2#iDOv-l-M!76p-e1Ub80*qWveX2FSE-=%06vgAQ%aPxM+V zaYD`L^5C5)W$Ppm+_4UG8O$j0uamP$-tHCC?qo1V=bPH-F8ze6qwi82=p@3HR;(Z` zfULt9a{x!`(dz@D0(`=m_QyjZwb8qUAqR#+Q2$2f(f>@bt719>cOdjII4__DudX|< zKUDJ@b%z%{O+IWFl&>gA1oTgdCX*LE3_(05#{` z#v{*|8pM>ZHLr?c6HMKyle!#c&c!g{q|gwdr?to}F_A)U7nM)$&_4X?GZdaCXYAl! zmGrO{+PO*APOb(N!(<|Z=2jv0VpZq<6-^rTtYGj7lDNT15D1xIxxR%uvA@86mMFp7 zs-^3xJ7I=5?c!NJo8%sY9$@V3j!<|WET{i z&Fqlv*>sVLQEmcu1b7j-F-;FUCyr@CODInF%3?ZNnkiZPvcR{nbU+cnQZqPKlUT7y zb+o*WId$M(MAVUZdkSPgS56d@olTPv2}2sHkT6X9_j+`!kPq*hL@i{0{6@V7FbHod;(P^?4H|l}yT;y|Q;PEVM=%lwir+6H4A-+P*kH zzuAGAy~2r0C#$5r9R?lxuf4Ig84MdZ2q=PXLEA0qKjlzC^5CxX4BMKFj~q#=8bruh81Qc z3sN0xzNu?D_zAdPL8)V6^OMddcAj4+FTSZm;F8gReq}rN%4z~h4DTKY+X=C(BD?1F zw7gm!2uQFGxw;%p>5rIb@1^YmD*?OYWH2(AMvc`;-L)`Jb#q&sl)*>JTsH?waxQP& zE7{aa(n7OL9#=bkS#0IGQRxhM_qU9>Y{qgRs}n*Jz3FLD;AJ#d#c(K1$zq1UR)vgw z|0JOxMAr&&pvsiN7wNy4IAxpy{uaez+QG4aWECTVAWBK1nmKJ*oR4R*`5_A0TlCB$ zUcG|KU`6z|PFAQ%MXifb5`zp~1L?s={-5LF#YA$T3jlMPwGe;55>WX&Vaj)B$B0VB ze!juXi4h4mmNq6#*A(69Rd0#)*!Oh2Qr!Y z`IC0&eLK*i^F#MlVc$jYn_{wGVvc81|GNKgaTU2+EA+ZYLK*V1xP!qKx04<}OsjMy>x`X&n=Il#lv~ zbU^>G^Wgv$Fak4mV-1Z*VSFpl#07GW-pwdKA9OJfskXIt^O3Q$s;<@J!N~w*p2;M? zffacpRTz$RwCY>m;@&Pm!~-{v66D=# zLTb`NpHidJ#sF*Pnzp^#0^BzClXsER+xPXHeg-(Qu_X%UNLzFGND}A4{rk)L&wBQU zpaCm!R1OUb*{irPnAtC?JNd&RT zYiI2vOVR5{X^G*(>2}+YM856UD&L}lH&B$;kPItWPMIsH27NakDJ9yKNIIq&cl49V zU;s!lQcrKz6q6ypl=em`u7?&c=7q9;r=BDCP~47^=C%VQOUHo%VZX{pGfkaWwM;Yw zOPe=wJWHIRtZm!Ywz`#!RZ*H*Ia1>&t-frBp*V0CvV?POnTB&@n2Tb1jzbt2DbkPZ z(@uN3K!o0x`_Lk(DJ0>pfaEGOejiv9vT4N*S!vVpO3_whHUz$jEe3-v5?|b2@j9<* zAPy;qyoHUH!P}>;rvAINa%*rtE+^m}+GS8aFmxo-r@ynMwRO-W%~MEQELP*i;jy8q zOQ^xR{o*aB9t|8mU~xP~>??6I0<)FIrV8Em-&jDIS%X-|UoRKK7277jOU=Ky##!`q zIFL6oRp8e9m0OC87Smgg-m0(X`51DAs$aJrFZS7KY&Xo8XZtHVjmF-}%SPkn%66l3 z)_nZ3(Q2&pn~g@lxzcGgIxD66UgGmv3rg?k$4~_x_H<=@cGPGbVZr7~(P$L<;kl}R zj`hbaETJFkF5vOQ=E?{492 z6Tj+*1J%F)8#ryP{L*Orq94PE;NktI+^Seo>`I*QextFkA3{So-6RwekL!=M{siE? zeyCv#kB7;15NDQvY}CZFM(eDlu&OoaH}^DNU8y%$O@&#F?{yb#hCwh1Y^%Al2Ziw= zeA8(4tkHO;pQ-BG@azqnH({k3N_BPn?3hgt{=l=}Sd$iNTTKuDZSNC~4YvNVL07-% z7Kb}b*q{SJvejs`%-rcA4B3>VQQ4BmX3Bn}YT5Oo_$??TrRA}3zV^%7CN7&^%eKEu zJ_kG9AxCNZaMUzt?6>TK3_{UoP8|8b6_$E&GO{ihcH* zI3ikV`|Lz4mw;$uL^LJ)@T_S!iPywK4rsf_*PAOBs_aG3?n6#|?DD9J3ES=3yUR%6LQbw$F}PWlORjCQzA1X=|S) zu#Wn%K<|mffGXQ(y?MZeW(e&MhE<^Hy=Pj7RIx-aXS22|J z^JZJuwKQ6_h1jNA*w*_Tr-i#4Ug)(&)Wq&#yd7NzADYUYEz>R*$BNI~9QS~atBS2H z!(o8D>u-n}ifXDA2~Yzb_QHJ*56_w*?HOQw90~ODM6*on1pgoeX)^c?R{+1cdZ%q& z9G@ccx1e3KE!7GWP|R4>0O^?-sv93ZG~WPI+4!)!>+5l@8Uh%$L$G6!UvN>e-~ob= zD!znK1 z4(+$?wwlDp<_@-d1S_=xo8h^lG*itGwt@D*h?THqWR<=i-$oNl!!IMW;rCzlmdG7W zD9CmgY>bHB;PAq|OK%A;j&Pbm!JslxKU?L}K*p5;5S*x)UMhL6Y??Mkxb4k`o2p{d zmbZGXv$jLD7aF}B4!zJgj>QRSX-u?3@U7b``fUeExm1}pP4Jd}((GwTVMv!89RgT7 z=s2|a1pOyone&1pqgc0tL*z0Sz~h?&0%}RjhCz z*gfuEM?!I+md(52!FcpywAt3A6{LbkSbN6@E=`j*fiP>=!kBA+I6k*VIKJO>*91(W zRRMP9pxOcXQ@kB&J`HOc=_yh7f!>-5@|}H@a&RQa8t!Uu9so!W8Quh&$c@-CcEWeq zeHx(nET~8*iqm(@Oz&(CIGRf3DA+UG{k0F6>gvHF0bDsgMEh95>thQgbp^03gQ*?2 zSAQ`=JV*}DKzMwt8r!~XdNu-0+J6b>$<+--Jl%%X%mHT8c`ov3qChzc6CTbz4cEbl z+d=2FI*z#$DkCHnO(KYyLTVca%j&~39AvO-g09S;)}>*`BxXSWZ{qGfnoi9Mm1ixn zHtoU6+9SC(k;2N_L%Fsjr3AHe*b^QyCqa;?{;@(CaE}BfrJh1ZhsIB)|*Oc96bU6Tg$mpG1i!$X4sW`rQ z0NB<2;&_7%Nq>Z0f{^6D6`+JTZ}o56tx#8;CH1q%8Ut6YljEV;sTMUmIGqj~$$_ zjS#d*ywz*_G+@Oc>N)xzL+~ZYp+`FO2(#Sc{~-54k? zNQ6bSd%Y@2JyWd=XvZiMy@HV(z#lM5HBMIUlICPBRpaIyghRRW zqz3wisEAg%vPn2i1nLTvbwWgdjl0>08%n50dH*#Akh8aWWO+35 z36kd-H!~hJI#p;8$}XfzIy88QXs`!O?Q%2-6mW+Izp_cv&;x8W_>vNGwKcLHC2z%B z(TLZLGjvi9no$3=`SoyEaxxG~B)K1&KuF`<5pl`+@dC`flsgN|twFaKS97KDUP3)b zW57>0-$LNwp7YDKV9gO$ADh-0qkosAG$n^EY`9H?I_K+2EXL)(X&Mn3Jp_Gj5ZN=r z-KK0jt;v`=MieK96c+LPe2Z;ctC{-2CdB@nd%)WO62B%@fQDmhJdkB$1-0#X>u-be zNVR*4n`R#xc)l&o2iItq4d%6bP5M@#fLfa;GX{CGf>qgejAuteR?=m>1sVqSj28(+ zku5^TonHKpm!BWiW1z)z~n2bhOX9iGbSHZv-iozOPc+|Z$5iJR4JIp12cPuoLJt0 z%&JpK3t&KM1Kv&5NSh-dwig3pXoXq~g(W*d>@Pj5X}N4AEQz17qdbSwq~?xNlm_ez z*uOa|9bhMu{OiA?<}Eh8?;&?=o}bj$xs4=!gk?@gqSZUla)kfv40D z|6|JmzT=r*4z9%qq?5)*1f}a_&S20ktV#?1a+F9A?LnIhE9SV6cI)rXBR%uvPW9l1 zf`-OM7?S zuur{V3%lTJ44VU08j(*S?#qQpChuSvyFrfA-}X=h?dlkIHmH}4!Ec}1fUB*?&l~#GpRlQLUx{AUQ;>q;Li-xMSn$ulE}oW@gLUaP!Tk3rpQ~@uY|B zn+@jw&BfE|SPb~~!ky%JwSLE)jpRwM|%CD0C#h6iF6X4N&oj6etX;K$!2icuZ86bjTM_BDJ{= zOz5>CMP?atJb`u8XwRBFVDT4iZrJ`c6f20_1)JcA;xQz6^6{D5!eGg{Zik!4 zvEf5aY;u?@*?a~r1b4fJ6&p~jW20qxd>Q?5{msmh2jSoXn>jNb269ONBz(sEB;yj5 zgTia?ueScRr_?&LnCk zFampW)0rtv5eb2(me`G>G|{ z9EIvssUHub7-)ebMFeA!wjG>X?U3LFq89NXaRB%N3EvslbgE-?oE$M}iFN2%P^Yi! zB&`F!#(o_L=Q|DvmogB7Kq?;y*A+lOsnf)-E;ONm<|$Gg$tvpxGp+!Fzl$%MOomn1 z@=7BMA*+Ph{Lq>?haVjklQx6xA&-^JLp*@&L#!m=dF_DT^b3V~jm7h~MGAEbKSyDWSZH|!Q;a3B0Aj*n<{(=Xw zVEacrog9V4J?I(z@%HYzVJ1Jc8;zT`E)QWEg%)T*Va+v9_^53>IFmbSEZ2sW6t1&# zI4sn5b03+x2OP!tN!6-(T9e^2d+ysa$65B_bTQ&Uq^}T-=|W?BhG+_~Rm+6So%zc|ZB zEQT3^^ijtx(9ULRXztF`7S{NNbipgH7#}8=!KSu9gh^3DA2wF-PZVn z2&_lVq|KVKOp;lm}cuQeP+JH7@N1r?Q0St zgQa&9u?_@n%pV!ACqrf$TYlwE7y5@K7^r6{mOuo>{EXPiaFxnarV;6<^l z^T=7SVt#KRagO24IIx?SjlECCGy20$W9O5RX8LL}2ey-sYH6khtQ$IZ&aV2e;;Mrt zcwo$pz(@i$ix{a}4k%SVSB*T!AI}{$o`l9O+P)Gm^%7LH$WJ*5t=9=poliA9Uwt4l zki&skK2bVaGP@e%z;cA__a#j11A+5lo2=>wZI*}Ttm!00OzeOTdM6`;Id@>3Tv~YM z;;@C?hrl1aX%@!hl=+}lP^ZX)k=Iad=LWz9p%su=1@SQ(OJ2z355;@SRziBkh*QY!>)I8-jL+=ygh@rnYP%<2U2CVf9J z@8Y=bHSy$Wpa)^gH>j*)2mH*XtM;5H*a)NqK9pGh{-|~ z;BLSq5zE`*D{3{^GK8fjMp&~0i}LH)#sY)(6mi5S0*+-;<(A2EVyBHla4l9?4}{9M2BgI4uHUfh*W88)DW zkR~ zQy9V}}!4kg2zq(Fqtz_H)s) z_d|HdGw7!(ro8rbuF3;#Q~JE27zTb9zv*Xc(_$oK(RX3crwEBa9nEg+g8+ zQf5DBQvrJ*tliQuZiA^?~p7|`SqmXlml*^VBxv3bJG0(DqULduiEb#Q;*pkU!w2KS7IQdXjNiKM+qQ4$B2t5HW_|3W z-g)g{ydIz1icu-Rg#f7xhf3{YgFZgdU>DxS1F4(d zfm9xzBz0gZw0DrP>ke((*NM~xQaG^V4K@JVPuPQIO8>x1C(59f+VG*q|2G;iafaNdt=f!28IHuw_J!?NA!AnRG%pgY>Nx<{x z(x>S%I;7O)KWf0xI^Jko6;U$EEoNw_8(p|($|kw}0?rpL4H*-N zPaqL(hnUG3snvowhz3o{YiMAm*6X)l!!80lWb$|e(I6^kErku8cHo)9mi$;FiwmG` zV~%8K4;mE-|C=u|;$zKzc7&a)+@WS}2R*_xbMwa0u(n1ubJ< zK1m<5No~|E?rkIhs$J43gWfOOT(3?xjg7F(_nIEGV*n_P{alm!WLtx_602bZt<5KH z9J_3r)0*kDFvj@fWMs+a*-d4vuwdP^8Ngab8p6cWg=^f3?p>2tiv#<>And+t&E^vW z_YXe@*)i$6b)E%7AP;=d?zqSdow-}5cnF4N8=6FO-t$}YQz^i=ZGYm|W~c!64cz^k zvLqdFdw*{-dvdff*4^PCz5a(Bj$z(;>IwyM<>G@UKEh=?>!Lve%<;FG}6{Q0!Q}Y zDb`62WY7sx1lWFNt)R;aX*5{pDN>4LmxVL-=iuR+qo)*RA3qDo;6rv`^~K5u_51?~ z7Mr|P*%|J9<@2;n^bMSGG-Jt)P&8^WYj1b1%7@zf1DC#}T0L~aiq`qtJ{p=JF7orH z0Eo5MZT|J@vO%AlexDuF=LcpO{Gj)Ba=~9?M#4aNeFt^kxqpvW?zJ$j`3D^s7K`P3X}cMtmlj{@jF3}U z5`5z^8toW3*&X%nMh|kcC88J6r+Y}`&C>TVOMuXP+gXjybn_n#=#W(+irsAohnZ~U zi8nSyoI0=NQUqm)IK43H*j201nF#HA4Den%&~~U0v5hO$wLRy)p++kKa?-S|woX>= zs8*lp-#;{gW@0Hd(d`#==o*qSgCy>|Nhzo}VrN(G+K_nQMKD0wx=6h^(z6-&a<9{P zcIl!OI!{C)OtKV{KoJzNO+Ac4%xY|Y5_RRf5t1XJ!lb|k2Ma;uXosq-q?*uX4_Y{) zC z@fJmy=StDE3(i$(Ocr4^H>iiO_cM**PPo0Nk7{i6Qc*X*z@ZA}k zB|hM?Ad!neZo<=gEk5U9bdpCTU;(+ixXUEUX<3YN2TPvun>Tb^{aHJ$mvBG@J~fsn zNvcV^HQ1wCtdKTy2!9c5fv5mS#VGu2{^w=mUQ4t`+UOr^J-i?BaUp~-X;)j1_Fr{H zkMn!+rc_!udJt!TkDDCwNcvzw!l zpfa|g2PvK*!{cezl`5@{X6@DN$R$v5TTF-LSRZH*j4XK1PdRGPAqC^~2|``)3Pql; zGdP0c?Yhp>1Oy@}z()H!i!Me$;ht1(k*5JIOwBAx14=3xq|rQifxZRqW#qoi zD3hnuuj|dOY>kK~s%WmGtd=}FHs1bzGh{Z^W`bbBpoxi$Js7AyXeHC;2D8vWYDuw= z!0mgFzenfDJ;^x|Y&e2Eo$pD+&zNsE$Fi0}%xQuf?C`2ahtgE^nOAcpfrm`j9Xo>x zia#PnB2hxPvZG@>{3(q&rT@9Rqf_B?R(O3tmiygWmzZhVi!VGK>zd0~8!cXlmK*|T?|~46rBSqBAT9#(_UnLA32Ygk(^x|`*4K=FPcQ5gHsr>>1Waj zWp7Dll~QjGc?6?R+nJ;hm=`Q}*yMKs3t?8?wAgL#O7iInE*!~%bV|;MCv`fD+)Ew{ z8MXx<=$9>OeE>AL4WV+@Y-MMiIz5m$AkBKxo+G0F&}^eyl;7C$43#V!n(|R!^neHd zK0bw!O`iUO>bFVOMoyq$q^QE7@k!)7>`ZYaehQl8`OO{>9g!U3? z@S3#wwJNO`Ei_$NlDq2;hrD7)EenaJS=*a;4Ph+bobd8t;0;uKY@BId zu^1cJNW&4}hyIl@o>WVuLP~9B2j{J+6jfsjT5-VI>o3AI!F&~KT91xu8jq~}pD-SU zUI7Wy!{}*G*mVfe;L#F+gq+)Z9ryK!xk;^B*@M0{&;6mvy%3Te$Cq_a1&cu1BxZwL zg?LCMQIM4QrRJ_6?~7M*vsq^t9e0$e#B zT6Gg>QA3+25*IkFatuQw8-WzQECfi*S`>mHM^W>v1V?_pt|%f`nm$(t?MNTA#E8cu zKZHg)K*|#B1i+Ov$N9UR|J(KG)Dc=PV`Z^&ZOKlFI-g)6T zK!litlROP)ms@z|SqV#xgkATZ2J72bf;yl0K(7!ZpbgN;Oy*`o|5^|Mp^L%0k&~QS z4d1sY#nlSL9!BdreZD9fe$?R}{#>4lQ%Qq^^IX^Jr?wQUikjN5CIJrhQU+T{y8JJY z2}>PC7zDysxcBnmmt=n>$j%wXepg0KzcxNo($y{Uw>10k_4zNa;&{^Oy0G&$gO0 z#;4dn`PN1&=6!{blBBgUp#M1?RdCVgdn^4m%1z)>X)S(wjh$)^gyym-oSGdp-Lcu+ zzte)~x72fhibs9`v}Ikx3g#>s48g4RJ$KKM2c?F zc^;Yws>dB=i5Bd!X518fNR4;>D3ySYvPqNOUdV8QG05yl?^DMK8$2E4OZc6;Q|{L6 zv(NBON2PwiX;AWD2rY+<@+GOjMu%1JFX-WG6NP>j1?L28g|@bYYe8X(E|4OO>{KQl zZS7$8avSmep^1_TTzObWpiAo3Xf1Drl8JAI3;lIvcm~9GwCQhPq4~%XZ=cCTGC8m- zog&4PcQ_+pJVO=T9!3Rx+Zl$xNE$8lojN%b zs)0z{kMu{{EQ$pAUM1ELDX~C2zXtI;XsT8^p|W(W6K`AmG)Ndi{qVYMFr zvu41CmkNYjkfKjniFj+ziB!4MQkARGi zKWgV7&CGvwD2ccD=9q;7!S5Grx>)FYbm0$LxUwyOWob-7iq63QA~g9)Q~RIsI3>@+ z=iI5kiS!9*fK6byZ}j0&n^?{hHay?$dD`?+n?QHA1b#+|+7JWlpj(^HLosq);U!Hr7rfXH{36ismYhpqp3j^52==|BvDWcj16G_K zuqYrQTJ5ak!68m9aAI!+LIf~30y#SgV|_R~#NFHBd-9M)se#4# zy-NOqrAHM))c`GA6&Ue({UrrSeN92Qabn~`3;8kY!iD&@wwe@7Y%+7@+6QEVhxM&> z?pluuju~j+zG%&cRVlcz8syoGM1Z6~K^9N9>X$8^bXc3YsD5w_b};C`l#!cTjytt- zZhqNhgW(8@%E?!r7X>p=ULKv?>_d}6L?f|}r(X6n=}p@02VwffyT|~goQ(K$Lo?an z3I}>$YF|t6e&3D@rt+y}E*$;lb17Tq+M4RIKsuF{J$`BPJm)N<^E2;413)u#sF6${ zM}dqyUkA8u&fypVpAh64ha>lSM5=!aD8C@?!1-t+nO+*NpVaXIAMgAye^LIChL1@r z+A)_(_LCf{-{xs2iqpmzvQk1M6Q;5Ag|X-uRctJF{CtF@M#sija0Bq@PQr{p26q)k ztwaUiHaGK&k)PBFC01DD#RAKLKM^Er_xXG(?AHBeaA}id2Qgt{UM)DKh@G=>>6|-{ zDHk|_L~ZC}IhVz@^S|Vj?8b7)En&sxD{K^h-f)2bzG)j#kJnqiwe6#OsfK;Y>HW67 zh~)#OC_m-C&TV!y<|R8BgPF;;xX8F|^3gNmXm8^S)D=<0C9}Dd* z&#F9(E|eoeDcmaI>Yehgr7SrX?}sf>K+xBSoA5aZC;5OX(-3>*w`$_W=$%nymy)v5 z`@}XN^e&L3#m`32B!cMr4n-`P+%_&6$BMw6(Bq=k>o*TUs7>NG?68~-ex~&Hf(vIB z5-hn{Upc#sE=Tqoy$+%no^w}~NyO}>plR(y`Ip^piN5iYdTkZ(pU;q6eUHiDCUP=3 zSo0%y;S>S<6Vo}O%{$?Bg6Op18=bv(`wL#QP3wd|w86|NU4IFN?N|U%^VY;iM-s@c zf7&0+iLWojC5z}Oi{x1e)T)Jq!sObh71;fRCmL^XIfl*c&*C&l>+NlThMg!?&|ND2 zo7hOi%bj1#giS?9Nie2oY;NlQ&~&${*?s+6c ziD|EKyN4zD~L1%kbH#kY8RI&VisBs{=$r>lTp(V_U7HFdQ z=YkOrymWC}xWW24&wD2XMCZ;Ne*`OeiBp~KBYEEcJbK^)OZi=N1_J&}xMTmL|6t&m$7zxI^J&ml7&)gZOWM~3?^EV4miNHtU z+r91esw56ZWu;zxnz_|xD@!Fg)&}=|x<>F!DP>bh4J3%voN)_6tOmq4ixWacrxIz(0-oDnxIZi?Q$ff$zckbgJ``ccgTkhgrDp{m!C2Mt(CAPqv+uL&u~7kp;D7zUzFInc)V{?JV6r7MOak zn!!N`a>dazxBL&A;jLbLI6gQh^-m4>$ED9m-)i84T}J-ln~7>77cQoKGZE5$crz^v zj^DFVxZtJ*9E^?)0I|o8BRk7xm%#uvpB4{XqK(OS}uzF_nOxG_hn{l)ehLL5#)m) z?X6pMn^3?8Lp&8M%st=0Y?w^7ftdrs?!pH=@t3}vFi8#jtrRE*R zGbuE1B@^_#;csb>bFjHgQ?2{lH$lBwWILpVu;$UP(iCACOF!{hGy}tC+MFI&6Ai3n zk2$v@e#FS6mc?a6mZ?Z$0gRWo6YuT?5Qqf1&%^{4F_oi1&v1zrXF8I88oV%OGDE8+ zV0S%_?JR2AvfZKeok%<=Y&3}N)|dUHF(&fw=K5F?u;e*eP#^2tz=);^!D78ROe$d6 z=0G9itpZZvo1xo8F6W!GO@Ocu;M=i7YuzQmbm}|*B+(Cr5CVyxn5m3UD;=x{g!P``)|YDhdpiqj54BV-Sr=;*&MpVFXOlB3^0sv#y|XW0nm!86B2 z3Br{F+IE2V1?k%)+_9Zc5rhwnCJLsE94*ue#1jPZRR?Xjoox)gGe>uf8QWcJ$a6ge z2_!l;t&%y(8fdpPUO)GQM`}S>t*j25BawwSea#eIR!ZjO+y!|O_8gc$zqo3fk!&3F zLN5YaX;eJ$Y|s%9^lTW>l%J;csKzg$yUD*yg!bKOaIn<|5Aa+Xd64ZlFis{XD;06m z#(iRStH92SewE-Ee&cIR4F^l#p_9_qSn7gU7eK#N?M;*EP&r{bBiAh#P3QCbWzyVn2Ckrr*;Jt zpn#k}TBVr`sbBNU(fX`$ZW zInXFt@MF_nI%$ujHHB-meVOI7DPCPF?ZLor8~h2{&OxGs-4UHm(_u#vBtTf=;klF_ z_W%=hR3*LUnZKk>M0R!)LBI1E(Gzqa$z9L{(tYGnbEMYNa=8SZCFCa7!Y1vrF-a0$ zN9TV0-L@5ZUgT@mx~XeP(2F4_l_qs8>e>&JW6b0YGns_2K%M!M55;X`i23CCC9ySL z%y*tVXvRG^_;I(WDvca>Roi%Ya;Hs8T%d*981DrEjO())NF-t#sOUY!9~UiT3av=E z^J6}=;_b*Ejg24Mvs+|jGH==2lAi0^%s7#k@FZAZs4@!mZSCg_hv@*MHXJQ}m@Wic zwCSqoc4u-6qx+PfC2vITp9qs=s1)&$xpj;1*vr#z)`>}=lTN8bpckMRZlJ&fj{s^X z#vYW#L)+K$3?>!kIo~RP8Aj2RTy2F5^PO=D?sDqU@j^036>Yqo21V{&!Bldth5Kgs z9V3%}))1{B=H3cQj=Ffll0~zO79dID2u*kb>?%uwEPJjDTP|T3gWYy)8nosa2h&m1Yn8K z`Ul*+%ff=p1%ZFqwI2iwrc-3rXb-XdAz^#OeWHLf6KmuJ!6Y4pH`?(!CqjaDAr%SG zs9L_JrF1}g(3zXpRSH5grd~%9Jt#(cCi)nv4_*oPcvxP+Gp)K5uI6+Yk8LETdxcDw zet&Gbm^t%r|t;w?6Sn*SRiOB)^_!Vzo9sSd$42xx)ClkkUC?phqRgRc7Z3DD(zTQcB_Leb zuRA{TMU{8hPT;Ry&`hx24pKIGRv?1r@Fq-E#akiNqp@<&oZ$oU4R2V8;%kgMQyK#v znMqt#RkQoENOs0TKJ7fK>^>Kc+JrgvBn4kG;n%q26r$kd>lCn{e}Kt`ajCw{$z1Rj z(H$BcnzJ?&##agkv@S3iA-^BVyFcf?ut@u%>Nb}IVKQ|RkS$8zY0`>BR)-{CCBf0e zNbLA08f4Q&;MAZEC^Ss1k2*0xY-Ys(va&i$g{&X@Q!AWWpe}V>l+6moY1&BpuRfNl zVQfaj$X()%G~)VOW~(BXmY+T7ezQJ`m(9RHBW0_P^5}yUY;Q@WAaO|~ND>|LgAxX# z$FcIB^9C1`f`I+9Nk>v8R$o0Rd`p9hY_(j@I~9<*5yg%L`<(D4AYXjeH2~-K8j66C z`N;$(OPTb(*M=2hilMBem7JFB)S)ER0GtEP(HWnAW_|p_4(4LOxV`I+fj-F=U>ZJ7 zBQ$B;{w7FV;+VWsB*)arIz%{~N1G}UY$BXDHd4|5L)G}*#~-yRyW*A$2Ru_HQ#LmL4{}(7vT$OT2nbBpH>9PYd-aI+5ZB0$78L^xhpp z-Q-6{4Vi+Rwjr>BtCX)u`9PSw@oYBFYBGa>On=ml7=8e8A(vzFSeSF#n&di>p>^?9 z;6_7mRwE~i?obG1Is6tJA?4yb&6W&V{4|H*AKpzh)h3JJ?8!%M-r{!X0CRmhq-im0 z0I2fQh$_=Tj+)+is}4!18L<)I24#Sbk{dW+Bek;j2bL46&En%IXNkM%VWSN!@>ARF zWJ`k3*+K~~FS*4zemya-Nf`4K-tgkSK;fNLgaMJ?ryq(NJ~}aE!=JA`wDj;y^iJAz zG=cmUkc}i}xF+uN15ttmm%i_YP?dHD-=Z{2KNcov7Hbb%>7fc+%AREo>g-uM$Six| z33AWSe{HF);Of_X@O2<|M>ZWJR8k>kVxkh)O{$DG;5SUZm4+JpLD}hE(fu24dg z7;JE(oWx*};q!E*gl8X{*5v`sk$GrwIC{xb2K7_&PQ=5l16xQDoZsq zaRP?m(Ku~8-&})7A>3<9IU;KC@Oz8#a6ISx**yGv&BOV@WQjWXgz-V-HFc{#iB~;$ znHZ4)!o?1#Sif-$@B($jS?8-TK$*iiU*a78m~>@01{hz}UX!Za|EDv+FW`M=k$75@ z_o2jZ)gup3b-18dgS-^?n(pq65Y}$%jGA*A>Dx2|DfZTH1?;VCrPv!%)RN~dh+jk2 zgR>?z{X}HV@M_!R%}MxE_#7jxt>leeHEKikov1oq&%#X`gd!jH9Y^U<*%k(7)g?+n ze3Exv3%f!kVkLy&0b0{^ue23shmT}W+MZqtsZkmKO zwb``KoENxlQV8w7Zhbz`r`pVw1iIcfO&jPKZB`%Nr=Dq`Y`WufpRF4E@`5ZGTz!#b zfNZip`~wpM9&~R7A!2ou`APjQWn~^?r1?&8P5&x#)~lvH>0hBs`@|u=@A1mt_B;V1 zaLa2E;sCh#D{c#ugiAWtKxo)!0)K#pnn}lbRA~w3mMJ9)Z*2csUp=zI?g zRFJ|vNUETQj_8!wXH-cV?}NA12RJGIcqi=Im$7W1RQ0uSQW7f+1Zv5iaq6hqi*B1(GBNrGVCRO2eQ z><3MdU<&V##i2+<#2MnWy+)4vduCl&<1mzM-ZgHL?-iIXG!{_ zWv#^_ac>SJZbC?eVWVFW5+5}rZX|jXX6k0Ie6E~0g(2ndar5zRQoq-nf1_~F#!Zv% zst?u$=JadiJ?2E0g1qa|B*z%ZS&|3zJJ0tH`d>D#OS~2wy(?JjY0D3Q-ymW z;BErI{kNwQf%AK^r$sIyhO2N~A7ACwlM|G*9f`#mPnfZnO6!rH`!n(75#z z&=~w9`ztytoEH13P}jFtmDXOBaJ-xRR#)0ASZzb2C?7-PtBdnU6rEZzbka*}EXE6+ zwiEvPz|F7Ix5X)egP8}<=8NIpVO4o8%sv=4(`#W)Y*EL4FqaM1D1-A>-?~5AB@F7M z`q2Slw_otGi|2C6g5a!+pc!i$cPl-vJh*7-$R~Z@v@e=>7$N@*&IE8zc0hfrbyFc@ zGo>dEtnu@wYLobVNyRAbS+#QN_QJKyd_2R4ti1^V4_m_33qjeW@+vfU-R7qiQ@Z`} zzx4zHcIBa=_PChbrh6t-tml6-7jDBhg{|#37?^9a8NSvJThhbMn^2W(xl7Y92Uyo$ zfu!?>;MeDgulnecy)cQrK+e`j^IK4JrDaq1vSTWOEAIm`>$4^g_l#{vi3}}CL!H|k z*Ugah(jHitZ)}+)13HVSW=KhL-EUHoXfiny9ig!YH`Dc*-I*!|(R*%8=J<{`rXZxw zwR#f5A~n%on!@UP^SDuLeshxwu4URw@+WN>7}_paWA>CZ2*!~hTdXJ$ z2q9<{@SWC^O5SLUldf;DxEo{~n{~t^e{PxYAQO1#U580a72pr;1w-J8q98lUgL^no z-u&vCAcJ@0gEaOUpDx=IYr#!hG(*XyKr17x=5=IlcfFs)Od;r;+H)$JF=$o7-`$Mp zlCJnC$AZgeqiuy13bRjm@k&dLYohZoQl)&b|Hi}!q7pb+E~%qe9=G|?gHb#JRldJP&kV2JwA6ox$23z!PX zbRaLM$h3!hfgK43W_6YFZ5rZe(RDzK7gr>F=) z@SGXBXovujuyG&r6W-kh^xoXA*q)NM8wBR07ROpB0$!iPjon9nUb<>iczmhIb%l4| zWWJ~-ICQPBIsBVs*-`?^z?Ph&=bny;A6O3~bAD(}>N2t*M6QZNf-=)R7AM79!U21-daF&t zdLj5@-V@R+YX4k?&7I(es>mdd0nXTX zySkVL`X@QWDw#+YK(`s%nxfnHBob0;60)G?{ zU4T9uO2=Al67&QKk{pvlVi2Ccv-5loIG}!4Z25I?#UA9Dh>i~1c11SNx?yyd7Inm% zqwN^zY$hR6u>QVwdcxjR3s_OIFV_$@VRGUH=*kmoN+fXWa;u27hj6=<8_kvuX}t zZ{ph!TCY}0^}a*{$t7!Nx4vC_-=w(mvWG4@DXbaBs?$sZM}weXQrRPS)kN^juYcMm z_x!hlSD5Cy-)!TZUf9zM0LV)i+Px-^G7k2bl%+ZH4@s6@CK!s>+7n=WgI1-`B;AZo z8{AgEY=uf$H@q(pz{k1K zG|B&Mfdf#*VJ!PJmRUuPJzr#r+W%^JkrdPDMPc&saiek?G?5S#aVtE!D5qZ{r-56* zrjR3^_KpMKo`{l?L~Dm&qYlDNL8GZ&7y5<+4lpLiivCJ>Ib?tsXz#Y0cI)U+BdG|x!FV-hT-kq)Q4*I9Fem)!)lbf}R^WNIobnQGJe_yO&ANH@^S= z`@45Hv;Vbq|ND*2&F{b8P~|o@?>)G?q5l2CertU$rn7vahVrHDY~Uwz|Nb}m{NvVT zF_{j^(XB^YE4NMt!{XMXTLK!~TDdhXFDBh$dh5~KTWf3U>c8G#I$Iy|vc>d1lzs0C zx60A17|o#0`gebMH_E=tc!lhb?C#pbwGH*}es@+L7n5vrI?L{E+`W%wPiM37qxJQx ztE)9$O<`rXJYUBmt#W)bfp^(*_cqkr$PV)E>0p#SFDChAK0AGk<^Db#bc@ln$hKeX zUT(o7RsY>cjVk-@YkuBM-i`b*?G3tYM4vh%VxI8p!RquzQs$pF}s!SThc$Y!U5X$B2m<&z>iQ7`k+4YW1BQ0=QJ zUJYianR*QWmKU?^q$n~~<+PX-$2VDjlB-4Oxe**b?PLf0PY!=+yy|2-2ic2P`)_vI zop$!_R^vcDcy}vnJa1=EtnvEr>He#%y>rmoZS3qFWR2b3Ox1hUcz(FkImmw5IeZFD zzUpi@Ua2bks+MYzT7TZ!ecj%9zKs=k_FnAnsD4-j`%kjH&a2i_^|R63+1)ujg65$6 zCp(AFI|m1As*UXVe%5)@d48B3JcV}H$eNvOcc;)?G1KWP$uLdH(SH*qUQwFIn^GWvm@3}(k{wVt~JGmHj0qvJ>Xa9iLnfkET`^RTR zceZAJ|M7<_?+Pu?SWWl<+Al*d)0J$Xn%G>)prw4$zc^PEXSy~lMt!yU)yuzTBlXXn zJ3$NZner-c2k#$;1zb1dOp%o7?QC$8Et}zvC*`c1-HeO1(|o#rHF_~A$HioJv({B) zYFUkIeEW7bdpmxwI+?0}yvG0JKPJWOVxkCuEAglMW?or1tmWhJ@MalEzzU80HWt^F z;C}|b=~%J$USl%JZ>Ajj1V1&p4Gly1XP5-yU}&H?&F=V6v&EveC#o^*dU<+#CHug7 z@|zSFHV@WjB|Fm%oZ%SV*v?c#XR4vIJ9ktcL2C%Yw;x~$^0#O2L$FRX;4~*d+O1f{ zt|GNrd7?Shw&7I8B@DxqXbgwuK{izscG$~~i>z06ajZoTDXl5mEQaNk!kt+$Ims1A z%z$PqGT#Goe|#}eb!VrFWEaQN!HgO~CSkkN+X`SZ-0tXZf25VnPgL8D@wgcE4u*qX z@hDpw_8Y;&r4?IzFdEFT$d39#j};2PQRPZ}_0;^J*ImWP^TDW?yeg)HPr8qm|BMP> zjC=X4z<#G#@-=%v#rVK4j-SrXhtbgWW2$moDD)`y)jKTObU%YuU5SSMMFplXjGb9= zzFX!!EOfx1gq;ygoAf*AE`WPbMDb+xu%!f$4_M{}{iZ^_N!~wDqNrY*w*BQ7*efp! z_a1)uuREijd#k>OGkIQI&%)WbXJO$Nlj1Tg?4E^%TSFywu!8tIfDx5xxSv!+ky3>r zyTyr~|10-1EboH9kG@9{EMzD0)5UvV!&j8~nwr91rsw zJ#_OUeobrF;7_E215)Z&|f}@C&03g#r8K#>W4q$5(^i>@<3s_j;|NVpr+~ z>m8tBAH$g8_v)vzJZH$Hl+m7IqU{SUBtOcw*kBzAira0B2Ip9VYVv79FHa`r`Mwg$ z2kPBya#7IK6zrP$WZEupk*SuV>{svt(e+Wb2@vs#NL=M&tOWeoZqd)XH_b_THHDg9 zcWO<`tG%K($oG}zHOv(*oaDnP6}SY#yO&=dXfnHb_lJ#Dr4G}Khl)rYl^2H>$AzXO zK@Yv+B)=HWTKO0t@zksw4Kkk$^4(Vmw|Qn)%TiedPsU)Ti(#6BF%hQJkUV zPzkoBV(3FPT;Mf+uS%92BGbI<9*r)}mD;|4;&|wEXVfmwVZTu8rdfaE;=^B*iV9nj zy%;H$WQ2hw-t%Sja4_l>*BrG6CzJfV_(h~j`rT8Rkm;8SajNR7*NN)A@@k|36JW)~ zDBhoXOc&b)==REHh{yI$e%Hsj-?F+RcCyGY*7z)E1%fBA^Dj01W ze^|mUj|&jc{da#7(hM&Yz4s>pRuo|%(2?P{YHHYTW~@z1UazyV-yas1#Hg}|_#its zPyEt=wga_^tt9or{LTWFZSmfg1F=jhLvvngo3BBKiX&M${)PIk*@<7~9JmjNx(X0a za_T!H~W=pp2Qmoc#6%H5QQ>|Thtg&TO*OW@0tDQU* zECKq3lCR8{KmLfzz~}hlSnV(oV;wT(qpl*L$n4UkdWDi^)V>>C42MyHKO;i~NQK3v z0*X@+*SboxpA~v~OKh%7x1-vs<{GR}5+ZA6UhX$d!adR>jvF@%q54Q$IHcv}>qC~0 z+so8LHRk-KGb|7gWQb8*wtHGg>zgc_{V1)DP<*)(Bs{k;oPboSkP0zB@askUs{ZvYjrA+2?%(>ID66%$37P6pQi zj_hqXt);_BKGGte6|k2glx2ku6(v-p#qQihQKcxJS2p9n^v!2DcsnsQX8irTl8P*B zY1VPQlfh&~tzyKM9O+u0vr zI=fVFyBW~c>!s``Rrpc1Jjwnu+qmAs64yVZcK7AltUN&8xvX0AF_(T4-Lin8Ex=dD z1Cd>+70qp~LsKv8b@K*!!eu$=WgDtc=AJsD_}C{qjKMf$`3p>6ivddl5Y2q2m3tIE z)Vckpc!nDXFA3{%0!B;Q=$ewZ^$3>LqHOx$gfT;D80P;~F+$Vp+DCx%9JKcaUMQBd zSgQ@NXID2|x$;HcJ@u9xzDX3_+t%r+dwVgOA1*p?$e4<8<(-5owEp(}nj%UaHCS!J z_ZrcgZ(*=PrLdumidIBwQw3Y4mA5nzFAWj*AYBaAwwg|@Z$goPe0Wg=lV4v4NmYsH z#bkBRAC<;>Z9eG!F!cf3sWl={tIKcm)lctlulEO>N-24wKPfN9o9VUG?-g}YZp6CQP#@esS+;|{jVrz?bzThDrn8%2@pkN-HmCWdFLQGF-@)UT0LANV}n zUM}n={v44bpUr$x10KjE5O52hBjc^Y9b!~mjuZ;A$t^8K`|-~zWa2F=*>cvHncxqc zK?VEJvMlgh4)tMz0)`D+&{WaiMH!R=V^0+KWXbqHcDI+)!u*QA*KXHC1BB*3m9V&3 zFyivL5?R#NXGmbhM{oMLx#qy%jT{TVuLtRIKG8bWJOwD~##FVtsa9_aLuzzYq25(B zJ}J)2%c3Ds5Zo}KkpV*%)JqI0afK{B&6Wf`wAMbwHmzK`><@&~-ys_@Cl%rT{le{h zHOa>wK+qZ?@TS^ivX)E_(1os*q#>BVblb~Iy}@MwXH#d*jS>V{`@PySU@-D|*#mAg zRU(ddZZDfQSK=yjYz@3cy;!Z&!LYYHryV;7<2a~OWzki&E?aqJLsUnF+`SBSa`poF z-skcsrIYM*)JhlA(bCL%Rk05 zQW!yuq3%D%Fso0re%D1~D;ZkG!XbSArdP!Ad7&MrV?dp00bVn;FGg0SonmOKdtPWn znWo`Yj$&KDbR`?AEeqa;Md0=IjH`MS)r1_&q%>!Y2VNUYbzHEWHCEX*Gn>A}pYJ7% z=b#cRfdea!-I%R_V-!YE3?&1 z=@v6AR)s&^Lb4`(4g%qX%aLs&sdEu@%99g=2od;(9-O`^r&YbiQ~uZN6mv@8Lvb@r zpm}odBm^87n+C3LGK|fHpRsYE-g{v{32ccM+-(QVkAxi&7$qxqMFJaY&!Ywr_(DWe zGDW{%Or-r~;v~McI^6YQDMrOr9PbhWJL=2^q3D0XffN0)Dl z_U@oA1X(5tq}wlpk;2}mhkLtfpitwhY96XR4^G0605x^Fe>cmwgG_oSEM)NhmXOxg znR&3TKU@~N;1;JMY{AVC3{{QZnG!fhGnne~l0KtRz=05KDyFH?ipVO0>4V#$YP9!- za2-#Ie^E)^_()py5fBllh#lhBJ-HPI$v%IAq`5agC zB6@(V$Kg524Kc19j~B+T{!A|nhK(vw)P}-_!3WJ!p`7B5t>HjDd8JAQ5n9jyz;rL4 zC|+pL1w6b<@O0_64is9xy>{*jc=eU=zc(0NOtFzn7s^&K`^WUr`nqC~-4BW#OiqRh zLm>0V$BSZ$2c*}xHXdwl-oN+5`e3@MhI(v<+Qp&5q*eh|s~VW<#cIBKH7V7zN&F4J~b_#C=Fz`?9Up4#k6SeaBKN?v=X>L*q-|4*HE-3sPJb!UIFm^ zs#sTnE_TNX9)*huaPR{hO}weh7Kfv2<@xwxR`jr>;LDUO^$JPwaF)wzGR}Lj)Q})W zA%=vXM2>v4I#Ivsq1w@Uqk)Anm=;NcD8vRM;w*bfPmHx(|C!+?@4o>tlTTcp%g}!m%`+bm<($l1a^J1!I4;W%2d7HW@N3Vmieh$HT+gD8@o24AaxjAw4{;k~O!A=^ zQ`NhmkCPDiy}|V3#dN2qP;PKC@Ib0xxpuXAQ*G~7Ia0iFrj^-VKFe2~#}m9!-TXWs zcJpcB;bd1=IxO3&f{i6&G~>yRq7Hd>mEWM(YS@QmahQ9eUA$U#KAjXNq2g?fKY)F- zwd@xYmI?p32=XNyxzeMTSOgC*n2yiJ*ETj=tSf}6b00>Z8Tk5dH{S=r=vU=G(Zn`i{wDuFAv+GQ z_Q)gOG`wPGvEmIPJ_dp7A%vceno9Q(w^U|Kq!N?{2X?0r2y0?{2BB#s;E(sXFVbl6ob2X)Lztkt|bp zUub|dF&=6t9$;#ly6AwozegdQR57yY;CNW*)F!wgjhy3fVc3V%92DcZmc52_PCzDq z^Ae3@C1Rw2un^jer^kbHIyS?}N(K=FN<3My9DWx&m5c+rU=W1oohYLIXK3z%ItDbT%jKcB?`>Dm0#uqJkuNwH|kJvfy4pJt6z-1VAL73 z0OGR<0bMFHp7Jd0iE^xo8R~4eFp1wcRXg!eg|v0H7KvPT)F=q=jFcFR4O)1vF5P~6 z_x(z?xe@Op3#72IzZqCmc!nJ+>E6Vq;d4AG@(<$Mh%&%Ot@bScptd5c^2nG#8xfYiK?BO#44&D9!)+UjFxq;D|%{iPv zYvJK^Uc>dgt~**`4X=yMSPO_vZlyv0oo;%?Wx_HrHqW`8Cc$0)-YcfvY+Lb|nLYik zgU+(!9QX$$fK}XO0NGU#9cr@`D_;G>2xvxs{*#x`vzliA&}X>+%-j+DtaWf;vZBbG z%9X5OSF>`wk{zQiy+Tuvj8LhU1o~>$;PWm#U9`M3IPXIs8W;}(q{TjwkExj~OK~xE zI%U}pyFT(`tF?`!SJ6&`f_k@w?CfHSW*Em^w2a&xUi1o+R41F}C;4Px;I7bU67^TT zU6-{1QrC}1TMX@R5r8S0Pz+r!Sk87J6g)7-AS@>tgP<6kUtTtlTD60?t#<3(*sOyM zX`{PZ2DH!K3Ck=q+m9K7Z)H=$j1rn^)zkK}%4&d_S~R%r*@5GdJ`xN=t2n^o24P`M zU=Gx^pn;3K05H&SwlFNJYQ>;H19x0-7B~!%H+Fx8!>mI~zKJl#+eMc@!t#!|Qw5EY zQ4ONQN?pPq!+ch3DS9FR;5z$GA0>}oEsd{NGO5ZbJG@BmLg<3CfC{I!^N0We3n~n#Y?7Uf7$G5?6)m2opkL}w5JJn;u$;#@s>(u zKdEJbFF(G!1xMETt2@~eJbV;7-OU^&Z5GpBt-_{L0@vzkK3&xf!fS1&#*&)tqqfVY zjN0yF5FS>e0(Ro2jFk{r34@c=hAHDW!b)k4Tb4ursw?=D(?%Jb3cl5w6W?y&Q|xMH zU#@fOc z^O_pi$!gPz`l(mI%u%la8yh{$s26%DtTiApk~my6)Xx!^G*bLY>zZEi_0WQYz(A-U z=KVOb1?>*vqWG2fk0E2X&A+27c;QwGzCR!AKVL)cLQOuhg(Dq{56blcSClYgnSNfO zO50PqLTDm}A)Ci>urI~xL} z=?rnI6FrYRKRQ%WW5Pvc%Z%fHt6sckC@ZV3vf@t!Rkvl(Sa+QvLC`NGD`0qvPNdXq zps=uaXzxfm)jFzBfWByuBbx*~W7LMJ_>(TDII7srEJ^{0%H!0^yFu)@eyQ4#Urq5v zfK8I^$8EXfpF&hUIG4*jaq4okj*?c=?aKHm}1^lNZSedIvEE&@5_32zkbF{AXgVak&*J0 z=t#}XX@;GSQdA}ouQI&J2G%h-g*#`oh&@%6@>$T_RWT_>|Ih#Vzh^FGsUmT?j_>c5 z=i^}khVy;Z-NfCYFe}S7wY$3?%2hOp1Wg|6eA=pKV19!SMfUvQ9^A?S-NV3d)CAGs zi$VWNSGL1mlc2L^hw<6RPa(9Tyn+-rE4uq$nVsf9?7{jBmY9oaq2wrg%5VT_Lr1x4 zIyYKPJ_;vkUTaZs4P0c9h<0E&2uNYtXs8&fvlgvoJ14+RPB3+A(4a}=x{?(G0Jf>9 z8l{UXJ{6NP0ueyS8!HfvjW2=K^D--O2;fv!!|0x>rN%_{O18OB0_|X?5N4W{AJ&9j z0aKUdN=$dFGoi=wGD!@~2rs@D|w;_g>8 zg?tT{0Wx@)<%l3?q(%FFUbe=l!8HZFd1po{lti4FRuWMzVKXH`+Ubg{h{dN$^)1yO zpx~;K^=9QLS#^5ZPbh@o=xUZ)@ZZQbvb*pf4o@yWhE)EO%c22+1+!ORzs9=PdxPGQ z`oE&;3FN*92O3tuJzr58t`k@tx~m2VWWkmr(Nu0{Qko7GQK~4G0_>ox!75Zs>e#3$ z|1CM#zpk4CiR$BWc+-b4n~EW=qCA5bH7*CEnJ%}v0;{*Oxsh$I=v7n_wrNh*xfNoh z5T?5SV+3Y|KKJ22ZAp+1Q`^;+n4{UaqDF2C&!u&dtt+bfwSiScuYoXM4R9lsfj#uu}w|iYv$EwOCSzXNJ!ONABeS!%I2@7)Uyci4}FuSqrii&)Jp=*X9wn zsqkuBJ66ezzJbP11t7m2m7`(_gbMu*2R%^wr+Ixk=qWv*&S|G$x;34oEzIg= zFQ*_Z${}Th*8A-RqTu|WW>=@h$Q9S_QLwG(ZBDK4%(ByBIG%z~oMW)e37B6XmC=%+sNCgq&3nDgRKx^;sJafhoP&FkrUFxwS&KgUY) zBA6BLx(;D)xx_co?i&T?GYZFO`Gd~{v~JjDWc8JR!>M8>Eq zM3Esn*QtgSkYGaSR9V4z$9-SC9bE_Cq-w$L2A3z>=hCcyire)_gH-2H%{f7QcRV_` zWNUVe_-|AWP#{IWfcyM~8Zw6x61WnTgDw%MfBb=Kr2eUsh=AJB3u~&nri3;EGOF#H z?qQvi%RvjG?a$t?G%wfb`ryT>;@y7?UgSOXr|kXF81*KKd94rDAY;(-D8C%^bI3Yz zp>)7T-_NyL&6R=cq18zTtb+wqF6*KQT*PAUa#Iv8mG5*NVxcRP@2SLif?Cc2gR}0aNgJQUU^C z^cx--($Snkkc0g!Td$@RS7AR(YuO731cqz5J`~yXVxsM*F1@q6&OnVre;?k!*iQz1 zRkpX5?UkwuUdWe=?3U$+fq8PR% zm+1^4fT18$J$HN%_q!g)5vJ|9Ra?%~dSt&Wax&W)dQ&#ts*bVFBmK{3b*jO)V6VE; zBlB$5b~%B9YRBHJekh7D zoB>y)U^PeM=PE|;Lf>((cXQBqvAeq)n-A7E?yXPtHHNDf<5g4!!3s44&apaHBZMyT zSc+-y^=P2RnGJLhFW!M;C?f)vfrjC5=# zoa896V;@@?eB&%#5CjQGAb?;XDJA}w_buQL2xf*jf1*q+> zUrZ%S(*Shn-_WpWjL+Br9r-O$ee`d`UrY2{4QEc=X7 zPvmyZG^6J+o=@*O53{p0w6k-wGDyL|;k4sMK<3cL{r&TL&qsXZK-nXk)n9{}^ddYV2hY62x2$BArz@Q=VTGE9?F`Q|(cr z`FQ4{xJikO3X)%HoLv&$FR%2t;dLS=)a?Q*W%?+!s$?|E09JAansUwXsU_E-=Q5ec z8uDUvl>{Y;(?8&ige&J8d!v`oH}_0OUJ*|#@4 zcb0|^Pfpc49@+Jo7#M#o(ay2!>t^aWJsTzFj3dDPCKoku`^Z8x=F}mEmFS2uh3eGW z;n?dc@{(KpWabt7E4DXdcnpU$zE74lzEL%j9@miS{2ppu?#c8(EuW7nTq&dQrH`VV zrqY>QJLG;Gem5wtn5v)1PhsF_zs(J7^|Jn_3pY3T)%la zR8H4!4l~>*530x)ldI{YWLP;q^t%_ZUnI7RWeM645!ba zZYi^Ldcxlf-hN}nvm6cy@8yM|^oMEerPY9}mif!X?Z@S09)QGiW<((6u+kzRA7#t< z#c@uFr{huojU3`m=kSTLw1#b;-YFrhl2uqO21c+|ZD&p}izP~HqtMI-tZgOLD0f>3 zQYTjp<9c&zLp{74Pp30Tlu*9zE|d@1ZCrD&_IH7a_m|$OcDE0)N>=!@AFBa!qRi;( zY5@1*#k)X&n)YF`7lVG!Y?l88PS+GsttJ=t0>u%zz}ifHVFSRN>(8TycHrrCosp*B zxYz)*%)WJ-avxHebwfwswTy!UhwAwN`~*#TKSOOTR;!VdpVM2=mBaC2rX~9kc}7My zS+#9lHBZ``D1LYVD`rG^mvX*qH?9l5PPQKNpUEXu1{I6VN#nd1lp%+S5{1tTuM~U5 zPma@-{qvvBs-rgaN}i!dve}rYNMRMkAxj|N!LN2MA|yg8FLOQsD-R4MGaQB!w=Y%~ z7h}i@xNwf;ARc>Dn057s>|#m&sSfqGh{{6$^;0kZ68h&~scskk3 zJ{G&!g8LE5ktTUlP_ePA^?Nl&PnamZq0n0*JG~Bc-SJJ>n7W4r5{mqKW&ntp-g%0il$n6eW z?(X4Zba}^k6j2Q|fuLVm{Pm%&Ix<2OK>R}tp61T?wiLwS`v{ZIH7solflnIX=uh|D z_|-6h^`~l8jB8HSRxM8x^p{Q3w1u>3KFC8{3KT9?W; z)Ri+7ui?h@Adi^76Ana9H~MSX=h4K-aRZkcM@iskEfp{N)6~`wtR<1yAf^~j?@mL# zbTP{)x&UKw$#eH3|SrK(xOFHd-cwpshEQ19Tc%#$#S#kjn9>-tAD8&Su%Wz}z?8eOy^1 zefP#JfsxN&B5@CW!Owi86Q;7kpyR0wK~3WN?1UR;anb9)xtvdD*)0hL{8so#!8LjU z-Z$F~ytUhIM8a-=u{f~b!@t%D+jWW{w>E^Pz=HVz%7l}t8JG9#%AZ^Jz8Fc}&;`WT zW;=+{w}nhr>5B-yz@I7+nuWSGV_r_D{GYw4VHYclXL-H_r zAo%g9nNiH@A#r=a?5Vg}&6_9;Zn5XSmC&MY zjdohJCM)nSN9Dz|>v`{@B%NtmGSO5PD3Y~Z8qzSi?nd7hxx|B>l`-qv%kI@;HW*y0 z8>Bc6`Giq96=49hfSwG4-D|@7@pd4_G|sPmlE_yV30+CR3&E4lxxupEPIh{Q{NZ5nU2J`Ct90vn~j)UM-ko55^9YmUm^Tq$#(^IUoLT zjJ{F}D7JDKSufPo+l5r|V5NT5+a+1!-2?YsA7?O?hpf(~hV$0-m#I8LV>4a99fC1K z=O4vX^~pje$`1%mGr$EY>ywc|5-!n3$wAPaNS95>R(gaZ-O;C6;WHS4Pxw^Y2x`}U z8vjx7AROIXe@8Fvvl%ITaxHkicvLyiIBQsZ?XCUz=yJ;?`zAZ~JEXwrLd)MKbGp!;u7p)RdXON5Mso`IJB z=sdB`YHk>`4%s%$nfCCpSaUi|^>#|;#qr0PHTk<(twnG)mM$8{mo}N@7D}e3Y!l_tTXr>0;O6 zmYlwIQGw`*)y>7EXYZ*qCvsso9-{d}OIOy>hc#t$1ORA+d)mMa#uT*iICs4X__D0n zuEDyqX5+HEbf0&l#b5_qWB!jPu#X=9AK$)qXB@1J9$`Z+mb3mw$5+mucMyhTf8-S{h^Nnyyi|mJ|%+n-={72&7`ku?QlQp^B)hcXEra?7W0rQaVIC@H`gFV9+o>#&xc}?N1}n! zTzz#%B-lG0!1%U&>#d0;P!nKAQna(~;JFig3=Vxn=JUckeRE%PI#@bX*5B@8IJ#o4 z4ZrAUEwj~Q%f(Vwn?t%73_38 zOII$t2eN#f&pXsPGIReJDgRkgzHD4)rL8iuvHd6I20x%J=GyA#1vdMs@At&j7E*Deo?(Hv{6tN#5_*tbREN{a<%q=#791k|k;`gHnnR@n zW5dr;t2h-U{4@kkfH}s#D+cj76bD|-@LOJysse1r4_LYOJsGPO+RTSsj`}N2`p+Zt zRCD2`A8_p>#eHB)p*{70t2;@nl`7ef6Dczb*jPDrh@_uv8p3=kD|J2|BGM$bnPImZ zkovGZ!gO@WAk;B5=R(Z)tFB0YI2vCXgjJ2)qxOzxr6hX1#2i8Lp7J;OEU2;tlK8N# zFEL5Upk>GS=RYOhs#ga&QS`S4S-XTU&W_fU?N0#RkX28UC~#}-X9a6*y^efXJ7j{x z)48s7F()*pB)}n86I(CJ3~4Vm@M!!fY7+xau--ds`&o@~Y`;NFGA z6{^l6t7QAoqh3sx7WYW{9{7@7zo=cS19-@^1g^=XMW(+K9quFwCjVaM)?_cw$IqDF zE_^g)6?{-*wZHp%meW>s6opl{p@R23GF3hu{_=C6iJg6y?Do?=^W@W6eCS-IecI?x z_hz5h>A~!0cXwAjW!kYH**1tJw#W$NnJ-6+rBz2hdI&+k4|B$7*MUvFw(QN93wL_V zL7!i`G~SOKlhGSLmV>hS;;f?E=^*W`O;pWo)zvg36*Qc-;3AQ!qWzJgboWsBI0GSJ z?leyLW41~^>WaQ5g%xQ~GdJle){1dUpks2vY|IB@>c>!E&R;lbH%ZgsW3W5DejlzE z>y6DpURh7{!Tq4WV(IuhnyI~lK(GpSU{VV~+-f9hM>kkamLGC@C6zqKmzSMzwZg@C z+J6I=T67kM_Z@eJJ!>23_3gz9Pf`UG27B>%xZ(6p@p6I@zMP&|73pBU99+Jf5>-eL z&yxbt*qG5SXv!76D}6*tJd9dfi9gQV0WhMPJ?n$%?{T6oK#)Z^ZP}xA*Wgb!jpV8A;iWM-= zoiMY4hB>2P)>XzXw$ReZgpAp|a4ruqano5&Lu{hYf6+l#(4n=O5;?uyWqrAbNV(WP}TseNgGbU(W-c7?9-!6CqzYFOQqiV&Ph{du`VP zLge3(i>NhC`>PB>E#U|IkuFHiC9uj1DSUW!;)`s%weo!&f?Bdx`Ut^j)HiZZk-?Oc<(wOEr?%SyU;o@?Etqj6Z$cX0&)bBY2nv zoWW&&igq}BQZ2D)q!iS{ryaY?7-mu%L;}!CkcUj1XFoQLv2{d*+vYr_0v+TcD$;_W zWiVWFdV$qZQCSnO({@vEag@{M$Dar3hQ+A>ce7BASO<^2s0Yy55-1a7L?FHVpIin+ zox=d4n=%+mBFK7Mg&tY<5Tfm*Hap>=n)I}Pn3{F!c1~?%MBo!bSX$7Af{rNlCq8NJJxw5*e0bC+GxVo}Rf6~><;b0C7*v|j+f1B@}AzT3-I_dY~t%m*H zxW5{MV;*te+94^*q8Z=TWS1$pR%o|g%LN$#gNDl&Tj0GFFh{DdvUO~BxR^G}Fex*8 z-Nqb1%MaexC!=402W=ue`i#W&ima?K+%7G3jTBqD>Lhcgf&J+B8gNKs0BAoTtYG9| zjB^6Z_HG|cP3~fNirUHWTDQoTV~7gjtjmaKt1 zlEwIr@0-pZ1`P@rFzY}e+9bwbKj zvoovy5Tp(BD{GD^G~H@C;nN=vdh@VyucH3_BtFbnwe}sa2)eVn_ltpR%@IlB8E)(i#(jTwPLBKWWyzbrhoB_Bq9$n0P)`4?kJDj7q*a#d= zyf(l5+qnz)KxbO&{Qg;Ie{UakvyJScZ=@Y_=qqLKmVmdO-SP$~kwnCe{0Evp$Y+|v zkaEa1_e0D!m&-=8nDr*jiA|tG)T3szo3L`OPt0XPuh(>m{A}l+clI_Nm)VxaF_|(r zp47G72Qtuc1tXqrMj#xbVEw_A=UuB`PGhPQvac;AMGw7Jc^Wut8#gso9cD6qHf1-P zCNTH*$Ht_%L{!L$5PzKWS86ub7=;n*e-H?o&`phEH`I zfczk&MCW#A$#1G?Kf8m!`?FM48Zb@(n93T(PF2hJ)kfJ6Scs+d!;g^^kw%3#ffPv(ko-a@*S{C1w26;> zvDf@*;oTv*l!I9x%yL!s15a7FjlWv~>5X@`8JZIny?TT{FRQkSHPJeP-nY;HY0QT&yCwN%24y(w9(e04~V3 z&dPfkvsCNU4?EQe7HmkzbUf;xdZnPUa30m6QJ_Tp9-@QJv&#H_6w9 zNxsfc(u0AiomH-GHW|})c``K@iSS%b8~`#2hg{@;d?`okZ5o14iFdC+VAC__mK)k| z(M~`oX7~TCs1|N|^Xt*1J04supLM!w<-N|w%?*HEMb`J$$#Mg(kR10gn0Rb8qIRfR zd7hl$9(d`P^}69q-JWJp^{#X%JH${GXON=8fg z>N1=)$YbFwVJb5y#?Hc2GiDmzHXV&;f+2TWl-GP-u6chm_My}*bWs~`tM=>sa7Y&_ zqoG56SoE!>ud|JXp?JVG-)NYb^X%}EW`4nwX3{2h4RD)g?B9R>Q=5iT1+sCl)vu}5 zm$y&Eta^&ZRO{6)n63#2qFJLQrkm9 zI`aI{O@XJzcy5~f3UXXA)MYkhr=#I71$9+s{#25F!i^^YF-nflo{e$$1|PM6duPfR z7+++H*jGC~-%PHIdnrxfe_S}P>lo!`IZ@aSZ@_VR*Mh~>Wj%CW#{K20H}<8RpYh~U zwC)3^yf4#qW_fE`Pp;A^f`ER1m07G~gQNV}v)90km;UA#`@r4rlHP8CNt+hWEm*=% z+msge#`WlItHvs`5eamJ^e|5Y?QmP?DPWz(P>~42!J7}D*Y^=%$iqnlhKA6JU|-DR zL|;OjUH_EfCrC|xbKSk0_hx+kErIqmqM-)oC_=RvA~IY%ln%A)&-`=(Eqo0M_AjNR z^r4s1MhhGAdxG=4j2oDm!W|OF2xVbcwVMgLEL)i^Sq^>o)?b-Ab1c*SA&LsH1?9 zq>p6J?Rs>2WatvUHuu?N8KgP@r#Sdd~-dlsW{P(80NFX`YfEr)|cZZr(X^xf9@;%xx7j%DvGrZnr55Cf))GCb7vulu0y`R zQaCNv0_f8pI_p2VSr1NH_hw<3%g+r>RmBGxuHv)i!=e4s@p;b;8!>?V`C1DPz2RSa za<{yU~bLFJ-EYq za_OSJ2KUxEabTW_UI4TgK>-PN>5k>aY}epp4u3?R-vB`4x1BN2qhwVa9{P-}o?`T6 zwv?A<&mN^q_Sos>VfGJ|Ha<|eShp&&IfLtRUAUvgYM`d$b&^9-%nRBR~G|EUNhC=fM%sqxv}iNHAmWXk>LqN+g6dX zXOl;VYP;qj@7<2}Kw;X{$6xo|wJ>`(y?Y}J`ydLNrbki8aPwG&;p)q1uj+)WoWKRm zi59dZNp%C#xVxPusk1P^)?3EA$neq*d0JIOX7Yuoe($?g052U zH!18er&=6dB^6#-?$fc}R;LdC+JJLs`S;C{tf_{)lLY4Q{;{F$Y2$EzdO8YoOlQ-{ zVsxt^2tVC3Q}iaYN?3n)F&mGTj~?zQ6yL2`RMvbOD}6WbKZ-qAX}%*@G11E051D9`sS=G1itzb>Iz;r!!~)kXE}{$ShQeN z%KLrVQsxkR$IfxHa2q~#k_am;@r^nxJG*391#en1(Y6)}dBc2m*~4!4S~x}FI) zlW5xif-=XP(?2;OI=cXkx*Yp~B(ZiUas`lSenvUyeEHtO9m;2h$MYvrU8@Rcs&wXb zpz{wlVXb{k09w-X#EzRU=gv98$0iDy9g_)5f9B_gfkoET#fRCTaAa@2l{=&tak|!+ zpetc!qYgE>P{v<1=dN*uwp=GJ|JlW$-?K65j%}U~{=OQ`eHbVtVD{Hai8fzckpwzm z2!gx3+|6E{)qD)JX871!m|Rz0YkV=_Sxq6Y3yjF#OsOQ*W*jACow9AKOl4dJXfQ7i znJIj2^P*hEZSW4WlS`Ro&8&*Mu=!FBdQIbhn`m%`+j568@vcrYiD7=R=G5rFA1@`lp7ZeXemx5DU2-zCt{h)C=Iqei?Tz|nU-==N_5H{ z4R#l;kr1*$+G`ngU2}=uB-^wRBcAdXg`(w4>euy-v>%7C{j!#FCD(}Q4N9MeUfSjQ zaUqueE@J909#8i2l(pv|%p}D0@*8?xx?fqHV3sEC0fMoq+Si*HMv=C7448P zyMCt*Tw*Jx^h%pk4yk8Dt}3noN^c_vjqay~b%G1f_c|Xdv&2C3OT5?uetaH1j&yLb zVZMevg`xoe=3BSB`9iAec-cf61Ke)uEU~^4UAhzq=)Eq}e*h-~I9(W6w8*WH>7Cpt7$IU* z1_b-@_o=W8`L=rhUkcXBg;ePjTCGFF!KhdUYdrno!GFcM7DThsWZJ?#7vjGdECHxS z)74_5%%ui&zwzxj81%Q76*II)a869&YCcNhwe7sC*)0Ov8q=#2LQdUGxvYlAr`;H7 z8QJIrz&ZKFWci2v0(brAyjblUf2s-D#15VXcb7u#*6LETc)K(wWZ0$(85ci^i z!Vf)I^609?HH-ePN*h;%w=*qd!R&PmlW7;Kl{J_Rgv7a;sfFZuu}kC@!rHp58a%5( z1;?teqYmfT+Bv_Ly*>MOkuz{efZ)r3!^)iDhOI45qy@q<8;YiZ_R}a1qhcDxWzcS2 zySC}A51({yoS`z@x!|msdmc7{QI(b3-%u!1;X0^GFVIzQT&-Kba$PuW))v@s*yNDq z2n%QK$DQONz+m7cR>WURCjvVgmpbEFN7d^K7I$hl$l3z>qpMLr4P#s{7pM$#1SY$6tK2x-h+bHCPU(m(s~(0fp*@be1*LbG|-Q~UQ|ewkjv;5}a5AU~#+>qVD^k7i4x{J5n%xb!=? zT5V;2%Do5PER~ra)yS$*@JX~4sfI$De{7c)>~2=$m?nwoAbCvz#`O*>N$94Fs=EVp8LBdaled*}Y}28(Bqr79Z~LiRGN9 zGD!%f_?lbR?S?ZR{0!lY2ipo~gz_$@pNmieOzM$Hn<&OYgotw?3c(>cPVI$@89^1N zD&aLn(nOqXgI*AUXNy{#9*Y8kPiC3{Hiu?%?g{LgJ1F0D%bg2TnH#3^Y_zb>EhXsv zAV-C0p3V<)rPCDnzjtNQDqy*1}!K?$Xw$MaRq$ca+XZ8K(@la z_5$TGTNSY8hf61=k4f#ir9udLN_fK9_v4nTlXX@@@7=D?2hhfk~* z2C9R8ZAi_ttPZQmBctucz2dwn*sbc6qp$YU*wm5^pZ8dZ4KFeNVI)<|zx`B&(i0(| zECR&BP7KHk0rsOg;P0dwkwjnV;bQ-Zg##Puv;lmiH!OKt?p^3oWoSm}rKvRkZ8<8qwbqR&>l@W_fK)$`Bz{y(;$Pp8xQEwkR`xpE;p&-Q5LOx(^;=STE2x~Ewu7=E`2;Z)>``)+2jNSI#g>)8*&X zw=eAw#s>Mz0M`iZJDR_3=mX?%I~9~S-A&BJ&h2)(E45?}0=R!+cY1YYh6YK|RK@th z#Ri+#$2XSdm}VZi_I?3izh|kwTJw6fbaXdqqT7kb2v53g?}=|OuL8$4R4vI=`U-w; zJDqO0Qw%%n`r)Z7UfCHHG_kX^ua9zl>0~c^d?MDUGXFpeFQ=#D=^~ptcv~kfF4~9v zU`Ei7P#5QrRl- z!VGj!9LFO%kU#rl@o`~+N@(B-VuJ5?T<89uyhm7u9z7|kt(sM}_M^D+f!U^_;neA7IKNN_&O6RZS>6c(og8-V` z)N*ZhD&RBCLQn=uum(7Z|I~Vz+yJ^kv*iQhbHQ0YT)X>cFMGQZ+NTH(1JZgzU z`xNX6xl>QO{ye!r1&Gkluw%pNxa6bivja_EPOV1Q8EVU_II%l~}Xt*QL*J=bBT}$ke4#B!@wtl+E1zp5 zr5^6R9i!!=${N6UXEM$!$B_E?N1HkbIC7YR%o~)wIU1U<@bUE=dO3ILaB?hIn8$}B z=l91G4T82RQy-LM%!3%6G2jljWKO#0okWJp!T-lq% z^5wi_G>A3>y|edRrtCN`IuE$Zf+C$!=Slmt*9 zFVAqoe|_>dM{=?@vQX=LrPlY^T0d4I^Ne;$o)C+sY7dCJ7$odZ6RX6w=Cimt+XNPd zfc|wiN34m(iUnIuwh6?i*@Lk*7?=?xP@rfj;!q;flG){kRK$KN4gLfr0#aDtbHi$u zRWI$F66^=1I(ZsMSF{E=<5tgo|&9%7?x#O=R2bM!uWqauo`Vvjf<)Nn2XCHrZ z^zlL6-Z*%2FuCZ@r{nRLgR5odqnsOSbqn2^7VPv}^is2@iKu%$?_D%!)Q74}H*V`) z=+iuo21YT1&+03ff zvgzAl(VMo`G~L$w{$EE0Yd<8KcyK@HuUy>tL#=ZnT~%X*RXVmz;>Yq*+Yk4x+9;pqt8yGy-ZQh= z3a5oIbxI*c4q?Vs`drV)r%8NmgO}2oC=J%eV&#*W*gzyD+;E#2Nob?*J;jI5;KAJ* zSdrf>27}J0y^hT!_Sp{)j4*REUF_YsaqRu@;PW%{;M2X{=UAsPTOsX@A&Xofaifam z6`Xc?XS02nz$0!<2|0YK<{J;)q*O8WaV`tw;;h>+jZgDg*9*SeQ2(QkRC-#V1THH; z+=b@rGqJPU@SHdTmmh{Sz>)*F#oX~>=o`h@0lLZLDNYxy95=d+rK?}Q!V+$28KH+F zXR8E386Fwa-&rkIQ>1?!tm5%Ex7fhmwOA0`+eS&+Pl*Yw>GQ{(&M!5OZgs`l-O}O+ zMojUV+`{s2LpA>KW0r29qu8c&qa6i_{r-o7xV#@ZHWdqXyX%pOxYQey3Hzyz58VPy zaY6e(DNSi52(T75-2xbH^)}c~t5Dr7(WlIoKo37FeHst0erobm(dAaDQwE*B8NB@l z?mk{uN0KNyO^e=WxRyd26>UMkS?7Z{SoD8CcpLAx%T$61pIUc4TkzwfT<}qy8BR-% zV8a`~vWY6bz8%cRy;-9VjAA|P_a@!t^!nO*yslMWh7dF=Cv_NIGd>1Zu)>|V!jri! z3snLy!IZ43ezLcbn3gzv9OU2wW>{~k)m-aatfexrr`sNwssbntY;BbxWLn!yC9C8d zaHJ)#rOn0#m3BqDzC!8SiCt^gTvJ+&@0A*6R4yO~0w#^faAWso8D?-` zjzZ@nxioGT>GOv(!@Voz-rS~7V$rb}P_q*X>P)uXf zs2?z3wzQY#CR#(`Fb6%=ILiS79qe8X#>?LKHoQI0u6&x!+L*EJr$?-r9e@fsg=&UOR9x$uDf^h-mFyxGs&L4VZGII zFmrhGdO-5-aqsQPYPkgW;?yWe+)Cxhi3Jq0L3M3Y-3w?d^;vUHcK=l6JXSdOMpi~b;{g0wBimn?>(tL5(pIVXR}7-3p; zN5z1{EwT{yCO$ERf(A(p+e39;jZ~>|s!Rj1&g8_13v-jp@Y77Ly-(dKQI4*Sq!dj} zNMn(3GRh&dZO14e)pD7mwV>Kvi_jL7!U9Vwx60VMUr%24G>hHdUgyPC=k0U_$p!F= zB}iL0HzcNKV9&723;QhOl{Qmbbf8&queH$~NftZPuqC%1O04fJY)5}M=)WP$XS?xE z;GH4lP&R1OG#Xs(>~&OuVNbY1E@-xn%u4;btMg4zQKZ7xnSx7w2&(;*Ee2&U%r=~h zZ53;&ML1_B**uWSJ|Pz1=h!_f9mH9z9pQ#KGOCQAm04@nimYk$#c>&Us8@@f+-Qku z68jO+FV~4Il$2r5; zLI!p82OhFso6nsM9cMUs4cr{lCg?ydW-b_vP9)oaSg zI;0nr{gPZzmW;^iguP+hX){I`hSB*8FTT$;1+b ztCnAMo%zbGDNSgZtf66t)3vq~({dcZDf`(0O$rHh4HetBTQ4?Uu|E4gUR*_*X4?V| z`f@s0Odc)`dwn~Aw{}nL39^c#(S@1FPRKasSab+kvbWTNm5sJ%R?!l*D?9@We^zCRdvfMzUpOo3LZwCS93A{fs&}}78fBkE3Ver1saoKUH z?;>j#c^d;Bi=c$}P3fj1C;bM6>e(jPi-t_LJ+op=k zB*qJ45APEsC$DUg6^dHgBd7TkqlpI#+FYBY zgs;{hefCpw<7=jSnY4}#3#TK0fc4HIFr9kKgnKo|Rlg_U4_=J&7@I@AzalJ)w+b7RY19Wt4{l~lO{`CyGuMb*hP$jlCMw1txFoF4TvOHeNaaVI7zRosPYgj9 zfUn8d1AKU-{BXIF3GEt;Uv+y4&44 z^xn*PktQ@8Ed53dncGLb$+f{rb_^Ds*yuw`e*CPx4pSeAx3t)1RzR~Z-%ffrqdsJB zc3RSYZ{jtirhD^vbTzX4)O_B1YiH^!oR2Lfw?)8k*MX?Xfz@CDXW*91z78EII#e|r z(UP^F{QPe}VT8am&&?@@1 z%V}YRpNh2N$;JzP$0lhRGjRHIEv1HNFEB`rFpKo6_%OT4tO->{B?405R^BX5+aes)OF+}<;-Jhih*_;-h)ItG9KuD5&AIDMmX2_A9d|dj+CesbNE^@rnIp9B^ou(kQpJd#(}@|$G^h!}Kn(2mZ8#-W z63_vC?8@Z#|f8^C&Mao%_dFL>FEcB!0PUy80Py!#Pc(k4Gl;)1e0v;iqoICGSC z`o=8d_+_rNYu&ayxSvhuO9R5--^AKCJ@4)PS7$L@&HIC|dNZ4W`H$az`5BZ6UciIJ z;qGgT@@GFx9{g?RfkCK)#e-*mHD7OB74z%Ce>Z(z93LN>Kd1Vi<2FCbe`4Vs)8&hu z|2aPXpPes`kH6UY^YQVY?Th^r`R1$R)+B0Ysdn(s}Z=uhlvz_mckH1&j;(ws@i7PEeD8>puaq`$;|M<8s zYly*VKk*MvCo{lz&!Ic}^`%?PuaA$v=4D==xbcVIe{iFLg19rWh{#YyD07B|Zd_5OK&sJJTHZdJ^tI9}WPOg{u! z(5zTDG0#@(7KZiioSc)kP&wu#yZlJw;-ySRiymS3Ri~ijk^W=>m$-;bJz}u(( z?H`Yi|LES?g8^?&2w1|K-tlqIzB%-7>~HsGWZD}+do$mj#k=mE9j|>eZ0sptCqIV# zI>C0rn?M8ZD^{@dZk;);Gh0AS@W$<#eYdRG;rv>Zb}G}NhB%@8ohfy965)LBM1r!N zGIVf4Xbrrv-zbm+7Kxa^zPXgEhG!;>x2C!9=5+!k0b>l4{Rz7eCPYte7~Z?&OoaAA zPwr&#TA@YUSNoGfB<@c@J+tJEogJ-%BPXO2-ncd6Jq4(9`_EepX9*!8Y~i6&E3|l^ z^cD$kGUKpL%j67(H@E(cJ9oUVqsG<19S(KI$*jVgWwL_dO}gsg&8-3zVGIY!5eT&| zCCG*s!^UAFh=n(k#yX{KDh(VLBD|TOu*1%KOHgG%Z4>`yWooTNU!fMF*qjdk*G5QBul{cnk^18TWV1`yudC%_-xq$E7NIcVHlT(|J%b<$cOj^l)o z$m56e39Zc=4+V}O?r9@B#MZ)_^jPLME(i;^az%Y{D2c_xux|aE6k8mY>V&Uf%ISt4 zufz+-B0^g@n?Oe9r|u2z0g~Q#r*eQudT;$ZT+=|z_maUAG~G~#GJiJ)wr>Eq_s+I8poiPqI(cf$?1ynu^4fd>k4XygE3cg`IN!z+TT?0)a-x=ut@GOr{+Txhk z=NkT!Hb2h(6jmhHjOXRr&%PhbQts%YAi!oZp)?w+2wbmlBpyx?i3K)n<|P}YqUSN; zwGcften26v9=1gXDW^81tUy1SBSo{hlkHj6O*kYxWSm5Dbjt9fX%aPpU5aXF6zky(I5&_8#sVKA z1mH7nZjf(7t545sT1641)Yj}=PNlA1qn4>=w~@n7&kfULApX)6B6$1|Qq^WEPLLD% zV7|>qRGu#eu7-$t7K2-B;N3}Lz?Dc#JR`UdwXLsD6zq8Qo{lC;2WYkx6X`>_5@#R$ zP&9e1+-*sQdv_*b3(HW$gV0}UOUUP`^mU*)W^WA!1(%NMG6pvHYr&wxcopQ3@aK9s z&f{`)J;G^3uE=X`%2qR+6?{X^9tRhy&ClKw!ekch!xq>eV<#AU2?Zx8L}KALfMenU zGj8XZ+F-2WS2|11P#waiarhIdsM$D=65X$21OJKb224q`m$1(38VWMYK73!xj(Xj6 z+4t5`U1C?bQ_^pR`cy-6-X#oAamG909YwfIzE7Ielwc7poc`2!n=S0HrLJX53(Fn) z1!+tdmK?X}Hb*tNNne^NO&oB<1UzW8nIFXdL5Fbr=}3NSyF!h!(9RJk72x&Z-zFK}H1c9z0N&@xFV;aNY*d}105{twTI8eFt0+?H`GiKM`=$)C20-)m$(xwB#`vr<;* zH8{%Q-cV52Y7(VED~YRN#)_OJAjFfk^1QLJcpt5}8$=<7hNc*gS;r6Wcn?w@~Z8tugxik4M85W5uQ`{8h8V%ADEpb9we62Efp=GlB5{ z4q(s9e<*CJ&Ly}Fj7siN4x*iw4o!*Jf#44_TDtMM+8`6P-%qx-9h@@O4rly{ zdHTr-iFn{XQUDOoQ}wszt{loAoHpoSwBVCeHM`%WgNbKL-C*2B5egFdEm9=L3j@(h z0<5xbNkZSsh+OJiFSyqf?hmL%2r0eB!1Z}fDaL;f6X!98u;wQT+pqEKB!IHQx7+6w{x^B9C)&le9b-4XdFP|ZiPoXFDuqT-dyK_ zH5t5d#hDO+vstUH1HCOF!*D_SRAL`dMa0u`HkjfZ^fS{=3pSIQ%$Z_eu{e-s5QnDW z@#6;X0LhfYPhnOTKoBQNeOhrA_)WAW?1|znL7X|FBFT%01k}h2aunEmKG+DR$6nvp z;pt}5l4tzVB}i>LV!Igbd{;L_piTmeg)^_F|Cybur$=$yc5INOKIPLR)-8px{e%x_ z6s#ww4d;&&q6BrV(TjGh5iv04IdvEmbkV*5a^l%o*2Gs-s>b|hY)F) zf^FufAq2Mw!HHXqz*dOPS-tzF)d@nzQDJo&W|^(0nZY7fYFZtRR8B={FE-(X5$3f6 z!p;wBRGhKy(1c5zb@KqHkS#N z@0oJ;T_WG38i|W(gk1Dv+9E8BxR42UM_;J)6U8)KS$u|nIGUjZ^W(GQ&{DwRzetT;=dwWjksu&;sxi%%QiJI-tat#G#Mf9gh=z@#kZ$1AktWk*V#r%c9 zm98P9*ElzvFSakZowTjJ#9%2-B!0s`*gm$3bw4p}e{w4O*C2!OjLYAvBVnUGNb*og zVN#n1%FY@o)VzMv(cSy(0gAPiAVlsb?FAAl%;0+PT{vMWsRV8jXjWkP*cvR57k#O- zqClGX2M2>a;9U4Jc|NGZEl~r$sL_X`aFz{nAq*RyEdgE(_3fVuPT7r^x_rQR_*v9h z9kwIPDK@ifw>mZB_>Q{MRcH%@YAd5FcujrRvHPsLvm~<~d45$isI|bxFg#7gbOEV? z{g3P!)u;)_K8@d3{`dh1U-=f5$GRt6qxL6=#qV)HQNq{uQ%Lx!4hBvC;-qI*g5w^* z#09ko*EIU$FDNHwJxmeQSd|$l52S@#NzpgUSaW4_p+%fmzHMw)0I8G!DmrNJJ0hz` z;|MwKBKmucdt-ASf1&al3^yH8{3X62{Dl_xscF@*P-sy11-LUyzF`@oAR6umrLvcY zvOY33Rf9x?H`(@HVzy)DkYHJy)l(;{zo#mcV>ilFXYoF zLz_5oNHyf}?IXine{?39IG=vlK>Hczv+lLM)ll?a)!xIbo>`S2M8dMls1Jz4T7VVN4(8iK7yF2B}0=- zPytAjIy2kh;q&t111+LE?7@W}F{UI-?QZwa$$p7d*VIX>L$}7vOP0Bn83v2sh)X2- zh%@d;5VVF;s`~Uat&WI-5DKQh5!aE@tKvk!44iSlI1S=ua zMN|^t!n3`}$l~svgqE_gQi^m2jL8}AB4f!x*bzc!W*M2r4NGep#-iRjTMh`aj;6Fu zQY1A#Q!58InpyOpFJ{yLF6*pRbp7c)JtOilmf_qd<(Z%{4+r9Oq`b#4S|7E*1tH}| zRDw)<5?`xDPhw?kP}(G*@<7R6lj8lx2&61AAjCDIaG-Ql1NgC7kB<{?M&YH-`kvQV zl~kf5d>9bLppJ~4@YhM)2$un4dnF|uEohrbd-82(OGOlZ~b%xc{UOYr>{ zDnqPQe`2aXk%r_i6_;US1;F8G%ua!GR<>~ ztq0O<^LU1F*^YyspL({0q!}6|PM0zddAQLDPB{9?@?}PrFA=zfjXPp+J$pquwA&LY zC<}bdkmkN#T4)I)bSK7BWYp5qhox-m!iK9ijKY^Z=b|80sc_PqtS?RfD=fpZsNdPN z=zUVu-#ZkvB}-~vV>2BSgH@u76i)rx76!mswoL@h`npoh_o+@fla(P=!0+o>3Iz5_ zS*O>@N|xop+oU`XH*;_&fk~XM*tQ>mFz5=kL5xfCv=h&?W}C=16IT!Rng*~h%+m$Y zZ6~)hipdHdoJ(^$QlWAwF1>o@Qec@Sdpk({;P)u=)1X3AqMz9TPL&9+&()zKs>HR% zZ>Wm(d@MdySor4+;9|ddgrY@siva*+#5k@qC!A+X$2096HW99HZ;4(X!L=V%Qso8E zdhSPkK}C_cnZH#J%bG(#U8&rQa)6r#K$Nt^n3qE0YI!Vd`J)0Vpa9CoG$~~FZQSvB zp+`LHtUsD0Ks^-*6vaJt3q<&xW^{>0jAYo@sU(zHXEY5-s_UY;7G_ktGb)LrD@Hty zR0c}SW1>yeoH9(e%!Rm%?$|!hcy~xdu}{<~rLy5cdVN(>XF?w0B7p6V=p^9j(mfnJgt4?$C2aqTz|sRx4w&s!b{ zJm6`9wA&n!Yv*uJ0nfNxP=k4&zW8a4;tl>GA#B{-mxhDq%yA(*_3E3#4v?x zacfS2WKD(hN(x>F`8*5=MB1PHdE$PQp4(W1ya-GnzNv0-0yAd4cEr&`CIW#kV$%A{ zK(xg`187)`QhK@!cD+5#Z{*bcol38zbHV8}U~y=T*yQ2dC%~gCs1zY&XYSVV$N>i;k_FF)sbzt4^>l>nV&$UX*)@1T0XhU+hTMDz~xyr@}PMV`!&q)Y=LnAPf zWO;74Ld+;o9@g5t>5{(k-h^dnoxD~PSJ8<=Jj31Py1B%MJR-EZSSn<9gu0)U!DGhC z995}LRZbs!{m5*{M+u(O?4MACYTC?EH-r_`70fkmh*e57!aXD0lO(*JSJuYRZ`56RJ^%_* zQ%+Xb6;UU!Q|Ah6%x+3Xt|Pbfo^C=rp7IyV^AX%Pj(|d5c{D<%!Gn+FN%&uBDjEe1 z;J|*@fY`)fvOp5B`H`Rg$~;{aP6-|_(X^Sdi2kGmx9AfdqW~^vkMo5Qi5S{&TXhh_N(0 z6>$;~Ke0$?aG9hvsKtYkxk_SaD~5!Hk)2nQ(PmY6nw|oWqS96(2cx5e)&g#DXko19 z6v(!aDsB#wF=(g-TflFjg{MgiS}vQ?I;7ViAwX#@r26&rwxP{i&>|11OLm^T$bLf~ z?{vR#tsx;MhZfSy&%DGZb--&Vu3#>-VT2&)t9M*%B<=-h}1xJpD0%~qfzQ+)~~SBr6#HaJQQA*z5|3c zef_aB?ZAeSO{l{>MPD>kya++NJ(qx<*f`*+XI}Zr(7LFXOPUgjf5C#B2TxJ?mgRDo zKbPaw%_Z5und~!xO}KNcYaY!KdV~rd;*=OIf0u4b*!i&%5Ul6i<*wXm$w-#YRVAG` z1LEMqHQ)pOPv~2Bs^YVo;WRTdS^lOGcdRD{B}hF==Y+o}PgFbFo68 zjQao7pZuQZEIk~Q$2xPO1O(+Y{0F**zg#)&NQN&I^*G7|B46l~GhYQ~3B~%GP(@ry z)qA8t@vgCHxii3d^i-P3cmS@)Y-ont$lWy0R-0OJdsau@**)EUv}L$UhIA& z6Omfk1#^;z8m|sldQ8O23QCv`?R6pdzlIRGtp(0bl6+Rouz~r{3R9{umlge>zf4|` zGB1hWQf>XaG^KK-2ztbs!wTniR(*KR;)%1&YFwl<7F&vVuB>=V0RqFGwY?0RZotMT zcPMXU{N|4V%?Kf#saT}56IeWwC=5v3Je>zu28D#;c_Gd^8|0lGN@o7|%FX8#vixHm zXtT3rT|7;gWRd1U=lV7IMA1>HZ)xs@IuM)xF7K3(Jtu&IP*f%Ot34-At(*a(1KX{s zFW_4k=mE9N<2qKW!)phL3g|GzROP73e~Bk@1Aj%&46?e&7--avGd#*3A5n^nL_-tG zv<$TOw0b`p$~4`b&>w~tg3~NcL2MXK28*DQtFM^N%PQr)#Q2i!5MOBNCl?mOLhOtsf@oB>2 z@p`^{2}#X{AV3v*9Jbi{~Ux$B}{Rp7)_FT;W%DF{15 zx@(*83EF0>HUUyqnjj*v^hgC2`Y7*dN+$T`88tbH3ULi_v=&nk+e##tl4JOx?hPmv z{i4NsRroDEUQMcSWUJRwh3_S@sCEX03)s^{RYM_9^v;&57ry!dGbcXJ6FB9rd}IpRtg`Gr5|Y?KjKE zOPZ-^=`;vHOq_Zy40TToEzS@})Az0}<1=JqyaXhspBVKccK7dU0^GDkqRN$s3eHHd zS{ibbM(!($S{)sgRWs@4?47E#E4xD_U{Be?cKJw97|DtRXqJF^=N3{a_y|acy*G;p|uO($r$mD5kUaIcCPn5^$08sgivlMztaqRG5r8PB< zP(4P-W2V}|$w~8I1)y{O(^E^ou$qP;S5r|Oie+I(bE(`4l?Oca0%CH^$Q<8YC{ueMw}6qJZo%|1~yVe z(_|vLa+*i0BnwX1cSTVZD?+qG>qpwryHpi-<(VWG{we!JXOg`-1;?luvGq%>loYgp z6G_yd{e4B6jYP{cgzzR!o4222AFEaC(L*3&h?s@z>A8f%tj0(1Zt*QZUt)mHHlvuQ zsf?Oco?{hFjLWJMqe)D4WR7S^dZ^@ARx@ALXx0c*+)mgiDX`{Al3THAB3WN_H#tlB z7qMCJ?eFIA-%q(?=lFSvrj|x~6mu_YEOtL}M!!{VX2GJu&=7~mlP+gTemcCTXN~-G zD!9&@_+D)kS|F9iK@hepXHODTpgy{I5M5PMRo_v;X_cUQRiOaCl4P8BA8(p zDcauGb@db7IfOy^vUqLr^mk?`zZ0!~sb*JdW=!(yjI@|ozRRndPwR!G=2y>;kAL-C z;xp`)%4p67_!J_uM5l_omitM=%(V8C_&MD#TsXVHTX_e@U-Eo^S;NVXFkw5>8>#os zx4xZezJz7MgT+HlRXO}}96gdZtD=z!(@9iNAQm@FuBccrsX zUdwf@oRdI^%=ZzUJ}Y1msVkt!jeeHC0E6m#UXL5uPq~|o6DR<%PD*nSw=@Y~fV7|S zIqyevs6jWC$mK-W5)J<^%-;pQaw=zDe$HA+Db)P5>WYPIZuPXqqpC}`HEfu=U@`?g zdvmDpC?q3*>a?SwX5?Wqs?YHk?HrY|?TZ(wI^n5go>aspOqSZw!afC_iv(p0%ZmQY zsXy7%^M*Ck+(@Z!9D-Kb_`RA$l1M0skMUFiQNDa@{L*-!Eightfym`h zGRq=GBsC&)kQg1a?2|}?Pu8n+gP&*}H&gJ-8CC6G5>D}xtb`a`D)u+rTe!_x*NUOk zi6y-{ZKj6A`+*~qD)q5Z??$vW*d@-!t2eUmaT$GDI#E*SvJyE+E6LPCufP8HSg2N$ zntxF}DVnMWCMB#$+(iNoE_H)qy5uzDVl$)dF-4gd5FCKQUgOkt!H4Wx~ zpG4WOO^CIPAp_X37U3hNr19UG86H;gCE1R%Ghm$@=|QZqwC9nN%W^_}w#16hV2jAr zca*82vDum$E?uq=kxgTb5YU9+Nf2qF5(D~h%NZ?-?nr%_SAJh9DpZnuVxFOaN;t=| z{c~RBT14-Dki&z4kTLp`AdXeK=i~Y)eFRZq8d0zh><2}zP4W3D46tk@xR1&13M+*k zo`yI%*+=v@O5QU$fBrkd-wCx;DvL75Ng>M%K|}kay7LHD$BQkDu^AUsTU58H5e)Sv zk*qYRxG~A?QIYM8L2*^x2T~S9A~1PMTNKlNGAq6vGyXamE#!?m}Ja;A%qb( z0{uxI_OK(QzBH9dAa(~ljuy?Vtfz@)61vLw#5EDn!Wko~TrG<;()(G@k)uY|>~nh` z>P^Z%G+0h-*7$`40L@~X@wew(7lYlfjI-y`oJ&zwtKsvr`J7k;qmR=GVPXZL^$Dd| zBjMUnjXgvC?SWz;)*N}r#Qf1pZXFHp4r(+J8_EhrFo4;A(Q@n8q4z3%MamuxfeC|; z%_h`6xRD&4WlBYno?KW3XZl33G7nFhToE*mPXnjDmTqZr*SH!cRa_lruB#LhG?#eT z$=J{1DMD-5+etkaNtLbfES^getw~kk4zh8w|9$WNyO-p?(3tIsB)$!3G@-zZ%WZQ< zh~~<`Z-^6ZQ|6w|NAO)5tHDXId|UFE+@~p{WY?b8DIhtNZZVC8=slddJ;l=?sXUzm=XOMa;V{an6PxGQG`S+l=iS%2`^tK@0N^V-cHVvY$X^ zJNR9l3>la5R9$XW_V5}}&g8xc!l z7hBAjXiggKO^Z@2CriX{niqf=BBDFYvr(t*UA{ zobJ$zMG4eu=pvNgQ{v)O^ptMPTyc&m3)9h$8mgZ$PkAOx54rv%q8u-1`*)}i47Uax z#Ckje5O>=zah;EL?Y!uvg;~80>x-o#PDSlK1>724=bkF*-%2?qW~Ukxk=FyU%D2?v zRWN7RJ=Vj~a~PDghp{HX9I0S8qM=iV-NIZGPm)(s5Pac@P2waaVw=rw`Xbn%VppMv zzKM-YSNtHcRo3x$%c_7=VO(g??8U|pdGfp(QIF^C+tfrC`w!bSKTQ+$^{HVQGx;I* z-;OCw6^HpI-v5@(K0^cc;*|tz(SZBtz+Gk;WBIdYcjb2Q0nAY}HnggC5C@OjLnuxX zEQMI3tYF6tL*_?u3VZGlNzx4^7(DBelp=&f5-vBNPdtMLB$C}C3B}12u-}w#Iee~~ zc5Y9%+c?KaCz>buy7+BRm1zlHFQdCS)xlX-y*{UZ4v4px|J`um-ks%n5CvBKIWJ#1fIy`g?C;OgsMQkd_^yJ3E(=fX8PoP= z`n(aqqd?6Jka4OSwlKujSSdB>49_y-ao#0ou6${2dJ{K(!L0Ng|DiBcSJ!n1jo*jLd>hKgvJ-DiA7WqR$UC&W=HsS zOqxeiG-;S#I0uO7q~JYyp7&&ev59<_rTZ&1i-=eptw_`!(<3ZKFC-d#2Hz;yh`IA_ z2p~sF{=9Z+%aD>HgdvUnLI9wHrCl^K)i`Y66(dVhyX$-G6{%yTDP7z-7EDyBY^cUIh*!m}e{7tjsR8qRMfy zk)Yvcvkj=2d^*^JFB-N&Phgyj%D_o^c-?Gqm1yV0+gqbp%X-J@?eFZ1$pJ8rB^ zLh5oR8t=5k*5T;4u0Y%T(n2vt#iFvgn(gjW#eWs~F#IM=&hSmkT>VZW1pYdA z>r2%*SG0rSIT9xiD=FfTln&LYRRM9eyhxFMl<6pokKPJwF#804?eG6hR!_@L7wlh{ zMM%*dcoEqbU@Y$aNm?(}_a1s_6bD_74$GmtT>FzGJ93)rVwsFVE}Yf`lO*2N%ZmA% z43nMI@CCD5vfG*3yZt?-Cuk6}S|x52k+#8dL>5Xf$DQwz9-;)4NoOGEOFIdz-k&8z zSkdj^c4pO}5>yH!LT!aMq65WwU+6?t4;9bZdWDy2sKTSdSBw^BK=JyF8J;!joQwt6 zJN9;-Gsd@%R8Pn-l0<5*7CtNcZB-;0)$Wl$-juH3d})4>IQPVBF`Gp@uih%@h=;0L z42YV7HJKCQ>xgX;A~mXen7GnGXUunL>2*GS6Q}}DSokx*t}kg?<1lw%e}?|aw$PqOL#dY?$1;eOS{`t65Obo6;$9OjKbEqt}0LXVPekJa1zNZ zs*XhREeQ6x`{6Sacy}r%5EbM9@zO4OX%|*FgAML=m={yh908;2wZ{vTKaHJvA)+FZ zP;+98iE>UWOJyw+0;8m;c`pgo)tLHt#0mzQ6rSfvX|5dNK#dT=O5JjIPXw7rmW6jK zHKJ$QJZ#%$7F0?TN|1xjookHp{_`3^EH1kz5{df&V{l_mNNONH1?Or(CmT;cS*A6M zQbHLKg@>?YYlO`#F48(hHJ!2`{MoVXc@Dyx)iY|19@1t$JQ8?4-SlKyQpsapKWv+cClq1J%l%=5a=6P+oi`H_CDs^cDj0x;x zg)h8Iz>ukbv>F@K zuIz^U`}()}08Z?f?cqVa;ycMg!X(#8l7l@P0 zYwa>1yu&hxO9XL+RXZnL5AtDwI>nTCOslfEKu==7| zJU%!L#g#;%%6)bPI-!h=-ll^a=VC3}4r;GBD6TkfHK;5eR4-v@P`7F3RZWmhiGJoR z_d}K<^wNhJoJl!X)Dr@Qkb#7LH$odBzA776XY&X*s%8aqq==dpA>xVT!b3c9*r~v< zEDZOa>faLUzs5E(fo4goBRbc$kYY&@VJM9wr z)yPkpob^yfST)7RV6#{TcO-K(8?E}-0ttPD<%+lA;ViUmXE)Fb7rao0xdq{9GF$^5 zSOkL>{Ole-@0bCrd}@mA;%vEz2L~7n#8nchw*)}+8SAWE)2xL%IIDi-z@@w@sOeO|Zj$q&oz$G6#B=f3EY<+hJv%>N=l{LH{;kgG5RPJPPm= z_bKWwlpR)`Sv=RFGxY*hW??g~gpwFYVeVxb0bB)kl$OeI7NS4*Y!!`rep`1t(oPGL zmX^7iU-{%tuNBp`Ncff7Lp7s6+lzV5Vg*H+Qgx`T54GtNlq5M4uMwjrDnX&NWV&%7 zyvA+A>Yk5^3$EM{$-zr^ClRNj9|iLCRNQm;3?jpkLdm(yyC3mZ_S-YI|7vSr;AOI! zcTTd;DDR|z_C(=H*Vteb{8KyAfr81D?Nm4hMDRofpWJWCaQeNHBuJn#P0Z$m@I3E& z!Q6VVv$goCTb>N7j-NU>OLO|P<)`KqH`HpFj!}Z~S&B8;RxB$(tG(g`l~aNBnEhO= zM-5w1!=7lY2V)J>%hfniYeurS{|cDp z3d(EWMqx0Xz4teV!>vzHF3ajq4Y#C@GXNxH2+Uc zRTPPJ1@qCK5epl(tSz+(TP4w1OI1c1?Xjm3<*(By);pg?mHYsGuLkEfZm(`IspB{`G<6U7{jn zuj?;1qfQrL)%SJ(DzQAN!ZF<5xKX{VAyd3<%wRLrlXAltQXK+%Olt!#W{mMm*5rLPk9`OVLgq!Sx9IF$aYfLCk( zn@i1dW#lOc^=?n4;M(?l+|mg8ly0OsI|NIDZAZkWN3V)gUp`tHB@;Fz zMf{eR77SP$+Y63sPhbCpJCQbJZA<)ESQvz2qSa+hh*tA%? z;d#ogr)&3)vFixExnXW??QYfBo;-<3QbusapmGm~#;f*|I7;LQQ=8<0qTAG1v$WOW zd78D36*yD`OGzU(z=!`qid#mCadmPzeSQ|Sw?(dKiNtWuoC->OBLM7AO3p86lC{;LyyCUa zGsY=G7Z&X&3ie6PO-TZrm*orUj*P?byUI$`G)<0mm3~F@L>*TIAPXA}TbaBAVs1m_ zvqpmWTG23;wsfgDY@}PNg$#3Fb0D3C*zliqAlp&B;8`aQmTRcH`jI^pf$5s|D`K6* z(>k5@Saq}exx24jUJ>BQc>-@e%Cc}}-4ni*A)yH>6?izeSd{nNW@QAlMv42rsFoD^ zQ{3fJ#K3*kg}I_~Rxg#dKi4l{&8YZ}ly3i>CfJ_Y5Jvzls~93y{08`jW_?3y&zG0f z%jgB4o^G`np-#eugckb#(${dyMDQjYpVa+!JQQH$Oo_nk3=1vtt(?_|`ES7`Ml4dE zc!&+i9))OcN?cd)&sXuTj}{CD`jiB__&?vVr-lj-uD+OvujAOvWUZo z%7N47p^C_e*ioVuFRh8ja;NlhnF|4LY+uVT($M}Ul(^5s$$9bv583bsPmO|f<$;z3 zxm$CgAam{CFBC*80zp5ulODum(CMW2nhb2k@L-rrS~xCFoiwaC(d>Bn zG`m6~CHusW3Vn98m|Sc~xcYEJQm`E@}qQPEAR{HU;W3pJ8zhgBShRJl3K5U;^ks?~G#E-NDWR07SMOY{z;pgaI`19!q!~wQHB-72>+z=-$71` zjmww%6KXLTY`^Df*gU+ca13l4DO6sv$o=q4$!X8ysx-!0X9yz-+4%|g2M-8gS6c=m z;1Up7C^2EBr$WzSS=hwwS^OJ#?y|;p3&=~;+X?6F9Q;t6lk$x7D!YE2Yv!=&{vpp% zl~FXi>UQtE!G~O={t@sMPkeGI3zXLKjb!b|tijhwD!N zOhT!gQu3$CU4>a_VW>7uO|PNXkIWi;lu0ktLeYYEqhr%T)iREGhwyyrw=yS+lN1Nu zKTjJg#jqUF%ZIbc>x&j}a-3_prLsx;9lfnaS=sOt3u_Q{@I~{bn7? zBDtqjO9PXB;+3~w=t>IfW$_!=Scy_8P&%xqf&VbM7e^2eEjAMID;5?iJGoj=SuvSL{z2ZdOUg z4S1gTXQ3Q%D#NxDinR~~QtN1-DzIisLEl)d4yPfhlGq+`PcOF@5io#(M%9%NNhLMa za)!qxhTUKqPYFCzQ*0_Pzmqp&^Ve%z1zE`G-qsfitq;Tt=}rklM*6r>bwM>|oG6hK4nAg(WT61t!(<+pqWJ8m-kb9Cfz2=)uZ=6i; zi7E9&l-jRH%{5c#NB%x#H_`#UCz#Dj2>3#SI%UL#QzkqGS-qozJrad`!mn%@vDDy{ zu!l??r7epl#>KTyDoZSZ6E6b^ev4{x-qrlP2Aia~V4Q#ltO3JRhq{|tTJWCuv6JDM z|G#t#4=as>k4&6M?sZB!5PK!6ur+vh`rrSKp9eqwU;p|1l%H9z|E706*t=Z~_P!il z50_u`#^b^K?VnbI-Tw6EW;)q@z1Y3!%{J)c$&)9a{PLF_?fL#Ehxuz2w7uMh497Zx_2?MblM^KbSprqktOIq%IL>=a7x?oFnbgI71x%hh+Z65-Ce9^v*~D{C|n@?wh`SNXd(z_Wfx@Npk?!9$$Iau`PquFvg-?$6g z_F{FhSdNw}yFME?I2!z_dpW%^W4szo25UAKeh(JA4#IX9v+-ziD3}kf2lq3xL4$s` zcVUk}f89pIZ&PvC&bL1`H2}mGyI0eBchKt(Hy&?qKJUHlZm+pXcQi3rbJAaTW3a8^ z@@8`Y?{&ku+_#}=M;GJGcf|qB&0sm4UUrAQMRze9^hX9KZ3{cQ72SNGhIW_(I32H+W>F`X zgZs^Q=zc2`ETZw7sTLA9pbAaz{Ku@nbn=Td> zjp4FxjsAyK*cyy)KHphyxj9J&+&8%Nlwk8cxV-Ed+_IW1`qNp@Y{ll&98MR@?tEa8 zYj-f8Z)4>Q74>*NG5p8vpu2c`b1_|)VPf>-%Cece zafn-D8Ag--cy+lA3J2}&UX8}4gKaUu^XbhtIF7Nw&|5gOhOgQh;F^Oq?rnh`UkrQm z!4`;vVR_yR-fn)x`}2We6W@!-imbRTxcSOC6~@hKyc}J;-2!XtU^e0sScomq3HQyg zjqRJeT@AY9Y46hTCAa&Z>|Kr)OV2L17XOo&IV*H*! zEgXB~I!z-}`1@vUiv*Pewj>yOYPtMthj~+VFd&WJ(erMLjZXEvTj8R;mSk)8B(tNl z`RHb3`OIz5y4h+A(AFRK7K`asciy|(l0w3OZN)Ko})*Jp;Oh zfNprYISW4R8`ftM1flL=Jh<70vfq&Eo6%y>oevh%@fM)MT86f?j>FOAF1BO8N)hIEjg!nvXmjWp-Fw?Xs(9&+ zr`Mx(`GJI$+J@Y}(ecwQmKjH&P1$A5jb+;ay8-%0Pg9usHi$9N6mHcZ?7dM)qo#}X z%_0eiZf%2t{k3h16+AiL0uasKQfYgeCVNBZ z93*Y4p{;u>Oa^z|z!>#=v);vMJlcjf!*ROX;&KgUYpe6THP8Cvk)h)A+fje8Hy&N= zSuJ31a=CD9u%({gtS-i*{x?;g28(&$wlJGc3^%%91$IquzaAW1>~Fz3Gg#bsefu}- z>6QxZI?VCi%rMrMA8)T&*zHqO^VB*CZn0eu08VY|+iTSBdY~6yw}sF`yQ9f)Fdr?q zIMVC)HPXc&!2a^B^L02~)77ESgV`_xxG#sJ#fym%!F%J;yVj(m(0uTNIz_Dg?O?f@ zx8+nCLGQa&d+Y6TVNnhI-5o4GS;LeJ$Eh1pjk6~!FHG~+jybs;R}9kOukm$vaBI=m z?y|PLIWJ2iT{PFIhYm~0z8t+7yqq4dK^>b~{`1IC#?|t-({XDGUOF^OC$4UN%&Up_ z9Uff1cwc=?rjyXNL;l-qdO5YHaCKwbt{ZiLtp8bA%2^GEtEJUzR2H|7uRU$9tK#g8 zjWFK81Z>DceDbSLdK)(JtNp`+Z8J)yr}^8iMQGcy8EwU61O|_-x_4R$JskASx&PH7 z_$79Gi|#h;!`^QqGVI(&__v)0;6-nP)LuC!AJduRx%7>D^11PJrh^<%y`UnM)X zSFZ+(ufk)}y!jP{Y+H;osOE{`(9Pf5-Wbln*RUPtOHvN?ey)S7(e*0)yff^R|7rx! z-w)m{-0)pfSo7=2*mr3Q7%u7SyGiK6&C@<##Ba`5(mhHloJFD8&T+LEntzO>3q8DI z{IYql?9EMWyNb5d{2KJswhQO^_#ngy+D@nQ^Im^g=x-s{$4H#EQ_fA>&U{Rf`FhH> z8{iO0upOGRIehs}9@xjW1}O-;6lqf4$G&6XP3l?Bj$Ij<1G zJYAk@a#0v#j4^Ka%Ly=U=6UApZ{;MVRI0L}*V_BUy(?nTwo9cUmC89&Wj7zNjq!ac z3Y^>teqyH(CICnU{RgF0T;8dyV&i>bv zpqLiHQ7Oq8G^m$^fLLAL?cqe=|Cjqdn!I6?fR+3YQ9gJwc}D0|Bp&#&BCE(u{dH7E zZ=70ntdbJnmP7=^=KuMB{%3o;7e!I|CyC%=R{c2ZpYYp$NAN>F+j#SfNfa$6^XKJ1 z=L!6@lr^+|PowBP{{r@*Hj|Ggir1L~-7$920CVG%<{7x(EZ z?cIW@oQ1m)2bbl~UQMNW9cHF4aU^w!+-WT0hz|yJE0c_{z%Uoz^!5p#UbLnxKRE6( zj{B5S4I1~^HO@^wnT zK=YUX;IaDlAAJtYiA<&;h`C43KD)M#q-T%oy^K&K3ox_DL_{*i6Kgv%B^++Fj08sLuOqm7N z6pf&|)C_ODK4Yidwd9>VHB zelU0wfL$7oWl-H=A92k~rslTC1o7!xa5d|4Ca)793;t6&lW(mlfD3YVGwHJv_~kT2 zPBw*$vMA~;i-*sq;FPym;upJ7cn6n>T|T6?X{%wqy1&^)+|U|OMJPX=eeYc2 zyPM@`o2sTR{Q8yB99Ux5R?^uFJ+dYf!TqVVTizs%JS8=9I|JmS3BXk}DxncIa`0vm zF1Xb^ldtr9B+KqpGe+Fh%3~37(A5}@W{_{MH1l38V_e~$bjJC*nh?Lg$-mUsKUxr?~|el?_pwyU2sEP+D7!)Erch zLWlR674h&s(ZVm%XnhE;fNEAV; zL9+iw4af834Ih&AM}1}@;1U=`MrQr9?Mp8|7{B2~?|YE8erqtfTh#iX8)W5>6MN=? zT#j><2Tf;2`<`mRoqsHk%p)F|r>s^@^F}?Yw+=)kza#+<0)=Be)c7qnNhANMf5FV{ z_&Zz*wUs7~WH!}ur=D6hA8yKgxetKBVGM1+JECYZd55vYZ;pOj@kC0~$ zl-1z4#3$G4whvEd<4T)7Yr(y~mVN_cE(1a+f*_9r_$W_NmGD& z{7cBIB+c{$ema#<2+<$Dp;0UP(TFw8n9&pt+PwF5zWE4M(>fC#fN9|;M!LU0g@La# zAcZS_tN#Fr=^|Ei=pRAD%NWBduh6JXEbSp?J+LE}93m(V0Ku;@9`gq87Cxu@D6t(~ z(}@>>VtCCmUZJ^=La(1JEaEkq(y$91<}m)Ay47;(+(^Uj^1$Uo3=x5QTw6#03%YLC z86^QCRQCJ_CcPS`dcI|YJG``UHSvF^7je>mV5C)CG#LcJ3BC_6bTBGnul3I@Em9YF zhG74N(|Ao%dxdESG^<@`a$gQvHebOw} z?>og5x59esqobM5&n2QFJ8|g&4nLbP7og%t(G;1h`Stx~K}ZSvzP|QSAJ`G0#j80u zx@l8_#sqSkKq64Hx*S|CQc_ZQ$*orj>Zqsdq?ICnYDoL|t3N;Nur4|=*!$m%p*WvK zosEoT07pQ$zmaeHiAiR?NyEr>>Bh&~SrjMb7`i@F4hQC7dUw zPho<&JcIz|&|?^!(vAPU$-2JZriOg7SQ zrD^VeL!Jm$7-9X`DglN;6nD8}Vv-Z{)oRutrl82S8*#GtmoWm!%f8{+l1w_3F$nG? z4VcTrq1i{~+tK&gj^3Ou*Bpycm!^l5FPw#-7=Gy2Ruush>BKb_La8n&0S*B`_o*Xm z%p|@zitL~H`#d7G<}D`bihX5Kv5(N7MHLR>4^ot^s2$a;N+0OIiC3ES zj07=I9hZ}a<9gmmsy^i~2S7HUU2p`#8L&ai9~Hp;KuoJ|{nPW+fTXjm&!i~K>JJgp zONJl#N&DMW%0msfjOJGx^|U>U`@RO3o5q|~X8dL>mN7K{)C2c(XKS|*I-z|y7-ct!iSnGEHrCzbs80{w-n0i zlp{U#s)!jqDXn8t;{dY6HSd! zn1!QTPK8}J%+wondsbQgvsJDJRr)Vd>^)A#AmA!p=R`F-d925AhHO>6W zwE6tiV!r)nelsi4JyVwEi*VP$YCO|Q^n4T6wqFk&&P#kbZ<%P@g_hqZ$yJ{w?18>G-u={3|Yd z=_jOvIw32pa3eG@%eo(G@-e4VAoU89ca(2HV1r-TVyhISr9|N)`88~%ikZ?W<`>Jk zFH%DPOznSAxNzGwW4#zsO`z0Ph0$AaXu&@@o-OS(7_evZ2AgBL|7i;?Earg&V1!nlm&-h-T?u@igUZ| zcYjc1#|4er&Kxoo`zPNf}*t~bqJc@_h!1^92Y-hX_O$zv4cp(K1~Y!7ul9U z(iNVqdIDbMN_BQ%=x8MiEqs@|`U}nznpsm3%-ZG57QfvHgRi&-2u5M~X1T;UQ<%{k zm%^$I3%qml&g*oR2n*u14!Q&Fz zV;iXWRFO1hFqnPMs5ZM3fX{^r!p<7H39VL=Rixt8TcT*ycF1x(E6liil6--*;f7UM ztfuz2+AQHq#|?Juzx`7!JMC1DpJtz2Z*g-TIv=@^QvOyG4a}G`&5AioN&0Ug#1E@^Oo{fh!f^7JHIr*+p?R|Td4^Nl zjJrQI(R@1;)d&oAiB{VrAb$T~&-~}FyRLYhY~0k1=5~=I%3r0;irvp^?lc!w{lTJx z(~oCJzNvD#8d?HQ9rm#_lg7Ff!UzMPnlsq`!_`86fJ4zYN{gy?5~KW^zB+a&zUVK) zo1FZzqag_}xID8<4{1=5;sR7#6*G@{aqs8lh5v?GHkURR>5;`0@laOj4fE2n!7a9U znIe?@nO^)+nzn*Fsp1CQ-Bl+>D&&5%2%QN;{CRj|ID3W_ghoxPIk>MmjH}r`{&RZy zgG;@Psk;fj%_2~;7!3Mt17;}4fY?(Tsrkbpw7C0h8Z`H{LM(qnV0eX^{RA*H(!1X0Yv>aV_u@-vrOpa zP{`dnKi#E&@amoaQhz@TF9`4W6qIu@nbatIa^Ph~0I9TWGx@@|_yrAS9PX8vOchpB z!iG#cWv1gHJS{?rnhDZvomA87hv_2lcdU(J~Y zO}4k6Wn*mD`UXV~u_;T{Yq_jRv92g5^nWqk&Vxz$KggbYcSi`GMmvV&(ErT^<+ERl z?bsBWU0cnf`m9#L`SbEjotsP}6EIWb>8m>Jg3FlUk6G#06z6ytw{ecu#CH83;73Jy z?Qk^^viNV*IKVj>zv_T{FQN4=K~(V5g;Prddxwq5iB|aEvGm9z=^Y44^X$rJv6K1d z6mROLr98#xAT7rzpicyfVAWL&v?8Zq^I?>Z5GOJHx-E))YXFPGKH6A*Zvc}+F>?hdOd&S6d?RaRWgK;>S-nlY~kij@}h-kZP9U<_O^ zIJs|Q0&W}X=w;BLT*4uIx`!v2Sek*Nhpq56*^GT?HHKc#%HPs+l;Iy>irEWp5 zVI9fuJ2-j)zmEZ~yy3g|h!vPJ+JRXgzyi8dE%FcG29<8?o6?3m@M(w(M@2!`LOh0N z$ng|_AqasH9{_tEJH;hCf>WO~GXgVNM&9so!5a+_J*2Y&GwQ*w2)j`We*Fy}f7ugO z?Ax||JWaR>*J9c0Vb7-S<+0xyyIzlX;P(wgOA6=Y7spV^67e#(okY48WCt)e0mT!J zA!b?}!yBm9ETPAs``eCsg5&~6JulgM2Q~$ozb74d^#i}GC&$nmm7&41m+LsSW7zYD zxPz0!?vQ-#!N&pa6`tYq_yB&s;A);2QSuV|yVyd=+F$8F^kB)jZSS;g9|}D;5+Wl7 z!Um6|RQ)_9)Q{}1oZVocM2G1)X;G6*s0m4&U$j+RRSDj2+4m76@efkX^O%>H1MN&g z?JjT*&p5!H;3W(Yxzk3XgZl3g76hVQ-Lw1kh%^xUJb<=_J|?`2n=t}q3x9bg4)qbc zXmFS2sIiT)%X99seA>UmmPbg`USm5f)tD0EmYBk_U8sPHl&u}@!Wk~QxEq;$we03o zj=?jBO1@!^5Iuj7k(32pS){lK-{B_3GeYfBxHTO7^OI*?)Ipjgg< zxcg<8#ZZ{VIo%;a%mQgK-w*_*Yi##|FxaJ;LE{%LOH4mixc8_(LSA6m?uqW zmue`JX&NWA9RIeA`?dsy$Gtw(G5$U67>`Kjgzrc^mtvx?_83#wBtt#XF+Q;}NowE! zZH^~Vqf*QpLo;}`fsru3;Fb57!(yBV1zLs6zF59qkL}BAh~D_}BA(Bs*b;HHaIMBv zEEm~sWP4x1Kn8sC8Q-Ltt;D-w_U&Td*miV<(E379Y$lhui(A%7)lwuDojOO<-yS0Y zZWKy#1kE`@qXjAej9q+XEOQJPVb04*vfQ5_It)c*TEN0PxR>woBhG~m+ZDSUnc)t( zCn!_w_k{Fm+=Y*4_SGxwxqARV>r-(SIuwZi9NZ`3~$XZg93k6QcEJv z6p4VaL`@=)is4D@(Md{ZhB@d{suuM!0v{24%+`YfIi*4FEqs&M^)=4nDML67jcf2% zVFlMkSbhqr_}Q-~C5VFDigNj{R7tJn4?Ca=r|&3E-{9V0upiZOFJ2P|A>gCL>2w{5`VGlh5OX7LSkO=?-@Cnu zmqcQT;zQ9Fy0nUNL>D*OX|4hAq`$Q z^rU>8Qy_P4Bu5S~80v*vKJI9xmykjTi>0YQvN=Xe5@RM4 zP>?9a-Sr3s6TiZx>-*L^G~q+EC{w#n5Op6|ve-fRR^=Ww&nt>VA-G=xJrL25?i1)m ze3!#!%*3(ahv&E$^4Ouw{?6eBe571eh8EL7C_WNT+cAT!IY;Brv)0in3&o-nQlB*I zV)n_NYEpJS(Fz2uIMf#Bz}tB*=k8ofNr^S*mqPwT=?7h&E6Onu$T3OLE=Nswx9Q-+ z>$^DSuALZ(N(EOfhHhU}w*~;nBOc=$%w&5aQ`2ik3Ia0YID9xRQT)1LHJ*3^(YO1A z=-&gLizCqwb^rl#GBTvLey z6B7j`kAA~WoVZpX@HJMAz3Sr(f4tVjDA^`VWwk||683m!;u>sS32iOZP6Un)wHdKr zNw^_fYsEKK_Phty*`B-leOqFm(?c|w-h1ldYWtnMxFBA1$gQ6|DuZf@XKk}SYR#i@mn8Jmk z_GzyWTsR|yFCIXNWVkRDT21xQ@Bs?{*nCQ8BDN&WL&g0*!~4!TM`W~Kl<*a=0%l7T z-u&z{#zXcK*@jL*SJjYeNZGP6sd$j(my1-k(){A5ginK;nRbaQ&n*|pUv>n$ImDU$ zk5sqD9(IHEYlV;n1ldG#x(OpVO2M386AKS@+wZZ1r5!n-Hhkj2B#l`&j;+XTJ<|`Z z3i;)=G3_&@T;yOoi!JBQ^q*(I(`6E_37k-utKBe2m+5k(5J)ffWzk$~gu5r669DN= zTc*!!3lEY4r9EDB>NNuKws9JoC3g4+&!)}px!S2mlKKOrlXa45@6OaUxES|q&m_CE zpLjQcRG~5QBY4P}9s!KWy}cy9Znf~c;BgN31o0Ob(fTAksLt<9+KBz_A*uAyFlUdV zgo2rDZ7tjB3;43vGbdP3{Et2?D6Nbw4x5obgQMK|+b z(5J>w=|qCKSPcsYXQ7;CC;U_sfcM?+%_K=rfCYoT)XcuBDo`_wFiX(ntks;ueKpJ{ z_=qeMhBW-DJhB_4Gty_C$dCwi#JGWi2~xD8!d!} z#@`rgQEITTs@@LgcRmF@X2#6Q^vlorfe0|jXKWJMlUQtIk_}yiF_cdOS$b6O5&Ex1 zz;k{N-wDn~35Kd%jYWg-9o;zZN+5f~+cWHJaBVE{5)Eq*9cXqe9)raISINaJR6Rpz z_p2T?!+XeT8$=6fy-h_BUd1M4{11wp@aa@kb@SqfuQkG_BRyyk23}kzqr&tf>LW39 z&b9(DQnB^Q(3t}|F!Y_y)(qPihU1j)^>L%mU{B5r4DWR4nm)Nm2Q3*m70zs_z=l5V z^Q&Or&&)2ZR72tv*J}`~>ZAG9OD|54v zDD;UwR}!Q2CN}G*IDqnv7Fgf&i2QS`$L>IcPZ6;v3V$qx{$1?0jS;dO=~apsdqDX+ zWQ*WnO^_@0AJ}y^GT~z5=m2u$dMHV-l6n#y!tv~5)*>rz<)}x0${z<9gGsiq^6@c< z%tN=sU(n&mZTB16ow$RX!XRUJk!P^T3ERiYbMg!)j3RLo~`$?V!vaU|tv={rba*%q2-I`nHNYCWTC za4WR|pWu-~i*vD+DhQPD*hOb<+v{QvyXZJwbfSIiqPvx4vZesLx-TH47 zCDP#=_x>nJiFi25W9+UhD{&8(_8jv)Q4@La5@UAcD?E6NO_}U+l(!f|3f^OH;U6)s z{4;j;t0*xLH*C>eM^WM+u46fNKvhI5F~Vxq?Z1fDsQ>lY+v9e$5#uIr#tym`(N>K3 zIu|?GRzwRiqT6}m&GaI{nO-IiwiMA-g6MMXx4)tGw@Gy;655HRGS`O$=lYm9t8Pb6 z39kAXeqS_xJ?QHtLGQ(D;%?D6dP{JN-r>O~#dOP7BH?nAn z-dJ{*m_;kJ#MQ*vyewKvaP!vv_8ZiG)Bk;oexFO6Bc4PH37+xubSqUfu@haSm<4i~ zI^%Yts}#q*PF+OqL^mlS@@?uusT19$2&Mbf+q{PqXY`mlFe;*_6k+u2b#xNFP)D!c z&{_0GL%+LgD54Kq!)NLt_*aTsz37hIj+SWT<g~-2!D!Q6 zaX;Fk70i@O%m+C{XUeAIT9d zVUPR<1!+B&6sDoku_%)!hO*_xP*P0sb86$+IR>N6F&Kju#k!Us-#EGADYbn(;*cvG zNg+=%hIRS3&H+OK8-!QS`4kh)eaGg zzf4deR_R8{f50$1 zYM3?;Gl|?EzZkO+lt;n6U%|ob=3h|nn~Caa$lX6m1!E*g^yYbrTX2!uc)@kTwf&iQ zZY$%%ODCkm=QcM5E)tTtfDWysDrWS#aAHQOmsTi{gs^ut)g<924$uS+o4-v=Jn@}P zX1GFBS&Z+g_A`YoKG^49c%HA*M~aVFqz;~JgEc&tkF94jLOJ$EZe~B_zp@oYYEqzP zZd|@N0xlsZvWgB&gZvZ*-A1SC0P#7)Fa{gOh`LxpTy7`_93!TlI7SM3d*JA9-V_rP zWl|9_qVW&R&WIvu2m1blOxcL2Em(5?hjJuD1n9zi?$}r`Fn!~no`eDG*`46*%FkRO zsV_VOCIBdsK;T{qBs^0Q!;mil`6apjZ4m9iZ-xG?6YYZR(1|EHMAF7~m;((ocn>Hr z8H3VrPap;DAx3TmTDrGCJP*m!v|(!SejH;wQv)A>#Tr=6iZD%nh~M2yIOJTND?tiP?`g7%!OOg+bX3 zmXK-Tm;43*wS%9F8^E4jiqA#!YZnPLQcPsN=P}Wq5hsY5_(~u))?UjEa@0_TSRt2r z2*tPJ+P>mFnmYz34og-u0#U960mOa7w6AG#7}1W~^qkDUW&k^kC4udyOcy?AJ?3Bc zILQxY9!ODQIt)EMfh08um7Boe0@|=ikx+{b2@dw#Abt3I$2oHFnS!h_w~#t0?qnal&ZvjPs|SXu6nN1bI?j`s%$1;y1qe8FLbmc@vQepq+ToPDW)fC9n$u zHd-RHBbu?pIWe8;UUEJrm3>T7dZ}&j2AM*KX&t3skWl>26=nb%5ah@`heqxZZ0iZV zn?p*!5C?%Us!VmCfJ?}UVq;~q3k8^^)P>1vI)W3F0Hq=f+%11?!KZu|LQ(M(R*EtO zGX~0XTdv7u&%o+1Rp}nXz8@GF%l1%~DT&fKJednX-dgk-gSN7L0&&NsYMH`>y>m&! zA*yJh57Y+1|0)Cwg(;Zd0*YnpR!MaC;oFC*r_5PGlplZ!a|B0^6@* z`?ZGl9p2hM(0m!2uNX``1WfEPCf3aEh^4i*VMcNq?^-VAJ+?*|PBtXQ?VYCrMU=+# zwS^)9MVURNghJj62@7cr6h+?n?M!yXo9ucy*>{w?+MEryNppy;SaQdFc`R;Bn_sIk zj8Wx|tpv&(o&{v|TBjM|V$K2t=n^gXEo;LFB+t^!CQJ_x=xez^;6Ql`PAo>P9kJS?p#U7qmSu~7GVTP%Bzp)jGBah2q*L%(Y(;@828=-&1`^%loBLTc8L>`+OJMTFy$6n~L9OQKU#A4BQm)2>yji`lsiSqQ$jI?I<{fQIr#+dD&T z!moGUE6npA0FMKOqeaRw!*vGSp;1ZK4&x#b%dUv|WD!94QqDB=@PTO*1zB1$j)nLI zzh!1O5Zg|m(^KxhFKO1SQ1+u;bkG9Y9U$8E0svX_0J7PpvO*)6*KcC-(01wn=K4Fl zevOykTK~tMN2&IR?)6F6%Oq~{WyW*Y4r!V`^D+r)tH{XK@be?C>nU+`xCL)|=bZxm z9w#P8-)zr6H$5#e^gW58oMFc!R2{*XK4Xj~(LbV86{WJT-2rCBCx(UiC%|X2C)MsM zP;kh^zDFkZ3uuI@(XJMFaJkkN!&c*2SPTQ^R#dl7?2Apfh!z`CI}7M?V%HVqAZ4Ss zedy?YzkmiG`@7BxKKEHz=&-PG8>=z{?h1Zn3os>O5XTgC%9Oz@LF3pUQsuiy-up;= zk=J9u*61;2a<3T{A_qy^$X58?$GSI2&CEp2bj0WI8>H+MQmTja-n)dQim{ox#WAqW zoLRBEZI;Fft2rN*OIGUP?*c0cs12vG<7gMG(5|wpmoAL;+Qkij>$)5M-u3hlvW}5K zVpDDSlC2tsQ}4kW=!TrYp0s(>?HY4#*hh_@K>*9Ob^uDXmIdr!{7``SZgt&bHrM52 z);6_8>^x8Z7B5XLFc+B~#KPW{9OTs`z?5E6!cgNiOvp)Kkg;*_1B4rpK z`+{B9I6k?$7I}QBP(d-46n|2|vs=cqq-avLGs$H~i@n(7dt{d>c1qaqVcb^KI8Q7t zg4W$cG1_i)4DXIY;#SYy;L9FqUs`vZLsfgh;w6`A{3hoRj{sVetm}Tr-m3H2Pa%Vg zlI>ILByrp<=`C&;v1^n&@~SL*B1G>T&)9_)UG+g;>A@T8Jv_)8J@+7Q_V^&@e2~x8 zq4-T>%DGI54kqB2D54ZU4G5WXZ7=C7U9MnEJ=$jTNeZCOpo124kPWQ%1MT`o8mr(U zvT3i55)c4XZQ23+cslfqCx;%<5^I161%`Z?C+q)?4zp`%~1zh_4C z!dEBI`j0~r_Hn`85YhJ*Jl7|hfW;aQ9pBBrzTlB8_&%X(B;JBe_)lT7{2!FV`XN#M zD!Z61I@;&S6ND^vc}|q^V8A6uXMx_wk#}N_96QbTaCN{_9-Bg4i#WTbcsky0c@vpC zatv!fJv7;Dhi2do{yrcFDUzyVG7F+u$vVh@rIj|TURp^}l1st15QmZtY(+TLbYe<1 zaU~P1i-a|Yn992>3aB8JT%@lPVA!6sr-&qTsyama1!$G&=X$oSv+`>W@h7{$Jvzo{ z_;l>y%dr^LhHOxC7096}9M%`@z%&R#YQT_M#^buu2&sWU>Y3^n{tJ*AG(&1o52=@- z3#r$kbFyZUNNB=iL%P;R$8!gf26FdV^bsyo`_*?K>Rwzq^oR) z9KBv|Irla+_yquOonq}Uf=1cxFK-uqRqgfDuNZYNw3lq2uV z0p){~M=6R`S)|MjB1X4}S!OyS5G?@4<=6wD{K8~j1`4zpVyxdXa@Z9Np8vfE=WAd> zg~!nS8EL32O=3tqfw6CbU?!|Caio!*L?AjYO4d$6rMTbcoFi3e2=-wK&QOXHMYaSy ztc9O*{Jevo3zW=u@pF3#6u~|G+*tyP(LR3eE`dCEfS-G4hCam4eSG%_KM%0YF@7H6 zyT9=B2!H>LpHI+Yc#5CL$nMVY^90-f!O!RM5?0T+i1F)XjN@I=x9b>txS?;iF;(oi zqp$bywG=@f=<6eVg@iEt_8j9pUg+B^5AsG|-)WGKnBo<|z*PRb9Fu~_74}bfAKy{9 z{9u_C8VD2Z7+l8V)L{+jQ8Hhh(t$!5J5G=};bE5#G?qv@Wn*XN#3e<+7d!kSmOA`R z2BaZKy=@8Tv80>D!h|v1Sw!u8hCClJAtpwp9lA#;VIGBlTrXpUv4BfvEm>r+-$<8P zO89I@AUrr`q>nmWo1?_`!vO@M_8}Ji2y6rcs0?`wpN9J-ZvMhgD2ZlrXK8;%b-icS zcEYDu%Q8%eBdqctR@bEp@44eP9I;g3#9Bdv6)y6P1QRlL=MZHU@UQp-Eye2S!u3XA zS2g=~RO5mh(+(;{ryZdZF#y^BBgP!z&zMpqa?!-rV!X3sJ%%8!jTk_>S$^)92L(Q# zCu|OZ=)o5_$w`T>ucasg)GHauGeF-HcA{o4v5jcA5FE40%W90A`%b#!1mOlvhrPHlrtuwMQ6lICzP-)%;ZbWrO#$yV`rz zQR~p5w~^^=C|M~klRG6uQa|beI~b;k);j~jg~Tz&kN7wh)wgB3QUzdS%5!;+>UMyB z*uYBKGU|2MtLrUbTC|l3k4$7C)QN;?$sJDrpq?Mh|bXnuG1Z zGf0bW&+Tk9f^FB~qx2Y)byan1gDpLkBH^IDBR1r=#gKcY*Ja9@24C;;>(?=FUJ^w& zaS*Vf*X`UqPe9*nAIhdkwW%l%P)W>QmlR4z;Kr!~w;#FIXXZwb>R@AuZ*YvtE;MOJYR`&j|AtFhgcj=rLgDogChW6zv3cWStFv$2H7vHTn_uE$Z>BA_ z?=Civ(8b^5eYcnvLdmxEK6$MzVmSzWrAaRnvg8-2ElE;k3h4ov+&WPUfR_iF>>SYY zNcXD`_|t>Fj$nNQmhStC+q~%6>_RdEN9=2zHs)7yRfPy{Jgvi>c|RyUfl)SzJ{OI zvHb>q-o!Rr{29G%*#|FuAh)m(ZFr7NFzi4a1$SwX!y?cgV?)~qQUzfl@!MacExHS* zaICJen5cLtERYA$+|d`+Wqn7~{m6~(!H3*VfM}h1)MY0pN#G<5TdeMKT8-RbK!Gv2 z#C%l5&MvF1TiECxQoPa+zE#0`S3SOym^jjoqnf>N=!?a)%%s$f1HlU&R<7?+M0$`o zGUMchXH;<4n%CR#2aoxo6c@A-Wo|9HU9!odz$;N3U|PE7>g}TF9iZy|n+#IK_8-yx z(ubAyaU=USAUuz5_5f|~_l{{w<*q;N4WM}L;~qf%X%9S|k9%at-HLry=5s>_R_e|* zMb|P;wilgy7OkeM_1iUZ42tkVV*IBR;rDFzU2TG}cUBFnA&?2l?dc;l&7X`yF>tMs z(haD|RAhnV6%+0Kbpa-~-D4o&cijQhf4=Vm?|JB=?ood3 zMNjzoxeFZo1wX%bfn&en=XY%L!JieEE)=WEBtcFV)ni@5Ly#{wOO)=%#2(<|sVvQj z0|<51wrT#1LaM8=?#bSFw-an*)hBIl>UpZr^n}-ue%I!$-Z(KWPzL%Q4^AnPgGXf% z1D%%A`ORL`nF9vAUn1!3ZZvp=FUO@C@K_34w=pc^F5aJC1e^CYu)c>FtHeLYu+eKh z*yzn3ZuC|UH+r)-1bbZ%Of{RmONof{^cu@90Xo1hlhgV8{U|*#v?gcrZ*4e2YEVSR ztEZ6BPAGpb6R$IFxs5&es<`IDECy&x!6ia#-@%jX>1; zs4`<9_m%RuzL{$;F`N)Oo3lQT2L$gcm-rz^w9#D-_3@WMQ6@&W=spT? zV!&)04$qv@k%CFE+*N<5S1Wr=zjrW#WpbD?ZQVKC1-vgSG@< z{#N~Z8k^s5*QSI;?1t9wjL1pL`99UxNBnwv4-?Ajntf;XQpM*%LBNH;OrK*4!CM$gjwF{sQR=(hVj27390pBImTz%KD;FxO_MA&HGnk9gO1$%+g= zo~f9iiI{oIuj#HBGx9*NlZdWu61MpheLV`A+9Cul~GX<$(t(_wyka!1zVZtMg>*=|1+k2fLVltlWg>Xe zTw;TAKpcH%u}i(qR0k)L%n;}R<|=o}b-06(m6oZ4F`L}?y$*!l-HiGIfydEg{yIfb zL&rs2-N&#a-H7%kiH4>WQYI3-jVu+Qfqp@vW(UnhAQql;z{`m0N@OZg0If^g5()m6 zex)4P*XFJw4y#QFlOEGgAi{U)1!XjLRi#TLY1h=?!ZvueCY+>XH28QUF^?%vj(u3e zNUG3eoF#KfFWkiDh0oZsRhr>yY>TOYn3G^-CzVcKw%LrGY6>NC!_5h#M6JbCb|~X; zJG$|HP5DjA?=7NvRJ6UbqYiPG4>4wV9Q$#mRv;$|B+4s?@)X2(GS+G{et;?*+c~^9 z?D6O-eOo#>msBuGkW|mO%+Bvscx$|t8kHca$D?u*kDT7AU0u*G;yu3I;dQ(q_MYqhG- zl~;!0HXo5?RXBcTOH?Qc6KD090CJYcEQK;s85pEm2TZI60SNaDgu6x|aGpNlnz8Cj zdIPK?>jeAAB6Ppys0Ou-77wnvU2vDSHJHaH+_OY~5H`IY$59G(8%ritdC=m!;CW3a zdgXky@P{P|dBY&jHx-e-4TfqjE^`NK=CJ$iDGsJ>UYfYoN4}5E&%~rGxf~gJTZCdK z6V&3T13bAO8C8kc?{>t!>f$gMNOun?+M4v4Mj}m;X_hJ&D z59HC1s~9R7AjGl!u6y+5^-Ygf5n9DL>Qmgse{wW5H(NK=dt=slC=}9 z;H6VIMSD(ahjF@)rFWy17_nwO_Rz*7xw$8ob94Y`5)~v#0XW%%4KkJxS}t73EDr*958A|}`7m6F z#B?4zD8%YI{CXvsZ(U9Iun@rE7~j6pWlwCVtpM|i-7{_^kIsUkFd&pf=usv{n|GU= zxq#15Rymnx=E<}q!{E35FlPq%V%fsfkrG?4RTVpS`8a@p!WaSH7yepT%b1!2BP z^D41sv!&FJTP<~#ra^q#XJcVQyTlpBdWzzwZ`a zIW|LW;Bw7dYv=hueyI!VVWy4O9~2C@jZIXaHfz4xpT{SdhA-knPi|1y0Dw5Y|^=y)t?g0!Q5Io6)D=1{>(Ue zCEsso9$?(#KCt56aRYm-vUQ^VaQW_e;%q3yyOyFUxo$5KP#LhKW*uRgFk#v$pw@L! zmB@S1ZrNq2a<(N!OGf%YA^08M-uu9kxV@&4hCI?Cj?@p0bo7vjTV~KCtxuSqT$8UG z$q8QQ02QroV}fvU05^=KNXwnh0=~;E4EL%!MSDc`mXOk6H3&~e(W+xrzX8D&6o}`z zUIEJSPU1XD@pFcZPTfGI9daSi&C0M78g`=`b~7z?vZl_*;m+?$nGkN_1p=|?6l|{^5ahw= z)LlnDN_F_|QNn&mG?AL|#CgT*hqI2I%h;DlT}fD5$IlyyrgXOAK+aN^BUKGVsybCd z{0TP~0Z+A`Nc$%(_4oOO%jyd!^1_vVVZbk3S6>**3yxl41CDD~aHg8~xcPat|B05DF3>GU%1c9cFN}8B>r;oERsQeW}2KJM09Iffr-e(regZ zRZD-3xza{KDnl4Od}(jO!d|9#ATiZ}NbFiQ`2w32lNLv(zqM27`1Qs6k*0UU-Fs5;pgdT0T7gxlb+*h9Y>e>6{^UiKb_o%6@?NrwkKmjT~n<#=GvkFi%e#w7fD zA%PFdcG-?vptI!f+5riAM#;%#H9W<-LKx+=ApD1`ask|kINqTM@ ztX_GP!{Z%zoP*tU2cG5_a=vrNHeZ_j$qXjiiK$F48t28SSGe-D5I0y`EL7(SOTd|X z4?snv)GO}`f;)F)crUo8;>Kxz9dmqgq76ysMx~JoOz_~7LNr;C!nzWvEHkq=>Q23{ zr|bx=Wmgl|T6R70Z8Nus6L;$NthGcD1y8IHs)v`5O<1)x?vDj+T4;J{%?Zi0quG{i z3CVimU?OPxQ0YJMVn{thn)LTe)3p=XFx(#RZJqoP-dQy0Km)mE+t$9ztre?Eo2xvs zZNj&d7bCX?Q57$=fhGx|&{d29e%JAu7(@ILe1+hlL?KFEJbQkOt8RnOx$>BThOzz-nLJeEMu9ty_Te^>4F@&OLk6B3tHrk2?N&2PA5Mq%j+b*Nx&fTr?+%WE+&$^20Q^EP(jJR%C7;6*JddwVJ~PJzs1kYds5 ziGwHy!|5Ktq|J6zzi$B{cGELA8zo190rrI8$=zAQ=oj=oss1gDD@AAaffn63YwTv)M6MWNQr z;n=$Jw(I;lwjK=fU3_o5zO!Cn*%PUc{H~;Y*=mR|&S(Q>>31mo&e1v-%sLxoN;o?x zMc&=Ut{8cL8&iP(CV6k!T@Q8%)N@PG6>gDO3hDc+v1$B-{#Yv1w3I477SKoU;))fg z@C-bbLn-If#MbE0hOhlaI2XO8R7+3F+0>I5?oV46S7PSbVPJ9alSKmX&z58lDNcr; zTjGD)mV6gi?s<+qK@a=0`4Bj_)mZM@qgrpWl}>I67AJn-Ff%(fV;K5_zR^>W#9FDE zkrhchY_^fBn-p-YJG`x{G1}zgR~1Un?@Uqfzv4x_7HW1Q#)Wiwe`qr zHN2r*EBT0hKluTgIuOYlVa&ci$Q?;Rnaqv@*5Z~FPY*_cjRUbwYEAd9qaGr@vIF>J zBEIs9w$OGJnJLQ3fN}3DMN+w(y0o$eYCVD4H7@2xt5mK>fKCK;KIe6=yc4yujNG~M z#N;ysMbYrHD0qcIAqJimmkNwswZXnsW9FfmKU+IbZZ9VqidrgH22$hu(4N0@56OWD z`^gxr$LSea(sC+vm-j#r+kqgoq8AJSdlp~BD=>)Ng@o;l>K=uuST&3e`+`gTDHE<= zGR$Pl^eA|mYdjSz`*mmp6}4vFF+En-q$XrF!mWmrn+vkA%mYj&hcL+R7Gz1!H{E^+RnSATOqCh$RM*`NTMVK{BJ46B7Y|HbgPFr0$- zuw^gf)S*4e)pKigTk*jgE@x~s?$kmGS6o=pzQQzvR;6|0F`PrfLNygHw90uxMb45x z{xt4mK9O7v!-nlMDyI)7|7T}++XmWsv`60Dac&b>md^ z=N1cy5+Oe^&#ed@wGro^6 ze+|oT$~wvsg}asw%p^`#v_wTNLp1AzF?^HlCeG1106{>$zYkHyj7JzFxX;M%WM=h} zhUsZ&UM0RNX6w=Mgow$`Gi*=$MMNpp`IrT&XKf~udE5}OZ=&lHOV>}L)*R{<8)5c# z0;)#B@wPc&>k&?95QSkRC8ciB8hocHArz+u7BV@g8sh#K=5ZclnC!cUAan0*UlT(C zM$bsrRES>Q8+vJY;D|FIDZP7WkpGZSPY7rfs?i9zo3_a7l2ED-^0{63T4aVM;Y~LK z>Q!AqRhTU3`&|m2%yq3)W)kJE#3DX@7V#NVOr*WAdxn&)k)dFpSTYb_kT?olG#bBC z3^vQ}wZEL*aXaNvxKE>^^6ojmyPJSS+dZu)$(`t6k37>cNt`FOWY}BB#NNb>&I_a~ z&q$wMQj1PL%zOEVyM zpf0xHw+wGukDyn$G+_s(UBJ^_beEtS0lRYqo7Lyd3J%=WG9kOh zG(X8ysjQ4G(!Y^HY1%PY&K_?dPM44pN8Cb;i|!TMsBL_qSLHKS-lTAQg-O-3SRWBS zl2e1CdTdn+wj$k%3kg~|VRk_>FlNoJ1ub(hM4~{~#_T0nNk`Y9Xy_uVR4D0MgHI$k z{goXK?3FPMe#J45RLN-ha72t50AX%nBJ%{i_ri5fFdUWZDtXtGJv)NJDWr=e=ZFax zDsu}mPnzC zpgMK=cWKpQJj<)~jAxc|P$9EzSG1GHLQsX@K}`-(TQpm_)l+j6T)2wFus)2$me7M= zRoIUL@xQe)XBt@ekZZnJr_!IlS_YHOl{HWFTwjYR#L`@Nt%E5n|FxyW>Cj{xDRV&@ z@OkW(F$Qj!VoGU0R4*w3LJw3wd(|yE+yZNjw3bl%$}im(J1ZvX`flA@%>DYmwHOGC z^(KVmp=6&w4cwz~2yc!TNoC!3 zNh8LKTMsYpVm~#zZJnb@Q_N{4F4>ag6Ao3-H)PAje2cM&s0lmTb8DX{ST>bvUUiK} zHn2=L>04i^{@LIJ$>Cp8D!XT6&8SwisL*FTd7DvLQG=9H{vO--eN+YjDAh~uv&dfX z^Rells?As;LUVh`(22+#*Qm!4o1a7Kx{^A1Y0V+96cfG-uVi=N9&O!XrItI4&1xY{ zG7q-d-jr=x1Osl<$-Cr06Wk^hpyYwJjkMAg$$LNWJok9Rdr@y4XxQCHc4O z%D<|!s>>F-kq&dW!xAJ%;H`yEZD_X#pE~e#-wfBQ@redcr3t3KP*zQ)M&>r5h@SWB zl%)<+BuNjV=C}4Z`APqB1m5PnBk(y#91cA^!dO0I!&y4SSqczsckvU|+PaHeQwMi)A3riRz!P|rxRqm^p4Hxma&+!P?@XT!EDuiR zFF5TZ-SxfI*LsZA&y?{i_Yh z;WF_`R9q%a@>T=T+n=_GOZF6hi(i0{ipHa&QgX_8NRmU6ObXDN{l2crirWENO2!XW z?d@7I=MDs5%wr9*axIXXP{85cJ7!;b(2Wpg*Nd@oAB?qD<@p?66PGMrxQulo8YGb9 zWek*5zh*}5hW=ZqiRI;U64)||pV?W)P{V~(_Skxm4~&-^@6uej@;3bPy4>ngD0ga$ zb>+M#yGleIkoQMktHOwnN3|X%g+|?K%NSe3l~sl)kPL?;2JZnw1PA!m9I{ z$axjY&XxKGhB0J(d-JhX?lyF>6bh>*WwshJ^%g68W)4|wCAPmYqDV_qcBKV@_xT%4 zmFror;O4jan$)g0s$8{OIj1G{p__Fge~=P6p*(FKRXP)Cau?0XQYTM24m!{Z>qI8C zFLR8}rB17G&0S}JKob=rD$eMuTaP$j-%?tvgclPp$R()eRqf(k@?F`{bN7D3)`ntw z>lQ{VR)8Mt;;f1ujJ^w?Fh7fsSlrT!?Sapgr>BvPN^ z6L00&kSpm?bk$QBNTjk!0vox7UA)G3Qh%w<#rQ&*aWk8S?K$Kv9dJ1a#e+(F+mk~nk*U4Jcn{cneCHIeacoS#x7}$~ zjRqFw3s*zFa1HGf)2*ki>%g!~ZY8Ri0BT=%LyjDpQSmOFggE6;z+Hi93!l)(Z8QdrU393@|1;mqz$YLD=Tv5% zl5%vW2vLWFTF!&+gBnwE2*hWD(RZX~IjYR6rR<=?<)> z@?aFT;6Yw_FphTMK~Z@yiFV;Z8?O7_gD8j2FXvzkqy0l!MK40%S5+zN*jtkN;$2bY z)nuuENT3ok5$WMe_6h-Yi7eZcv|t#JOpds0BX$e#;#jYeWI&Gnfa1+%Sumol4e^Uk z@Zc{Lb@&jBSre{o&V6ilrvtUYaXWhEa+M5@A@0N|+8G8xAE@KBJEXnn!(Jp@ZM<6t z_O1r|3tnmh#ajyh1VaA#m<@ED`P&rbi4jKXj4i1OkI~a(?7$GYPBBy5J{Mu{5(&l? zr}@FEP2s|^(MpAxojE(EbXSR)vUgA5lx|}-r6wi}6%Jp6wczqu2l9m40?BY-O zbTB5EqPn`FAbC$2kG5>V$%q0vR#4ws#+prcmrwvxG}o&wW~8RLn%XDh+*02}PzD;|Mz- z1eO8aT1gdeI8h4yH_*eHdVjdlSiiOh#Qdv+Fj?+sVlFFoj1Erngi*s5*hU|usbi+8 zX*BQMKQW+cIE6|GsbvptpC_jBDzNCjNT-!lGo5Nt@~nO0S^I`}8lBt8(!vrV+GAzK z;zBNE(dubEKN&mx1mn)(9<<2bE$rljm#Be9Bj?!{IAN)UDKQHqu48GORb= z0WckauF=)1Zk;?Lf5bz9x6ze;nm$93TkX^-oYW4{kD1eS*A))*#*5Vm}?om7cMN-67^~qNVoxGSvbN%UX4tU?*UWm)z&-B&S=B*s1v^k6lZiu$jVy74fy39aNiLHaw*wo|Ho%>-)i;UJE~o4qRMKT%B(8P$ zK>0>y-=lVLkDkA^NA18KwS#-~toEq=&+JjVZjUOJ)~t9?hzZ8jShJ>P`=@@FzBm>W zUjAqx77E&3gmw}LU{-k1W<3lwqf43F_kdD6>+~%R14nPLuC;N3!d(X=qC^^eLxQ=8 zYbc4tW;`pN^&LFRI8IAZ$MWrUk4=8Aml(#E#RSym}>YsH6|an6#U2 z+naCdhOVD>9WKl;*%J<*WV2glV@5kBvc{QZI|?8{M)hz>=G^pU&dm}bE)zdT$+|fb z9LY)y^l9X}Q?=g%`Y7{DvwN_f->=e?*w6E2zKgg^EbKsPph;S+%9mkBk= zN3)e7uEe8Gb!m^(%>e*(*LMPEyR8ay7Lv;uYSN8bZwY&55osrEY&2Lgsf{0nJ|C?1 zs6Bw=z||aM>uNvo3wV2jC=KH}wxO)Iu~EhgV}rIachxl(kk6ri&ZC_*iM1H}j_95^ zqD{E;V`V@$V$FMd%PkUT|2)k3!BKNWjT1O1%9L4;F;#}n`p6I)Tuw)h zh1^R+6N004ZWnbWD#yeY&Rnip_r#WDaPxis*`6SjFRuu!C>ZSkxHM^xv^vHVDoSLOtHmBe8!2HVMcystbqc_@s3 zAUA`o1L@s}-;Bv{F0K}eD_JixrIm}+WlF0TDUhI`E>8)1B&YW|lGcmK90bVDqu3ao z%K{pU$F`+->>O&(3zo-_v!;Dh4Z>h&7Km3CtJ@d@qr_WJdF`O3{=SCpV=l5bpIQC3 z!;xy$=#HlJ?1^?rn}}jPr;&d_TrDs9(!9vH&;xJu<&7ndjrk$Jn-Y$b)g^o>GB45`1GUtdPbY8f~2jLJ~3BS`xdaa zGHzSzwM}Cq!asH`R8n-zcZ9v56*njbg}lG$kc^ zI_G~+BuSRVuD+>+V85#Gnkps|{;(NXv}5~|B#wsX+osf;XC*iWP)`);_NMTWYQ&{+ zUaOje^P|^=T#b1m(g=vBJ8BwU`zsdR?VJ*>e2g`|vcH)G>5juv=zyu5i{b4t)LGz1 z6{yrG#Brobg&PnN>B$8}&**TLG8IEtmH0syJiA7LNkpHo7HF5ttuv9|yllz=b6WRO z4L8mAitS(Xg_HoVC`7@?2jz5X>JU8EK$tR9+RP7`n6Z9>a&*^*&3@qptr}{=wRb{&)c+@{|@vKI)R)Ej(db}L3Qp)AR z+t+l)O?ZN^haCh+wh3uYwgust1V_0rz1E znX=sBD--72`iyxr-8$qC{3-*B$m@@FZpM1Xu`owDX?7Bn2W!F9Zdmb$T!$ekx3%Eh zR@by+op&(!kuPg^rHoqjUfn`t_>p6wo^V-w`yvEDW;Os)b-T^>g{LPUT2HCmNjqc$ zW^|cMjL?*pdyb4`trGMeED~VT3fo>?z8}7*Z}DsgZ}A*6fK1G!%0?}miqwkSj$9yH zzbsri0uP9aExCfl#Gn)%w~?DcR~fVqc}krquWafp<6R|{@dnM~X~C|x3R6YH^lY`R z1gq}fdI^FaXdN)35gH|QEMK3cN_2bi?Jy@Sc4Jm4>O9ZzJ$n&-*;CPc+Y(qY@Qt?n zhMM$=aQ{mj{Yq8xScA{|_G>5wPiRJF$u~O!*-KO zpXn*Q1607x>CIv;;WO^;5u+3*|Gn(5s7PP=B=LswbvewbCE&W3R}P{`2zY zF~9e>lnnbk32jzICmV7aWPaD#wsCrH*&DwhS2f)PCYf)g6;q$%`#xjHSH;MBS~rMP z?e+b2yh&m!)xv#6CZ4$To-lSO7`sXsyH*>um9%wGI9#qLLE*MO76AE7Tjy;)S|Pzh zV(YM~MF1%1oom}V=#{s(x%2y z>q2KAD245W8{NhhI*Aln6?XeaG+MTukjDR`c@V+g`qmhmv54=I&smEB;vl!1nWjmDb-ak{~RH4KFK2j2Eh!Au;!!ZY#MyV!bIvpYl7psGwBHXSZM?oE zGM9pDhM}ky=oC^pL&Uh?`!U~6=s9WZyb?A>fR!l))XrvqrEJ|g28;saEHpRU27pEN z$TntVlV~jm*{%{o1$K;K9V7=9ZN6n8eKLjrrvQ8h0bW!94&M*I1tRo4&Hf622m-Gt zzqW|N9B#}al ztvSJ}u%PP|`|WJ0t=57X)y9g)YUWnh5<0M~X8-4`#^)%tOsHP-8VIW~#yd~l%FNXX zW5$5Z(CNSUkFlB`a+&D+T*fKyrtVCbk>Q{a1fKf}$6*TqdgPNk6xk9Zvb7x4ufFTV ztGtG}$+E{yUPE-RB#Q}gj?iNufwZS*L;^ouepfcyhw%2^nc`p-u;c)i9Q{m`G*lq> zNF+q~2d|ZXk73}^8B0*r9$YQGA5zj!td2fA#pp-=ZTGfj`vS7hOR1P6yQS|MLduRl z9~+ClgxGkU29DH&_6vI&W=~>BjI}PnX`%J;#+W%SMNM^87AK9@uF)7I*`N@CAHCM4#W$_f1&SbHhUXnv$x-7v)=`3*9KS) zRj|Z&IOwBDAc1eT3>kk535{z?ae4||b6^K+!}cWRDp`p$Q69i4-GBI1 zxZEr#9$`u+IsxS&)uSgN|D$(d@(iKOkn8`Egds0fTP}Y=oUA6DDxnX^H?q(2Zb{OKsYU~D5RpF>vG$0=NIY%>i`>TYn2e5anu7buSim36+z zyt2+0+5b0B<5kVAH~-*~1L+wv(6SFNR;~4(n3Gui<0sMazszzHXX1VT)G>9S^6Eq7 z#6sntKD`Why2`wGw5zOo-R6A%=PFX-_zO}~I9V$uwXU2FyK+7; zU-c_&)@{?(ayvKLmOC_U#@6Cd>&ld!bEXm8r3u?!q_)qL<{Vd@teircC@zdp;Kur+gOrdx1+&=A)Ai|M{9W{ou=5ye&!{%Z}zlCi@9cWA7K8Rj?)CCA|t zn|wK%j#q0Vaq3;1{@1fC&W;tQ$tk)k0nddDb!jhe$<5HY89IlI(~>gm!pAoJxCfs)5cjqZpStkd0etGg zr(+NSN3iCXdvB%h_gS4I#fb{~LwM?G+195q;C)^U`83vImBeEIptGTXlRFE|c12u+ za!E>ozm{;?189wn5~{dM{+}*m+;4sSZ0jDoH7?b?r4mQ42R@Hg$d3sm@|M~GlAm*I z%pWamUj}HqZ!?+R&r=-iNch7apkQ>R^wNX3`Ku2ZUPBX2p!YwX_bMq=^k$E(XvUs` zo}l3KJ_iAc=n!mlB3GS86ig6oG~q_O=HAJ>M{fy_kD0j@yCdSRiT1#F^FgiIO2`zF zoCE};6dWSS5s2D!g%m`;w2)ihak^kVU@qe+ka>> zX&Vz!B=mnmI6`~2uRqY8h0yODdUx@96k{uePvYqhzS zx~=L$wG~0LEPp7GyUX?e^5~ycd%ocrlKg(}o(TaRO3Hi*PQe#`Rt4!q#eR=mK9W_h zMNKM028!8VX)U4x;EXE@Q5E96lA@unnM@d-azTeKl;bqCpE_*(q(V*Pw|}s)nGR1t zMwNNV-A<(Z>7^m-OA+*y_ic$WT5B2P2`}oc&USMuD zbFO*~UsxXU%Wl`k|K5tF@-Ycc?L_J*yrRYGE~^ic=(FQmoU12J5i7}Uv{@5XX+rF= zN>mUE=OdIxh0XJbeRnOzCz%^M#(? zCm@YBh{p*XEbJ&-Lw3?y#S&lkn|Tf@Z)<=L=_9a7szErdn#}M!m1CIYqI5_Ht&nTD zygD*lwzgZxuj=RBjewU`zyR5ynFAz8=8!u`BOjKd?ZT(_AuvV6MIb<3=aOuH8~d`2 zSRx8S$~_vTj{96}am4pIyGo1BRC|q0s#tNc$KHAgp!p|ch?R`@kw{8&=W|}D+sEl$P!&$dACgEro**GFxV47~Q( zsawOXWDaZ~GX@v5XW@-_$NIL{f&vz7DfUCu58&&^syF4uRb#*Gvi;Ir_50)Li!iU_ zPOt5fYy}lh$5CxYu)4y_e;@IZoy5DoTM76ZVEGMTIjL5%gkMpve_QwD`uBBq2KHbs zhZF(8nqsZi+!d|a*pZNT8*84Hct+k0pH_0oQ6L!UEOQ5TeoH%v%)H|}FBRK+j@|E5 zPW?znb3SZ%NcFs-jHY5P)wQ-oOkUFx#I-kt#W=G1*pffS>P9xQW875h6cv&x-sHfX zac^p+k6dbvugAu^ClxCT-%(lkrWYE z*Lre*<0GCb;^li@3sIyo)WX#1Ch2G-($R4}mX1B>B8?rX`bR5U8D@{jBH@DYlEOsH z9#Q`pkp(z`8#2Y`*CqF2hT-Db7K#e&1OopC-d28z+kM4Bsek|!XRZ|IQszpL7P>?s zIfz7p&T%T2Io^?3_Hv%GDO0YcQM0f4$h&u*IGYzlVhwABHyIyxH1BGu+6omf`T{LySF_VaR6Uo9GdXP7L~IeDVf(wCJ7h8 zWU0F?HT5fERKlX;iZ%D+EH=DZ%q1h=ZF9qA*$rEzp?f^E+=B|giZw82#3th~-7t$v zXJuY}p4U3riP2r2=#uxjsbz0y0Pk@gsC!S>^5$+>zbP;}=3Ta%UM(Dv%T0hd>XizS zdn2j5>E%LR)`gQdvC}Qv>2F%21S!CNrVv+`8{63-d>XjCb|ZDpc7~#BE|RO9rcp_Q zzp@K;T|J>=S7Q6tW4((VWN+88X?YR5P2mXbUa@wL1XNn?x(&f$ zascOLfY$qgX?N(hgV4j{BU~~brb|2aAGalx**ry}e;)6kBzAAx-gxr_5&j}Z-{o!D z`aEV2Q$~E&X$#uoT?}^+KgSs3F*GfY+?KF~FEL&P7*p8T#56s1n?eb~uNb)3YD{H3 zjXx~;3pmy5WQJaE66p0YnZBy01XlH)Oy8`J1a@ngSXAG%JaAjW zaal=#0B$C;Z0r`f>Mqk+8egT@_&%Kh1P_=+{+iAJ*tZk_yEseJC2YDr%LF!X0_Pc3 zK|Qw%J9FED$?PHn=izNe0{+-E{p~gd_rYCuO2>?8%xCr)laNJ3At75)NjKhsS0``z zc}ZV|K}QedLq$4?R3=+SpV-qb-imTbHz!YsTHPkbOam$gHeX5SUo+(Oec|;bUOh|J zVxgpgog+FQNaAm;n$eMDm#2i>lkpS}`Y*7O2R$NN8B@qgowne~l8DF}{L@*#bs zp;!0#_S4EKLEQO&xqBDBHjd;`^s5YBZ!`*$0NaTjDGtF{cGzIV0!}tpuy~LLm>@J- zjj&A|&iA=r<9@PRuYS%03CRA>Ir;4x%}jT7b$4}jb#*;9A2lAGCZqUK`_XoCc0PL> zjYjeG`j@M?HApWn({bzf42opw)pQVNo9TEKk7tkC{YSy!Y-J@lIFEzNba*w2gF!Sn zj}OQ2{$n%^l5sXeP{VihH49z_Uv4^wV=5pOr}2NTl4%^AUX2H{B;{}FAviw%6rW6@ z!NswZJ3bD%sjXo>_#&VP*yedWxCoL{g-Vh^`xZinv*a}NG3qN|M+A+E9nPll>}opB zp>GPe;?I+GI?Fmz<;Fr|8b`A@h=OtaNud%(<6$tlngt2`Z#+wb*|`i=T`J;eN#U0j z?cxAxER%MiJ~Z^pQ9C$|Mp-Evv{f}EjUf5!Fe==WqYm0q_l-0w4f@6dd9}lCCnqkHR}SF&r%VL)U8;zS5l7# zuf>?|PSZ&|on8A4eF@_6)nz=5PDXK?rkEOUtDfD|-F0@8AA{rLIO72dU<7XK^|YYZ zPCsYYlNiWo|N8PI9R*7-Uk0_SF*h}=1z&w7Us|(te>P3VX9v;Q0=>>x#xeL9jjo{k zHSR_&*Xvus*32N(EPyzk8kjwF1I4LMql=iPB7<>?h2T{wAk;YcDp+eXJY=hpX0gMD z=HH25;|Z{*czOm6j7GtPu}xxHo&rg6!g1zRebx?S!E(t@=kXZ80KUU(C|!)ljWmXZiy|CnxKZjEJkIhf1o+Qu?roPAnag8AG@3-SA0y_udx48 z@*CUacPSJ4#hOInerhAZag+Va;&$tr>1f;x)}b{RT(z&K562{E7uIIb+~q6}11eV0 z(J*AhfmEWJ-bK98=C}C~7rFy>F-wt1TIW&L`!rS*NP>B-tRhmUaNL3T%i`V@~wKabN-W7*eUDi#^mTCEje$MJLwvf~PtYhGZ%W=17z zEUzJqgWmD}!QR%++v9_cw*bL|8P=>_jjCa#S)9#`?2k`<2M)@$wLfa~)fLg;1A_~( zR-JicUqrG$j%ucJ(HljrYKoCl!;EC3l1WX4s! zC7R}SiNFA2;>EVO<$xEf0<%^CCaQ+h2%;%0y{l}{cSwseUZT4FvZob0Abv;V2>6eUzh;t zgq$%mDy@@bO%Vmm8q9#-pd`{iYSB-Dbs7z3=`^vA+4vd=8W6o2%pB6)q~2xQL~8t7 z1_NnzDKsB(8`hxfdc<%Cq@8+{(BkeNHG%~Gu6E$h_ZDz?US6(Kv3^1;J?htjWhk{A z)My1GI6NIeXU4PUFv(D$XpUhOHb*Gjk5hQ~M1vPJo4|4c67t5WFlP`AX}D&|#~4I{ zt?r8^oB~GIf~dm1Z*W31^dhZoHgKb=DM0|v?VBNDh$y#yPZKE80MP`{t=EJSG{F=B zSA$y@dLd5pLA7V?JIG@`fRsEtPlo}qAEdU3kKRz{d^Ve8?Uj|;;OTd*I9rJam(i1N zpRD{XiwByPJa`2ROSg>QgFpW?WI!?zF(z0Rjr_tOvOD1qdtX?yZ59?}A z(;Vd#DE|ZmKVrpO-LX#7x;MC3oWHb-2hbyAEMGS(1!wDZcYkwlYxkhHw_i%1!#EpElL;{I zOcS^w(ygqk&$aKAQnr%JHF?8!ZO+6RFdxBHH(u+eOTlsl1J+<`Wa@jb=UKWtO)eAM zHLGe*R3Tjvj!UH#;F~T78}ae$-n--1-8Wl1-Et8pe$gDJmra(6jci^j4^;3zGf;{F z7V<7<3JTYYDWNy;Tgs`8{PvwY)qn~yKOEcZ&?e^fihi`qR;(!#_8P&iEZiP4Q*R~p zn8)nWCrumSZi93?<|O0JYyEc4=c7=}08s{sFDJ8W*t1x8$Hsu5xRO3Cm93_5seA#q zPMH@Gq(;!|?;d$fW0u~&kaCjv=_n-vbshJMg zwZ}Dm#D?D;_v2UQqs)L;;Daduvo2!Es+s+|TmJA-?eI}S4ViPVbnW|ETfGQW-(WPI z!R|xv7|2>9Xs*?dI;P4AaD@x~ELzSso-1J;!2i}wQPPkD?B&6^1%T*+6f~=KXCQKA zeh4nDp;Zt`XhIeMC02s9)q2M+fi+KWfv!q@{}LNe+)nlVG-w8EN3I45PcVAI*HCEn zi!VC`oW@G9xG9WjibAc3X4oq3oli^2Ha`4HE1iSJ+ zanUBD5GYsA-->L96&=T3v6~S7?tHQ4iV6Gu<|zXcvtL zN2}x$Q?g|Ww$|(T|CM5x^YtgnGPGkz$4%bRaQ#s48h7fng# z0Ybks)Mm79>|sl9 zn9;{H83rFlss_$pb_J)llj{J99qE)*pHVPKC)W-YE0i|j1D-eHPk}#|EjD~@$Ve{- zwKET2IiYC;_~*7cq~d>{&J(l+rLweBsSQtP!N#N^%gZIBku@Yv@s|GL9ac<@AKXFp z4lqnxw2cW-%0bJi)ZmV`NMNYv4>c@EsAlA-=QU(T z7ENQYV1M<=_JPh)MRcu?RdlaB|rHxQh)v#EV+2#J`}>bt2=XVFT|T59svWHk2I`F z5@zQODslaF^;RnnXr$ZnS{*Apat_)&k1nQBBlzV7D+~!A>{)G9?TMPVH()pL2jWh9 zn^IU5Zy`w1X6IUk9`%m^{~Tw>ZO`ZHiD#3cI^UF;~Ad8b$>z z9Oa^`zdRBXq`7Ny&|X7YKoAcuN2$(pm(Dd~oTb_80Ir#;^E78NfQ&AkSCF zd%@eK#C^-UEJvoBNT0crc{qhlkmtAVwI^cGJ7oPV7*9Vd*{E1vgYOFoYEXU=3C%P= zhiK-WfY(vP!SdHNyPH59{|?td0D`eyhT{jy$Z)Da=8LX2>E%f>rqc#XTUmM;!yqHC zCn|fW)<5BpqmuXiJp-@U8+X|FPsB zZ08Ts1()>22e2>O{C{wV->-Y1V(Zx`ANapN%%G@Ku+S;$*)EfDsI*jJL06XZC+fE(zX#&`@BfmU9d z?$LtRTDX|8+iT$ut%VaCC;o^^H)Azw-~YkB2b%#7zdk||co|F!l9XJs%%v>yn4M44 zPr(5c?czmzSQ8yOwJ)}bJW;?Vk)_XQdrN_DPf?5*D*>j zgib2PNJ$$R$!gH-WwW=v-QA>HY`i?j9p3JyMaG*cOoFoN1>Cg2aua0Z1kWe+^Yi;>gh?21qn;?0mc0P}$)Pkf~<59N22Kb@Li8V%nBQ zyEBie9M6S0NJ<}#iQElIoz`pv0aa{ccx1B$(9G)|8C^x(uk_UCU13wxP4eN%m(t@)m9L{t(Gw6=C3r=qn1xt)yZ!9>M`^>!7>0 zanRc<^8I4YVckjZZ@lRqZ*KSYw|3B3j3N^dB+Wb3^>IAZXBv`i1=6o@juaRFm)bB3 zsJmV12K5Cs8*w{WT4K=4%i7aO>1o8p z&u|YPZAPdfMK+=Y41jX@2>sV&ib{CxBF1U=}vuPE*bTFZf?j8=lfcqRfr94vl$5oB2>XC0TQ^ zkm1=II*Ow)iu5U+W7e3#c(#~#u!ln# z7n<9W4TeSdDib{Wm;vWnURU?AKO?`!(xoQj*u+vzaqreuL9&|@ag-Cwa8~a(M;PCy zwCk$&0E=16Z%?UmtP9FnI+?^2Uj@G@A2V1%E%`)dYV@n4KWUwiR<+#RwrrI~0+pJM z_hCbv?AIxOL0V7Jkut^~U~jcLxqj#8H-(!h-Uqh;b0z+CR3W%i?-g8LQ$B zyxM!edq6%AB^6B>Q;~dI$q6>sdG_{P14eK4W;rMXqb9aNzut`TI)tr2#Fvz(qd~F+ zns&sK4y&ZtkSd)xQvx(PWQ%%zk$oCy0j};+n|bfD05)X7WOVW$7JSy4#A=XvC~hywZOI}X z-7y(F=(}17B6rzZe4bT42fExsFP{RntJLz2cDZBk0i5mQnL5lVcv^)jK`JicWS}F@ z@Q$N!&ny}#V#OgNVw)0?k}pxlRfyqto;6VqW6?uhz)-(AikmGkJ*bS4@OQNc|SVpEck@R}EajIM!ajz-$PEwh1`_3qM)^?p*& z_Bdr}>@ARVQ;iwz+cXkwx;iTt3(T;XJ%hjz>ZmLV7mBiHb1 zSGT;js7%IBgi~4RK6m*DH7c5ehWxS-e7ULH;Cv8a9tPC#u7`Ed0IpVNIafkSIx`S> zoyWs8z2I<>Mu;k)3`;&6+Phq7%mZr@EYZ!G45)6w0;$YAY2!wg6lrvFmHCB@JW~M5 zv$8|TT!K)51JYImxU8lP4eDBS$@Vw8Wh0Vt*`IYLK|M-DmUGG2V!EQ>m&P#^jEiZp ztGy$y`V;d~NBwbO)d`1Wd}Yj!O1Ie1Cv^{$D?CH@7Gygvtq=zT0u8;+=Z1qyI&S(E zb_9MGYFN2u$L6p*07sM<_7+|>N-@CW9y(0H2dk7mYC&1@pb{$h$p3SEeQWq9Xd!E= zw_0XFCj9E^tP%j0X`Wo25eVyuaGnf@@mQ)_fK*Vhny3b0d^B&ctOv?tBi%E6%b0^p z-7##96SB*V|56dn$&Tb!6e+3aS{>x455u9D0kx$60^^azrQ|!Pk{7u&QD)SY9=}wm zD10eY)S*gM7um4PHcRp?`K2JsdIu(OnOD<9H#H%|c6tZLZ@W9)J=(MjE)-lRK?R)k z3}0lKw%IYCdIi5vFiJQnm{y{dlbYPzVnqEn&z>~}tH0?0YZ$jF0`V|~-$-$Cp}(`) z+uQ4I9;n@!EPysW8|pzpaHeJsA}pKw&tVL zFeqDB-3mwd4rkBy6|kKFlmWI>+7m-_`}6daY&dCBtkT*%}SufoF` z(=6_*9$D2<;fWu`ZV^xM(^F6HTU$ZvnF$(*(63WwGCo-5YR z7d(yY{zzZJbpV3CKr5Z&zU0QJ4!gywB}Wg|%YCeX4j%GJ>ly*sibFXo3@!YZ;j z;>8=W+eAXMp7ph(UK3uB5Xaa{3O6jV#j?7TK=A5QdGHW2f>9F7O_98@;0AL0HP=il zS9wQ6JoK%fD$!S_K}Y%&oecrVe9fT9wvae z>hvg%rltfv`elH%4dN^_rR0Tteg{9Jvv~778js_VDdoObJT1v4;z2IO)Elj5yc)CD z)T+Gs&s9vBE6C!2{55y>x*M;5!*gGE^QVoSw>WUMbW900P>&D~pv|*b?FK;Xs3aaR zA{g;&I@2RKy>f33lc6#Hs0!(9%u#6Xy;K!?4k@50NxU3Mf>i=hiTqMRlk0B+X`}!L(8ClKP3!k8 zSZ#f`9DIerW>=RPbbUE`Vx|fV|iKDOR34t0+Gp4G*Ao(8&n{aY6EH2z73`e zY!Kq?d;xU{gAS(1(^}D7bqfpuE+j8E7V@JLs}0Lu4gON870yLU_@%?$wd^ z+Ok90a>D2%$#y~6QeG^ zy#Zw0g;_?!VHbJww&LDjeI+Vr25W$9B*2C#KtYaz@k^(&6JbrJ3>m+?YXp{|1dnag8<+z5AQ=Z*t#DA2Q7-SJ(H^r`51*a6XEn=*TSwr*dHvhTD3E}QW-*ZT<+WGFKE(xTqxV!qQ z3crA2x(4Plli#h6FFMNjgJLMj2f_kr@#6~_Xcaf<;|mG>QfrBklvD{!I3N{8xKE)< zEy^|)=`K+HzC~}smG1B?K0I6r4-bdS^_99l3NCRC5NcEdXeRvpnWlzPi0rfI!?Xe? z)pH$@K&z#Mqsqg0E}L-^Qh8iH=>*_T=g0-4WE*AaTe|gNfxmZJTHUeBHaFT+|L7j4bT7*-TY zz#$#}ZgdRF-m=`*MwNIV9p-`_cMCbbEEUB?Oe_y6o?aL;cv<`LN8OV7pa-O{eE6Y} zqt1iGc78}j@*OUs(uJ-#^B0T``pF$`7oFhF$wF6)epRDZ$&rVfT%rVbJGF%WjS?#8 zCzbzBDM5QieSN`0X~s3Qs_9bN4jGI4LH@P9vJI4eiypwWP_CC~$Ps0g0L`&?VZuVwx(l7itx6S;p#DlT?r%D^Sd)f{W1V_c)@8G_dp5 z_ARN&ji>^uI*ZCE8(}C~&;e8fcZ~bc92HpRc!Mt7E-r>~_!0g3hUFg3&prH@eoX`A zaO@7Gc#}8OVALA9>k@sx;g5?1E>QFc4YmDImKz{OsBK76;L2xOeeGbCC{ix3Km1(+ zE(xMqqWC-MjOHJVzjNbi046RR3Nxg8jBi5gawwD8^e5QMf2V^WQ~6e=a+kRri$5kh z_9!cQfpqn;f=m98i|DES{Uoolr4?j4aCgKw%}+iG1pN!HMkoShdb!FYH7 zDS4#22IiznK!;Wu|E!4jmnME7&YodFCGzP&t;_U08K)R`GA_~9cR|eg7h)uq3-t?T;E6TjtU$g{0)TsoUXDa_QkL@sM<9!f;e*PIW)pp!go`!0dn> z4o$)@Iu8`b!dz9}CfjkT2bW28&VkL|?#8R_Vl#uQaW+UNZmcMB?y~KZykIzrXua34 zl~~Y@7LJM2bn3HO#zm!Xb>=82xF9bP#at*2drb81QfgcvOv=u0ueXsK840%IL~(DH z-a0H5LK-KQNAMLLC$TZm(Lx@I85X8jRzBt_k)XPK<`;TbQ3XJbl%Flv!z_1mhGt4@ zk{4AM#|+VJ|CP?-d~+Yk_%00lq0ZIsHV!s_Dq4D^e6!AUTN2&>Zb2%NjE&spI|T3; za(nik?4Jw5&`Nd#Cv@t}QQfspfr(twxe0IzJwB{L?NuHC{_?CncQ~HkAx6MMXYF~Y zbUV{~*0%Y$IKCloLabNByxfwHX8~{R-;QC z=X=B-=j3*Ljzm~hvB$ZDEG`Yj$&xqCEjf9wa{F<(>mIUDE4hU9LqMAdtlA?EiFwyi=&j)mJU^nQK9$iUYqF6@m}I&7sl*{ zS9X}>%D~HX;gKukIj@VlDzu_?cqrEMN*{-OVFUsz@eYFNuR8Aa8~yQ-x<`U?))#%> zL_lyG0HNFKV{zbP9UQP#T@EzPwJ; z37hv&QpMbs!^Avu0p{-}V+dr+>9bPW=rvS=Ogl28Wu9!W!d~4DT%`3E`?hql>DjlV z^V7Z!WV3GB7<>FOj|$L(p1*M45>M`E>WS6v93g8F{llFdfK>X}(pY}^XrxPpo5D*C5*qI$I=-j&NCCpKe2m?y&1b7Rt8O%9 zTgPM!8*4H{e4rFY^#u?rG_K_lPA<>Nzd}6pl${z-oJ|WrjDTj_iTf2ieU1ZYz4|_Q zwpRDJ(%cv9cXg(?6A!yn0I$W*YDdOFyC28hc`*_a=FC1v|;v`3xXr z@eHFaBvVrvuXsLybSX~cAJ{l0lZea!c#}dd!}{$FJVMEmuzJ z7jMFdm{i_mui(r z!?C}Z%xi43KqM+erf$lsK>rT1Ce zRG3zThVnA6?D;-;iZO8byS?QagXt$)s3fJInhxAu+;P+5wm%dzLcEX^UC)j2c;^I@h*fRshbM}#$KEH_@~w#ca`-93VYRkJyxo{D;erpKfSaWoCs{hWn#I-HGN>6zK}%Iu9Q^+a-){C! zEsOh`4?3cbp9{c9F52tQY!_%dzq7gh{TqLoZE%>4IPTIO>$(x6!g#GQ5hK5yV#N1+2J+`%u zi)PnQFzAL#ez%=9NzqE#Jfs*2nv?tC03gt)Hc;Hd!+`xGs_sPQKKeaAO-8edFo*>i zSEzzI%$b}hKSh~ni}qzRn=A7Q9K4lws42Ukbzu5wWB*w6GFH6$s#e1qBUqJ@g$m4n zddg*Bq54#h_w?Zqbp>h<2hjr)VG>fFcutsra89s%>3pfEvr0PWHZ9SdU)-M2#mecz zH6A3Ti?d@F(BD1Wx$j`XkDbA^5&O}pSdRg83`r_!E{kt%p;8m)uZbolhQulOHClfd z?Zf|c_;6nQ^M;emnHS$bgt)zqaDTsNG9v_0rT?XTAXIc4&6tR=FQW;0Qdsy zt)_b;?dX%Iz%#~is76+yyD;>>@B2zG+q|FZN=6@|rqN$Nx~Rh0uTs6f?CKMyU1`u; zqCNc*C$gs(a2j*>kvC-|=>wSgVg*sqn_$Wu_%TvpAJzHKj#93JWw=pqmO{KL;3+5b z=F))G=CN*E4E=E3x(pwhdP){94drY_W9FQ)ss_t!w}*HxlH-)bst9Vml4FKu?qx>% zCL*+$YaU5hH%x!6ziBbpRt8>gTmL_J26~s~zMGPlB(%4!(Jc`D1Z`ez&^%eC@mMo_zD{`LosUzFTt! z&5g)GcE4Vfj^dMrn?TN()JZ2?5XLA}!e;(oZ=tj>E&lIp)&x7u{uL~OWOh|~gM}hd zW)*xOyC~k@=ZhxKWv@@{fPUq+%mtal6V$gEpPP;qIOWG5r}1PI4dOY?v!pbfVV>9q zT6^8y?TyW@GSS-OQaK|nlro}B=MBM*?RDRF|FwH80N~v7YX4yC;Qaxdf!^=D?!MXD z>ApVR+}J&MzsFbVSiiMMt&VAmOaI*M?(QEyUbVrwUv!oCJCym&z=t{uVZ0vH9#hQP z$E&rDljXNxVWK9Zd`}}af#R7@$=fiCqv_!M7v9w6w6C=9-?GoK0Dkai8Wj zws~Lie5p~XH233THxFp{$3}cSYtcyXHAm0<2GDmzB(3Kk!%#4K{UZM z7apN;h_K#4w;ddyZU_E{I~y#0Je$l?r(9qIk*2dz0$b-=9R#*X=*VPsr!HEz;9ycR zcos5(56rLj5rne6=5ynk(!Qt;eF#FyIh>3gxRlER0qF4Vuz2Dzy-O%+G9~#S{YX|1 z4j-Y34Z2=`N~afxk0{MRbQ(>Q;5#(#abR;^%OHZ&ZIqn{q1vS;K!)*2GA4h%ohNJm z{3HJ7MxEQ8O|P-pSsD!EldCh3G+PFyrl#Km42cJSzIXcxuaKD3F!Q=}MpY5Y??-ii zhB55(a5FbUXVdg*l6h;ffOA?D?20ZMVjCbdd!z!lD=ZtDMm;9PO}S`!u~_XkxVKJm z7n+5X#49ae@A+VSb{o#1xmp&rcy0LJnJAPYfPUJYHUr@xU%utuxRarm_zy1&_>ng= zd7icm;~?uWU)$h`kp-;YIU`%h1vOgBie1_2T(2j-xp)DZ6<9jDA>WpKYyWsxopnks z7%=&b$@Mf#r{(AA>^z#r!zLAyqi0y{MyT{x&Y_a(v-=>LPFs(1Pn~lz;kRu`n{rbR zYbv5v4bAH6O#XZf3+VjEAXFg>Thpt0%^mH#n!XmKGnmicHkVC|QY)0e6=Uf; zLKfrXyK0HpKXs(CWl=N|%Z$ZyDyPiH+~6(Yk1R7+K=)?~PvfMDkhiYSp~Pn?9rxC0 zsO57V&8c)mbC8^oZk^g{*K%R#gS54UjmfdcQIJS23nfV?ra0L+1vT0yLWJ`6Gz-)2?m>*WB;{pOA&=S9kvFu zZMH0t+=$``*ea7Hf6)2U-7;DCJlP>oV>IwcLei zz%3CH7+_=*MtozYoAC@2xhypO`SpucYM#&Mzvgk3%iA8|b69f}-f17FqzW+X0 zTSb{k^{Od&eZFVT!Qe;n~bRf@ zcGQvxRzZ}VT#w^%wo(9sTBpe=G7h_MzyY~*zSYL$f6gzE@Ker#)c?C(De^&8oC66? zb+$r^ARmpW`GO3zn;m`4&qL_eF!%J7m(c!{b0Op-@ifh{CZ^=P)PZ&k3lsg_W-i=v z5VF4^&mx*X3O1XTp*0}08TbYrfr$jGZKpTw1Z-GkQ@biUs=G}~_f-U0uG($;b>A&= zT~G$DQdb7B$`5uG-WF!z-Pyn(p2xp-H-0{Tx3ODFe5{*jeu|@uCWsw(5D@O=3-*_! z=H-@tippKU&Lbm$^I>fMvzn>%b6k$9R0Ao~q(rfk(3RjtMf~h_zry6ai_pMCBrbWO zkU@)oGW&;a=}PgKOc*O~C80dMTgU43i-Jkh{ka?wH9Q@R&Vh*GV9TT(E8Hs|i8-~2 zS{ZK8LO#Ii=xHRSw zAN0*RT484PQOYCct|2GR8z1j^mRpQCb-{kYrZ6&Dp>_KCbjiL|1g2%@Z~b(6PGrkp zcs|va%&L<~9WN~g%^d8b5v2&x!KLLz>ogifbXSll)eAwD`#A)RHf9zCS3Xm(^-xjh z-(m{Wm8h>?3w2J!YQf=NSHpoaJ{&V?mKu%rO^gDsCkWOY?3X$`WMD1DK9#iMFWrAk ztI}~IENby#2U&AG(?Fd}3{>~piw<`YL^IlR2BatZ>N9zOHrx0QJqUMds~@U3vzWH| zsW-L5N5+Kb@DaQ#iaUE93ObG8@X_(HQbQa*YMAhZCXXG+64R^kEV+z>^LPaH`E~%B zM)kQB3YVNNFDL1kJp|DxavVeeDUO>!VHc!p`4nB79GuGd@g=Z?(*fC*Pw<5NgB70) zBz>Kz7z(wHk3S9uJKA(5jR;i%Nci?!|^u?4hO0}Z*EtgfeRFiWynn2$7i%Gj^W`d$ykSj5j2SLIq-mZS`NzPv}HC3s84YQT(?mDSB1rYO6ze^-gy`6~>aB&?= zgX!0^bFCLwwoBw%)jPd)RQRZ@Va##Cm=2p_6#dz?q*y`$N`|F|D&yL`X_=i$PL6L` zt4e|>n*Y$TW#yDv97xtpR<1&~W{TbwO|*Vb@d~%NUn&Plv!wUv@Zp&x;0K=4 zdeC$3AnX&A$=_~WX*k;-Z!zY)wZ!D(=b7r6oaJ_5d+Nyzjv{jF-0h0w^iHq)RDn7{ zubN6{dC0bc0VGeOiOnsmCz&Q(Mcy#Eb8O)1y)(;>3 zcoLn&qZQtN(JfMPS3K&Nl%#^3QlkKVhZ^YNBTA5NmuMM#e=5pKmBU9ycJq0iAZByD zJg)W*%EjTES|J@}T;am*A3hRE;P4Rz)^ff!yyupYSR5*Ku88lAJiN>eS>d2UL0bVs zWu!QNrK6dQxu!edA7;pbjr^C#%CY9O$Dvegl|mi=)4lNl(!YOPr#Vx*%jK34=-@D1 zZbgnC7nZn$Pk9!|w+KRc8+id!5+3=s>(pFeWXWAzA-;G?l(jMz2cacTcyza)UyAxe zc30fy`AZ`paDJ8u=WD}gJ?OwuHE^v{#*b*%QsGI4H4LI&o6!YhfR;R{7%J#&AFJ1_ zwaVAz9=}(QI@MLcSK5*TMZR+O8~h~M2h|C&%Q>=Ky_0%t zHQvSGQf@Z)iU3r)8n<>3xvnPUs_j!O^k-S&xs07%4x}9XqK`F7-fI= zL{JiEKj1~i2NN-`O)i}q1C&GmCCh}1QxZauYIRWw90v7?{czb|l1No{Rw2K8EmN-& z1i5cpXfzRrdQd_*urSZ|3!?9M92)iO48|7P^NV2skn!x-WIRkiwRG};9Jqk5bIAWK z`j{ptxnHK!>i~LuVT;tz%H78_Ih|ta+B*&D)*Gr@ko*$RI5^Gk z*KHu*;O!=EGisa!hnK}GHmvdYni<%C;6-Ka_vmBf&{nNo>$ou0SjrZQuUgsc8kjQ3 zNs|%Xvew4wIOdAEB%oYHyC^S^5ck>hZ|pXw1EU}L$9~_EDJ~oWSH-QrX=9T zDrdO&B}cOgOzX`{Nzhj>tZ37)@+osmym5#P1K7}6Q#SyU9HH70qX!a22cK1R49V6V zjAJ0LS;~Iestk<#G>r!5Y+LMu6Mt|x*%OeGgd-S6H8l5=)^(2BZLJ#}C&k`C>>?IStXFCV;ed4vCMC*SQK~!RLZi(Vw?=_m6+-aXuiM;`h(ftI?1${9$%<3PZ;C+5`s}Q2(gTrX}H8y^k-C zyf~;Xa8{+;S!?q#oW{fZL~ugim-$08+1QzgOyi*wk7+zCh{hDng2M1Lc37tI@S%e; z-8+MlPenA5_4^Yxb1D^0#XXl)UgqhjM7HX|GMcyf!(DSXXA6PJD!?fBB|bovUmC*t zli&oi=q@rmy=#7rM-Y7b?9o{F@xac|mC)Hx@BzlltR>4Gi&)Bu55*c3NI8y0xQn z*YnUFQ`wiEQ9y306{CQ6UMOdFamDkJl~_1WD*0^a`7*`H(Jg|{SCNlL8WoTB0hbDz z_wa_s^2;)mCd@f68ei}D9p+Jdsl+o7fO5FDglMoCui>`$LN~Q}HAMwnj;S})^>+i; zmQVsFSxr6*D0PU+A!|&_OJK9LsU=|KVX)1iCR5b-*R?AS#VpPN#iN`b!yBid3=4`h z=LHE_QadzXz}qO6f#Lj51+O(=v3794dA_~bd~G!f+UXcLmQ{u_$S(n877K>`D=@*i z-I%5VN0nCE+F1*opzQ$m`|&LJ@yD4ZEzVNq!>@%EZDHfcl@+KsY^xzh8FEbN*wZev zUN@pj->G>-a+KtOrO)M3+3% z$h~1;OS+DpwKCRgMa<4~uc{rbU`@JPgzmlw(Zlxz4zbx7KaPKW7Mfk9! zAm+tDFPI9GRME5o1ie4?;US+CLs+4$*I+5RP^qzKH*R$6b$b~YV{-h|xreRqoo!}s z^<61Az{p;qE9Fel#9xV=3|Cs1S}b&p&!lSIiYBn2bJBbncXJ*rnqqwC6cgf)q*S>u ziIj=G*7NH~f$nTAltk`zJj0G|bzjsta~hg8&SKxl#`kW{r-{3B5;(^&L1{YX$O%_$ z&Hv?w;_!T7PlCep!*kdGf}1*O-avkM-l>d$K1+9}$z?($RN;+2QH35niM!DxDOj&# zz74!x+onTE40V;;36^njOjOMsgo4P{6V~8_+8~*{!mVP7qFdhtO4~E37Oh&1(msc) z3M+1oSS3T~TL5g6+}k5I_-<~(RU`&yP1YTU;8eFR#!^ugv*W!Pt1Q@Xqlr!>NO7+9 z6)nqt`_wfP3hLxK*ce8a!8>@61O@N54gz!qA7cb;yfr1>)h@dDj4r8K^Xz=Zf!{Ru zEz05;kW$$WaE-kILOM-9YoI4rXMaHXsCAk0-*kGmlAWiYj^RsdaF(nm! zeFB?f7Aw1U+0AXTEr5jhyXc!I94MNY+!#MxH-bQSWUCvzXs)elj2R7p6AiD)Hr_6| zwzeF6rPraZGK&Tm0h%vLVavQgNe^^`OVWeq7GjJ6++25W@M@Cc&~cy$PVP=yExbH@ z6wMAF1$?W4r&$~{G%^U#0Oo2sVs1v5=}>VbI>r0=j>D(|ajvw!j%Gps-{H~MhlgR< z`nui@Tg&{<;bHypN^+(JexUzTulA2&|KC3zVWq>v;j;R3c$j_d)g(+nm=W2>L8FC{ zn{fnMREnb%omLdE;nH-WL94`037wXJWb9|mv`5fUU1&iW@m)=I-6zF$g~BWpH1Un( zUF#eOM#TvZ3qF(mR;^}tY!aQtECE|DlQCk-#LORgfGUgRMk}*%1i}&Xuk6+JL3D<( zo!u59l--qzu_-J{Z{?@;&HqekQqzP|gj24jKZ~FiK{^;xP8T}u^J{BF~ zKd+CzUaxQ974P=LOfX_(k+CVqlLY7ap=U^&RWHOCF3!#fjNo@?N9@GGBdRo z9hKbh@ZgM79uYkrD0+LFv1NjEW8eLlz;B!GE`4Jk_7@JkNM~#j)T~hc+M!PAfz=V4 zT;#-E9E6#Rc#Oi+ho`M)t+gip`|LvlWG>l)8dq&BJy`&s>%_PFI` zz-U=vQrC1JKK<77YkA#e%WgKQDDm3R0($m;st(2O=K4Gu6=RT4r53rUREMnD>X4hD zJx{x$F3EW=JCQs(RVI)eI{(cmI&(FRDp$%Wez9WPCWDLXpTuLgs63Zwic@b@q$T0V z7BA)_p=5CJ^EZ%a-?0mt!2Jvsj*DGiA&a|SUj{^zRB9RmGU!PcC zb)JMZD~A0NMFxYD2bA?+lX5gP9e%$f87;f7kAEY^Z_RAW{faS3oX@ZJdOvq}jyE^< zx(AAzkJIrannJMzgE7HI%3-PT7liA`5T3%;CW~fz*229QyOZV zqbx%+U(6Ay8f!{prVx2k@#}JBG`R!pZoXBiZ_(IxC9JQnukeu)j$Eu}cEh-d%h<-j z=1)+elty3xUEuJ-8RCwLJ4K*`id>pBHaUn7khr5qBEe^7u7$}?Ur_*##%4OXZYT*X zu}bmGBKFRlQ?ig2f3!-UYDS^ih9b|p4b)s2Nvr_tBkrcz1}QB~t^-D8if9rws{2k6 z-3bp%5>c`Blkoz%{1I=zW4*fPLn5Wdb#h6XF2gTYPqMw|hO z>It1RsUbR+*sBunf^>48BF)KQpTy_U$0VJ$Y&>l!l$H(S7B0bClAwt4X=z)}qaCx^4Hi#>M#ADq$vZdD*}Aq`v<L7PlPeVKttTOLGwHT2gUa<+k5m=-d3*U*Qru-#$f4F3hUK zm~L{bUztlFfLjj7)`onSOM2d??ff1qfBWAwzju1yYlo()IM$VodaRwDG0UM z>a)K66D)F>n%RiJV5urDE$Me1JH)6)7ghe!^OpV6i~&pc?!n9K$rR>H$phACgIv%; zeQCO#eu}4?k$BV^3~THhho?;Wzo|MwHJN4e*KIiUtEZhm~xlq@i|SI++NW^ZS6+oUWU`x8|EM|QT@cN_mYrfh>-I|tpjU39VWQw*DuTkqb#JKosd?)?f!65g`A z|Jv+!`FK`)7kvi7@Dfv^z?vS4;x7I?AW5^P4yM1_+E`NI3P-fq7n{Up$#{Uqqmp@x zY7b)!E_j*z!Qv_fO^BySdX)u0L#N20u+lI-n_}!%Utc*#Sb}e#e^)-d$8siv{#ujw z!^_~CH8Nu?G1k(=80d6s^w=+Is|siSmL+;L6~8+>ALQ<&W$_?L26 z*u+pT<s#X!NP%w*8e-F|&J(%# zD00*;tgYsjsfKFkx$E5fehW^}$FF{`2@xA7^@fne@r&0MWkzr~1~ zqfydXBp0`_(1KfUZ-rkM4#VPNvg7xzFHk3Mrr0#}^Q_a<2vnGR1Qy&G7T9$jAXP>o=0cLMQ zH-C!i#KMBknL*%bvF0H4`nxDXnpdsdMP#p2bq87GnmJ#}icC;PnnyNB4jza&5Jz>*Wu6U!90dPAsz!Ez&IpwNu*|*-6y;{ia z;`#HZ-@bUBL;v4X#Q$ue4gg{0@xP}&ah7hJWa$Xly15N05jG+z*d#@a1>p`!K<}Uf zyo09kq4a(ap?>^J)P@ZIr;YvNMb$KDj^TK7UPjtR4SovduyXawWPEQO-*$KB?ZHo# zN<+OY`B?@=o?n)G{U#&#BgRW$$Xfl-Mgxj>_Repiq2GdzX;wWyWSK}FnGi$Xl z;lX8QhcUZVBjV``dY-<32y!sHqJ$4be;x}^*g!R>j?!Rkm#Rc8^~x9xcc>=~Y3;S? z9LT?L4nzd94S;%<`Lu*WW{aH$JJb4(bf<)9hGY^#VRcKbHST_jN zRMHs_o8ZEV9oy?)kY!VT@!F&N!+fJ#KA0MU8hS)w&e28uZW&>($it2DP4Uujhtr`H z9MEOEvqv@?qK{9GTypOja-VMoZ&#IqU^?A6tI7c&_mNnz8J(%<{{=_Zl~3`>Y8I|9 zwZ3Kt*!oJsQ6h9B4$iAeynh_S-FxoZ9!Mh$mT*xtbog5<4u zczex+3qFXJ_^;B0F&Rk)mAk0t_-$o&5~=89Cvn~B(Q7rE&jAIOCK^%bPGP{SO1Rz6 z4B~E(o3T_cX+jb`-4S_7EL8&AOz|DT7fkp=I{l~@c9x>~AZiR@8JkGF|9i&vohu*t ze?1d9ZPZCQS~f?&zm3vgnrrOWInfg`EXVTxYW@4AlqI1B#Jz4bDA$n{#HHsNMl-ba z`gIqL!K|c3JpH;AEgXo0;e2_L4tmGCdt2|e#6mJ>B4+JO_L$C->o(H~a_7&eJEMfs zA@@bK$6Jwo>6A-Mp+;Jhi$pTxXZ2MaPfu|n8j&xo{bRqkgIZku-P;S_mat$3Q^B1n z^PPe7+P{x2_Cu^_n|7~Uv(BF8)!!{($N-?6PwV;{qmk@nf$`k)cPDRd@)goaZby^l zm~!F0_$>?0c(X8nl2#>{N`{I?ZAbh$o82?jCc0yPG z)VZfHqFbu07Biw?48#!pa~81kdt(tB!?ov6EvdbGa6nqwCDlF}r~NZW{3Wj`Sp(%_ zQo7euNt3{_en!J!V?3Ou$&^fkxW+k33q~we1HcHa!DN)@rE>@-3@4?GpN_V_U?kz0KITCYjy<^T+=6 zIm7P-!aOOcp5xx`*D{ecQJpkH18V^Cct4L=-V|v;Qy-JnJV%c?%bdb3sc;GS21JPJ zMJ~|d{ANU$gw~K9=Ztr}AM6@0nTfzVNz$W@M1 zBmyhcbME3p`eP8`eC;-bdLE*&@+Qr@v2Q9|e&##!Wiuib#v`j@{86`j#PpKL??*cK zd)`#5YQHG1RYuU92DX@_F)c$;g0Ujno7mtywNhw7u!$9m8jVY6K-862z~e&ogk6#W zs&fj)BXMFSniwW|o`u54<05I29S%(+YBdxX($Pqpl1y41i&1*kX)*=cc5I$}Znvi^ zDKEgBvh?V|7DFV>#s8#ex8b0jPf+i=STe-o44kv7QLrhvEN zg7;b4F0lb-QDuy_$mc^|Scsz3ieMBv`i0jVyf(!wR)jA!_t`yy8MJ`66>GDmq3owtkC&)5xNkY%{%6_{%#v}UR^xQ8jaxs@@T?=YYc*JJkL_3XqUjs z*4!jBcb~9g%j&404$bO~=*A)zQ@Cm()tR_t4(YS@PU3^{rL`Xw9I(Uu#G0AaX%WR= zOLI*ETgf&n=hZ0u%v@qit;tn(Zh}3#98qVeEFB$lA}<*qwH??aw6%ZSd-V^DV{dDZ z3gxfP{G(a~b-hf3&@NbA4>1X4b3myla_9-~$sKEGf}B7EW~!`nhuO$fpuDQtL+dE6 z`5~~f_1$g~CCUz`4iTJlZz$**9hn{^QT93GM0-MBsxPod7kDaYe&8n>M2I#o;zP|+ zE}{U8wYk?`J<9FR=6759k=y0%re>t-y-J3meMYnju%gB}Qrh9VoIxl&bT9zkPs=#6 z5M;7t7cF+MuSt zAQ_w{XICQ5vvFO9N*ft_ExpTPz%zdST+ckOqryu{X!882y%E$@G`yO%{B?vpKklNh zl4k3>7PN1;Y*CZY4q6$eSF?TUhTT}0S4gdcsYK*>a+&?E^3@a6Je$d{RRrZPn;q2yYeVu)> zfmZ;R{#$MP%hS+S8>03;&?1O+7%#kIs5goUu<+(HR1~LLu?(0sx-;~?uIiHQ@+~3; zUNIV@YlmJdWDKl@rEBoF)-DmVXoFQjdQFH^n=o+8E4~J5NL6!&EH2mQV#@T*(frEP zs4z29q#6$1{3yL8l`gzt>T?+?twIi4%f*6l)9}U{M&Qkzh8!x&s51y_*!czOrrm>v z(gV|%yvPP`ojgZ@b!qO*P~jLf0*0!lr*xo>tbw@7V%{+QOB?5+i%x-74N8JkSwkf} zFI*rs<}tN-mWW>Uw)kT&8}W{1nQD<~OznzTfq%7?0;}P*Q09L-cT2tpt}he#Dy{2E z43apzFAn5-5#-dO1*$b4lQP-k4j2I_;Hqj=EGx?@IjCJO{@k15im0nV9=dl|=}256 ztL6GfZ>wiP_Og59C1wGo;$9B7eO2K`J6vv(1#$571vwl({q8oD*^re~uA-OAoa6P$ z6~;+Lpvl!Gxd9g6fIofq?CByiUvLLrE#ro3m^HJmX{2O?Zqe!FgUS@N@t|K)t`GP#G;D1*d@N1S5#sDOJe{ z4t16NWM*76*x!wPXV;v!j}fn&)VKN7l>()I>mfUlI*&{?y;MO*W5Y_^T2f7by;G7>yubf+K_U zRLFqRerwBG=(iC#@6>ai49d9U#e>kQH)9rhI5yWMN=0gJk;G|f{#cysEmmcmi$#nr z`guIK*i5HWSeWBD%X+6eTXMNAI@ZBxD5_F3J+)1K_5F>>AJYJZgtQQ0;&LR>V}8KN4_7yp?y| zgP(e@k2%7M;_;TuBBBxAQ1z{{PE5n4B`H;IC3*X%nZ+ZdCS;-wc&6PSzTz~Es^(Os z8)x>bSs&+@L{Z8SR#}CxhKF;`rK8xQS#EJE4Ux zlAMjxX^bJTonnbsOsAP}N?m%ThUsi$2K?@d*gx|okYW)TcY5(Pyf`#mH2wYSYW z0+JyrvbdBmi^10`ET;F5P)n~ZJ8j@30nk@bH(A~ZLOOM&DT;1nNko;_;@qxdWu*mE|BIOT#DT28mw zSEwDyVHe=mX*}?kk)$d6NMTQk$LWh+WKX_nt+k%O|JQha zX;c}f6)YiDygtVfw4!>$Vkr8Yo!fb-g&dT2!Rp6?#fzd{^1f=Ta$*TuF}X@z^o<8; zE-k=d6lGajzK6+oOV;rhi%$5cHLr_`J82#wV_Y!i#eH7~qSJWT-XXrJjY@af=Qb%l zm2{D1B)oz=s<~%~hsj%co0yPuUMHVN2@@~)g1!{z36l0R6J7Ij7p7E@~(YKac70)we)zUvtTrf^%ms~3VF;iMWE3b z7DuPH;Mbf)b2+u3knX|}XUc5R?;g)VyY5~_0~m`ayC`Q>@DVB)A8ptSwtD4@PQv?u zh?%6BEs_4(ebu9Xf8Hu*jHdRd_#~x&FOr!JW~cYMT(C9O$8bKew%=mgISv>tn zI%;vy&3%DQPCoH9j9)-85=mBXAgMPU9pD1PFPrc3LO$=})ggt3m(TK|L#uHI-D`i( zg0-~(!;5AC9A)EaLJWNLYcw5;avl$}`18YmuHvisT_Usjf!lCj&gG6CGB%B%=2q5I z;JyY(rHueDDEp@4Nh{6IRd(J8&f{p~9a z!@+(OlfwwkeFmcP$JobG={iVAcE8CwCKQTJ?&5D1O)2HnsWM}uSl~j9XcW!`*k2xJ z8K~hhO2)wP_zP^8$xPoP%B>J~*bZlgN@0B0IyKgE_^e)|aNj9mai?Pqy^>Xt$qu#4 zLu}QOBLGf7P@HwmkF{@ey0UuMAdi6=3tX_FYaWTQgLO(gydCz}U4ue|PG&&@+^4yS zul&=e-$@I=BT@whRyP3pl^Dz-&|ZA^LZ7#U7vipG5yO(t?ciOG&A>awF!cN|vAf=u zNcia5D`mwx=m01Ic|>S(qhdZwzm<^4y536pIpkIJg>rpH1DJ%@(Jb=qBAG6V*8=0C zQmJWtm-v^u3sZ-nc>EEDa7>q)JgJw_^$BXD$4yE75Ra|{x$9`a33mpw!x;}1gCrU; z!2uQ9gyEB)t!bR4qmQwz2lqY&Vu_8xv9+>RZoeZ*oPh$%_FJKfCk$z#d9(*GG>HnO z&&ZH?^;0?FPqz;z7Ss-q%-eX*{IOI!g6fJC&%E&wGBnQjm8~mgg^cAO8C-WngKQB2Oj_fSDMBwfSnxRVp>+rRh1iM%ata-Jh^Tx0GpNxpOc>I{kutd!I^AWF# zA~?v$w)z45Qtss)uM{LZz_xSC9j0Y`uKg1WyCsefTYR0AlS2<6|_Lj8qt|4?T@bw;d!>@Kne0{Sl; zh?2>D;lPWFWyXE8v9-N_+}kk*Bz#AZH*hrQh&7|H*g`B8&M$PNYOq)hJ#Ys_ zI<6UsQBQse#H*$Od-DV)H5tvwrZ2sODUM-F#}w8uCj2iAp(@n_aq7n8-u6|chV{Nv zrW%HPS^KT`Y7oEPZD0@vzEn{5f%56i);2pMsIO1#ulqex->Gj;?Qh**x_iG_AD_8k zcO*HURpQ%x!^ge%2Udyay2MWJ_@~}BEl>6F8|2px?2e_YHT{3g=6C}M7>42rUjL#o zB~0jPGT_-SPiFAg&t{OtBUF7C229`*Cn?B2TCe$%mQt9<;Hh0l2fEg260n_uObN=c z)6N~KV)F4!g7=4mIq0!u(3BSl&NmV{4MnPv5JP zRsiFNcU+s(P9XNBoXt^BKAMJ7=aVr_f@2BGrkMDety7I!R2wch(-I0c2`@A~f4rGn ztH!+KL8{BBNi)PYs6!~V!_xMY6#Y1r$W3yUzSWgv#0x4Bf#+&IX%oj2g*1(XwsYm0$gxZ{5nOKT`ZJA?_(6FH z5rfRtdOjC2JwAX5K1B*}bKmJOt98tl+SaU(DW5sry7}1_g3#Kck_=~GQ_C8Gu$zP%~s?+3Jd6PUZ_v)}FGydhZ{iM8Y zTtxS2SuH~R>$Uo{yj7y#`!uT;0R8Y9epWTqe#I_ib7;A^qSX z@$GF?2CKgWiBfNNF(szzVq>addCfnsJ7=N=Bl|1kQEha8SMyQJ*d7YwB`E4n;3zvg zkAv?1wCe!#d zo}vPU?wFGdy>QEJ;w}5`@#G4a_3mExO?Pjv`&w@33sbLCS>q=`k6JdAOu<@*mhQ>nrTK>(xQ(aozAoQX-v-0#wkj{WWx}1uZDYgNJEg>A&AE-`V=`(Po4+ zBW_<}_=fIYn*4b4J$z&t6X$6_jPPX1%#5LdWsh;2!Y3E@)43>zudR&on7wGg9`2cU zFQ^@iXK$-3V90f=k|@f4+SucKa>vJVL37Lswc}%Dlaq;}jVt%L3I##djfVV^qF)w| z2?4P>r`QVFHGWE`7Zk)9Z#38-h^`|KX}qqI22dBQdjlR1Xj*{?sv^P-oCOdfg?XQE(EQvkPDNj8jf>4s$I>Dx1pg@NyMpmj9Hri+}fWK;rH3F`ZI>XYS> zS+`@^a$rU((ofJCQ=hB;myEa^JOv$Ch{bXEEH>)fyf4l!7nXo-wN-)Pk~Qt!F?U6B zfmKrzkT^XU4t}f4fV=2{uoi=)(`fpvxx6+=!3rTb9C74qAHru*d1AK?v zPIt&41x#2ji8rH3bdrpc3iCoJ+>{I4=0F#}eKBq}g3o?b;LW-gV)S@_rs4nGvLfse ztKQT?$Y;F-Ck0p+b*6Qynv%s#H|sC+_0=W0C=B_+{Ie6!Fkfe)t)K3^H2xyjjminh zxi?!@IaPMf>cZG}V=gh=5eY^jXB$W6o51sJE)xpBluC=bE9ixl?}TU&=auQWsAmGP4WaN{(21^xeM`@fUmV>JszFvLwg!pyy!Bw%AsGQsjQVJi?kh8Gc zY|j1v```(*rZEq30Qwrp5$z`Ct4zQ3okzSKc=d4Ad$0P8&ylff^vdU6sv4b2hsB~; zYkbBi`ojCnEiT5!a*^K-ycOq;hj2WsNgi-qj>?yuB8_n}_NeczVhw zJvxe#mEiF)eLOx6((&lJ74$&l{P+S-ks#IMk(G;~D>{1|i>@SVEx=}66by68arwd? zBRdUi8c~vrzuY*fQ>^8pA`y7e=(L5G<2@!?k(tCHu{PreWT6O7$2Pu&VTL~2Y6Mo# zm2ZH7Xk6DCaMn{df4MQBUR!~qNxxhyU<9~2E+-(!eZArws7y>B*ZZ(1uIO4g@snr- z1xq62Djj2V1AdAf(|wG8dPWCUjbQ&^<6vvkx;;o{+U1inTyO#4fAG{s{hc-T4o-H42geJH+OkWQ#Riw8Y}mgW zV_H=xsiK;*_qx{(_TtMFPOB8Y=7Z>qe|+{K$P&_X&T3hJ1%{|Dj7cFo!I&Z0;noT$)8za%9pGcGmyeK$)1T9Rm!$(?NZW-+ebYi8o zB7$#AqPCPc7x{`&oh5>MK(^meJE%Rc>8NGCK2celYe&SE3{!||@!I3>qaSMQM-EUr zc0i`BZt(p}^fQwRS@3w3#VfiJI8Q+mrJ-wJz(F2`Pw?yUR}L?SU3_o>D`F@~AOL0+xZNy~=6 z?E4)H{i5X|P-uCWm=8E9Pg|?4r{Oxt9aksN{*2P2jbUm4cR&KCCx(B=KV0&Rp)U(b zNovRBmfv>&wR>!q+^hYAt%LUm-TmYDJFmNMwsv6UZEoxyaKw=Opd!169`*&ok+1Nv zzlD@I(;A9eP6w_;Up+h~I_o!Uv{yzF>f-QGHUVOQ1?HZFvD@Q-)sX!ggeLGe|0yj+0||22r@fOS(Da!72O%W60W!FEBdIAPLs0)cy(7rh9YiL z#d*|B*fk}vA)nZ_x~kp@%$dYQD2h&MEt(qOF3#az_?9TSa8{m}dl5|4LL4ZnSufY* z<%z|XDkPGhyT2*B$p*1$4##bswX~;)ztEs6gXeOuyW8Ej8@LQm>QI%+rjo<4uwbkV zh4C05dVwZyIY^Te_1!S|o;loMYDI4BsBBuEcYHQqtMvi-Bh0+Cr0jNYO8X*2S=2ui z*(y8ecjoiN?X3j=QXRvmO?Xf4J$A+!L#)w?;K_^x`oWBW=%?m7W&Ik<86Q_92p%I| zC3Lx~MYVu-?F_`nbTUgWlRqMp4}*8+@esYZlJqJIU>UMY_-y85lEIF0RzB|toA{U3j%{v8FwG|tGV14j>cRO%6ko3t=_Z22DiG?{`B!tz#T zcZcrx({bFw@j(zF8wmT7gGG^t_7#r>?cZ;jhsG}W-?UpRJSfzF}VBF<{M9C$W zidM{@e-?eDC8jvOE~7!(juEUSE|++T9R>XhgoMlz96LS1~TsAAgjuw6}VoCh6$y+0 z$r?xBcVFYa-hGl=e*g+-bd$1^nb|$VFR{pOpa2vKg{nfKsuYiy9MsL_NQ zT)|g?uHh0q13ZL#>-dTXlXf3l?pEbE3fI+U7%e&~Js0ot9ejNm__1IW@@q}FDo>#O$Kb=cav%(lgXZlE zy9K>dcJ0PH9UpX~11hn~J{%&KHrA`+Ji$dkeW{6cJ&lFf{UkOh^0UHr7p|i z$qEzN_Ut10Y%NsoaZ=mWJARRT1{>(mU{e@?S{EE{RBpghpz=n4FE%pg^ZtvJnGyY^ zN7gChZo>OFU;T-`K^e07Y-~LE`oVv!-~XnnbS_ii`M{06Cwk;tst(s^Y{plX%Wxpn zht8MI`d&~(Ly^|Jiq^^2tHe)Dg(XqHLCdDqoDHR`_1)x)mwsD(4=~a-R--TfMWLprYIcl#Sswbk~pHd&G?V_co9*P81+qPbLq z-_o)is|w0nCOjcQ|9Z5w(^l@|Q6sQOTALtw z{3kl%ZYQ8c?QN}l?S zeRB%Xzm5N>I70@t-F*dDSUXZF5U>flUtSnk@hGVR&<0q%^=eK-?VHA}ND9AR@8y$<@ToLoU- zwLKa;>3qb90$+rHBs$gpX!@#9P$#jZsgk@PS;j~@h*kDG5k);&=)5zIGJ;Ndr8;5! z$vflM%ZszTJ!b%_k8QbhXe$gXG&HF!(dH7eaK?R`zImD8g}YzRJawsD08!sBE*b$~ zncmsrLSNSUec~dm>`SQg7}R@5QYjt7?k&qDzCKsM97+fZ56Th|%Os}LiJL?&cTXaw zp&U;>#^Ujzn#0{hkX7BsKH$>Q@8#h(D5f_%?%e2=P19R1qd<+GI%+adeLta>WE-vx ziWiMPE()q&HN2~hsWKE9ko&H#q4Q2yWmY^hHtzFXfyArP_LANEqU`acqXdp!Jnv^g z=ZULfq5`@U66l6t!uRO|JKRVlWU6w8cHtmB@|H7kg7OplHE5HI>ATir^e`UAuC8ow z;3H$|Sw9JKOg>iMH%(r5T|TOdxC zhWMydp4&XBn?5pvQTo#lg=_n@<)nlVV5`+>qKG5LkIGqCqvX)Pwd=6$VYBP?)LrUh zPN^kZubNvFcylDWS_o7CCOB>OKq?=G(n}8y1w$|@c7Z;RM36kc9{OA8I@9WKoCbMD z*;HD}p#_ha@C@_6xWMsoyWRh+b9~%6`mfH(=by5ZP2i^*bgP?qjO4CK3shYlq1GWJ zQI~5u8^&W=DklB~5uQX8P<4GI`gsmYHSLBh(UG@-47-U<{9Da+V3fPTtT=bOl9e63G6TCO|N07Ik|5^xlJqs4D8{V?wlp?#d)yY1xgbZ=I9OyB{& z`mO&v2UX-?75|yl@48$9G zOF}_(v|hNPE`;pdWF)Iq7EB2hc9!2AU@Z0}Cl2OYj{>&``i9DQ*LYRaGa!mJ@b&BM zpHG$5k&i{~cx>pOZ0>b8c^K=y%4&15S_S5wPm5XG?@9epG2SKt0qnz%iv>U&`rQlw zA!us}sK8~D>W4$-`cc?A#oPxs&~rez5stm;S$BT1_J);PVIvl`<-k{Xm`}xRYP9PP z=z}ENbBtK@7S^(Gx{x&GbX^!YXRGsxO9V%A(iNUDnN~VoWPw~t^bHQ^x86-^KTv}* z1>`Oo>01g#i2pX#dMkkoZ{^y;FMp0FVEi*>B3ON*|LkFZ>VpB!+Ku0^EoIS$>o~}= zYa{Yf`M!!QO6Or5lbhe+5BtWPp7AR=$g(eH_ zaVqAO^PF>uCAf9&HLyaq5mtam2;QojoL8AwY^1sujyDD-tZ*a^dKDuzVJdB_hJ9Kq z0a~p!r@$ygOkqS>r(E&Rt1juqWQ;QY(86Cet1MTqscd)A{%H>Fr(*m zfi64M<{}znw1wZzXXH-lAZQ>TA^%jI3FRl-*07k9~|e)p3dAdc_xPU7CA zz6LM>b8pe*G$JB-WwVnt<}{j`ICD;G{)ijv=E3%;ew3z6FCBStUJspnN4?Q2Q;{Vw zqJ;(^PP&bi^=0!9JQdRc#p+_@Si_91G}#ktN_{PtKUYQj#1797ip8v|>*Y|gM|{bVWGuSk z5_?KRz(^VtUvsP<4Zr_AO*wh_ls3wyb;Voh?-;@21M>f3wI9DZ{c-p8!QTGMWi_w9 z>4}HU-9uYo(O0kcU+f)F7H*m1mgDs+8kl|u6PC2Snk7s6Y=8)gM$B}|Ia=AO1 zw~vgy?<12We|nyw4De9xl0?!ALo+lM>PFhR*n zyh`%PCpN;Z&g*KT(_YDQgMz%IE4%dEZt0xf?)C0p#cRyK79;g5!?u292PX#V9T5nm zH!q)UzkKq1_lX0B|AOBs0278XpGR~pN2JI;zhC>+wudy8c@O=OK z?dPXE`>%IT|9WuhRP1<&EjJjOfGxjSgqi&@FO zvIZvQ&HydFF@%;_$}1Dh)bUnbkLpqu+`k^!FT~Tc}VKvq_pm@ib0Uz>TiXv}Y^v^n_zw!7DHGvycpS2n76O(Y7 za#c6=x1-OA6|~Nl4cJ1g`=vQg=W`3*cZ3^bKG+8BqaB=?xVX)cdEpEsQtGHhW`fp9 z;|R8N#H-6}1hicmG4@bcXA-@MNJ@!G=55?qOJ{x2X<{S?cs?hTh8bcWbB^#$7XZnk zE|RU9gzYXg#XG(V#l%MlR3*n-GTbTZpZ`j`jIs8Y<`a8{feFos%hG$RC&dE8U}c*D zkSe`?i5EUqvPGXV%F$jOW_l*(6AWul-NT2By5nb zJt6gA$Ri;Ap)C+N;j`ljjVp*-L7QOlHh8Kj%I>?gQCs1xlN6I@1k!HNT){bP@uvdC zhM(ynJY9HJTMxY1#-Me+EGY!kK zT+k%bth9tBP1p}6NFn>KbRyb@*+T`YDq;(mj9CjsQ4M!I+?0^y#Axo+PKLl|I1aw@ z9!x@pn5aOE6^^QdTye?`X3*4`U zhufJ^iYj? zrdo9&Z*pH@<(Z~|+X%B#?bXt!$jM>9(OhEs<=Evk zov}SouYo|~_=8tMoYs6g3+J*`A+IQDRg7zju+*Z9?h9w^j^sv!kyk`9SWNJGkdJSj z{KjP@N|N)5Q72?wNM);Ps@WC$+iN4fRx}bHM5vaak55D;!N*z@!U_h0@!aCys*>SN zjv_q`!x|as6{}FDlRBzVI4~o=|5HY$<^xRv7mUgS2o? zP($rivCd;+M)Fg{-lzZ?u-EniSv=|*egcg|3yzFnU#vtLZwHgpH4O>1cbe;Pe!`%N zuHp0lTFEjAsK0GNQdt981FP%_w}FaMN6GG;A(BvC4oR9Y?cF-B8A>pSV5VY&xmB^0 zv}MUeC**6EY{_wvjqg9`f7$<{zhO)?WCUBFtuAi2(MzsU#ii*mr|9AqTZPk2)PWV% zvB7{WIC*1E6C@#t^#onnWi%jX1HT=oS|Qdree%nt5fOsflgangms`WOmqu7xOcrG} z?7?8m$}NXq#D?+{LUj z7*X}RP2afU8SOMQgM;doD)+7m#aic#wEftMgz{>$;=paVI#Y0H{Rs>WoG8}(^zUQp z&Eb=WhKf5)n}WI)>|2ct-{>|GCh?<>rAz|CmBlWvugpb>QN?fLlL+PWt}0YCk|cUU zoYW@Sa0&q4+cGrYUTH%J1bymjooR$#IwNt@PT|)OfxBVzP%Ns+y`g4-dZ^j4xDovC zkoXzdwL!)7-bF9u$EKpaqoSWS_*$5(vL=qVIj%K_qh34*d-$dovK@=_1_)hN0`9qG z!snVW3vvc&PIyUv=1em5JjGLQi@wrePMp_kTEe7L07u^lx&worU#2E1Lb$#WG9d=bsv+t=G5jwguddb~kEFdm>N7dl% z1b)PF6-|inxFftp(JNzxt#-(svii=x(XKnE9N#kR+y;VuT-S7giE zlyKqiIvuEkcvkj=znpMrk{NZC}KhK|ITQaOPbh zO&`_@_J4Bzthj1BO@GHU@9QX6CQjs$f7U-J7AR3E&jZsLl;b&4%7&A_*=^opQyZ0I z2eI0-L0Xc_q3*rphKMH1;WF5B)(C>I*=AFau6m#Y95D;nai;0exyLsQ%Wz>g^}6So zIn5^=K;>AQM**sm*rvE{4B9ftR+^Ntl6Ww*lN z(!qzZH>gLv4gPAzhCy-uur>V8T%31ZQmfH*l^Zn>&L2V%{)M|$!v)B{Y$FID=tk($j|N=P+30Iib1Qiq0<9kr)@`l+pi zUp-ri>=LxO`A8y}gErG3UVV6K+xkAWmj;sXwj*yYX7jW?v2SFzHvQUChR?vn=r&$& z+x5+gx{%o*?V%qXFBYhiOm=b#DVT(kQz!=W_{NjXAGmgw%(W@ zEy{3D1u*y=zIzFOTh?s(-FIr%0UKq;uQuIP0lEUuh;CyDK^@P*8n0+lm`- zL6*Z@En{r~>|_Y5-BFf)WKKwW*Xe8sd*yfvVyL%CC=)+1C;dq82a(%SG z>hT`*p-`VP54P9Z{m+k&*E&c4wRQqu`oEU#}(21 zJe@AiM)}|rka&4|iu6AlU`Dp8sE$&)J`sQtdy`>4z=KerR)NQdQFBYxcw6F(L>eqO z!QgWyT8tG-ku%bIVEU(B3rKl(Fe>H==*g$v;;ppB>*LyAH89d@;%|F6S4> z$!0e_fp+WS;b=QFj-Y)yn7`Xh(#cKtbdZ90&fn330ooIPFM*Ft<@+$5r}9<8ThT9{ z|Fnd!Wfw*#^K*QUNa&=SJlMG3f$z64 zRlyY6fu06y0`z~;ShYQo!pU)PFDPKCGQO-F2xV3x&m7-NuySr^Uew0dPC&NG=kBq8 z^5yyGK_?6&ch*W-urd))WQ&m_bR5_sgy{Nf{&QHY$MjN*qdsfPk_GVo5>{t@p%i;qo z_g$l*)sE~hXdai-PW)}6l9!#x%wd5of8|yQn;SovqHX)W7-PbKbvYdlkP#?MhETNx zl_rpn%Xg4tN*yC9dXG2x>aN3ip8PqvuTW_7yRmdAb}>0D?aTGZc1&{NPm{5Uff4=3 ztflVG%d(7qOSVuv$u$ix17${7=S~~P$10eJb0H5Q%LuhLKqFZnHZ zyk;BF^GbVNY~6_Ql-}2_884S06?Ilr_fGK!vH-`Pqs>qqtf@j?mMrh|3ULZj1M>gl zdn6mW)Pfp<*;V}7&2*)zN3#~*F5^$U@9*FowLSLH$w8eqV;K2XxVZo{V3}NbV^1QymDJw@LXGt8^8fO>7Sm`h)GDE`bRzm z&(M~)qNCt^0U_v&6%hRAMnI@VLq568fZ~89F3xEFyBNG8o6&bQ%_e!TeMf5J@jbVg zDUYxJ8aJaQT;c$0B+xxj*D12e7{k0|IVf2(6#i*HgB2TP8~Dfc+w-E931hNut6q71 zjCfNk^XXDlv+>!b->y=v6d_aE@jd60e~$u&$XgffBoYJ$fmO=& zF=lH`VHZ#9-Ho)X2sj9^6Bs+cFN#r?PQp0%u$t+7y3&ufROsS`1>Z6G)`}37s6*C# z8qT2`$nBCT0HOr$jAp34Nj}fhQT}(l9!kl)?HowHZ_s^;e3-09_yG(k15I*ZnF5&r zF4L0lpk)(sUqtX_HpFYIxFp&guLPL{hXHRe7et{4KJz@4=@G8^-C25;jn-z1$vhut zYZAF-O;W-j|CD;s0XyCseZ7IO$j_g1Uwo_Az=}ievW6ylbvFEGeaXEtl3WT0&l*S#rYhB)EQ73`9Jir9RB|*n~if8faV1TCF)X= zy>2othWR=CO((;(f?{~gXZhIz?WV{i5#V(?qZmeL-a}Z^1;Cf6btpQS=ym5A9TebU z;Mq-bF-w8OhPDTX&vui8{ilaNZNJ`4_72eT^vAs?yH8;8Y#+b_;3?ZLpCnjp`_19A z{nr?ua_9N>-iw1|`}yt@(=@<{Y*i`~~d&*10w_j}Lx4u3{)*!XnNS+qJ$${5op`zX!}Gl#c3V&L4>?UW(o8%TySguYhJDxc<*nXc_ffVm^0;f^d4E8*Mz0}D} z(q=OBbhb0hJP?4c*0CmuDeCv|2)XWAANa1a^t7kwopm%tYw#KT*+M2X^Ej9{P=-!L zxFG%?9ub_La-FgfX9|=zfYVbt?k7(UKjhyKdS{9cJq_zjpG*7d))}T?Y@eR`<+ZYf zLLW9N!wN=)7(7MUGQXH;a!|ukucdAI?djxFs6AITY2ap_U^gJEEA%L-rl4h;(!?5) z6a@T~f%SDOEZ~zv+0j-`C))eeA(=B#-R~rGrjin=L<7IoKa5;&OWX$3WYAE%i$pc^_tjf_$mvOED`=t|c*Kqm?lria}%%J%Vx-`!)(Co%lRr3wE!^%Vy}6 zC0fCbv<(i2c%f?(Q2I!IdcB}`!@wOFoe9HjhU)`9W{M1(PA+Dhu0Uy^n`t^r$8Gv| zPcnj;p(tXhgc9=R^}Va(_rQVe$j;QzlW{i3V8UtJeEClVVSfB*j+8%waty3`15a48 zsV~bgn_j2reoGvDdv?)HPL)da3f;OVS%_zMZEILe=k{KX=^jUnQ4-NBpeKH~$qts) z>%LrFU54SbOcf4;)!VPgmFZPtZ^U&v%@>Gc0@k^?672d<*0Q9WXVbPFHl^;9BG?~o z;IaW4>BVidnVDQRZf@lW%~Ke`^WMovv_&vQ6J>njl@N;Z^w?t8yC?z^!gJ_7H5ae! zo#~mqG3~cZ4Z2Z~YH#r71cQLAaPp2|yJ5_B9B;c_N~{*TgL_sCZ-V^-W$X9J2(53F zKeFU_EK1_zb$PUYlKdsvFuu?8qYaRo%}z!?Zt=AGhGVuQra^=|uJ>weo;r$LZ$GpHe^+rxZ+80NXxZdR#^yOI{mI7Ci z?xsa1wK-9x)jd1)lxFy7(oL>TaPrms`&3s{S0fOyxo*bZnK|I;W1!uHr_zS! zCP8|BG*@yJ(*vWQb3!29xS#jY1WpWSUG>gqnqePYZIYYXpU{1kHen2U!EEX;j6smq z=0{%ufl)JzVuxLx;ZKM#IBeEHs#1G%&Myu^@c5!%_-l5(ukQ~3J@1T3Wopg2U6?X`~D?@PJ&Mo$3Tjs zxA$@986UkpS+;NUlLL^t+hYs^Pj2g4p!D?oF)J)naR#tXpAs{hZ}CLzU-F7|`mxdJ z8@k1}uKB!K$q#6QS-uYkn=l{}m1J6}N99RZJcu+(-Kp-FNv!C2?+c|26o%<=)1b1S zp|h{caIA@m#SQr#(@J+PDo&dOh5UMAkq+xsjVi#zjI|8hz7V^)Cqi`$KJreSSiDx*s%2PW#@F0c z_d<;@U1~fi$wRgs<2QC{l)qoxPgeJpYNh0t2e@qurD?OR(rWJ5O*%a&qn#~TU=%AN zMG1^sm-CTW49nzm-<)iURbbD|rQLRkNqJREKFFwDGYyQ^-Q-sW@GJGv_U%^y^eX`R z_4Ci6jQ|?q3icALarEm+h`-s=!wRxwkn$2*CGkvCnIohq@F3dc`&Y;VyHu|_tNl>bOSKs#WTbn5)ZmI#aA{9aA*C=;BTqIZSvr`CGyPXnYjrWS8%< z)(G1Xa3E;Q{uU+5Jur(OVIIYLu65QVqO?N2CY=?rcX2cUi7? zo;@e9<O;*#-Jnz7fY6!#2Gh+&`g6TaosqqBic)P|f7q)B;hgsJtk; zs?bSOUFqGqV3c%wz#|Z5zr4)P=WY6G#20}~V_Ao>(3g#q73{b~jZd;sc0ubllmTHS zOh0T9XkR(D_wh!?mY9b15i{r9acMx?gfw0g1^#(lvozYMxO_6jgbP-}GhD9_+BIU{ zL~1chXapR9=WAFE>bKZF~O2`5o*q;YCwbQqtN3VJaN`VUW#DBw>YRQZyl z4LM!57<#MBdfBOSd;{eZLW0ML~u>*Z512SXBWLRTC5gr=r1CN;xJjB`Z zq1QJXUz%MQo9CDD@q_^dC@~DQ1}%^A3Eqyg21t5vyR1pN%k*lNUja!y&9l)Eqbtm^ zL6%=-bZ3U%yhx`Z+jMUbakfe)umZ&SXgZ%`bPK$IUZ7v5X$SN%=mLi7nG}l+ye5n9k8TUcWxYdQ-KW6yl2Mu4fUwSTp7CqMu=j&yuS} z)+226FopndrpY|H`li3$U+>KZ{S7XJUZ3~ZHy-rxZVQ&!y-Fv^&&7gYe>chp*#wxw zi@ig7vS!_xkprI7Eva`mue0;g+&XVTyDk5^@4xo7KEJE~zSs8$-Rt`wf03_&j{a{9 z6Y%c~|NkNv{{OGJ;UBKKe_!$cXI=64$?o6RcmFl6?}it)Ywz#+)Av8`#;!lU|DKoZ zgC+Jq_MY(*N+DGVe^__R_zC5L`U9>Q2O_L(@D*jZqRR@fkV2N$Ffq0{2P}3oF(QL` z74Ft2vvK1Q+Y$0Tmm46}0!GS}{fq*B0z(r-wU1evq?&EmuV}S72|KG2^{BAufUX)w zrSwIgr@Gq4rYa| z8y2C@Y(Lz(x#-+Lel<6p{aK$ESaC5%Img63H>M&>M)>?E zzCiq}7=ZvzWq?XgjTg{ip(^8x#Y6%pXT!a^GLvFr-W`a~M}#-T8@KDp3*=7kI)2BW z=Wo5HBb$5BLHu3a*TwhflghSUbuL4DgAKBqsUC4>(TvA0s(op|8#@2xljk;-GFkEp zFM*2cZXs-ggZU~kpo$d-c*`tzb*ZvWHYhs%60Mi*Z@Niu!%4*E^l@KZnJM%->JW7A zQGb$-vkHV4>6DqFd2o=;)j$+7i)!;W3^0RO`>*!n%{TdPd!5M~zJ2rC##g_6alZp! zVapp&fulSoc%QEI=Xlw1(nLlc!eaCq&|Ehed9yacq=BNuL*MY{BUtJ)drnRT)DvMn z;mt%Sa9{R(ZVQ`X+X8$Oa{?AZ^8mqPqo`Wk__jKT$jap2#}&Z6320ZaDT{fYjPq2D z&G7=s3J?9`eyo5s^T&&4nf=s)WU%Ls7z>kjY0!XGFt`>V+~Wel^{}3;uRoLxs@Ph<9xmXKr9x* z)8=tGQO}ybHWO+ixr>CcvTTV`I+lNBxefZkZinuM%jmg5) zjBk;(c$VH{V4d1dpW@rLK4de!B}Bf+@Y=9()R~rTU#+Jy;+f%7fg>CQv5LW(9ICiE zThFD@;E$VJ^u@r!#sEx?6Xt<&NvYrKvV)&W%3#N`^CkdoG4sjdU=kZF^!nkTLhQ1V&w zQ1^PuLE!0+g%BEWDy_t+`tkFEG1DIvd?sGtqhS3wHe%^zl2x+kw_c zAfG40B4f`#7V0J->Tz&-ZK|?aRDTSTNSb>tZfLhY#qF^D%*$rYNel;>!?4putD}2OG7k)eF8>jjE$rO06mx#C03%aiQLUR+A?1|R6<~$lcvulw zN5}Uh@(^CkHD(M;LIJ)ebc=|H!Xgb(GDe~daYDtaQ+8IFGAtPDTc5y|4lm{b`Ot6G zmG6TdPVUPDH%4i;JZT>_vlbL`fXoZ@99qmN8%;xXQ>wB(kQD68yWv*hpFh3?J-cKt zk5zUJ<3EAxu;pbH^Vwx3hbv9>C2i;v&Fjbr&9r)HBjHf1kI;zVLp9_jI}-Ie+_PeB zhr5I48?@|LmRe!)otBVHT{sA_vMA>q(T0NT@Ua0Iaxeo6fh-vw_R7-D)Sil05v|~& zi4!PZJt?z!P45hB(>{&u3w@IO2BVj;CAWs$rruGP3I`PiRV2XQE<$}<5{5O zPYoy{wSw1tJ)Wb3zU13$zetqyZpCXmu<|P+aN|l2Qw`XVw9j9^AG9By( zQ1&zcOiBC8>1p{(7pk<7r}J}iTl|G)?w5q)>XOsgAj3>m^8~%JXC7pt-c%&iAUhh8 zv3&({sr>;wrR;>%S|P81KO}D2486~?bJuvstEw$FSj0pmG9Ww|uOqX3RlLn;!4_pM zcXfDX$`77DA3sZxK!y`UKgIwg&qrOn9SXDNyv(bnx5o*C6D>B?(q#CqkL=tr?y#_C}zM+)6WMjSp0kBe65lpAFQSg;bJ zt=hy;6;yXTmC(NT)I$4oGcxqsEnmQMA<6}kPW#ksIr(EGBSy|zD2PcfGne;br?_n_q8e2t{8dHXek^;p7h!La@0bu zgTp+_U@X}VY3lf!b@riq^`clz(6rVX;}`wr&17ueEhg2s)1iP|&^LNT8<+Vp%)Fm& zy6D>aPCA95@T)SLU7^)CJJ05WOPUg~!zK^aSe5;EpOIvV%Cr8uS=%v}1?&vjCxEF! zX>k13Izvk#wz9Ep*g|C#KCuDw&Qp{aZtD8rIVzGE?iq)T2F)_AL~HaVTOGxbzeJD9 zX;Tn^f2c^(Jd)eXhOAsAX`A}S$tgLeh8C&$<-@>suK<}=_~Nh|zCS~nB{14d0S`fe znKPIGRvWDq-W=4Onv=XR9OjO&Ja=}7MKS#z=XYP<;&0y)2>zj*gQ@z_sjOz_27Kx= z;~v{wkf*7?Qcu$cQ=B%pI3wJP{9QKu5zjTKfSuoZRilWQ1lw*s>XY%@ilX$E6U7Dawm<&s;z0&gsgYZ$}V!M zOmd+gi@_YzE}j_RB&NQVlNZ^h;AEUm>+xZ@CUXGa62&=FZ@auO^eQH~iKVBfMrt54 z8s;S}K+G7WH>B|7Ak`02zIt)a)hvDYrPfb5NJ*Hwlw8V^^c=Jt00A1`n@U&k z&sVj&GHS_0Y%i@n$7BaTa7I&mWv#!a6P@DiHCz72e3%sne9yrZpNy0?YqyQnR1S(AL-_@D{}b2_uGJb{+X1Q#bPwXnK1cvVKz7$Iu!gq8x_|H<#Yz_ zpRomZQSuc-%z4eZey_7L(B2$~)EKNO(!IeTr-2>)uuCml@AD(Fsz5o%4ua z+n;`c*SH#03Hoh{oR9M9vtpM29qEqg<*D~b7yJ=9;y@KM4{Vng^8(b%8}6|D2w%E6 z+SX61#foWAs+eLS)>eVlJ}pMbCXf@H5yJo!j?+1bDEN?Ajn5pY-gj*3McWz{lV9lV zmRw(gXvp=@@`fCTHihlU#bT7s)?TBklGv-orRIK5bIf30Ohz~G&p=>#tdK$|S)X63 z^c^+JOoJatcZ!L7l)X!FJE0$m;b$0^$mV+oQQzc-zS$dM!t-)ojC;&%d&6v8kk(H1 z0RyjquL7>9D#H??pyeH=|d{Qms$3=1tHq(SMymqk<*Cm{2UMD zgXN0Qu%@&~TL?o2X>p1buq-z~Rd0#~c{q@^OYAPd2$fYB5u7+Zi6Y~kSMeeUEuZ2e zk#^2F+2zXX4ffJY8JQb;KeFUvtflhiAF)X`b-a0J@?_qc4N5xwp6L`dy6lQ+`Zn0D zwp67Q2y@;Jt8`Y}$Lg6C^>xL?hRx>1qKvLO+oy(=_t8t2=rliv=>dL9?JFi`FfT0(925X)+U{($B#p{o-_-T;-9SR+{C4y%T@gcTNz)1G46!t#yy z-!uO&F!Pr6leI4dQ_95MoZSiOvY1MUxpWKc|bH zvOi$_7z{D)_0sC(K_9*6u^!q24gH&Dv%DChHVSKHxR{y!n7WI`ytKMfj2R%(AM?1b zJNSMTYyqv&MNJIOoR^o`Fw&_?pLQpqoTQ%C^$1?CC|t@mMk@}nYL?#stqbe~QkJoe zn9L8+jo7}a-%zN?iajLRGt`}_d&3B?i*?I?QOoPRPW{8wusUJLgt3eZ7yevW>r-?- zytnmpVvGHOQuQCqpznlU+>us8ueI1k(d)gfN3SjRKMK80D_NZNF6ZNswIj4)D4WSV zpO3ON>ud0P*LcLC<`v7TSGENa|{v;PCt%~%DlhJaJqL~OFwd#>EJ7< zTFwUQkSMJ9?C{0&2WG^4ZU##-y@Hy`+=NbsYAgC1`dS{@pzERS!4|XrX`D;tMZt9 zoL-O{EFWed-vEt#o`WzjczcZ=Z9}LqsBm$28WPZ%{~|_duEalxRm8@)+W6=!Cptj; zrhbG}O&|M)2wTlHmZcz&sW)(EfUa4a%Db8Z$Hoqkm}HdE&J z9hr6*5MGWpSM4uw(Ob;(QR(>#Jiqu~i@>dbpZKNj=z(Al{jxcxGb|%+2ir#l#$mn!TAnq4o8o(fL|@`Cn8`E%VQz;|_*)#z!DTvY zf>Ppp1VUfpFb<7LrfdLY?KTL^{)hwQy|5k@yT||>`Vxn+WXAq3b5)t7;|T?0)GKO- z{BzIpkwetOWcS@*v>0aJ@`4YGn}Q-DwZ>lc*74+#IcEQEUJMI5Mkq5(^E}TIE}WQN z(E)+R2gn{$d3}{u3(`u$5SmD!+)8 z(kvkM-dl~a0{&8qmGD;4BeB0!W~xFYBvzI-h$k9LM`wpOD!127`gV00srY1}#KSvJ2WzXcS&N_)~OLe97VvT|$TH}odzku=l_pPr|Y zhs1jGN!|0_S$+|JS1jhWFB)q#wH5mK?|EqmVsKC-mTawyB-Gyz!BgTbsQ%cTXDK>@TadA$OJ z<$bY*qR>Xg2vm)tNX zvu}b0&u2u0X$UVwwhPz1U8=&0m$>O-Hn_xi3aKtD2}o>1l2?Y!ikzF|ZFbWqhZO^tJ?^kC=#K*< z!{~10y!gYb=T~2tiq<3sTWLl?Ku}2@%wYu7;|pfM&>z)O0+5}r+ZeXGd9f)KztcM0 zuXI!W_}-)Xm*1|XkNP1BuTwrv#4vw87R7!qc;cQ_F~vw7q!SAm<<(!-;nOq!(3f90 zt_6m~D`x5JMvqd>KYx{X|C!x1kyP?5!wws5TL$ZfD2^#fYh!)=&#k1Jw7ythpT27a z>DGOA&4$QOSapV(YYw_^u#nk>O^>cGs?tQ z$~-a0P)512 zJWbN8{30c&&=_91A_iXuFxJ#y4STc0ZAA6%gu+B34p>Dk7z;dxIF2!ulI3u3C*q^c z73ppa4i}FmlEoBYPUaL{K_c{E@Bxa^lg`r~Zdh2(8nAKsemelU?vYmjxYEXd++Xi) z-2Z0%+ckQBe9!bPWH!SBBTHkyx;!t~0<5YuIS2f)D2XOmX1C?sGMA*p_zZM@AMc!@ zz$s2N2~aW}j_Z2Njp(er6a<-^YmTn-bH61?&R98DsNa!hSvf6W$GZ|LQ#~<*no^Km-zOKB0bQKk|yKyU5_|P(q2q)ny+#9p-u(}klD8PeQ;rPDjhe> ztLJDoI?MOJgh~Etz4yh}54y>hz|`-5^>y#dZ`QjBJcU>5Uw!Q+o+~>PK>d7t(E}L$ zU#Axd!N3OqhaLc&uyQ#YNG*hqrH=0d|x znOhl|UwDwkh>Q3N?ze-=~AOLlCUBf^DEXN_<%Wqw6J43SvcSd*iq=z%kAY z9Ax8zvZ9uo_bYX3Mi}Y)NH)G2z|LIvbxA!y88$=>T1-5S%GMbbfH~ zI>3z;ulS%=&S*hZYPZQ<*nh}*fPTZwZq!$K5=G<_>#%;Aqm|5)=w_Jbi_{>8!B@Bl zmCWNTFm4@4ruH<&(Ixd8Log59y-qn(u)=&&^dWGlsmRyAqBs znNhADAS*N-ItGL7EEQiuf+@t?KCa~G+4}(d!(o}V-R_a==N^zTw#Q1 zlzi~(*a#|oc4IjwYiCj{n9~kY;i&@qqG$q5^Vzos0T8|}FjJJ7XqKqy$P(AYaLD9c z9Z1zf8IL@T^Cg!t!N4t}!5(WP9v&Pp_h%6H8iV4WAuh}evwPJt$~xdpCc#|g1JEjG z#dVp@%J}T=@CZjYd~w3u1hm@|paTae8yD$2vjM6+P7*}cH-&uw7#F612WjdI)lDs^ z(dJPj4qm4-y7)7ODM5CRm$4>voYMr=poIJNoQC>6kF7$w7PO z6g_oUC|UdWHi*IeEIKBNU!dCKAyG-3Yqsaw&$uq};l}y&MCj->`Bb7!U?V zv0sfaWk~=@p8O{X2N4BA6t|ST`(R_AAwMvqGpyT!!=+K3rXtYJ>(+avW;128M;B-- zBq29(bJ5$8u6r19dk)*n*$rt&wAiQFAU_ARkd$1npxPE*XY5J9F=w$C6j^OSE#j*B z3kVK$X^W(wQW@AT=ksZ~xwa+?xqndB8j1v1MG92i!IoLr z%t9dptE?0<3|5HBEaEa;>V~h=f-^L#R_tbMusNH_0l*b7;MbPLoo5ftN#+;!*x zwvF{rfUxU7U=wx?DXtJ;R^-$jF8NH1iVZts3ahm@O3yO%7e2f3tQm84>(pC>Q0KX= z(nu-7&fC&nY;#NPc#xoK$-?oD!4+4>wDN5mxM}yVnJ$flJ5?iED!{ zsc1D2k3B{sU+i$QIdKWxoLQOkmB3InMc|xjp{a+&1xoASN51rH<#j$)9SjIt1a2Cb zQl`XU!7okY_I(+t70P

R};aLh7%rNtfyJ7_zPYLpe#KWr<5cg=oRsyO&cGV<*hq>kPr;RXBs9G zVLr;|WFQz7#gt4UW|fgTL<`wJ>0$E^8Ku)QROsx!S}d8QpDr^>0gP}wr_6z|r7({o z*=Ht33oLwmZ?_yA-=l-apjBXEbVk^f@`EwGkq%+CrabWu!E+Im9Ru}yNd=|W5A1Py->g! z_*T^K!p>VGC+sc5jH1AhGOelaO#td24NLaH=O4VD`}tPDZ1 zJ=t1ahG%bw-eFYkPbgwjBcpc9Oz15$29Y&Hg_xLe*mNrj_UvpFwCG+mx5Z)F%u&5l zo^a8oBf5D-7o(DSdQo94P(>s*GzcGJx&7JpXx`kU(3G-_+8bF-rcpU08eA60rCVqO z0u6yeuA0Lmb7pcT=e9u81AC!1zrrmSzs^W7HR6M7LBXuCl981|4w=!WiB>EdUu1%D zoJMuBp}xy?h>_LEiX{VYp;rk$K#AS{;I72C2uErr@_LzJ`cTdod3=wLfdo9>9c0Wd zL&aIJh&#`b3RM;@FP0rg(2`@p zVqy$IIQu%N;oEGAUXCETk4ZcwlXZ>pp}=5~Gdzf!a>Nk|Pj!a!_i#b0&JlrCY^XhR zG*OIe&X?b2*;JHV4o!27{xv2$t%55kasXYggYY$%k{1TJ_G0YLe7*>9$)NYoZRnnI zZ}OxVH{+Jsfn9#a$&0R5W8zB8?Ln8JfOqAiA&_&;=JdU>jsf+~V4h}g7t@4;uP$bp zI?pGg&W&M2rsa~X0T^Oh)PD-$8n~C(mg$^?^I8LYAmHFSu|YiMRbJctE@HZ|)H4ZwvC#?rWR|#o zqh&Q=Tu_y-M5V!bZiSsVKB&nEW3F77#6 zJ&9l*fSn+>L(?m3w>M9EP{hF`hAdtslWM`xOiKp207bPvVBu`I3oa|E>xKA<6?2e` z-Nr56Y9x-)olo~_U{5jC37MzSS=AI%HY~As{$zCwDIQTVqLTU!7e6c-=?zH87|clo zC$kpN2s8q1pojMKUB~U)xF#{+YdUj5b|@t^Tj9(cI7KfyaKDvCj>7Aq6!_-km)fD| z8pG@=A5@%K*$e3a>#U;pV{pLo?Yx+(7#*gqC}a%#(+t=*@$eBBN2;0UbiT-LEQ`tD zk`tF*0FQ7-J7;=YoThISCUV;>rse=fP9=6nrd%6?q*83&4j&YYCk=6S)Q&9$S5^mu zY98D+rAo)FI1RPt@%!)Rabi-dhmiBhHf z+9Q2RyE@Q!H-BFl=(lSy829t92X2^N#K_t(nz~f0<5FI8e;sl+lOqYai9cH>w%D!J zLon>77#1s@%*HJN1%htiyga$l>ncJizw3}JZ_??wy;sN(j{Hjap(rjbn3Xm7e*>qZ z)vXkADB5fRaReo9V`vNa28D9oa%(t}Gg-2->uzVb7=~=_Ddfx`75gwhjx(y@N)K*i zc-wpCT>p7{mKNOjfDee|WNx{nb8|O>gAa=}4v4twZ$X>___#Gmgc}yh1E`W0=WG@b zim{NYjHdzkb5lFXo9IXgdT58lF z8brXSCUhAkb-@@?CeA=yxXMco7Vvm8Vc*!slRy)?z>8TBhhKltfv%8p`-ZKnYz8NP zRLpzA_s=byGq(v_Pgcq!s*XoFw~3q$4*4WPcgiUzHjuORo%a_Si-g!Ayrg41vni7| zt=?5eE`#-hLAc!D<7{@}T%l>Dm0j<)kJZ3HstBO410%6=4?r-jeyvS=uiTFe@uq1&s@{zD5z(erzTst1cvzvVS{D(~w>WG*Ptg8-ft2(%ZL>;e*X%Oj*3!m`bP`~7j zkvIjiJDQ8lExfX8)9>&F z#NQl&z+|?m-0t|oc2M1J@F7Mns<>f=_hgjV6J-1I=4`;#i~yBMh# z+Am0#_x*E%H@^FfZk&BrRB_{0q8>Tt5cN>GaOmDyhYQ_)*KP*_Utj`eR)uO*0x~@+#c+>W#^qD*vIZ5z&>)eeEUc&@CLkRO7}R3 zZx@feau)9R%V2M9Jy}{I zJTdjPO6(qblD0*J2)Uasp{gZEUrtgHLmlbsu0+;m_}U>>zq!RtHX4}AZk~1+cHhUTcqN8p-k*{7;F630} z6g4Oj#*nVW$Em` zm)RAY*@Cy`~6CTW9cvjxle&oVQp6B`6npG8_yWN00CI*TOgbU(4fr zTUPR_!3*-YVljUPieZU}Q8-~Jd1;Z>>8O5HP}-4>*0z_UJrwwYse`{&bCNsx;AVVQ zj3{~X@jbhwL8t%AU*uh%0Ezn%XM|-~wtL)j#0Ec!}>VgtgAKzo{aD1;G(+)1dK-xpfl+3uG3d{?H*`F7@LMU}_yXf>w6n@*^bd%mj z$2LEacDXuZxzIVWI|SW()JG#x1;UGT3e{olm$D42R z-}X9_Ieh!(w~eoU`{I5FzJg#qo@T?&V}keTS|8)#v?mRe>EWx9J}1S*OyU7>&va-q zJ0oHag=X(42-rfYXJiNI)$5=Uh$&soh0H|k(-DW-LA0JQlCP^_H@?qr} z`9x8fF4d5O8abt*vpTwMmL^95-Jd|m%#G1|G2+&XI-qX-%8<8I4c4ct7`zCo)vo~u zp}tH2tTG1|mr}Tf2LcU-+{!#}Sn{SwgpkZ6*|2{5=jUjP zm91bzDN4Pl>y+HnkE?7)hNpwiFJ2X+8@%LNx{Ty1v$U53TXC9e5KW8gJ{y843m2`y zmZ{n5xU}*h;aD>Oek^oVn=^H7TEhfd5yv3jp!y#MY3FyqPvi^WDky=Uv&9)6^;U&1 zD=y)B8nGHySBBGoZPJb&yuRJ?f3r;@yPE4%Xnb3hN7z!sZFPd$P_K{kp;1!p4k0Ph zO-4jthFo934Y|Gy4>@=rc30*WdaYjE>Pe0fh@NnY4>q}x>bIS?X`+evJ`t0;+Mqza z#Dmrfk<^w<9#)6mu9TMUb^7D-1=lmmB9L1ZK()2&?Cfnm59<2JQUk9>PL*ii5Akf@ zD3!Dr9zIGW@V8@H97RAL8%&gFX&f-km=t-aFoYSo0qW5SrM`P_Xj-aXU=^U>H*fZy zv^&;YQDIu>p!H5ZJ^JTM{O88}G@n*~mZ5)p77+H@(Yu?IwTpn_92E>IbBiBdZs-Qs z1|(nhXDQIz7)a)`WaBH0)v+ESar|6Cl>tiWt#_^DF+kW%+Oy;@$@;r5sM@=4wyG6n zoL5#JYC|JIxm(qsd1sfzbe3Q7v516%aZd0SVI$-^>r)8aL%)cD$QD4dX{`3`2x#fy1jg3q|EKq_=}G1e24 zm&Gu{1-gI!t-O0wv+G)1p#L&jUyG9A@xTnzHOCe4?;aSaUrxEAfF;=L%%q9cF@sFhMm@XfFn)saIxMzLL8QR2&R}TH4+W!E8`ODK(mBIU^WxfcEBV|NVT-~>$A^Mj8qH8BD4RxGEMc`2sO5FW z#ozB(p}br9Vp;L{La_iEt2S(2cHgV)9Nr%Lm%k(*zzfvUv^9^`PgdpAUcD8@lb56+ zu!~E{Z>R&&?&s-qsj*_KzRmr zyxq=-p=aT1^3XJIBZ91M()QFY!py9`P}r7C# zmH?>oP!EEA7u(&~i|k<|`MF(COMOwT!002b5MA|zsbQkm*0%9eqoLMpRxEFl=+KsZ zCpN#htV4)`v|7&Gun(d`N}vvIhFYHj@#*s)+VvuJ*I$>N3PBNK+VK{CXU<}Ks<_L_ zVqm3mlh~L2t?kKUt0B;Ki|U?KwYwC(IcsoL2dvMv3^|7|Va^bs4n$c6TC4Y1FtZFZ zM{k>@YqAqs77;E==9^d)Eo`oe;eSc1qKhqG2L#T@lWm_%5z`#?T|d?0`;bL)Jxix; zGKd75M7?m`$X1pL*o-l37IyB4@sHuQTf_Xy!=2RV+rFaIXudb;yFxgqfWSUcg1Eq0 zaN7d0TdmTlKWlhA4Lf-4x7`TE^j?nsmse<*GUNZ`rVVMY)rw5oiUbFu`rfV$=wz-D zjTfVNj#pDtdr;)na?LAhcVuf{*KOrUQL0d+1b%?nsSqlUeHgl`60tl5JJ;=pED4#^ z0L2YU<9`~K83BJhqA$}jz;d&YdN&qiPEsO0t`%q;4#X$0tYYETcHU>d^zENLfOxNh zuCqr=J?j4`)^Ek2>cn>{(5PT^DJ~avsBV=_-rbY}>b_O%mx}Qp&KbB^#9Wh&x>h~@ zAW0bi;O!;jw2TKIHecez=uf4DhLq>Ve#g~|3G0-lL%>MRM>dmo<_3iZpg+he#~p|= zKu_O|A(z_s-D*Va?E8m3NA&ZgN{aYttb*qWCjpZT7-VDp{&Z1ZwhdN8cI%75K-Rk& z1|vY}+n@}%8LCjrYV^X%HG7=+h(d@6DGajEz;Gv8prIIo>dFO~*kUNo&$&>DjFC6& zyDtU{cqM-K;S?*bL2t90vWDD38m`;KE!T`0dX$0Z?sSW_PFyc6&D2N|c5*B&GJE#P zF*DH4_};8j-+5Y)v*Hv5({U_T0%3i}Gc#=-CZfSoo} zvj(0&0XkDvoJc~>5j167I`}U++W2QSx6R5D26;e&p`8&!a<$ttbcFzFhrfM19BX&t<U7ShXFRBrlA)QXjn^?cT`WZePl*3$oQszJ;fRIq z)R?le(cJ|r%1-ogz0vE|<032TIR{>#CU&ahmmE|4u$W>OJ)cka#(vxMHM;tOk5x%~ zmJ{Q&w#E_*zn7?~?`l1Ct#8%TFkcKiU8Qo3AklPw5E1aid2yOvWIv0GZOrR$g`PH6 z3s4d(yY4@VA8p{D6=>yoc0R8m7JB8rK5n9yhO#SA3|9F7lA&r3RS)h)G|Q_0?qu`7 zKb&l+udC8cZQ+#(r=X4^UHH!AX4+Pl-ebxdd8Ef&G08DKd~sXtC4R)$6C+hTj33&5 zk1=gw|J)hn@Z>e#<FfgUaS%D+kz5O(wmR&7(eCuewt%N0!SZ^MPZlKs zNw`qbOKdinc{+HDDQ(V2KmeEw=5LFvr0@}IU#x$El=E6KsKH_7qf!dD|Z`dfl*Wuh>B_12ioJ4a1{( zf07MGsigk?aGIi9dl8V0md{{qM$Fn0GKdnnzdgUOq9uagmvJyTtyuUq-nneVmE;}z7-Vs&!UHY1Ubst17w!|rfunK5s+SQ?UFdV8*jb~qc zM?s?SM9cAg8v1Hq(R z`zbqHLse%@7Rp*l(EsG1AK!Z0VPPHjcjN0w07~0RJ6;?PCJ4RVX(M6iD@(mm+2^sphv2qyO1vpm@**JZWx$0;WXT zAZ8qEgR-cEBf)2@wBw><*J6oZ_hQZPtHb4u?Wh!mHV{21~jHE6Q zD0@#Ru$xQGD-76#!RJ8g#-SpK<{PYVGn3gQU}qeOrg@ZV4>-qYa$ft1|o z>bV2%LKD#WcHd1$#SG9Q@xPZ2qo)|EKa@AKC8Oa~q0Gl?+wrJUr_BV|O1OwNz`>sa zmhXe-_{0Hxez=6-B!dM7(I?sv)-Dr4;n*=b%4J$!n!v#zsd6lvVLe_cJM=`Y7oC9$ zkMx@Rg=c_4obszYyT(~=l`0axafzV3W0*KKts$A+chDe)P~GT#@%01b#|ixH%A+s8 zS*J(v*F5_A!PoQ%|JDxE#e)up>0UICvzh?f#mFNW30Fid+cbg_fT+q!@NlKJN!E)n z(p8$qs$t8a=opdHFn1CqPAWZ-0uxbk07MF!kLhk#W4cjx`?xs>_!FIR0LM%X(|B2+ zuOXyYD%O9HzFj5iYe<0L4?yP$2!>%^X%6IWB18xEQgL@;t(+DqpChUbJe{^Fh;J#| zhl+)(hEk1q%ZaHe66u8U6hnc5L};II^gGOAEb%^5Ns}u)nbSO^Iwi1$D{)*oZNQ8y zWi%WVVJ4-?gp7fIU6xTQ(C)+P?I!){@Erb~zXQ3oe@T(tv-zOkaXtS%G=h|r0Xu~t zPQJj%=s9S7o}5=V=QZ=a>SS+&?g6ql<&l=TGQxc_eb*Gj)MTcIf*2&x@O4U%BZ(&K zVAEzWEEYuQ>C`0?uO$8R$4u-x7%)9+W))9Cr34(jP0CB8vNx}v*Np2xlETngL9j4Q zBv9)=XMs6E%ckk3oEu(JU6Xpq&@I-(^v#%^q<+BX((@iQ7Fph=zyZErDrFpAXUH{S z0o1lQ$09vl#7MdL;t-xMYXY;E&;Hd=?PY_h$M>9jUyE*ezZ$k*kv#)_>;8Kn0|jCj zk?S_5T*zm*ub)x!cxts?d^GiHv1d!HhQB8YLpW5|F%(McC((5zLdN#xa#FTz14Tmg zOyzS9t*`{U`UoTB0@}_2(G7b;**D9UPDN;6FlIp0*4m%Uw;sQOjltByCF?nd@%k}l>`^jRAG=bfHpbauXeu)ZujjEsLD`=lj^73zs zGMUm&IfTx``pasPr+8#xr>;sLm)U5Fo^$}1P?k;BD2>x7E7vx@-uQa`n=gC6rdKIL z#{6*S`Gtfs>6v6CXi#JrHN-JC(nY;wLDhTJVHpvF-tXDht7EFx;P~GZMGiYtJ`IJAN1Acr^%-v5@m=jd1lR9M^SULh;)$H!V=cOaz*i*o570wnT)#p{w?h zjt1QF0*$uV4B#po1>8Pyx~eNgs-gRdI-UK+>XrSe)Rf9I`+&HB{S}Hn_Jx&Hg2u>n zrb>BRxf^M?Nmbu?u+M$8hKnP3A@JBTzqW=cU9Ym)oPFLbk+BYqq3Y9dIvT*zsGe{Q zxaMK;1Zu_axZ9(XwdCm@syZN4aALdB1PFnRarKbMC-l_Q%$kMw1PW)tDq zEn7F-4=Wq9D+744|H3|L|H_Av9PYA%fVr1d$k^oyWG?)If?x`Gj))n9)NZktX$y_R zEt#X1Q<2SXbVG4Ejlqq1=9X{?&}5@F-ZO+7uKU&U8cr> z*qweyD~-VhQR%hBC}1C-hsMK++>_~9K$#Se95G4p$T{$Mr5zK(+>1tDZM5X6sCF|C z?D%~P zu0DjhMcYF%!kNW%^5`-^KfKi!^gAbhSch`hs;berRvkgeaT+OECeJ6{Udz8dCd3t+ zDY}5=PY;(CrWF?7u*Jg)149Xx=k&!tt^#}T%m8;~je8iNPWV!!jj<%jfSMFjbevDx z+-{eLS8Z!-QfGK|_)%9z85<7iX}XSWdySjwD$r|DK*mGTcs=n1e8!-=*6&F$Ezh0T zW;dq6lBSycK<7;o{!%9nUvX$Jr_dJ?1dC&1xZxb7T6um!X zo2YJ8w$#V(S1MGtdU{6gc##(t2anaJ<@PaqA`#uhXos;7R@!8I`tkR_K1GJYjF)(k zoZ~ia1+CFuNI``@Xiu}Kd(CdxZfOzB1}E$aqo}N8EXu1n^ttAgq;8*Lxg7J`WhS*= znVzS!T;>VLbXIAvnH{v*(V6SV`kReRhY5vsTqhgZcBq_bA`0<9d{L=n)fW}F-gjZ3 z>b4-RXL{5D#&AD$Dl(Ryc3{RFPpka4q6jKnG3r%Ge;U-8&+qzD^Yvv!h5j~Q`gPXunZC#kXUEJ1B9UJkB`BJbzns(I~lan%>7 z1)-gKD;0f@xyoi#(W1!r4ux}9J9!NAjbA{U##pBM)#phIA8z`083maYMV#D~(JqY& zS?@9}jq}MpcEyKMEV+F8ULo~%3k9E^|HfbpUK+8+ykbO2EqSS`$!m8|5`4bplDgl8 zNn%59cv-`nb$IgWdqT~vxT=2o9{vJsNnCio7>!_MXW0bZSZ9k2bAzvO1Ci!^dxTGW zB3kazi@T@R$n_eh$Kr9IvIcZUQlzJn8x{6BEa}pg&vTG*||%+oM}F& z5A+SmAfSph&)9_97$fp9y$J6E)BQ+BYmM&CZ}-oBjpeT};o;@_g1%4===$ry{>wh? zSgwstQ+O*>T6G_7qy2F@ZAwAcaD{3dkRn?Koh2l(H${Nc zC=#EebSkwy~}w{*%7rNU8u;s+}A ztKcopbb`mTbh)3Y#xH^^5n&#!pYS@0TcfcEwKT{oNf2c20v!u6!eOxld?lw2BUF{y zI0?w1R+VZp=vn;!%J}^i@N3#K`2974U&Ms9&Pau$U)ey@Y)IoNp%Fuc$ij$O&~BRu zA0SpJJTGZCdQKjiZCDGe_0vNaqoXcpA(XGAs4@kR&n#xfr=(zSPKi#nw`)8s(SOOD zeNwU@<9t28Oy?f3>ui=y{=fg{|D7wBQsh<0$p!`brl6I6AMYiUm^ySZLdI3}VFeG~ z7Ckb(cmT!2sYJKKWR$Zt-3_LnX0dOkXjJv?Z;N&GsZhbtI!!)M3uzT`@uDDtD z@wOGP{&PwK>VcDlpj~tEgR7O9LG)Rc{5_i$0b&p@UN4astbZtmUYaEKcqk1W7+k`{ zQlfE?G8SXZ;RobVCdJ!+h4gX2F&U8@D)_2HMOHkWO8)DLC^uY;$2WVpR$?)2bao5` zj|W$z-9{kUbggW#iuVYFcMjhuLQ(vl~)(lr;Ow5`uhR}^z~#t zxsU%@ce>y+#Z2zAt85$n8RoCiOb*rFy~u|@!~b=)&M^}@9><~IAg=$qg6N9X8`<3Q zgppwJ+}72d6(hbnc~Ms)jkp(}GE@eN^q&w`=^SrrNX^-CUr9PHiW8B$5C% zOpAO%PKz5|oQv+pda}{QIRRluBTo%BWXmes>QKiI&$cA5nz6+*81HzXl2I(MC#FZ}J9e@O0$lq@t}zWy zI$gQFRDF)#GARhX)i?QMx|km!^G2f)I&t5N!1YSa(qUdKFGfPfS@AAfk}t4_&vmN5 z>IuhHPOc}r4r7=kjI!TwjxdAEZeqU1w0S=oM_sTL10YnAL?0lNJBH%KMDeuMO^Qj@ z!i}5XQD<||1m*Q*J_KQXSq!#zI7X1t7n8RW5ZgQWJwj3|oTu(kB8X(jzO0VqQkUM? z1QtLKfl@9FNpU_&MXLs{egk_CPtixy5+&S}T))oI?16q>=p#oSoaw+jg{4biRMZCP zCo19lldgX{YQGwcJ)@I=Zs-{dlj-~IYBMGdFig}2WIszWU79jIsMkmw&Y_NM z(fhD0=T^J(Kgt|}-}H|DRz`sHU&kzQ zYy89kk~65jV%tDcgT3b- z-%pc=bcN^|pYlvo1$ZH1iVowFf`$LE+fOA3GoID9cl$D;6{vwSVhI zn?i)wa9gtJY?28t5(4u!TtT&7<;a;}y!~u8E9w#wcma-*&7KW*fz*bUX1QHUPJA4{ zgxpap4ix&s$?}rVld8Xl*LL4rYa64lYq^-QvDSvkvWan_FZ_Lk;Yaw&S~lz_HV}Xc zs@ZtGl7i6iP0zJf1iAI+agFB=p>$`~6rC{j$GCvP^!3Nb_+R_+CiM6CxZin9b>KJr zILm%J%iu5c8@}`=#h@tO=JKQ?)ez|MF|5nqGN9cdJncNDi$CkV|2RJG9Uq?_AOHE} z^G^Hd`1misJwAay2PdC(K3mI|sB7b_xKqdBE9z6Aq2n*AkNxCA%&@p`&@t#9^z9V8 z)&H#Xcu8NbL1)U-rq0l$BhIK#{m-Ept|ZvI&f!ZrC!CRINy*rv2h|R(1>N!2d!5O+ zel<&trg*i^j2yQZ*8`{WtAS>m+yORMSRQ8=H?Z3+6`{~X#iP4pTV5ncuCa}wQnu;3 z%mK0!N`k?OK)TfuEJ%2-IkY_0^`4J@AW%m6p#ms0;Ypt@sN+xeIGd7=CCOEvE0(xD z8XaKr?#YD#tQqDG_QZd!E2~#t!=*e|O%uMl$$PCrb=9>NuRay_VqmTwWRrWjQxvnI z>GBI)7(2#{^{Oay+@v)gpX7KB=pO$6?7fM08@JLhIFCa6`dmrZq!#aMe7Q)n;zf=n z$8nZpQ)Ek`O_4O4lq@HnXPIZ2CmU21b`;Rf#mV>2`T8WX)QzQ3C=?2{!8XjWNjJNg zayP>xk<8u*IYd>&E=G0=3FWwKGUWSrx9;8A+Bh9v)Fwm72PJSqjx~7=b_OvtQ4o^b z)IMd|2=XC|out-A-Fyvw*ttG$v_aK_o!!{ny1TJ?YeUXWZ91x6;?yqz*zYi#;Xs?S0UTcX^hB%u})U1rAM}0_AA<5&)gBU43 zbjqI?l7Tvo_Ti!B+0m4lE^Mul(-1&=#maf=e9Zb+93_DZ19;3{(f;udy=M2tV$J{& z%H-*MCuu=pNdoK0C1=C#w6C0RWG$Hw0!hkfS#*8M9fc|}rzy0`OYa{PXJpKt2eK@_ zKL~&pZ6AU)8Jlj)M%rS1wUxpR5(ABgCxS|I4-buLe#tf{Rt}n&hf_g8q<#}*`e%O8 z8)a3@9&|vz3exVJesh||N_DLBtLv-u7-bM%@w;>y{e&WthUh|w@;ws)8V-H z6*xk_3g&oB9Od?k<#h|tv8jXoscKG_hp=Z&tsre!Hm5zz+YA#i9`-%r79X=ldn_v& z24WSlPRRM*papRkN*(Bug)EOoONUrpa@4v;|I4)_!2-nDZWN>RYyA_@M~ma2*jVB{ zT+=p#L>V-JMLUvI8~r{JC!M1<*FIeNfR5zgG_JyQa8Gp?iXh}6E?alijkEIu>qd=D zA8yD1^UBKL?Uot$&OxXB)rtDK5~h$-1=ZAYQ8Pi|Ufv?Rv?%a8qr+vua%5Q`^!+ie zj%`Y^7~@W7?Cxm7;^7IdB~bA{>fJZpDoVEFDPF3s1GsHx3aPmVzgbR}SPM>}+GxT{ zck#RVfZboeZhgbF<#Nk{e;f%IKcb>Bb2b3|%?U2jW*D!K%)Fzerd2swrs&bM*YCa{ z&hG`pK%#tLzZB@BED&Os5F9ca;6c);6ndboB&&&wITu~>{xSklutIQDJdJIIpzyp!{0Xvz36=I9e9Pf) zC)xWtNpM zeyFMPU{tSNUI5Sf`g*}J!74cn3_55_NsE5)6w$EKUxq|XPCt>-=)bBq=oPmnJWnDO zS6THno>kZ~5!YM_&^w6YR$|SC!L7t7c4n*L>)3+n4%(~28xM5uyzG-Hvw(aC@4}7p z=JudlR}v?GW3(<0@>7!}tNnqfXKiyHY^uL2ZUdeE5DonW{h&N}IBbg28Q+JqzUl%J zaG-+d_6qs}LA}Wk(^c3BNl8EvXD6`DoMqk;bOi~0O@{)?{p@q5I`womqRrov?leW3Zpf7CL8L0%mU23`rY2dImC7T}-8rA2Te52fD1 zuv`dDC6|G)3h)R-wmZ#g;2dxCS$vnN%Mg{@4%kUmu7Ag0=aD6Y{b0O|~3B7Ur&UUu(ShN1p(v^j*j;CGevJBe%Be5~Ut_W!{g+Oo(t>|QTk8Ezb6)WpN z3SwE@zaYvNEo7&R`d1H!M1wFtk-F9Xz)2Rj8gvm8DGyNm7BV6ycVOhNyuWx=sT5I4 z39bZI_hQmzcm7qtsTKGsyL<)O0e*d}udC584$+W253k0r4yWAlEpg5XR+9A{Pe6PD zi3M^NZ;GSPCl{h><@P3nK_O@lFM>n@{^mQ)vy0P=aXG+(=6f6o%vP0Tn{b%bS{)z| zW=I|d#;UM6v)-Uoj=AH8;%E%ik%?s^*c8d@N7Ey5o`n0UVM|LW#DQRjJ1-?# z#rB-hYBKrjBPl{#>q&l!#yzPNXpgO`zhM>MeTK?kGZnmZon2OszS}!K&QQk)eliqY zcZ`=}2)v1LcG__10sV#Acbhj&2S+_f7}=d}BtQH++D zFWEL+n+_M8L-rQx2185?Xc+f0&d`&4ppnDjVLI*6p_ndESBHx?Z}wWj;@tBV;Wz{I z{PfvQ$McZ3i&9Jv2OXj$5)e(BuoLu9V7Joy15s0<26U;EoRgtr*zWmvIJgRq$VO*2 zR?>HyuvdB!<^QTYdc?q8ZS(>;aTQkc8tWaS5gwetLjV~T+^5pdAS9RJK*k+mMVkIq z_U<-ySdk4>#4hMKG}+Q$q(_nhH^oy^Kk%1OB2=JUw8y?Q1J4Kh@D51>Vm*Gd!Brj; zG>&8PU+7Lr&n-yggC`TEs2$SjDFf!JQ ztyDbEzkquYH_|%8Z#5Ou{(c%1ie?3-^mjK<0sEl>MD?Zlx@iOti|APauNU~hx+UY zX3~#dHBodlhB6$(Q2l>+MBy4088D&Z%;@5~fVe{L0+R!Kv+sYj2JtK=>e}nIU(QlPU8#FpD=4U}HC`=5jRMAVr z1~gg*6R1{7U;@5-nE2olX^NWKwhznUkRnRfCF=|~C5Mg~vWcgxRRMqEJUW@?8gIRG zcsUyOMSmE;1>sRq?LX$=ken#X!Z}qSiS!2-IC!q(Cj)ub{p|Mqq_Pr*U#{qTt@$Qoo+Gy< zHoXkgqpLfPqM%vddDyz9KomH;lLT~8POo=7V0!}phT;1QMa>nY$8q~`v{twTVj8X| zILEz#I3#D3F3OtU4*?cYW4zY^Q*2U$Ce_z^k22iiba>HJjfCs%Nu1LcvLy}>&72T$ zb*1PZT;*>w@=@ZX*e=IPB{Q{H2Wi_4<1^eXtj&_}S^G=xOdNs;{|sVZSOt6nUIecZ zoKA)(f{Un5L#)n*QRFqMtpK4uGF8bE_+)V@HUsc6!$oGkIo$r*pW&J;JERqR;X0w3 z(88pBq*7AVw$v1evuwMsvynjpB8Ss`lW#2c@=a|)ft9X<}!27C|4JCi-ln7#R;$0$@81=yZRT5Z#7c%36$ym>{|tcvHe~X0IEq8 zjC3Vf%=A867k>pe}8b~Gp*lYjJfI#3bmbtMyS%FSRltI`|W_j zVI=+HAh+r`6aB+IM^W32QCnCpM((}qisS>ABge-wQQacIuno0YByMZ!IqA~9&$2lX)i83Y{RzIh9VtceLtUcnL97*T^Y;X@?Ps3+t0QT%Ai zY5ly0IP@by&_c7YJrTRs;H0KKEvg=#vo;*ABjgvfX6DWpvPW6gm2*^tFO{i|S9dBR zRIDmwksltlXWnW2ThQ!B%DCeb%p3dusNWuZ0(}XdFa|?3`Hah+=ptti-9K}dgYNas z&endX-`Qt|_74Rn0&gNa!zpCz@QB#X7(Vo^8y_fiMr?-bC;j13yKn2*E5mV5UG>*F zZ4XW&<$Nev9|R5MI6D@dp6(A`W7nZuPjua5b?N`_JC<4tyJ?-LLl0H=WXQDwCOzBD z*g;4AjbAaPOeT0#%g08F! zJk;ak3X=qS4aVK#Xo*rjHK?*`Mp@;N#-x$;yT^K-=OCnZpti%niG&kf@9acfM4@O# zR;Ty*YAGPy8R9vvOn3pZySk(_=C^uB>_Z zwSf%ytL@hDX4J*&yP@e^dCR(98}%-vWbJ~_@VL^=Apa~=o(cQY(M+Z-!Smrtadb9j zA|rFmdo_Ys%^rlsw<}YG?|{0a8y|IJ{~Z|n#eXU_W%f9mPGCsc7l@}GoOm!{FWsJ- zV;5@I`xouYoH_^B4e(?FPqGs?mO__*H=K%cluHBe4eNlf3cC0Ux*D|M9#65%a+qbz zDWcjr2G29AA;?fd={n?%mfVHwQ)iwK*G{7v)s&q0qL*h?^pW`>chl9i53+qTXmz(H z;$)W{r@np@JdrR;9Q&2vKzaxiU8(}4UguOsW}diyJ~9~#xSE@GJL1L35Q0N@Ut!P} z-7abM>|X{>tA{*lz%R_2RlA(2`x+X$da^ zoQj>UJ&`L!d9ZaU;~R!fo68^-(zuJ!Mcc6UB-J{3==Q=ibQV!eO+IS4nS6a+x+po~ zPt_`cWqxyBR5TA%f6K%#kQ8Y{{9oHz9}P}cszIp=tp!;Ue~%UY=DzyF{!`0j@P~xo z<_oJ%)%eI{Rod09FCp>Rh<`1usBt3l2*|p`!RiFx()mSjz*P(WJ?YczI#L?|4R}sZ z>-lN#*z))IPlapK!IOg;D-*t0YNR@PTyT9@8O_GB$+=R=`bh>b8xnWLtW|pmjK|m36YUXfG;{5oeJ%E5VB}3+`@8#j8wiQerC_$Q}wA94_&Y++p zl~Tzy*K*^`=y+ybmPb!~wu&I-!V5cdEFur6w+uQgt}!_N>S< z6LgzMKpMu^y5m-Igsn=LA#j2TKUA*yXjFl3i2yI+N$7x#f4g@sBa&iXy{aF!aVrEY z1zjp0EH%2fJ@Gb-tF#}Pjo2zKBP0^-F$0{dElA}ed^a#?k!>1%b5v}%s{ z9~71s`)Y)!U!-+0al^0MR;~sXy_`zO(yBw|+FyX)nUyupRw>6*8^eHngOLZq^$60g z!=%TIDS&swmxnn{kA+RbN#~f{7L3Ell6yFH6=WB5QEWUa^kh zPC|6ko}=pWx~qEH8Tr*sW$S!`MDo6dhtu)U`qYY^t@V#1UddBo^gOj>ap~(LDm*&9 z^#kr)l`YCR{b)nHc{I{5$>&-oYk#yc`k`2P1kd{Vy7SIbD1EaK?jaNS1|Bcq<_OT% zt*&4^s92CXdzzIjgqnurUX%8ClGC~nD|g(bRQanUL$v#A>wb+x(D#yp4z66YwY{LV zwG$0tvwnRFPqlT;tBl@R(%BkI2WrfA?C1>(H{U|NnAG>!HPkWB-HUrp;OP_pz85Bx zTSm@S+MN#G)z|KeWi$mR^6X32nOc`)R9N$Gz;vDO0HAvkx4c4phG{%VxpS>2LO2CT z=Uh>@ogDRtolkhxOeGi6WxsOT20eYd19zQl`sx-F$K?j6oenQNIHXMwAUqs4K-rg# zCt3G!XsHC$Q8p;xZO@K2H1e*L@`nc}PzWg*-Mul6t!u(=@dg4;fn)2p#P0aPcAJEk zzLzaz-&DTJPE=9c14#PK^i+Bar;L~>U}T}m4u+~PEw`@lGx^Fq6fDhAU@<2FMp025 za-_;fptB%}T$-EovWV$DA2R$Pw6@1G_08)Ekp=fJIxYTBaDC8pXAkF4yw^Y2Z?@%T-Zv4QeV`0ql!ET}MWaR>W;Zb*-P=11Rwk#Kf zCzY+uP50G<0=G^Jgi;A>m|$q*!|R?Ha9C9}kbo0voj9lMs$n**wG+YzLE}yfi@pmixI~;VyG}2NP6jqum^AK|Og> zv1DgjNL79Nsa|cz!d$)ggpQ(#hFfi=p8{SX1}pT`&zS~(7lv=(DDX@1o>Mz8w}1nTm;Y*A^v>Op6XELdH4o3cem1(k?Qdgz zcA-Bwn(MxqszsB*b-|Z_$CCtsS=CgU>xzCO#1s8C=ADJDg~}QKDdSk~KMY6Ji4x=P z=Kd2?G{@K!&_oT6>6DT_xQGd!Z_ApYkO=4xi21nLg=^*Ezcn5RxQ2a`adh((VI{yK zu~f$e7<}{wY}bY7iW*Z9;dMDoS@^=_s178WMg;CgcsppI<5kZbx?c4}ZAj#rth#0m zF}}IMcgts@DExeE@IWqGaL>aFD&;&+qSz*CmAV{1x693$g2 zE($4JV1@Q=<;SLVD%@$pIBHgD6L$Xzk)9AVaQ{_uhK8>wSSvwwY_Qe}hPnB==Rq`OGKmL*_96FT@gEXy8djvoVTZ)&KYZ5x-YXGgL0iE;?;}i)p9b?@asXv1a)_RjqVg+N2IOof{sg71OEI zaA7t$rQMQ+a&wUfj?ZYTpax{?(+R7DpfZBHN5)7+5^$((L7t=IXmDzkIb=Ommb%U( zezblNxvM3eGPwBA9KQ%C$ZW43Kf}GIs^rPTMBM3EAT&g;chENUl#nR6i|wK#4MgTr zLBldE|8Nr%=!AN%1(t3pkf*RovQES@t zgA4tUl1^JjM@B}6Wz^XGcAt1JT;xAs0F$bl$4h8vgkE6v!dH`&0LQ0mco))4f0cUvkV-QAO)pZm6+62 zXO+gYBXA3F6swE`chuhGm6;CA1sY?!R>&IEFj^Vth<^~ci^_V`o51)A4g@+C)L2nD zD(M;;l(@xT0)J(9{n8q5`|0#EeJ9MSR)w2;V&XNeOK2`Y4StkSW3+W3##hKtxCU;dZ?tx3l@c;rk=Lc&B zB(7I<8Q6|M{pz*e*@;fqm-53k?Nc`O=h;cSbJ-XVFLFlynYg+C)MH&kwi=lcb;bIF z%5MN0@m4OfEWqS9!3!sXbXLPO`S29vn}jF0h;z>}!{y@+XgeUKB#ojnX~T*G>XkUj zDCOj^-xVDGh)`1*QI5^tpwpiUk~S!)d~Bb$$(UK`_m0MGa3CB&hhuZzDRV)ldk?1k zCzL1MEA7ePEyGt$ne8tRDq9;{O3kRmA|2*hhC*cFSO_M4m2$)fKckw0sANL55Ic|Z zkq`@KPnCh)YCT}7d>Kv^0gUWV-@FPb>j0V`DjUm&Q_$!vFpA;`UxfEC2{Zk*B}WpP z%5)=^jO59_Xfcycy@x}cCBveGvS%Vm!=N%$(j^4X3>mkNh_6V>RYcB`W5i3uC|HRv zAF^-XjO`C>dQ$DPuWQ6|5{gerr+==*GW2I z!(-@4dtZ}vJY5Z*_3X1$yO$`7tVNMksq%>cWTzw$Owrocw9s%NEI9Tm;Rm9>S>rbX2zNW2a0NCg$N`(h(%H6n2VyhcHjv_V3Sn% z2eba9;5GAcz)^{SGa6jF4Iz9aJdrU%U=5uuwPpkZoV^7@!9Hr1afN8_r4>u%hMxx0 zeo`!;%`y?URG5(>xqzctC+q{hLBkC5`W=DuwJ<68B6A!VJs!nwa{s}jM%OsvRPbny zGxRY|gMLmS2UbR=f2D59!U(=a#CUlZjk+`oazI=R$Dh>IK%Qx$TB-N*VO6<%LrJd~ z_(D*gY~{Otk@c03stpI!Tj8O>TqPuU+tx$z&m-TgB%2c7m^*|pX1VeMBfFb$XJU=q zL>-C4|ED6u+{6zGRR`LhWo%<>>%o1b!F@~&?qh6la(+eKh$?iEL5OzwK{$2zW_ zVZ!?}C=y&3QHpp+I8k?OU9jKCrz6%<;WgkJxUWCun$ci{1LeWNSc#q^qL79SQiv58iAjG{S^*^sepMCQdGgz>3H`X==@^7u952x&;+K# zL%2)ivBqd%fV$>N<+d=0#6+o00-VGwL{^;|Y&96^9&{>aKZKiKaXzt_*xC##y}(RB zs~CqRxk`*T6((7kDJNp!WUrj`1z}XBbwvCtC^N6hbRBt_tcZAVA^Fehh$WD*5MR8Uba79ReB5wtO7j*YWc-@Cdbd&D@IpG{a;sLk{S^G^gQKbgdka4g(7`q6V^CTzC z!y^Ycb4a-ZsE$7{q+A{XL1d-jlI4LYnGZ;%%zGl+azO|(|Clre#<{F4;cylC&f$8P zb^7e2b}?>`Z1RE~Tb9?R6N6JH_}5`?Lej>vs;tW763Eru3GJr;Taf_zx+clq9{(R6L65a8d0-aynJk!!1Dt(8u0Z%WpII;2Xz9v z8Kyhz(tqLiR<0LPC1W@EYr3C=fzKS_>C}HM>sOj8ssc~n7_#S;LVn@D?4mmjIo0&? z%4Q||(#b~3=w#hvuWL|}?F0O&ZoP$#2%4y>>b(iI);kW9Euy30X*)laspSGVEf(*o z55)YOuq$!iV+TUbyvIQ@?`_z)rCfU5$2`AM?8YCcAAcI_d!{7VQX{5y$P5f6U~%vs z`9>7Oe?$Do+O+1NjH0*f@Z(ai3RbIFzrSbQot!pM-_MU>h5Q;UbvCk)+F5?``_&(W zG{jef#}6Elx!sW^Jty&cM+k>mcjb>%Gb_?np_IuZrKBt%n7K6q%UqgEljU%=(VAZY zNgX;yUvm86CAC#F+P|#yam)6H{hpZkW1oQ-31|j*eocoR!Z86*YAE zN>C#glhB^%Tia!X++=7HgU?|9TMsKWXwiQYOT7bijxp^E1TyszBngpVu{xhm`=s47 zaY|A=4-84>wgAzxW-i}J$98RImk7UwKjmgUyP{6D1KP1ap>`Ra9(78rj4MnlpQ-X5 zBuf(X{XLvogII5JM3AjpNk+xqYUSF-?`vXP4g11-&_kfa8W{;Fdgq~8LWVz$J1tQZ zQ_LjmujiwFZ?d{l4YplUjcYB~YhC4F+*#G_gNmWzrg3I&S3b9xGXsv#61>Uu?yX>N zA?_WINjG(c6LIJ(SIri;9tYd0FKrqzlXBZ>DUVJO>-x+coZ#2pAyGqaZfP_rTkyp5 z>oQpdSi1|yuT{?_W8b$neFhvgRPik{fyZH+5#m7ul`B7>Dv z3yWMxWLm+VN+#if#~3w#i{3`0%f(XIV1aaM9(c}s^W^1$hdWxAyFo_dqlEpDR%T*~ z=spQYACFa{DtV1LlhO?frAy^5{9;>Xv zeiBQY{41gxg*m1?u+J>9((PQ?O0HaqF4r)iwJ@cLtPLyiJE^Nh34)81Id6=No9d1;l?;@+{9 zM+gm(cq16y4_29u`?#;3u1O0gbtDzDPX!SXqh=I=<#E7 zv4gAtejk#@9BbrDAL~Ka&qyb*K{r8nU2x}eo+*#wVxs_KKH~uu_8V2-dSwnh{qQ9FsC@)v5R|Rfpq$Ng4$-2x-_^; zkiOJ2lN6?&SlDTNg~!{PdF=(M#U670E1Lv^UJ_c^~8ZQQ9hSB%GhkMI%221-w1Au7ol^vB>eYt^p8Fhn+k}#hjqo6kQ}zcO+;2ljzHebqqc871w?nhk%Elmh z47Z0EJTHj936tNYJi%^kJ?h%T>;~5l==%bEwNKjXpPOjc!C$=$J$n)oM9h`9&1DixW^?y6l&Yg7SJXu$LFk2B)mK=R40}veb0Qyu>b=|;<%oKiySIudRq!^_Ctk1I zG-8PzyIpv>Rcs33ijBROfts+;jrZl9hXY(kQlgm6==0fbB>~+71KXkcow$+VIrKj>=JbEmK%nE2uY3&sIzSt`k`{eH= z!<)5Z(Dw-P!l*0hh#b8#O;_|cO)}9uN?@Z_*;<1P4*^CnS4TKZjDqcQH}~j%#n&IS z8zxUsqC=1(v8d~hWwlbPdBWw=(B9>c?*2(+sFun$y7^ODGClOZ1CAY*{xlPWC_*QvoSi1-MQIJW)c zRY#~GHBK$W?>xA*#E|GIy38hSg73#C;*9e()9(AZA6F2_rE>_K%eeei!@-GtdJ(9l zZ^nc7zKc}Qo}4D_QGL;_r`~R z$>Ds6o)5X$A9!XWXIoXUn~`|m8&31$WZQx?U&+EmJ5T}Q^@yVUd{~+qy$y=Vt?WeJ zP=t(golA%@`zjlCA0%5UqW_VZsCr?ZP#bIvPuUwxRvpk($VhEv?YEnMtoirv6yyMo zp(V^Kq)Yl!D3)?-crk$U_s`%URG7&y+zGp~ek}9A0oj$sB9%)GY^4>C6!VuLAdJug zwlSDfOJU1XvL*uJSvdVs65iN=?|Ixb;!}%@6$4(>J*i;Iy&?Iv)5-V6yc(0kJn$Fv zUIP9C46soja0Le3)^K~Xaz++Tbzu;hK{q6^q7WKZpW|vzpZda^%h@}y%OkS5KCVHq zBNi?}4|X3^XC(&suF6|j-IvVq#j;91@!cX|jFdgfy`h5bk*s^)Q%StaoA#I)uGL<~GPig*U>%?Vtm^x=P-EH*TL4bO4zc%XOf0 zHsURGL9++A3x6})l4!N1f47Ic3JVcg(VA&RNWIy~Pzd+^-B)-u=ZkD|I_w(L;(xO* zZLt077s|kZe)2*fvhVaVhoAo-F^b7L8N$z-wkaV;s&~BKD-uZ>TTRULHl%%Ka z371_<3;<{z-n2TDTZj$QVNiaomO6I4WhVd*VgHXyJK9ReMm zP5YDHs87BF)yiu-#^KaYo>pOn3NS8MV|x5JlJlGnJu!`qt4y`zw46Jb7&WR3nsog* zX-xCWcyxK;?Pwb3(@|Ftz07(iZ_SF@?i1%MJvHSoyEnw*>~?Gek$DclSm3xfdx8Uo z$4fbmKbouvRJUtd>V(u1+##iu+gL%u8bt-nA)61W`rlA{c$OP#j}1`%V2bQS?kzc2 zD#D(bOD7Pof!1z~5=1>p}a#}+3aAyeZ# zw&0ol0$2*r8w)|V)yu)DCq@5P^tQ(vEG+Z4;YHDCadRM&$D#N^!?gUvtS#e#yVTj9 z8Lytk_}-8_`SVb^^`bq`=D~RWN!E| zcp}xU1siX_S2)^a(2$F;O}=0ezMzr+3HX{-xnlPfgUN=Q>zGx4%&epe1yJ4Z+7h)% zk!}D5Yl|y=%Ii;(O_?C_(RAXc)uNU^K&7i7z;l2>=>ZDA(uR>|HhG~i>=%7?brnaj;W`^aqlarhx*)MH3gSPRRJ*XW(Vdx8&7(jIYEhV zFqBtJ<+=32e%4(^G}L@D3|D0b``E>O09N({LSQI|6DDg8ytT9iZ8&OodXr0xyE2xv zN>|4EG0coHXoDf>guk^+bVT+?`}P&4RS*QA`@Uett6q9CO`+AwX1oVHOTsYBAqlS- zNOes!ME73$Ni*=`p7r7Ju>cKIN3y!*oMMK>=lU7!1)`Z%YVSWtzZmLrA{bA0hRV`k*8aLNEN-@tb#+m_)RqPNIs`W3< z+&0}=e0W2kbI=`LtfQwZWkij_q+*5P7RA*S+4xFTb(4Z57ocWII96>y-pWOGBZ{CD zOW8DB)h^@)SB;49`Zx0i055aOjTd5h8!G z!q&D}ag12Si(f#l1>zQ_o|TC6?YW<_Y^3wGsd!yX<2|?(ti6l(HulNg;A8`r5VuFF zHHJ0tpsdb(;mV9{WT76$4{%4VNNS%fI??)T*Pl#&`SQSr(;RKCQb=B5dH|oM+&ZYk zrc-hgTsC6now=nLcofadET5~#mDB4-I!G0kGQY-3bTorADBp)3*CSM?rwakpKltZw z+(}M_5O+H4Gr5im6rjVyA*ejbZkbYZc{3c-z7%TE^?-l)#|8|_*X0d3dX||(P;d}r z(PxPxEyIMsNAlMdSAi@ zh|P-b#i>c&EQ4afI=zZfsm$#_S&h|Ax3Wr_Qg|gTWg9}=m77oQT;gjMrs8BSCOGTb zVnN`QCjD$lj-h-*n6d~qU=mvFEOlKNK1wR`&LZz{S|mmAv~$HGNhhz3IiQ!wpUenQ zB}gdYWy@Q)Y!NhOZrEaybWj=>)W>j|S`bSZF;&dtpWncaMSpslxIolR7w_dSWCjv{ zd!VlX9LQX0t)3dJH6UJ4l`)2p5eS8I9G*-ElqIbuFz@?gYx)vZs5M+ics3{Fju|fg@n2Jp6 z^I?nMnqj}QsU$KZ@E|PMRb6X3k(+R8PF>-wJ%G$)P>u#3+e@vL0wf=w2HZ{_m|_36 z`A1X~w(GoO>b#58`Bs8uN0dqa5&;HOv_j$}Yvv{?89CGPSWnFNqZ!Sn{%6h=JO(ko zy~eWBh+ks_X;^DyQOrpYqHjeHfx03=AE|kcFKxUl49Af)(Z{!uI946SjH8f|ikPUC z-?HH;@-C4ueI}7Ez}&2&oipCKL_9s*2o_3nSx)M6#>njQ1-&J2uO}&>B{uATPO5?4 z`4Oe1o|sGn?WJ^YusSi62;y1)j}d6*muJ$l%q+r#_M=J*IF)2jiTz|{><(e~C0d4O zHlaj4rG*pq=#8&vx3ep}Qx#%coqA$ho_g%{!)ikPN1Ph}^PkF2?+a?XFS4UgJq&lr z#b3QVpJtWQ$z+s2*x2X{!5}#tp7iO?-qA+qbUZxkP0u#4V7}4CXn`la?&BMG?%udr zVmgR&h#2$Ec-Zeh&yFXR>%8}6+3K~&2|r?c;6-K1SWnawoH$R$?W3ZLGO(hf^M+bS zycwH?j^ChwMd96Z%h{fa`T^}QW*5WiJlH7K(6b=6vQRKU@W|@&+yQYx0W(Y zr(|S_xmN~XQD05#{D&y94}Y^NR2iW&szvq5B3K>Xt~Bdygb7;VGH_YBUVPz;KV-bO z!!Rrd-s_H3U`ooM4y&XaHp1sQ)H@638Oy~unPpdye=vk9l0wi&p1-{3PrB%!uLy6`uW(7`r!lJpiNxbZ)V!VzbtSo`{QX8%d>S_-(<=uKY$ z`@rg`OkjrYn=*e`m7PdznU_O`1eXte!sXAVlnwEc3d&m?J7qBx#nMtRWnqhP%Y=r7 z+-L4I2h~YBj#@*-xRH&44Z!uC(M(WfBh$QI{GFh`?>%5%a z1s(qfaOFS0MfkFD4_bsTGyK^!{QrOc{6j=6Gev5(d6=-q;X+Ipo>X+*!c3ZCkG~g_ zolB4TGjE<8oyi%a40ETXaXzl+EBv*W*o#TWLo3=aP(yL<&fvD~T9*GY-8(p)o( zaxrzeyHrk=N-|xlN$kqjfP4HoYVmI!VIB%CSew6j9#Bi|}5E{RKo{jtM zQQC=sG2nFCgW67LI=;Z%cV)-W@sj*NQm5uAX;&$ z-~|c{jT5|h#aXneNYeCc zBU>dFo2Q3t)q$lAi~vtSu)pH`VYpJwkv*kH<1Zb6MpY_o!Xu=@Hox2YB=fSgu7`*u;JGg=BO#QsbuQC&Hb-C9 zXf&}-<@mVvSmaTWQ z{-pg5Zlp+@Q~C5}ta;Mgw+gpKnWlAk0ST|Ni%JWqcnvrj$mv0G%)urK*9;mSfkQgK zu**Pbp;I)>bf8aY6jp<~9Zih)XH5XdT zP=pySesa`#IL|c5wsCYNamIiX-l1*{8}bS2zl>*`Y#KpdOCjG@P`+q? z>779i+B3Ke6@KXr`n`cpO=e|LFVZYZ9UdLURJ*eXzh|<}EE1^|8cZEqq=*CIoZHNp@LoT3`_v|aiprBpBxxtJu1Et*MEaChqiREO zQO4$LrUDw!=`VlasuU#YSpA@|+nMH*;hDOAO_z}}m(0@)cPj;VusJ9a62fR_C>o2q z7?_zNH@IUg?jb;KN(bm7_W-5*Dl;`Wo~3D8N_hRmHY{#Bdii1d2o*%=pMxh=@`M-f zS71kX53l!`z3qzK$lO~f!Gnkf>2b&O_FA}NfM08e zdd9XB+o(`2H_I*+)#G_ijm*6TP;-B9*ba>z8yl6q#O}D~p-m96psJ+iHbqgo1&{J0VObuQtT4S8l8QPn*%La^ z{*AK%GOY%EzBmpOv|XI&wN&DSlHTRsH&)7~BoMY?9mdj|n8d$Y&NlLPH_JQY-Uy9v zVxjBw6QT~?rP!k+!irZ^krzPLVe~nGkb1QGfUAH#;0oE}p^#YUolLR=$stVt^2|g3 zAnksQws6pcprrK zqlN+`NO-Ybh|H+aY)GaO;gOp}3vJVsCaqvU!8C>>U8@U9OyHBFC8t71?eNYVTkxh> zmc!wQ`hi{JK)s53J_dKhx+fiTg#W|athI(xUCLbfi;XT?9N%w$ppIA9wseW7jiwHFz-*gMvnCbWd&ba$BLgO!Pp zwa+vB3R4Fh0W>weBQc1oN~%NhI_A`YdlB)BWVa_!27KjMY_gL)iV@$XAw`6K+P^o0 zBSCz4-z1(Qa=2Sl;OFSl*`=L2|D6oGL;DS>9>jhJ`YO=du20UqSVM|85mL!`c==-3 zo%S<2k$NSpWbTneUN3J=&(1FQU}Udx;9O)Cx3+z!L-(@-OPQOSoUYu@3_!3GuRt1g zChTG8XCX|??RhWnfpAio$xzJG>r7F&Mctc%mf_GT?-Xq3m5R#WR-tT8T2|Datb!zR zrEQi?t$Wa#{9_KpJpq=Vk<3eVO#3F)()eR&J;A9%X7hxyiJi5-L@&N6!{DOcfNo_q z_GC4NCHi*{`0e;qmdLJ|pAIi-J%$MOAy=2?DJKI zJynlwc2))tm$|M0OMEVGTq~7aNzzQSmOL(2`YPMXOL?S|?A={5^0FDV1F171B+<)H zvkWhzxybr`Zb*tUm~EBG$oDr11wOeZ#DSD5!=9uMmN+Gi0`3yUVr1Z$L9z-7ff1!R zQB6i$W@n>GsD22X_GXQF#H&~EFqrWEreuZ0DoS095&_aT4a9*B>_12S>6kO1GYHcs zYsUY+>T&t&e#&>P#|TP=cD~+3ixCks7AX_*b-{PG+nv+Z)ibQXs(uC2V^wreVI4YS z+z~qMN$0e(nvMCpYGGd+irN?LaqJSp54MQ)pjLs~3oH3_>?xoK3}76BSV!3ybv9zb zf_mpend=3uIS91%o=hhHd_o4j?}u76eo$Wt{Vt+k7US&_1^QiVz)`88`Z9Q3&XV&_ z&bY+F5@y_1cfKa;y4yQmE&+~2c#p<$rE}Wrcf~orK=XMBhZ)-4j;DRt2I&f-ihX~Y zzEBMtRrYgn>KMbT_TWUY4(K0NJ_Jy~Mj(eSwV@#t(zXIkOmXMvUJlx4y$tP>&~H=*Js^sKczd}nHW_1=B5Rb`^-$wwS)r8OsjJyN6jxB1vF!oN zB0o@I>=*69gt&8!WTHN3+MI!7EO7;8ZPhmE>Z%p1ia41K2Lg_vIxj0Q#17nnEaCQP z*?{v-ZZ2Ze(>sL3kzoC}eX3#SGkEANZbJ*CCZC1t0-UK#+I?V7j7}>w$a0I$t`saa zONU@DVnxBAi^LCWRj2ck3Sysg@Jm>pGVJ!vQWO7OtzPY&jfP{e4n4Q9d?5Kqg`&SJ zE9)C@l9X>DZ82NTE)K6HPhG(itX?n9bP_ZWd|>(UNU?8-ixDsM8qfG;ur>qW)3Fysp)Fv=c!YuhFWi< z!?Y?ni&vsxQvWGw-#7KJzW; zq2Y#NGvC7Z+Hgw_zs|Q7r7;WML4vj5CFUx0-tGx@@4Qell>F1mzvUFuI;H2sw&^@Z zA7n?N_5EK-|H^q5j&u0~n|Uc}dJu3lv8*0c_K!Yh9aIgfrS^y;)*o!wTkH4Xz@|wU zMx>t|$%vxu0Pg0k`?Q^-U^#Dnk0j=8CS0ELwq(eCAy^h^z@f>-#<37x7$!1r3)ZTe zw+X%67ij>P$RhOxV_Iw;G;3X~8O?4NYX&!fg{Weo7R;`=SPQs;&fA2$*DlhE+LmW; z1OENC7Kml!HSpY$Xexqy1Z&Gt)RMhi6K9hA$^%cdCuZtMmr4TGb``ZRUEu{yT`t^V zM2%I-+Wa68F;GJc$N7h>FLb73uKZ?J1Jf=mq7U@8N7EduQvG+^xjcEvy(3u|h|Z`bpLKfV@ld%uzq zBl$Xl!~0dVG#bOBX6hj>JyAN=g68L83!Y>hYXKQ?SlbfuBXb#4^p7xMJ;S%3SoQof zPOKhs>#(AA3JPnwOxmu@9hLa{iaq^Y9(!-cq zQs9CfjkF%2($LrRkg^cC`nqQ1RdIq{Utf2Wos8XQIw*qc`EH;#vb2wtEbsRQlbTGh zpcP39U{{RxHEJE!e&eX_c_wmuoY5zKVlZ0FhP zTIG5LKZ{N~+3MEXw+{v+7a+Qm1L1KYa`DU!n~qly1NyNVd|>Q~ z3hv(ow12GUqkeC)y0X5q_S@zkjHysv6V$|L(&Rls@PI}SAyg3krpzAJT#Js^{z%4h z6g6SiK(&IcMcuaOq0G}=`;g8(vjmK!9EYvdKng-BjQy#_F{upr{c7zBDFX(>ZuXw+ zxcSCW`zY(z`eM_~#vA?K(FVGutbfe8!joK;RHdFg5!6wuZQZJEaTPj(Rx?!xZnxa% ze9TR?&Dthc3zTqFr*^(|hw6D9ZbE+>w)nR$YCRGE{~N^C$7CD$cfUP2c|6H~zxuEu z@$#Sl#m4VfZ9Vc>h=>?dAn}rFM~G)5$l&ttUia~>yIXf}-r3sx_auLe4#-CNO5K%d z&<9MPCH^yCZ4Cl7(^NWK)!N3JJR9d5xtNIFV6Y*$_@{i-?qnOI@etT;?kHk6$Y9~T ztBKx==ZCs~n)St=A*KmHBfG`>_w*@$|6c5$8~^#&`}eQjyxxBQ{y!TY$g4EEYUQ`z zR%nh^s`T$4f2_esy;GOfvYFnM^$oG@k{#z&dvdy>5hS3OO2YqJbT+gDUd#_PBCQj7j?Mu7dJWnc8wWI5aLo!Co%4hq3a#yf(xVR+T#XL?mjU z(}b=t8P<>TVShTw_GCH*zT#w9Ys-Q)Tvt{L&*i0o@v0O)ZdJj~vTninM9m%*^vBs5 zXJUoDLg$)Ee7IDsHj?FZb#T*sHW*$E4ld7*hW%)LC|COg1#3B$)GZ(uY5x1FxBbcBQuYYr>b$h=rPZRfR|>eX_pC|z5j{ipSV_Xn@Gn|s^h-#4#b?Y}-0&8B)? zT|r69YD3l+^}O+lqEuB6XV8Z5^#f=?6#wlHlG^0Qv-THt`M3BLn-`MP2c)!hf!oOt z7!6hVAg!lZLG?6g<%T0_6mpJZ_b}Y`XO;Sd1)SxmIt>dSQ$U1QTmXl; z2Xv%f<%#P20YL7zB#CMKy8Rd_eq9a|pX3`jDmmC1?8LG#i8AeIal+(MXaR7J7if6(o4r$LK<&{1GtoCB&rrE7k-@*g4znei-u z!X{vX=z$H;+A2hbz#6DQH=Ap!7fcQ`prk;bDvtmF@yqq=g7hE<5DfSec<%47d0WV; zCednT|F=(ns0Qh^z86772LmdhlY&N5PXL04 zf8gVtp%5Oi`JDEFe)~jB@CQ}s19>GK3sF?OUI8f!_ONPY1Xc-#NVU}U`1|6 zIWrc7zIkx)TD*qi`Gd-4RlYiaIE+@->9;8|!uo`%6rJMzo`B@F0Nj2n#>2ciz9d$02P>p{bN_N0KlpiK{@Y=1F!A1nQz2gJSZL?{a4Lj`#`O5u>kf$I03v_vw};sm2&wLT zYPw{i-#afM!@GQ8mPMec6Qa{#C?(KJt!ASCfSpVrRm9)~)n~u~Ue*uye%^k6@a{!p z|9N!b6T`NpT4sefO#!@+zko!@_58GbCSS?jR(`WS9hGV- z`fP4)-nn(F!oAQ&BeMc_e?>s6re2H&L%z; z{qO%F&!1P%vvDr?;?)N?6$Ry2AN+RpB0B=w5N8&TEH>nqjp?8Vb=!S%TyBAwg28u! zz>8}i2{O$ggI}_=uMr!H9r|PL9*jw3s7=}@>hvh6cCl8~=3WCg&Kl^lAs6*hTV1#{ zDX54eUJXv=>SSLVh%G3ufdw7PeYb9uKlO0Da2L>aK0Ol5dxDo_F5F-*yI1QD&uSz& z&)J;%JA-&lpfEB>EDYQ@I}v=m23LZDB1tTP&b*DPzeUA$7_TKZg5{@{3At}!cu7EC zUUP$*c7~s)3^H*rA0F383Rp(-LiQ8nT2D=6awtM?SbL@;HN-`o(#v+$=49|H5rLDvo9BAIBhO8k5A5Lc% zr6>k^1K`D?QB<%mLBu`>1)5TQmx57gge!mkezh|^I~xwb(eT0VSI@y2vua-6aNdrG z!wJ6l8D4x_4DM-f@pUFC27CvANs&Q(c?4vsXO}^Ya7C{@D3?{mIid~W2_8x_$K&q#9K^GUDs>9QupfMv}aSPqu3?2XhZ8X4lxPjg!& z>~p}94u*0!UB*etQ6h^0ljHC*1QGb-WNvvgRHH71Q%LFqKcD5PP(g_>UYzRWVqR2T zY++6tTtK0{Fnk!Lv=lw>vc%|6&$|>UT53s_W=|3`IvV%RdLU;mW3L-cmq2Y84L&@s zjoTMXQb-80EwKz%<)^icqiL_-?G2;{&a##dP(V$+U0ej0x2?&8P)%K-xUfE%9Exh= zEFbolKowvaS`r>ld);ofB+bxqySIeHH=GuLSSDg#mqjL8Lm<|Z5pS2a#V_r2D#6W{ zW4{U+=5mdbj+fBl)YJPSZ3m&^rPd#w^yZZZ0#Rxi=l+G3A8)aYI07vyE^}@y%O=5CNEkm0@lJ2skT*299)p?$a zcb$Gu?Be6|UMIr{cF+R02i=^+U^g7NxP3?*Xm0ay3ScaDcJpX!3D%h`Ka=|QSM%wX z673S_I2Z}Rx_e`J&Ejk~Ma?ES2`;f+JOE%a>g6>Gv#$1w{aGnA(Qa>WnvHvtB|>`g zy&%nBqW$GH`8qV`bahDdASO%@E~KK~)47{xK9D@fU^mrZ&H)7h=JlN?wL z{#?)UJ9C(ly`;NjPi8)d=E06R==Mth=_Nj0pOh`H6SEi9C{G=*lRfW!$_|J1Id;dQ zmfzCF6i+XH8J_f^qYMYq<@|vCuVHHl#pzU%{E6Vz5 z3Oi?MI;5*iOBRRMCvtBtSB311g*09u1S}{*+_`tBy$}lt75~HnW%(>6@BXyyw{V}ov+ zSM-UEf|~#k6|~Pvt2oO3G4+v+Gl74N>Ztq)R1s| zl0m>am+e!^3h~R!?BY;SZ3^!9zEp-3J|^0x-(dx)PwxX!3&FK&`i;H!Bq+&?V5tap z1_k1h5HPFW;5h;U|4)V#*bkEgTgg@8eDEd95j%mz11|$vMM3J1Bj`N|TG*H1#Akwu zfY^NX!PUBW9@gv4(m$$A@e_V)RreqM)cm>r@F(~rer|`qmi@uk_8Wp1yXE?;ZVE6r zo7EHX&q)(rZEYt?U$pA=i&phhqh9~iuu4~Z;zO@h?bPcXc(Ku%XLP2YO99Shv)U8? z^dwZ(lcxg2r`0pj_gSO5U9V%;SRjq0ZOXVX+UZ^?$MS-qaYo6{DH<7zHO zmA9(b#Xr|+MB}Fnis`90`#YkF=qqm^l>0~m)fb3aK?&RUTSOl4yZ)&vzp7VHM5PnI z?qvf@er(M|eGC0CK%F<*@aiZEn)vNw3-RcEyCASPn)Z;*;w#i z--X|v`t{}-hoGK@Y&bSM06uN zY+{ciO}YV);r z$lQtFHk!$AcN#!b-q$Hk_wDWKWdrz;PoVg95cztBUq{=?URlznnx~2-uro1e@z@>` zwoe0WFU0EpNB*c@7hCRi9O#BW-0HqS3jFpePW0Rdz>@!^0E%bz`ZM_Ld6^piEW~H! zJI`13pk6-IB_d8?^}KyMSoujlM&?x;2SsR?Ys|4M7}e5U|$?9Q%%?zZ905ywvMsa;fxqTaA% z_uBIO&xApqlaQCD&e$jw}?0(>NlG%wRL`L$K<4C)W*mH_$|e!CswR&%Q~ zM`sT%Br|^5iE?eA1y-V*%0p$r!Ijh=zWhd16q8gRdZ&!<{KFEr&jg;&5G7(GGp`9b z2y+2gv$Nb13~St~7s%J_dF56^9l#2fpLM>7Z?Jm4Q~V^wSD9}&n7Kw+tDl>&X{!^7 z+|#iIwJUAymS-)@eAACiNns5O311o#3$bmzj;BCYm+={g@@0D-MZl&J7)pr9ia*1W z$00O*+AFbt6scX$)ATl3w#ZE77O7THn8&K3-mTp<`4)(mCHgY9h$0%%Kn=vI{Hb35i3Mt$UQ;O^ z%UJKbe*VV&9{QZsu%;udc% z590hh(ZEkzMW?3364l#Zk>)SW^HZ}D(_=lHgDWwRpU%eOL)lcc@ltMk%u2bg5Wt?U z>FB@F;#GO~2!@;XAj|SQZq=ukS~YJfYM zX*Fj|5mZNo8P6RamR0EnddQ@tkUpo(V^}UG+!Ui>r21Rw6QV>+0c$imo6|=1LR7zK zY8Bd~<#SFc>8JvCn^pnrhydpwt9)e5bAQ_pZ_fLzB3_@Gp7cUc8#NuVkYpEE zw;&Ip`Blg2(M(^EZ2K#6`VDJH~L}?A!KVO?q*QEBk1D}(nnxW z3Gvw)U2CYC|XxSsc6)MC9jsgSEfQ*CB<6Y{B7Ns-pqA`66` zl`k>-fzi3Lvp*H5pDB(X%torU*WyD1wP8@{yb<;YCY40nr!m&FesoMjFUt8BltPu`AA zAFj^iNYj=zcCJ6Ec9}kJC~`_uNf~{UL1cB>RGY+kp%^}|G&ehIVz|e5B3?_v%Mcsqg?z8}lgX7GH(TpCyRG6~CrC7uabNjv?q? zbE5&jZnU7)ODQZip{gpl4-M`@|Ie`%I#d+GMknlj*|GSDE+Q?_A$Cn2=p=ZbPESf3PCV}zk~`e&@1Bk&hmyPk5_v!+yLI3*n zpFt}U9+K$(OTr!16Xj5k(X~qL1`QjWOFyhVw(lhZU2W>6HE#G^u2oOkaZ`MZJ@HOsm(M>WJ+4r87HxIbn|B;)nGDnJZoWWm*ujgnj?KHi z3ad;Yvk3$OrH{+(aFLVJftSpBfm27EuhXd%_oqbI$3j2mY%u1X$hN*nAJ)!iNayah zltpH=6O+u^Z}G&{bN%BD)YV%}UKBPVxEx@&LhV=;9UN2MvW4~Njr?O zEFo7x2y=WTZR*{)+j70o0WPhjO`WLI_UzeQEd8Y@KA_AO^ z9pw*T-hJJXEZ2H>bBA=l62Zm-ds^ggJ?|==P3u7jv5-w{aKHpI8Bf2PDcBcbPlPM< zu>QOw5Qa_^gI!0(q*lz=o%9K!fJ7d;9w*Ni^bx?lYzE7giljpsgYZt$0B{!V$oFO2 z*Q39bdh~R-T-p~S7N&=skB>sIHhk{wPDlV2>%=kcDNc1t0dR6g&X!OaV8alXhc!zjqY#zsd?&!9tvf4bhA@o(+Nnu zP9K(){@%uOzFY`dq!!Wz?sHWx=Il|3k_!GAJu!? zg50+)P4g+=G@Fg5C`HeVxHj#2D+ivXmZIWDdsofr=6_llR>m^nD+)|vp zNH!^$jbss<3#ojDb=(f+2cwL<-wa^9A;blD(sR0|Fbol^R>?fV9=L=#lIiCR0VJaEj`tfPIq!`b(9cBXQwF zSB*6}Ovl|aX7fueNk(>m=px8%l$gF70!ueY9N~PKgqSRkbhE}0DdU`zz-Oz)*>VmY z^stCCdg(TSGb7%lzoDaUEI0nwa{S*dL5OpbPoTPvvV7XGJii~`Jf>q9yh=*;Flp*7 znBIZ~Q^1heLi|gkZfiQ9QEybQv-{w=Bz$hIRT%6Z%>bHpFerj8qCn-Z64}z(^S2@OD>)KK3ez4IS zacIL|Ii4=8ii#!rW2L1&t`>wMXAdm=?d3YoPmeCQcMpF4c*-4 z2L7XLYJr`HgDjNv?^FdWxP6XTDzzQEdW!h$W<=Jsc{TEdr(6MF1Le}rkL zo$N96rjtsPUHY`C%$R1%?1&(R3=?4658^JYb#?ctXC~$@)CIv#tadGlTRdk1)Ny~4*on33i zs0_I?CZW@gi1WKQ^3gN$fRH?CrJeiIZd_^o`275Gj!V6?syl_>vFz$~SzNprch zBXgR6vd)IIMcx?RKzU`OzCx%#n0GZ4I7*H8wg4PK9;{9ovTxJT@ne&cP_ht|0(y2L-T6O>l zh|@jK=xJGc7_*Pp3RgJyTaERXK9I7@BBmU&FNmi&v*gJ zxs*)DD6?{)vLpbNY1u^b@wfP~3Nz{M)zpzH@|eOaG7ZQwH*-_@^q0Dv*=kj~ry|#d zZwZS*P%Cgw``dm*8BKvR#OxgvFIG>!zWqx&(jcXKn=cyUVbnIL0zhl$xGUg7_ZsYgE3xdTzDzkT$#*sPkj@TP7W%D90BQqjjAw24SjRQ0g|ykeJ} z&EM8r?~o=j{Q8+X$nU&?!C@QEF#X;e01lNOJxnD>i2wyA#Os^*`xH@ej=F#|%ttrC zY>L-0rjar$Zf?Vodkb^MOc50~ccAs3s-L!@4;(NUxz8Ge+-HzSZyO4TA-sm)hVTUg zOSj>mho!KZnv9oFsspWd#k+{Zu8ng}T+~%68PfD}* z6Sl1LUjFQt#-{Hyp2GXPNS5TzDJym$lO@vSu4$xh=Yo6zl-q=ZCoDsZwD=in;IU>4 zEe89)nqJ$;F0j`Vv8}&=NrB=Q%@|mhi5;~~6U?bDP^Y0-h1fp4eZszMV@<43!6_nNdu_M6{}I;k-agL8wy7$bxm3#_ zm#&iM7$ZdAFB-^7UeO%Cvgi0?BWMPT^_sZ$J~j!pnkrw2x3ob$KW!AFuc>=QlznN? zDqvA|w~2bSkbx5RCX!7P{uH0yj;ynv>~%({{eoi|G(EJ!pF7qfIm6xzuLBuYEflkJ zAnktDo5fqTS)9-v60}($FP1k1f$AE|O%Mk^5@b+#BGVGn5<7rzO_Yn9wByxZ(uxH* z37{V-hccJ=6+|wxoQ0r(r7JM)JnWo47u=8it9Z zhU->?lI7yITQ{xWL`Md!nPW|Y>}KOfe*1Q*uVWheh}imysJPec;Vj-aMyef)#iCK? zklK4Li2x@GB{{<8bt0n;N&t*aeBG8Z#~Vp7Cjv+*_cxIo-YSu40~7DyTwXLjBP_Jo zK1!3L+;HE@mLN^B-xBht&OZFwHB~=i%loh3wY@63+@ffzMRAM%xQ%~Ym#Xm{>@q_l z88pqx%_Y8R!lBitrCa^7jpRmq6DGOFywaT=YhxFX?-N5J_;>41af5hC%G1O* zB_3$E`_YiD9QLagN#`U=9!Mz9h#?FRusaRJ|6NPqnMj5}S;ODReA+pZ=me>7sNC$I z$#r^;V36a_&6Z&iU5iD4TcXV(kc;6;{E1dllOWuM^OTi~`UWB&3A`h<2Ya|vYT~|+ zHEFy4gfNV^5l?TmY4DdlBe-tD@LLdyzx~VD5=236MY;T!mL;`{7f<0R+`2$yu57^k5H2g+p{I>OXA#iWPOW_NdEZAqQ~0|JtAkCSRd}- zhYj3LPKXJ&QeE7}b+s>ft3{y#+u3>0u;e(0M07Uk?aJMX2=*sKu&+G^OX9iMkO={A za7QNskh#7LA9or>JT2-T-Xlh`Za z!>xF`VZ-rE!qLM8F~%A_DZ``4iYHn+G$3z9Mn)Z;x2zs75RyLPZj<`o!auGzUh**R z$_jM&-Bx?(bs1va1R@qc=#n~_^N>2FMB{hvYUkLe`bw1dau%aAO2RWv>_e}KK`tczxe5n2-_W7d$j6|h9nY9?2omkCk z1mGU=xzWc+wlS%irrUHtz|FY9FOD9HUwwIur#*rA+ptOeZ-ndOP@NB+0s-ujlA&eV zw&wS~43L3)Rph}f@9zM$0BDkA}(iO~Z) zVHTyp4Q=O(BzoW)Q5oq~3W`z7FRMI>jIsKBJ7~%(E)}sdTd_nf$`A^p_je_>sA1eZ zrAs}QLx%m<7EwO#D$f(r#5QqTi4-2~DtAGX{d*+ikBlwGf*7^d5&-G+prm)frlK_ECNT@h{V>ga9!qX-0why+nOyog*?GnWRH$ zCo%<{gsxUW${}Ua#ylJont>il{kx!l~>Xt6f(*8(!Ys_NT zRDXL_%gm1C2< zPp5KG3)>m2fL-!`34sJxvT&QhDem&|M;@g&=yD_urKc~|pk=NR**xtz3`+aY6!>!6 z!i8j^(kw4p^)>;?X_H}ShS}i{T$?7k=i}2jk;E5}9jwzVs#~gQFfqQ2u1RUm9?RJT zR)xyQFYF?h{0MMN=It$I>$V0yV3#xB68K-BN9$O%U^PC_VI$_En4ZiYw6Of$9QgKmG)Dknc;bD&}Yv>j0Y4L zB5okFx~Ey*Q*t6T%paSP>7sRG%2{28Q#*4LF&eQ)+fu&2eSdFJtY=##TayvR1-=Y~ zdeg2tF_%aWC+R|iddh=j!w-BnxBE#I2F|`2uFzO>u~kZflpG-xk`WP#qigs#>{X+= zbW=HT$zvGroP~0l0eBp7z?=2&G)uApkb=R1%9;H!JV2G`p^VdH*=){yTM2mBPo$a9 ztl^j7lbIkpBE2+_3#6uI85=={i(FG-*B=y%q~cjOX$PcugRGV~AkMiyg;3Y{PEsvO z4F*@??QnkM1>{khG6V3%@4K&*0E7FC2|^nyjg0~_(F9MSay5{q$7;Qf_G=~JIq&&9 z!R1ndu7azvs1tcdH^Ln_vL|Ynm|1pgQsN~ZmJl5XIw>B5#sEhtlUZ2#458dFanj`H zP#)XBTgX1QSssKR8`@?37)4I_?MNNfb;U3KsS$oVv^!;S;Q4h*QYc=cJ`qFXQda;< zDyhBFeC8D`82X#mR*7lk@mTP8+;21oee$-(;lOrXvsW(iLBj@))Xr?Uz+HQ}S8suS ze_PMe&Cn&z+Vv7*Rot830*(s~jLNmMAy&VZZLcDkmoc{&s zBBZk>$Q3U~(scGtyNh+|uOLS5CzK@QA+=q94a@TYqZZ}CP4s$rEMC4rA57APiO)ZS z$o$rA@E2(Com=i#DA#s7If70)?jXA`$V}?T@!i|{F)U8-J8(yS+Q6arf)5|*!>5J| zLcakpoHblv2MvIB=)E1`+s|GLV{Ad-5hb_|y%ya}8W^ZMZFsYA-hgSiXt+cC(tt6F z4Z+3k*9M?>({AG-DEUDnzq3mgmwS*O3W-YYGrKCX>%QejB6@3GfE2cUAJsE2=6g>#y*7(Vv`# zv-)dn_dwoRpccYz{SeRcZ|=7&8riP@jA|i;LDj&;ERSnHqcG&Q-eb9 z-l<9GH_+B~=GWL0M29toelJZyc-YJ5hC8xtL3=o~ydm$2%G8HR1EV9S@Zobqr^yz* zoHx*=;G*FT{7VBze%Wy5Yfn%hPS~b9jy*wxIF1_)2UUCZn+?R(Ew}x>`fY0ePQ#ny zXZ5=coaB2Ahg|pS_ZvvB*BcJC?bSCLNNy)h57N^nLfUIO)UsFq*hF&qSw1rV1y_VDOi~7eF_WP;j67q|BzlDT+)^f4*qCRLLmWC~F z@kD@bd-X3ghRc>m;9pxf)the5&+1#$ z^Np6rtZufD{BF7Jh&iBk?zFtQxl1^@=Z^TGexF8s-5mh1`Cp;kpA;M|c(?s4j$W_s z9gt{tt%Bmur@%5dX!OHvXEfXO(Ke3ev-6&Wq!Z&lp4D5h4R1fkWzx~x)(&jqyU%SH zL@kn4o&%N-)V}v4$TZKMTO)W=e-5JO3%A@$D7XI{8RI9dw0{M=<5++SQu9sefiUSc zevpiG)d+HK6JBX`HbfOA9?S>mPnE-0slm%TMG)Sq$dsTM z!f#y5X=aTqlj{JkaVftaGpI89*;Y`&1oRQzB^x-sN}Z(ml&CIvTwg_ePY=4ep>$hB z9nb5Z@;Km?5#6N&FxM7XET z0b;$k zaS)NMi9iLb9S5r&w@oW%v8%M$sEJGtX~Z7o#Bi#i#C)WgeT+*~sb=8@i9(%m9fe;I zQ+&@EW&j#+$&q>f!z-{xk3{RD9a7D!@%oJr4X0(*%*38L9&%o?3RB4EA-`5O`raYu&ii@R1JejM2 z-pcfhPFu+?Epgq)YKek`oiho;A*|?DAFvHB|E(Y}WTs$ztH_qUbBs-2$pII*g^69v zEkfE3-s|E>E^C`85C0n4TU_B97e=~#3Uj>!f}Fr0%djJ)ulBnmf_DVXT;ryn#WvVD z&M%KW?h8Bc4hQl+nqFRT#5tCKgXQ1OC|~ETJ%!@0u=r~Wi3b3Q`wWRwMt8{ETFnw8 zIgNv|4|zA`HoB7?5#bKbQx#d1ndj>RvIOL1HYyPa1r=gu(q>>3sqxtx?CW5#@62HD zk?*Q;G~5P_A#!ZVfa!8q%$P2|Rz(=2$Q?Njlqozj$Y`}LB?OBVW*|V8D8sv?20aiz zOCw7eAMVjlGeMw0l`@=Ms9_ilTLVT498r8o)wBQRmzvOuA^C1=%!z+6BS9jbE~6;KacxG&mf!3}%;S0Z*lnhw z+ijuSi#U)~O(dw=ksWT#PQ3_KxLD{WK+zx!>TL#fLfR514$l*XuQ%zuXK?TJmcLx% zEncpDUM}){J5eOsTLzySN#s0Z{R`gXn1bE0zlWf|HPas~UM-h`{osiUhM7HkYD~EY zFx$YcHw!$E=T(0ymsN~3sSxr}>_y(vxiQtUV}gAN8Xud+L1w_iQhuVz4xb&j>OpI3 zrnQs}soZ`7dL>yq9~KE& zHiXS5jR3AM#Y{sB4;V&KB~44hz7W5`yTtAWLR$wKJ?8eC5@yW;WwW@A23i2SJp{Y` zoCSFsEXYQU(h9X8f|Na2dC?FF|0Ly4vFD~ zxf0Rs5!+%FE`r5-$(;pwId=2Pr68uz-7YkAzgvX@54+pm3?6rxS*SC!a22UE1O5zt zNEcvJ#2}0*?35^lS&YiDR#BzzB7W~74q4uS06V2em(jf@SO^@%Z6jIXdmpFOATcu$ zG1Ft8^J|c>QVB%m~0k{w6A zU$ZU#e%J6f{Js&$A*3B6g~W#1@O76p42QlCHP8&1!k*N4)7=~^T(F4} zKQ94H*XaQ$)LJI6h5kc1$oE6TKW2*!K4vwWTf~j?_|L+n%?0KI)3s>W8xn*3Ce9&B zlM+FwHK{?}9mjWEi`}e=wq-$9uOyH%A0C?mU6to;u9Z53yZ6O)Ueb~jdpwo&{9b=!ID*1o^Ny?v6twCuQu zqV}qTOHS4JLdqc)0n{cr)BO=!tInQ(3VFFG*uLb9B%Yb2bcGv6I51nLjy_6Nk34oX}PfsEFzf>@+biUK+&d_10SPwnx;aLngEriW> z0;SJ1-WS%XZO02p1)1q_q|-^E7|TpYGoyb`tmK7NQz(7vp@dzWa3c@t2NPaw5>CKm zjR&6X=085+woG^!Q#O)d!q)w#YNPzGmBIQtR_!Xim`gg^jB;r2r?ki|n!vG${fCVAeWY5ASsx5z+>sOl4` z1(B^}8KlMBN{vM?Eu<*UrOLVx50kZAMmSY8wW*polL_WU!kj~l<$V$bSddaK($5qK zc3|wO7A0~j+ePU+fK{Tu>(Q1^%+Ct=pKJs5s9UAs=u-eMpG2W{#0oWEfIPB^!v%#~`%N{uOh;eTMITC-QGHGQQfNB&CP9(gD0IUETMxND8ShSP%P z6BIxxtFrl7#^j`X$arb(ob&h#NfL}ZiXsyDn9a;E-1uq|C?l4*n z)9i1-F8r3&*FVJ<2hLZ^x(aup`4f^*nVUqHcv{A$ zb%IG*Tw+fnH;5eXxMKYF7(|NUF2@|HL_@F->u`oj$WbKgK*P%TT*2ope6AvAwvErV zbr1x1@VUMY8lzo&Zma`8w};RBsD?hk=O)%Y#OD^4`Gn6$Sob%4ZsYsU_}oE_;W0jU zk=&i&bBg6p@%b!T$LtyB5&rB&*xv>Hx{R=eKK;6iC}YQfeh%TMVL`6x=MDUXfH3?u zj&K|k`gO~l+|kc_>f|9Je??F*nSWnJB;av|{SNQrJu;UM%(FrPA)<8)%XpmXEFs-U z`Xkrq+)KxI#SneuW=QuY zF?BpgJRVUY##W>~@{dx?Gz$OtR>mUw0o<}lEH z&;m!)CitQsf{vgCnIS*H)6uSh&EN0|InhM!ENwnhT;I2I>+tE-ybL4aB4+u|7uO{V z@0n*dY%^Ej`C37N*PP@V5hg_JE+WXR;$N``I*e7wN@Ex?!H1=AgjySHlikz$ayq}98@An;Casbtn{mga9Ney`M?r=f<=9YU93xvmVN(Zh$8RM z9>9cy**GZLx$?>>(Q5RVq4p5{4O^3FQ;kpMU$$^hyQ{5Nbu|y|dRw%O9Z6J*PvnjX zkkm`vVIAExQF~{Xa5eUn@ohd%)og7Uu4Dmd+w@$4p}LlXKb&JFZ5g#j%FaaGlg~v> z-)0Jz+9i-&+)BWyTc*dQM*uk7#o6tzV&+fVn&V%B6(R5TSEO_05Dnx}RqM=K!CFWguSH_rh7cJjOB;eg-x%8AS@CiBk%@9BH27Nz96}>As>0 zHO4U7kaDciTL6Tj2;W%}6H$DeL8=`-A{x4o8z$Zyc-3>}YjR;1>kI6n4EPx>DBY35 zyfc8fj(n3_g1XrG&vk#UdcYnf9tFyWejzItKhUCG%D7}3t6P`&Pwc@;WTawKdAM#X zz?B%D1+*zitb{pdTa!=`Z0riazkCg2spJ=L>Ealgur+{Pmq<+MTkAL2M`as|)QW1) zs>R(tr?SYKtmg=Y*F#vh BG%$#g?^yR^f$u@QI9!|FZ)MT6fWGh89@$d7#J4nj| z$(pl11*IKec>sK&Q7qq4zs2Ww=DAyZ zkIx%b@Us7a&x=*Se5?3;wheX9x9J(oy~%YH;(cdW6jQ)w)(}?^K~&_nbH0aiX#?;h zV)*j}gY?(Rz$&hn(dGLFRc@m#%n{JTn+YzqmxkqHd=E}?r3btuJ03#}N(pa9ufWtN z+c5R}?N6quhi$~|k7o3>;&&YV+BVE;9iLxqgE;aUpWkc)Zhwo<@38!PeBQt^ANU!q zZOH>qy(PD>5N;Sp))}@XhJryUm%`$r-9#3*wgTrd%1_N@8sff=DTK7b=3A?^HNK0%;T{p*hq0Ykf5Lu*a@guWFUid}{cb$5@ z27mCFA4qaR$5B?CMz=vaS!8&{YXekEmz=#_1id{J-9M8;ipc&AnqQhQ(a7! ziv1k`+u_b98j{)d(M}7J=icnV%8z!y(s{E(dfX3DNXkNL=&hByb4}s3goEux=6;S; z)6nwmTQLj@^FnO=qa@)EboLFcf^c_M9c5i0W8&LOH&C=PvI0fR*G5V+ASP3i1>#q% zyGz?AQn9ajiLFJJm?GyVV1tiyI^*Ni$&uZ&g~i=eaa~UdnE$b@&{0d-tw6IfW}i5w zpA|_3y~<8@(9(bd)Eo};8gUuvwydN^mQEF%YM$QL0oE7mpUk0Kt>e8Zi*JhX>uTs2dz?xh&J^=zBG+L1VdDsBjbKOAM!#wX7NBBH$0L7l* z^KAnt_8mUoW0?njR#dvGNL3;Max$rXmNfzZ`R+%F(*2m&0z4ke)I2|cyrya{%%4F> zHPzKEx%=+6a?3dJN$Z>T15xPdfY-LJ>*7}Xo=*#;fga+)F)TS)RMybZX}z?xv0tn& z0s-DN0D84uY~8?*Peu&5G0fIg1k)HqyGv`J^S%VqcO7At_;Caq{dONVdSf3q`olhM z^v3=X=M10&DaG$4 zVs*wXcfJSTGp4zG6QI3k&|1A*lv@l{o zh7`tfrx`O!a1S=V2@1-kG2Tp)pcb)A)`0gs_QtG;ULshxk?%kz_mX&A7#rPIU#y9A zWm-%HiMgR<32z+Dc#nVSO7i!tl62%dx0zUUipN^#=Xv)WdL+5)dmw6gRH-qL`bzrS zZVvCKzVKcMyxD6n(VY+)TXZ&$Yh2!2PVqyAXe+xM=;JS)B2SEF(OqQVM1fhe6rL%i z#|0B(xvlbM=4{G9o`B}9aNNi!d z4HpttWHYp`(Y7hL{&xBxUqRzaHW&FHe+DP%3I( z^Ru)q%8W{mvy-r{HDbKu>e9Os*asbm8sIx#!npdgYH5+Uokr*7>w_pA<_iIX#t((llG;H((S>M!>aQw(yJ{UfPsbB2j??s9o9=Pw>0a_Yyny z)wro5yVb@7NjIfOK*EF4IYl%!RHjQrX_r*s+!Yu*6;5mj4Ss$f+s_my$2P2^qGX{- zI7+5R75b5_@EAF=N+Wy|xnwH9=ERuUNrjV}G8>VXO~C*++?+r{)Z2*C4khevM>pQT zRdy5eyG%HblD5~k)FE#0A;t)gPobZwW5@{uiSWv^CvnmunaVaVkhl!)Qi2*pxF)KkDsRR^K6@Ua4*W8=FlP>%-$qex*k;fAt={l`Y+)oOMafl=kk^DM_98(Y ze0qx~_amby5rxgRxmBGU1|8{!0K)qtt*EF`AXi1uj=yvi5_X7+kRwSsZ@JC9!zVYu zLZLezncu_2)0<6+cU4~M4ktm-?5O9idM3`=^HvDL zDZHdTovGb;O~}+6#n%x+&ATW7n*ilj0=}HR13;3<07(fJC%JY`#^OTDNp4s*02BBg z)Nu62-=ahA!AMLL?gLCP2%K}Hfz;6B0&N^@UCR>WNedjVvOga zgnG&Z7^U(Kuz3kOg_iLS^yD^nKAq4kx}uM8pIO0SpqDTBMC8I|tY8J)9@L0P^IhcsZyv+8g0u?bUAmQ%6MRfPPc1o5)>kznC!12k*h{pd=vB5kWQ6%9 z&5PKn&DKky->Q*W;+qT#Z?PM{lL|isb31EPwfvMQSIkaMGNo=9Odf|Bn)*So{IF3C z(y>`=1D9)FIX%w<(o3CK4Z(p}w;r_i%8o9vnt0|E z-SpdhJZdUVGT}JM9kSqZ^Y3#q1;DMNesY#9HTC>3SA9cC$3L9=j53FW4z6cp5^E^gfN9l$z5JQ_6^Gs|vZU zt67eGzqoChG$LnBLbRl(2V{cpq4v%Lro`Q!)zcC8bbviI^LjeGj>Rm~n#HZBj887f z){W={FLZ#6)>jd&aJ&aMjFk|VdyVDTE|dIq&x%vDN0e^~F&$=u2zV4NI%ee?U|d0f z7)R3upbFkeTq&0DIYC0FZlKZzxxA&RVEh4FGO`6m*ugD!fX_+ac2MOG_#)J`$ejrf z9xs4o#n%D=1@Zmm>t8Fz(K^G)bL+_a(tKOj$b$^82 z?}puXxcfRZRRlaq;$o)~5|uU)mE*0YUQ+C4 zXikehpX@BXgBUQ#M13ArmljI~cxqw4ZR)ol?JNxwOfKFwbP&08xcRGTR<#IKAERUj zqBuewZUq9oj*6vS(h(&_;xZfu$eNjMQ|k7;>2{-JWU^U}ck>$`7@iPr;ROV-<|S;; z9uTC#Xw-d&bd>V&4UxmXjx~~c=7|fE*B?E%?~3%@L+nb-+B+-m& zmT*3GFzc56+F4ZIUG-&!HFuq&&AKO z?YE`;dGsR{57jQQRqhfpr^A%&h1?l6L*#*l(kqGOFru2K~{uCoz9I$n!d zN}oawvr_tP#F;j#Br@cKN677^%XuOuNPhb{ zD|*U;cwTgE#eO(ytAq@Z@hKA>Ccr2G#Yy(yFqA>mNxINN8J1Vx0&jDw)Iv+-ZH$dQ zMlAkdOx$(~WVXinOU8V6C+dW2V6WIgyBa^*FOV;L2i?y3(R`_MhiB5^eWVNzZ27VJ zN>7=DKhMSSLFq1Q#WKijm1{rNWeY9{>*a;= z8VHl{+!|=TD#Z$X-h$5+(7SHI*9y9vZw*-IOM~w`Lq(g~%=990o*xH^E03#U2CIpN z>MUjsIPvcR$gq@p=1l=`?~aV1f`2OdUir(2{gY#@NIJ73jbvbg50B)c$$}K-l_<$H z6L+KTllS$QhEQ8}k^0)Q%QV!@Tp>&h)a_YsV}%p~wnDHTUP6|#XluCLtI ztSoNM(#V>1-%?hLic5&9XrXg7i3x-*B6RS(jNXbeBuv3q6*v?xM2U-M%a1kHec&(* z=gx)1yC$rc&be^z1@Sf|RG72Og$@L%?=S5VdS>QZvqTL>aE~m}gPhrzHQ|)y{<~gV zrOB?#DSyPdd&M%Eu|&*X>yp*9&AM+Pp$^9CKIc4?QLbTQ>$;yOuvXjMr%@|jpG8o1 zd=_D5nu(FVd^&ADU}yV+;^NHE66c`#0+UQTpSwaCDmOMjWBHuRYZB+<)|{z+4p_KV z&aL{CFTuX3mMnfETSkVea_ja2E6nVpP<3UR=*3bpsXxqOUPb;ow+VyCcu`AFI1e7KMJF0{-S!!X&r zKy|WA!?a&Td3U*J^L7;>8Wg;~Q^!LuxQlD82Wk&5!BW=!rDNS+o+tX3(XSMZ*{flP zy$jPJ@VhQBPoLi_;e>azAzCm0QOMA`Xxqv(0j1`$qO~PSgyd&w`5d6fYe|kd5aqtJ z-<+z|wOUp$_Gyp1+Sf57nBCbEqP(^IWJi02L>4cUh(UrDvDsgR97ABZpTJIp}YY^_I=`pqD^7*RZZ|i^O`Ky#FS$g-2+Qr9@5Z zB}K<_7)xhG|8+7}=0N0%2@eCF9;;9&5P zSpu-n8nlNPC&A~k*xxoK-o@v8#!}0ylDqaO*PCpm7h8hKiLcqs%ni*d zhECBodMun+xuizqSkgMHZRF}EwK&ckUennaUGVX(a;4`wPYC$mqcyx3buH@0R>)tE z-dPASAHX=W4&hej@Ts4!1m0Y1D#cX7{v`NapW&Eh#e_`FqwSH(H55_d3vrFSU1PF zNzG~K8|uO1E7^l5>+w~|NDDPzka%4{GMBg_k`JxyP!QToscH2LW%Aw`@o28ffHJFKi36pEVhVSAQ0QDG3y!C zJqk}k)lu=FDX`RhV!+d<3?unqTNF60XgC!u`(<7a%4^M;WA<5Glbn!Q54S0l++L7{ zX&zuO6>yW>vV*A=^M}#pRLuE_|EG%t`Blnj60ER~`=vicPd?j&F*f#c+tCK6q_{_# z3^>Q@5$wrTEa8-1x&#ORPvFzs4Sx!N+8Tajx2Fugyyrl`^#2fp_Gt}9O~cN^fHl_T z1z4x1uAHw)-n&FM@dUDK>YGkK#0>bGpmO+&jJ*N&+Gj?K)4ln+?7-#m{5D{}d$-XM zMlje=pl8M)q&im2#SVdYX|lzdy@W%Db|hBM&(-bNhoHL(L!&jPRwZ%8xnu1!L^D^b z^v+rg7ZI^gPQ`OAa&{=mS$rA}V;J#?s9$m_U>edB=Xklx{8jLRrKRno6OUZH3LKSxq?uOjUU4 z8(h4RSUmQ{;&D~-^Nqf>wvX@O9A4ci?I?Q`ZaXsYEOsg*B`S28hqF2i;TxYKpxo!AaO)O5rn{Havs=9)zYNMcs+vGf1(YaEYNSL=oA|68$@feX$q`R>D86jJ3 zi@_c-Wgu1%KMI^QD!)tUY*ra+dpVoqw#-o&mWtI(-7~Jc9Ro+(IL-*k_2S+RS*9c6 zI6G6(a4?V5-NcQ?3&bm9#7~ow1E+A!2H!)i*7ry*_p|PcJ;GS}S@~rwUrXv%((-L(hPV(3W&#CZq5uhaYB(Z^QUPi|Q z?l`s_hr4pkK)&MV5}oiB(K--m*7q7MQ9Z+P1u5ASK;e6noCfOfZaKS&1&*y<#ycA zJRzIpN$RbN;agpVZ4SgS6z?P|RaU|p>CcFvH11e5qsJSFOY4YGgG8sx5PT^COoBm9LEq7(i47*~Nd&)$#Ja{a|GZw<$!bIu`s5jv}C+LpK zd6j}|%Elg}a17xh@fkwGxr*EYD_RM261*#2*!a$tWtUY}NU|SPB?SYU+N!ASPdJ1t zzAmZgTd^GmiTkFy3uU0l#?0+=a({SPK2b!}OC9pkR*$&V9*n6>DYiV=&exE|S`Gx~ z?_-2fs95#WZ@}`F?KMjz&=ny&wfVdLCLlbo-b^Pv&q)WBr?zc~bTTs$R5fg1N(@m= zBwM-FQ&SY2xbnnsHjLP%(1W+i?ME%~e`;plFfj2U=X`NSrPDt(4Mv@>-v+GbySEX! zSlSD(wKIjIzb=(H9h!taWzI-0Bi_E`hm5%InB| zReFAjt=Bf_dhjlo%<$cRYBJy!8w{j`14;0@zi=RHFp!OiPMRYQg8VB6`NI=tZ2!$= zC3?Ag%rKgU*fozJ>7OE&U20-ubucAXj4(M;I~ZGg+SuAMHXDdOc4KSjc@<`rV&ag_ z-cw`jgo1reXHbusT?Au1k2CXjQ))9@Tm^73h{Dk9nlp~ZvwTi7e#s6cci2@y-;gaA z^Q}d~qQ-1!uQ>fgm3dRi<~6Nw+c}o$B28y2)vql~5Fh?sQf2QuUo*-TEh6*@58g#o zX2c*Rl;20re;sZoY_gHm=Uarq21neLAiS6SmM>`?v9z}EjxEaHeF)+CKcC>@H| zA!ZCKp<U|pb;d{%9z?~j+;Iwn{^bbVEe1#6agit-T6l!8 zJVutX)QPfGfwkSnC(5-oh(e98^M0z@q~&ckQ&OxXovQ1|f*5g>?h?RVo>SnAia^QUrxlR$z<%&)&=<$qnjG-A?3z~%n#%o#aeO`>tFt5(jqk-wc$@~pYds{a>bn@ChL-m*HI97W|UN* zKa4n{$qW>uj+&e}5r#6rlW>Cy)azaxq^Rh{v-qtUi(Y$lNnDaq^dfozOe!jms+p8i z)asX1)xlC-#Wz@?=8P}$xt6>+YE1I7~OATx7;*n}z^-kncuE6+6}Oo7SDacnu-JoDESpSN~*Vs6}zGRGD>0<^PL#Bg#2f=UZJbuYDxCk zS&;Xvl^gHUT)hZ3ymx7~+A!r_Zn1`(_jp^es4cP{OQyXpNZh!}!m@2q@_8CWt$24C z!%94w9$=NeU&g^Ttk5+J8J2}r=QWn|Dwv%!^|dTvNci^VPfoadual*aTQv!@S(mB1 zNa-^x5XEMo{f+@eO4_t5WpKQ&+`&*epY?0p{2E`A+6a1;t9CQz)L2}$y0`dI+VgZk@3{Z?4#4uVHLi*>jVHORW71pjJ~)Ekn`mgg~f_{ zG0}pGIMv*$T^z(OxHM~1#2SdGUBSc+0i2LjZpc%4gP934KSWOaL}SJETvs)x`LPh}ef*7g&-1ce8Zf2qdl zQo&82A`x&ZB)k%`tY@MYwVY&4jLEM<8^^Q(KpP{+##faZH*sOufkEEk0iS}9Kd6*< zEqRy{iP|K>d%*6aftS3-(=mPC^oNyI8aR-z`V#WFuV_zgvw^g(9m5j2l_;YEm|ER; zIr4Bu#=6wWqm)O&|L=IxPP-T+@-gS**5G9hLNTK*_4)X9DZh280#rA)E)etu?g}iG z@e4g}qB5xKgF_bopM+KhJ^>{#P9^p$2}dUi5!KnL^@N(A;y-(A0lQw*`jw2v!-_{) zWlCKqZ9bqWIRJH2N_k3|3@As%(iY4n^PycV!-q=dL$|mEAF7!TX>l7q)Zn`B9q@9f z|K=TxqvGy?%woTYwy&&ER(H1~HO0E3(yPf-Pl=%tH4(|->+T8xb%`wNlr&?Q!^>SABF5@bMz{T#uY)3TsPTMhgdJ?FvSkk#Qs&}B(DvpK`a?oJ(YgX4DW+sjoF zIEJ_r?c&x^?$YPvaoRqjy=cN-#GGxsF>To!df6vSp{o2o_H`dy&_zXum?>&s5oWK42;+jo{9x8Labed=r9#Y3yd6`rtN2X0yC-l+ zR}rgHW9tD;k#Z@IL@cg8I#WllZWri;w5#xW#0IS=d<*x56|%lU)VVPFsN7A+JCA+x zD#bFYqbug^IN}s^aG~B7+J&m-HE>+bCFg(wf6S+C(j6d$t9zD>*~Y9hZOk%lT2Tak zmVrQQYZg~%+s;y6zHQG4T%KrWS8O*MO5#kC6}&?7U1i|k4weak{!l@JdbUO04cXMh zSnp`=($asjyZ9q?I@c$dyt*2BPV#{;Ui{z^P8P|b<2A}# zuP|rRfNZL`ul55#@Swz@yg#OLMGoziTV7`%?%E_3b?aK6)sVtwiUOo!6(9|(0I6FA zNX=@UG&yV(cX2Vd4q)-y;+QuBr41wI_@9Z=95PmUWEip4auM5E#FFaMn}!+`a;JT6 zVPuRjK7o(@P2h?cKdn}Bt6H_IS|e2+=KgLaa^6(qN}uOik4b}Ju$p7iJY(b?qJPOW zP)GZ63;+@60M!D&aveF~=y*EgP4NSQc3OYFopaRIT}C$a`vKMV_oXLJ{zFNQKFD$w z(?0AV;#%8rh)ZeDLtJ1*%vhT$Eq*Hzh&-W;Bj^AZSYGJz>yn}k9VO7e06d(k_Xjr` z^VjYJGXGx3HF;In$XsUZDIL7v2`h%JvW`9%r*;{qmWoTk{Sz(9hEr7mAydhN-)6^V zUIh}}6z((=YNkUi49(glnzd_br2eL*(i@MYJ5&0t)3cQWZ z{5@X}bYQ)8(1A@o#SFETp3;jSKdE3=s6G`(03C(u8IO;+@EY;M>!OWLXZx4mYt6MQ zOX2Jlxd82TwnW|{qgBux#66|fsDLGsVXuLX+UtSZc@fs`Dp+vNm5WHTXRvfP+W0S=BF?HwHp@hgI9)#XmQ_=)X4Qr8TSyY< z$KQHxRr;a>t>1((b?xyQ;Hh~f@rf}ir$PoZ!9;=vF1?pWu0r25PhEsjTt#9@bpH z_p`!u0EV0#$jFLDIc4K9-r*K#(ZW*7H~t?tKGx_n~iAd@cJB5|(Ud&)NQ{5`7W?$P)~dsNHW zqgw7Bjny92{+d0iP1~bPrZvYNR7C}2bF4X4v->lBm%g(vCRBcyfh^Q&H*mG%90z6v z7d4i{P%`St*j~0MQ%7C8E9Eba-e8?;ql3&{9X+Ci8@xk=xrTEvNMa*;E}S(zI7`@1 zOJPS-`&~dLAKw`W<4fae!VX;01;-pbXGvwe8ow}8NfR@b7*Kqjaqu%d+7>bytE|9& zQ92TF2@m8mPHtiAR%Lk~UAngqzE5w@ad<(#5;#=ShNn#0E^WG-Z>DuUec01r;TePN zu=^yd-4f?BTDP7x-Y9Fu93V(2A1?8n8zIlRVF02RhcQad%n@Txj$@#wwr@_=b`NNy ziWhCgbPrJp+zNoVsv#3q0Vc|n*dm7NGd!YK%7j@NKQ)MRbLd#gjyx(}APcry@>7k) z9L*QjS7l*GCCgXBr+R+ei|RDylsTUJV^b~Y`;CzKghdR~gxcVv=cOUe_@h2)(r&Ap z17Oj8+X_qWc+8&Z_EHCiF_MM= zWw;n+6U7D2kqR5j?ud;U}o~znk0{1 zMCp0e(HJt;)cRQ`3^rx~d*z_IhCVQgy$yudI%?{NQ}8~XJ4qPsYv%(w){v~g$)vPK15me_nCPrT~M-ejlz2oVW@+^ z>#B^Fk%}%2G;9lBSH0Ijg066=cjQ%N${oU|=AI8{Q&?-Y@D;osuYy-8Rpi3k+tM>P zVFYduhjtTMULbvq`}YCj;-=&au2(lDjOwwTA*4n`0E^sx6)Z4PK1jp}xDV?{l;sXz z88FAzCrqR1)}gTDTj^L>-mtGT+t(QT!WiXvwvoUbtW}%4;dR*MJLr;PTdN$~>Z^8~ z@eVpa40-K_q*2S>t6S9&e&}haQ%;NTDuM%K;v67Vvzx467>&Z!8kOWu+9O6_R+dRb z2~A z2z($cw(c_)sRb!IZf!q;F4Jif;*{#eN@i1^)89p$>8~}rKh4-p&BBzCFauq!&%vtu zwS zoqDp0#ABQO9{m0=wD1m@&)Z0gISS-j0&@3~4K+{8(H3~Hx3(NT37E9XsU^E{Ceg3X ztKaoKN1t=lT_88)GA^n9GIv6S0Iyz8G>j*4JDdkej~Xa?m+m##Xs*{YTNIE;cMOZv~`E+BsQ zcO_En^B}ZZ6^(32X^{9`CY#pi`N7@z4Y8`F4Iq-052cK%&$E4>@XBY|$mzJQRaCjx zci-Vn5+6#MxzF&#sgLgoVvhu3-w?#Uo$9p}*R)eOT&^ch;VwTGEb@ug&bxTDsyGjc zuEU8QGid~D!v1r)g6}#g$0bF`dPtp5$zY^gE1{*3Bz{yn#QG}t81|yd%3$s%Pnzl$ z%jY`!KnZLeE_4;S)rlp^s*u}Lk!V?WLK6QEje`*O&Yu|v33yHCZDYO1vwN9EzG^S0 z9QP;omrMdKn`4|W!S36HjCo(%HsaZ>Vg+vcc788vaRA3rf3gvt^QJ2KBwmhf9(v1$ z(H&OLHS4s5%9G>UU2M-&TvcIbKfJb8419`<55Rvm)VzF~B(rjDb>qgE# zWth*H{m}Cv&%^cQ*E%ccQ?|C2wYAX^bXgTGQZ}NW#pFN}vjYvL zqUn3yI+tRqTSFALt{_yiN4eo8-oBHZbD|ND95fxGE$0C}ZnhLsioL+`xT20vg>NVI z67zel-Ek6?n$FfR3nq^kCd&Yml}w#FD-o9n76~5iYYPX%dqmu|Xi^rJSW5#lKxcv=Y?iw#QsnE|$ zA#L$inKNZtvSL-;Dyy{4L|o&TL_dzpyHkThZkLXvaY9&F+trnvkMQB|_6Bua=M+ ztGo-ut;AlP&}9hN$UFV#|Hnwp4^o-p%c+c)-c8+^@Jxb(Ob}S^GZcq40BDhq2gtI; zmSrn@pr5Vl`K#RKQ7WL^<+40}7-)Js}kM=+iq>Xcyeu_fHfB%PdO; zmZgGrCJGv=BK3&HMfeA*nZKW)vAYf@p&ZEz(Hv`c?38py_ghc znVsh(XYg?8Cm2-wspUjZe7Brr)jKQs1QT!dnCRSr-b&($lHBMt2BHPsKOygFGJBOv zX0KjMW?#Cf4d-Baq?{#QLQzNY4+*5^@iz=F?o6ycPJr2Q1;1s8X=aAGa$rXsjK^{* zd5pT%rp=_}GqqQdJ+PCFP|3NW?V(JQ*(#dHlqs*}ER0>mxw0~#^4(A(RtrB1upTm$ z==mo3fWrZKxn#xQ51|d`LR*2Im=b8i8Sq-)) zwpYoDpNX;nKGFO`n1#!ag5n;YXha8~T$gn3ai0A#xG?z{uFMeY{}AV|ykKp)`~_h$ z8+59eK6JMiby~`<75>!#FRK7OK*GPMU6c)|p?mU&#lSszagkLn4&n7we!}Te+Z1Xur0e1NmI)a7YkMv{*TpU`0pfGeoyB|F9%Yw= zCP-giJj1Kp8Ft(ZJqy^Mo}#ueWHA+T!|0suT6}Opf52jd!%=cU*LhZs^R%otPf)$C zi!|s=yTP>>8ue7XfH@+R*7-aM(mJ0f|KB`~7gKJ%`3sL6aL*WlmOKQ$YUTUbp2X^3 zeiA+V%X3cRvuNL6bxgfgxeZsP<5uObKE1pw|AEun`ID!&^CPEsbdd!9XctNLy3M8L zkBdmLXD=w(#K~GPnQF?Zvnl5h<5j=st95I1wcJ);>vE55nXc1#Of_Z7&UwSg-KCUu zFOu8miQ?>68FM^T*6^9Tl~C)>$~hiQ3~i>xK)V<@lf@nDcLp_f;}$%n6Ag z_6FDg?Tlo}*kFqrwA#Z2V;qho#^Di*eD@@sAlF9h<-0ikzh|_XI$R6_pt>3mP@$Gw zJPGUJ1uC^JmB$F9I>Z{?CdCqvjo95oop;xC@<~ye3VCO7F8- zqo?jI6+e32@mZu?eyk%=Fx5Js{0jTVoN8vfmxJ3woypVfjH29zgg%@C2BRyb*RO-k ze{-GSH8jN(T0ae}S8-K&Z|<`e&FWLo5|sPB$xeX6I^-7W$W^CBawfA2=Q1rl$uo$73KctQ6P^FM+qeZ>AJ)HDMO*f(H(GZ zA~<*Kg=<*~Jt#fx_<5A;_n9hkz6CIe4in!;!G6AiA%oS8_1f-EO^-T?KpN6mhnke4 zh(5vUWz?S9k2+|e#`_@V;I@CcpHmacJzgT!5LS?FJ6u|fP}K5LH6IezY_om!+9ygE zPD*z*F*ki_=~ z_e{vrA*alj;8gj-&nzPyE8p+7Pe+pMwWx8X%baBP7g~zQEO5dZg(wSgB@?2dubGT_ zJ>`N9ohZjE=$`7V{G>!pWVgR|zL_3PKth!S!QEb_BJ{(56-hEzt5JVTnR*u^%No;7 zk)==!akQlA-^Mn*uT;9CM24?pvWB>XvlmZvCA4cDWt&$>y!yAnnHb(CdG@BM?EbzO zH0U;{_nGuk%Jm~eku5=yXNXcL{qPlC{vt?5P~^Erk!@dy*(`E`%%|N)a3D0AA9f_^ zPBXg(JXlSn7Jp)NwpwpDDpltiBUUM6IEma7k1(wfhkr49hFU*HO3{ecmwJ&Hy7W~!D%FYbQ!WbN% z4;hL2jXGivQO+6L)d)I!@KDZv5zZen{K z3?z7I(Azf3Srs(vKpq$QVZYu1IF{&kKl_8e4rAa(XRyaH9V~1pd5h$v{038exnK4> zh`i+%exyerlazz-scbSwFUcIkBp10uI%rk7hAYS;^TFkItA|+lVQmz@e`(pTS^gD8;ypTZE-O!iFLJ(NzPT>x^--E61+P1H>eg__nFAR}tilELS$HGf zCw<#%l^hmaD)s}E58&s+n_$RmZ>;{Z!TL*k)$b1vUzmCAcY5ijZpSvuKFmhcw&`nz`lUw{9Oje+|xmILwtU`cVR)Z7rM+3Jyy zc3W+p=6Kq{4WEv4sUSnp)=}o(+JzV=d7B=~<<{&PEA*@A3Cy%X%eY|;}v|S(lY@VX3go@8HU_Ntirg9$@$u<5ivf4e# z_z|pQh1XH1y$XqPT_*z1Pp{hl5WwWshlJ7sF(9;j-CQV>y ziXe@y7B){eaYt?8jy_F?(r&Q2h-2F-|IzCY2}X~|B;kT^gJFtH9#Q^jlLk138#2Y_ z*C6v^g6`tU2V@o42n6;Gysf;4+kL@KsQ>`vXRZWi!*i7o7y3vc-YW_RUBRLBDtJex zY2~cMs!X|-MvZ>TBk$f>>}_5y5bL#8aFg(1NA<4esvXnO6!3iG5CUZanOHCz1Zk{q zVy7n;4SB*XA{%s|0Tisk!M*Kqn;rP7)}RSBK2SRAw&HmmXA*M~Oy;_4l2bp!M#aoJ zzIN(<9L4)!6pL{?G~4t!ExRSF)b&1hE%%_pThRtq7_dn>OgGG;(3u%mlgIUr^u%Z` zk9ErXip^zjaRBdeB`5DaUCUeX-TG~U(Jt?@+w^SWh>F|^2$;2Ql*a}*~9*v}I9)m5zS>;RrxKCOLU^3HaGtZPL$S2;~>gM+^(=jyt80>_5< z_R)E1D^^pC?!tLOlpXqdSGSP7T}HO#dE^&`BeZ?N(m5hfDY@+z1cS*QoR=1A?_0Lq zfnN?>4?i8^l<_e2T;HdDNl3GKj7a}1+Colj=*sqkaRLi}9--~>%9K8f*us<$o%PCs zv^a?14&rfyJ|0K5RRe%w>jit8ev0oHY5PpwyahGlO4+Ko_sc zhKhI+u}ty`ZDONsycMNKHz%irt*&CLrU4NHi@z={-6lxun?maiT#Y4av8uR%twTB= zh~lrDm{FHtmr+b+O8*<(s6-x<-QXJ``1i5gGUI=x@X8ORnXS&Q$yZJJU&&l%WWd|f1~>Ux=2GrMNR%x~mdkRyFp0vJOyoCF14^an`;9@1ymNF^WiCNlfsXCyOr zgFna(8k}y~pE*m(C5(Z37k<5^b$P2NXdB-B(HZ~0@yCw3FRPTh9B;^m^iayHy2H1h zW=;vhPW0t8n z$1gw6pWY6-liqMpxKEF-JKf9Hpm&#!#+`nBcyilMOX+EE(1QZ=qv3F}R5 zLg8P(4}PEYPUk0&*Xi)IkUm@wN0V{kmtTG<%ngq(((Yug@IU`k;Llgsn)h`98u)!e zUsh~=>0y49-rV*^>HP0M-`%Fa|GcoU2^G@*I4!ttPhfo9u1p2{r4K8es}t^rUd(^_ z>gJHwVBS2q1^)Eq_i%xK|M}~)#!bz@IzHJ3m7(|0z#j|qGQx4%KP~(O!@C{Oq)z4v zztZcEg~@quykMrtYcc=r+ffqj7312sJr11M>b+vGKp30VWJKb|La`XPKGb;23;|YxUguny#>tBDs1P87nFMu5bezS1) z?HfbdH!k<>+dOquJt3%q;@DVxo^~(I-pEjTW7EGH5W-(LqA$|eS8NT7nMJ1wPA@C~ zxXD%iP{SCdok?2g6b9+N3}wDEI4NA;P6|Eqzrkc^)}5DXfh)pl3DnQ%7Z%WtviGqd zAC~OP{zn5A2725Z9_mN4^fKB_y>7`v+PyU+p157~_CgMwo_^O1Z{9zPOI%t0b?wbIQ22Gty+v$J$ENk?|m3a7(S z;k+}t8V(+1O{Vs60%$}|zumDx=gRCOwd>A>IX*w-wK4Q7F6figz{Ojkk?xI#*Xd~T z7^X z?WK4;xh27bgK<#x&Bp>CSSopco(@biX1phlrgZ)YH~wwLc$}Vh?$ScPcWEihR4ABe zD8P;occmUA$n+O@D8J;AB>ZOg%T?Q0@Ft=PNQpNKitphr0;Y)G%EOA=<^0Bhlnj8> zGPuw-&kt_e{r$z1-qWuT)m|B@ zkk>rS;4*y#@=Xhyx8^G+I2=<>@h|3=**$MrzLRPW=FxERoKCX!Y1%SS*Z=kHalhC7 zWyEbF{{pa6*-qhU2j^T358Jdh9E$d?#MINOlV*Dx(_2hLn#?DTU*WVh6 z!t`i3bpWXQwBN4{hW7)eYrhDJoS$1+SvBZ59SsccxC-T#FQMS_7)#C(zXoj_Hoi3v z530MBZ->Q-X(4EHeoj#}tOk`P>3HIJfB5yqYX|t+x$krMH6!6sbMsJZfpFs&X34&P zopY1xlm&vPO{=qPWj>mZ*@59T{OKZsQ5O*IY1wa?3-<$#2qcVRwSTY2x zW1ys;4$da$bbj4XOaTOZkV@vEAdcU15*B}-4zSeN;E?WlVcu)3V0c8sGp<>Z=(@Kh z3a%jnUg(Q@F3@3>X4Z3>>CA3tsnE%7>Q!D-ONHYnTZ1xr4Zfbz;8LOcoHn7D*DSD2 z*%nv-R#;hC>5R_Cg}<%Zc3rET>+AlbG&?#o^ldO9x`@sGK@c~0YX%HN%g|^B@)rXj zO2}hEMpNtb#>=8tuxD^=@C|SxU%sy3BezBBfSwk!;k5y1Gtk@a!~@+JXE)wKP@`vF z41m?2=G{ji!?x)KyJA2Aky7`2c(_4T(lh_AZJK}nt{OML7Z(?>*q0uj^v;*L!lEg) zSeU~T49$UbWF|A1ET8noz)&m?%qd*%19LwZnjiPLc!lL{Y=AY7^qC0?N{%N@6$@%c4fanLHtwW->sdGM=T#rAlu1>nIKdhwV z)wFxndG+qq>VJ*Xu7#zby&QyPdxr0YfB)No0rEtMn9Q+Q${q{^D*$MR(okizDIc#p zqe&5}{6bJkhti&#CBrz|vd2S%`P3nCqks=^FrjlZ27NH`WKjpw*NTDYZf7!|*WrSo zfRX40Pz_{6=s_1aPJax)y2F9E9Q*HkN8)1+PEhE8j*FaP(}>#*b5y+E+!vU;`njp_ zlvl%{8?!e4=`cT6&9NZVuxz*~LxF`;K}ik{%D8iynzdvaJggeJ^N^lAfp8|n5K&jdRYhr zC4Ot3n8V8%Fs${jGrrGLBe3ybzS=>Uf=Avs93t&a7*>Ic^QlSRfeWD ziXCr0l^>Xa``kha0?fr--WKGZ7gxd(@F&U%A%B{34{bxaBmaG%&!Gn9UuVqYD@XGXB0UJdOFnA><=K;6c)>>&c^`S;V|U zX9l3Cl9iUGou>JprXS#yQ^G~q(o&)EW$$Z%G$zBR4^oB`KkW|@gz854U%?*?`lIx^ z-$5pQZf=Et@TX=gY93Y(TZh%g?zd*U9yN9VO|Aa^`+v`W`S1Uk`{&nx|Ni^Qzt)#t z{qgU=fBE14`1-ehEUcc*sQhiW@ol$QPfAl-q1sP_rP;Ib?eTcho7@ryIz#fkf~`wW zmOuttDqIi8X!SKBSm)a8QOc_Qli2>`H2@|}@s^WLufI1$=8l^%TsF7OjF@E~!K5P1 zhu=s|f!cyu3uGbK8yxEQl~B&0?3ek)0*GH(_|4fP$jGC-90ZhVZI+~=rEsy$+Mat{ zF|UR6&$@%|`AYY^Gb&Ez*A|r2i~{!Df6rMF+dOajAOFXFXMyUuLMn%n&a zzx?k%&;9;$P7U7kp!D3|=RV4dg3QgVrnlH%%tB5h5=bz1!`Fdn4T~>&1-#CtjN*^HZLrM_uvyWwcu3!t z4n{aP=f*_`;VJDwpT@LSon zu2it?jjz*g5B;o26){6D;G)Z2SJuts$}C9^tzXiTWQ}w^K@LmHL39OIh9s? zTx+-4+S_X!944i2ZO~=uR#&{Qvf86j=W*|Ld`^1UYxBfku6hIE2+bqEtQUX#)~fCv zzJ3KN(uXqtCurq={jc$Lzc(o$IR8GFc~Iu(u&gVdlO158PxuG zoW^EzcJZxZyku#xpk<5byw7!xkGpd#*vtIt{PDuyRu{e?uw6R%*wB}1bnhgh#C5^VWLjZ z_htNcd3@fx3iQbaGE!4uGBl&PAC4}`UjtYU4GA8PKTfYZqmDr_ONBnjf{N#%lgC;+ zHqhmxMbZ~L#)B*dz{_Ks8D>Epl#g8GAOHAAVa+xGaEc9htkjpUUI9DwDF(MMG*7)}Zu+Sa84kTW`51>6nY-A_VzT*nI@hbX26cQ}djr(qbT-&<<8 zT7T$e8{SU9hwv9YSrS4!s2_Kouk_9a!;v}pX3U2F>Hz~b2Nn#?{>gu;+Ld9MdkFBR z*41-s-41$P@a-^lZl7C+5G+)AbXc*R%jmq1u?HU8l*Y9PQ6 zY#|wApkzVItF%NDT|tInAuHg}SB1jBWyRGf{GDgDA{K5-McKqc!;o%R)C)RtD+{hM zQ1HvzSFI563aS;$TO%4b&t3+OxM?AfC_TZ*!!iB_AjZ+lG;OCA7dHW#iwL_N@HR&0 z`P480!|MzJkj>oj`U#fvU)jy)mHPL;3qSee06H{p&fS8y_xd3IQ9y6^=YfXWBt~|@ zq9WG+Ro+_V0j~5%el23!b*@5hZc)b_+WXObqQL46(KeR*oVyXQ<*}mdTzqlGs1ifpIZLrZ?R*F{n309!t81G#2@8L>pksRCf8hc!Td;aJOeL)uYYY1nyJx`72PQtIY zM1W_P3JsZ#EB(>m4ywW&PGe!ljxM>)A^PDK_6xK3UthLAL?B!<%iN6Awyo?o4wH|C zL(oNZI|JZaj#D;f^&bn@!~WxG4?M`hlfxVkvpi#TTPmCk2Xm9c`1Trf6t+2V$px|u z)NUmJhj|)QJ{XXmG!Q!Gz4a6>d8t4L1e;k3jsR?=Is^`U;OK+)*NodazrqV~fb~WL zIA6qj9=8vPP32vd0n-@ZGb5SLj|>r{{apz9V>YM`sGk_)(Sz_t`TUys{vt-rlz$0_ z=DL3dYvxP9zXFQ`->LO@@NXd z^Go>}l6jfhQlUvcjo_CIw50h}91q-}uRR7B-rQu~6n(LPSw0QT)V;Qf#68J+80>eG!#x)@ z=pbLjz*F>!TE{!^wp&MUyI%_5rS3Am0*AYQ`RAO+@cm2gtKapDI{zbFA^=XkleU0; z2q&NA6r~HS0zmvn087e;xoft0JUsO@eXIO(dDOXoN}rffB9d+2!LyMlSv6Sz0{Tp6 zJZcphooO~bzyoi!a4C)MUDg0^@jSHbJ~PX=T0ywTU$Oh4+*{ zq-w$lSngNgB?){3Fcq0VTFy#wrC5$EslrcY%UP~5g&f5Cx=@Na9zo1eBLgT!_-A6ri4~5 z@xyM^oost>(DDqp{)m6|qQPJc^Ii7HJROifHAof3(V6pS7WXKrKthnKra}(18tqs2 z8VoTXl}3B>Ij(ZF7fz7mIXV})KalHGyKMky1{nj9O$kLD_p8GPFwot4U8}MS)A4%M zVDQlh$O!QC=w@SPj{g|8zF_4SBPR{+hTV=0q)`6&s4`Km1!w6by6yE1V>lg^r<3Jl zD6`y?z@W_3T{H7@;v)bd1M-|GKY^!~POTHuXB2t!$b7g&EUZEsup-t(;f0mVSdG6T z0IYhL925^52YInyggKN=x>+nI-{PG{v$_kxVwjl#Te7%Q%*W}8m1&T-<(7_&9LXX6 zzgWjC1Kl5IhC%%cG#ly1!cRX@(~FBX(n$0)9PKeTrJ-QpoOZynH0=7H8RQpPov+@e zhu+^EII&pp7WhUhIpGz`Lp`40W}XIU5tSwg+}>|mDyrw)R)SDWmg^OSq$Ohy-& zGs9NZs(Z4E8a?Ru=nA8k+eO7Ov=Btl%A!vl2?h$DJm-5fm5EQszhvL(%~Sj1AjnBH zGr%neBJ-S;v~0 zfa&31)B$qqBj>Ynf^PAn$+tryb({LCxhsR9}Q<1A`t$L{e4k8@^wBM4*O|m04)6w z<(PFsFo7@T5BS3Yk88TCGJzo$ewGWK7Bh@oOXup(_@7~1$nW1mN~rJRyCa6 zGY1ZQ;n$2P%w;9>kC44Fm zz#KweARJ3d+p&ba1h{sj*PEo0B1fv>wYMb(Mo-A2-Wsw`3zmUf@S)AU_fY^jvOu@< zl$ph~YFSUsfS0|HT+V2t`&T>W@R7BzxePcOPw9;@@-nB{`Lgzv6U7*5b_wTCfwnoH zttN4Hli61MSz_3d0v$UsUOY2*IS9;mX)QkOD#?L9wy?)1NA1eB0?{rb_8uD9KAng# zC+%4kDkrJ9GLnJKJVO*m#y(asl81`tX&~B_2$g(2ajp_L#UK|ptH?OST(ViP`UtGI zN&f_f28(|PqHHT)u&`%%U|TK}H>Z@Jl+NIQ@m^MU?16&Rn^? zFdR;S1MvES-}s%aX+O=w!9{E2!$h@%S`D^Ii{S3Wk?f*CD=Xf4nWFV8JaN)RL4dV_ zd1ti$L9FzTE&a@8_k!uFhU%TA(>>WSEES6=I(XH2u&&dchs`Pe)F>B_Z#JEV!u9a_ zwog%ahPwpo1jZC`B0%6^KVqew6!S0Qz>Yz=bSUGb!?3V|#j2;a)ZgiJOk|ZzEiPq8cMR%i`_L8N!-08lL^F(lt`5pN+);+>HiJE)Lw?VzY)M}xm)^qdWm zW?&O5K4)zuv^L*m9N2Beo|&5&-x!gVAipTW`sXOLcH1}^7@4SS0INeY`E z77r@Pp%bR~C|a4KveSr)JL)@aoBiHAEFM;4^&O6q{aS7u#7Sw%0u!c5q#v^8GA8%? zMCUvp9)d>U_!>IxV&&DWGCDuun5LEfLR0<<8WoE{=jr8A;a`6&=;p#E=Cf^>8i9G( zCJmr!3&iJgDoJk#3c=(-n8p{BF48ekIgp|FvlC6_rsh0Qo1j=XZ!=7F)fQ$XmtWSo zkvK(MolIqVp$AV80Q@Xd2;NJ>6u^Rf6aZY5Z3Bn86*RK_7h2g6WPJ3eWD?M$bkK9I zH&95I75v;eq=NBBnjdQK@vGs+{9?2I_-!rV7miUH1Q?;(Y-SyB4Pfl~aS zFcl>7*V4x)(?6LW#>?{7@+^RaquaBY4M3UYma**kPgKysN()}oJU^H zCI5gb`6WgZaig9Y@r#A>(wCZwHdU!iksQmkTTx0hCLjbXMi|1=v=$C$$qiYVx@C;M4d+0|3g}<}alqzE2kdCBKaWn)hZ8qNy*_od zMyJ^zq61&!f-aX}3ZI`Nm<75TfYkyhJmDkzErJw3It}!`bF1Jza}5q6_;gB$9I|y2 z@2)e#Pjwah5x*Iz=d<PO zsbe{Me`S$h%q}&jRU~#K$Ty<<1VB^2t=Z9@i6BXc=j_FWmlWHgye>HrynLFTJOrI! zgk$+5kKcG90eRZYHL=Q7qG&J7U&J-&tCfPhlKCvG7+zhxk*ku?6+4dpk3XSs zdkL}p6Bg3*$<_2B!NO1q8H^c;h()?j#|O|N}+B(zfM zio9{UKKIT1s9s&ACp|N8nRGwxj9dx)8J01qt(%U=t`xuE&vo!p#i_c)WC)7EzNVjhd?X z`~TtYZS>m6k-pJeX|kDddtw_%GMS7$3`2;MutPA5NwRZ*aT;u(H(>L+O%gT_@BN(H zI9GO5ACgLHb^8Nm_dRER&$GeZQb{e9N~KcOzZ(5yl2o0_SEFoFIGm%4z6s!Dm-mU` z;Kpd2s#j1{bD5&WJfz5gMxb;@Qyj2u0s#IrPSfDC`Y#R*w zn@Vo?edIwy?;ziNp>SrhO5Bb<4~VQA%I|K}Qi7V5ya(B7U~4^Qw#;8cO!+jmhwZ1A zgVFUwNDTA{kWEo&R^XJPw?)9ZnAD8CZqh$@I3XK^YfN={y+>Reu2FJUi|!=2U_DMeSXf+FO>#6NpY3P!U1U%;RA#!6`XB7 z(p{qFc>|xs%kBQz;P7xcK0NF{sxDW}QE-WBD5XX>0B*uRJvH1=NReU|eVPI|shax` z23jp-99>?G=Oa6A%qkCyCmjhabdH=8CEFTHU*oL@Dg2$&!s@~&#GVgEr-qoe|LyK| z_B;E3?6!Na+xz?Ny%HY^3@H=T=nhx#`Kyhs?QXBLqlj+3-P+%Jk9MDsg*NmlfT~O8 z3;%{e6k6nR!Sr}^dN_O-f8)EOW>ldjDmC<;(24ixhOQa<8ddN-xok#Dg`;=N#vHfT zE~LEtW&!=;SgpOGF_77uqk&kN#_F#N&>JS7(=!Z1t3?&F3@cSwv=xytECeOsunxVq zHU{l)S?p`0OWczUbIypnxdLC7Lb!;jh>)V`Rb!?eR(|`oTl4!CnV*VUq5)tXgu?BOPtDCoOPE#bezgbL=D&VQ$k zpdD+z{zOA*$2At!Oey1s48?trf8(z#iQ?aE2XH-nN(8nSncZ?4hyok7KH`tC^fLGU}%~bCydvA?rnHMkZ|B8h_K^} z9UTcm8gZ$PZzhU5qs?ofsgb?FsyJmC>%Zz~g7idz7B(eP1XsT&5jE1l&TAQ4QsEm> zO;mp@7^7r|Rnfo)fEl=D!-r<5Ksv`O2;p}7Vg-kf=yza6?$PYh!^iZiTPlY`cOW^M zyru`EQp;VJnEMTXTo|}O^P_60>5nqs08xjUmL-`kzsA+qj8>2%`SSYXcMQ119W@%o zcW5)3eK5YG#`OSPxpWX_$b2z8iN)nm#@%M{86;N?E@(ETCILs{xt1 zi(n4EEp$>1sdL)BaDiaj8Pz%i7NtS>34Bw7ZR>UEBv}JbatdC=1mo@Q6O2f89n8^` z00FHy{#i)&7bbo{$({kA62^3Z)n$C14o84HIS5$`FGv4QFD{a0ETv6_Po6%z^Zg66 z!V>RBm48>z*)o@2DMlm5ZB@ddz;5d z>{aD7-HuA#yH09y4s3RIH(qRq-3+dW*~#e2#frkU6*v)s)YxGAl2UQ|;YGDJ81 zM<$E&?OinEMFjSJovYt&>~FpaEj={8i8I|6qx&xgQjuol_(l?@nepvu6K%>$R(4T0H)BB!y0O@^Z@XeXYEvHIJe~Zxz6oJaMv9Wp(42ie+QGc2;=6;s2oom+qgTPcxar%LmbBT zb~r{Nd)p!Z>oL1!OH1Rg94IB)GEl{U3f--GZ9+81JI2WlVs@)X5+=D6co{D|a)rF$ zbv9SU00)jj@0~o;7)?GkpOv3u&I&}v&@4mE(nLUS5c;*1+ z7t=AAvIzPt)iydcogh;pGYa=)xe7Z~30!3C7hS2HYd`}aRq8LlW7`s*LPghJ<-DFI@j_FWstmy>$qe=m)uOgwL zaYaNphCJ)|3Xagzerk&2BrhmtRNZVkxL?tepI`vRqhF$@t5r`b&3wVWXfVY>GHf9L zuldhxi`Y+QcS2ua;aOJ$BS^e^;l07>1>Kuhj6icB;PJH;cJo9rc~!B>+inD2Bs#we z;80)OM33#En{t=wU*NN4eu38-MPfqqCPs8cJL%c^L{Z2F6F^%?$F?$D@qAR;B?pmz zB@w~7s6m-4dpnLMR;0Cm7 zh2afxn`)lL`y7&s9?ys!t!9&vp$vL-Bz8r5r`0X9&q`NeToH!KTHe_6OY{UVaOl0< za;?MkW201}(N9kY>@M!O8FkyA5BX){t0Y<7!!_~R@xT7EJc^PFwd$4NH$`fZ0}Tlq z)JpxS{YvAU$C=U5A3Tr?1)+jgOrml)qfrB~RA#Z%YN!;@^^|Wc{J5kr4Tpd?Gqs+~ zQj7n1oUi_LuIl{96G7*8`mkS&5Z=RzF=$yHcOGiLebDXg+32D1$Y&S#hr|<-XC3&u z7`6f~s~g8U)vB2r8}UvF9`oG=0mvda(p#(pk78E~AUNhji@?4*sx-x`{NkA<7$EswC$<54P87So|%^Wi&|Mu*Iff3EHJA zNvIHg5A-)PGJvZab(71%dnopQ4aTEL%|LRIs{Jv!I2$R=`ux&VF1tI-1{bGw%(tQx zb9GGENp_->^TEj{E7Zks!getLA9wY?)gosdVQsp=Xtj=U&1nglbcbG1zlgl*3nN_W zXw-3N;E=Z>O461^=c9{(ntpFo>mXrR7?GnfqRzCY<0V3OoN)qYJDheUp*m>h=Rr8a zbIQOPwSu+OAKLC@ynB|sd8jk&Z>ta*R-X}bi%oyAv^vh4T|?8r8!G<0>8wdaD<$`k za3^q1?$!rI0-S0iEj_#*P<%w$oyg2bzlW#k#iRrVF_3WuE9k?V&580R$=F)d<;`rS z%q!~Pt*t|K-UY>h>CHyB$95TkS6|j@T%it@Wn{quv!9-F8CbAB)}uYW-v?WP-ousZ z0f{iNQ=WQ`JyFUz((<+QrO?M}?VQ>asyRKFp3z0*bfFselG4T5u><^fhj8u%Jow>b zAZc)j!~E63rNpv0f?tF8hqXTZx8cKS@y`k;nR73`JA}Ag zN3g%&F_{sND6{`!J`gOr4Q@=x*q6x_Mp6q0GtKMLT5I^;YCGoS$@Hvq9GH??L;56j!!)VHc(+807 zg$it-w_wTy{FrFiM}7X2DCGt$!$rMWis7n&rX1ay3jwR`&#DbE^x?Wq89Fp|v@To- zU$#hSAi zH`qm%#=XReWt@Ke@P^2JIjeG;9~AuBSZlP}F%=HU{AlqHq|+LdGLB4 znl86eUE}Chi;71`@9pJ2a9ri?UU1=wG_HFEljr8FkC*1+TL6Ic7Dd%bb#JqG*v83Q zE92k^OxRN|8_uFMhtf&81iP)|i(Y}e^1WffoEb&6Tbp-_IxDIHR z@i(LsMSkiFd=T@KN@--YU*fS6?w`chYYm)1xA;oRqq3w2AYXe9=f?k#3!}%R$;rv} z<@E)GFPemHm5RfqaBS=nptd^evEpN=%H&p0@v-{n7c*#V+lbPlluBIiAUz5X8|DBh z8#RhLG~I&KFz!KtPf#h3Nmm~W1(J=XbCO&^nhTH72qLVr-)=_xVB1mu2RoZu`fxUx zjGS_jB*IN+7pdAhSF1{4yNVs1tm@PS?-m$LOa@O%M)Z;7RToHT-)lNIu4?Ox{-BRh z%sGeCp+gsQSpWe8@2(clV2ICBL`}vdA7~%Rs?p&CaIt~V>o246r^5%BW*|9D#%c63 zIQKZTDX(ResMBqdoky|WrLGhk4vy0y#`EnwUj4_v2mjcpQoED!4KzC$Mg76?^_kK% z8!|9_Fu*?dH*+&|HXdDHW!_p0NKV1Q zuIjSEz5&d$M;f?Y_p)Yq)DuF~l-n&2i&eHkU+WZisfkW8UTHwQ=fU`78_uA)Ru;W@ zC4KKq6!Q?M@01^H2g2!m@s@k*PKH_Hzpe%3kvB7Wnf6GH1Fyq;ZQD;k77$7`>E@_os-y1iX})+xAPfaEte*VAM)EhA9dPvfMD;HPfPA>*?Yj(g)YHu||ib1EFs93^L@8>iAN8z!($ z5HP$s1j}GQ6vIM6Yac9GeaGoU=@r2R$U@N$cr#k!^3nIvs)nm@W06IP$GXIqaXQJp zeOh%xmhm6yhA|%^l@kejr_f>@5b6T_QE({#5P(_#bpvG>0BJy$zbU2hEdsrL7r-hu zz|(ZHun*W~XXkx;Z@*^}M@;bqQ=6LO|J9XRM9`)~-eA&aOQ_^l6$iqiOqTu|&!6s= zNw)8C2Dgd>Nbk$f9W4OzK&sU*wF01K&gQvKhP|MYyD*KYCF}$MjBKhA-T#7*i&U>31DTkWccW zB_%?cV^(ef2=<@HF)C-#1UiWMl1ymxhY=4tN7V}Zk`#48qLw6T6(rg5&2TWxmIEZP zb)1}#bJ$%02l&!?s*lNkFD?-Kr-K9W`xm=Xq=PC42O^#FY=wv*pIl(`fef^pEpyFJ zL+IA9_w<;TP`=8A5Ymx&Jj${6mLkg2=0&En@!_Zd2I4LX`QcUHY&4VUg?HWhGUr+5uL_!LF#M!7RKx z8vx?j`_SI_z4vxww~+bBHc|gFNIun-+OdFwaHm+Xza%v;we%(_4got)tO8DlvDwdR zw$AT^;;wQvrDfWbC^89MLBFtwpS|vbnw+-@IGC`;#Se66z~dj?{?%uhN`oP~FqYm* zs`B`39jfDB2qum9=X^vo^b8oCLlNL$i?kg9_ew`%N^PQ7h6`Fq2UvrihFW?9@rvLK zE1H4-d?>@p)({=IC#WQj2PXr?(_?j%QQIU`MLa_tlv*(deS419J+u2L<`Hw(kc0C^ z$9tOP26Y@iK|UZ?7@n+HoPNGsQfw8HX~_JoUoOv)ZRrior+$-(IvLmT(qiDuseLrT z6d?v&njbVylamDR3Q}!)L8^Q|2ZX`LOi*z3GyT{M6+-`pIm}eTZ}nQJQX*DChrYU; zjw<8Rv6CjuXt-|z3cQ&hwdT}*Y2YCvu@n!mq`+Ug`%w#RKs^iL&fdh_ zomzDGpx4u8h{Fdp3r}eC*eP9Nd_A0`mxJhhaG~nc?SN_;%;y3M7lSS@uSP?P5Co^l zVU#FJgF#(!*eA5Ld`WI>4o>a-xTZwH=?VIlU%?6aSAkEaG<}n(SQTpYdY?~DI*|PV zP9>)&`UC|Adn$gQErCZmQ+DQ9W<@?KA&~h)~TS2ci_RK z?yD(7&}!N4Tdb>4sXFCsv_Rf>!=#-T`L*S2E`DS=lo??Q=RJ93R}+ZZjy>4fS8y1osmGzcE(P?;X1;C>DQCF*29%$iCn8@rx!{N1ceDhk>8boORW5<`3Qf3j5tedP{ zL$_v{-!)G({xyOt-0*klOy8A?(7zT%k+$MLsW;wIdn{O)VI#Ms2N@scSwgLc>r^%;*3DULc zbU~bJL=(9GjlPT_y-nYk9+#akWAdlh?+`$Cd-M{ng42vVZtxz*1Otmawl-67Ng`Xl zClm%;sBsLV8Edw}Ktdr`ji-&i(J^iJsFhgh7To&bgWrymSs7l#D8e53KIy%R26ulzRET${m!7t9N>Zw6t@DOZ(vP z0c!$>4-i<(d0X>-H>}3uaH(@eeCN)qhq)mO4yr0B4KP@Si_=>?n(>$$zEkqU4!IH| z|KYK6ygB7K6soOUsO7)9bAJ@;-yPR!#?%8B8QiAYg{a+JP+h4icsE1 zp2-xzBTu_d%>g5G?&1>l#Y>`WjIl5X4gLj3clmpb%^$qG!ZuHDY7vt2vqU&=Yu4(4 z2ad9VYn)R5kavX%k29>r~F0_mcQ|Zc{8(dkrD$m0xu* z&^G@3MgKIZt|Ge9<{T*ema^Z#E6zTsPl#>Gk>%Q*^i$Dz8^ER9Z0;ohRHhoWwx776 zCK#&ibFBKFN4lSn;A0;}Tu%LkFDsb5R}^W902G=U?PG!}D5|p`;UeRsMa*krNaw~0 z=%N4QWkSU<38B(zO;H98Q}t2&P}%osqANSAker$VGIWgYj?4=TQop`{ihS6R9u$BvoqF z%Hm_1o{k}P?LtGk^$P0-l3%KB?4N@pX)XE!4y5EDH0qBoZ<>mIqt~0T&FFFBKCFdT zY+RxD6+5thhl|R}zmm_1!&{YRrRCDpW64`AJZfZ<8zq#Lo^*AAx2%=nXgHvXxg?-e z#e^u&kr4OkPd~~w$0yc4^7n34^hZoL7v=@T4ARekg5e}3jdjj&?@f+pHJQe%HBQi1 z4OWyqtYgaD60aO)0{|O5YnlesBqw0D1oS}U=;*6P$KY(;(Qu&HYcirZZCyr<`*@U` zoRe>{Pmbfk)yW=-6eJu07?JbzQf)cekNB6Kj@2Jmu%2R#ln~j}Ss_5+Q#v_GE|14) z|7>81s5h7CWclgoPfwmFCo9jMVGa|sE(JrAC%&_eTfyZMS~U~3xLKuBf|*UFEVsCp z($pb=i)!(QWh$AM8vf9!LloQ(IfUX0@H(XQH3_#)5T`xXDHxy&1TADx6!V|pH@;ph zc=N)xStwG33^f7MLeY?ZMh;$6yJ2cXTBA-K!eg`$=(~qjy_z zqvNF5J7K?wITPy@x!1pT~$bxdJ zxU(^sR@0MeQ{=^BaIoRuc1jbGcFZj&n3bj*5z^w>i7*e zQ{ereGL_)xgfN-Vw~peY`}?DJHf>BXm406xRO)^j9|j-Y+5za%3J^BB=I7&5xoMmkCW9UN83wIp7x9>BvR4+qsHPNsC3wKk98H0<96 z!3kntW`|~yy|ai+!@h&ZH0%e^n372pgr||POvCE3@VW{JqV|HDIXTi-JH!uCMzMM!$z#GR*7>XBbcY$H_Q zo?HtT320d)jj^e-Sr!aq>eWwdIE<_=QLAot=)-jZcqw=(gzwSz%`7%$QxpZOr zw>gTlk}^bY1v43!`riHqK)eIXp@W}H%S%PKc69D~8oC~qUGtm*a#O7Zg?i>eIa7!$ zoR>sm;XJG4v!Un9gp;EShR;{wmq(^69`CEZl<>UQZ`D|SS;pLiJ?ACEn;rjyX%yGA zdZrYhTwfc^G|-IKaMOEWn%cY`g8?ol)NA_sy9R5EIRTQareB$qK1Ag@YhB9=Xp^_8 zP%!c|$mh_oDOmigCKLxTi*rQbDCc8%!xR+t0+HrCkdP(4L(>Jk>|zla%KsF2YzVWr zgG0`X?agLus}^XdW$6g74DFC#K*%l@fc*=&;7oU>De0q5D=l``U=XwfuatQZd)N3SgDiX*mae3Ze!l$M-!p7p9#RSuk*N2o{XZ_yG~Tz&JxAh_vo zv^CTsD{O8X;By3<-}~ngWC+oVM~fcCLae&vg+}fP5nD2K%&ZlOUV)gMmtJK%T3}7O zTZH+1R;FzRbH>azD@w^Et>XmctmMeGyyC%MSjLe#nvxZLg1Y;Wm~$8{nCiTC!yidX zAEF!+hJqH7-gHWbWpp80^S~CfW@sPa*{tcJpuRL&L$t}agiH_607b}B;0+;Il2wnY zbr8|ZLC+I9!775lxBMlZye!!GVDAmGqI$8UDdyEc4@`wvDm1N%g4v%A)Q@~p3>Jmb zu0dLI(5Nx*XWW|Bt8y7wXL5Mex`VIp!alQ8V^;zP7~U&PrJO4o$17ow;c^2~i^Z<< z8CR_eG=VvTlV;1fn~PvE9ODP4ScpH=Qu)Fp(JuDJ&To(c-PxKeiQLP<1U_`D{k%e% z)4;89GVq;j{OIOJj;rT|91i|yePig~*ZmVEDv82@ARt|Grz1A_VQwr{7=yFI z>y98e^{tEbRMf>J-kbHxQX6h^Wl{+u&b7IsCEc%!pJt(;j&GukesUSTRX;dE!P~9< z2tvV!fPf9RrYO6bp^MMt606nE&X*nfb$j2UJ&skUbhZOnW3Ln=osPa5qQ}=~|5oLb z#^s3q9gWYHv-8oHo_fg|0@H9bQWJWbz`^`R2tXb&ZN1D% zYkJX0F8jiP8+TGj;il=ydm%yfk{6krGDXv!_hO%3rXD-wwUu9e58PjEIy085qvlM}xZZ6q2KneQqcHjPjfx?N& zjq&|`MiiM3*=k46>#HlK$J7l)C+XjyZ@etIy80;k-mF7YWs;nHioku53k&xGtv%ok zE@}^6Scr87aC6NM!WGlEf7%(>k7A(=!6f5t~Y93IATVN^b9k8j;MK&QC}oCqAEz4)KyHQ+XkaNqDLO4FAnD?CfkP`}r^HT6 zie=<)$h3#l!CWY)T+m%jdELk1y3Aps3x@eF_*vszF^t9ujsvgJf2&fFA9j_T4M+nP z57Qy^l$e=b(g2kf$&FSf`=}U)-M_LIH~YyMU_Hg!4YGca(mPsYz|3UAvCh z3gyj(TEpJpIEOI%g{~_N{lT4TjINc^^k)CW`16;eAAX_k{~8}a(LVgo%cCFGtG~cs%ly)L2hdt+rCQoC zbW7LYX;`3e9;3>`)k?LYmi1-qojdi95O^rhYaw_jNUu|pX&i?JsGOjVlCMzBUPcYH z1e_#io{^CnIY^HhRyxvdE=c)iJ{^&7D*MJdzn37u2pKS&w_E7^2M9tABi^+`G+C_D z&DAx>3OjXin8ex6T7~aQheKKeGZbOo!3OedW^2zoD!JjI!5NNdM9g@A>g{dD!UgG8 z-u+nMw@r7KzLkglxq%n)jLnLgfbus1b=nTBkJuO@$Km2infWvrg7Wn7N#ki_wGRLL z^kYrUe)I)0+<^BDoI*cR!ymaKx#4Kl5&<1tGfT)49x7KJ!|#8VPL44xkU!8;;fb2? zmWl_Q94RiZFDB{n4TM57d{)c&5ake;7X&RLI@BP75tp8eyCyLVgJygA8W0a!iGF?y z*?9=|OINIF7ocXeDjdx6;bpxK?H9Wno4@zk|J-ly?QCrK-gaKT+iv%I&ySB!d%c!6 zQ}rW4eP(#K37GLY>BKl0_D3Y+OTQ|Y9i^gO7Qi2y3{e#C>w426bQ@My8(g)Ao8F^G zsz;A>PpW1i#7~}ifi5rGmD)#ErG4Z! zYR=Lw+fQ<#%nr0itIQ{ou=HPDBxkPaQ72D1g*O81Ha+=t^M*rsL*=PNouhoqpqE%g z3*k&>L{91ACv-qvza@y90k?#_@stL36%Inla?3t>3{Q@KSU$sNwiOLWu2`Uwu;Q41`&hg+ zi4#@@sQnT`g{h;6D(gQ+YiVph_}vbtxNN`d{ee4ynAwK=7C=gz*Dv-uzqfaKn;U!W zeJ$RHqv2IDR>e|4XHq*W;Z(z4hzVW;tl(6e)3jrMCF9BY8)8+^JT#DCq4}9O4NTBU zmVw_dB#qRK)wwZS2*a!Baj|t8;{$d#U+Y}B;C;IsSJ&5<>5Qq)U}Sf8aosqEY-4}( zjjB+{BWeI$;_87j#4Qa(g`}8^T%NQ}I?x}*;*MbnHKB>UCq~D8%>ghPo1?3nnpVkD zQHo|3dhg6RW)Er5OHumN2nr)MG<#MhQG18P-~r+#Y_Hh{S}|?%1M12cx{2JVFF;wB z$9@RaRQCh_HOHq4co0{_$qT{fv53xoQaP)bd?!-VC4!HXHg;xHHi!fdwr{*Q!VECX zr}{{nE21UzV4aCqsVnCr;5i=bvLQUj?0Hb+I*zS0yQge)xWyX$p+dJZ`)|>wK z)o7B1oy{_svpgNMVTia(`C+`i1SkJ2)P!!JNH$a>nUqA%q*(xD;akh?2+U0Dx|86~ zSJP8fEnhz-LyE&6_(Uz0t838n#V=-bJL%H6f#nWXj&v3E=k)T8H2lfBki*lD1Z6KN zfQd2*X1@`44TZuPZW_Fi@TdWDAKj#{JDq>z_X;37y>GcK;4#yz`9lO6_!i%S1J0v5xXumiv~Kg}R;@#01+2p`RE^-)lStq*!rBbb@3_Vb2J%R)&@2(t!?F2{}a z>iV)K5Xjo4$HDG2Ih}~bEEuW4K($H+s$7^wJ$jrsQ?bvViM>dV+;dHpCjy@5a916{ zbemiK+J6EFOgSx!4SA7Ud)lXE!jI*@{mJ;xfi+A&E!>Jd#NifEtzL6i8*Sz3wHqgX=Wnt&cnQA|9m>{h}DPF=Y0m^O2S z&#df7EH)?3^#b6(3#60(&u3^)a&X#(Bq;cgA+s5&!lgr=Zf}x|32G&+bHgH(qYM*lq`d zX0lC8%hA1p`+!8IkA1uG&mN{9+}hc1ziva!jh}PamfU*#?rm>ld%N>N9Z6`*ZvS($ z-KOJN2*HcN*m;7!V@xUhDA z0BD1k>Ay)`MHGd>I2~PQk>a6KkWf&mKR6o$n5%EVoB^lc*-t+g4{wjpWa@jxggxWZA;v`JQXhvm+^eR=*?%+&;Pg^F+5yMgm3te=yY!$>6 zA}P2k&n=F)?*!fOI#mK`ehZ8`@b+)NvGkcIJeP++N9LBj&eTJ}uGB>I|Ikt}udbBZP$eg(FazituBiW`hI~3CDJWot*V~A_thl zN9|y3J-5U)Si{U+>(2LE>IB_;*?HTeG|t5nICx&~k1p$8jQ0WzvygjpxmkURS2w{^ z;#njI3^?jo|&D!YRW#cIxmAW(=4a8iDX)6kRd@$J5EmhT0P zVqQ3gzXD#MB=+B)H)f314iFTfvuhemDG*or4O?uM-k?*T*vjWcYz9BY3)UnjPO-da z56+Zu0&XjX%wJ@(@q>L3IlF$D4%5>c@FyN-S1Di%=?jSjuDxz5)u{d}+&JH$DsRrQ zQTJvzNxtGTuW=LtI4vRe+mPJ-E(iS-7L1ez_540b9vZXfm|rgxVDPDm{SkgYl%sz>1rr>*0j(%^D5JfN+^f zT(hYb5zk)G@$3c2kSCLC%m9J>=ZOH_8&%Dzqb(TQg(eYUUKxVp4t`0ETYG6gPU*jB zegRJ*a0O`DJJeh&;M*kcwJqUjEl)XoH5?+kT1ZqAh=Sx{bn9{e-R6oq>h++`627Pv zwb){{3S*lPSnx&_Y+JQ_PXb;EQ09@-mwKSRkjcn=$TTyIx2C;L6r1OA-Ox3ClT)rB z8la@F5ICHzIZXX1`s7&Iu!xdnosgMIabo8HN*wu}w|1d?C+r~0;SF?G_EdkGorB2;fjwy$L_uU~ld4CR@=a*sqsTU>xT)Y{ zyxv5g1ek2+;1hZ_Ij#sjHeW~#S zMZ{K@Q-X~!jogDeJRhQl(g$8#rx!|XFRq~u{>M;8slW?EHZE$mmiIan=JqZmL@n+n2!PktWvt|uS8-o z%Jl(PFKB`@KP}jK&NNj(+fMO<E)c;)rbIepDm+W) zrGFnAjzcVI8+Wf?*=TfjF~ELaEq{Kl`_@Mo6}Sq)dk~fcG%Z2UeYYi=KiGy7-0t7!k?5j}P4kl|BsL6Tg;&4m3Z>kj!QPo%) z3F|8K)EFucx$d zv`;ZUk7}d||HD5;@0#)lF`JozC9ztn-1&wmj=O~U)sh~udT+Bnu4!gA!2Gd)eMUUK zh=nJj>^b4>ek}{N3Ff2;I9Mwp54-t}!HI}kxvKjn}Y zXLlolthAQxD2cq2Mqx=f-`FFGk24Nr)HsmRrw9}+YAR3;Rq*ZBAftmZk*XYNBm#l` zoV)no@39@B1n!bTHBZrcd86gs`ZooapM4K<*^Wqw^T-N2e^f<`m{}6}{m3MP&%0`s z?HA!%MGQ@OVZ$s9c^X0)$3nb!CCPbarC3mq%nC)V#U-{RsyZs*VbDAwOAV2OMY+XQ4QEO=j}?V=bU z5mh8;LopxxKy(zeRv@FhV;*?TsmHdM5Jm97NT1y!HG_h9Q;Rk+4Mk@)ITeKf11YiHKvN#uAfBQ=q1sn{%? zS8MRIa|taquCB9li~j6NM3b_zaCGd6ykLCvb|6P+tJ~|m_&WgGOY2ck|7y)Xsv)ZD zMHYl+V0GQcBoxg7=Ay`Tk7ZBpSc4Pf01?=!66X%Pk!j?-ve^UgD607}66yPNM|=iD1|cdd=g3=$jroN>ZEA+Oa3{Lz`7M$wP_%!5Et$|5?{Eaead)L7el?Uke4 z{%rql>Ns*)UN$vBQ}1=!kL4Lr6d*&5bEK4TUCtl`4;@5+_R}JXEJ9`^_vJP+{ZNa{ z8uY(fbvHOZ!n*2pNZ%#$ctD;F!VHK6xOyg2HQn&s{D%(ELg)$&gDsO#Ta7Y*m4lx%P@7L zEV-x??Yd_iDln}Dd0tetrqL+0_Vg>)ZYt`#_%G$l#J5OE52vaSB}*oEme?tILFME| zCB)L|tAeZ!66Sgcv2OHz4qyx!6=8nB-M?FQS}TG+mYXUAe(Sta8@*D#WpZq+n%jC$4CReu0WzO;X_!@9hfoOVtiD7`@8}KJj zpFWvq<^y-&3TZT}hDQoUXo^iI4?thusEI{_?0MQ8XGi-ZILb7PmyG5B1Cz=C z7J8bdamBx~(a=&OlZExs5#}hut?5DQ9NN3}3gT70^@O=yg1!a?`hni>Apci4YWL3| zi{bF|036l1FeT)KAOUDSO0wwNtuvsu!?9KlFtoFB0KuI{6|MIoz}4~Z>12i`WC{kj zUa?Jli;||UcT4SjyOnLce@?qSGWqf7D`45$b(SZ{^G#){hN62Gb@-f}r9xaDo~PTI zI1}9q;7}Bq50Ei<=A*zE&5(j))zd3L5SKYtF$fN9l?Um>hG_W zb4b+`=WJNNawY<7fXsmcF$i8gdL(dk3}JK)^xANNwDfB>uY1-pHK|7D!_1d_4?t=B@mzHX3o&)m!^QcloE7XE?KM7vgJxI zK#O64r$6%-%m6@v2SzrxbQ{Ul)x}K=>#l|s^G4fS*FtLpP!Aw6wYlawnmv#;^9a>} zklB~mf}20}A4r$YBOd;;%*P?afuvE3@+Alvq@y7N3cuTU)~fHe3g<#!PLqKtcsx7^ zV|uf0p@&0zU7}5-_7;hQmS)G|q-e1+=UgaaebLVcC!aP){xrPY@a;c=vSbFF<9wpOZgzVRqWrU@eZ75}1XgQjJEirE- zH`FNz%nt1_q2bXx43KI@M6d)?VRj_o61EUX&A4b_1t>tGr# zEpe%0FUjefW;VD0ZUP}%Q@?TdS8rjOF3RRq=N~8WYeXLunLEBO0J{D zqFrt$gA|l21Q~$8^=My=@b(#>;}63$`#LImvHU`l5u;I*PLww{I-5|olkAvxs=^~% zZarFwnzkZh{IBzOH1RX5mTIdEFllB9G@#rOMd2ryu?5OlsF{z!yeqRWJ|gN>_tqgb zQG}4N+@PEr=p~AO=yeD`nh_B!S%-5*=M{W50{MT8D0m>3M|;{ZKzvkgD3D|+Q;CH> zIZqH7K)Z8U7zgK~x3<@6Y}R*X)Wr=S2|9V99=$!wCECBfBh4U!dRV zewumxuCD9iC+6|T1jC>v5h#+#=hV?3ylvJ|kStT7$0froMn5c*ntpHuR(j*vDT$*7 zfN$B{0O@9u(`1}R&yjbIug}hI3>an>eOVqwA7P9Cs2AQ+T!G(+=jYH?hoHhqGY(bK zt9Rsgy&XN;3XD11zT=1afOq&O~Ye#(8RdlO39`Kjdq%r$Q@Jqtu^vx`? z$3He!8;{lhuSS98rp{`*vqy22+A){2nDwflQSF=-SVFpZb%rBoN%fi#DCV4<+j+5t z9F=BZ^+Un%qG%R8FWagdEJ1>;0ZuNGEE^T?Vf#SU8Zbb~iVBEgheEIl$d~`A^8VZUxZ6pHY1DLv^{O!9U(&>@Jiy zFlw5*anZ}7j}0g>j~zxgSvN!w;DF?V=LWVEV?Wdul>4x% zGC5IWkz}8WMU{G~D%copwHa)6iWeQj`zRGN9c5A@{m_2V!TAWmfY;EH-Hs*b_PydFrR2%fHA5;-oT-jaB4pqV895>eWq09&jY`g+SY+evipwL zF?Jzza_4xfWQ-}NPPH2wVu3R^f>SsZpm=$hWyKAbNjg*#kKU;5GM$)vM7|Y*50-Fd zU=)UDjZ^C_2fy`WQ0`j=BJOl(sF#W=blJgnX^2HFJ_5i5MB%J!KGwdJbVc=`K^g-) z7O-Gr*F6%jgH1|2xE=P_T@4{ZuO?Bdq)&aGSotSUe&!aGj2LM$YIQ3@A5g%|L+$y` z&&_#@Wg+Z(f*F>4X{Vm$#Eg2T1%{a)Vso_lqRH2(Ja|k4~j#`nyDb>ANs}2pSAOt05fXr6x`4 zWpZ;2*63lKQ$GwYZX&+xsHqd~M9mImJk$abdBlPPYO$$?kN<3p2ifT2^FZ3cy;l)? zVgop~G1l_!cfyG?Kw;T_&0O)AC|wyD?GcP^qC);=5JB9*HO#mdxHkvbk zEcK3{KZT2D-uN&Z+Ti=r*0rz#!Lpy8e2T+uBMOA->DZmox=iOAg%j6mlC z;_x+}20I@H)~r_2S@Em>n}~?>7#O`wgFV2@4_tnPMcDL8ru?{43 zN04`LwB2EEM&Gany_h?{5LBAS^)l37eNhRtTzC4A&!qT{Vh2f{-ea}p6%VDhw?HWf z*PMV^-<*PH0ue1l5dBZ2Z@rH^41A2HbJ@WWI?1(MHxg@}{1$OkO-=31S87tziwXMl zjV{#`57d?pDXi6)(Es8P>QWu0PTktv+rFvPir%-{Rl~9`S-;I*t<X$!)ymn}}gss+o|3h-eJ7K^uP*33c7n~{8gr24+H2cNL3?BN~46?xmn7)I6 z2~^^Eq;wx+*IdJ;6z6;JMAk7t*CtH@v=hjbpdCA9?nr|l;(inbBKwRk>XF=mk0G{L z*SI4*YTUZor7d&lVK)=zS6YGc{vjJ$<9vSRULCChfFIs+eNI~u`F~08j2sE z4sjA3PgrurgvaEaYR#g?alx6En0u4bLNoJ6o4Hsu_8|>Yl}C-6L9u}!1X{aV+Mclj zDpG-JlquB)j2=1a5#GB+Pnzc98N-L1|1gQtUrCb>$_OeG%iKqX}G zT+PQ#lz42A#*r|7u2d5wmaWE$%d}5_YC6PmP+o^nK;~-wG*f3fbO7W2gbd*JzS9v_ z>yRzAX+$4!K1sTD`)89G!dQz6GMs(mgJEuK;EiFPFcd#^j3O~mB+yVu)SAwg5U*5g zMa?Uoy-U-~@|O^d>NL4p+$7D*oj%yG8U5w8{kXVoSVVVeSuaBP*K74jajVF`cWKrv z0Q|#i_-WZt5Bql;Xc8aruh;62<*lOpxNFl!2$>&VC!S5?GPU{(I#C$S&aT8*oqbFV zEwA~Xs?M2cPGo=WJZhZo7j+*M&i1M>T!Mn_L>*-(=Yy!-eTIrbq&O#21Z$9rub=h- z>(%Izk>mW&ejs3xR;K_UqS_g$KaF*=9)WM6`sZpqI30|^fP#0-X$DcaMK|%nzk7If zt%UXNUi(#hZ?FB5Z|H-m*RiaPlfa)wH{?vg#)jlmM1Um>?1HaaydPU*nh2_!ELS!;J~ z`7wI;;RDf%;uLJd-Un6-S^^nFR`>`7&R}>#!sc_5UV!5T)DkO^%R+G3;RANFd{B*` zPxPu~BcaYz>kxI9UR*@S1ABI%3!mYLlAJ3(?~jyxhRcm~(r7fW?uUV9K~YTzU|sus z0LI5`q^edZqI8gC=>YgYI#)vWVt@mJg14bQI9}3z)!!iLUf4u`X6JoYv-I6lyx`*! z4`$8*Fg&@q?nCmD23OGb^ZC<3lu82X9hq1iJnJYAYe;3SPkU<4(IF@{Mn7z^R*kWO zoH#3pbEl2I9s4r~d}n~x!5JGba=zzLiO3{q?%(m7L_}s)V%ZWfBNjPGAsEw~tNu5S zI3GN@J8B_@arlH7^?lyw7ngHuKvR8H)Nt{d_U@S5thuOFQ(=-YJpc#4)h5F2e{Oa6 z!E9u(IwEPIXhf znDJ(PEni<>lC!~(F3i6=c!v2pSH}Bk;id5xg>IBiNG`ltc;%G&IqM5!Ka9D+afdY+ zM$Wc@%(syj+gzj+ek;@#&8I*VR{kSQ03s%&F72eWt?3I7JC|2U$pr$uTp%MK-!%wR zutaGbry{`Bg|F8yJtcnKzHm*f1tur=f)wEcYJ3)Uo6Uv){}Me`t(l(3FaQUJ$Pw-) z_AO7pcuynVjJ$fV>b*w?)Sn~k*XWhcJ=8T?r2&f}tTj4ggx=6TGbO~>daefXcXTk# zRKM6MkU(04-$}Cbk(!+U9sT{~@6SO|&>jQbH=Vtm-ivpyOB^Nf#8-l6{w-Q1V6TTSd%b8hytrvZ9i?)9 zeh#NdrPafcm5M2~r9%HM>gmFm3W_*t#6v!ED<0%3&_Qh5$5?`)k11v=wx>i$XJ$>_+8w31m0UV9? z<*Cl2jSfoEu^4Gxacwj9V~JWjfJRC&Y}Q~X2m`gT*jk$h;Nb4C0Dsv5 z84dEg?aeK8A^X-Y++uQ^qHh7p~FpF0n{*wG!p*V6yr6mEGw%XAzYY=C~6|(5z3aM9kC2&4c znkWuk4FCse6uzjx9)9o0alz@0M#F6R*~;Um&z?P7=3upY zI)KfC+p8x8t5SzH>#9u+Nu+nR6_;gxZ?|{5J=I5XzasggP(h*=P@(n)nU5tq{#ZXjoHgK)_n&GkNtUs>e zUYRh|#o>eON-=|4VD3p6K6@AuzR%wbun;-lwh>DRFOCLZqrZ2Npc4E4RyB;QFnd#m zS4JQNK;$p8+DT~v##*jzZ|(O!boPGl_C9Rwzv*?}xA#8mZ7GFtr`P^xd$U|zO=Cx; zv*VQ2ajlo}os}!`db7H0jtZl3dX_3#-PXuZC~e9lkDduxlYtHC#BR)0)mCKBBo?74 zIj%HtYLs+w4)-j#*vJL5^4Q*sK&lp$KuJYBT;+$yLM)YNB)_-+(0-FO6w?I9EzVjd z(!*b9sw$DEaxdH4?bjQy3_$D9m5Qd4;8;j8){eq(3}CxJowgj{$t(Td3iysa+(BwZ zYV4?JT7GKzV!l#2P@O-5%u7q!Z}+zFTbLjPZA{RJ4i4f|5V(dtPcY|FJd5Bm_sm5#2nNG)Tvj4t7XsVba}lYYWr2+{lJqRu?gq$|&K#qmH+EE1wYJNWH4 z{Jx{8KN@7{)B&RhJ1TyWQa5p7(%8~H_-Q&;N(kv&nfx5Q-yaPJ4HzHLdO%4P%E}c8 zE%lVf3S}cw!Ate?fvIkL?cNK?FL2)-uu@mZs^dW`aw;PrTC^sS5XJ++@UU0#FD`Ja zxuZx}IXp&=yE@$B`r@Kx0*GZxA}m&$9W5Dm`2bT=$)(VW`Jev@y~HJ^Us;~kJ2}B% z=m98KcEA7LFK09y`)X;PO`IxKtAP&EqQmY@-PiDr!O>G`hb0a-p%D2QMO+CM8ie;3 z>&yu($lSapK=dsy1lkobwFhoPk2yStB=1{!wW1}8IEmp$2H_5K&gO;Ev7|L#ko&Nv zu-EQ}5G5BFtBQ%Y&tMh9LjCPGev5mnN9t;HadVm?Z|f1M!uFPA>=BcyA^AK?`yd&QRof|qQbSO+;&medsJEsojOQsS@iO_Q1lG_$Y3JviEMU3G zstREsT)}6dF6kmYP28t@YvqbV6L%j|?pEYD^4C=}_oQZv&c4i=bCu?9Ie{*M%hW>Q zC8M+?XAf1QkSl_qG+Ml|$&3B-gxLjECE17-iCo8DDm9ZSNQcX;=}>s&wa0)Q_G9CD zZjGt^j%D8w=h88_>hJM#J5NNNI0IB@*EBRP!0*vimd15mLa~RlADQ7Ytc1mkUR!Nh z4zitj7U~P0dUam{U+{DA0|v=BP^+2i`mDXS9X7Tuy={@=Tjpkv>mW;NC5fSO#b%nl z2WZ-dm&w&MuQdx}4S@~%athwj_rFOp4yNj|J*S)?t%$lh(%Hqf<=IRDZskE3PJ2Hg}zY>L5v+S{HK12 zU^%#1Ax7I6pG7|``-gj&)HomG7szL@3Jwh>g@HQOd6yfx2v`IvFZK5#BXc@wyiG_L z;lKFEIAzSIygz^TH~dSLL7UI&>W@GD`18u+=lMhDv;#a{xRLin9eqp1$QM)53oEvAJ_b0{3YqQrpNY|q-rbdVPUc)QAWEu=fj$dJ))^p ziQm$+9IJxLCt^HiK{q_w*y+rF|b~qoIjhwi=^U&*lJR+^B(AAgzs; zJbp~ePiiQk$7alwTm zX$d*3?Y|I@{64Om=fVx2`)=Bd;(N+`wH6#xiUgyaz8FV99yi7cvH z(G?_A+u^aJ>K(qw^F{DjqMGlI` zl@fq5_2cU^8LV|bxJWbm63RRV#om!vN@Cc3BE7^t&*erAGz2jY!V(e6Bqq~|>qIW| zClQlW4u^NKcr1Eym`??n)qQM%pr!lra61`Y-E7)>qg|7xw^&C}HR|H3NmF(Ggm%z2 zTnLI6#2@Das$12M)rM3Vf(_7pSJseuC(L1%Ju_AxQ>;Mb)QFvA_pT~?IIIeVqYd}{ zr0Be~H8d)qO(6kp2pYamUf97#!jP%L8QQ`@I_%AN;z;EK`87zBi|)HT$H>oE3x%$% z67Z2W^{gCuIVRV|-%Xv@U6v1?R?vhZ+<~1wTN5zcW;)|8x+{&eYC*|x5?gCe^ zCk*yc$vroDQk(8zcwgyGzbahVua?yke1erqwTvSUXnaJ@!h%B%{%_$rjGfV}IX$&O zeIzNRX6sb5ivl7?f~y5dd1SoXW{0HkVaS~H@T#CsMqn4n`$!;3^Xm+M1zcw;Rl;fD zXP8Z;A{<)aiV5y8|D*zkhjHBap?Y{&J@~VF^yncu*?4}cUbkwIBS_{=S|I95gjzcw zkqEA(Y#8gfR5bntG9Dueh`R0|x_J&VG3}Zy!I8Iw4Qr7}{F~2ppoK=Hov>6FsRN7> z@e`s%sDAQO>zhb-e3gf*726$dfGFY$@gxeok?OaTewg+M-#$+6-DYxVx|?|!<9UG3 z9`!#rs3L(?{5~k&b*TjCU#60dM=*(ZdardfMbS2k`-DhKMOu?Q!ncWBv}XGhSM*cU zG<~3y4Zf3ozyx@g5TUbth|tWzFS7;q6prS46#N9|7Ei0T4wzxb#$q#yfF4J?a5@M2 z*^w#CUF~=Q+n&ON1IB>{Z9Q^U>HFW^RRySlE^&pOaxO7suFW&0f%ZNwz0| zSoBG)WtMb4Yx30h@RTB&7ZGn_*FGHjTYg+I z_Tc<0F{b&Kyqjp$f%(H0OQSP1MsPMhsYN3^KI*#+bN#_6U#dvedLrtIc(!>|9+41SB)pcl)}Q1l%(X9H60>}?`2qvLb|E<5?=0w=~` z3-{(TGFLhX{E&rQNM`UL!Ek59jdM?KQ-(Uf_g9Hb$kXAj7yJ?^#-r7`6PnaFO1Z_G zf$;<Tno?ZL=Fb&qpU~k+cXT~2smZ1485XmZN%Nm_hPUO>gL9Ki zg2O?UbxyamLw2zR5$e=WY^D0>RQhr2+2Irzj%lV~mUOC@07K4~iuN*{mc8~em%o&k z!=Aw}EI_2=Rm1p&_A+*qP4)&LBM`K?#5}ADLU_3|rxMv;`F1-Rr#F z>S7jdp5ls?^)nin?!kn`ZO>-O;y#;CVAgb2va{oGL4#awZ|2P-ZST8dlH`Y{1JD81 z#7-Gk@Yyun)#5c~G-p-h^#@yU@G75;bIueP?S+NwhmA3bjAARJA5)$gb% zr8%`0k^bwBe@zdAxyL3QXJ2Q7b`Bs~LTLssupGVK?!4I8?rnDV+P%Mbdv*moTXURW z7G(J6yXU}bYaR+WA^kqzKaZX@o<%Wad5uOnlCvMeVvw^3?MiUNdvcvk zMwggImTd)0Q6H03ovd*Jq|)ol#%O%De6_59>Zq9hV4_Za>uG=O`ID6&pZ#cvn1Fm$ z0(7W!5@k0-s6HHBXBRgJpMl^x6wIT&6Ro?06upp@?3pnz33mq7(mTy)k>R{7f=nHs zM0ivUv*7-{Ym%qyWVotdbh01X}Tf*XEa1GpFU@qA8+PSn&cH(=UAi^+Vt zMVSDccVbJSok9d%c71$ukz^P{jmyQ33Nw;k`&WK~XE_5Jx_Z@`k6$I9#IY-Q+KuQK z>l#p;>r77$xi9%3Z(4NkI=R1L{DuPH2GM6}MqAPer!iM`S%0hYo>)+;whUkkitZhK zpHBA{wC}JqhJ3Ikr;pgXGqJeMfq9_}BwXsCf@XrsQRx@7B;wWi;6m|srq$Se7M)Qr z5)lt2I+?e2W6iAfMW%`29N_5$ht$syvraj}n-&1c3|$~wH7eUR)fDac0*Z;Q5U@%L zQ8Lsi?4SEex{T53FG+{y4g(UJp_Ik<=A0A)hJnf^10Ytm2;_`G^vS&9i_!Y%*No1o)^zj`_o4})%EJgbbtRL0;byKOKel_hc z*j8FDaeHv&G7|6J7BfZ%Qwp9qh5DmQni5lpp7;%7*b{IMKprX9@0$Xi6Fxbf;CFer z6}SnGK6y_iN11&WH)^AtRin}H4U#llG*z$;Tl8O!idOlYa<_h`%rvYKyH>47sN^#G z&rQ;7iO{fBc|hUHd@zpv4jQ`LWGpfnLV_C1$5c$)Yc?{CsTs+&74by5ZkxeD$c>2Z z=bGRPmesjl&~V2#iIhHe)@ik$+?-sfbFkaJTbnvli!37rbu!IdOHfk7eh@=4+t;`g z!8Y_B%2Y)WQ$T0Tx)vN&660Z~1T`lb=4#<&Fnyw9=?m|{$QOu_0AkEZR0(oLDK|(! zV`sc2081yhXl`|!1D}%RfiUvZ3e@zj4+EWKqoLTDP|vJshBgNd_kd~@6Q&vM^*7yzravG} z{#RUU7wGut`fmk4NBdP^d#0T2kmW~<2hkO?UZ9LCA8ixWoN+L&*kg?zN_+e^^XV{y zV41u^pl?*vMonu`=MgE`we9>7Yn~=2NndW<<=gre0NL0>dYTn%0d|`bD??TmE7(Y3 zK3{|s4nYDAZJsP*6H#Musn)u+YwU@E<>bRxR#ElDj>~j`$rP*3mreFhwQ;;qdq$?T z$tY6?(ThH)a*D~*vopnDAI)6T2HO9~%xqCq^-NRxGCtkbnV4=Szq9JoEI6FxCPgVT zcGjA?UD$3h4VJEyh>)L29=Ht%E74vdf3lwJ_Z!S5x?fgYUL|9)2g)_zX&is?N(l3s z%V+*vR&wkWWUZWWO)!>NbisY$nB0-<7Xk7L9}KRC5FX@?w@iLxGZID7=};dhcwKO1 zbJP^G%l5ZDt-j_?BrXa6SOPvifg=e#mZ}g`&=j=i7X22Lv~02*>6|c(kr7|f5lVMb zq8j-hrq%cV%9ja!-I69=#BGHqE}t4yTOH_dbZj&$zr*PXK5U1C+fW5Q@oGxW-9bCw*pH^T9!0AA%$6zCC4Hg zKmM`twDF{|s!cR#1iJ=XUD$3Tmt3xjP1B)o(b+9FPp1}%3oEQ+z<>-nexq*_I3bDg z1fAJs)MIB&KMr#(Gi#VX>E%>J1aJ0u@}1+$trpu;5tgop*V&+7S09_@q8vW54do-y z(ceGQ9F;pTYZqpH>7t(sF045mo`SQL`ghHYfLqi}o)*rz3iA`b-kwQ)h2%|uBiU8} zMQcivB1RhYJsVko`Q@dtvj%cjwb0#Yoc91JT*AU0A2pN@)dyKbFwT+6U^^OcTiheKEVxGrH%K>*BxJTWI8K%{A~*xBEFque5C zMaZ3T)_sv`l7R;P5`4hd5@TnJI+^Bw=4fRnGT}BxJ>Ys4+ow4(FhiY$(rw$QfjNdt zi)RSyC>uHC+{K0ttJ2uvpU&XvoZ{Xl=B*gHi4gd%zl*8uE3oA?87};5b>Z;|_(Ft6 zNKM!xqm#gyTpfHbF2txfZV{5LHr;JxHcs30Z2PRvoP@Kydw1SB)^usjVE;$w&z!5a zJ?U@i=G`;OXN?ni;NJD0jIKeW5}pUTGoZ&4Qp&2;zsYUhjHWayhc05JX9Ksy!J+m& z=Y|L-%b_yRb2<@tu-ST3;I2BPy)hyYuxU-xzH^Uj80ODayQ$MX$IPk!^FJVWtxaFR z;hw?U`+D7uHzk0=W%}8{io|Uyq=%S4XCh=pMNGYZODPQoQ8i-|W?4`rMB zR|+-&#rezD@PBi0&by>$v6wbkgM6~=I{VpvxWzw zOSSN0@ZhZZeM`U2!4!si%lO!3!xhblv29|NQ`|AsKfgo*4qH8V^vGGB66E?wuo>pZ z6|v3Ls*fh-1U?rAi_(BF32C#}sT9E7b#z)dVf?;6PQC~b(X9*v)IUbaaR#o|lL#7S zFW+gROdXA&@+`Paocn_+l;ANDP)JI>a==9SSxnhpNGqguNgqZp)-)UprV?!3QyeTh zLd*%5vj8}@#WrArvj>}EE@;rv9+Bft6A;!kS|xBLrTH}+oJw?$@!$(kYfcf{!tJ62 zYQ`efR$0jH+(DIYG*Y=4ODL&&2f$V0S?a)WvMKhohYw99_|vhK@GgOyn>$FTbKqv` z;nn-Mwv`u&2^xs}Xh+&y^yX=LV&3p>t^3syhELDLXg6MG+jY%~vXI^&&7~h+<*hb; zjCR6mgwIrHW6aM&z&zzCBVtkBXOerC0(;4qnI+)e<-&rP_G-A>-6zqP@kpt!;P&Gp z`)%yKe)qP$vk%dR_Orq%QH-Id72U>FE&upgMNh6yt%AGSR(o|d>f*K%ZJc1}-OIrc zTpLjp;vn4d&FjI$lN=JQARp16P7tw!xYWPf^wHc5-*G}{b*4U})a>oTbPg5B~LU%A`m{b10Xe+s?7MVS;^?5y;k1o9~I1Sj|BjH4&Lpke=Ejp`P*+| z*41ca1A5i8p#m5JPXiqTgrLN8a6XCWmAD_H2$D0?5F!JlL%)?gGs*FYJ5@sfSkbVN zlZ6N97*}MsHub1u)BafaLO2}`a(8xuE77-}M_Wh(LY^#Kf%Mue-0QTssCp-sCo7gz zU!dlcZj+YLnHx~C1O5itAKPDR(34mzWfr&`Q$3wRxB@^LUqTDus56|5qKou+`OAqK z&lK(lkFUX(406^maSje}D&yqu8nyy6LrLhW)o})K3tgf}5+8zFJ}S@;m9%imSrX55fsp z?@Kc7tG)8_N~xhb=<|4hv1%Asmtx$Z60X4VCKPiIc_{UJY23G z{JDIj{%HIwiw_Ui8$VRnA1+t*q#}$Ge?qVKWpI3@2C;W_eSDFg^wc1p_jIf?pPs-)sNzImIIBdPlE2#$fycMBgB(8id_6dP0N;WdSJXQn zrJ3qrZx!6uXi=XwRXO!~lBmxgA3i|44vIKou26LOv#Ze{=1({68@9nt?-vCabi0NvDy&=9~>V(=%=4m z-^CZ!q66jxJGj`r#=}hgnbp+S@%$VxfaYl_a} zCWY?WF;AoKqQ_zgO@24h4%sfom!%C3kBmc_3;kDSY$9UF{~>Fsjd_`t(QnEY3OBjB z;c2Aw7Z$nGhR0);kqAp6XF#SgYTgLvj#!=rEmUEdaK()W?o~E1!KMzju0;;kgb}ez zri6^kc4OuF!^t24=W*#uzL^XmN(FTFD4}f+Hr2#*N&AxDQpXFn0XeU@*M-&%8&C0l z;hJ%B31U%eMYZpQY(NWe=sDO7#l@N^6Ycw(Fh{ZDK7og0XfLa=yTh)S16KFBL^UvT1-`4IQp>2Al6)y8w=42I zEecIr4w;LxK2n|Hukv2mEzNr_EypF~lsIYhdicetBwx8#J|mi;mb0RR8>x@wl z+~-(}#cs@`Zr$plQG0uMtz$*r0{98=3PTp(Y;j!`XfnCg)$Jc!go6!_0(S;h3 z>Yh5TBeKaQz`P7nb;ufn@{jwOTCqW~0srWJJ6_a0VZ_$4=#|sQfH$=;pEh$UqZy*G z23VpqO3^JiUJSH1;lbIM#?oHmfRX0sv)TB0hIAA~O;~OgtghBaIHSQxx|nK?50xqX z+B74F$i2ZSWaBeSKhAS47eQ0n;REZF{{R6)_^m}d34p)=v0S+ZV73+%ws=}!Z@68- zz#hPkXY7128eI&Mp^tN~Rx{pD=lT(Ig&G7bxQ@xUMuo_s4jJ>QKZo{1Zl_FvVoD{Q z!3?!EOebk_k^URPLou1RnFG%Et&YmeBfb%4y7_`9<-4}s; zHt0jxDlCb(>Xbl}VBeDsIzUwQz!jc7o*tH(za1yXgNxC724wf0YWtmgLfc)fo z!4I~wH~4z02)-IA$)`kx*u3_z<2ZCR{4_D1s8GQT8h=Dg?}^74G8`G3zY)vlIMAPT zC>0pGk{NbK^sHbzIty+`T&ZXY+v-InJVJ#-XekvInL0nTi{M5Tzf_y$XX8Z8&KLzB zu~ztfv7@vETe6V@QiY}6a?KlU(<>3cXsq8>`z-9K=X0|&__D7v2Y3ykW2l6MGUpRx z!p}=5?6mL~uGtof4q%2F*5#u(c}rTiV|yTSIJtN^5dn!2a?4D-{KHc8!+rjDI6fS1 zj;?OTVB}M4wi>;K$k%LiI#EjMSaBNqKQy2m{QvG?e3_C0G#LRXQ4N#q)uPK$KRs3d zCd2;n2r)b+9j2K2>-UC`!*NQ%))`9Az(d$kJcu@eCfyXz|**H-w z);B%af76b-omcxGHul=lRu>#k-*3Hazf_B7qpKb$nX<9-GJ;|o@Altx_5h!9b9-a! zZ8zH3-i|&%GLfBq05JWqwf_c4?zLZU?5QdpRZCH{)OR+w-yyssRNQ*IyS=5_5d=D~ zqPOk6%{S`j#*3}(t^GfM95nxGYk#NR?KTvRXr~hq+D7*c&=Ea*(T=vaHePJE!EIP| z`wzla-Po?FPQ#T|4d`v{@Q+9p+U)Ff+y8i{$f;t{%Z;}iuc0GUTmSs+OM~_UblBP+o~cE>|llc&Ymj!uFG|5(Z=3Z7uxN-+Xn(2q^Zd4FbF4%J`RTJ z2vgc^@2P=!yMeS{xwC-`aId@{{jdx)mw(VO0one7-d4|t^Wb&N^k z3eNZH5lG$RhLXF&(i2~Sch<*Zt_p;X?lPRqu51zH`DlmiN-`aqAdTFvh)}TV5WvKDBMK@Qy|803`m)(#y|`KdT&I8 z2&tLrZXXMakP{v$HADUWMV%DnXNJZCPZ!4MEgS?&ZXoiSaF8?5sHi$N?LI?|A6XuK ztE0yYc++9OPq7PrBBopP2T41+Ze=#dy&Wp3TJ_2E2&s2GNbpyfXB>VhnfLzSWQ4xd z{KsgV>0C=}$ObE;#}p@lWu!DNxQysIojIJ4_C>$voCWh$yC4od_N z{pMg~*+grq`b$H{bfM7BI3T7gsL?tMWh*ue3MJn7{7M$=dYzU{-zkf{0v(C<81^Bc ztEqyV98c_XDaE**@*Oxw(<(Ob_$ABwGHqm&FA2Ec zq6FUW{7_CN4*Jj}T*oMzpK=i5@n|!7?B2OVvd%45ekt zNf@Xe@1iTyZe$|js@3uU;*f%MszZWp|Iu0&Ws|{GY(5)P_i+*Ek2G)@fJS_A8*FCG z!N%pS9DsQW5Ii3o-Jva{$tO`7PY4M?l&5twx=x^onh=^p=cx|7GBML*6EW?!j1Aha zz@xn$H>((UYz32dptc(t*{YRow^NzbP`7lCNBtXbzX09(TXX@|H_RWI5gv=s_-I`o ztQJj!{JQ#ag!CgmhEv(_GdiA8n;1)xwU6bf}g!xfoadA38(xQ2dsyGPA2 zFHlCkk=u~&VJZp!gz*S^-QzMhwoLi+WKRfFw&G6y8pPj$P$+za;rMhb2 ztuw^%X)kd<^S!2+vQf@?5}*iEtdqjkf+f+Dk9(rej)+00EOFDhtBX=(wczQ!4Wxg0 zXt0fj3;d3st7S(lg=#vbIYu@MN|%7iZCo;!M7s3q231i7kVt@VfVS<3YnB*oclnZ~ zL4Z@CM0lus49|EWhSGm?Q4&X>vJr_8KWI#wZSV5mo!yMFaVI+gG`|ZV>Kb3|X2(NX zG+%t7mx0cUN#hFAV5VSw?ZCR^>A(fWBi)8?Xu(#_@!B8-G#3ZCb_A5gZx#xgfZv^v#HM*gCMId55EKgqh=Vz2D?1No3{36gsNcNC64DpWgh5~ zPdo6X5At>Z^7iXHYDUpr82HA9pb3^u3#rl@l1R`R5gTqNCgK|JTy9hDuFM4eXE@2e zWduATFPUeJ*ox&wPKSpjghrS?20L1SFXJLth)9=y=4n!b;@^eXvEAf z6^M%<1;c;0J*oBGZP$sQm*JDlFp%o--EG`?W{2-yuiLlz$pJ{+-5G{~C$n{1pmfgp zGd{2^#27#ueM-!1_Tq`?zvLC4>1XOp-_kAiy5{?4OMXBd%=&%U+k^p;cu1y|df2?~ ziv^L5Qgf?2V-l-+&il$b3{;BgaMN&PKS5((li}DVCKfkbcjw54L-6TbSn1TxRi>^` zg9Q?hA&;&6;tRbI+^D==K-0K+9FqVVpys2SlG_kO05s`R-qo=CXK2an;a3$Ca?~D=NCk0REr^x0Hhfv6v#0m;&kWMr8aH@ z^T7ajB9S!^P^si*kumaGLa}MzZ(n8Sdo&d!qe>1^m3Gt;>=g5IG-WBli;np>YCdJ) z_J!Cj9TBRh@KN^S#NxEdS}nyA3wCq2y62w=^R>!@hAd>eF@B?`#wfl@0lcL?>b|`NKyLxi+b_O=HauvAE7(i0#^Kx7KK|;pmldSRpu>x= zmBc$uOC2Fafd|nhKRibs*r#GW(NGv@YxO4>UG4kuTxzRPVmcJ!A;Mt@hH_m_ota`~ zQ%q6uqRF*RAK_V>SUk8?bdbPZHEd^07H*3Ez|6ZUzPYG zkZCO2Fc$i<^Lhh4E>Yv7Vp>dS-TE>htc1mIEj%FrF%~A_Gr@B&beI|izt!Y^uIPKrO`G^j>u-Vb zcg3q>wwS_MTKsuNRrQW^<@tq2*wITc>{0x7OaX#v&xxPt4#RKmsTj6pTy$7-?1=m# zyf5JrYh@?4c;o|mHTL=sPmn0!&k&CC4M!U?XW44(tTJt7XWio~C^wY#z7`$d(SaYE zv@jLB(1$W0Gxk)5H5L@%q0&C^nEAp(j4kguebe!!*@UrueiA}^yCdrrSMO~f)Nj)ix=@_Fc)WxVM&kORIp*PR+h0iw48$_J0((|+caXy+a zml)jw9ndSZ%T(>ac?`OMp?c=ke4s=Ro1^-aW_4p?^?a=W9gO=RF>cFY_m3HV^GUfd$>KQN5dU1gjS!ow|BlC zpl=J7czmAEv%ggmJq9iVFLc;@c&QZ@c(~|hrhq({^jETk8<&M$?jk7yZ;>S zyS~GA(tp>TzW;t6yYBe@YdYC`OYFa`pYbC~Ar*u_OnDhUqFhjafQzvw!s-TJPL!9my&9eiik!APts{bgXgm8&GvsW7jn1r zpX#|CdS?ILe%oz$4af269?mU`&}Fut;NO!NPfj3rde?J1{TV@$gM;~6VnB!$1Ne?w?v_(!N;ar^!v?jN-EaHZ zV8=+r>h|%u!?T2okzoYJ}UwU&+-K`L-pXGSXu+IkXePz>oC9!V(Wi(AME~A ze%$ZPm+$e1$Dd{<3n>w>L#iW69 zh=;!6&-<{{Ykf~n1*|8+dVJ4BC~#Z$d~OSyVci0J6LkU>LiGT_W2LCIxbbZ`h{($1 z-p3Ds`*S#5!KN(gc~Z_(HCD$9BrQA)kB;X1AdlB$VDV5Ej)*2#3)bM|4ZIyTe40GV zF*RZqxt^7jIDCEV4TKlz_r(%bNk+dnp$9Ug4V8f^{4P|Ky~oxA+UbDfN5`vF??`Iz zlA2#ybQDMN?%Bod4r4%Qpv z1{z^eWY1h(kVXt2(l+fV9qo;K&rwg?dd(ZAwl6}t$#p%sPuKFqfuPIJFXobY-ilyv z-z52V&{Rsi?O5;Y=J~x+!Nq@G75lRV+UIS3{-i*I4 zy(3>8bCx=l=t&)X+m+5c_;*NJL^vI9O_`269G~gulI%pVcn96Mg zk%AI$0FlaV1hJTv%MAcxF(00-e&>6ywK~T*A2{aDxVIK*))ZfY*2{!8OsmiMW(^57 zR9HGkCg&1LD5#(DQSeZD3Sf50Olg8KrRyK6>RlrNvUP)&k(yPC6!e}fPpG(ce0+At z$mw1EP)L0UUwigJTo>raWMOK?)yQf*OYbqTPO{U-__k|bvZ>w@BA*rLHmnSF7ERYZ z)>9d=%y6l|5DtRaL}5(^RotAeXVPf!$4oBTVqjsV04Bo;^+2rMAMlf1D&Xp`?LpAM zo|W$@yLp0l(Inh<`fHTh20%ZPf>skU_l-I(+NW4k)2*Q!HU+v)<0(#<0%&Oy*Pq~o zl)iuBkGIbJG^~4kcNZvmRT;3(W43 z*V9X_COXaDVAtQEjo%4+2WlIEa+!^*f-V18sGEbR$HD1sRh7=7`m>irQu(=iIPU#Z$^{`K$S@2S%)ohx zNg~e6+ypVefL=IyvXeNW3@UEF6^MKOMIxFW`kk&iJ-gQ=^T1HZ`H#Td!Os1VW6lp2 zU}Oq3s_mw&kaCvP1I9L%_hetOh@(?=aDm8{CArD`3@**Ol&`3j+%#bL3oKUfF z%1(kQ!-BEC4GC;x@S+}&4gH-|`5~Oc$$XjM#wbmfr_)Db*1SRnka~fZL#riaqiLzG zN(I{kNx`nX>u(kA{o{{t&TiPsW0PG&*-zj)>^ND)Ty`1caHXj}qYZs-^Ey&OGp(NK zNI2B$eN-a2P!)N}jzqoo_pDgk{_fz|2Cci6rB+ycrzIp)=MO@(ES7POoQAyY@Ua0Y za!>>Ffvg!G_Da*uLf?vqh_>LOiW4Z_deRijMDG-A)jg+>Yy>XozFVU4O2BWsz}4F6 zlP~rfSDmBmCXV%V)+9;);!@Sy;*=kFLMW3@-pgk<|sr~^xrRn+98jzRAA2Ks-ir(wu)HL36s@fVG zETSS3DG-i~*OOU3uih23V5_DSUmc#A=9A~o#m`zKkm3Zs!j|Qpt|QA3H5vDSg4=wMuvWM#})8Qh_i^8Hx9%+ zQ{0&;E2vtyd`{<4X(cGToIF;pZm z+))mz6Ew@X60OmdZ0#tH{3Uu-PMd-V{9}tG)g$pXp4wYYnc&@Et7Pj-nBbr~)kB7Bt>Ac)Tr$ye&U1RN@E05bkb==)7%s zq$P~R6@=lSGkwz{xse zDIFYUHj+DOEc)1*hbm-y_Y8KCV@oCH+p#FjG40}w0ZwA>YB_n4?Fvq2`67)E#Wk4& zxSA-=nR?adg<-E^lABn1dZMHTQlnvB(h9_kX?{ruo)V<`QO>Rxr(8|b_fTs6wFD^% zQ5#>DD0}L|(Q=hfG3hVo>ZJZy zqd~y&-N@`Pc1o}hY73(~zrMez^acOys@0cKOD1CNwDuH}9emFjO|{F~aLZ0~ir#Cw z{LkgMs1DfA!4zLiR}*Mz3-zcKxBcb7-bnBI>7hbHzCseBk?sfP4O#HD}do zI>wn$`E_A7I2$??{H~Z*7a8Sr2JT<526xr4iy`K`=3KuQ#R;6=42WDQtSQpH!XT%C zoqqqATGrO*hon_!OPts03nJf;Hc`jJ#R3DhPhrrzS!X(V=soO+q6N(usQ{`F)I&IZ z6E5k+5Avg9?%g>7?aQJme`V-jW24^$z$yQ`BQma}QlVScPCuz>a) z-cZ5s^iKz(e*aMYQm-3qet%iaPz{8e%Y^|Rp*6%i$Cm_kLP3k4!*m+|FL+#^hcndxkW)dJ@~pdEz{> z3;v88aby)!4|JDT%LZYT63Q~V6$66t*J zAnL2!(3ksTOnBZbtJ#2=?OS(UEPpOOD5)|>q z#aQIc!C1Xh#&F3Kt~fWlCPSO1rOS*{mCGzhGgI^;CxH8w6}?<(Q-R4aACHNnR#gJ{b&5`Zhjw2o6Sh?X@ti|)VA7g#ECsaA9QCfJlv{6TWaIs$Ggrp zuSF7vI*BH6x`=ht4ulhlN@B6aN8@zV0MB8*NMUSB(!Mlw$kyKsJra(+j^V;DM-!Vy z4#k;AK|_xuKnWB;BM3a5#xYUOX2rM!b_mOrnK31yM==ngid5tb*6feoFx?li0h$tO zRBO7#g6X;*=^Z(S_qP7%0xjLCco`#ugkB+OAR!py(L{sn5LPU9dy4wFapn?lFGO$-)QlL^h7ovIY)I5c=*)1g3+jy^SAjU${M~c@h*bjzBt{4K;jp z`jCq7r7nJ15u(+8wXE~G+(s0qr+6XnEmwqwHKj$`LKregiwmrPWw`;WdReW=!hue^ z#O^$dP+1Ejf)jI2qR6|`JfSiQ>tfw< zUnF^*)2YAPF)SqvsW6st;liB@t$m8lhx0Z)C%V`lC{_Q#4EkE=#T{ug^lFV=6ur*d zGwYq$X>C(!+4#s!V!gBL|JfY%o>t0 zs%sE$aQ5TasMP!G45xq1we&N0nJ&J(s!ctzE{Xh#KfHSO^lLR@zBhvi$}8 zu&hhL2nJpW8{+XGm9xm|1I!y1H#g-m+3fbCT?B_;E8(o7`=WmdW-1^O5-S@W z#1oYz^4gO*m(^r4EuQ7?%Ndz6IWLuxSni3OcXMM{<2)Z%7xO8Z6}g~bPDCDcp3{LJ zuLt4L6PW$Nu4oT7SUV4=Q)|(rmPz&*x8p2Yc^2U=^2TKo@-W!iYeDBX69Y zL!P;eTON9xSf09!RUU?$$(=UjS(sClmcZ@(JDX9Q0vHi$FuD=RH0GZ4q*z{%-2w_< zjlO9WA!k+rS(&x)5v_>^Bn@@^r>A-3A+g?ao_anwDJSuF)oPi1(ORpmwHVN*I$ctM z@D0d^#bC7vU*Px$qp}{MMbnzs10}>J%5C_1FsZAHpl!|T4Ir%Vi!Ky}Hm#;`)TlxNQZJ&lSdvRTj@DSNP9${( zKC{<5Z3}SNhs8~ceed8PEAj>}cEmjU(p&KS*5dpD&{u|cj8}a7l65hCPSf+bN3$q! z7x8T)>{He$Sy-@fGIq<+gP~AFhlzRwd=a}$q0{JxEzwfih|1)ci0!S$AOVybT=|y{Qkw$^Dk9JtrCN+w4fj$ct{>CVFc9U z2{T~mkJVBJkd3X|47R#uwJR0>VxQsOlBfF7&HL$>cenEULm!0~Io~E?m_HYbqQ4hB zanC|bF;YkQTmwdV_02YX2I?RB@`mGDU`V{G&g)Bil-B(7S9$lJ#bp~wWj_?yVRhP; z!I~k8VM^B7+1~!QPS(#lUv6(N-gi85J1f{ux22)KmSdRC-`LIt0%>jL;dq>}ZHzcW z5MB71Y_lz+agk@~iD`hW8{y^Uv=Cb<^^D(A%+Q{+WEw~ zYefq7t-G}9h;7FbfZ@M<+EjRhGA)(nX`Y{#lboPJW9V{448HMTY*~X<>`f2171fXD z6ebdJz(>@IvA|=9;}}yZX%6>pE;ia+k$hutxOg>@trh@tzNF|15}^l!4^WJre3=h$ z!@_b}fsM=e?g-?%`%VGiN<064dwZ~R``hiiTlD_urs|u|Y{nHvmd1Ydd0wyuSXFs; z3ixAD5>>FwZkwfME?I-|8R-5#-Z@2q3!G>Ypkz7>*L9d1(OGjQ2vRxM3|*I}ZcCD! zF}PPq??`pgEGpRX&V|aXo~S`BCZ$$#D+eEH4S{p>4X>bL*=&ETtV zxBD49g;(2u{>Dr^S2ies`sHjg02sr!i%CW>@BzS~2LQ*f+|(nfh48V|(alUzSb%+| znfwH8Vq`>ppm9JCw8fkk8yu=0Ala+Am62)Qvl3ee;dpSao?Wx=`RLsk1Z(?% zt)Lr9{ILQ?H^?4U#EPu#jpNDy$2d`Nkd2R;;8?ESZ`7$hiHu49G-9-*WD&zulvRQ0 z=1)y=x|-4sOdgXk?NeZ2M(!Z`o>jGxviHg92RI_nIB$xIToiNGI!{`=7$gU_q^6wA zdAHNX#wXSI(vU_zLX#>4rwS0A9~`{&aHGX5zNnQuS~x0oyJRlxKIA+=A2G8V^;Mok z5&1|Pte=&rC37UY8uNV7G00%>1ug>S!fH>&RbX~dCA6O@zW@cvmu%tvcX{1BiW{2; zeT05U7j@TM3-o2FT(#5~%7%O;3|~^K0QOdFnyf%JXxcXnY7zpD63A9eWu<$H8CSN^ zxDe22Ra@qfa;%ww$fHEJ_e*06BTS>=i(kV=@W7`xmQw&fK)}D!c4pOzIqfJHo+_{> zRU2rU&!JWbfbccJOi^m0S)!&ZOI#D9cX`0VcS2&b3qIH5cN_4WklzyZp} zMdzJ*ghw7D2_oxTz&-$s3sb;@G)%Xklmv*)|{?$+Mp_w zaKE0?P`~4mw(l;|8xV(~&`DnR4KX2`)0bhgDI((s!J(e!3zi4jL#SZBUfTz=+#R*j`R9>2ySkeNl|c zQ$Pzz$>{^CZsBFYmINGg7JEUF)mGFZuBy*Ka3H5Gl7bpb!FIM>E}Gq~Em_FJNmaoL zK;_vM;2agETR?XgMZNWBI9KfK+&;Q_|Jrp>59i^Qy7?@Bf8bu>MKnaKWrczz8{4DS zLOUpsbc%ESw`%nYT4kWVNPtzOKxhuOPQ#`a3Mp7+rI2DUAS$(p8-J-QzD^5DscKHk z`8Zhn;`~UScM0}F+910H>X`_N@kMSrbO77Nwl6^F_3yC>y@o8V;9*we)IBcwgD4eS zcE%i5>tLFn6lgDea_ML@mX_D4vk0NiQ(dK%R0upTwvzyU-2(rSsnf1~C2x}vh>5s! ztq}{ezreInI?SJM55FF6M$=5 zPBAn$%G+AbHlrnJBx`0>g^FS2E$sM(=^Z|2UlcyEH5MRE?_Rr@9DPZ_!A0`ZL*=B} zo8gq895}dHD~#~Lp1ONcaT>Uc)R4F~$VtUM2I95Hbn1#7Mm8rdftxcQ=G;S|e>6ql zoNA%1hr|UMZQw_?^jpnExv)Cu5w-~2G%)KhB?=3EsT$Ysn@BBR*27j`RT3s7?Y1Ue zCg(9^d)dhp<0s{Sn4r%wq!iERuh#9gYU26=PQ)}lgIZ7vPU+X0BNUKny!)edq;!C? z^h}IWvT|gvh)-==*|@B4-Qa_SU>H8rFsTU3X}Kf?!L+Itq!Ll9jE+OJklmXeR{xMv zI&b^~o!(cgHIww$vw~6pBOJ#lbEI@B%%e#5sYPjlg^zANZbnBp>Eh9A6_^;^k+roe z_Xtq?q{{2DzPJb!S5V>ww%ZQwRSkRZX*F6kbOI?upNkFI6EMrg6NIzrTp|A%Fp@3HKZFs)(JFk_Tu(ym0iULE2i7g^A66O*z zvn@yo7gMmx$-JuhIL7=7sZudDSZ@3<7=p$2WNS4Uo}C?fk5T!2P7#}08MRqvLT`mq zh-@J$M8%B5Ca);ivx}+MqIuEY7Kdq5SM}!bgo`$xlIImUMrF%<5-=91A`%-agkNE~ z=k>$svb{;6DN8e|J+j(VqjE_!I;)UNcTfogCj<()sxFVzoym#Z+X79Gv_oxqj$1B% ztw}Id;)7|yf|<~gk(NU)nNg>SS}Yx3WR7v1rYYIb_T_qok=00xB?IrERS7;oiCzET zuEe(pLuxAWdQ)KfP|g^6bd#@v1U&iLKZDA)?G)?l4HSQt`tEy`*u*ncf|s&96@xSk$6ff>xA;5 z!eEg#Uc@ap;s}MOIzjn+yrNZSh(I4~s6BNxQOy$f%kPR}A%|QJO>=?vH7Yx;1y@jH z0GeKV;cLz$FAQ+))y&-aeCgqmK|ep$p?jMB`J-yqj$392dig0MFLJHM#Fd!agPfs& zca_sIkaJ>l`c7%bfO>0~r~2J$k#X?VRb5#3`J~jjRE$Wq+>kZ^Lrlx@pF+5L<|Vpi zx+meh*1#Uf_=R%KH>f=Kb)tWhmdTQXZr+jm?ZM%wko=Q0Ky$3m9;=&iU}ZCOaN#}@ zZ~K$?fOg}L<`U|c71`)=frry+*9Fn@Ih4Fm=WPJx_U`a?bmGj()l8lY9Eh0NoPT=| z80qYrNhV7+HAl;W6x|k88x+SH$w3lB0axA)*CBGCuiOHZTCc2b%2n4`!YZAhp3mAe z?qv!5Q#j%wW=p}}e`Tq)7tWDWj59t(W{K;!YDQ!|kvxFJOLCvc4E}P3R~#_(8t_Ph zio?TKYvHNYcX3wgm^Q*fnWJ+E!a&94`>w?|b+(HjYl71{p9M!He)`w7)^G^RQf0RR z`(eEaA3{TI^k%(-v*u;#z|s$OZmy?Qc$A_gWgWU(rl zhXs8#Eh*$Y6eVrI{Mj%LE*l-!E3p%+mLM6Mja#hMNE{=dPxES|Z!xVKGUr66kEWQi zVU51?ulkH3#Un?IsHDEf#a~se^adoP6y_v?lUfUC1R8-h&_a9hzGwDrT$32^HLp#O z9ZE^fS~xWa=AaiHxZ6rAN8$C*2z+((OYKl}jd5{ajsjy=wn93Dzn8<9iTBr*c zxs`Z4Rpq)EB$ZX@f_0CphDx?Ad>IW)qRwAf8CsoalKcSW;9dReF6uza@x7y)j>hq(xlqTC zxzNqUaFliw2|J0Mz*i?DsCT!VO)|DMB}$d@Tlei-+RcH!zx;J$pm(=mFy`lf9GGD` z5hIgfH0@HIo=JJl{WZwl%?>5xCjRWa*2S*$IRwLQiefRaWL9PgC=m2L*boxOdgQDFI5QkUdDuyg;c8zz2iDAg_NqM>COXVBE z!G}c~2Sgm&TM(xJKCV>~{)UC}03OM!Q&tNI#b`(&qYAjdZ(8>X2^?EsKm#M&a@_y6 z)Z16qO8ul2{5!8+>d!v*5lA;Vj!uLsH8t8GT13DnDs&kob-@@?D$YP$xGEbC7Vuy< zW82u)n?M!1z=>H9ho8RaKvPKZzG3YutHH@074x33|G9>9Vm4uI$x3-dt?NOt+lKD%H7Bi_ggd+c-PBxwt>A@+=6#njW`Kx5Xr5PkO)wS z(K-b*uN)B;ua=p`z!5LQoOR`h^}Bod-=8xzMTHBUn+pusBLA=xRxaSLR0 zl;9Pd%2-9^zRGOI$qi*^ENc>g3rTNlC&&ow{9}{L^QK#}1~YUmlriR@LM;hm+Q7-U z4cI{?1dQh*YmpTBkufzZ>^0d%F`WiSJAS>J3TdIqN5Yl>4?*X-Zaj)-KfCqx`&||4 zh?otms~&Buc5n%aI-ZDW5b2BwpYTCZzvPXPI0dphD#zvyy6o!oJM5tR)%LbLu>Dm# zq3^3sN+jwZb`+I|;uh*WGrpJ|-KOO=NWH}09DzV(wh6pDzSJGGyc=AI5l0m>EZ=S$uFOiTN5(kB zdT5z&*uB#R7j_Rqy9p07u5p3gKid$%exAO&w<)Oo)>;!{;)>XAPhV5smIukZwjE92 z`eMf{JLeWbKQqnx2SKu90y2C+Sy?Er6(QwCKMyndtsWacA#SE}+X&?#f z;^feA=-X%kzgEL?w0AaLTDmuTA**AdJz4gF@U^OMABoLFN7B}a5FvNhBvjSp=*me} z#85-}c2^>6(|>IcYrna|O*R^sOK+Zf7<%8eyW@n7>g?IJh8?SQKZaE26?=Xt13tT~ z7gDP8!pTEmm$U**b$-;IP@U+gJCEe6)07E0)p>zVV#Mz460zV@o#!yW!yyPn^niuR ze5^tx!<&wc-h`MU>CSHUZ;FJWL}wl6`It1IPs?|}qB+|tJm_bbx0dGs6ZcZWTS*cA z@gu&>?xX5dQnvOol@V7x5%EYTdo3|*E2b>1Z#$V?v6(yY_HITAaZ4+OE0#ShIdy9d zU+5b1%E@_)MNon=kthAZuyXY1=5Wh@Gkn_|-MphEuLNF@zg4T{4{$JS5HS``7)se_ zr1g4MzXFu@q@&69O4Nq}Ur=@Mx7D2FPCmGtom5jwo_usuFKIZ_fA*QY8xkNfKjMtA z3`=*9dybgl7k?NES99%~z3+{#!o;KVrw*0fs8kp4c%!Z;QT5SH<_c-LYTv4#VdqT_jaq^utDLs`)xlP?DTZ=b7_~WGnOkmCw7mZJCBB_Bnlur z%NI}`){c4roX{GFH6>Np{6m$ym_cm)ukM50pURK>z4;Qpefx3e&mX_M-Gi?nSkD&4 zxc7kI-P#&rJe=;lg)$v{wbJLjnyX1X0PdNORi@|V8A!aerZK?UW6ZhUJ-WF+hf^MU zE-x`w4m&wgwG03a6tU~92g9SI`Tjhs>M>tdo{&uxmFZIrxu}s_8oH|^Z?il*^yvOI zbWC}S-i#5qy{J9vwqGgoma5+RG!?xUUbXZZFc8vZJYc~b7#P8;wX1VkfvnoBW?03r zDJP|Hf(HT(`rJxAZ&~uHNQ98oB z(@S)6ZA?aTE3>qd1KZ*>7a*Ee7eiJAQ5G&*gB?|~(=%!1LBi2$0Q_j^R&CDIwW}2q zs70KCc!S4(KS(>j1AZc309RfK{G6;#@TxZyzO=Z6>uJizuv8gN1GY;$y7&6(j{BQ+ z62w=n7=hRmPVvF!ms0(z*Hull5#J3_saqQq953;rH6W5?$?RS@^lngEy4M@dnrB>3 z9TtJyLI7cF7sbiDa_QA|k!1}$jGQXbzVG4PzB*LWVz_rdlfd7GX>k+*d8{zepr&!e zG^0}F;eo-=$PG{rUsLM44~nLx>IAC*{r>dR{-bVBTPs?a7CPv>m(PIy`3nEJR6o_H zGpq}=Z!bK;-a34L`Fd;OQJkTIQ82go;pK*AfL%cH*|5%m-ey2DpJzLN##kNO5faDG zIaC>;l-_yY$sPcN-K<+@pJm(czocsKzr7PylyRPGd8iAGc;&9F2Gu*gBo=jf&etN= zWZrS#(T$%_QtbVxX?{lgpZW!cC3s(0*N!lzL(_W4L|;^TKKmGDy?zA;J~&G$rX3VQ zGwDQC^;qSbu?`h7epmfDmvFwRu9Y+TtjpYZdpT|p)f%cQ2o zY1BH#C&yvogif08Va80nm`5u3jM)mLLeDP7=fv#CYFyv~eSUgZ-rY~^x*At_uIX@} zI>GXg@is}OWAz#rgM9mF44UsacJEKgo=JOkEKKeNz`h=$S6NRPxn%j|C zi4P>4E0A^fmM0--)v)k7D-qxUdm=At^-P@X!eQSqvk><;9=&-ZcaR?_)16&ZcsGk-GgpD ztu9ozvM)>#)+p@sTqwAu(G2;5vTC%$5?03owZ6`*`t_O>n(LLX))kL06b+!YYRl%O z_q|}}aQ4{GKFdCV7g$SE*F4;Qy(yn|>TNKdvY`_K%g$r}WJo`M%xBujrKgQoJ>5JV z$E0wx$SLoaelTnn(-ID4!%jq0uv2);$13l=fWtE!$GhEv7<%EqCJRmVHX_K{P3oTN zMOdiS=L?&Ggo*Z5UHr$wi<7z`D9~pL3pgNr5roQ?v<5)PLmdeEU2Jz_E3$j7Y=!0Y5aG?G9%!RNAy|Vcvx;1 zQm@B?)J;mH$4P<4;6Q8wn-B|Ey7MmkrEmY}0mOUdb)79*(y0HVSics7!inz%(5PT^ zDXtfFsBXw6udhmhq7*Q`dw&Y^qRb4Wj5 zhop#~)+%_P@Y-XN9)oPHKU}Puv#!Fb&u(2Y7|8mu4TBM2owwmIU}h+wmd)selWPt* z@ezd(5mFcxzJlRev_L~q1l1P@nb=~ePEWazkBq4^?CUQE4R|Ad_vsWXra|wD%O*i? zJ`JZfam_VjiXKbBbA7tSTCYtnG|eO=2|YQQ7MVS}Jbnss? zv~lljuG$Yv7~}y7mRq#?v!RR#%;=Hw^HL)7{$qZJmaE-WJ#AUauHVs2~c2O5fzLDpsj_7R=zI67IpDYk1-12M^S9sQKlD$G9rbB?SZs5 zDXJx`4~NNWUZ9$&i|!b`K9(YaC&d3|oXaWw(-8~ZNvN`l>GcIG%1-p#dSkC!hl^}{ z&N*-bHL+10zvP(Wuc`%h(Xsh7Z}hia_e7U2_`oWu?{Z?CR@Ydg;dc@>4Na|kru93C z8tRK;r<+tx2oi1g2N3~Jj29RAr1+bd*v72>Ht1<B2Q8 zSJSq+^d38`kwtpU6q5|o{TEkZFYzO`o*1d(Ui{MbJB(=y`{&-YgeNc2m&YD413Q`($PfdDWW z%rC2=q3{t~Uv7W1v-9;=-)@!70J?f2T^&(ZaZm%q(twc&F9!MGqORbto&6z+WyUaq z8RA#y6KsJ^@dS<%%dR_Ow7Oy0-eL#d4A8U?Gz^dCl&7u6J}0@Gl^}2z(}y46_eaHO znoH{MPp2vJ+KYf})qHwuGolvfn0*8^SU$3h(cie5Emq57OywfiTc%zw*tt20^aVSG zz@%_4GYmp;!rnV7Xv0bM9&;N}UWCR@M@pdr48sm@X*u7sED6DXC|9gU22mpSciG6gbfTgoBw!W*D%W4)!m+dB?%?FW- ztuYD-JbmsciJQiZY80vA*v?*&N38f%eZYqL8uAspRCR`1@&v_OU6lNI52{r?Dy)*? z#=J$2y<2z$YQkFk^V7KVQYMc^W!x3=K{M1ZWEwHG^T5=(O;|HG3 zg2Nd44>72rUlO}+KZ`eP1vFIc+M#wZ9IBlfPrvvJ1&P8NF&*qxz1z|~wVMxN%LExC z4;|1m%#kL+4~u#@t9}I{%7;}w*(&CPpANP_Fln~_TAXa*QD;jQ%2q?r|74&a-MlYJ z6)~(<5VAWM5Ko3bD1Hh9vu7+3cu{wo06ZwbH_ zP_7>+km|QDMa*0h=C}8w|LJC+xYq_eX>Wl7rbOBxW*lpSvZ(kY!DpMaW1?dxvBa+j zv1a(ytM!fTSt$y29^CjsS5du+lHywFr9$c%NnIdN_8(DTH&9eU#Q7aEj67oc1%xM?)IG_9Q~#y#ww-b2#%oe!rMjHK0Y}f3F?J zz+$NGP=2b{jD}N%G9OR2<4~oYHWOf5!bP+J4*uk^d>1^&C-&g;!!-ma87wG>KGBA- zc9{qY$BxNS&hq9=1r7#Dm1EhA(|D!q&~t0O*cqtsO0T_Ncn9dkDL*fZ3!LRnV@1MO zCJ~f(3=^m336gpI9vZ|Dsyl-(zxf*ZaRz_;^60B?x9Ji5Rgb>;`Wt$Lf0M&B@u0n7 zniuWk3==?`7EeR0Z0oZv0 zykV$UHU~1E2+=|PXmNL9t(+FATq3F!JUeZZ7vEC04=Wa~HIy*oEhna?NThShQw#-0 z5}|$0(eE&evBdk#B~7mIWKQ#t+bMxHT#4h#X#;A~l+kcdgqb%g6EX(=HCaZfKz9hM zx1S9c<5T!|`5xrf;Tc78FP5WW&-DEFI1%J@7|>G);^Z@oj9$Wt&yn*|bDo&*O(**y zoIODHraaOzS4z0g7Vq0)n5xY5P!NM8D!xt$awO4Y3N~#9<7!2Oo-a%?@gV7+J7!|n z-hk;@JF9pCM@qoKyR11wD*Nf>)5N$ABqgP1rG52S}EhzMS)xs7C^GaB^DXjMU<3_FJ8g(bxmOQ z^7@|*)lN2;G`^SI`y{&M{btyHLHZ1|t^2Qm3>1iAM5f!Aa-pnoUq7Mb@ziQsd{p(4 z*wZC8!`~wdLpW5^F%(MElV~~;A!Ge=Jt=Fpfg&MVrt&?9ePHo+^(jWk1+<+4qFeTc zW~i1e-HOn@pwxh>t*t+)Zv%b>8-uEa*Hh)F#N^L*_+(NbQC@QnQKB+VSckcG<%VCp{Ns`p!e(#%bd6bnV$ASMru ze6_tDeLr8#kS4IZU)u^9FTX^98X~_Au zM!5PTj_dkdLhPsR%S3(FvR1tcmb{Ls#`9I~s7u2{hVaHGrwC4&eHUIjfpN zbTl+S@l2xGrzTkDP7NtddW6#n#lMJjiKuESw0=X(g<(3MqKk%^$2Rkecbic$yWAcACEd9 zRB&Ru=>%s(9dt9Q&L(%b;9P?{W$=l_?E&8Lwd9aqa(??ImJ7KYO=nHzS!d^sb zM&gC^vo8CBOb&NmyCFV|DYuG72r%5mv|5%^EBJkoEvw-4s48f#B-73&CEmKC7{z(- z&>oP|CjfO+@Lq&5IMet^Kn*vcsB)w;7|?kcq3J|8dds#O9{QD)+LZx3dj3p5>AvO5 zNDg<|L%`h25HfZ-fXs!TQ4mZ4&k-?Wkh&eVGVP#pxFd7aF-K&zrQ*n}K;^IutUG1P zxZ5(NC{)ldxl6TP*h80l+#fF-hwHMMK~?7nN4tD{V7s4bStEVt2Y74H|8rf+u4pSEkuqF=)T|}$ze3K?Kw&Mc;rN0R~i;jBKd z-zD+G6v|<%3ZrptIs%{Lv{JH6o=d!gj_W-p#1)$z@hf537@{8~2;(mpZq6E!z zhGHKVz#jdefSa<)JPc4Ld@0h#Op;_kO^PWxE9YHqx6i{1+nTA=8BQI3)R$4lhC}Bx zyN+&qi<|0Optqucl!c_Sdg2NAoI&@s-IHKio*S#pe(VHGC)MnGx^I&3pK`fzk~g02 znn+^9y+sLJA4Fi2t>ntQ=g~CT2ad0LmFf7SX#FYMM7UMyQont_vO;BBPfy4kFY-d; z;DNPinSD&(NJKX=+F>+=jW!vVe%$?UNRgp1<0U$hbKIsoUTd@$Qc$5!+S4@ZUa}ds zSy}|M#RxlK6v0ZyqP&`Yn`=%xikg)@aTVF@WQFuA`An*@WeM&{%=%XZy=@u(`BR$!|^>_ zcXU3*FM-JfxOks^&f!757oElXeijzLY%30EYexAr+7RNvuM=qihaMK&>Dlgg%H2ne zIM@?`o9#<#EWAswHWw!cS8$Mb^Kd0zn_OJ!0!a|IQEyPuwU`Swqu>-pws$C;o7&j} zm~Z?7r)i93YQOp->)^v(*OyU{863pPTp9J!cpw{`<&82vxyh#ZP>Lm&TOTZ>Ufn^# zXW+h37=xEetWmERQBq4@TGiyWxhU~Ice$k9?@A@Hp*Os&;mtNYx%Giib0wy#w?4pM zfGvp&Pgm0^tn8wgqZw)S-qlCAv^SfCgqH{-P06kUddQ~~b}~*twxyH( z#<4`QUnFd<*Ao~w_Kw}=?DpQT~uS|gPuYewqhS|7Ftej~+s1NiF$-twEEl1ge+ZZGARX*|kfyqCT z(V95B^V{bqZ)5o@RCsuCU$7m@0bT!b@chRi?O3LbT~+vwe`vM)s2d&5@@YG6&k7p@PupU(Q0NRYU}fKKF=N6!=^WoTZ^U#j$wQg zZ-V>&1yBpn19az#CzLvhS5~i))?%mXm~My`*vhv2V(EAW#*8+jG+)3hO}uE6wM z0pTg?z6!Yr;0lj%K#HsxG@6i1dx`+3u@nsTs0(lQmoqD`M9b2y8zmMyfo9Z80O!A& zN`E}ch$)+-BdsbXZt0jIN`=GnwHv6^t%6>h`5doj$+@4Y#w~&?5n&!~zvgum*G6Lz zYH3siNf2c2yfYSJgu`M9_#meaBh)Ih^V%baGOlU}D|qy-8j$M60Vozu4VoQh)AC)B{dn*do1o`(V|58b z<77f)zBt!i9)@TbsxDk3Y@^egAF2xsa^B~L#}y}>BQ3UgQeozIiTYP!;L&*wfO9#` z7zZW>CofrY8{(xLrZFvr-IE=3U}iZ)Z!2K^r<4TL0VfGT`^xcyt2Ko}^huHZTGW+? z7{rUyOXLOHpNgR$RT6u=l!gwB&R}9G(KtvMs~P6-1M+CH>fJCPeH?I1MkIp@c6A73 z#p8wKzYavX@oF}^+{d*Ni)mwL$3XCSaYd)w2qc}Zl@)f8631opv+c5h)*o#mBl0M2 zmOO7FB9elL(Z<#H;bpa2u1-SgbwSAyL<&2xSWJ|hDE#wsR#clor=k(qo7BaN!mm5= z?H@67OjC#PrDX~|+=vXQ-nOR*3V;m(FKw}^QinVm3Lo-reK6y?vJQFbxuT``VJr?9 ziEO|w0r6VR`6PVGI4&-}t587S&bG7L_@6eX^F9mA= zKUM1#Goj;k9NG=y`cD-^Q>?*M=awgoc#G#MRkyCD>^eC~m58IP93jHO8mUt-9c%B0 z{kprwZxYoO)%0?L20F=33`isaYFJd|oQxKC`ZyQ;o$YL=k8=XTuz-o4kzs-p^WN6# z33`vZB=9xsA%YLT5#!mBYG>%lT z6$QXQB*}SzRPGpx6BEVLRyVKaMF%%-en*`x;Up-p&&n|f>+52$b^S4dl)jq3n}gWi z!|xH2+TcEQj}k#-W42{AB$u1?#wxG?S_m}aG$h6OCKa_By!sXFeY{1VE*g|@b29xp zMYRXod7+IQS#ahf=N6Wnz^JGW(oa;v{*$JEcGP}rF#3*`f=*wl3XgruV3t|aJs_3t&n+KS zb!fAkl&P}%42Q$0QFA{iX3$~1vs?C)^AS>E)!|>43ntf}9;!1)N&<_7Zav$?HVBFh ztz0piSq6#8t5-R07o;qAhuY?Jjgg>?Pc+A&1u>la9#LTueP-*6JDBUWGvE+D+C3`R{7!#gouyji+l|KRO62i=i?f7%dK*V zc>}uh{Jfmx7!-R22gZjJOFoI&>&oVj8!Tz6*qk1fqp+8IVOPXFN*O;{!JO2#n|bgoL zBya*8WxE3%>;kC`HO=B(OGbPgzl6+D0|N^C!^!fpFS5{H!)be{+}dVn>)NbpR@Uk; zSvoN;^o74qG5iR-tQF&7rUL<3K{Z?5D=7#KdwOnlBFIhO$F<%&_|lzPQ*^^LoZ$lU z)7Kvz;eXu+yU^dGqhap>)q&seRKI#uXvt< z6FUB)`q)n{#0-o31|5U$LEnzCTf@(L57zYM0?tfj-qsnKbi^6;Y4`;+!<7Vk7bSdY zmV`61ENK{9^dRieme(D3y{A;h>D4SX+Tzt3HF8{IoCZ$iHv`Q$xdv>mus+T%ZeUk; ztO$iFDjxZc-Eks8a*c-=D&--$%N!s(p(Gfb2&5mDU_rup&7tL~uJe5QJ%Lh(A1Z)C z6W;Xcf_D7L0cTUPV@Yz=rxr_mIGr9~^6vRW0k#?D9`?k2ZCAElISn`R+-jQe)z3cI zN2tE#*5cHs!cGj#&4X-mFZZgd9;+@t!-cV@)L1X7ro>I!#^a+B?*Yw2`(h>PBkF|L_M^z6sc6)p0o2~7ywq$MwtHpq{9jI|#qU17IK>x78 zA$!CVyr1UfFBoBojoC4{ztYJZ&Dp1De@q8nYl(1#IGaw?tSnY1Qw&le_9W7Utu=B0VQ+6(F;AVB#q@@wByjtH7PB|Bef%8{>~mPm1tLOS zc{=Y|T2NS$&N_0*tQxPT%J@cVNjwN5DWhf4^*MGFsl*&mbSp2`KP1kG&z{$1DgJyO zbQ)m4!rNp5oePj0)>p0+ZWtJ-t|maGjfaQtR?TG;Agmm^Vy;#|L9BiQGX2n8l#8NI z(Sr{7E0Ff+?8*U4l^#-^2fJB^>X56au13G8X2)(-uWD?Xs%?$ye1Z+1Rdx9*a)fCg zuj46jl-nwm*ATE_Q-|79)tn|@;hwd!oV0P-oRt)}87HEyrXF#_%i_DdmWqafSVgQ8 zae_+ZHl`5GJ=)F2WQksI3e}e;ap^9dn-AIj z7hhQKC~UcGS@_41faxVE8VhFw(C-}QB7F_x6_Ut1T59UbXd^{WR^@d3j5)vO5QBm8 zk^QoxkGg??T>>~{F{gv1Q7M$Dt>jx17jrJUB!3xqYp7s;_Spudpb;lGNl?qnyO{uD zM{f_aLDtnp)=7>U17giqqy}xOjQf#!8rzI};aQ9L6J!Y!D(pSlmg8^7+lb!GQKd75 z#i-{qn5ggVJF1{Lj4|JhOg`|Xatw6xv>d^N7G9B-jB#p#rwDD6W#x+>YO1_Gs>d!b zz|U|vTyspYN>;&z4&9}+i+=c7N5e{g84@uY{Ul10{i@oaJ8n($7rX7+8UsZchx`?;otgnaA6EvVg@Aiyr zfw11PqHq;9#DIR>Ynq29e& zZyZpp>BdN@UXN5|`=*@Ft!trR*T*^ zowGd(JO$QYTDmgG>U7!_lV#NApTNe5yCR0g1cBfd-JR&w^77fDqL@KNOffFpQ8#Iv;DGx~e1{pCXcaZ0=oP`rR(fsMuY;3)LY z?NLAbdOLza5VWg{AdrB+`L3Gc;;e|698f{?K8=LPR@KTj@i42kI!GXqA$b&-suGQv z^%F_u6g#ehqcKuP0m}y16wB);s}nd+Vty*g5JM8S+=QYZ2t~N_LZW51<&0L7$=ACg zLR;%eUM2mWR0yd}wO)6;@>HF9EjSglGv6mtS~b-4KHr~OC4;<*)tgC8%bREbH85pqOu9#-@2 z8$uKu$T?m30B37(>jT!fdV|)IZC;NBa$>$)p&OZ?o9+ND9ooLonJ4Ab(~lpSz!I?h zh1T`K_Ok>D;V0(CXcC}XCK9X^uvIDED-L}{+#cPSYHAX12TUwKeYVs7Jgn{F5YyFs z#FWGWqJfD!K}iC;72Y3-nhSl0O)4elvT`oAOFxH$tKdj%bY^2^eYbIYllsj-~=9aFv5bTT>3xJB{#x>j5$I_uKrc@?wlLU1V9G6pkvTv zOMi(LSqj{S&p`b{UqXpcb>$+jeQ5?iZ|uW61`SBHcx882SxoRaPT788ykb2!kjNWP zCTgR045z0qFuRV8N|>e(KcWyp9<4Msy8ix{A@qVNj+L_734N`UKhK|#doefCI>W1h z@@an)X=i_o!En3fI2nW0h7XVko&j#b6o_`3E(dHodfxm=z}lVaUA+mA!`sOLz?|}J zGr1^Hg~U=w3AwOQ-%iLRcoTuLEWz$}DAFJ{NZ5_he;SG;E?*DG8>cT5hhy_XIjOC| z++v`Sp!bO5J9$E2`sCRbx(a0c;gaj z8#U#&4a=*FJxYecI>SxLq2mbIq(jy!hd(%vE?14lTX~KT7u6KnBL^;Yk4kF)DF%md zqM`{`Qe=D>zJ`oPo}U->G+zWm3PNwN+^wz~bBff0Y%2R@RV_V(X{$3|u){0I2CBHR zEIAUf2L~KH)&7%#JnO!8TYivrLifv#&TAb9A#sjeNYU^zSdUY8oFuzuy^r^8Yzibh zXE)N)yCkRAJ07wjBMiIfp}X!QrB;`F#^$ku=8p zBfN@j)u4&`TJKSYTbxxFdkRRn-X5em{aUsZ>xgDf)Nz$k^mVNA)iwDjb5epEW2M4O zE!M%>cEk7#cMEGrNqCmOFK2KFV*E!C`^+lf6Yy`rYXYasY64tDH5y{|dKe{MqhJLH z^^vJcZh+4yE@3l38#7vD=AFasZ+!^Y z0FlG#uH=cuUar&@1PppwId12^U$D**yrHP1Y;L0Bk~IygoZjhtH^oas;;OLdAa;@1=Ga^<^NqNy4gcQYDnAFv3k#v8*^}%Ll2^TpSpxP-CB~s($ z+9|&6Gc;dhyr)D)ro}WE{5-Hl$o8V{?rMJ`!~3ME8fiPYO=ioKZkeawj6@|d|D*62 zArb$X|ND(2pK1M0F@^t?iCb;jj?9IE<}Y7tlWDIZEE$7`26E zV&vvsS0o>p962_YE!8ao3}L9vqNTpxcf#6%DkR#x+H%AC#9&+M3R{l0Yu(-?TBSWA zsH^y4x~^ibkvlz&FPdymzMy!xH2H(EWD@h2yh}R@*dr;8XOmguN0D$(rbG-{_8~ot ze+EHAxGQhL@NHs?CU4CV*Ic3oYr^l5oKYurev&?##Tr z6gT$xWSY<4p}vGp81ss*eCkb4bcwTvZa;FC!{&8nXKTOH&+Icpet*psfj5z(YK74{ zJR-IuhFAXW#v68>fz5C@nN}zH)Yh?QRb8r7f1|T}K1r1Gdl|Js(7mjSQ)u+;`TQj{ z9h&td*F9Ai`+wiC)LPhk)_FR#P<2m+F(`PYXPX&2$PRknqWV{UE{VH$xeImUW(0Qz zhtj9ymHdYwPa;`qh0yQ#Ck)0}%A8%Tx41W0Fm0+c%WBbAX%w`zSiF&#k%@2M4-nX5 zG)ySvPMVLa$l^E5HuloW-w=5n;5bkpk!LH=m6gCleSBO|kU$S$+ANNjD92O7DqS<#Lx~5J9M0AF`_GH6P1WU(Tr5*=S_E`PP#J`=eQE^0%doVrWwCe z5U~M;!ARDl;24Rw5;6lj3%i{f&l)VYn1@-3C>n31{%u<@xo!Z0cz&4Vo!oRHVfWnW z_}Ph^*ezpI;P52siUq*Cdv@wsHLU3|5gj`{55ION1O958b^Np#Q~GWM-6(5W*J|V8 z7(=p-(Pp^L#s$Wojg*hL{b_F|0}FUQrW7Y*r0`_ z|E*dwe zix8_WgvT7u`{vMrFd7v=4=uE0mv$ggBES{wboo+Nh_YZCbHq1toi@oJ71Cmf(E&ED zJ)v4B4&8njhR!02m5E1A%evx=z*f$fPRo>eic(cx=SKlv~s^5qSh;C2_DC zp{IO)0S?%;`oAwW&8{J}>7ePJ)6%dxD^D$ZkI%ChOb1U6YOF~3u-KZSurixVIc*OTJ-_9v1&@-pGpV=0+(JYEq>3c!xxK#_q39?I~ zmU0c`?KG$xHmo?5QRVaM=@*^bfd*cJo0oX%Y+c{tb;N#e&79kvW~*i^HkYg2ijMow0+ zvGXzoVKb$NlnvqDJqzvej1o50?I%og!hua}4J!&exNCjt*@~hHSdW za(Ef+1XG7fkUdsf>SEZ>pr9j_a><@+IVU}e=`R(Mj(y{0oA|i;o+wq01If4L0AMqn zP{ie&Dz0p)iOYmkt>)v>@+>n>w=DrkL;qTL+)9qHRSDN{oQSv|D${(rRKa&G4qnWY z$N-ssyE&H$Nhzyd)lL++f2}9pY}xML5F2-*Tuh%!U*~uwO`>+vb*8q_7Q}=54sU)$`4qYY$A%B z(OCdUK)1g+9Rq{ehyiOASTZ1T*j7pbX08Kb@qyz-Q_(;-Xv0J^ZPR5(ac6n;$3iT8 z{OIyAU$w#~ydQuEbAXbQyl#)&+3Lr5X2S_Q=-sQ-d+DoGQ!UsR&itOXxL3r6b}b`n z0uzbNVx=TS_SL~6ot{cAt8$vYRC%NoIOcy?SQ7hcgs3layV#Q9*M-%nfhChufh?^W zjHLa=-aE6>i``Yqcm_2N$iFc1y6{B;X`yYH0HK73mlh*v3&ieu=$QsUGF?30;<_a2GP=j4)9XC) z+R^`#6iEf%!d^!SB++(%q;unyfCj1z+X(7d&gECy33HJBl@wJRZorK=!rH1|RY-zB z8IaIO-4b@G;8+XOzwwun13}~fkJ%mT814i_H}D))m)Bh1)6U3SHTHIf+ zJi^a#ICP#_3Z*Lx;T|%PZ_x1qGe@AduG=AhP*{*UdYTn1gh69)uVr2@8(tT%a_cdN z%I~rakxzR=zs4)n_p*WxQ?A+CUewy!frbdIU!UDmZC!IWqIVWL>qY56joJ1cy=~#< zD%6XKzQ?Yij(P50Tsn@Y5Bz*D5m#>UoXzslh;sGiQ&>hTG$JqF7o(Mx93zWf{{~Fg zd5;}*PvVwUh|e&M1!?SD>xmFf0oFNZD%;7)v>LsmR5Muv(&aQe%TZ6Ck1*HCwy$n6 zeq63|+F5ns^+WCiv4^j!?@-xS)XQT0sL?o&@U~}18=82wk@6?roj@U^WOO%U zT(qunyQK^SF$IpT--6xojcqoG4}B|JjJ~OCl^w65v;~mZ&6Fy~=Wrsu6 zNz1JiekNX-hl1bDP~f*22}BeX>s^ji`9$xmo+Ogywpv-F^qzMj{2;t-PetncR7;2= z$iL`7{AVzI&~#@H=aqW+yN)UHG&#m7#@G92;RIzl-J9cGP$`*;g`H_3RkiJhdbJG;8}-~1I@V1zX0;VN1xg`? zEA-5dnTB>3hHua)D5cs(p^Y3ca9qQY;(`WL2zsO#inn88GoP}7!>nu?hJ$m9I3R!d zU#&#%u^c%GuAW}=`1w>j8(rVFw=p)m*d89ub=#4u>n0=CM7#ukJV_9l)j);0&h!%y zPxRB2brwMjl{5Zl6T@=<6XB>jP-5EL-2bE$%_%m8G%>(qI)|hW5;5WD>i3$VkO=q( z`h0vj#(`40j^diQ;Zt%_WBVH7KJU0AbEL$|sqXd<*kCB?O z(JC}`3Iu+*6LP&zkah60DQTzHl=L`7#_hOROW}YO-nW$T$UzAxz1ub z%BQ2%lq}XPyQjVtu1jC3V@)T+14A*5iiV4#!71&Q6lzQ&4;r7*R$&c{)~5qjfuOR$ z+#@wnk#rnuTRm^ca5OlzN(@;~m8H^oq>t9SiCiu1A%oW+n$wAZg2?vj<43sHRMmR& zFdlc>7lBr={LX|Xkggb0*- zPK}Qr-6~zxKg=b}U!6hqf*RovNo%_2I~V#RWu3NoM@?s5)_6M5M2n}WbtDL)6wwU zYcA*Vmfez~8sr~TW*IytVF*fCl@!!eN0p|tBXSEg6w4OC9kn%icC7>R8jZ1CD`X97 z7>^3n5#I;gC1pKs4KUuJfncLRjhTv3$!Tav;)Y*6%s&nhR8epA-y?w+>?bylY^u=$Z~QDzuEkZJ6wLHj{ijJUCl*%Ot8#AOtycx$zOi z>Vc9~oCywPa#sc89=Je`$1ad@ez0ax;(Ec!z@7l=ySK{OM2G8Zv%@v;Ihy*@Vv>(8 zzpJZ@CL;eV-PnKXW2GVMCT2vXSl`VKv2V;?pCA$E zzI6@P)Fae(U`RX zrsYYUqXFR@8?4QFXOje(ZXQhe6UvirN_)QW7WY+C=JEU8Y-ejnsTq}6q}^OMp%5vY za>3-cB1gROBdVz$Z5U83#LnGj0b=3xLuF92S`WBUybPxbbVl0KnO8An9rosaw)K1W z6KM20eT3rFzXb1z1kCi;mW(94D$_tL8Of7<>BdZqdS6vKN`^%Vo1Te;hEZjxq)T+3 zsUl_{30sjiQxTaZ=Mt~QN5Kkwc_;exr`moI4Nt0V_H~U^OhS0oYV;p#GH&DNN%1Yv z+*xsla-*fo_`WSoIr>Hcn)rYS2t#!^=D$dDN_qJ7`1z?P5c@mM}6KrMrf!?L6=7Ii5xD7019~&A>Od^lky4N)Y~=!^B$rEyn)v!x!zR1x%b}#to$t(_+9S z&>Yo67!^yRR;Ml&(|i<-Nttj2X+M0%+GfgD6OlJ64tUFSM4O7<(`^<{U44Gj%vf{a z^rD}2m_WjVSQ2HR2i_dNp57Tg3w2EL;4R)<&dgUBJnx6ZQe$py3+x`UiH- z*TS^*FEPi#rN`Y=CinXuHM*B0P6dzVVi$c8qd`BWkki+QO#eb<$|4WG-y+6KE*h0I z3u8cBRP{TR8pykv=w}b7P1RTC-dNHrhPDtKCtKOBUlda%r0R`*Li{ua@pXKa+M0Pjs&deHP6LkWI|99&y=9a!ws5;P=)@56?wjSJD9^BiO z!M#llPUaWtCRCxnWe@;2J_rX$7)~b@6DG``!Jgo{h*HEm!imbUK`u1Aw?63N>{N5L zh-JBo*=IABV9G`|r;= z#xoP5F)(l08@kq*T0G7TB4nQD)1?};JngahJ2fOW@Y%-*UT`7ZvP`QzUBZU`!#0HQ zh-MC8@jF9o$c7MrC#U|gS}acFfka1b|HQaIy#)??Y&9?9CxxBT=PC(xRFAH)jkmQy z@LKwu-i!5!ZSZk|#?S8>%S(KPq^1xse6#(J*c?D;PSEIq2>}d&f&mEr`|)Eqh)4yB zo6trTkvbzU&w-9F=Ia_`?ID`*>hKlj61k@_8eBl#a;0)x7$joi&?W&+Qa40aodIq& zT3QDnM&2#iBk3Z@8|E+s1nKH%IRVY&|!=%#ssYNOR2q5C zWV@LYg2W$_%fK|3l@bnDk!KFqqo~uf$>5^S7dCm}jxFW&)rrBWd7wO~M|MDX>M(POH8At-{qD;qHnZ0t8_B>EnA}-qN-P^%E!fRs+_m8I#WOM@fBA=2L`j@jC*UA-HKC@v ze)-saLdy@_XwcS!l)-DvJh&0m%|x1`CjAF~Yn!#gs$^=0zP7j1a=~Yg@O6uRn}YFh!8|yRWFwe ztvn5bEs~+(S>BvUXt|)D7K``P2QWXA=t}(5V+Zv*@|*@4d2aVDwv;zs_bJP-Hg@9= z)b~G4wSBE1*rE~BI^;+nHt36k_ryDQ&Banf3iRYVPE~ zAbo#)3>~&>u+-VaLI$&Da&+@PNJH^z`0*V_B(^)Tq^B%iKLO#e7>;`e+8VlWuo zk2{x3uPzrwH^g0!?<)umodCj(u)=WR2>|NzfTuZp;oAJJGhl2v$!@l$! zz7}ZgxBX2o0q`T_&cuXf<*_qIn)A7$Ltkb%G;C}?KDEW5x^ctfWjB1k&nU?RUWk!0 zzS5?J+sO5twbIb>o8Q6w9ytEs(Wt61<2;K*FxxS>kYST{U@#x8o(eTewaC!_+CQ5@*{Z`JD6>ZD-dB3eiHeUUDc>csF8 zmNS6&1{PaOUMu&qH(MB4SwR@Wy52f3w{Cq{*Vf_A>#MC<{=P06aiPFCJiboNzD{hv zt9z=i=rWZFiR|zAC}zr8@oY#@!^u~I8VyWBzSLRU#Y1jcnZV%Jxc?i5mA>Oee+5f@ zgmq3S>OXH^`;(2h9WU>VSWX)XuARXJSYnw#)5I)FeeSJlp zf`i(z4_JE>ogO#JtSnZTSAL|*F-n#!==*y(LqlJ0HbfBUR*+HHTdi2z^u7n%YSsM_mmcRScOM z#yOH*`P^d8k?!~`!JAAkZ$&fN9t6f*-m=VnA+eX}VIj`jd{Y8;L3qy?2T6Yt{0GzVAERJ_Al(RK+1j9FIeo3F4s( zDp!6y%NrvNFqw@=mrI4Pp#trpdGK>y zeo9;({KSsdn`MyE_}Jk7kymER6mdQYM;}jBk}7$PITO;2Do~itHcWfv*-!Br6#$jj zZ3C*bHWR-_AmpT&9EIQAa602!c*b~3>}}qlqjN^QO|B2GaWADuMNasTMsSembcjCW&|wo3BV(|9li_ zU6zZODpY+mmgwp}QOIUM8?7^~n?r>S)$OF%t!9;f?CRNMU(zTJEN)HatnBD!M&<-6w!1TaT=1ebe!FlAaN5MD(<8h zM~E&WDI*x?2g_FVl=juLp4@P9L!x*;DeTCz z6!nIBgNZ34!Ni@D0)^W`$dSW>9zTIg9b}>N&oOw+sYbroSkK3PL^{9*XM!HP-Tfrv znN8vYIE*m9umh9*FaVng%eF2gn*e)gC2oww;@bFx8H5=7-l6oh)mA)@ku$pR^@bqJ_A1 zR07*OJ22C*^jUUg2q2*IxU9F_rzf z4l7CA&H5iXW+%>U>*K_v>~vzEP0yJ4*<@|D*_EizahrjO`q;T35+4q(moAfz?t>qU zc!)PXu%+eY+)BEtFZIQmtMy7h==LUdME>VGlW^lk*HP{1A7t_JH3>yRKx-hajXLCv z>HlZ%OW4y$u0`KZQFQ%X+p(}V%d(xBOz5VCFhWQyk~Ne0Gzc1K3201%wq)LKe`l-e z>J5;@B=^2ABx7|~*Is8or>YG1QgswcGE0n3{hmVFpE4urw-i|6ZxMxxs}u3xe&QYK0N2X60FSfXH-4Uu$>;UfQ3v|}zMz1I-G~uv|_T*2?i2ca} z0-wWAG|Go{Wt=R(h&Mbp@;;01XTsKkK*Hyfxy+rP00HNH<4UM7CYC6^_WTDz=7U=EdcOISP^yOqC1)i$>S+H?fJc_l3J%>;0r%(#y?`pSo@(kbPA^LLlPIMhHLW7Rj z#hYi-T#xf~S7T{XWw>Q@`J}L&nQ_j!GEa`tk4#f!7kMUCf1*KoZly~e9>;t1`GlW#VOY*h4h$OM~B3d+Vuv&84kT zAh8wDk%qJ3+K${@720N}cs6&K7cI-cnJG-}IM%sJYubN5Y~82YJ!jMx1 zv`B6p6nnWiDwf(zzmtq^*3Rm^$30)T>q-KVGp|h31>;PUT{J(;nT_1q_FFvRAu%I# zR!4G}vghhe4z6f}rZBxQ}pV;QyNaxvj@Wz*hCoAl@_gP}qd2hTeK z>{RHG(JIgBU!FLT8N-KVOP{=4dbiSRdH3#xlb9}J%!Oz?3Z}y+oIdqHs#HnkMWFb@ z+@o-|Qw@SV`)VwiAp8f-_VNJTV4K2vjEw_+@-~N%IO}UeGO6>5z-KE3 zc)|dguruk0Dy?p==MDCS6Q9vZ8e6sdCL&a@87G&V-{;J&A%1>5a}}4r>VBk&eHsZA>WAZ@dthTSps||Iz2Q}%U*gJH4F%r3#n(NL z-sbwWi(=;iY{~_K$*wLn%mu){aF`gq@!NmNaDL0w57YMk;O|M`Y?=y+E{pe`KMNKg zwhf?pBAFR>umJAYV~C2Mhozx0#-LKpR*vkv;Ts*pEW?p5Z?t@Itm0|yplc>Dp zIiY5^X?sd(G<_54n%Xjwd;Rv8-Cy6v@84N)25{E2B+nJnIpa$Rs9f;xMyP+EVSv!W zlMIubup{NOPX2%9CaACmyk0|f(we45FsC^GRk!E_^&jO9&s4wj5`|w=>3Enmg)T=s zx9Ap^nx<7HdS@FjU zrhRUNKw7Ye8M>0@sLhI)ozsuZ$bi`BU+bybm^ZAa1;xeLE6mJMe~|WN z?KRqBU$6ah?KNV(Is2wf5IdG;x*SKya!RIoG$FM2r_!oOy|H^J$*33x%cWB@!(bY% zJ=4ySUU1^R4(IEq~(qVHjWj~$QDOIoG_ji^o`+~8V1{RNY+5W zG>eu$6NEQ6@q3W%8i_+obXLOdWrim$Sn}AA;-%*wz7Ojfx*VR<{{^it(f{XwM@27KoV!21=;P|4ucGaBy>@(G`g6{*j_+j0 zpz8+S^9JQ;Gdtir69>J8z0K}6JdKKOgu~lGM|5?S+ICIr zpg4IDh|D{^LgnYr1dOm)JsY2T7nkcWoyu7}H<)yTJi7TuFM_eo8xCOV4@g zS3P&|m2fYdz<)*p^)k;NF!ci^A*QKarbd;jx@rw7!+v4dEuv%qW*ZwsI2_IfQ*S)r z*ny3;nz_fJA3r>8Emf#M=Ylb&AAig^^PH8QEQ?Llm}qY}^5$ms9WL)~rn5{Tw|@FU|6o-G{&u;dZGNWUO7Rohm zhkeRgMmFME6b;41Iev83RroD+FJhL36@OVFftsD*mO}lKl@U3M&WJB*XKba(M?}=p zBDV1N^b25lgWd!L-GUcjP|rO0|C45W=?)9S{T zx_!!c^)hDjhPj%5daqhROlFvGgwX^(BU^$wEaT95;cYrERheaIDcW%8wMZ+h;S<1Z;SrS>(;DXD%-Xx#Cx zrumZ7hM(1+jN%5uX4mg69PQjqL(vJ_O3%1xzOa)23G?+-3*V{>5^6C|7RTSb?PBx9aQ!_+`o>=}rhg-8^hnq! zWpTH+a4~Ve*0UEmd5fU1%}DH>&XsMWnBy?ca!tnXUYGkswRnRY^j{~;uF?f{tN64v zNV}bWQJZ*=`rEYg%rm2y-bK$*N{dAg%>*8~%}gu77rnFWpKGuAa4~-5-Ow>#nwMth z$gpy$iX%}2p+XZLW|moAx|6IRD?jx)>7WZwP)9JVVAKiiGPHev(h0t-@!yR#x)nZ_ z^wXC$0$#%2OnYX>g9=A&_ZtAHuI2q0y7LXhAEPl&`%6~&i$wX0l=2rw`2l+`{JZ*{ zH+BuWmSV3AFiRm*i;Ywh+Y*s+l@8QQk@~Hx;EkSxx1e2Y?`5;&Xg5$z?fVn&5zRw` zG-Y*OzhY38=*-2_J9Fz!re6D*UCE$eB(H>ppJf-0pSqhO8frS3+^(8B*dL>FpXiqR z6K;XwGo0wK=0voX_MrLWR@<9C(7vnCleX58y?!agEXARXj-X!pt!2;<`yb8QS5j(4 zK>(W{05N_OJDyBK=*HSsb_=9S;xIxbiLMx!*EFvX-+LK9G=nbgdGB|-&^0{zN{hoMm6Kj_>h+!=Iu6Q*<2@$cSKq${6@n%O6{ zR~T#uTAaOrDMED4?x;GbZ_H;!wq_yghFXNQsEetAVpc}d`ZmAVq{4>Onieo zSw-gY$weA%9Czc3nU22colh=vW_4=|!7F(@Kpdu`WyprjTC$BH8(Hq1XG<~oQ!w*n z`CR>?a(ezsZ&F26PRFq&8hS!7XnGrZTtARGeSRkF^HHJ7Q-zm>OUS(Osmp{tauY#Tv0p;zQokik@|gn4_S4T7UK|q{KZ7$#7*j+S6aLa> zIRiRU>C{`GFMBcZHY2FH!R>PR9rjJHBp$YdCy-A2ty(YNs)d^MY@aZ?{_AmUY^Fy-&^`cg)c_B9?IPoSmWZc^n=uPZQ`t1BFEYjyF2A6)xwqG|6i@(${qK`% zu=Vs2&6j$zWE!k*p6v~>leQA!e%Ajr0?qT~nfbEJQ-lW{M>Su-S)045#QeF-_#KkX zFHtl8o+gy2-_pW~`f0|uh})S3E>wXmR;PYhEKmJR{7JQh#($tS{`t>q2i`qdyYJkq z8;`cT1n}ks!OUIjPp9MH%jRa=M~9^E_Xd1t?|8G_pZG&>Hr%9)!Dfec3;g7De%$%E zzq7lN zTVF^+leBdy$MifIS!V7eoUhDSO+){qDKVA5ry5jKgw9MWY8)&Q*b(DOPrZ$B4y>e| zz-65E5*NPGm5fVs8-@|U`z|6CggIqXhmkY7Z6y7iL(N&zB4g9`IE84p;QYa4uQHAh zj89%1y`O*RVq^-Jy-j)SluEyQm%@MM&|2Pbt*3YX1+ZU?hL+iwq1)z@Ka9eWo!D|NhinO6e(MvVf9jF4 z$$6Q#DevX8v+N9I&eBR|%9yQ`uuQBN!xs@@{LR~4_hKT=dyoGpBK-t$c7+rBl*z^4qV0<-q4B8`O|}24 zX#BwK{!2*w!gf|c;cwiB6WkP=rWM9*Qjk~NHBT`v&b!=Qj8jX5Cb>bo>^|uGy;4iK z@1ch_#xP;Fo&6>B?WLR_%SKhwcCiX>jj!IilR;}dKZqd3fzxh{a#O$8!>GZh7mf#R zCyOrw>(AO_usHs5VSwlSkjwB0w-9FL84@yXMSxnOP_nz99dog)V=N`kcxh{1N{>FT zutzB>XS7EduSqi!9lG?C4bn`g6Lz@Foe|j+7~vaP&9UtNwC2)hCu8i91E=O}QpdA3 zI4hS6Nb*%Q0(WBISrZd~P#pnN!YEKAXla61y5TIds*FR^UyV(ZSk^lICAH|tum)z% z`CpQl8mjE`>}cti4q&C~C~TfbJPJE}Htk7a;?j~A*KbB?8#PC0Uv}kb@!X5dle7$f zoEOERJnJXFQJ=pCYE?)#2An6@tPMv6IlYWneJ zsqV=b-&)8P<(O9g4iCI?@74+k#cz?Kp`4z`PG_(|=3F=pKVU$5I$|%=Lt{Fj;*{p} z9L-gu=W}#J0n*j|u&BChk!7wl;PGiYQ5UEt1#h*H!)#j){fHlvLPevJEJ0XGG*w#O zjKHhZtixXJZqgb*A^XIiw(zFpImndm4qh-9%1+gKux8UKg&ocfQ;YW2a1_yrEjg?x zcSSYD#eNRd`O9;bLF%T_Ejec?-AUe|ZVVgG6Vz{EWSmq@U4J`o@=XI}rFHKO@eJA_ zUWSSf-e};B^wDI-De8+Xi(TDC>=GTL54%em-+MWlVIhABBBt7r~l3CzV0cJj{Ac94r~qr(BJy9mR`IY*o~S_9wHFXR}c54^1>mug)Ma&ze36(`nJuc6g^Q-GVc>rBys{#ApI-=SD|<*-D3H zo#P00KLlYpfHdW2F+|Gk2T|*4=Gqz>LX35y5mo-U?8eg&{ z3ZnfNt_I4qy6ex|#}RJYUVPB&QU@n28C@RxmMUfQArPix9mnEL!-IddoE^&B9XDuC zyfHc70MYgF6HtclQuO!`VMQx8h!)_f!xVFXTk6T{gP{WEfY;a`kC_0`+pdrUp%7vF zqVw>dfSPiHDY^r(1#jqL4Uw{Xzy1KmH);=N9VQ>DiSWFl*g-)5l4!E@MURIdL~_ym zM4}Ip_oF5SNR;rhxDdNhvDze<%7ka!B)ZTy&BvrI;3ss9Axqclf|79KQ^ZQnnXX#N zJ9A9IoA|Dolu4UHO8#9g;HJ0y!Ox3orikdxVh^9cw7~x z%%hPSt!8LnFS*@C)et{Cc4Lh#0%3KL+j!DP99Bq2zAkxHj4{BhJ9V-yhgonjOngve zh~Qy8<(8O)Lar9o99%;su6%?kshK0z^FHs;!==DZ4|3_l)sSMyNn}`E4r4EJeD-gu zNn<%H82)01xZzF^44E*_`c5g6^cSe#>+pcLoTBSlch1IwOt5JkVN#H?c-HeUNUI^M zU#926m}zs7QYE&msW(r4i%m61$H@gjmW;9s3C=P)VteYiNMMxP2puuFNVqYjg;G~D zO{|H;>5lIPqt{cAwQpVeic5zS0WCG&6%1lS9je3fI-RM5_ac&xWYz~$hIFM1Om-S% z&PY6@VIC01kNs9Gghil0apJL;JECYRFlmjdf^D0Pz9{KTh; z4O{n_7vC&H;4-5DqlMMj=N3yLiSfG!;`PL#Y|iPLLEpd2c_~0p#k0CJP3esc(LQo) z7g`C7OHRCzKw4PYGDmkknWyTpJ)M-{FYV;I1+$cXmN((bTA(E9lxhum95DS&YAwg2 z(g}HwqKsTNqd1V#3GooUpzpeL8O@zL7^DqJK}HH&O*xV8UnCU7!F7%}Fwc}>F4Av? zI3-SjD2h@xc5pmFvPuF%iYS#Ps>yCkcQ~FV%@2v7y{GPZq^nm*8JrXS&4(2-saWb_ zl#EWsT?5&jP56JV2D3?;13hKJv}To<^6%nDzH2*1B3IJS=S{U3k>SQ-V?yvA z=#JBB_usr3Qh`*{FA%*{6CDtGTQh-3>(#`gNnPHh7UmWMtc*3= z_Np?Nwy~cg7did%>vB#%nVfWEOCp>j+nQtcBx65#^!{@5bvgS(tO6x*%hkUM6lzQ5tgXCI-Yp9NG=53=lG7(j0y3h&;KA$i-fXZbWTPPOZwU=`^f9W=Y-Od zoF9{J7lb65X#alhS5ojiptM3VlwcVcuAn98yLhBPwDXB{1Z$?FKQtM52oxhoeRvN{ zCiF|OHww5OS-cD{l=3@uG`Yv@s+Zx|N=ULe4ipLdU28OD>YQVlXn>Zs$iQhY@fyk6 zs&2N`ZLAqZKr{14&<|hf%c>i|f!laWxT!6N-MJ9v0!&YH2$>@w{lq@iu!AQ==)K&B zmXMm_BwS}mbCrqT2iGLDX(b)9X-H=lN}!ryLokt8K``1P>BHNNNaITyh~tza9fd{9 zFzXLd4gSBrvF;7W{sg^4N5(AIg^sN8?(enN?>AAClvF&nIJKCW9g~Hoz9tP;<4a^Y zxi`4^z=-1!vCk)DL}r`TH^}rh`bABYj2gu{^Ya^bu%YV2`GWDg_cV$QhXX}=_7|ER zW1uG>p5jH0dXTp>H!>4du6kqbY!=CsBdd34!!!y-kXNSe{U-lEn6$Ge8f3Sl;t3Wn@>^l!S@6Mr6vpqr3H+UQ$5>CSNv=7r{kHM4nrNfpyQVLZkajDnKIglJY>9UbYUJw7#qw zO>SRS4KaWhLB)$|2)W|RY9I#s+$y5H_9e9_w*2%u@bB+$6Ji-h4ICK~%^H9YkhXwC zEotQy=p@0PzQja(CZ-YTQc1wtucG+UpV9?QoiE8@pu`(KwfRdz#2^bXs`GzQrID|g zB|;vZ%&YjwviW0t!z`96Wh84zvW&#&Qslj4Jt4y|%g3drjP~QjV$xi)RD?H}B~t{M ztiC3eG9j;J^!6DrU~mAlU_u;AmehpbEEg00(n}$=j~5EX$n-Km;p0WLG@3P!ny4q| zGA2rA)u8ElvWA#somB%7;$&$<#LrmEM8UWUlPnj~?VpTtaUCbC98v3JK|>2lmW&c< zvv8WKlwMwu=XmL;Hf5IO(nm$4kD_$yRJ!fj?PQuRCvMN9J+*AWMLQZ>J(5PlxTS}U zg-F%kYeK#O8tnV`?<2;}6u-}Gw5VT4#e~_&us*K2!N40$b8^6fHY6##ZO@&u6^qQf zcmAZKVt*rMATdPz=8skgPRQ>)1di(49U_9`q zZ(hHD{q~owUsGI#>Y5;%c9YJ%CkTIN(W4%!9{r-+9>!Wj!*73`yO(286(J66tWj;5 zVO#v;lczhTlAiW^%7&47fx`wiuz^s7v43cBOpF14U(fxCjR7OS<6g2KH`u&tUAcqY z0GO^j*&KLRn-rGv{yIp@JPlM%mFuUU06KEH?GL%_v;u8_Race4+buWS*FjipE4P(a z3XO1FCU?92k;}yz+`{%YP4VwNl==z&`)?Fme`Mdle-B!t-jCDZ@9TeAlX>~`e`e$F z>!uxf0wN;qDUf-YR}YA1V?4p-zrD_nANIHRcRy}#{r5EZkphrI<106}Ooj1|Xcb7*yQ1LqC&_KUyd*@H1Qf8OUQxR zWFo(9P1at)m?VDp4H_Snt1Xbhk#i9q18!u$# zqIx)^7H(g!V+D}?mtR?GlaIsJy}JAx9;teeoPHxndk=Fv^^wqUk>A97N?DX}HEr*H zeh);zZ4X;JA9ptYD{$KkhwxHow116esoMOXv${36?@m=?)$(DdFT) z(XkqZ=ZG$VdDN|%8du&_)fsa}t{ch_K}XeSGIN(VM8vW~=jiMKy;E=PC)M~D?0LK< zm~4r0=G7F4vI%W|qxqi&xb24FLvsC>tn^*qouK3Wb%2}GjA(Q0ppBG#GHXx$3C4{E zKrA=bR75=A`a+exshW|jMkyFx^?f^h*YX^68U^$q2fZ8&HMFSD6fg?_<#(gC{kZm8 zttj4vy7nge^~W`)od5i%BBEx75KiAl18<`pPVSJ5+-@o0VU(Fyneq0EfU3D?5vz<3 zVKf_nlDn`^=2T_QLi~fSCrukP=m)C;RnP-A5K7<1o0UHd5^~~Mq8BCrbC1559eVo) zcZMJihPuUDcCZ74PJQ8R6pR_8Xro*@MPqWi9B<5EjFOoP+rB$#({`h* zS|n9!$+cAh;UW@gD>4(tge#i(##6x|G80h>nBEO6L_rFAnmp(TDgQ{v+dc@7RDHmF zV9@Hp0{^Bm{l-yAT@Xbf`87&e$ip_)UZehxe{b=eLwXVuz-wVgLCRRD_jbKrgJe|C zzpQO-NKzg5VHDil{mL_&4r|)A%IGLTlRM zUAgXrjJ-zw125WHbOGcC16xm>`5`^^z@H4oYhWhVUCbN%K*vR!?Nz*?i)Il*N|lHf zfX*?9`<2#Mr@^Z^sFRk5v-BO-Co(H+dW*hADzBdvnQ5A(An}-jo??k8zSrGeJk|F` z(^y(^DIihrg^r~AGY}fAS+^T&4uPbOJAcg7hI@}&s@peq6ijq_BoR+|mxK^45|%m; zokqS$pli8Yxcd*u$rO)@81=|}h7{m9-zc3qm-UN^RXxf?d?whYRGWe!k*cu2czywk zkne+jYbZ&=ZRG=DtKzs)KMxFh$Dx*)-Qv$#{o$|gPw<9O+M2Td>&ALO%Tx3H>H3%T z_22)`e}4aCeq#W4kRDO_j~FP`QrDFX2Hnz65K7RPHmX^M~zx{D% ze|PQw?CyQs+TQ;7aSQToZSO%M{C$3t%l~F5ze87ETF(~!*7V>1CBJ{H-@20k*w6Zx zU4^K@`j=nU@7ybd4NwhZV6iD*HfJLb%eDp_A6`IdkoGtN9a&uZ3aCMV2PMwU9XCAs zAP8LtQTqc+X1Qsrr<8Pn*q7C+WT+fQ%jVE!fJc6>wAL5bCh{O?(m6DKC<97v1e`v| zVW0x$`@@=1Ve9_n#Z6${!R!in`rGcX3-RLKypfUfj8f z+XHr)!<$#pUI!@9er~1e9SXk3@fy-OI@oe9h}SRfFY7_8t8SFjI}To27asQT@($$` zUcR_0Iu;OCVKRYL7`Z`^^Se0~wpLL+h}ZzmIWNe0ey{>KOxG({1Tfhq)R&_-&FITJ znlPBZe1+~;GQhc{{pIA0DbRb(I$zx100}rR@`@H0s10o%dHEW*f}2$#-tDKH2um+t z172eE(C4(>5~#(hx;hKoNe<-t(aV7myQmjM_6M&Bz?nZQ_+AC{v~tSK9Zu`Y_`jNk zmBIMS$2&%k&x^Ygu~WW$4LY41(3aUKX!~O{j=X%BeLtAyCN2`!oI9DUV&*(_P7obj z6?hEs=z^EiQel>cTjj-dMl4CI;2&KSGeghMibMuJC3O`Xjvbd>Z!mRVK6@enPyFF3 zBo1~{yc{E1E0`t$TtKWrYX#zX&~HuL6)*=7dC*(%a&bHwTChr$H5A1$`+uWQxy{LJgd4~=`_vi0R5FPHp@Shw;z2t&c*9|R{>RiY_M!$dg+Q`y} zCZZMUNV4w1)N9{70V`4rg`2KIQ;HaoVZa=p zy$V4DUwY4$HTCv zH1T}5NCHGxwm`~$n}ag{3TR!uv`AOOk5}LUfv#eN`^#rR*!c>8X#8Mm+pBchtNpGk zt7zrX3M2O}rv#&RYuvi>2Hq;H87%3pO3DSw_EehyNkF#0=PjhQ2Oe7W3# z0=7n-fW_eGuIt71HUQ5(5ug$?!BD`NNVWc_ipg<8Ls5m*~aWo zPWb@UqaSnB87$Gs*!i;Wr_1Ko=ie_Xu{?AjCp+?P+=icj26tRk^Eu!Dap(`8%)#d& z&6L&EmG^lzlGtIlQ~IOY82KYrHxvKWRXz0)3ui;Dd%0dK$U2=N=Uf^N`Nr5Kvtx2k zc=K{a*w45S#uo?yFBBm@ZSU=_TFRl*U~))}R^{+niN7atxXKFbhQpk~(wB?wvp@wE z=2}5+70z7=deG8#)WP@b#yW+-Od$QB29Vqp;;TEhM&;^GBDJYN2`LTwZ>H}k z^itZPjNEt$Tk+t(flk6A=y=5he8gU@^MK$FE9LOu!+*RdUw2!{xHw2{667*CNcfNU z_2P(p-Zb54_11AW?|{&4%AIhj({4~v^E0A85f_ICP$1x6+?$4z$QK$3bl8$I;T9|>OCE-Dz zHi4P3oA`G;9$>SrNso--*t9yq1ABrvs6oWz1yBG5&o&ngj#L}?f^B-#H={?_zK4It zcz-G9x$>byMh|sppaW9yUaQ z(eSt6)a_d7q*1NajkPNUj)ol#0MP?B3feY8eLGRUAzo_ux8!`fEL1C(1?Ql2>?Fq) zsbJ2hD*SgsZRlC*4t)BAM;H<2Qb;O-NYkn}N{wctR6Uk$?)8l1%j4?halYad5Zo~s zo1g{O8>d08s3#;GgB(orhRD~k!*^*GfeE|U@&+e9rc1b3J?DOW9>t9#G#3-x@@E9Yk)DoyddlV#&$9bu%;QOQ+4?j!BxehbtGAUskG!o-)Z-IRf?9#T(&xJOhM3UO`3@NWgzv!BmY7pY`}a zpdHT`m|BFTUT*{(2G2UhK45U|fVseI%o>m#~X zD@tx9y27WbXb?R1Mpme21I8)6NJe!2U8!-$SMnC{A?8GIdY|t zQIk9#jHnV90Wn{{bdF(BXhfy@r7_WfvQDkmJZTWY#722|osdut22>X^H42&`RK6GV z?Fq&Ml`WzjiyYSg3Bv0bgz0P7S`O}ezQ7=^bUm-aN1wyVd`WYdOKQ{`Zlx?XRl zV1v(h(tri^(9+;#pCcDn10`b|$#ggnFsKSV99Iii;lOXVWYq(g>F~5P9OBVJBpbE? zz9;Ih`9ZF3Lv(>Zt)6S^MhjjrR@{?MGXQ za!oXpTY?cN^9}oumdOx%cC~mwM8a`^ovsz@^4d_eZ{*(T=U1YQ5J0bs0y-kWBX*?Zx?=U303d=N+egg; zP0uS)a|tPtL#k40zumgXG6X)ac-I_eRS)xyG=4*!$8DpT$=22OsW-K15Fcyq6a>Bk4mGm z0TW59YO4p4uaLAsM?IJx^)3gYojdvRWhH;2iQge&AEK0z#WOZR(b-8<-O!DIWNB(%=BW~#GUN``8MDSvuI8aAF_~$*QMfgFIF6^u z8KvuDE)||jl#R&*^iM{^LLjbL>|H74?u2YjcprCYB|w`4=j23fNl1ReL>JJ%eWNpV zyV3Um-}tVaK)q_5I|{{kv2;jJjSu~ai;x6#t*^_8QBm+eupR)ojv0RxN`$llq+54_ z$B`nUPRJyK?y?6(wmg*F<-1~I2J1z6z3ZX;F=+wXad9-89EjD1S50KKG28Lvt$9+& zBLhCl*Bc<>6r69D=d~(vlZm@c|Dt4X)v9IZ7?^X7VDb3GE-HZtf$BsHg<{*$CcGdI zs-74P<(oGWn-XB@OneDbZ6+D{lOcKTvD)g<#X;%lXk9U*b+W$scYNK>y2v<@1H2h! zfIHgx1_)886QNYQ&Q>)NA5cv%k^%rprAo7MnLj$Jo`dkg6X1Na9ft>&R+S-=C51E( zEr$v$MP>ia~h7 z&JMizn=ZSjdB^Yw^#+`4hF3(HIY=z#4|S;`avCbaOI^KOf{@xQ6*PE>NmVUEinQa% ze#ykw(3GwD>&z3q8>Zzv;ruu(6$%d7mQ=q$4AM&6y7Ko#3~jpbE4F@m-G_BUY0R>$ zbB02EebUM)-vNI+NmsP;gF&d-#JU-N5QgM)N{z0BBA*;5DC9Rj#3m`Iiv)VAxhXB3 zQhkx78ag%?ingp@)V>??{ zE=jHJ0wPfhyIvFhM>JvUIfsid|mtX5>-Xzhwba1h*jOGkBbTth2 z!%#4Y*^x{^r`Flwp>@@+X2%iUs?DhDiicxi*W>9sZXFZ1nC8jFX^1Tmi>L|YE%U=V z>&Z$yiOfmFduWg^WehbdO{5vD2WOtBQ+L1)j6M*$b+-KzF`x2$P5oYv9i(gu5O*|w z>AS2>%9b-;#&gH2(!XW$eN<*sn!V~3h8)mrpSxFOZ<_MqL|09gv5MNu76IVsr*$P5 zucL>6U4J9xf1qtU>q@G`6RnSV3_iChj1I`AJ1MXtBXx3#B=x%EP$3O`OfSmHSQK@3 z!ep@W1rNXr8GBJEtdc+mPY&pT7b?TCFfp^hWwl96yQ(E*a&~pSwx-ssUIso1C@xIo zgU|?N*9pnqi_aOj8(r;T6 zPw<;CT5#+*Uq7tYj>WWtGD+)1Lh(#6RY;{t+~p-%dMJi~edM9#f#98`+QMbAR&Ab; z3lv>#m*>@58DOsj%(V(rdtNI+g~z~X9ke(rEm`EJf^*~)NrFO@Qrsw#Dh1K?WGmN; zvXP(&swH%>q8a8F6un51WrWk8g6Jzrd;0AaFD4P8b>-F)#RI@l;4F&+3*XFDgIdZM|6xqLx{vFX_m{(`O7YWWM(I(oxeVcv*UQ2IWy zFB)6|#w0E5i8vUT3LPuXEfhq#VweIWpJY)JS7%fT?T2D^MMN@b3fEK9Bn0i}H9B*R z)SDm!MYIqkyA}xLs+CgRS&tZirJ&LhR6P+z@>SPmqbxL3MEkqfPMelOsZKIH5|iVG zrd^Km4~XMIy^B;>bH0khQx!W=L%wE#UKMB_ALfq>M}Ta)4B?|HFJG|+=eWQ$<)C?l z!at>QPI?Tp>Ppv@vkHXungg8sGMul2){U{C94+JpxZXl)Fit>dEwL+)5EMu{nIvEu z+R7>D-w1zjJH{7W*A_*?u5+*gebeCv*IKi|tDrGobHw>OlxDu+Y2RwbN@x@f$L9rR zMwi|Avylj5%IBs>5+*3vyVDSlglNXl;g1ex10e0HGhCit6x_5;FnN^#>4}TB8woiY zkk+b++=S_O8oa%F6*5+QmTrr)zSg=k2ztI&Y*qlgkV1p3%U(xvVw3r<@1tj_bIHnT zSJgsqcqbm_X;1Iz58kpU!yrTAD?sTPPT(ssLB0xIz^{UVPekQ%PRv+!MDbFWku46? zRAh5Pq86qhm&R6ub#Y9bNY~I`L%7No&xGCTQbqn_-r1F^Bf!{k^>UeTWnE@P;UkW5 z60g`j4J$RGp0m0zyKNmiahVw$k8qJu%cT+Sjx-2{b4wrkt?XXT8Gx$j*l_yH>(?c$ zN!u5~EssoF^2bIcvF*Pi#-%yPsAg}G66iC&D;`bLx@X^IpXkYO{X+J8Z|Ke z)#YWMX0y+rGgj(d0HOmT)sX+tr;2w^bd^dHrUcTV%gZZnnXsD?_3{!q|CNLrVbOrd zUeNct?8O+4XH2gYCSQiC1>&?wJD{X_BazN8F9Vf7G_VPoCZ$}H0Da>omBJZP*B0Yk z;H~0$a$VDH=0d+2e9s`kUuSbT-Hi+slWkhFaR*@@OT=rLT^({b!4=(fUS)eZ<&ft9 zi_z^!KEcOTc)h*Ksb0q6J@hyg>UMc~#!KVn(HVs`>C4@9ioUE}r>NkXmcCUTNv*yr zUBA@C?bVIkXD$iqigK(6c#*ge)T8QY_)d{D10(hsjq`QcBZ3sUC0C2th;keXJM-xnJOTA!VRR_SdFw@$)UO|;NKk|n3(a7}Z`@;i(yDBLM>lESQ zTCGV?aK$;&_wVqXuA)~9sXsDRIC6Wf_JcL??*eub4+j1n-9=Reg=|2K{ube?(z>rR zFyZl!7yhgP-Fz?-igB!MOMD@g&C?4kwU9}EnKCk}-Z zuOwi_50qW=&O>W}0s`_iRYwihC1J$$q10x(5WGXjy&?2mk_J94EA)Yv>BfBkaHEC5 zYfKLO_Dmv-rxP{@(X;`;>NSx5*_@?1VqhNnv%tOUyRMiTWiD`q8r~GR_9RbU#g>V8 z4WE{Rp7~lZWEBIYg#bw&Fw%|a4z6mqu8ctEL{ctm(5{W_VE zT0^2Fv#Tq$LjmNZfnW?@{*KdmJC*996@*S9j-sIm>7c^T^$@=Jpt59oI|$B5>;+8f zdiSmp1C1;c9}u>KUk^A*kc}fiy934t9V`4DcTO4gMBZ6LM&}fF!jP6JT4I|Py@@J_ zxNa!+Ok866S=oG`Puc^5eRMfQHi#y_Ix4O!(_J{Amgzddmvt3XW|k!ZU7F__#H`0| z5{r19nJ-W;N4%Q>c!;hzx9oNaDG7`!I#Qq8h{xZxBM>*6&^8xdbRK-Za}CQdnu^O2|Af;Em^^Z2t_YNr z8{x|D5H}-U(eOFkpyysxyIqNZq%R^Q;HPi;(|{A1&retj!Ej~_&;{rVubY&1Dj?sZ z0NiCvF=+gmFGy5X(VG%vIIAYU@>LC#UMzn) zB~Ea=t{HKGDQYNH0;JrcKIDr$N?Q!qMdLPDRg)IR)f3NaV;KDc5Kak|FbdVyVIdNN zQSfdxU*NHe(119`7%e?K>dBX*B5}-tdPma;HG+mdNTRqM&5qD1tzITNUpSSp4khl8 zN^9%M8-{FcXfQMqsJOHGR!UlNnN|^c)$I<9M789;0=g@I0)$c) z`#~r0iU#d(^eome60N=AGL&7LQ_cp!(93xYH!i3m5RWOAg-w6&YFsrz_2*3#%~ID9BkEhM`ln5u=)d|lgoFFma}ac-fG z55UDi#--#TeZHiMxd$XDB7;@Y79rYD5Q;|@04J8BOi@rl0!2NP>edZuNEdD00{-E$Y1U)NWfW&z3ti-Q~_XNJn2R6~8juSEJxrGGO zu8&yxTPG$>QY6h^Y1H*qYjrXParg;9Uyrw5$kRzgcLq_CLfJ5WO;09vLuGgs(&!n- zEvPXzIY0tu7Adk0XEdf?IoOQa*Ods3E8CikgnBD=qolUKbVPii@FDC+L|0`{w%&TuM#*pDih4gAbPi*-0wf{Ao&%Mv zhT)tjsY^HIRThDhuB z3(;oM;;3R&e1G=+p=l=xfe>*-7n3nCl@eL;m6|riZV)m>nbvkDef-vKXtr` z_H&vLE`5ktcO(t>&Cpfw>RCh}@>!YLW8*JIMS>|-fd$m_G2;d-nCiUR3_^^&;3@0n zuyw;UFS5>L4)#G2AS#L`HF?JKkkFKaY5^&)M%sm>(XMVZ+bSy?8Q}`XMhrp~fJ-EGQj4P$~8!3x?f6^^g>G%-$T4}g5hQwMr}!#9on z_->l|J%Qg)?MH(ji+f&xqho>nl}Nob^R8Zxyc(|Xa-0Pv%TosNKhQJVY(caHF;dh3 zb0IIy6}}Xk@s0anvkBtWn7_P|jmxh{#=ci;{-7RchQ6r>TqulDvpFCDNY%6@k@HC9 z*I7BSVA`3XkhxNgpeu%H5$l-Y(GVJ~E3#m-2R&3vs1zc%p{hs^qABFqVrw{WEivqY zXw*iO<0T+Vcz76sY_{pR0Z0H3p}fP?C*)j)jo)GxJ(x|xf&^Gfj8-V7gbT4PvloZt z#jsu}ABtV3vxeHmNL2tRWzizj-78?8WK;kgTNj}V%^OOv9p#fwHh)xNHyg%NXvN4M z*$G!$w7Ax+{E=n)*CdyIi!&jWJ#0U3`q}(ZR9o;z1;f|IZvyT7!r-oIHIY!InTV*; zl#fMP4_|Ah=S{sTea#;o#Jz8vWcc4MFXfyc3Y3#mCM1yDRoidiU%Otf0Z@tc6W&Nn zEx7GLOZ&kfmGDhv(q=nJC{!!aH`e^a_lAGtj?`;w+F~n^JE8TEQ)E2d2^3E9gF)n& z1x!mM9DuSIA`7Ol-8xJoSyHO4092!-p*OPK)?_3jf%(4WDyD!h^**?Tu32{%jZM1uD;%zG4%u zY5|IM@?66ZQodWUN}YZCE2fm?vrV51oK(-(9_K7B0c_$L##tlsHK`e&bMe}hg5F~2T;Dk6rOAD+-crO zsbfDk3pGkQr>TX<;@59F&sL!eHBSoA3XQCSe@Zxj;=T2i)2P3t8mGw&oKhOi$+bnJ zy0Jp&*tO3%+d2Mm#ySTq^uR94s=N8TJB<{E$;dn9jSHL?t_)_ad;}vc_Z_LSXN65a z;u6^3Xkou?Svck`4OA_FQu{dB)|Mq{&`gV36eu_cNGhBp3qVczHf8+4MWH{Zw}p|# z9rBG15ztj}1)W=*i9!<-PVzX8CV|DNDmJ9q*rc};2mftq;IYR9Tj%l(9zQX@ogLsy z0Aqwdb;idcbR6aj%N}Cc{sF;SiQxYmrSn%9CBktre~`bo%*k{R>+GrZ%@})=2i3%0 z;Lsc4s+4KEa7^~J5OxtJ$3p}=5UjyY&_5MIwPTtZHF|;{$E8Lbg{e5AB6hT@@>eQY z!>LWMj{j5&L@Y`&RYicyTd8u#ScegTVV|*%fvY~CIc+k2zRCRC1efx5wlYR^G)K za(K`%#BWqvxqzMYaQU36wQGmeWCu&+udPqE(D%~D%(74Jd8MhI3)L79iqA&TCeA{$ zM-6koh)y`POojX*K|c}tVi9X&81gM?$RRv|=ToAx#|#ZfF&VC5C9gulTO2UB3~>gX zYb%}`yHdn@Zn^%iu|kYfQ1mvnD9ut)F+of|O09r%m2lqEswqeY{C7gN?Q?Cs&>7W9 zZh(wUOOO4?ELTC~tQ-mQv^RVkh{-muQ7y7YkWNJZTtmo6SSK-{JXBJ8GELFyAf`f-wQ_SqSi4*wG{d$+f-f&?KFNB`BMAVBu4zqk~ z-5X1OI&(C&{s=-4FE&#L7=Uk+XgOins&5mVm){kb$xxz8?R2FBvP`EN6`Z^Y(osEo zZ9REYp1hCYbWT_j+zC@g_RonaZ>3gK(Fr`$o-R^+$S%$ zew|^a2GIv16)eC|mV8MTw}?dxJVS(Q&Lc0ygJWc-3@Fs$+>fmNgOD92X&qx*0kQZ> zq%ek9n8zyx+n+4t7R)~F4S?DrP>h2(e|twMEQXhD;c5C`29Rw-vuM)nobwXwlk&80 zjd&)9Tvs0v!M{>+0nZ-FZ;aI8`&s2`*v2PDhigFqZ!$gMap9`vh17$C;ZWo*VIiL@BJRzVj5s?DT zorbq<#mUPDp(HA$uOvxLVD_xtqM!qS)A>7^@g5c|;+mX`0PUb?aZs2Z7>Wi1W1Aq2 z*Vjh9Vtl|a=kkrX_#@U>*|@Ro+7b2jp&&S^x^{0z@!S?XPb55q1ofKBd=FFht&EgJ zH6f9;g~+x-VjiC+=RP8Wx9yEKLcW%BQL%)x4_+GNH{WPrrkLPJU#I=A%AwGeACISOk)N zrkkG}&H}4+&R?7I6&GeOE`<%uWF{n%! zo^Bi_*V`y&gGl=65R-e>HG$F@7Y{7LjaHRZa>UKs0?VuLUgH*+sF6yHUA&PRI-eYY z9QqDgvF)%-LZHfYqE7ZA`{z)#xY#VxTzw}s=aj(x9ND9@j|ERltm2_c%ENQ=wE+VK z%}RqPN1a92Q=Dp)=JKdj16Z;oSSQI%C+{(LY&MxWspM_u56yF)aY`nOObDk=h}%5B zI1GX}fG) zJ-fpuf(}(d_J`^=gMv?!=1v(gwn$UlhX2tk3y%b$h%G^S-_NWz%_cz zby<QaiF-ajrQWMbGodcd5oCN!4R-GqQee>pkm6Zx&c~eFRfZt}b z0(MDRX!uKcA1gg95z)KhmEpdEsNqv>E(>JWMXk$}w+@UsqQxt;=gb-o$U0X2#A&*r z3Rt16es)4WyhGwZ6#=uj&)9W>z*gB8q$rYwvPw)n1syMtUT!)HQ6Tqss^!dP`d%bU zo`DZFQWCe7T{C!#73 z)@KGe#@yx+i5dm$t8YD0U$01NvkwUl>tnX64!KhdV8tDq)d^m^>q7={Ue5;>Ik#** zis~j)E8z^+L=ISF5=&HND#A0%g={}O-KVB2AE*_86M~8ZDojHvv5r+@P1}%>?hg^@ z9=U}rDqg;2^5Ij@J2Z)gxn- z#j7Y4nzBYx{5eX6Cf0?nz@S1SYixxi29rvgV!S)2F|bnN>?k`Gg6%sN!j41A#g^(0 zO_1|-1(aTyz4BKq**O!MFp@rIwAy`}S&Yl1x>+U*1Tlgl*WO|H ztj&0KjT+}=I4~MKMFD7J^{9gS70qcU6eLPFBvC$+*Mv06LY^zVx6RJ&$|SRJm|qH5LnO+8_&2cbqta#R(Hb+UFf`ClY|A_m^G8YP^i`!2m(fyMB-1Kd zRvJY0zFVQKP9!Qeal!bB)ETvI6P^U@jrfKW2})6g?73*j-Uwhm2BF=y*kF|gp`*+4 z50RuZDpTY#?||A%nLVbXN{mnqmsyjSA(0SX*Hd#XbW|sZrfyCiC44e$;dTftv^Ybd z?l=>o2hpmxl$nmK970!!jI?R)&im*iaYmF>@<=(GDZBhv!d>Pp#H$@K!xUxO(LPAN z&OMf;rbO>gwhmPJQ!+T0(Te+RV25^8t%rc_b42P$p~8LBL;M`kHGEtGpb(Gc5N6JI z@TJ%x&W@D-aECa%XPuJKvJgrv^$~kt0xEtnIi!_4(#Qn8qNRjd%K$VR-z~eb?F>w# zDgh|VRwbrwtz8=XHghx}_vmLM0)?710?5x?Ya55bIL(IOs*+vdA5fvTxu-kgk~sWE z6Xg{n2m>5)-xz%JlT0Kz&&WA!AKcrKEUL?7O%eWpcEIC&2=^dlVIN1NYgFHf!W&rH zo}Z6&YLN8G_$=d$OG4u>P@MTrkc2SpjKsbfVkfn(G*p`bzRYTv{Z%U`00G2KP-UiC z$Tk64Y6Y&llrN4Lq=%N+?9X+#A5oMoHa?XFyAdA`g>;ZkUQz6vL3d0plLiZm5vv#> zab-qw(55BsvJy@vn{QaVchGB0W2{Omj);6R^ubpiJJfQ;K(JNPoxavOnSE5smk*d>~q z3gXUjezp_-x*cTDz-P3t71pZET7y`1l!sNcDUxbf+-E(Ev;q|UOJx2z%(J#faDo}`@>y{hdbRyIccm#LlE*yW~-cMxevlgXOx}PM} zL8t6x*=`JbX?-lF%WdY9pN@oH1LSr;AF;khk}3JMi+yYJYkZEs6WMNxEs5>nXn-x3 z4Ab$cxGFYznm-X?I~DsQsRc)y_9NFFki+7fCi-;xmDT<&>R``8c}9IJA)y)B1g@TS zWPB-O=)_okIX1pj_{%6wkU!b(58U zp|CWw975FWJ7NzBt)3jNV+2?OIOIdLi?} zLKo*@dhm&=2qkHIYQIajjGJ)=BKC$UF)Mw~y0xaq@p+gLF{zW*Zj zmhX<3RNLX7!wFNJI-6QfZ!9)kmAOVvoYJs;D(33i4nLOKMigea+J%afV7;sSu*rpX3{Nl1pq_0j09? z$5D#)J&qqBQ6S$GPnno)^3{D_0O=HI56+{55s&$g)`Zlnku@s|$k-&}HHko+Yfo+u zOWBhG0sR)Q5GpOO+V?hxi?Ilsuah!)!`hXL4m;qL?Bn`i1*)=B2KwT(zy^%62`Uc) zDq~B$!v)p^OYDPBI()Pn%n>%!;z*V2au~`3OHux8vl~&l(g!+%0b>(q76%qw5c6VU z@{v|+XzjC^;$4Z=yc&zh;$SziYEq1+eANsTC&+$s&2>DIQ?yNRdh&3@ssZE#F3{?-Eff3jaKJ{4J`JU^eW;8RMfQN9 z4qH@?@O)*&G7vp~A_Zn@(G-F5Ou$)22jZaNKn;>OZRn-*6Y5$gQ}cEqOfVCA&LjoVZ04a;7%%68F;q`*vBBMm{95e>V-(qok7tzv=0{vJ{(EiptpRgTy$%4ip%f-a zcrPK9Dy4gK97}jqOQcfnt*uhL;;0SF5gXPy8^^1`0aDF@5;HjQ?f|(0N3EPba@y7b z#(A87r+PGu%@xmyf|bF><))F0h(ftJ#^hv$S!x34^FV+ z(*o1Si@bBlwyFLx^A(Qf?eV?^3E3e^USa3fIa$9QpBX&GHU#o>ef;V z0!;ba6(LlZsd*zVF52>1M?MyK+FBpfwdmu#_)NY{qruCLnUy zF3oPYhW5tedxjS85HY64VGB3Zia50EWby`itxtrp@(HPtb0UH#(RRCbTT~68F5l2R%%E^K0cWwR1UUWn;O)2Cyi!_qmbuZ%n~Gcsz4eJU>9Jcz{PD+@9cvC z!z_#6#mBGOgn4Z-<7)O988(VC7Kx8QqY_#Lui5^>CZ^^!`*CpbKo&E1WUzo-L1LQE zDlxXm2+9)@wp>AH=+tC-vl`}u@f6YWHL}>xRnqQ7p1_|s%W*!GlptBui%1qUWuclht(OurG-unrnxJK7^X84kf5?D*JE0Tia|PexP;vKx#n0=pZ*> zQgLTpBU4bZ&Yvn=Y{1&z&&-y8ezc!r)TgaIZT2x^@dJr!WMDQuLo5uK%IcU9Vu6X? z*-R0w=Gt|u%6U<|K{^VQhA5ODTAMYa%j_j@i}U2eDN!M2bX(T81ceX}8y}3AG~W}UZjdHE!R0;7drS+saff|3 zeb&4@`cuBf;A^|{?mz*k^D_a2*sR`ZLBr9)X5L}ps5oIeGB;8lkQr0#Bj8*}vxF=AcC%au@t`})mL zDK(ADd$cjq9u&5Y7{&BbeU8TxIuc8GLw;5zeuidC4qkgv+dBOrhS**IrXfg28bw?3UpOXzIcCp$)!SA1Y`fM=;!n!Dswov-$F zg%KDZIC4|`*Y8R^J$XZZ8DZ~ik_RSe2GQDp`|d<#z`0?TQvMiEcfy%hiYL&xBJteU9-z~;7?C~BWQ9L~H9qljhtpTC;S&!n70x>CFa6Cly9f|X|1rF8U zB$@i>8(NGzktA>H981h{!k$RwCEk^QOF%yHQ>rOn9iOToMNp&m4wwUw_FM}++BzJO z&A%;i8~`F#$kT&bFuRaf6MN{8;Y$VgTrh*8T}jN>+1*wm6T*}+kHwufD^n^Uk(L~k zOE%P@&lPp75(%>h`D3PK(1ov49e(GK!hJ`3&-ylpTGofLW=j$Vv?o~4BIP6Z@rEff zu^x_JaHeD=Ee|OuxQR1#CGibBld6ksH_+j5W1c3qTw)#!MDdPD;W!xJ`Zz@1Da?{0 zPV!WFH8^Ajb+1CUb`uVmesni32(@1mxXw{+rn#_`W-gp@5U5wx6wNNtxC(jJ%t}M; zK0%}j(1Lg8JrNk%Ni8 zO^Uo22`ctEVL$!sL|AQcj7Z3%!e#i*qPSm|=!(x3#a10=dZ!{%J|LhMf99Y7@(Sg< zpCyhPxaL0H8Y zTjU}jygD6LbLzt)%N*E0kOg?3TU3q2o+Z>s5-d*1^j7)C#u4;^JNsXGBz458ArH7u zX34Ql_K@Z~dOKrFPo3Q963N5*#Krw-JdEuFeW-6T^oiUIAU`H2S}7p8pe4HiLOR&9 zN~(Q_)fHwFMe@lORU8MNq~P$b^V4fqY4C&(`&)d2cu92y^^cTq9RI|vQRMDsYPQ~K zB%cm%pd$D7(~3k(Ul*QTI#N+_j}`M9fmn>CM!347@L4ve+>*1gJmSp?TinKgV-#6? z<5=hNkd?JNt_xAIcx~(x;;lE$`x;u%2G$M<{pZ)T@}gSQA5KF%&gmX+3M50AJt{mf zzv%Op^D`B&LCzpDSDrFS9aGmv%#Yb@eOHtK1AGD9fMm6PL86%UV-^RD*-Fs#-f=Wj zaa+Z`YE!rD=!)#6Wzwk5IeTUywgzPNcJQS-ev+N8vKp;P?;}I z(JEWIWieq$!4)pYhmnL^B2j6=)lvn;UCeusXA_`UiJUEjC+B!_7*0PQ0|Nh`mPWy+ zR#=OiKO$Q~eKJdO;!l9 zUiYD?JqAF^=};iv9Cyqq{?=z3_5=FJXO7B{iUN%IMzy;TZD-eoq&@%aYx z2@(t|IEfC1vzyyhf8uzxT z4hEpm77hc5N1ur+PxTu&d$6W6Hx}(Hv(M-_ju=;OnFZ`{EyT{)+lw)3ND9A`pi5ll zly@)l7kg0j8>u6NH5l;eLu`h|SfHw!RlDJ`mEu;3HXNU#iOJZyO-7xSQlid+Gg0cb zp_&gc+G9mWLlhE*JdSR^LE{gHgDed3bH06|DP(U) zbN5s;S$fpw@|5rOG`AX>L$ zk@S(j_`rXtvjc~>V@?STuRakOlf^0Bg^wqx3K%wWD(5DOr|^tDBb<`zNpKA(8l;%(rkKACxdEZJhLE3ubE z8&EzRGwI=`WJBlHnHY7jV|yGMlx{~U?mo?q^6dl7%LkkGa$VE%!D2e>E$4u%0dHlv zLE_-Z`9+`EnM08cWPic=&{8>VKRlz1{xW74M=ab70-Ldw1O{;KvE4$8c%Z|-muFLT55lWggl{Ie17oTwqh9y_XY|F1tOkls-kjFG_-!F-_TrV@n-0= zTiJh*S11Q61#g-oC+C3*0R^q%6K^=cV2sA&3GeD_a!;$0{%ASO$3Pkfsinr~yC3yb z1B7sZax!E*5_$glgkf1yim`A(6%5dnh=4Zpuxk#bW{{OAzyC+xn>DAhG+Tl{NHPNi z2(W%4gCvzg2qAM8i-M+WVy81k99de9}!NZ5;%gG;=c2*cR zcTZ6O%(=-MZnb-7u2|y@_9zXJjh}dun?Nl^#?j>ydo2&gNF#WSZ<8Wh=L1vZ7fi5G zj7*ft_8@*XIwoGWIQvx+$dRfqFU31C%YhPlLJ zv(7EeM4q{+UI0Zvy1%#OL+%u@nZLmLpDS42$jrGfQf;~LRH)CHEDIZYDI)L1-IFSy zy7gI-7wJ)v3oDFGhnU}XANK8vdP<}4Xyspn9;LExlNE^Yk);X0eYs~7z{F50ywHDl zMXyelj|nz7!9y(oL;D&k5lX|lb@;y{I+dV8O~r{Hs9f}q=g*%KUWXgUbdkvV%2YJY zPav*aplAU4y^Hsnlc^>yQ8~eR+b)OSc;(pV22YrnO4LwjIf(ETyivpltgenVs9>9u zO6coYIT_6CW;*nC2)au=(wGO$#8M1YZ+2dMw&n5TzY>Jlqk-QWXcwBEEe~snZ{yj$ z;W#0^{WXstehz;=vkwxEsKSPS7{Pd%6M0qN-$7dG2An0I+zP(Fl%eOL<{ zq;d0zMQ;(qz#+WEyiU}B87^3bBqZ{S2E3o=A0S6fPFn~I6$w#?nCO_`!35IxkwXkc zueRb&zJ$io?9)RjzOFbP%ulM1U}#Pp zg&ImXXpgO>H^`(=EnEB}FvT*rgIkv5CtWb!KINLf`7*}k&3k_ubXP>@@ zyv#YOEb~nb&9M9DkG@6sw+k(Mr>Lq2Jiyam^6hyudHMC@FYfn2-qB6U+%pXAs1f_Y zBr^L0(bN_x2v)$Qbrg73sC)$bN~8R*{N<8WTTzVkx@((IrixXA99=M$LRe{ws+14K z58*G(OQcV0g`TVJ5u`(uMFN~u7AArJ$r;k{`+m|_ zrsvW?q)zCmepvw+*8-gLsm>j5sC1e%%w%aD%+cqPIH|9a1|w+cZfHqdDJFC9M!`#+ zrykhuqTy37lwY#Y2uf^tP#tt&l7VOpbvj_u-2Es4D%*^=hA8sTPn^4!91i;%XNwd;I z1J;Tl--J<69byCa*I2z506&)NX`i?~^vvg~OU-#>RsiC(j-0%r_70t&;Et~~S$W}Vw4gyz;xH03jK@5#y5TOX>;V}A0GuTph)Eez2gY=(R_y%oJfA8Yf`S(B7{_DJ~k3^{M@HCB3a!wLgE`i@A~eUwr5vUmS^Q-j-PZvV~p z;&rYfdPn>@YQB3^mANLHZ-AJB*gbN0VoVcK{PNi3AQr&H2ggs$k&SL%xl_G&jwpbrE4 zs`D~ei4i#Zh|$dUqkW-ZW_VI4S1L_PLOkb{rjznSgZQqlnN(upm}j2o;saw;V2ux+ z_(WE0LEOdef#ImDH%fPTz?&>b|H1MGNGTP>KJbt#vEi+Ox{^eYrJSL5nM~FXc8(9) zy1=Ak-!@!L-)ho@WOj~9XH9h)iU;2vaerwLxtyhp*}u_2tF?IeEj7qS1J%+HTHFL8 z9bf#>&`5^(htdl zZbSk1UbuyHhU-RoVAw(Um$X02}{{MtE`glULwK{LJ(_!QG zPK+EgcVuUd5s840tx@Tm?Bx=8Dyc8Fk*240#;}6kdMhqYQ_nz{{aiIT=QO!@sF=19 zrQ2B3>a(u0A=BCk*Yf*1nM4m%hAaphC=1tkR_Bm({F9;eF6?O)#&hM_si$j8LGE2W z(YMpVg!9Oqsa6#pcAtS*!tPlWGU79}pdZzaufH>;q+R43o zvnvC(!_3h*4ta!PJ;bz$gew-Xi6lB>e|gAU9GRf^|Ajq-6m>~7)P*l8bAfO@+FAp4 zz`|NpmTViTG_-M!lnb9OHmjY<(tVZWVC%of2Rtdg+d}2>s(VM6&wls-CemCmeqBMp zwdpOb-)hvTz_DZMftK&e0BF0a5&)BCxGlJpcMia_g91Ne$7k9~+KF=1C(bM+GY@x< zk`h)ona}Hd9X$O<3snl>0AVB$O6)uION-{v8qZrSW&KQSgrqUJ8 zoy-U3=TJOe=EO1t)ZD_m=CQl{U+yaKE=@GCcP(RgdB5D1a>GkMqbr}nD+M52A=_r( z*)nJXIqhs=9bn%NHedz*^6dv9CJc61I=o;ii`|JT}-8q z>zd6J7=B=1agkQNb{4$|J6eSB3o`0{i(q7n3%@VlSqdwHQ($jHtPhxe=FVNH-E;*v>NWUo>Z5ydnhZcJ&^Rz*h!m;J$q%a zIstpFx?PL7gnCY8%*2%^9z?i5+g++y z@2NhEWN$PeM0E<}Tefzwi7~0MKB-=8WBbSOU9cA)VYqoJR#;uAO7Ie6V{uQA&GCv! zb+XaNz0HCCoR5VtZfTOf-@ft1(7gtPk`yrqKfg3EHluR2Y9}_K|0G>hqHX^`1iHK+ z0@YyL8FOPiOF?Y8DA~`Y-<*`{J2z1~19DyN@-P%GU2^e~86sZ=MRl)*XVMq;Pwq06 znBa_9R`|{gE~?!SHPNIUViUOK6;teWpENSN15CJ#bBjIYJ3~wBs7csU$1ZeQ-mt{jBsaeLv=$jH8`E03@|aE+oNC+hRe^W-sK=~h;djLP@5K)afI zC4FASt~Xi>D*lYxLr?WF+?ztvXJ1pf8<`H5&n~JAX@VB#hD!0#krWYVR# zryW1HZBWS;2R&acmC0~d#b(#GMgA!v2{>O?thLcQu^+d#RGUG43-hH*Njh^wPllM5 z!5(zm4(C?wdRPgX3cqLmPHC4|DC7XYntEx{bjp8=z{u!oht7_-#DP3Z9BGz%XTT$t zB^4E1TA6Y5x)n*F(_c|7#fRvGKjPF%UR=bqXd;iq`3MM?Yf^8+(b)PsHm!Id~wRlUaHGwipKwAXH898*7_VSEAkr1!Fzk`zI+-S6G zs9uRZ_L2f6%o8qMitGyXGupABWOlzI51m#_&?I0HWsmy5Qjh?VRK;p?miNCoQ);XR z5<4@D&cFvZ(Sisku&Xb%QXLnBpAkUTgJ|l_tfK`btcCs^5)po;->!S2ePhONO$k6T zt=O9LB4b8|VPK}jSwjEMfn7IvP)0gAFqUuLU>H4y^Wrn#y|x)q#-}3FQ5065o=0$^ zRWitXI4&4JM~jZnWehEEuA5e)m;OfI9-JIUZme~@0O_4jOo+$tjUU%OP%j)a zZCs1%-9X3jQZiU>*177~p9s>(cB+Rm7|vcg{)>fCGK$&p=kJM|1q!Zwy^u&zDTJ)E zW|QD0qYJ`;7_CqhnJH9#Z#%DIukz4c&un9gQmKl=)`IyVvy|jVreQt?^_t>v`>4O+f(ZS5X zFcg*Gn38QzAt<~mqX8>h$Z8rJlfWp7w>(gno#-j63Y}r&&%`*$1lxDGI5u5qE#|fx zzeFE7fvjm|6J@lt&X#?FTrfoenNx)!+F+@HuS4mtqJmsr*6dmBOJVxQYWOHW$6~d} ztyD&9f}qe6sxb*_JRIM_d;hb?9V5rL#CSDP^_b;T&m#@4wwLDDGG;DHwf~l2)yjR7 zpJinUT1M(ij1&fjZJEQY1);DDFuSW2uP|PqVnm#1jfl{8mGc}kG7sIRb%k<8?(*i^?aWfGBD9{d*u^ zgLy{tzCop+HLOr$24BvcmOmqDtz|0=BxWguGlz1c50gLHo-a(hPDI1_Q$$t9rfvSz{>4cs~l zTZ?H8&oOmk0v^Jmkmfp2>uOq8^2#~2Z2%xqJV8^Rqv8oJiw1EOO(7cTs@gd-#b)18 zYmz5H6Y#RmR$-MJO+gbAC1tjjvkl2FJ@o_oOfQl#q=&+{?iw3eE~*WVKkmLqtzFc+ zwUY;4@n;N;{#FgHlBT}PJn?oFmcVJJA&`gYfm+I(urmHC>H*J`xWe2?Wx)cpj6jV+ z>ZAbSEGC_oax%h%4T;0b0%i_dKswt%apiZf2c%jp8qR%6W< zri^U4ozx<6)MS2+&oeZ!+zIO(7JuL?l&3tE(8Lb$g8sl*fd#eT_``-UD_%bO#H<$z z;1$_N*ZAY^$Y@MkZw^^mx1MHTwO;Y;K1z7WFwdWKDL&|H3w2?=d`}G}z z{Fw^9WtS8uQ%l02hrGNqI?o0cu3(WY2adWHa2R4vmsm_73T}wmBTZ!bA*)HK=O@PM z$n;|m6@p!j<^EH_0TS)MMv8Xa3aDMktD6g+@3HGe;Q`a=@WH>=YMp9hLT8>!HgRiK!ty zRY2r{MZU5AZ$Bs*!#WjRa$0p5uDl8M-hp_dD%j^cX)LMk0xux*NR95sPD=8}3^KV9 z&zxw%daC15)_5R}%ZLPKD+hjd*x4h8$x(^w>r_({gT(0+M}J%?Ci>q4f&EX4<#;@g z6<^B!PNR=e6pBmau6(PJ%o8gt(j%~c*PRDMc1^ghCb8rT;h7XuvC0tfcZ+XcM3I#S zV;9VSiicEO7CS>nzOx@!w6N?)%VGji3?=9U0>ZmhA}jzfxVFez&okc4*(po@9bGH$ zp_g0JNePOp5pCmHGe>d^MN|+19an1sWSLowcts~at0c47PP6|5*2Yygd{y?>SJi0w z5~KRttJ?Ca$;GS0&RT4imnL;*=d<{=-pH~dT&hIe2(hV2Y2?GIkTbFOlzzeg{x zRn8ltV3Xb}{0{ojeYO{SJ~^S<;YS*}h4u5!J}LgifA~C|eoEvV`%2Efne$)zR!$ZB zxY%T9>({{~Onx3Ca|L?u`x=mt#4&;e_2L!NGN`G?`^=Oa0iTLDc;v=Ir2kNG4-uJo z!M#8fSG0=Y_?&|6a6vhaC&!VW^rg)pP=NZ!fnQ|*y~qscqr zkuL%T{@Li=UeM`mF7}0m6ABT#!Sv4C{EJqjYDjpf;Ow5xyMrc60{E4)wS2;dD;6Me zh*u3wc<5xZ_}qjepB2<@qeCmR{F~}h+ho@2U*xC--!eakW2e3^`i**5!ZUEZe$C$QB9 zF3rEKvwGpALQuuz&FvTG&pZE&aQUH9{NlK;G&K6c!&ms(%PL(jP_>*$M<=fbC2DPM zVJsgl@jHXerl?0tiKD0xC{^M0XhV9iPngh&p8jK((H0VaRy3_fTxc_(Zoa4Y_Ltc7 zOQ9X~7BoKA4qbWQIVbe$z#Hd^_p@5f^*AV9U2U*?e48&{$@ZNy#KsN#KCll4j*UfY zfu*$*mKYM9Ral-~A)_+nH&NP(xY4Dl39J;9b3Qm~%KW{9Hzn_GA+X1W*zCR@-&Af? zLgYU$p1X6vNfHd<0iK}x{*(HX&s*-pH^@C(xyC&inFTJgHsTC*HH&W#4P;`$J8&#F zG75{=3`ps`1_J?1l&)C%)H)*xgNTb_`W^81<+c;&?f1ComzA@FzI7^B_{5%C67LjmGNXfch?Yc1(vh@LK|Ak9 z4Cy4^%5rq!bYw)enf=sTU0QHvRIUHsj^I;>Kbt!{e6URnJ8C_ey_0xB{H(VyX1@-FnscppPXu8U84J)G?4SJa7Br}=8`o1TW33g#`5s! zj_4`UuMhF-*6i%gMw_-~1DXrGv4&@R6R&9NpR`2Wy1M-3D~Zfw@|LFIup-jR`NM+N za^ybKxyFjHNq#UFGy**FPhN2u1jcg6Vnyg?j{%M=-Iqzw<^wNr=aT^Mlc}O-Z)ocq zNYimeA)&JBDkdb%!R4DetGZ3#b7#&H)8k=tuO0#vN(3T0*oC-(VR~p%d|I|#+ehMi ztk{GSPg3(`-7rQqevh`A(}4UyHV^jqE+REmcR^1tL%)q3&5NBl7u;+G><`|<_MO^> zJpIZUeAAJJ*3wtLc2?h3n2R#xs2XiQg5qZF5J-B| z%)w1vsKT7DS$)bEKWmAJ3c0pboIDy8OkdtHVmwe4O7oR(kPzYxOd)=A%T_0gDz#;K zJKR0BO>9U=3LZRx)0w(`F#12-L^5seu|!?@(@%=BZ_1qso9YYD#xVE6rmrGbqK#Z{$-zf1H3zP?>Z{gEc?yP7Z)9#|CA(FM%q2DE zun#{qC2LbT)P5^%X$SykZcf;@xuKYEUO}q@-mzMG>qax>Bn>H;lvIMYbm?c?1oKF? zR+SL|`dSZnJmC^35b~v$a6^kE9m4#F;M5D(0V*1}S@OcIAtSukou&~}BS}Mf<_6t9 zP-HGD$G(cHQy;W^2Z!v63BNBh{+flCID5M`#=hR;ZcpJg!;~O%3)%8pieG?oy5Rn% zl5P1#&0z)Wfw@1+9=i(1%#M2~T~RHq8eEV^u~tsCoVdQ+?$dQ?UU?Marwt#K$vAxk z$6h)KFSU(5i?2>v(Vc@VRpt9&g~B z8d&{fXD$-oo5<#SbXdE&CNWo*NBO%(gcBiC$$SESzeKK6FhtWQfTFifQE208C#Uc? zABQM>tVHp+85ajQkDQu?H@45`hMl)zH>}iz5OFDTTVl%9ONKH)>=pCH$%bo zpL+KFfhvM4u;XJA`jS6ThfAp~C_Qy$3DXL)rrmEjTL>%l$;TF`cVCId)@szd<%^Aas#_QrVNJx zV3CGqOM4=Y!(axDY+Y60g5^i;gTC9#XyC z>=%mHB1o>0B5LMJ{+Rax$-mem0t@j+&gmj&D#2^9WVSf-b?9*moX1xRfOcv};SC3q=zj-Ekj>vDJNgr~Ch)UhghZD$>w z%Ggsk1I*iIzIXY=G=vsY_;~6N-iG88@;&nusSWh7HXth;rCLM_kTZ>=%z4A{UXuI4GvpTom$S<4A|*-GIfKGVV6 z_Mw@2S~AqAI3Ya$U%qGv7~Re$5;<25Jy6E#;cIETKLArCrdMeG?6;1s=0 zmal9wi29@=@pw@?mRvx;unrB}bYDH*BQ6~BUYUZUR&37E{PRW#B5!v+ZuT`~S)IIiZGxl#iB3JmCR8BN7!rmM?d7DsUdvjWm zNo6+GnK3w{PS=vhHuLD)jO5b{aA2w`AT0sNvauWZtV*A&)Uje(}#6O zOs)(c2GXZ&oMHUT^A=vVE}7g~{MhD@d6>%w9hU|QP07gpgp=fLr5=@~{$0`a^Qymz z=B!P6*q1SJW>B?|n=9nv!77&NQ1vy^Sw|k{1FZpioXz765T4I_)w%WXL!YUT%*JU* zT3Bu1q@dAsSP5<2p*I%GZ%)FZ=Ap7Aj{*t%#F_8r84GFG^-xcH2Vi9Nj^L2c@;Nd+mwKP2Pwf#Iha7kNv1}F(; z%G`zk<8kZ}*AAoj8onPmL%U_Hlp>m&9923}LpR0~hq-o8Jlt&cG>G?g5P$s#xGkJ)48~SRt z*X6rrP#XTiVR2K5%%4<+1|pIYH!O!jdD9<8F*+CS2y9(%sd#a*nEiG$b}pvTYH)!T zx=fn6vDgIru?1&EU<6bSs8g>uTB`wCAsnfSq3u6$;mftpDEn?+hDxr3VyU0~@M`yQQ2+!@3zsy4xV>R#$Pa zOSGc}9&r@gX!seGHK?%k^mO8MSGqA)(H=2f|42%(&)q;nbPMfxmX@v&F=Sr_sY48| zEuBR}sdfuM>dqF`lZHRjAKzL|RMY{o7Id}dV=)b+RpL-Lmi#vG(U;prioKp11G7ou zB3ah8ndr0bp-NjUR+LM#C+AR}x(gV#tvuLZHkEBWa8=7ekbYnTjj0;=g z+n<9bwMD8)Fq>|iDXXu{UczG&hh6j>9s#gTB*-GVY9>72P<^9g3t@kk>k3}%y7db@ zft%>MgR|waogRZc-ME=wS^n$4@#Jio4v0cwmL+a>`RP|I1I&mq zmh`*=$KAonYa~o}&s0wg&77msk$~7b>+g6IdSQ;tZo(`qU`v124CayaKuP zjZ^CXN6$RLqOAQ-G&eIOS9QIlgjiS3HR>SUsNj4H~yb9;BKYXq!#*fL;Z%;pX13e`yQ_m>Z6w#%VZpA7~a5#-Z|ik z_Fgw#U);3$SzH52clce8`du)^y?g3(QIPEb^{gW91z&s(uG#Z3KC~S&1e8Y9d&RPZ zrU#2rEFe!j>|#T`jo|TFI&*50{$eCLY-43k@!l&24~Jtl%x=wct;e)En+j(SWR%z; zs{1JkNYZtcMY1Tgds4oxUs#qHX=Vne=Tlp|D-(1T7I8(Yf>~(th-?Jrei?e&SShPk zLefWrB^P`q#wCCc&0!q#wIaRc1sFo08>|ke5%v0smQqW1gT0%4idrd<1Rj#cQx{3`z13_Qn5*UmLGnRU$)`WqD_8e&9zJ zoJ^FIX`Wa`tpWQ_$yvT^07nGO^IMWY%vWh@&f9Qxe{JdC3?rH-XUd&+RHcuJq-$Wb zp@leAjwk!QKdDBd1Kg1_({wO-$s7uVz+vkkdy>uMUHvOyf$t1(g}10oE;imdjl@nC zU%udqkvVZj1xtQo=0(<~DAV=5q6}%1=b$l$seW>q;UyOd`YZb7@iijLnLflj%Adr2 zG>9aWOAs`8&MJp-+?kmXgGQ3^s14mXw3?I`E!Y*WIN3f^wApVpeioq}VQZ8!c1MZWfvxWgQ3;1 z!X$pdewmJ|zaZ0gV5|19e{NKP>Rl{&F51WdtB;I+K$47k*n^P`ig2cH!Zlg|R>j}S zCsfNQr$7ZXSX)^&0_ZvyhU&hGh=X#!h9q>_`C|ne2-o-ckw7tGJ3<82mF{@R`@P{C zhImyE$*WTF+g35#cw8ga9@`Vh?WLtjHOP(o@`RF8;j?|~7iO`iAF>szsMgB4$^lLMR+-&VqEB=i`X5Sc;AtCY^ z&p?di7OO*ZsaZxld?*5>t&|}WXK6-JAGw8OA4yn{eA?fn17|k{(_r~})@vGAEE41| zK3g#z2CS4ll++4~^0u~vEZ+gsQ|DS(MjmlQqbJUSIgTZ;=NIv~ucE>gd>|3z2uFn# zWm55o8MS82$Jz`-&}8AW`W%u!uP);kPI(3Brv)k&DB#CBopZBT->A!Np<1;>1)_=J zu7PlF$4FO^2NE13o#BBf$&$DUy^p;m$Ez?p8Gnzm04#ZktY8cV%A_4TqG}ABt}IJx zlz#Opgr9g1oX&yW-esn+M3r7*$GQMYb)tr*!DyJ`M&;!@3?2rD-WZheSWLOCa|y80 zlQ|#$A?ESS0mhTYOb==F6}DZUBG5u}Hw9%4(nmeeBb8yYG^Ksd8I+PWYiuoL6pl6q zyBqjVpN}3RDyWGko|_QBZb^PHOn21N2)=03byh1X*SL;|Z}TZ`>r^p_-XH@^ZOTEa zGbbGzqd(GEVHaXxz}+)J$(M4jzB#D!On*iYXX+>N|DI6#ud%dshi7x{WlR73?a1xM z{iVzM*Sx>C(A&pETG0@1_WQ&WCT|x}CH+;|*A>tQ_lpqq-5QC*1J9H>~EykSn<7xL`V!Tjop z>l>fA<*C;aNy?>`urQ07;@IlGa{75jztbG1PM|_g7f$@{4aR1T>Yc&OB79IYypczq zCN=E2NmoK|&x?STZjAX*EJXV8YzVVl{^5a*qj8jYUbfms35A5P&_ssw3D1gDI^pE` zWq{9OLf#oBH?T}3nkyA3Z?G_?W;27j3G`Ww)>{pUG!G9<7QS!*4K?9=`pJ37MBPk< z#WWkN6V;p%%>NUmnwXa#tBfhKlbT^|^b|omC1!*>LbFNt1p0Vb;<^^-k|>i_g0THL z0wS4qNRRYAAh~cU{1^`c4})1Der4sn{qEyY-P0b}DTh`fwS0#|35Zq3mg})=G8jZ^ z_DTHIg>D_J>MTh&%tr6B#5lafsZ_J zy5xqMMGLa#Saf9WfSvkNHLYt9LL7c5#XR0a{@x;Bx>*7zQXJ){bk#mYVmx?A4LGp7 z+Ukd=@=zgz4!uh}G|w?Z8lqcbZQ>r}(b$Q)fT=Oxpn`Qz>POZGPaQ&m$P>GCMlfH& zjGl36T7++7c&!(^)JMgUI^E*&Poc8^9lNw4GbhjDxq-rIv?uK>&;-nIz1K3%BJOcj zOS{;lDg>t3x+;xw;#P}C7U(@I`rIP!RYP1}z%ehx%d~nvot11pJo1&j2+@+A_*Y}` zO5I@LtX>$x&%YVtQP*hbdt;Q8e9+sz~o=dz)#7 zO~JAiqC0zeu@&4(3Xs#_yL3_HpfK9+%6pu@!X`$|V8BAqbFGY=bNB%G9d;EKg=N8& zw3BA9R@K8O@AfEANLX{4(etoXF=Lo=UZfs~v`xDBna5kx~vgr<5` zjvSbQSt;FlUmp(VxkYCYdiPP_D!rMjLnh2qDwxs7A3=3x|3*DRBvfooD!SVP*-f8D zcfcBNSwjx>))nvhUMy6@8rtZD%(8*z8&cNZI_P+&1~NrXX)kT*RC(e+;Z7Mh7I_l8 zDNRj7*-YtwXu`vUD_OtfWk~(!bHonn4iOjfS0)34_A+g%PaFN(qMQfjKu)Ul+~NL{ z0(LCe#mDCno(l*Gfd2{pkpbpLjH5izb(mun75xi#xTzNBvAi7U?pmNX#C4VjKMJmF+=s zc~(fD%b(@$Mrbh1S05Y)y$Mm{3Llm7Ptt`0N9)9qukTklf3ntz_?f^eCrCE$efHNM#Hp@01Q( zhF0ne$sRC2w-AsG-cdhFp+WPZ2&5)!%+&Mu)TpIBwLM(bZ3Tnub)DC^PqSvOJiALX z6Sx3b#XFR1YEa$lj6GYbL{0?#_BSjIW$`&n#3i^Q7LL||*{n3@> zw5Vv%x%8NjK*5*K5`Yq!CIlij`*iS5Fy@<>#=5Ez`bdZ0iX+M}EJ?O%Jmv4mo4Bm0 z=vFxeNBTX(u)}|+c-~y*Gu)n;P~~YQ3p*uWC3|W3eH*7(=Ms#=@3s&sR{$EG+zc}~ zPuMlSaeZKb{UQ0~0+UB>%g%)@<~B6jk)#dGW(F~WDQWT`Mc$QDP*wu$DK*KEMtCU2 zg>*(R9qj*Pw6!rRiQr1)vHE`L$4^Ec?aXsWQKhX0ckRZM1-zU@OftNo9C;NcA#pAI z^mo7&3@d(G!+`3oP?b*pj4Ff5=>2S*S!yG0E3>lbKa#8!Et{1+bPyV$vn}=bm6!s- zzOb>Y#2z|1+Y83B&Fn&XemR%s{kd~~+oE;Rq~!%Y+v&0>{YDeS!$So%MkA+CV3vS8 zA<)Y|&Rb$GzR1!ZM!OM?BskK{dBZp?iT$bIo_9n3vZyAxFXK<5Pb^M)&X>i4EWv%M zVuHKuwWPE@x})Wry3sYSf7}0x=!3K~(*z-IfVarhJCLPp2~>PAD5~Ce?Ro%HTABc~ zze;V$5o?gOFx?gkBPfD-t}c=SdfQAYQ%;?tlTkK8X0Fbq5Tb|tJbBpg8PV5_!lgxd z7E(6C9gakQ$uO=Ra!GMu1PQeXQQg5ccJL9Vd=2UAv`BP}w$fhU@dEF?#6(zyaI%g- ztd`4Ax3fH^{pW3q8T}b8Z+`e9nIo6~C<0C^e_n^?O05WC)+MNI zAD;FmH1}7ax$a&mf2DXK+Zr0_+G~Z|2=Kmp>jEeN(THs# zURA?xus63J15ZSitewFd(C}AUVIxYF4K}8!GQ1BpJki&rLdiW8?3sTs%f3c@fLNxt z&$97jD9pW_(i{||Ecyr_%50lC%8k^}Ve{m-dRaXo8M)^qK|Lg*fs5c+&?sSvtOZw~ zF?&T&B^4fO>uemw2-=zhNQnBdCu?#d4CNXD(+KK{e%t1dRJ9|)+nKK^scs}O$5mBR zAhaj z|L-ESX$XyN-_YTZ^(Z)tHp^Q66~}z=#hb7ahy0l#WfJaZQ=h|+>cNv{^i%ghe}2Nb z(CI6-`_!XCRkoMF&_?VA0s41xE!&=HEqq2O$pEDJN81NBl9X&M#iBJgV2(2%W28T^ zHcexVlHpG|wZ{Fxz8Y{?J41cP?v8sc!|e^GY6T-3%zE>jMn^ZUSZOtb`5X)d`#(%Y zqQkgJe$iGD4!eye2RAox`MoO0vTnArvM`4>y`%-P8XIPFzFj>= z^AM@ivKjWyr|t)YR!^t-9?7sB2%&DKCw}^p>7!4z&|8-Kd0mlstrR#kHPdLJTMV2j zPjJtgs+za+n%yG0#B&8gdBxc|eT6!wWsaCCA_YSmYO9(bKDa(4eeT8*g?Q>SDL4#< zVaE}1xd9{az)|45=y!aH)>ulxW8VZuZDUx%_D0i)+5?*}B__ZC)2-Q81%mOUloWv# zQ>M67d5jMU2EFKrwtEm!@2#pZLv69O9tH0$=@;^oFsTe)mJXs+0$-I+y(@D*X@*99 zTV?jrq4SIAxTWa$=01pGCN2?{eh!ZCs^Sz|OUuz9Wd)JcXvhfIEV7^zNQ2i-icf4X zYa-Y}rkK{B>V&4Rqg4XWfw!t?b99xGMW8eNj+#?$9WjTxP#!WB%~5RFa=2n|FizW8 zh}W|=GDXrme#Q#4WMZ|pt<)eNRhO*b_4P|I#$MJ;m1T-s9&R3(f9d$LzyGz%;mtnp zrYSN@M?N) z%tI-r=qSGm@Ax>s1bHUrP1Vx*;6uB4i?KO-dNAI67j!&g2zK0Y|we|ZVr zztINS9SD8#v>nExQmuO3N{y zRG$ClH$+OHc@%t@`bo^=cBIO@*dr&;deY7F4S^l<)HeWvXuTYI^t)l8o;J(SYbVtR z6#>&4%^6=cnibv|;U97)pR^bDsPwN386X&9n=X9Rd%APsN0p>;+I zWlveFh6!94N59-CkWHAxd{hf>2)zCwOoa*V!7R`~2^ax$yyWXUcEzlso6wAP)96Rj z^zPvUJegUzWD6$!6p3?YSpP5!OSPHyN`?4-qP&KSxZ1qLW+OUkeExgFn>T0n%}$t9 ze4_EF`|o`|h*9>9Ms6nP>e@lmO|O;?osuUD+~@#m1&OBK9!L%s3ox7T4})qhn9&Qn z0Zp7p?fJ1s1*0iP2|qZW>aw5+5iG8$_>Xi+BZ~k+d#5DyGvKbYE2$>&7)Z#~k42$+O?=^N?vwpRgYYtpmi4LY%KzWg6CpKs zRvq@8FnIB;lxvDpVo@-yctQ`)jL!FZjP)5!yS4ec^e1aWyiq0h z6FQ#zPL`X5W&@~*>Md05%*><<+zq`EMJ@KA*scxp-fLQ}HbVjg$BMa(AdUTvGid*P zGq>aw8{LP^%~y)-H|`cUHXQ}I0+{CCEN0l5fgQ0mUuwMhlb9m^P(sGMPsvtMR_wq|1v*taPYF(2>b3$ao>GfoV+`)RFGuef*mo3w z4R5XBzxYbi4DB(!stLtaN}#|wd^f&4>5*vOCt}@NKf1j)w2Q?8YM}f?G<92ouP*x0 zMo(b0MUwpGfGZO5ziViN8RY(P)NcHL>G)bm2EdsI3ETpmm2{EqjKA+A1OYQ|Dm#>y zF-|OU30-8G-#->&ac8D*k#(xk!;?%kAHktJBCVMzY7vAPuF9W`@(AzaRn^VLC<$;9 zhPbN4XzR4B&>pi-VTMhMtTV`BgXYX{Rczq_^dYaBVakn6qL#9wlV^Hbx5woAxfU2; zp@C+}V{Gn?Kya)Nkq=!3v`1;@DxPkIh`pUM2*S z0=eLEl5@KQCcT;KR%I*!o}@H?id{w{s6A0 z?;NOOzE6>NU7nj6yYFpiDP_>w?Dg%H>%_(}%;9j@1hNvm!L!*>c>JA)Rg1@U;ymLmQ*$;)z#!-(}wjYBm1<%e(7usvrhIpPJ0HpOUGZO|Ct!%3x zjGgA)5MtEWvvfWAeTvQ!QqY~bxd+Zr_Q;C$S?{E0vW^0r6_AFLwGal$^jddM&2-B} zl(GnigOgVwaY5|FnxCQkb-!3ZtFhNW1t}We&KK+0c0W`q3bYZ3w_DLKQB3#bCOrHw zMt>hjMdSrAo>+d{1CxsIomO`CX%Pi`62omnNUK)xp`Q`}DL~f0!mDWC+fPVEGfcR^ zmBJ9f7_)OWtYu?>ty;3ijp9U^1P6FrZ7;@{ugs|E5cS(}TondAX;amcWsB4$gI?uy z5H+tR`|)*G;`K)xpEpE%V=L&QfDep`xl{H)6H1f<+57na-HU%IWlDBdg z$-@*JV1Sn12WPuXB-i?sUFg2G>s-aWV)Ru)~zoEk+qL0+FRB&8s^LhV|aLk^3dqMv@unJxWb3^ZJ6;F*@E{ zDgXI)LqDnNP^7ypH7&+jgkMR58y04+hQ_>Qxw1_t~_6rW_AsNWLA0_q)4jT1-< zug-43mwqpX>f4V{Po;};*g2D|=xr4b#rQ5Y#X;UXkesrxcz3y%i&1yUA94B*!kMRt3U~GeoM-2U3aSp~Q@RC8}(%0BF(_ z(dE5tWpjrI501t2m3@-xUoVZR9taC9+Dx2{qGnLu&DOQYO@)j4rA*VRZ(h%bSiL?& zOzj>^&D9HUTrxZ=`TihSt=nHcU6-SZ9-AxD+J#jwt{t-X6EM=5-iPkdQ6=+w*{5VI z$v}Ipq0EjyGx*xM);>}yuil)0yQolxY?&(RV3fO6_R2&r*l4kAF8@`9)AcTKQI8~J z!8}KLllkCKt!*k%iYm7UU9XO^84qRkQjeX|HsmDeJ2o70bQtgEJ?@IAWU3(UQt|Nv zdfcAi2l1*`+h5*i9>71`y5Z~ER>FI>tU|DFNcDgpSg<+lgFg_W8xu{R)l_xGbw${; z=G^&OC5}>8dG@$dF3Bsc={TuP=zlgVmyly@M{lDVDQ~v?h|PQC6HnbyX4lHzm)3>p z4iM=5CLl&WAZWJv$UE_^WCr2u!{>8Xp6;}VC%dqRzu_G1U7){@47UgaRTwoyKg*0= zXv%TMk@B!Qx(PmnbSn;P31hdqwj_cs`gi8DklO>=}lfkGzTf%gUKc;D87I-yB-3n9rc6}ES{k9&t> z6g@epMn;+E#H9g(Wq*PXtdtec)?{+m_ZS5|2=nrl-WS;+R1Q1}4qkg8rSkRxSqg^S zCavT2Y^c>d%Ij*m-GB_JU=|wP(H7JTn{!Tpj`-54hVUV2C$*>FFnu5Bfkns6#q@_n znptyET3Awqi|$0@xn*h*c*EU{+Q;sW4u)-fZ$DAjdSDXm-8*Ex*C1o8d$NrDc&i}tjW znn1a|8ZeZ;q*B?b`r#^BXSqckXRR0KQ7e>XmCCi)=c7a2=I@91i47l4L6)YAosoAT z;xho3dqW>0mqN>_-TzU8zytmA|AYS!TXUJ=fH63>Vrs(3{H>Z0*h)_Ll(9rQ|L;{1 zCYA6@dnt3N9-s)VRS(!7i+|J(c+KipOytC*HUw?Xv$L8a`1U zd}rJ!!t}r2>cQ8v|H|OublN_|1w+E%Df~AWJe(GH|Kr9^d1ZcSjZN=ih$soCSji>6mC|6H$ z{kXq%{&#E0tT-ftAWs@{WR$w~TsRgi=CzlFWLbx?~{AbbD0 zY8+n&H|$4h#emqWR(zz&^nxGDxHe1(!`2Z6;cf-CxO&vG-k3`JB8EoKVWD5B!J{)Z znB#h<1Nu)&Ft038ZK4wFZvID=U^Zk_2^HY7ud6O?se)+yIx3}bh{UX#K@N9nQ`6W< zqbhDyZv>^3==G_i*e`tkZtB>$mVD4$%h<^aG*t+@%#4bLzQ$MO%ZuF5GU`ndzF>Q; zVJn|8kv~VSN7DHertzv_IiPI3Of_m?&dE?|^@<$l4L6w*k3Nv_iKx&q%dcas!dIc$ z`Q$Tp%JirjIIC@se_KJUuDmpf40K`Ts+TKBVtHICcAp^~_lROOJu;;E(Lw2eYz^o> zSeK7uo72*?jh+jhJL-&4O_xaUyvM%1`o;wF!VnDwjk%NC{qm8)Lr)%sR|^m}9X;8- zW&-pyz+yQiX*{)s}Yx&Aso+LVnw(jh34sYC2ZsLs$=N=J1Ln#_8EQHxvr zsiD?zxu!SN4xBo*K7acI{B~y=+BwAJ$35k3C~!(M-5U44Y>l{Ps*!@ldtAHxq3m-1 zMg0UsrzX8*9{fx7(+7AC-pi5ItL2*)?D*PNR)VD>_SVLiz;`9)!lTD(=fgSn0%Gqe#Fhs18H-r(A34{kx# z>BeZi{}AogojgKz-h$7+rC!p|b=hD-HJ{9sj4mGk7^>>!I;2bkdXYDYqD2H4>K4D} z>~79TDLd~)imYZH?T!fUzS~_ImLckj1%1M7(9%KoJxx8caoTZL?tIC;|Kn9_;y`^d zN8OLtzq;1LwQtF5v1N5anQgBfN!ptGu~~;qGeBVy$GK>nE2guAV!GAol}${qw|};s zMA4gRP#5#Rz7g=@wg$y(LblJ|aj%hL1p}826RpH0g?SnDwt09A;e1ZvCK$GFdK>2eXkD}8$VoWK6!AY3ad-- zp?ROZ#rw8T#kP~WRQq>I%YCqMeo=ZyeACKVhrQ+5P3A=|#by^OMarayc&~S=M9pK) zI86XTHrf@HBc5i9g53g22V z5tZS^BQ1ahIHB$4X-*GZQ&VTP;$cH_+VC*4kViIx&!^0&0>On27?wYsCY~VK^t3>0 zBr2*?_tF|o8uf3^Bbn&hQcu;q1zdu&F1WBy-z- zhcX_V5^6=R>8PAbAsrDuh5Pg6F;VZ47*x;F!8IflS%$- zq;HKYW^Sawn!1w-StFP%%?hr&deX$cAsj7*GEfIc{i(dTGmwkx6GyA;F6eWb^B0H} zgH4&-=(eL;g@bCLLg}Cz|2(`OX>>yy@DFiQ@GIaxm0)H|RLwSwIszTxd0h5QwciA^G_J}oVrh0YcvIAw@$Rz-310yPrhv>+ee`Pg36rR zQ=0}4|ApEW$V}}=dhZl8+XW$P>7!mX2(cm zMljLt>GLW*z+@WMNru;~+nuV+diB~E_*>vw$Nwoh2~CV$fZw0Ce3`upr7Yo6_nA*1 z%ah?yLa_&oEzw}at;0EY-|LVopp8MQPZ$q+!3EcQ$BaH)*`nPSn5;%AcfkWOag5av z&7*d54;&BLu(?Cr6T%4MxA`)fjfwJ}!W;oYg>TSBXcq`w1U^wd>&Nh$MQ8g+Tpd3g zyEE1ZgjBmI_;}Wyv!8!>!yjJ8;h4gSoBXucyW<~#OU8~F_nimQI96DVdY4uWTk4AL z)2!bmV*gq3VPZFGJEXtg&BYZBT+!0a`Bg9O^I{z;pCc8fw%L-ta^j%9VX^Zj4DbBt z|N8jfPQ>cLsKK>M9+0V{Ks?k6#;10|agI(b6E}Tpjb^-12gBo7$c3y|x#ESkF`)%u zBE!H$_Cn&?v7`7?e0Z4nXQEWU#Ph;Tzr@kx2P7XEdo7*x@*@*{%r`%VO2D;CJ{+4K z7tF`Kqcx;)A~t+IB|QI191Z_h)nqcAiE)dG*}%N)5qm1Peyf%r@81TS6n@}t5jvyI zi$F&8x=&u07^0r#a8G=BEBc<;-0Il$WLpUGPCm>#$n;WFdVe1sE0r_?GqvW-)WnXLGBM$`h{Je5I8Y0ge|cyo;1H~OP^=7KC~q; z`7SpQ*ncb^VR-rwi>937R#Q$ZUnL5eKCv8?i>l56buQ{%5o_};!d#12K{@3f4lO}XW1*S3R;ectWTX&j=$Fhltbzj zFjXeT9^dl#_fGHI7qEFuoC6LVoS#6T2J;2#qNOfF@W*46( ziitG#1Gy6#)|1KLzVW6u=0u10XhL^g3)I($L1>LDc2hw$Ev?}MQbdfd(PHEtbP2GP zyBmkkZ~7XLUx-xL2_Z!=9yf;H0p95vgk7x^>#^^$H+AyNSUNcc6Yt7a0j^WSDk@_p z{%-D-Qz3R?8&3}`G5UZ?$q{MO-*ZCQm?vM_FsTT`wJGN+Y~2w1XqnmGrhK}^zQBxe z^hW23a-(~?Vf2s6R7-Lh7*s9i5L8r(#j-AoU_{(L#;#;WMNPObII0$n=pbq?5L!+- zL*lvmNYgeWW{uBX8=(!l>YcUwc1)k0hQcan1RNLU{wDSeI-xrw@OO4mS#@B}E~pce z7+z3t&Mpw=O8kQS`32HR;RT+Qb4y+jp7YD2>ImB1vMLTX19X_biO+`e()`P8I5_#_ zap*dBb;-d_`6O`hoKwE7qNv{Yfv&&r;abx~Bblev+wDWzvEOU7)Z~_|IJ=0;^)Xiu zQ9Wjapo}FKkn$=;)D=Xh8!!a%3%PhxPLVEx@01REN|R%Z>8lihOZE)Nxb?Bf%>5(&FFz`4`!&y$Pl<(Z_t2AlEPj~e~QTdpc1{dRIo z@HZX5 z)r1inJ13=E5)MdOucAu0gGvU^o85D??>XAJqK>v`;rU{GqM1j+Jqk>;MB9%F)n71r zt5r}1Bei3ZKa0bdqE--)k7nT{A6)LO0SfBScv`W>&?z?SKZPdreA??xr4>|*ZmJo- zyky9hEWBoNwv;$KadyC9q=JtRO!RRLDgk3&KUbuS{Kj@G;h7d(=g;NTpO=;UT+}L@ zt4uh4<=Wgtqf$JoBUiTMK$X{Fxl-N``tBdZW4J;8G|Ji9kI2np4MWqt!qBvy|L5D{ zYDhO|%Sqd^dq7X69|%v^X(BX)$!YTWi+norsh-+cwQ}hpkPLwp)UV@dJ;d)oiBnsY z{`px&{t<0sQ7>U%S@S7fKr^4AY@D^|(LQBe;=+A}r5#>X;tYDD&R`EOZ#1lq0upce zVx&qO>MWKqe#EQ&zS3O79z|^1KQXam^AD03ddqgQ7Sv6mP+TV5t>r=N>g*l%Apt3?#EL zy4+)jJ(a|Z-_JElq<6j5ur@yVI9CzRP7HQq;;^GV7XVYF_}7I>Wgs@oD|$ZrID;a! zZ%|$_clNsyc0(;g!K2-fqn_+#wLKsRL@RQ(G%G>FFI0v__jMmf;x{Zbex!L6~5Y6#aI>9^J^0y&QSqSu1mikeT(Jiwit&yh#-d3t62wm>-wmTYX7?FxpftJtdB#!J+t_8m2pBD9 zr7pq~xgtj*=K`%bCH|bnGg@+dR&5U(tau}DA@yINS4`*v|@^6h~EBX#Gb%Eb=zZ|BT7wY*zZbW@z| zwKWS#fXt|&r8hj`eh7@xjM-r3>|W4W#}{xb`4Hsgf9vwxJgJWe$-YD+M>25>!4rd4 zU;RfQjWng zoGv*BR8{cq)cRcBqA#Bozug7+mVI9It`12LC$9tOyT@1RyVQ2Opy4CJ;^()vdH`fx z15B_we`~Stgr`$ZCfU}lwsrH{U0rGG>a49OZzFA;31Lt$+}n=o?;_9S@dbF(PA*89PyrZHzVghaaeMegE8K83mCq1;+>Pfe&YyIiS0F!3(D)t+S7jKL{cE5cvF;_U@n7#@!7hf#`} zJQ>I3pL>ShubD!C5C%6^_f$~BxKn6|`Q6rC+6#Y1CqCt$PIzn@ zcdiEijPZMpf8l!OUA(MElqMl|)*ngj7A}3}EXc0o5_&w zdg4ec1GjudUs($J&w!OZnykQuIfG{KgbQH0};)T zoe~K1%aM3iuAs&sA1cN!!*u?TV2Z@o z@gzHjHVFa`uiNyM7wBk@M0r=WRo*$*i+vmC^XIm)ETGI)8J3weQZ?K!ujq%apSKGO zU}TCVl{H@QG7f)UDVcNnH{MMPC#?i>H<(Z@<(7)tmT{J>Cz$*FfU7?@V$I`H@~T^2)hZ!lvE&Syb(l(C zRpeD2){|-IqXsBXyQ#WzY?>nr% z+uo=v;I;%6%^eul8EPT)@VOA)J8$PKdG+W)M?};_)-$UgiDfoqB3C5d3MJfrnAh2v zD9oz{U!!y6Q)U{HpK8&wG@x>32ylMullB?lEc#HjX~DQBTqUv>re(7G+L7*{yA=zF6t-RAhXawl{$yc(3#G{NDmXjb&0W zxH0+IWJT1_&ugpvcpxla%M^6UnL2QRs!CTOpfgnhnaJL-x&z>6c#m_V`|I1_ZTrev zZmb;Oa5rmr29ITB<6id#pFD?=cet0fAMYRYc`h~3O9m@$?)>sC$;Oi=M|3CddfY`( z6d|pIA(-u5?tk);xQ@j#KjgZ-=Famv8E0J4!K^~I#@fNT4HVBM%S5dLoxD;mAFC6t z!eFL|)w}n|jd?&hnz!6M0{=3x!B_TKBcfhD1KgX6^?1j$**bN#%IcUyvbqo)K2+F7 zt@4G|`*eJKUq=b_MXl!}yTd!2YNtcO$2DW6iFoW`qUCB7%>r~dCRtNc*PdyoM+x7a z03Sq=c+mi@Dx?Ch1|$yx$gd;|t^hbCqkU zVU+fXyuF!IBoMqlQ zohT=4mFTGri1D&Ast5Z0ce(iv=*6rdch4J-mxAbgAuBRmet*cL1C23ykkUwiI+FGMQl@}g;DnR$XurGCm4lYNblB2yogpE! zyigS>wzW)IWB`+AWNeC+N8xHV4$56t)|v~r5GP0<38W=fg7Y$(Ag>sbDTp{VnvclN zBDR=F{y^{i#+l?V*3fZG2g?c(!%iW8q2?FZflDse#@vrzzbLA^5{pZ(sV)7G#DQs> z6keaRsx@)tsuH5~!2(>4BZ2meZD5atJ^9MqUWrMtv@3RFmZ%_jqfF+3(;*EYLu<$8 zEedkGuWip!#(iet8SuAE3t~OwI(PII4|}J5`=EKU!T$C&fV1V+;aY4LAHZ#DN)Ps@l) zV@P1}0yf_%nTu@;KM$Msb8yy@7;>#h~Q*LM}ahxxU3 zQixm`#Q7>Y!LsctC-?-)H+jdFgL6@;u{N-)V- zKPrSX&;jmfSJKHefIF`z5$w0}4ZMG*oSiVF#NV3b`EHL65dx`QaTdMu3FX?6f34kl zRG*~-d*yNRzZ>m&76_` ztdr4Z$4<9|PXF?7M}d&_GXK{IcXtfNc8$D+?AeX^I+6arA9q*hH^7Inbat_k3zkhU zFF?WBT_9kuobvWg(0fBiRQ`eEpFes7f@bqI$|aAl8p`52qT; zN%+S6T$61~$!~DIdeK>!y}r|Q&^Zw@Tb6pfaTcgFmNLIT8?eK) zvts~>C_2e3fK%BELtR2QV|G`+wr=(ri-`HVi^~SUX16D&n71rgRExXItIXFfmspFv z{77cePB7TPci-GYY9n4!&fByGn<|vonJ4#t3gfX|$hQyU`mv9N)@x{pqCP3*&U$Rsgl8?V3^T@7#RQe<`LO=qF=ao zDQ#4L1}uDKFiXm|MFTO$nfA;Sut@KImb;jzvi$8l9R^RiamtH_5p0V6gLIlJmRL0y zsCCdAFPkfcUqRDk6r;`dk!xX4R5pVxckoWO7KwB3XUc-Au--*#2Nxp9UOSL?4x#lU zJgYNjCriHiAQeE}D`(4$2B^=aQat~_6@-Ua9@R)fQ30#{Q2eOx87pQ$r8alPXt}M& zB3k|1#;h~}G}64ASuGSjraL1=>Zj%v-iB$Af_p0?{U+eDN9qYEd#E?t9?x=@5y)rg zxk#5Ro<-V~f5a6hrLurgxTGVMWPBshDJPGC5_#*C*Las{S%7FL{e)q_T_PEwTyQ2g z7pH}3)!DK7MYG7w=o#VSrE@x)PIy`+I5@17t7UuBjAbFO_ojS!%<$6*S?a+KH!r_p zSkp7&eo}~|j~amm6X>aP-uVq&;2U!CrjG4-Dh>w>SlSdK&0~)np$m?1^yJP1_Ldz`KLUBj(^Im3|W)rDpz>OK6lqlT>Sg>a(Vwl9sn}I{gF8I9QH!yoZN*tlS2B4>(L&*B51pFnA)QT(L zMzjOc;$nR#a_%FvTC20-cT+0n#1X9P`vL}l0zOJ`YQ>Lhkxp`)rcGSX4=r%t6Em{6 zBCq%wV4{y*0b#D#NPENVe+!W1aUS|Vo!fsE0w_TDmD%n$p!@SK0N!O5g`h2GErJYN zNH92c^gVJ)=?+rr5%EqYGWg^K&dRMf@MW$6kzH)DK8v&I1Q8OW3q%71Y3Lw99$TEJ zWY?&0BY6`<9E{WqPLSAY5@|o2Q_jA{BP6Hu6y@`Q=n*{3w%zQQYic1{x&zR1x^^>s zssX6yJm{ox08X|rMNV=5F4Ak0Dn<#eEhMvu#3M5lBqro4|% z{sT(>@EuxJd&;eIsN&eaNNk{3s@yP`D!s^R21)XEq^0`QuJRtSc{fj=Ih`g;0jFnaScFU z(Aeqqf&iO?$SnuMgur%TL;-NH%@B0jcOX~B;)Vghp3w~h zOuuHI!HwOt4|bx96Z;4;)ux5K?{tXuYdO)oKigvPp`lS-9pR+bYZ!Ow3kbIaX;;XXPUk(Im*}$E zDC8?2CF08h!gdcgnJAJPIDLwke8kwl{vHqd^?St{rvAP^O}WUmGk?tK9s ztkTUEuY0=#aOxiJ@b9G#`Mw@z zDVewx&bE8k4Ou=Q*CfZciU|;N&X9=h2T~+JdI5P3AK-1jCfWF zA{BceM|1OsfG`hENScZ^7>6JkJ=h0z_{EKw{CR%R#ppU(Uv+G`4h5noa5-DfJ<6H$viPAZ#cjQ=8U=*PJP1q?XxNd{ z<#Ld6(4?h&XL)~9B1zj8Nt3;Gayz6zgGWAYqBoHps_9bHp@Bn* z8oZp`r7l5L6SbSp$XOzAs%AJnAU9uXYSZ2Zp3q~m(aSWK~6Q*jmUl4BFC5V z7^87)I6+k}_Q-Kq;86zNO#(FMa7*^XI1`|oV4$7XCC$+?B6Mjzu67~6@n{rz81l?W4^gzKr`gAsH_TzfoFjT1&E!;Xr zc@t?nSn&pzdDHam)vDLvO6SZupWdNC)L8}%Fb>wL(FtH!i4jWt+{2dHR_-n-MT+a> zndaQt(&|v_#{>I|$cCLpk7oxaS#{+fH$IyKYEsu}Z&;ZCe&)w_KjB^+rAw$}M zN#sC-GB86G-jsH+6Cko9fl1>lq(Bc0qKb6mfxKShmS=C^!6bgOpWzq3OE z;6Tbo`VSNY>l2DS27HPAwtQJLMG}?7xI}<`e@zDRK5DRC;W*;o(I!U|LH&}(*hhjO zw1ml5vt%h1T%bc`0UaLmrIsJE8fXoPk*9CT-n_%=mC4L}p^q&m_c6AQ7CFblg17E$ zqDLC{v@MmMwj*M~#ZQ^z`4bUaL8=N#l^Qb;bljX7G)bBYGw6x89Q|WEZHjoZ4RK=g zt-=PS-xTy8I5_8=h-`F&RHS7VD?gAac8-KtQVqy-9mToZXoVkH-73f+^)(_?12S%8 zj~K!9*H8#jJRGcr!Zd)02}|fc%U9;8gA(qk{m6%seQ+o}h?61goJR%cM_y0(P+&H1 z`Bv@hD@FL%ZTx#^uQfD>*v1wU9{8G2=tE?4JbaUGK^a!Ovv=;zcQPQq|GrB?b43(B zP$0D?S+LxY;E(J|$n?AG1pX5=?W2v_(X7DbbI979eGd<*s8P^J+Z_0X!PhOa_B@l6 zttK}Er;6K*6o5X+7;PC+cc7*3hK<6jZPEGq2ZD)KJhd@GvK=tz$CgHqlKiWWH*BO- z$#cl-V?0U)Xs@861vN;83C8VQ^BqqV`+1+aAL|SVcVfZ>IYM&WfE|9Q0!6aLeG0e#zHbbwv z;t2>K&2t=b@V{1tIz2*QfD%FC>lhPWFjNP-AG9G|a#J31sPPHu6msSZk5w9_P?+Wt zYjQ9|GrmtWTsa~d!kpt+R19wk657VL#zJEQp^*dj2#S9mz2y@!v9E`|o7*uqI}~&f zfRwV`DECY$J(@5s=`Y#JmdMFDoA^py^dj%6V#CFIB*^VAH5R< z-J3RU-)GXPZtbJs5C?L{Og}Yya|R+Niw5czmbzplSfEx!vQG}l8v;BT3&gWlR+0Xy zp@MnK4)>^agyMuLpoU;%e}#P>j%-la=E%!iwj)+b|o$bfLcpm6#gp9)uEsc*vI-P_r zDdbso;1ecjqWZnaKBCYk1z$U89K;YutH)^>o9O^m7De_$$&*ql*bL{!cIMH0)tjB!h6n?SXMp4dT|D&c0cRr@4AM>LL3KUb05t}gG4h>q`^&m;2&hhB9}nu;1rvF$jfOc!m5m~<;`H$mgZEj_r57Q03I4* z3T`9sSKOgJ{LrW{BSF?Q6oS^tZ@~e$2V-`D*hXlpP^rL~SlT0Bz!BQW9Jb4*{l=z% zz^sD^vXFzCMUERT=2&Xk{C5#EX^_|ib>Y!PvR>`eJw^yYYvdz=VZqRDe@qthqj|_0 zb<$|v^pOEAt_mb)KO{yBy`ROoBW@;9J&N_b;CQa#2#~_gy6;4%CrER8O)lmAy8zak zAg_lyzngSh4AgKiK2f0wKv(uC!yfiD#8>kxI$V&j<|{%)-h2l`adhN5waSd3o9s{v zsI_iddOY3uexDE+P$Z9vX*DQg=a>nOBSgB$5|=U<1mtcVg5QcYt*-O!&8xdhCPf2E zzKb`4yg(04x*h?m(pnGGAdoqFNv|C>d0E1@wuyiz*S>(^pQJ=PT=8~CUBI0+^{DOkTIJZv`zQ+5JiQU+JYQo zokIp!x;y9}2}Y0GV*Ih)KGeRR@~sn>&>hMm^qNEhcRz;|UD3BYTG59!z&r)i4(x2$ zf}R!g5sV1Wr*rtc>44VFH^wYz9rre&<9jEcrH;h|iP1Il8NNbe&DOs(2FzCir2gSx zE%M5eY3uC+rGD+6#9+I8S;KY^E757NTL+w3U76Gzp?O~k7V^Q_h>WuXX^o5dd&*UG zM;2DOh(K0Us)1n$*J`r9H`Zn2R8S0sdp34DB08S9mHZKHkQc{x3kBjuC6!Z-__`|R{TkckWhh;< z`cg9*RiV<;?DU-RHp`bV8bZG5>`*+%9Ou47$jYzTlOl2^yy_u-4eSv{aHVvUmwo*B zbpV*IG_gD6Zp7KGh`7F3C3XgPg(AI6$KT?_S%(e^`3wVAL%ekj0e`2>J_|Pcq-L(4 z7&l=P_1i_tB3u9w&h0b3ddXT0h<%izL;&P7K+k%MaUfewArC}$Dyw*vDq9qj9i61G z434;hpbV}hgC!873k)$`;*0FY&PDeyuHl5rkMefFbntd?w2GtkKC*qa23EWTI`tHw zwT)roM3tekYtJ2zl(e>W3QnV=CI+= zBDQGenFjs4eMkRJP@mcftl+>|NfpaM3jvexE?cIY5s<;Q)dxu}jN0&si&}oY#Wk*|^ zdeFjE5)1Swu~pY*MFYgl*TlhVXjiahk4Rp>)k4L`@h1DFHo&*e`P93o$T(Ub0EQG= zbB%3v&^Xk&p?nReO8_CxdFDtT)VDJ((5R1g;L2KMpyWZgGIe4qpOQ!?pL5}SMlB$= zr*{6nO&f7JAf1;8S(bcUKILhZ8FIO$CvY2u zylDLIZV`JXd%AbYR?m@H(+Fc;(pkvz&yOufdf7XJ!n8t94FF4{E8UZQBx7rLm~^nn zA$RU61>t3v`y&;_or9+eUPkWCBMA&X-_u2FW6JX~gp66GXvz&cr(KTEV4}88T&?&| z1!N&-C8V>^qM?v~>__z<`rRR6eK(@M2t~8pE z{rM?o2w<9OZxE|ADj?_nK~oqNka56p_Ra~V+9M@O6WD4o zsjSJ^VA3kaXLdWJ{b1>~QHEA?|E8StuK5PC^HSO$E z+{T;^6mWx%)`S3B-BXeR>8X zKp7hLiwAXlPAXPgTd%g-d-iB>kY^9a?mMhQojO~1=O59m{VUmF1eS69T4tBsb}qzH7>=NNA)*8`PL zX`gQwY0;cb_MF(7l@^hVLz=r|CFbf;&6pXa>%Z!d(Eo zl+Gn`18V*r@=HMmfe8KL90X+|JVAfV22bV>whag~t3mlM#5%S~yycmux5<%=aw^@7cU zR&u)yl&FjN;{ff{3tcCc7%mb0&i|ocLkIgz(R zBtVmi9o0;dGF9CDQB)Hz&^QLkIP2h%9T454W*{bdI#DwivSxk*U71gA_-qbz7?qa5 z4SEZ7-jqYr_4ZXKm3%7;5tXKb1IaO4mN$<55o75?xOMj?mOD~o6X7>R>?J^t^5E7a z^0_B%IE?>b>e{j)TeVu!k}k3b=-RQGErf{cbMPc^Jj}s;9g4ZisSh~D-vb(3LKH3x zt|^`LrK-~XG$D!?Wdl8DioeFTG{GN!AU{*O?ih-zOCemsI?@SyyG{Gl8qVsTPGzF; zqhXKPi7>EPzzx`)Gr+A~wI50>VnXx%*iKP%Q`(@UBpYUp+_uKz_34edcx4Py zXb*^H84;f_Bos9!J@^JfW~b0ZH(~d#K&^^ja7sI*EUNHZIOF9BqH5@^h-Rc1>jphY zOH`-xj z+|3q7?RB^K`GFbXU;Q3eM69wyEZ0`t*p6omUFc#g!F9X26Z%ZUy9U9eS(n3Gfh8nx zz-7+gONTdUX+N?@E=MhJ^N%mum*}ogciZkWH$~f%*m0k?Cna$iQ9OK8iaLa2cGypM z#06f=+ZY$9lg(fbFwd;K#4CqL&EoG*P2%!T;;+NJHLSH}FJqZ3fQY~k3TjF{&Q!L9 zhSU%y{Y9trfY5taK%3jaCYZxI`ROK!G}`tKBPK#~d7smcjBt!ahM5oirc1n{tZ$A% zW>Q0%>Pwz7p~aYEij|-RqNHhjnM-YrWbvojF)tU3vjxo}^DCOIEZI{8HBm#XsB|W+ zH>Hv2y?v)6u*jgR`{wSd;YMVLkXD}RL;U+xPypa}Xb<6uUE31-*cK1nwi8AuFAd4@ zA?wwU#{onP8^*fXcsViQ(aa^(IDjuk`1I+X^yIM0=IZSq@5 zmOc*2`P%k)A82YyOAt7d@av@vq*5Xo^2FF8)4uV}*0k6d*7h>T)paM$(EBpR^Iwcc zscA2oU?zYmO#~r-q))Rh=eL9UJ$GU&(LnQ*91fn^JJ41(~hQNi08V7k8^bSgfXQoRR z^t$e|P3n>jA&*6idglz48BEWNE<=(tXOAz{@6!%)lyvj_qZMWDaQLN+BPGlFh&?m*I=SbTdx;i}~30A~+xL-IOYCAD1 z>`OJNBri=5yqQY2!t72RLPfa(f+NlW4@Ym&|22X7jLp>bX^d# zh*7&7asM!G*B;Za%ZdCdIp$B4)0}3JuaQq9_H@w2=yyOts{5EOO6g7=Q*j2Cs1FRexH&lrVCpLaq`D=w4rU*t+ds{?OM4$_uw5g`CE<9^#mBZ*lxL$~Q6kF& zfR-qk!9Mwb@is5zMhWI{ID^Qm`LnIU7OzCNJ>t21-T;=@oHE$&F$6pHC61dr;I!C) zNZ6?Nz7Qi4{;YIZ0R*(aU?Xeii+P0{3Jd9e%osa3`xxnK#lN0haB*W_E?D_<9ORo1 zg&yj^+Yk7ZVd8BJvC5mPD55@!K%_5eS82D9o_ABD;lZVmCXqOCtt(E;d?*JfIO zHd>dOwn`sNr~t9wMNB&HL6k2(UO9@xG0?>c72uIPg)pVS_h5j% zBFBDnKlFllvfLB&Oel~YvtEZROqVDa0U$c!nvZ%Inf7bp*fyoPfO69f!w*yoio0rmk5Wu z#6;p~u~_^Vj9=Q}DNH=3!!Aa}FYuXE;Y?)ba3~mYXJ-^)sLM(ZOz9{K0hukwoRy=_ zD(Z6ySwYz8k~S1gwo92y##lUt%ef^Mev`ZkAHtg(g1B=oK|7BcX^ox>M}`^L4qqP;qE^uNpWjb z=%FX`ctohCLeh%1%@#rfj10jM!*T^O(kq}SqC`1DM)qhNIW2PSuFC*9kt=fv7I(AE z(dH^88XPc#0}StmCgB!D8<#+Uj<2l`)EfkjB&*LhCX0goa!FP%uRQkgDZK8Gs0w!T zHXdKHzanmYt!r$uxD6*Ujmp41ROMxNzPNOCVb~TW4Cd`YHf~Qr0l~Z)#5m_NsIxKM+P{u7txO}Soil%o`f&O^MXHGQSW1KtQrP%2bCjj2A zqH@T$?~orUpjTjr{B8DK4ckrnrHp%3Y4wibJ*{K_LX$qxFbDQ+?uwQS#}o?UKh$T$L_ner`G&QuqAy;{M_k}W;KVL)z0Z6ZSR%Q{GNy$$n~Zq9=(sX%_sb-sJ@I-?l;>FfL%6Bx!{=e)13a|O&~ zIWS$}z?s@7RPRT&2Xh zpIf7(*9eK7&l;`csVCte2BNC4%A+->Pu|=!A@v}L;De)w)GJHH(165sYfhu1m_f0c zL$r2=?1Bo4diFddv3RRuQ9)5rcrsnKv7nkbRPnYx%vsMW2$$p6lgn{(Go?R2SfvO7 zpTb0hj})t5?xoJ&5w-D51VZ_P5CF$<7v2NPiC>)Qjfp8Xo+L5W><8opX*Sv`#2_cZ z1yH2~7XjO?Z5D5gw+VY-=zK>x3`Q~SB_SQcv?U~@5hhph&hxdIN*~MKMRemXKybTo zErLJX*)FVMbiDRXK~o*}YqXaW#k{lEn?N$_b|a)%)$){5_8$Q z2}Pc3Gjh>Ys&sdwAR$;PWH6xB(h_lcwJD15+nn>9vpY^EPINPop}a?Pm8ulb#VvT^ ztkbiFF(FQ5Pumz%$=R3snDFS7y4AGD5$~|R$pSqu3f$6A*)Kpz>pb?!>pqNRh+L7B z`mn@h=RrTkO1sS-+b(6$a!26v0(XBh3vY|#$owa!BLE^Q7^S=<;{D$Qjtgu;=ctVv zXpui(6)Ew?J*g8b`BB3iVG{6R(VP#{S~obbL2-fp5rTndqLFr>VX z9Yokf2OfMT-2moiLD64*Lgoo>2W4~aewR?WB>h~Hvr|wY4h}|y)aI!{MBdx#iS8d5 zC4E~N7xYbg%Ra_7p|=>L_Z82HPNv+#`1j?^CCK5*>(in(Zzno$hlB=w^v^1ysYQLj z?Azid4$;L*@ z<%}h5LL}7;GFUE#&^TE9Xlr?ve9AK5sE~N_!6|LTCB}^cjVgsCbn;7dMn}zs zT|Q8kTQOaF`JJ}=hyi@tflHPf4@i>gUbz=whlp8W9gHJXK#QVtGFlC-b9|?&jSC$b=bZnueWrG3348~!HOyn}Rb8xQWFfGK%;ZkT%J6Px^LR&04M zid|R|?NgreF{9tA;+`gm^F}>DJ7POlX#ip_C<;icp)4VunSRLuQ+2Yp<8)NbcuSY~ zlvLvLJ!RnTq3#D=yCIt{#cq{psl+K}dal4FV*c$u?F)nmbq=M4kC}TXf7F?<1teM~ z@}?ob*8Kd+7uVpHhuex`)>Z|AU}76^|1;|Z&}iNQ`|fD3%a?8$#J-d^$^a3Eo-VCn9<;S(w-fZ~305N)?l?I;ZRJS>O4DNf zaqR^HJ~$%sD^p?-Lt-cH)+!nZv3`eUw}Bqa;c$~&Yg>`Te(Dy%0;i`HKmaBA33$< z-J@aT3nFDF43Z0Gv$}6us~v8TH#Zxq0Lk%1oCT&6T43@Q(grvKn}Wqq2-Jox=}&i} zW;_$g+kq$uO2Nt`Y4eauq2}g+p~DuyLFfqsqwcpJW6m06hxU$)Fon-hVdE&~fSh_v ze1viAi9%+uo6f@U|H(XQ?@pONNyk z{^8tIHkI}0({L%IZ_S~W_JiW6v>-GJ=RXbhV=!{t)@&cwnv{PP3>-*y;Ad@(WC3>< z_zD@9bxQ3Xd=`4akRWiinL~&kjZb%p=#bwgxhEG575?reGyRt#1&DHxhgX z2h4_)6o;{jS)iSBWPu(*BIg{o4$N4N>ux?+2PRI?;@NfPR@M;^zVx0u-f8xcuw0G~ zuMEF0^6rWJ-QMJwzrm)hKHxpZx!u+0&TYe`7=z%< zn)uXN^NhxQWIB!|IUHhn{D`8CHAi+h<@aVEyuWfg?rr)&5PNyt3QSsX_?RInOcSm2 z@ga~a~o$qU*%Z^JUaRrLF`#Pw@2onpx+Jo z{5|sPQiq%W6~3+8dg|+HzU5?)_%{i%#Cy+YmjoPl=R7vEd!Y&94Q>6mW0|Dr!%uNZt@6 z-%uv(Oq>VGT)g>!yD=(|7iZR4`@qLoB(m+%Z8|mL{~@+V<^}-@J?b8YjNHYK;}%`r zqrn+4JfGmUwaMq-!8~Y0${nqNIh*@wI1YV|K5m$0?nVi^EVAnHd>FNa0NdpVNHt$qnEngB`aC&SztzwT*h)u)`@JdQRaxtvjHm9rD8Pmgx5GE<8Jt1hWeE_(^}NzQ`N^#q+4P{>PS+LRc9 z2#gvcyDs7)K~YU9EdJ<2NM;}0j!|snV(6hemo6))%f>~?n&*!)7{jBoj&Tx(bkp75 z8DR*ZjQY5JTE=E9d$vfK3ANK4v&b~x~;Rcw(qrKcZnUIksH=B>R6b!R# zKhWuPkEjg^+sa#Y8f=r|!X9l9fjhRF$h@7cPTBBlgZ`+j)4vBBnBbHo}>LbUWujSx8K1`hK2l>;@AAHSzkfWjf-W`$+O*{L6HyX~UK^uLU$?~I* zn^%TMEPA2lLhC!=3xjEq5}j8w*lMXjsOM=`4Q=9cgR#3&fhs- z|ByZsc;8ubFo$AkyT&jtFU`c>L96v?cxieLXg z;=G*?JI;oyw*++ASPi-L8%HzrgH)wewq>hJtmRVpO|3zV(`4KlwL?xHY!xe^u`wfR zG{b@``>s+g1c5ePMnwv#h55x|_ zp*J~=*5j&ep1QkXcZs{?lX{@g3SZVJP2vzCH9C%|Wr+YI(isr=hnpY}Z%Xez0=a7j^obVXx-( zolY?Dg2CI}tGCJ9VNe_RoxmD3NL#nn z+Mv^$rmVle1>Xk#ZE`T}dYxO#n{+$9LEn1!?wytB+}wG!LBjgSKP)b8V{b-j3Oe{U zppq5UUXGCLc@IOs=Ow?r9Syy2Z&Rr~XyCQ_o)r#Thxu{8aw#}26|7X-bsmR4B(J`Q zYl!PGZXMhM7hQdeZt}Oc-=8&a>IU}l$v&tKeTNQyrjl}oeXn(Ey@BZs16ou)VZEo% zyVjuT_fuktycfyq>(8!zl6MZS-7n|v*>V2x`lwvEICQVCw{LE4udneWd){E!3oHR5 z*0(_>W1TlWd1SR}ttnvblD%A<9pgMNuG`-rrI2$^t^`)x@UL0_Rtj0Jz6ZernU` zdDVeuRjt4q%c&%*LEY*O2bM4XFBo*hzVlY4xFPJ8g!%>J!Un2Y`n#4aNUM*nT>%yX zdcrR})m^dma<+T=zPS^xHWV`+gr{hng}ik7@@ryxN%JnIxv~5={2p_LDPsovt!hIb zzS_51ood~y8{@CE#OepVp=Y!`qoab>@-hmj4?E+Ue4^&m==6R9@q_6LV=nk*7 zl?<1`C1M%aEM|QxZ82A_wzr^n4Lsv|sl@<;)*Yj>hBp{^J#}c-ZKr27tG#w7n94nw zJ3<}Mh`jyk#Dc1zdAQ&3UWn`SCa#Z;*)XNwq%v;a3eEJS*Xeq_!8AJ1-DIN?eSs8RH zgPtEW&Z~_Vta`RF?7^to8j9s7Xc>u_RX^EnBHV<8)*P+9dn#5GM)q4+*qA&Kz zV}O^n1fY7>Kdjs?^#^FRs!(h_t?;)WZLuoQlh*6Idacr&A?p6o> zjo5ZqwJ<9cQ=`=wi?TAX#Zv`{i*U zArJ|VxjWj?ca$zrT4Ej@E}k>UYMJ08(uDz2e zGMQLe$q01p^#VaVW}x2kJycxoW6cE7YtYAe`MPp`Ryr)_`sDUp(4&- zQ4$J&-v(H#FK|e$X(f%$EI}g*nlY=M#Bg|3!wNeh;DxbhWQ#7V>?Rk}O?7cUX{#FB z)oNTOk1_*^a<6BZh>r??J@IDYh`7n+H3T!e`Zv_VXxJ0w>6dB z_8Q`S3kLKqVz)mD;u1qKVR*E}8_hueVgN)AxlhPwZX3V9EaeL74)z7U0ZQcR`wITa zeUUi8*V%0NEC5N=%%3|>Hdsarl?ZV;9D z;@|9^_~%cpbMbp=DTURpe7xz^tAw>AYAsm_yur{Na7SV>!C<-W_ko~T4#X{7ZUJ#0 zbi|J_Zl1NgEKrVxL|)KgRo5Ygbn{S2O?B_i753BK^f6EHyHeTmSxd2nI+K zAz~8OB0YOC5Uc>8LzIRhqdi&Jt@Z|aX!4Grk}jpXH)%mQtGYKGf%&vc63zk&;9|ny zVh;Mn#G6F}$gx%gMAxc=WZZx$i2{03E`VYn!9oW$pg7Grybmu2;&L3nWn78f7@VM? z1G+Bq7K={8(-2q17%eP;wQE23G(2Ur2+@t$8}oLEpBZs22sJDVYD&Dol2SoV4lYW+ zdh3b3iock`i@=a41k z8q)=fBPPYa?TH^qYSJ)Kl(BNFuW-&HXu`A8MfQ#lkuIl?bX!Qa(N2C((1PDbHW#W> z$!`1xMgSS=r^1^8r&Vw(&ROZ?ynI%f3!inbU+ei@fxP<)z$K8D`mW+@kEBp`A($)h z7SDCa6RVDi1((YxsG;X}OAW$q!`X&3^)KJ&LFc6Bw|#gu7q#xnN~)n?m*zGQWvZTd zh_4Ifqw9jZUpjW@lQ`b?a=p`DCaO53&F9hs3vge!Q4#^h;x6L|V(&{>Lp|V6)RPbS z(=T^Nbrd`EZ-IUfbzpwKU>&>jZfsa5Sx#Fgd~wTwOd~g`OgQEQixg}mPtqvc2{{?_ zTvJbDzUUO<5g^bYUb{P(iZ_dhcNk0n6g5)Z(!AT0d^7(7uiO$Y!k*Gr`Re3*1ZfO9 zPhX@NO8mCfK@d6;%>N4hV9@V*-BuNe^h9EXe{fOd!mgZ`&M(eO<>Twh<&j-J1T>ZT z_U(`4)gS*z{P_OwZ{O;F=hCY`|NZCH|M~0tKmST)8Ved^G9xBPA}B@X|NP$ z)*s&V2mWA46zBrZw+%<<)ziQOrLAtKk6K^Bf>pcXj64?Y*B$kf_W+1AjkX+A{nkkb zi97B>P}$r!6Jm;d1eJ>HK3Ya%3X~Qs+8_nN#^g}GuQBBe%4VH+3P8-plHOcAgBgC5 zw}XIE+ncoPC>`BwvA0cwD(1bAreuNdosWVxU4NpI1*8lc4@$GF)3qJEm?ZlsnUHQS1YZJR^Z1$B{9d(jRTg$oB z_r0*mjlc@`>NiU{cY&`I_dxvL`>-lX$VJ~vwWihq!UYOwvMFODX6pQ9wY9C4JtENr zC_vQ6Sh;L!Pp<(jZ=dL0*81}u3?Q+cT>GuHY~{Y25+vYY)Pd)KXpL51GAbB@&6&l| zxMNV=2H35XvlvKU)sD`4;;`qB(y1XIxy%HZNA*LR zL5;Ho=bD-;A-nY_XI{gd zbU&Ly38e$`tX9UyBEoiDq)2RPN(lqKyHK_(qJp0ukN;h*oYUgyk zUd_K*z#{Nhd1^J;K=s$}dNm*ItVk5GfG^;x%eAm>xRUw^gdD_qAz?RvO;mN6v~I*7 zXlwz?{T2{H^!$dGOT1#V^I%M}U?=bt1;trgt_nh$}6>G*tY6-1JQ}F+p_&%Svo@&1jb_|_hnO-!wKe)Q|s}`-zE|t_~_Lr3lm!RsbyjL}#ND(1o z>NkRjs-x{oe`C4d^xF}6vVaUvR2X!`Y{s45J=tpj$)Q7nLF4zmZnakxC?;*SfEUzg z9=drfwPOWcJX$1qaY%TO#sFw}>~n@#&@Rd@SNZF&zpSk40N@lmFi5GZ??weR^*IW+ zE1G=RNbF$g*7~8^{Qx_cpfj+lbgXF$o-?{!7M_Ma+#C7ugafAx3Q?*S!pljNKTSgr z{l->@yY*Aww$5+>HiYl=#S#-*MfrF*_=?{MIz4go#heBGlGo&Dw%w z_7UJktM+qS4FkUhwjH9)@VRXW!9tTMH!&fk+8-Q>|Ci5LRzIjCFjxA~XmxI?tsf}H ztd2T<-TKjzE#UO}L&3G(Of3L*fKwEGR;^m6J2jwKPRS7kz;AeCD|(hIWC@+-onEpM zjmUhNLsJu=KMzAD75+DF`d|x+b@8Q=4<5sUK9e+GFB6Pf+LjpAS5!%aSqWSGWo~MO zfg#w!XN-Z887-qxnijf(1Vd_;!J$$Og@MUR*uwggSG6KF-0Br&6$?#64#TWoWT0?o z!88UcUS+@Q0s*68{OCy0PfcLo8-!#p&`iEQWJvxm<+_3wXMZ_IhXJCqdnE@hm(ei46KXzl(y(9jNv zkzHg{5$nH~UzP9xcY2pUOSW>4`5>oRz3)}i)~9U}7_#-fl}u#io2YPmTD%6)jd<1D zCIuGpPY8f?_;O{%imtwk`Ojc>c=n=r-H+I0$OT1asr7~Qp_;%IH(CzIOWuW6HSMQL+?kpu~$sqe}CEe&;t>6v&`Md)~c7| z^0~Wfor5f*RtJChD z;aP^)ZY2T^Nt#qV7?7Ma!gM5!{ghO4+M)}B-J~N|01i^S1R?mq)d%UXn0ILW3Lm5a ztT7wF`I5cod7F?}(X7j6z|;ZwoZ-xqJ@E+A`KBV{F&T6OsGkVq-bB(y@${M~e-WW3 z>c50S3x|IOX=ZZ3?}5aD`qPBIOaUDKC;46wKw@u~1p5IrvfwHJ`GTuWr+woGRq_u5 zYOCLAdt#FT*CUlX=x81FeX*7*`<+CBp1wZ3Uao#A0(xe zDjBnsrCD%(5HrZ81pZdrLHphfJC9Jru*b6^wPYo2J*1;|U0)hM>PBCAqMqb_2<-O| zLp|qp&_TM0fhTWNRfcz9ZI?r9yLZ;3Y`ct~z~Jt0^Pck@9fXt;*$xMq2u^$n@9&G&?KPr0X}aXfwy}=Mg+jTun=8&P5X|8FI(NV@* z?iv|ZF`SWjVXi=#iWRUG%15OE*&ECkLW7NqFKdNLtWM9Z*5*swkwsn>wU#|mEuzml z?gXKwgH-7}WmN=DDxr~*GBV=ZpwNp`K0I_C)MA739A0>RnHm^79dQWKs*`r+D$<&s zCbRO1W)G=#AsDRiSHwyZ=msDv903#JAMiaFmHN^iH~_`St=|~p6d8E?03BlH=bd{m zIQ07i33zccF$PzkSL7i9fb!pl*~@~{h#Mv??lkq1NUQ#sC5*KSTr?*&BMIt1=jq@6 zcpj`Fj1sRHt^@0)Q4gW5BX$OcDG2>h1&R=&r1; zwYsVKc)cVrc&`V~2+;IsW+PUP{|K_)Qv8eHlY&vFR#lD^nms;>Of=JihBvT>eoGLB z^HI4sSiXTe%f56Bnpt|-O)?>E1i)oL{_SdZ0#9w7wom*%Bg-52%tyC~nN{cmc0{Qt z47ZX6yYV|5z)I)tS^m6y7U%m#m_yS^SMvMrwR2dml#an!3?ma@PYQQR^|4o1JPp#e z+|y^lN3x6mJ7t(9pnG?r8`R$*+3h?U9(%QDovAc0iFdZ2CVl z$t$@#-;G0$T6e>>-wXSB?ghRTk6s$QVGu4vIgH<0q+ujv3GI@zlTAmAItbcU_t-w? zDf7&Qgf0+gf~-0yoyc9((S!aSO=0xy4!zsUg)}#No<7@1mM1VXuzB?bHPFj97TG?LWN;ZO zE>|0&)zi!=gT~$OHpO!P?RPtM@t8@* zPwrVo9RE}2JKA1mvRS9aPF$ztR^o6v%RuJ=L%6d<79q7CTC#nH5GSyMLyUU@)^dVU z1}nk3H(-KaFczP-t-fI3Ac};jFY5NWecb~O-M0ToVntB)3YhXc!@ecJL}0r%kQky` zqgSmn)EJWWhCp}2n-#$uW*%D|zt^eVX9StyE#HAP7$}J|n_FAjIchuk*E?$?hpMwV zrh3vnO(0oa{$_YxqBR#0ndUcznzYYXd=O8fCxPfYyMi)|A`mXe@vgKJ`JS{pot9S( zfTZsrACn^l6S2j7g*_b5xMH{xKQKhXFEYW?*$lzg(!Kf>`!n=woO{)HAD5xlGP`%H zrh>A2=EQ+coHu9r-DyF5pSeqyt!q$CyMAX5~t;EP$t*|6G9*^;YLA*Y2@kmJp-7d6SH( zA65w+L`#)xjk=6)r`6FK9*a+B7boZF12LyzSSM_VzOCp4JF|H5_RI-HudQauitR=o zY#RUC4?rD4Rv_$4O2?5#S^`WvyzU-}q{xt}(>0Dnz-XN;>Xjn<)=~sq%7nJ?yNLqG zkOhWKQe>8}S4Dd21o*z;lFJco^zpS53-OWCuZ0nCbUdXWjNq3!%+6KzI|qsp+-w@x zPmZ=R#Y&R6xXamI%vGY>k_I|zVZ3=_?eZcp-K9(M=~RgiG_i%cJ~3ifZWUqeX4u|y z!P|QS$;`?Aln9lBRI~+Wpd!!EizDaW*I*T%k4aEcNa-q7orTmvBGdN?sH!C|fz(E6ZUO%r7J1zX>JqdQ=u^aj0D*$t#YTr7#$UvV-GFfET+Wj&Luv)9m2Oq7Kk0T1 z=7ED$Cu zzbvWeC<}-(ZekJP*^6`_3p{LJ79v1*cE&gX|3Q5RDbi$I*ty;Vnrku{jSh;7_eRuM zj_eOuo@#>7lQ1IQ-1&% zTf-$P)Sha>P{Bh*#~TsGTC;Ff{J{L38L3gUdicfS^DYHqnhy)DYEW7>xCG!`}& zK+p<@#$VBvBsLTC|Irn!=?|$_(tDvjj7-8Cc>$nW3}Q&O;gY?DFo`3%HtJ?4TjQ~CD#8D{EGlzm%Y?tmb&<;T(-HgK! z&9%NTBDwsfj2nqk#NC-`Ods^g69fP~%P$0D5yue zGKpugyceP!6IKv|2>?w-7C*BcSkrLRUtmWNT|xpHC-m4H`T_)t;)%C~ZjBTSa8!E( zDMY)KLLYgdGOaPKV+P^SSc=isc5J|mC7ZOVVQ206t(2%ibU(3hk?r? zEyL)hVFuz!M7DZV|Zn-fcwgo5+Cm zOcxA9@UL4!p#{9IG9*VxTKJCm$`Uhp((Gs~C%x>ocxfkl3wLewcA3+TIW z#PB-2k`bh?3Dm5MX4)u<-rQNF7iYJc!zvOv5{WmWj|qUL{Z?v6btfW0LJVUsuAJ7$ z7R~CC1HsFp`N2cb2u4yYKjY|)7d{|QtGNbBxJoY?%tLAYWQ{9n8uVRpK}OAZ5>_f+ zLw}>N$&9Qxr09SCg23%1kL53DNSlN9{3$`OE_FqI31xj@nfOs^x4pVACN3A<@~XYC2L6oJ5vZ-^_4{Eh{=mgY z;?HWsbDGs4@LFLl^Si`pe!t5e{_-&NFmnZ39H77E@tK=1Tms+c zIv?`KMcBARC%^<7AV=_OV$6moUjqT`ASABQL?Gfo58WFtH>z;4=9OQU%rA?XqMvVrXc$#qK;ZS_*Dyckx@ZN}_N10E z><_|5d(j?Ik|aA7P4V|iy*j9-jKkcemJaNk}vQk@JkE}HEYyeG1Z)cb} zLcJ)UuQlr@<%&=={!Z3ifuE~;Mtl60Tj>OC>cM)aaNM4`r)Ww8wRPM>?}Z8lKeKm6 z)&9NTo!vADw+HCPsCt75^%4RJO~v(7Nrn7@Q4cgRQt=(xK$<%v%WA#u0!}`Z*!v&< zU=cKRt9KdAA4wJ8a8G_4)>}cYqOVF7p#cFTW^gcizClvXU9CS762QP1pkM}qp=592 zB9aL{GC=(NEp2Ir612C=k&TI=5B$K2L<%IfDUo{a#R5_haGMv@9f7y&(a3|UzpL5d z=OSnBR-oI?$fIseSAO%M)-kBM$!CzA2As|Wi7dV918+|{6YE{m6?^I0z+7i3VQdxOhR8uV=ml^-PGTPpg z#vd3%i3@NR0E?q--e?&&X|&CuUlJ>9B*jgvFdUGKB7B9RN;Sw1Ez-?S)%O+rlFYdE zhWG7TCi(4KeJPbmDOT_ewGc#&901IOx7HOj%(RxBA-Xjg&Zro}_#b&j=YrUDfdp}v2W6s(PDX*_t3;kk9 zts`5bLS}Q01_EW;tN)yXUQiwR4Rk|GTM2ay6Dhc~2`yt-Tqpqpbf`R(F-UvM`L;H) z#&42gzR=_DMUF3T;^HFunuin}uh=v3G4Zc|sgc40wINs1hhGfxeebu#cK)4$HDwHE*im|{THbgqfJAx$_#jz$tC8@T~93$EyIKg>X*!aCxxKpP<(w) zTN&xfk<|N+kuK#k(%UVL|rRd2YedOARC|=$aPs6GpY4sSTgwBpjm&qS*2C4IL?j zG{&X6nGQtn9Bp1AO&Qq>q>4{mWBJ!IiXbDXKq8w3SOjl>1S85w1II<(w37;oRMl|_hT<@JyM=738)QAJVw zH_D8jzZw5cgUb!*n*CsyA+=)olGKz#eLl_T0Y~!RsUXN$f2A*Tmzfxg3VjuOlmxv3 zbQN1cHUFB4=&AhuIIprM6(oOS&9@kPBuNfrdyuh(H4|}d9@f%3YM^7;=xA6$j)YPJ z5_QiDbMW`8IMq0EPMR0K!kPA&WSt5YC4=x&@J$(PTi#0}$r@Oalk*}b75G99nVz`*FB`ZsG^T?0pERggzZ0b?G(zpaXFyy*O!MyYuL`TGb5JlA^-3_03<_ zzc47g;nyhfm_TF8ne<9Y6mtAb>ETdj(!*)wAwBVJm$}9TjHLAZ_Uak=$vZ)IoIvgkI!|uP z0wRqP%R~1I7LH`2rJ{xWE@T*+URnB>cMt@n@|ixUS4CD3bR_?|VtSa(XwJY)DaUzH zRdvV^y&L_cvN-?z70UQE2>W;O)kpbr=R@4pL*bjo)0H^7|LcNO_BRKaD)*&EJN)rWB~r-S$kf=p1&eS!0*o5^SjdR z^nM|44(E;`k@NF%#}I6%t(;EnBk;)FF-IhakIxXC9gMg<@meI?MLCR%YZ_)gik>2zs>?oy;r9u@$ROm`7GA4L)TyUK1*qGho zlO85{Vc=y{c+6CaIIpv~Dyc>5h)gjxEA%nISL}eLCEkHrpt zP1p%M1A^#|tT8_Du?h~L*G{GN9n_}~EG?;DKO=W1Q0Wse$n$PY4B*t>uLPx03G3&# zSvJDv{VuBF*_OkIJZA#TzmCS>o;9b>h15nlEfZwwkr_4fWc?PFQ+nVcCBLZX)QJ6=*3 zpbB^NO9>`vHj4raO7Q>p|ZUqy!V0_-SZHsRb81MKhzNhj?5rC!n7@JL(*Rv|C zZna0Yj(#8>R(}BV5w#$yujoRC#??H+(dAkCSFnekv{Mrhr^A8(MlsD@Bkq^Awgnrg zefrZ{&!r+*>DdbQ*E&n>w=L3}Clo?6 zLcn8ji0oeC#T03ZO^zxSSdqy5DiDXdHMLelrkiq?$zNczrGA0c8hK)Z_a=IDS;u~( zIS@Vcy#Yj9@OxonQ1Sc_)FnHS{~+VIddH)nLVQ|3fMWVVR|nF_pj(>z`I; zTk4(FO@;ABs9xU93VZ&v)*uEBmFrJ#XfVC1h)NXt$>V_6#oRYVZb#2UUzxTly<0iM zcUrMwe?880tZGZ#dV%;=m9%AqhJ*(yySyH*QW@uQW^}X%kI99Cp@On1Q91BvG(b`( zX0cW-t`_tgA-=Kl>VnF&9a?xZ)oSfIt@w}C+2-pnYR-SGY5n|sdfQta4DS)5F&J5A zcm9xe`#{@=ywM-ZBA-p%{~(yqVb%y=mxQN)>&n5gO)90%CiHlx1dp@R1q8?_*pg4I z5gsMHEfi@+1H(vs38~d1Yz3+|l07To999Qi2=yd27hyO0-Bj$Kymz!zk{ig`%fZZT ziV6i~kjVG4(_Ph2$!Imo1>#2u*3GLwZOrFW#or)+8+7tF{Z4B*@D@wUM9V5y)I??R z!TVf`C?F_`#wJO!N_X(akU8dbRryscYK_&xHpz?&80x zdB!@Lw5f&OYGq}bv!~&tUziomi@Fzc;Ru(~8?_g=aR^%$C28wh%}&b`#~<0%Wxz0u zjL6U!qt5I-9WN24W9$)mjpJL}oz#5sP#p z&u0Dpxb<6u1z`|lGOl0)$;^d0Q9e}rEG??=WA?1fD}wQs(xGL31vQ50L%wp&av3dN z{i0Em37X)dj4W8;`P|b?1{Q3O?dVOf*Fjbw-*7>CKq5?>RD?XonF!(>`-)QMZ{ij! zsdE}rBhBf<(-~c~oG#Sjx1@A2UhEk7`vrIIS6J}FVjyiqrFzTOW1@EmNy=$1k^C3)fne1` zFk?c%ZdbeLNv#=}Nm$pVwF>S-YDaON++S!M2V!Iyx(h=8M}1%M<1W3Ys!=Epk;fRl zKdP#nbF|6g`=vMU5(HC6h8|DV@}oyP8v|N1bDp(Pj)nk-=)Y+#VgN@#xW71s1P=)} zQqSPbQfh_hSBXE;F{@oQR=aAfHf^mcPe0#?>=_9-4Y~W!o3hI30|@y-0~XMS!IUZR zV^xNIl>DC_rCbHeFr(hQNrI|?jvURK=LW0}f2Kkg!)Ul}Rfm|SvZRIQhH}=TF;h-i z*@9@cr$ao)(Q%Sul>qgAA;wIGXU`{k6-I<+bItD@)(z5Mt1?9foA@dzA&cV%n~|mQ zEirraYqe_9)B zkUthK=uS4fmD|}_-B{mR&+hExj7>8ma-iLBBuYm-XJICg3r*^H5oQ;mQ7DJa{Qtd$ z(u-m7|IKDi;)SUU#U=0u!-X0wAc^`~#ouHXMeqCbqRCU;>5U%HZ@w*aOy+POq)PI&)7B^NuS`w9cs3jFA>l8P&eZ8v+YEbBpem zlWXok@I7|rymWqXE_k4eZ>?$m-ph zC928AF=l=X`xk9qG~@SH;tz~j`$smhXJq-kT418ayZnnrYTQf2e2Tv&`(CwIYks0f zoj-mulB&GIc8&W1459VE$bwC)cEwvdW5}j@H7MXvv+!QkAf#+8tsGfh*lgE?R%)vZ z-O|?l9g=VRVjDPa^6OS`@dv3)_vRd)nX^9m=0$J|0U#rnB4wny53_fKgOjyZpPeT# zbw^kzC1c5%J4Ko9mvic9W^Bq98TTn%qnr1|pO@T~h30-#?dNZ_`y(ShI<;zx=Nqz~ zvpcAG&^`Su-^}!pinI+4?##986A3N-CwjzoIf%4Pj2ys|Hi!$X5PzBo0%%+#XqK`! zB#vVC=;zoV&K@eIk&$+ZHv+leYpa(OI0xNgl~kmcH*y1JTfe}#@qfsKF#@F3T5Z@K zw!nQ+C2UJ13@8P*u|fg01+T}1Pk2-+x4Ms?#XoBCLGw?po&{+Y$c(0yxHF}+4w;#ESF_=?>V3Tyo zvuyyw>~|TsUCuJCU^Ie+Xee`9kyxzy7_?fWy4jmHDUMefgWhL@@#$k2n`TN`zQ2aMkwW122+Xc$$bz^r?sD~r=D>#p|87~Hsxn3nUE2+5@1%BBJd|RkO~Bow6>DV zuH+I(R*P9ex@z7H!AIe$ft6x!L<&UK=}voKcPPI9-~X4jnqAFV1uqbY{Y3PCFBU(t zk}_oBN^h7-n7jR2)7O}E2G8@ioyjJKsTJn*%f`~L?3s;|Un?ad|J0VumW9zsG&7cn zQ#ocnrU9P_f25hYis>F;cp4*B1b;Ps4mm!{+gYyso3l&58;DXzC;|~N~5qkj{DTW)qYrWz6)<3MA3|C?LB5O5PWsPyq zAIy}lr%ab+{6{y#cv(a$!xQ$GT#Kbcs2SjooJ0AC7BK67T|gNhDP`qv3+VO}2v(5? zOVh!tZNQxJ@hA7}{8}ZBc)}7)JZgshS4F2HVr4pH4W`>{X(V|_ibKa*oxcBw{HOV3 zlI*+J2d$z9>3#XTK?Oh_NOAjhssMUZy!p(M;VnqaC`>IH2`2#oMjWx@`GFcHVwgyE z#n6+&b{5B{FMq)odw<`U(Gsd0Xj<~!$5#;7G;c&`Cayn@;m{b|00-IM-`53LajUFw zq@r*U5a|l$smrk9TN3Hfogs_FtX83$B&~N@?!cdaTDdIHOmbDrJa71xo#e9Oe|tJc zSY((ra{)B)e~Dq#j6@Uq!I&@A0X_b(A7>M&YOZBwWKO;LA8G~4ZNVAiRl7I z$HR#;4*S)B1FUp@(#GU}&o2zS_d!V=~Y>drHku zTWGcj_4JsRP%oNsAtaW#*Xj3{Ath&91=J4cg!#r4dpcHMqG>K6H)r!25aN*cgQKiI7J8k>dp zI1fQQuRpu_gX^RG$z0$g*~IeLtKKgQvf~v5!Y}!P{YO&s(nuew^IgE2)sO%uX6*UA zTG-~mn?F@83iC{}5be^)LueIrOn@Cy=JUQ`> zRxw403NFnbR&J}cD(VV+DSE+PSw9CIgN>QigGrys&uXhM^lvQ;Wa!>wCH=9VhgKBmUk^Rv0fF zAcZCda(TNi-R`&^!`*&nKzg*VZtxE=<}UmPe=v61m4C?UgkpBXKh>l5?QLkn^X;wp z78iGRn&j!Et#5Cyuca8`+uL*)o-oW~CuoV@Fc|o4&uV%t(VnyeVrUSbYoTz_>9XDJ z1mqzIMv;M46+L<0vVgFAl(mej(=Z38G=6+1P{M5uZOgmBA^)YtCli#uN>nT=tz2J^ zYPB+Ce*muJwkA0!5ZF`oD=7*5E;D8K4auyQ&zD4iI+3A{R;7%7b%ucd;M?7N?yD_R zLC=4Iy}@#nObLLhWx4NsT7_yYQ_jXPkoT{}qxmqmx5If-GBL zm6*(fz~L017C)Cc=P#R@%2dB0vgPdVDycXI5R0UK=SZOHIb$Q>_%@mZGulqiwI1JC zuQ4;Kdg(P*VI-|#LUtiE9S*Bu^k>tO;tdc`ye$b387H2bmf2`zhDk+G#^G_PK ztduf~0?C@m%4O)*zJzxP6DxNeP~pa}OJ@2`B#bGkEa_!rJ|ZRwP(VkTvdV@ILg%2u z{Oy`b!+8Gai3$0wHv~S>JX7T`XSrTkKYDb7!-(7}ce?~R_0p>~Etop?zUU~8>%q?o z1dzO~-h0YPH%zAs=v+oL0sXHv?m>E+x)MER3^!x4r3WTo(B2=bl2GN_+mLpP;yRv~j`e2es=uIA zU6jcivL}rz%)YO_y=6+^+gl8*Wt65PzgI$v#eh;nMf}T?7awP~EOt{xMO^@cb+|f} zB5THbuHa7Kk8sNc8u=gIE5n*o--o$mD_7c!7X9*k1nB>IT&HKIc4y^QNYDvpc)k@m z6uy|^VmuYGKz@P{nzfPVZsvqXeoCD>6BwCu7cU@RB1x2$Fcvmpg?|C-uK#|=;tzgZ z;hCqBw1wS8vqTuB=}_u{49B94Te+qAA?#`*JkGENLDUliR4`g#$peC+n8jW}^MrO+ zNe!PceIxjz-`A4u@VB@a-CQ*29CifP?a8NvKN>%Ap`x>I!S@gXf4>UvoV^BL>nKBA zzrs;QS(wHu=Tw`B2=*2JA2Uf*UUVIN&13;U#vV2nN*kfhvH+`4-uOx}B{q9@!e^Pv z+4(JrpIdhU6mC^} zelZ9DGMxOJ4*S`smPsB^02k494*I{vS6K>@`(-x1j?{=Rq)4q=xjRnN(=nv3y%S0| zUt`@s@=Mi?{c|uRZAPEKfRqe`vVL}X-B#oqy;+BCM&pV5uo_;m^%{MzS;YPgE-Guk z#aFRITeWs=#f7PH$y+SEYUPt_#gvttG#cP7Yi*bf6RKE90!meki}EcJ;(qu2Q`zSD z#Og=>w$~8-5!20uc>ytj^ov6=8&w z!Vw4~a-LqQEhm49zw~r0KYfJt6ltUskxiWy0st=3$w_>9JWl&(i3Os*T&9zy?@qse z@;p9y^z0etFfr>=5HwlhJL`BQxO_sZW}+51i*$-Hv#ON&7S~deIwWvWEk0PHl0~lJ zqfQ;7;C{#fRIdT8LrPzhaO(u)wAXbC2IvBX7BW#3i$m}me^JhOi_ErN%2EUmH4f84 z(2#aUPQ0eY#fH}0c%To=PJ479ARSP>qa#W0Ue&t2pA^?QdbbrfI!=nc6Sj-EWn#Tj zGYAK)V=&24-a@JFtP71fV|0tLyL~A^;3`@zq|5Uh@cqgrWI;7l+}W7aNsR^fD7fSF zdg?q693_~m)VMy#zBsedmC6j$*U+Sz8JB{vXA)r|))jIKYX1#4Q{cCW%2W|QClr$j zZR^NCy1$>jw`pU_q4fLept9(v@!{a3o7)h2v<85UEc(;t&R*|rm+}Egir+iWrh`6a z_=D`|7>11QwGobDKnF(+GA*euHxA(CkrxNm1x~7TnYFeU!)e(6ng~wd`!auMCfPe1 zk!jd>;xP^TfoM$eBnpP7kztvJ{cjzV>8mp+`Ba1x+4y?GCQhZJskrBo%F8?xl}M@{ zgwed@4|mPooZkveUI9kCFVO+2{L)aZKMqbXiO>FsJ5MFlBfV7UMyS9yGA+D|L(5&# z7@IolRn9P`-r|XMhmqA~>M{ppt5AX)e)ay%n_qf+Yp>UKH%)5Ey+ZYHG2Quj^Cv^$ zpE|$b(FZjm{O-fr)_dfeq#iTxJKOuaWYSqvEMuI~7flJke$WfjR|)7-rTVrKmDu`< zu%sNHNoynni(3bg+UUGqd%v~c1d`b6sJ|3~npt8gZ>R@BQfmNMyEyAxZ@n=F?B{<1 zHYRTpf5MG!byfEbL}k{+>sE~=y7zuXT#A;Efdcju?|>RjhJb9SO#jOP)X}z`Iy$t| za}K5qv|!>Xn?V9)$aw@AEreCta}e$d8|xUzL{UZ9L|omGA%C^-Q3o>>j`x|EW7F%1r(-QGYa+23*}5Mu5exwiG_=# zQp|>4EE7(SE(pF@g+Csdu6VSs`cgsjUcXgi#bsINChR#c9$s(z112o4YVk}7K!v`x zm}sCGui>`$!Zfu$9fJa{z|@=i`nw5hizxw;tfrqCls-fiI%`eKOJI|=sSq%VFv#Z6 zkSS>V8^#p}V-^>H!coqT;SEzz)(ea@=LHE_&^t6;z{@U{fua0Qf!78wTRS-5Jm21Y zzP6fyc2+DLVU?i`@=E~O#R6gf0wy@KjcF?SsMAV|oi*qLEd$u^C6nmo%ZZQ{Cz(=DH{7Lp_AcK3sQ^KUE?#Z+7QtM zZt0vfU&h^n2aBN?-#NvG_(Lg`FHB->VsG^PCQ_g~TenIgw~pqriNHOia@W{s1? zH?r})n~Q1U?wkb9F-*{!jyZC|g{}F&++ZA@FXTxOJU@J|Hh}1+0h%`@KYYJZ83BEg z?TpjQ6iKMU8-1h;ee)#lR+FS*Z6tIXI9uChLP+#YmDvPKeQ``w?Hz=MNY)bqIdx-@ zj9%fQSgPsPH-R$tOu9u;t64hc`Xk*dY7SW?K{yZqq)G1Vhz-7*8*>$o!CB*VMkfFWSe~q^BvgGpe!{{$&9hxeW_~ar2^F=N!%nP*ifH$}(J$P;* z))>Ieb@v*sCNT~j1&W~L?zq*emxuS_$>F_-ZZ+UE3rGVag9r>@rsDx|GwhiO6^Eiz zvIp-djH)8erPhOZ5*_?nKYDO@Sg*GpG}`snL;BC*VdMT%dS(QEMgON>?U(g~Utbau(DT-2bT2Vm4#pwcrR*s!gcUn>;BcCDD z9zq9op@1@=yPE2{kHdAD!bBGg@eTN0>s%3xjuTuDd`A1NT1^gY6rUv|0gIRE5PC|) zOdknBl|>5J%4HuF;jsBv{_1)^K7&|Kb!`UOK%2NNSkc=`KF8FgHqowKN34bN=0dGu z4>`^u%#P4CrJ*0(sa7^sLety*cUvp7(ZH4x^iZ$WU$hT?JyidOM-N}%-^Q0mO)zAu zvH__f3zoo^6YE3GvuJBDWIdYpy? zO6M`E-CwRXT54He*1dD5eh38*<#{a)9tzy+lz1BZp+Qtm5J$;YsA(^w63qc8@tLP& zq(%W`q%g4-mb*%~+Tq-N?Hi8~APA z-KB5jVgJ^F7x9eEf|>~BZyf5h9#|i-(M68k#g#B~kqkk2`uL>vU2Ay}{`=j>rkefe z6J)pn>l-+Qex!y!az!%3(V`^=ba2%yAx(IwT(u9sKP;UbW0oU-prz6iHN{&hM>rW$ zTuuj*^!OTFp*eikim@RoL|ndO&?16E4Pr3j%5(9aNesh5v%P!`7!O*pe*OyCc_{3c zuGr8fK<#K*7?>5^%X&X|UhS-{|J3XJW52Vzy|&eR*WGx()#>$~A0MCgdMjE@)sHCZ zGlzGZfEu5ZPK@JWKO-JrIjTZ-l$thK0DEjwM3KL*YfXot+px0Q;2J&L^d3G`J$k5n z(l865{^XhG=(5ovQ*W}dC~@O35_|rCt5QV{^Tj+W7HgqUr6;+l)Q>Dn{m4z!o~K>b zpA=k~ozNaDRW^|nOaJvCK66!%I(f<|d=bHJ)02zqx9q|jDo-UA*~_;o^b)gZ!JO%g z$SGa?gbpa{ugHQnl0QMJ*Eqx#vm%=-r7XdRZF)o@hq-Or5mVs(&c+&~YS>!a+wW~| zZ*>0A`+2v!4Q2^NO!0)#?#bsxs_Y3X>VrE}&Qu z%!Z?Qtcs-&ok{Ji6sH<~VNCEQ#0pNeI!zn)*K(emKVhs2nuitwELA@frGW}M&U3K) zg`|;72gNHo5EX)ADspMk8tFiP6p1^EC6t6F_MR9G_ca9oHrBJzbyJIEsVGG= z3%z&d9J7bC=%XloY8ZuK8=5>D5~#gH;@|<|BW$nv8fr0Z@&oG17`lnns4qZSmdAbw z(Ny;X|C-}d4J?Rj;^c+F=dp;+eo{NDnS3Ww(j|Zol{9u{Q#ObM54LZ-H^K~Xm`^oG zn=4{P$iX@juM$_zGoU#}_Hl9^U!~c&CHpC%V4gMzWVoQ-qDY05k4sxTqb6c};M81< zm`-czTw8OmH_f!b5g22p@f(l@?6Bo%YgCM$MF~5J4n|V#Jcw2eyb4Q_ zKE$$5F~ZVuI;67=DhDx5gK9(PQD}->5TGUy~+T z=-DiRIm^>g8-{?pknh)DEWpV>4>h41DB}%{NG2tbGieq8Y4}zPI|38a3*AYu=WFVz zYE-WulOe^S4}7DR%4iC5zIb9nx05cF8(8k((UGpAe$Fo6O2b3eg&dlGC?I=D0gRVP zF#CV>^yJDv@Ddggksh}(WQFpMdQVi z1`x>FrSV{Qnu1KkY!;MMprBeN1y#Y#VljGLR8z6dpYgp&kKA)jgC_#s7vioujOnJZ z`nCN80GM%F78~+iZtZEGmI*(W{`Bv|Lo1f5-%F-sn!iRv5$Du*s?H8mSmk}Z{!g7$ zembKn#1uRjX5-6vkp3&tbsCO`or#3C)7|>z_2$+Vq+1?OSr62<-zhRCoPt2Ttv{RV zK<-5$bu(EN*k0<23k&Amii|mGx(jyzJo1)&X>mZ(y?gModosp7)AE48wvr24pg_&G zvQNo)J!ThM+XKLwY@DAlm?BDtga}c>ys2%QXaX9WqL_GB+o^>QoVsx7F>P)SpLxlV zNbHtzuI~{1_YUdg|M(2;aUq;`DF|}@~5En6R6aZ#jEFwoEAp9>Fo8^yW8t)`@OxL-Ok#^+N-Tj&}k-L z$Fv-KBe)NUW%}56YyaqB`oYcZ{mz>X_}ut8hi%Etckkcz*0#2~KdU1NZP}fFtamze zJgdEnKP$oT5^|)dHQi@TUh??_CC!>XnEou)v#8T$jwsj{*~sSU@C2+$ITaVy?k5m! z@G|`uiK`ezAsMIHG>;SwodSn~O8w+)48dG|1?C)a3Z8xc*K+js_)Mn8D<<#9)#&Lm z+BKF~Zy92YO#U@|JP5UMorcvg$6 zzo>AR7xXb7SqwyBm4+eopiGUbPmb=RixzE67&0d=d|cB6>9BY3)qf<5$vliml+EZu zCpf^r&8WkljR?EA+_b?Fd_k7P+wi?BN)fDtP;}N+#3f~0M|)A6r+UXd)T=fS0i3w9 z)3R9tr1T7_N1*7B1s>ce7_wILUI`hIaX}Z(7c^k?l}QvYo{#q(2>!@eIYew}Mr#vw)H*fBeF0BMf-HjWko2#kK8ZA6+eGoiqdEs@Deb&}aAe|fd{bQIX z5*ADn4Fr#iwE(Gmumd8bebp*lM0QuI?jS?Hn)5{vD2)qnQhkckp(owr+qb@1{wC2V zZX1r__Xsag;rnmT8*_SV2LKA!*;O4(Dd1Q61zT)a-k?*TSj*>mYzBwoIct&;r&!+e zJ7>yp0&Xj%#9yYe@tu7za`xh7I!sTm!Jc@Sk5Y&&q%S05xc0iPHKN5I;l}wIMR{|M zjrOjGllU_(^Co*CfYB1hejAdx-(}KIVZrE$ZygQ|4eWO6VDs*3+_-7{pcST?CHr^F zofeqPQJcWU*lypK|rE(Eqbr4L}iAvHxGGPn=|H$9XnTY~9|5ln5I!7hFU|jDT>5te|($0p3B= z_^tGQ-$MQPyQmEb{@b;^-fh)1V2UZ%sZ*70q1w%_c(tyJ>y zNvxpdD=1ND0C!iSQ2lBp${lni3!%x-niFbM$gA`M+z-Z+CI?nr&!)o(#W!oUAOpf> zF5{Zb)QEWcg0818K!QA(Ofdrl(x1lybZ=BOr;gTOY?Z1+gnDHNhC4WtCbza>2dCs; zRKI|w5SRk2*gMohD`49s@3k%9XtfAAd^H>bx?BoW1Bim)0lSM5fo^kU9rb#!$Q-_` z6}8yvY8BRPLSR7~4bW{hi#-WgB|w>nPG1%S?S)iEW+1cFFy5N>I#I5kD|AEG^i@uU zf~bI!wnAWVw(1b|!|1}%vSAU$%eo;om7>J%0hBoMJ8$(u#ZFixOY{c1D|@PkCh14( z)k0I_57i9zLJhI3PdIBC7ZRQG6ovvP-GfPnfjtQgq978rN!6oD`6@IqDAEloYAP9w z*PG}<1e5I^T%cuBaq&v*{x~0Y%aLgyXw*X&=EN@aZw7|FBHs?nH{qq>qSK)iK-`5aJSX@U`j85Bgos)XD5Od#$C zc`@PYB~5VVr#p6@GfkDiwo`mZ@PP^cmQFwVg-lyCA4JnbwTx|O-v7>EzjGxh|HD(0 z<3^p9cS~~gueVY9U6YUfJZJZq49k1@^=kdE%Q1^WixT%b@kzOkED)%kYFN$C=Eg<` zjKM?}Bbt8GiV+Uj!EnCBN&DU2&hF;BO}3CMn23p;N#b;#<|d5XxDTBgvVm?J$6&q5I$Yl9{=4)c1%})H_50V z#9OAV7IUOvh|CcEeG-v3eDgLohRfeS5mI|+e;>873%Y$UPWyX-_)A`6_6AJOq;;>S zoHv1j{|x%k+OR*)(!T8?I99jLvg~Y-U_VDoSI>3d`WQw9u0rr0ggF6W&sh`ll=GLr zl-<8LQADM*Sr081j5~*SMSLIPVt}!fX)K>eRR`k#VZ`sprL--cy*3Daf$gs zfc_mkR5OpdS5>uPZ}3aOT1AUn;$VlA0KvhBZ51lp!DP)MYH~4jak!mhI8AkcIc)FIpum+HU;V%eB0X*a=g&gn#X^pqBk z_9>3fqZ(<$fA~@Kt}P#k*vt$ph}F{I&bLHy+$GG@inNH;dz-a!O>?sW7LWZe=8VS| zG4sSIdyad%U(1Ht1a;B`46GH9`+LQX6-|+DY3gIsoEPY^V3`x#l7dUXHz0zpUKAoP z&TmEpS!pfVQ4)D4jlzO3zOhFVKh8LSQFtJsPXQ=f)Ks84RKb@U6B!+piB#oCMcsJRaK-O5iRbG>QcB$_@b#+ z)qWAKRYuU17dA}Nkf$M(aV$i8BMHt^E7b)ANvu%RYFz3TL_>Q8+z+ZJWJv<3&nXa( z#0j2gW0(|q76>2rL((KU9NI?oY6uw8A*O9fBCQp{C_U>mo&sY#Hcx`L+4;)?^vG_9zSlp9J3sQX?LUzbhZibR#@;pOWQ#< zKrE_^(T03J_=V^wNUZ=ycgMW&np3ZBF~N%9h2cIsM`{KI@U~`cVj9ZMYH}({gM4Lh3+x$DI9BXf}B7EcB;g=!)|0ca$eQ!fprws{1}P!eX~uX zSlQv!L4tGc4Y|8kM`n=3%035AxF-~)`hYz;!_!gpBR}&XK$N_Q4mAsfhyn`N_FntZ zQDJ|!zuVf6T$YzjO;FW4P5X6uMid1|QR5sbWw1 zx*U`?jC&)!^J0KAe(_vSJa0wEo8(yK#Z!ATs_AHWHL?6nggieGqpy-C>${d}-*VYd zld2uCGR&rvJsgH?tX@<|xTEt4GBi}(aFv2q(LqqALGE^zJ{X{d>*HEpjOaOqm zw8grWYU(0vED!+eT&RXBasftN)y)*vwlfCXMR2P8ix4c>#7)knNpHm%U}4{KVBbqH zby*${776yEryMF#tp#abRJE$nD75zUCs%JO>bvn@s+Wnck&+fp4Z%tlOztePQ}Ti; z@QqrCq}8Z`qz)WrIs{)g8lMv|hLnmhKVa`mDtpa>V0H_(zRo_`ge!nc|E;n8rDw#vVZdyy1V?Zq^ zT~mK+?GiByH&`9D*M>NigaKP#_!_9mRqYuvT<(C1Y121H^UG7C!_07zYB+H7qxF_p zI(Wl$KxMGBjzKJzi-2&`^zf}P@cK?DR}~rS1VW&lUVv`eJ!oh>Fn%eDZ0fC(_$U&W z=FSWSanOtis-B)wL>&o4O!I^`O#jlxx#+@Eps0aakt%EG4CuiHQX?Kyn`eobRWHRK zxop@wmSn2iOk*Z1LIwKO)(Whq*Fu^9?c6Q-9=N_t;H$K*D|?V8`PcRVT`!`7S~Q?q z^LtVzd)%Q%3Y6li8Y{xevPuqWmy17NO>rUW3dloWJybjrm&j^`@!{L*S>V0wtNX=f z0j1(zp>KP-!i{mbTt^Gy=*e?*IDGQgSzRVWR#dsNUM_cz*T++clL|o7=_R@WhHt>1 zeD~dx+su664!l~%tuI3w&4!_o5)94I=@bLdS2t>Wksy1XR>xUve*{CBma&r26kx)n zasUfGO|z)tw>%qKXr!{RHabEbMR99-&^o*JZoUS8Rc}3EZkM2~L5X~z_dCe{wHI~z zXOP8kc$I*mIv1vdoZut?tw(VleYtTEYCBxl!U4K=)(*hA^QflfUJP(`{8KuaqY0UU z0j^hU6JMgZt?S)TJ6~>O8y}w2ZjVHMoPCB^wsxHr0rGrPnTCPro<$uxXJe@lm51l) zrYX)u-z4Br6qx}?A3QTCP)2h|!LjP;2qK8f9INOA2fE6GbYfjJ$lr~8XP2F~_cbu{ z_R~3}YN{7>SU++m0&IZPfg)lMe0um$#L+Q;(KOI&!wsaRKeKw>(~hZ0H8LM&zT|rV zN_+L3A9F31D{Ps%UUL*X%e2;rL>C=#-wkkYVX!HI7@C_oLr1?f1>~iafV<*?wK6Sh zuJi)5F)Z-(XMVv9Kq&A4W(!NV6^}-P>pHBvCRQveZEsu+t#v>>fW*}1n&)VKN7mc} zv7nP9NOy=ts=FzNbIyUe=JV&7OOJOg(B7#{X99jSkJ~|wJ?WCo_9}8`s8w3 zbf^Q-P;{lm>{Ockn)@4@RG4xNQxM37iZ<)gLdUTvnH@&Rj;<;rEct9hDciz|BN^Bd zxAo+PIwg+Tp*<#q9=*c=sCGmED`G0l9|^c3-paeq{@dOhor zVj3fELoXduBa4xEABvaF^Vm#qM_4<-uCbTd`(z9VUP9OxfQ!Mq0nKTnlsY|a^ zKbx!#-1c&>h)KI8%1pg7IzfRba$PIE)BZaC%dR8lilBQskGGqZDzei*!h399f7h?~ zxVnwEG1tH?vb!7d?9tK44ER^?-@N$+qDQRlZuWG|J#puJmxyJsWdB@<5%%YgY_d3e zf&N+d)6DCi7j<16Vln=hAQ+S+0!3o^o;v!#+h!dB$r2S>TymJj=)n?+=?6!kr8kzH z5;#f#_?6WSkZvYEjmK&99BJoxdUkegf??*-r==|V2wVI|z3>+5HF(B&ehzGP2r8X4 zV^AfndS_yW?rcS|y7%a{FD?vb!?xZ8me)3dK?P^RGP)^EmD`=4&F~$gr2u&E;9L=! z8^ooEa|=+4kJsOQw-^nQv-m{L*-1<(7rfANrp*K0wIe?4D!2{A2mG>09Pd^DQZ z+lo6`5hC?Cfb;O!Unrt8{gB=vzNw8)cX>cCc^4UHtD)o8^qr*8Y?n zXZYWXbRxlQcQ?ufTU&jo&L={?eK#e>*FDaY@fGT**+IAPMQw8YiLPP%0-BL<_Ie9R zzgaN>E+G7}{mw7=^A21cVrY2&%r91OHEx4@?QeOsyc|Jz(L7Q|*<_p|10VbxkB6+B zhr=xV{P@plGELs4Jewb>4fo|-?&x*uO*5*wmCY2muN9=yMieh7`)1-vYt7FzKW|3o zN!)K@zO^Qpo1~}L5G(NP42-y7K2f~@IBG)Pz@g@FYClTQVFczrSEBM&;`dVPI#5V< zzwtW8E`(0*>~9s1G3C^$HeM?&milM)YZhy8We#1NsQNt7z?vv?a{`6o~Q$}K1!k!dh$bt^zWBZIjO zwC8_)Zq8fG3t`t2#IWFVJN2%>X4E^)FwFcAvAf=uK=|O=%VpU*XkSqR@QAw2jSBfJ z{Z{Ho){Rz1&vjZwUoh8ae4-{{Bc8;*T_n*(cr8$WbSgE|-v#=m@51yUC>dTU6b|uH zlP2{tzCH$R^l*_=KO}?ei0?X@>V!K{vqKpVHG@PNvB3c~+f?Y|pRI9{XM?Lm>cPEF z5nEzIaBQQj<=gL=6K8wED3e^QYP9go4Hal6V`< znU71oBj}-U@!Z1?lc9CKuWVg2D_|`9>B&Vs+%`smP(2;HGrB0mhhufH?W-NB%~clB zG5(UHkeiq9RBQ2BvVI;9hsnUa{*(^;*{2rdtEUp?OE!coIoB8`M^WwYERhZDs~u4x zL*QVpVMD-lh)sS5nKISsLP;4Th<4FWt|DHZ$I~;_1f26|c32CmA((;7ufeIiDLbip zTaBG_SydDgP`^DJ)S{*?eAbHXPnrOo_I|=r7F|g*OUC~@%Hg!D#H>H>n}#U3Po_>k8S-!@k_p!cf3-7>{M@8 zX53*4<8$Mm7#tQmKA?wgyb2^{G^hp;oCxjT)&l*7b^p+3Kz&B6fb1@^TLkpKbs$P2_ge>Eyj^D8*K3+#jW!TL8aT6UWWRsFDe0+Yfc}snH1wFH<0A%Jyu&@IV!cj z1xkUt<^IZfx#tUsY;Z?>lX(Vab=Y-)65?;@7)12*N;@ z3fex9KfT`EB4-5s^|AcA*G2W6{`N$E>wM_!{vtkp=Yrkl`H_`(%!H!U4lTJb~+9Fs4)!dYYcl?3X7qxbJ5($ddu6 zzJmc1sKjxmWFMo~T*akSFZSSxtYZRQn=}c~P9Rf)HtdwSBTf7ecTnVr>=U}EM|=kc zLuBzn#~op;aqDWAw#1>)ZYIpH^a#rPhiqt#^ZA*3b<_$#{O}dm=5!@u`%=p0XeJ*_ zLvirw5GTR0ge6l5@S42 z2?@MV^KlzF9xJ2~6UNS!Y68cy)mU(uHT3UHhu9Cw>ku-?Lap!T>P(joVBDXO0^Htr zI?UiLFTokrX>z%|Nt&0h8n7WV`sKC#xV&vxL|@agUWD-1YxPNat4P0J z)2vwl_`_@XyDC%<`(KA>Vju9=YxQY$tH?jTwrRtJ%!Aj7XS1kGt^SfulzOwXDKS=O z8&db$jCU2@MK*)7bi4|pU z*LEqNT(8F$G(A$N^?KSSCuc<)RX(697zEigTBny7{W6Rb1R@5f*$Ubo*6uu;+y@F3E{N62uJ;R!LDt2iBi;RVzZE0N2BbJ^iNHnY6f zh@emOX~lX%ovGHr>n^3GX>kRuKfirCh)PaCy(1N?6VEy-hBc(J)}}o*=jc!F}_F`ObMxXtt!0Qbo#29>kM)ZGfi3oehs@IJW^4ToGQJ~kM!L&|w zQ@oh*W_`6-Utf~5!jLY^KRfXZi*-iE`svO~<9Bl1sGN|3d$X|0sj_p{7skFDbBW;& zOE4Tc+d4AeM4oSRnNawpR9ZAc0WYlLAdCYdCZw+Hq|~kH3lBS&qqyP%0Y2U#BOl*2 z2vx9*(l}0qgR2|9UVrq2_!strt70utIk^|47(SrMXJNP5g8Tmu(PPz`>3JOxaA1HO z;cjBT^7M=EgziwGvLrFaGRm3y@5-qpY zBx^6&5tunSL?Ap&YA7`w;4u6KA|Xmn|t>SbT6;|H6VBEjk$I zd4&>6l*O)OmhufVfH{#1v>NJf$7Tcq^1tUL0{*>&#YkHOU=suUp^EtLg@Lc1kBbJc^=~V6TTCd%Y+d4z62K zSBacg&*2oQq*<@n0uFH0 zB5*Y7m%{=^1gqn6qy)JKOU{AH#`JN$54-G&ZiEv*iAEGy5_PJwVvUa6K6}BObrW13 z@8P;FOS`M|eZ`TEy7n5Y?p)*w(~xiJOLqH|l|o@yX&GeNy^SB*S2>=co;HXaBW*b$ zV;zDOL7(-{aA?>YZ-4nZU$H;V@jKv$7zOh*ns_<0k2eq>OTlSId;4qqo9p8CAe|VO zPt0&Z1r+~NPi@fO3EVqx*B0_c6*-)N@X1c?1Repe{^MAv=PYA^G7@P61&`5p3S#P!J~6#@*K1Z2}y8 zeOQ3s?SPC5`JK-CCYlfxNRDm0MB&}e&eqy`M=#$!jCixrd$ZepzXKo^N?fhgeEx}p zbVb7?>4Q@|Wm=Dz@u4OW&NBVzY@AI;AQDhL^y_1VH_p;=auNf%D2n}UsqD*(Sx5zoHM*QI=rV^80ClejJVvg+7UH~rPdM)zAcX0QsP|XD@IM02pR#} ze#h;o_I=GnE%Wt>+S=SWBDNS!bx@1f?*9<~SR+4j1!YABWZLXRKdgeE8CS@o`;SPx z!YhIEOi7}Mx+Vl1BrJSVzwZCV;pJ)!QW&mKMg?%A_v zOYE$+m?p4!aC?g}g;iOEHULmSufG>nn>r+s-qjwtB=b|Jv$NMzeH8aAl0HfWBwDdc zbf3DYgqwJj=uW^PYq6gV2Jv_id}FG@A!!uH7RPF)0m+YQ4b-y1FL}Qsx*u8|3Qu@Q>m<5~-+MsXMCaL;^;m0U0@kL|q(q-sG96xYPdWqx@q*iwZ=@>Ay* zZ8zCOHcjEU#aYXEdiV=XRVDCLZlkl+d9wz~0Hh9Gscb4K9197?+E5sd0jw8Tq%8+% za-_do2H&-ZJ4mfajUAOu%l9ijo3GUlROgQ%^U{L0+r23r3ln8%d?2z_4$vRW=aD;F z4*sPF22bniJ-YYEj5C&4<0bAVF%mTnVhl(>HP10c)y0q#89EfF0!Yx*-9W5Al`2bN;$%W90`S-s=A90E4 zPnM?jPEKJkGybZ!Gy)x@MTgy+xv$|JgCnQX4oehnTp@}x zig6{FX;8esy3U-yjLgkz0zlvKLZDp{Q+wbx^qAdqi1WUaS1X#Mh?5u&G8pc#U~FE> z9V=Sn1-TDv3VZEt2vIyhUsX)JeFm!-7V68F{1x|B57a0dT%V>$+ZrPc*xurtEn-r2 z{2eNJSRv+Qiq?fK4}{_g@l}@gfioVfwo`DW2B&I8>xKhRZ%tP?o~MMw%jAnB8rWOh>86_n-d#J)fp$G=0(d>;?UTmKy)GjD0$wn+o9c8{jARIck1iaebC$e_!R z5*9OZZDYk!knPN~P+#!WtNRid!C!*|NaAszR=d#kd3$X;Y;;|E+akfY%FLk9LFUwo z6GP>i%{2QBLet*Aj7PJq)@&GSaBR?*Q}B((|2EFqnQD*qIn@AZMJ%dAp79`*8gPRD zc5Sc6l8n%%SG8KNson{_cBN0pojf{JB|5VA`@p5O_9{D#U=d(nN@87)LLqh+LSxiS z5Pe4s{i!G6EC)9$L}+W{v*^K+f4GN9trva#0{IMzdm~Wym;uGb%3V}H?p2sMB7qv zxrSrYwz5=)0->&2TRLNVfe{T^T5~EIBU`5uz10(?++af=} zK-aX9PG~%Hb`6Z+VD6zqr%YQ=tsXpTaIDxy9c^QbX-rLgu8~IRw*K>X4JDX;sy4F) z4ZPz%|Mj-P)mb=a-B4AAgmdl)=Dim1?g5r&=i|D)8-GPQuGzl*6{*@vdsvz*NtDs1 z&PBK8a*JpxRbjU@E61vUazTX0BiGXnXguZI3-Uo%IS-K1Y~iuwbfaN zq#r#Uj#N&iw9U!X`CHqMvN5Dr+xjcm!qSjRfKZ#DeR9IUvPDS|fKq_VRu4~ zXh<>B>}|MFv1B;1{p=zcZl(D|7_StYvf-t1tqI&V+<1ajhl&7P8KqeQ)l0K19AR}A zoesLI98Ez&wH+EeYJA0rJX-{hBpSv3Nct*JP$M#=DU!SZS%yg3i&gfGh@zYc&q$F`g~v^fUmE1E=>Xzhf|oUv=tH_sBhVE0?pZ*3|U zg{W84vq}I^X7PA>CY`muOeo3qG~LPt0oQA zwG-M#-Ee78ykPusKA^f)eP3-zl_AIg&39!DnRmh*X4x`h`7!wlL{5#mlkDCVWeG;1+*z7zzji$?~@mHu#s@cRACHl!$CUa&3EDmMkSZ75cX^JH z!&nWut}IjFBdzLrbmZljd?9|fbzXN_K6qL|6^bwicKU2pz;K)C;9YcADrwb(VxHFJ zCr#Z2u3%3XY@YB4=UAAqW3kx(@3O zHk(dQty3RyN-5bo)$F1G&ynD2K~NqT@3z?iDQp;WCq29>=z|fl3*>zyfTa0#&|d@7 znOcM5H1Ipjrcx6IEpWvIcbLCYfy2Xkz4f4Rc-T1jwQ=tnvuguZkx0~ z)RhrxEkYvUTua$7Uf@#E@h_0@IHG{4>mt$3bC8Q^*JKHXycJ~Fj7;L+Vy*+tG$L(; zrMgHR;3yH_W0VNhPkw7{6X}kxc7M5MyTc6-L|h>rM}aR={C3h0(;ngL$H~0gOb$(V zyU1fa3-I~9{%;*rk%CqHl$7tfR08BLQ%ULZqc4sYxE;I|MFT zwSB7B^jp(34N&q1-^f0o0{j{mp|hfk(A>^1^EvjEV)I259D;L;r$t*Qm|@rYVsjJ$ zjYqq1x(E8*ktxhw?RpN|p3u^j+oMy~zqN5bdfeIg47=cneqR*kxlLv^jxX<52g?Iq8K^sj#0WPUj?+%&j2Vu(;b9ZiF(E_1HDE6wO-T7$r4Rg0bN-S*4f-mqemx}Ay zXwzQMdr7t@5V7b&t!3tPK56ppIx}#}R_78I3y%7x%fDmNtu&gz0;v?AHz=Urqh?h4 zPu0Lo0jZ5fdV!$`;lEY2E;w-E4ZAIT{Bt+~ z_Gz>PptY8q0-_KRg&}42sN$dJUDDIxCCK=F1ApGEvQ)jKve`vjYx+}U6N$oG@@T#b zdlS3%;n3gm>oubfE`Aa?Eq>(PL`NOCz1w1?cZQA;oR3eMQHIAyeV1XbKRC*lD$=l) zh`J))?W#{0>c)bQbY|AaAFL$@Xc&SZj}xK2XZG9k~u6$(A^p1#`3w{|W z#)Gx;RnerrP|7Xd42&f>g_zRYTV;?b1HmyRr$k;h?^5X@Y;JyWn@sArzu8g5@d|tr zH;3gl6cf;Xi#Deb63LFqPF9)IXr$xJ*;DgZc&zIeYlHGp>N1P*z=`v^Z_PW(m0pR6 zECCTMBmg$jt*k7a&F^?CCIgC<#mF&=8B=Mv$=a0iS~h>Ki1rB`p6q4QaYaoowU}cu zTbU&P8E1G~9xXW6NhLT;^1OSxsSUErHHc7W@x)eI%ub~px1JqNf#IlTN@hu?dI=EZ z?NZTRrn9owUKa9~@^aWU@e4~L(($U{_=WZ|Hp?fw3GfIE+FYR?Rt3SmT$NlzzGO)< z6kTzKKBXdHBo2z)9Lq;T-@m0QC(U2uMp?D4Xe<4O5iIVI{}-x#c;5Ta+1=ahZqKTD z^?Z>nY;GUg0*dbJcHeF8VHR$l;+p04b1Im=feMS;o==m-eKtd2(sWj`v*U0<6S>^p z%$rwQ-}jYClJB1;AOoz5ow8oTceCQImaj1*IjbUXl3}9cf_VXGk$ZD*XKjD|EhH$} z23L}W1ry;`=5^K4X|MRbMnRgR%Pzh*TRNq;+wJ^~t;RHLR#NY1w)GnsI1y0iihv=# z-+sHcy|LBVu)u&Er$Y*Z-5+ZZx`J(!D@N$b%B8rLF1*v(-hk-%WJrtx|NE`in_E)qW>?{9lOyMmpqxn5irr1k1g6J|?L;dFuo~rPIq+Ha=S#E$K(?71K{9>eTll z?XNz6^62Tarv`{|$X6vmhDs+e7%>bMZ@QBBN(`?o!lJY6TlRsEuqy>XtxTO464D$_HE*IKb-H+-w4 z-R`;7Kb=C*i~(vf(ElDHvGB-I%`qB7#31y)w-ytlY%rK=n;cGeg+~kMQIUFtzP!fm z)sBi?^n)hY@t-Qz10AE8GcgbRFbWLB4W@wPR}wmbE8N28>e=^y)ngXa@Z&0kdr^bu zb4qlgrgo_X(-vAxX6QD`1jKnKvJ}!Oc+ln3SvcUC8iL)@f$?9C!ih( zd8A0cZwh!u_+)s3|nSB>GY9pLAqHOpUL7FX^Dp-Rp`d5IWMLwt8 zjo&FV4XZ@14Qml9sf_-)Nt!JXLR*6o3RmXIxbAn*z~v_EB9kE`sKIbGBh#3g zkwRM$Pn2u68AL(>Bf6iff-aa>7kWYHuG=J1`q;ThtNrBqWT4K$Zuf3%>P*eD3>VbN zGz%?3Ngeis2$IRZ$(;zcq4!XRDvFo_I%C#UP*jDFhn*6XoCwX0(#c@>1joV`)`OAH z5F-(YvA|JfkSj{LK@1u@<1GPLI>AMAqx~HClq?T~k)Kwesds%qbev~Hu`{8Z+0+DW z4jk?Q)e0sIKXg8=*YJ-q!^E;JD<6%71fjoDcZhwdAI>+3T0?+o46Nzb;U=J9=r~+Y z^r6^Li0<_l-G{c1kT(An*V-jAKAQep#?Rh+ZMx)Xmzs-C)#2`qfC=loy6}3^*TGV+&N_K5Ke?*$6@k!j58+Y}#z6pVB>>)kP zOSS;JO^KBuD~lCuxGU`d0f2xh+mD)3MB~3=TI*1PXAj&BsPtVR2fqgV{O&e(cBNMZYqN-<_(wFh+c9DVU zW{NwjKFxx`NnuiyFk@$}UD$=~7Sm$xN{I;houq-A0J9S9mC`56$$q~p#G(uC3&&)RWJd&%SNLEs9fEt1i*K3y z#%3gnqSK*1PVl{{;>pXd;&)jcr8UCsGuQe%Po2ql{9a% z6zQBWjFJ&Q(Gf~_QbslM2d2gM|H#OMylz1gE#kJq6IVU9l2qyzWg-Q#Zua-l(oa`3b!$ zvWCn5OC`(5qyD-9iDflp39PUu+;~TnGD^1JG?DnnWuK%G(~j49$xysOcrz6m%#Dbp zBsEJqIw84Pk|xJSHh%oH^pYgwykPzg2#U0qmjBbQvEicQm@Z_(K-wg{&gi3=;N zV}b!0aQsEzCU8O$V+lI9$*4!p8h$-YwM?vG`lOFDBO-XS$CK|IUv4zpo*7|jI-KT7 ze^CuKFL*h8WF5*!fTPDh*Bn(FFl!TLed(g#3MyXAt05cd?Ta>iU=v`dpfcJ@yknNXAKmzYN5N)deH);bO{T6gjBnk%T6(b zf)Z7JYrD!7M`soy|>cn#}mv3?*o3U7H0N-TA)>Hb}bbHLPwKF&$&Ca2E=CXC@Q?I zzzfb808j8D?;v!^X`jOlN2=YOV9ydON^Z@>SUJvnIn~*$b{SI^?>VHY@g=D zzyx&?O1Evj25x~a&7Q%nqY86KxpzYyRwdlwPX~EAr?|I?c`HV4A{2br-^JAS71;9H z94`EGsQ4crnthuZI)8zPu2hsr?D=|td#&DNU&chv#y;fPqkx>Zg4#yzfLn1`!&Q>S~5 znp6Mt2T-`yrV+5aXYlrZana(N5enj;x-kML(I>)z?kyI>kiF(#eK(|jIvqa zaPi6A*qf?{yiNU;j17X~{BCRbKe;$>yQJo$>moO*Ae`TYB3y^NdBX+WI&%2$ANSi0 zay1{^LOj5gdEJB2q*~Z9c;T%1`-=Wt2vZp9Eyu^MLRU0rjBVqqoZ^n5{`?S$aMfzy^1C`^dm*Wi)+G&$ zKCJ3+FqlekK&{K|_0t9CsQ6vnFg+ge$4cui?b0 zMDrLgd;v<$DaN*NyC?%SW0A&6mCNm|ohn^#q-r&m5K{FHfUCsQ)Pdq;UF>Q1@0&{S z)6tdiE`ghyizJjea5MGd)%&-$wO6rm8i;&vN7`KU=4pCjzVL3X`?VqzpPq`*ZoJO6 z>#7xHA-zGGOFz8ITW&p#w!>nCPgJO5EY3neJ>>}_Vo`p}B=^h(cH>WTbHK0X3wMlZ zuh8AudlG#bXG(kpvmZCI-`eh*_wPE}``~S8hZRnVViY|q(M`Rf`5(Wl>B-fpRd83^ z>?|)wd$_GcYbWS>w~-9Nv=K!icETNBzey$@=aA6~iXQ#x1S573mHKy^el#~jcbpJf zovF_#HG608*+UZzLa1yRhaUsnElfu*Bu%tKED#3Tg&;MUs?6A~Sini zj|Cw39DLhWe``i<`SPWhb%l*Qp-*k=Du6EVgy=ei5R~y8oFVbN67{1OL40N!!pH#W z&~K$kOcEdUZo>coQZ!`bWZ?lg#uVADO+D(`v_Cd{A)F4A!kwLNu3+oUCQrUn%3fWCqE*X`3P^rWtZG8?!YQ$3x6y8?tX zzJwOQP-i&FqCtAR^yx(5Gll!X<0;sZL5_N|v2gP~VP0fIf;B<7C(|+9FY-cOPKU3s|5yf~{Ji>t0(1?Jx7JA7g+DZf=p} z)f$tR-$@@m{+AA+dN(|LbpT`OMs-a(9ihhTR&DuF{JQ?L%7J z^F-LJ7#X}?b9#cYzBQ(#ojbD~Pe9itn~?_wt}aj$SisRuLta*j2*+axk?W#Gtsdt^ zOBHHi=E3?>z4h?$aH((Y_>(fTc~A0EDFJ!rhRztqr^ieZ#^2)*8?#1JT*D1M2C{U+Y*7-H?)Hs z-n*J6hxcGCC~-x-^DNC(2Ybt4wnmHkw5`gi&y!dUe|&fk^*YGn;KLw2JD;2ZCmUZc zGPD~T4@c^uVFdNw$>ei8iig+D-bt*)bNUS$40U><-?`!=BmUiwCo%uz@K*Tba-6zF zLS5|$fdSVK@AcCw)ps$%W^}-mV3CX6Yu(S)&%CKd$MbV|4@u~#89iNo+)%%7)Kqy> zXa?Hz)`U9$^NCgJ6EU0|1@}?~3{{4gl?5TxN@$tmS_u~J?evGz_}Y<@t2vuZ-ki&HB=^~iuT1)PGwO9}D;XY%KsFfR}Jdrn&-QnQ6s0R&)T&bOWLtfP|Wjlj%7ffaY<773dg-y4B$`!OqH{D5^SUJjrV$WMk))CA=^ zkdMuGkU~lwEh##$+vK`yah^thjvfmXn*44g9kO1GFH2kO9$61bF7&TT*+jsQ{zKYQ z>+>=zqu-1z6mD{L!?Qr?5tffDIxu`U0-<~I4LCHJT6Vi*W)30ser5=#kB3grW%_rXUhaE zAm!S4X6PQy$7A4xL6Z~oGe++?G@luNe#gN5AUID zXj2PH2zpm>Ygf~is2yzvBc>y&VLhvS0rQnEv8u~?=|1>*m!u)E@sT* z>wbpKXa<+qgBp?Qo;t2$WRpt>^OB_MkTnM3ANMo0VuNf0{^))?R@6LUMAmiDE2obE zYiglBZ5KpFgQBnmSRpe?)-5PrAljSo;B3qyX)kd=rs?@?K6;)b9Yt9amYM~rtMw7i zXpl)0Q%&)qGL@rEb25nBO->;jpIQ3#BGqycRHYr>vo`tnFklFOwb4!jL0|w_pH-lL{$%5=Go)vVXpb|I6h7WOXKNql3pfD z9JytQQ^ElMK#H)mTdsQ8HoX!Kj7IxyrO(oydNw!P$)|mtIlyZO z4MSyED04nBD*PgM!cGf&;ihe&>;Pt6oleMHZJGKWRhmy;e69JGhLT;FdmmVxc z55DEU!|~y8JsVw*LCL4qY$JLHp09a!I#ELESWz0~d)Wjrv z&FC`gr>E*~JnS!J7{g;SPLHRcHw7jM06)cJj9~=oJ%BZuD)=0=4n!v%z3w!@ivqX| zJid<3#<3!?zUjgK+fKCCeZBwl+HNP>+yleY51SjE4YhdI_S6f-Q`WXOA}F@@e*bNE z7vfW{Z>?><+l$t=wxXXQnaK7&1Tg)1bN?-X-0i$s+f`M%s+NLip>MBmy~ps5P;v9! z&eo=CM*!%)j^1^4*WaqgwO5;4oBO{2IB5R$=KgkPZ?C0bMBCknqHXNG1vsK-uR77z z=Gv>R4wwzAZvR5DRoAwfs?%^~)dYB(+x!rzLhIe_z0Tj?D{!h&WNbycIg(Qaq&{nkE=;q`9!9e~^F?qSd0gSGC)+Ws2UR#;SB-fOC=9o4~I==YlX zAH~a5rB%E8yKB&i?arI6%{QIx^^U3t0J~UWzq_l-zTe|I&1h|Ra}V0>zTXD`U4*H? zY;zD!z&;{Fb%Y`9baoXY-mM|**Y0c}0en;1j~*-m%%ul9OgXaz#BD}>=gf8t znFl=3#X3eMF@p2GdIenfxTW~6(Dc+tV4Za^0&VcI`m+K|XzXw>XP^Wfi%>!Mzkfy0 z>rtJ&5@!OGGk{(Xulv!G!wvb@SH084`_2jLSl&y!$E{;X!C3G0-173U1wtP*%ER(T z1sLpsY?+=7B{_&;iO<|NKRah~E>xe0nmBMhPii+nt*h!$R7^ojI;EjeBnb%cFZZ;s zD}Di&9P)er4G)V3CI0LG$AUn zBmxC!y%AAFNKH&%H&|GNobX7A8S425byASS4B-M#7e?tV3^X4(W3>t>9FHdSSjXKBZ!l`BJ0 zJ#k1Pc<46=BTFV)Qq?039n*zCJ10U+S5TsL2+CG$nJAQa^&K>2+KG%uT%%F#KpYaVPPI$0?LTVEqI{B!>SoxOx{r%Mf24xT1Zcz$ zH^FAc>}*`!$^odSAcE(;qpxTSVe(0o@Chy<80G1O!LH*dq9%mq(0QvJuZ++1*mz94 zEn|ar6nM1Pc(a0mM^-R-2Wq<^%r-12D*iNob|80{Q_j`FVO(BZ)N^aIW89v;=ZS^(9Y>Ch!288`)blQy6LR0+X%x8aR*fxx; z4Pn)f>yH{>xWbdm@0Rf$)i5s~H?TS41=^@La2rxTJK)6iHou@N&&seAu!>|i4KlIK zp(riqG`)`%>0cjMY=hwfeWUk!*&$28noenokxhcqwZh~hSTfg0 zy7*}UtLOqiB#LkpZOe#jLX4JOz9wliW~vU1|&lG2gbC~ zqc;6rZbyWTmFQTZ`Jw>P)cCF)^;)=S9zHb7z~sfmaTU^Fmce@Jz`CaCfCWV(eWZSY z1zS3VYlAW%-?yoFuLbw-qij@H6xeIQg49oyKv?J64t>*eK+{J+n-NW=3D1p!^yFY7 zELO$PZWV+ zGlXJ`U7F!}TYCmjHH;sSPs!PwVk zIF`gj;)d()9N2IWKAsCRliE3p^c8AhffUG)#+E*OXf}d{%-aPFjoa5D2_RS0e0Yy@ z8!8b1OuDppwc7n7uw?e|tBWx?8X2Kd$rSg2!iV1cUd}bYSwYNlCTqdYX0{@s!@QgM zRiZPf#ehdBq**3ZkYiZHsSm}aHf#gK#YNbOSk?eQsg|2r#)!upip}_b`zkx%qbWfd zm2;5lw4*|>)6C1!l$8lyc+6iI(co_`{Y zXDSbJw2-Zb_>GwwVec2Vla+nNS~1$?DcshX(xlo}oN8{_O}stGgPqMuU}P;KMhOgS zm(u}j4D;xrt4`L%3b4o8X}6w3QeM%L3o@wJj6J1wGy07H{Dyrrefv!T`b`1)?cqb! zh6fFCrS=l2aq!!bkH7KE%L>$F;NivBO2VC{P)Bf4#e;B@Z(RWoY+|tnYbY$Vnfeom zuJ)#QE|qGOkPZcT2y+;OpQ$Xt0efc$LnRTW>c0*wd3qJzyh1?~^Uc~n ziE-lTR&iAu*TIRqk3O9B5q%~2Yv#%`XsdiMqR9^~eoIIIK21)&&N~BYQJludd z`W#P}gJWqG6l#`&y>L}}7ie9%N*t>UYdbx7e1ws<0_}4}socY%>d7~$1%g-+c~N9l zrjx3=+`Ci8D4y*V9u;A>^7Hg`QpcZKd|}8qmPcwV_+$BK4m~bX<3=(_&T!rOGN4)s zqq{8vX)8ziKHA7g6H~E1Lh77bE)CT-B8}EW27g|ZER8xGToy)ssqUiy_pm1ABtl4AHoeU5hp=zByp-`bTvLB$HComX2nK*bSMgr zFPvjVJ0L{@0skl1Y2b=p@KZrCj^)B^Zdz2gM^_9A*DWt-ub3Jdij45r(f3#IgaU{@ zGYOvwUU{Lz^eE`7A@?gy-+gM@#$TF!3lv`@`^n{Kpw80l&vTMx7pNT0+AT{kV@)Ofx^-Miw!?uWuw#F1YBK}moFQF1MWhb(Dqyu`^_xi8i08ywvEp?R7 zDcX=d%VvFNl^H8LagVQ|ENJU}BRXE-fghR_m1^&NQ4vSI=9IT8|dTC#_{F1XiDqA1yy!1m6}Y(YcC;(J$GQKEE8KC&^GThj*L% z_-4tNGXn=aMK7t(*SpDSuD#A{s@R|%sM=S7#N z+S*#D&L#CG6%dUqp19M12G3>Fo9+M0T*%$d-_>)w=$ZYk{kE&{S{%pSJ)A2Rq04OV z;N6oGPfj3r{MK+gzLj1$O$Ro2 zuY>Sh+}GLmXrZvJ7mdq6-(Z65CZb2wSy1EAhhkqU@CL?z>2S-WQbtW)<|I%N-OZS7 zP%vL11{ASk0k7!gE}SaMWP_~H%0YWsf8LB1m#svsZy&qDWhRsBsDaR(SFK@unG_(r zi$}x^^^3h^A_gLmnH8HiVSow5(y#Rw?f2=wHygu=`t|(Z%g_G(5NJe;Q z9Ucxhl{`M~D;BTHsw1M!)dDprc>`^SIh`iYV@Qn{1+Hf~B@SI5djp|G`X-rxD#_~i z&hP~fX-;LJ4!^4^^4=r$fHEC$_~>|3);pBi>!{}E79GV=xO=j=?4W@ScREFN89_!R zO-trX(&<`r2L{}a_(_}!5F$7G(oFz4;$S^DZd4;AimcnK3)G0gOWdX%rK8-q*B$k= z)N3x-+P(0-X!^U&{&GS?MUzI=J~zR!NosJlg-N! z*yk-h_)`ya&GmW@mRuv^p}2(S3iT1G`%fmH9r>z9S?YA6Cw=g7?~zD?U`P#9%vn`b zrbZ!%Yu>TYBR?$T>t2J<6ek(af(EgMvD{n`F(~mI5V71`5R=PvG6z5?=EIZfce?kQ zsdEhTfgW|ny|pN3P2nXdK9*?1jQWgj)__op3QOn6G9hvyT~~}wrNlpsfkjkp!Z~XM8*AH?|j9|>2>pxNxh|hHsnFv6ljKIVQj|L$QnFz z?;)^GX{USewJtB&bZ-%n?-Fnu)`mKxyzUYnX;@fx6Rp87C|QD71;QPjF01^8AW*EpUrWlY~{jv4s>RA4jXQ*CPr7 zkADmVUx8C-B}~=5-qp!TcQmo>lxWaBb8?r_o2~`bV(wI|lDSVv-aXfPy_1^6 zFzIMi$xx&C!L|$I-aN%z5Ilki!f>e>xJn^O#8n#GAO;Z73r3H2633W9#qGBSvFcwW zg6W~(>8#d}y+)Zw4F#S55X=g6?rjV?KS+S#DKMy(O^c9nLhACcf?pi0Fsy^admMQP z9CNiA!;p}NuOWI7AyF8l0ZJ}`D1Dq@vEq~+7p4pfhWge*u(`#Het|ahD`n+d>Ku;d z%Lq3_X{J1$K1ycID`Wxb4`4YoonSVait4&lVS7L+*p+wvt-`&3+*ar8oUAbZ%8gRTAuN(2|GCNJKRu-E>c6>8hx9UR-B zS=X}I3W@Kygm~)wL9muZ80YY5$jc5N8jvOjJun~0jNw7A4Bd>(t#}d90xqaH6~&7; zc`_;KorbNu=M>_Nzy;lOOXOY&^(+hA%$z>{A=kL>9A-ChtfvD996j-H7s&ZjJ&K5p z;I+<^u3@YcOa4@}nSs}S(a|7IhZ_X>%Z>lhCI$p?i8!Iw$txtpC!nsTjwz-MQu>ve zS9zJOw^X(0V=@br!_pm{V^!mRy?2q0fJ$KVVuzJnN)32Ay+^afk2rH5BZ{kwMq?)lWU87(V3j>~AS3n0ETMYY(SVH2CncAf z2gOtJhEJ^p^78mYWT#Ej`#3qZjW?XCQey)}bVMQz!jbVBJj++vMS=@9%TxB%p_$3= zJbx~JW+DL*V_!f`QJiJD{h&su^qill9elG-59gO- z_0tMC7W|yj8sLr?SEVdvij{7>4yyE-LLM29yvtoy@_^EkISRjNk^1GJ23!Y*d7P-R zB5*>ni1wb~{8kYC;pFZH+Su=sV4oZtLsu zNDYNP<;nO8w7$t{GC4WNDPcWqv?|6b^uJv~k|8Qb`)g-yT{{by88UAarZRDYqp!vo znhTMZjda5XDxq-01k5{)L1MTr>w{ych+?>-9M&gjl5sg&qbu3UD30_acvX&@0t@_o zL6Z6vdoOFUvX!`P>>DMgq?j5~q^6Inp6*@%(yfr=upPcTLy{#B+H?U2L7tk^n*cgC z8ZErOsO#yQJU<-fI3pxTr#wyJuk+=?RsbZ^xoB zN3;t!1~7@StL3Cc)@Gbs#-nn4Xs$^dz|}-i&eWSGEeyGeQEnpX>9v*`P>lw8Ni!v8 z4B~4%@T5wrKZ(ip;*_cx`fhQppHn3zLF!U8DU0G$b;?m7)QN9+MsfK`BWI8BEwM=T z671#eh&v?s4rWhXJDE)50VMsUT%Fh-F&Y3I-i_=IBU6HX(OVea`8EAbrOEgwSFI+G znllj_r?o9ecJPKWni`k2){;zg3f^m`{D-ukWP9Z2V2h6i(=*l766jGg%)z3QjHCD6 z1Jz7E0n`sy#e_$nD>pCZiZthj$d8r*44 zE{2fvnsWVqN{-d(&4P%v!WtvpYYb8v*uk3)wrs4=4^XR4mN-ZH2O!^)Hd4phXas@U z2Wrsms5UrT^Iq0i(E?_SSO8QA`lUL3BQEj7TYjk7dv{7eyPM?czX@?)z*eRgS=@YQlPfsqe#EyN|Mf&6T47{&t7B=*g{QNGvO3YVykRLn4zWJtp zyS?8|K2Q7+n0IbbC7xdSMa?_6==vbbWifnqaAHfWnMYkSS-D^avKO!f8K+;D6AeL(N6UA@`Eonsm zz(`8imOx8=aK`Un=1CI$5J%_gFuHnpZ%Iu>zNGIZ?)~_Ve*F;t2&L_2WcD<~;|8{^ zw;Oh1kH81rnF|lMy3mr|c<6Q8+2)N%;!r2jBup2wZrp)jB0)*aw)kM24jSO0nlDrs z+mg61wH&hbH$#tvL!U#q@XO)EmLmt_%!8m|Mp8hDDgZ_ha5@cRBE7s!`l(`vYPk|K z#w7G01_D%;ik!jP{m~ny`yn(yTSAX&Mwdu1oz)|=BZu%_)gM!!qB|KaV_=Y~S3nv- z2$pyZ(EvMCD;Byv0DW9Pa*4zd3cQ{czJ+@06#9l_;RATh8^>unRvZ=~G~Jb`m=2`& zQp2KS$0=q0g6&Dq6Qh7|q@>f!mVpmWA6!xW7$^UnBBJ$vH5tc4zKuvuPvJt|Tdn{N zYI2LXg%D&VEsmf9l%)o+>UB0n3kN*yBD?c2f@K9p7$^3egpqMii+Ev#=C9!uOFPGu z>~ik)ruNcv9+@3_E3o83tflbfkJu!uI$pgqIWlj_2F0EJLUalzy5x#z`o`O>Rz#&( z5$2@sS82?-kCihk?CYG14Vq1}X&zj4rcV_s@2i(C(rJ3ivtm`Sbj$~vpGh`Vvqpl8 zqUXyD76!=uUQ2M=-G{Q0pzqM!x$5c=kaq%ylu#p3;ufohwuCtrjXgbuwuRXn@&C^J zf5FTf){oj2KK}yqN1zayPfocw4tsO%eF;svC{iH~m<|Ev7@J^>pia@KhD%S;(UbQF zh#vzX#+_c8Gr8AC=Y6P$ra(piM#(tM`fwUmYo$LO>-`wJ3(CB>xKgwlAkZKEx~x0! zeI9HnT0=)o2+o}5=Se@%sY0JRLtjo3Z_9e5KF=v!@-~Jm4zQ}1-w9|J$Ot6QLmM%w zAA%dP`BJ{2V39d{h_a`DcE;}Y1H3NOE%!qyuX8%}haJPpgdrWqGAvxUb78bk!TE5$ zmd}YP_B%?|zcYir6?$Punh(83V;4lP^R*nkrr7@|^x9L&^my@nayc-1gt{6^JDQ}E zL9%3w4OMR%_OKY^DPL400USVbmuU5o1*Fd+f|p z|9hhjd<_lREA|JB*BPriqM(Z?2`;%^Lp(-(4dM+>z7CB_f4|Lenzvj_AE?WC@#R&` z$0y>F$glWz|J~M8Jz}~yQ%f?wQauI7B~$K)(U1H)3e{QVA8q%BH`KcR2iI_cPdAPo zJ$U3{Zt}d1&Eh!uEWBbnw`6*!M-8j{Dc@j;OThpJ_L&XQc!0`DWc2~YIfoqq_16QZ%UO#zbD}D?O&n@+z8sQaRjs?c2@67_Elb_1QrptWW zkx7FA=H;MsmG%N>i_=Lu$Q@gOt+T&RJ+lIOkuuGYskVbTCj-joQB}fSsB`0M9;!L8^W2yaJeFnCAcn{)Pd( zQ?l;#^8d@S%L*`;rVs$5r^SD%$1uztMa$y~a3lB*knl$s1~HimAjIte3jGR$**lNN zRZw#H4nXin7{bG)jNS%-nTIey+6&8Jk%^3ggFnJBX3W^Xc&-YQbU4IdjB-V- zqkZmiI11)&JxGu;dQti^IUOOEAsIS>yPO^T6*9dt6X`UxZM1>>W zE4(1!eg{~V+cRp9eG_MlLijN4#ACRR{y}2x$H4dEREJ7A^A{@M^Pf-|kFA7?6!}G{ zlw<%?K&-z3q3_OW3>9#fTBwAxihgAMOJSx8M1o>vZi0A%vgH3~?_IasIF5zUR~aeV z0bt=m%66Ph-6Bh}qrD|d%aoJtPtvi5z>pjZz#tevBqMRH?={Z9^DO64&Xb(F^}Ty$ zK*>q=xAv^W0%y9byQ{0KtE=lGpFNp#Q=Od5i)ZhA{P|QiO8eQdphvr^&q_Z4rafwE82q%*3N_Z+*&lLWs?1#+i@1Hyo+!b`Qow( zc^PbN^4{O2W_yy#{Vzga_A8`DmX}O-FMN`Y?krHAP~&1s@k z{jNA0q1{y5_Yv@s)-vr-+Tb(+Xz9UpUDb7Kfi@_BwwBKwAhh>I7m7lgS93UOR3QPW z57AmI$t7M#Yizbhk~#z5+3TIQ1vu=(;-(2cFWO&p-@DJiS-otB6gWVrwysjvS5?A z)pk8S#dr$2T~-p1=!PV(467A6H_5x=VoU}r3NBmRVPDW52S$d`-N<G9){a*Uxok@Og z?4$53=i5XK^XFnw^!I`%?pcT_M(Q+QYQQM3zTJaor2a!c-f~s;8zasTL>Im$+ic5dT;y4LVj3XpMtE~EFT_?#y<>P3BEjiiKATZ| zs>UADU9iO&OgE#L`IB`Op++V+g)7kTNN%wy> z-MNhKOrVkjA%+Q{+U1FL*NPPETX$*I5!;R>0K@5(|VsCo5ji`RSq%e_)13scwj0GM;9LJbSNprY&OR>@BisT!E!^NwKY`X%O z%MC?WkO(~(e1Kx~Qx0h-g}`kt0!tuD+&TdOf}a>{27g${HUPe z8owSZFGNnQiUwg9~F2bX+m7k)he>EZ_PHCixG0 zqc6YtdYF9$O#Rj$z8QV>$Gu?&Z{gG4AHFdY&y@`dpnkbH83By(ud9=cVBiaYLoWc1 zU%6gSr53`+Qm?OPioycyGtJ~jXcHqN8Ul?2dY~=lyx8Da^#I9U&8>_~^Pa8PIta&u zbM+jfc?mq|YPKrRi@8805P}Z^YmdtYX}CNT;+_)vR5vslH54`QD3~-meZca{qFPXN ze2&YVkyzV>Ng4nPLx*g%bEjGjo}eWjE%AP z2ddN~Dby&=ew$C<%|NiW57-L2p~N35V05GGQAMoC+TJ*>3~-Di1qa#qv<{Bt>U*b7 zJ(S3p_AqVGkuHd6Kza{2*|$TQBH zq9PZ?oVCuA)-DFgfi0;nPnNvfX=CG~YIb2rBcGy46@pU*h|UiWfAnyp#Vfw3l{;EE zD)swhF6_SKJU|~Yvm5nQ-b4}kNE@u5mZ&9jB)T=``J!Wx!QcyA1k8oio{Fo$?4U|$ zKUIDK3X(6`!uN0Ub^R!AY##Ix`XOD^U2`qaH>GmbQe!A<@|7@rNv#6dTd`@f0_o7S zZx~c31RN!hZJEkS_Y^a$Y@=}@py_sPnMca8W&t9P65Y->#uP@FM$H$$hK=BXPj4*8 zr0vYAEpyswE<9CWpHxktX+FnVAppYH31*5?6U`DeU0LFqn9Z2H!-0er%6R3ej4!#2 z3I?tj4ffbp;^D;sbAJY*-54zX>ElApFq>DkQPv@EG8yJ7pTenfU7gj%x{lB8LmuJ$ zf*mK6C!pS*03A3$*|_Muv!3FS$4G+6`c|+H0OP_G@E}bc;c?Rz)M)cah=XVOnjC)? zFeS+D(HUz=*Evm46-u~YPid&%@<^L^7wHX%!%*lbUk?p2A)C{eVX`SA;|IZEJUf?i_b?Bci}@XDC+-c16JOhPQc2Rj#~Y2q3zI zq7plQE*%V@hO0`pw1>EtDazG>!Q{BjL#)U(H7bhP) zP94R8pqwmS^EnF7C=-cjgJuLn%efRoU{Y>f&o4(o88@t)2nK|KQS4VGOlcB8k|+B~ z!a?K!AqTgdtovYNUn4(Iqf@L~gTti}PE+Nb&Qt3>sM$=}Y|#a$6_SvfxVfC$k*-G= zaeD*X%h3g$j%cy3ifMTaXdx*%eL&SM{8+Fh0mq!hUQlGUEwzZN>h~Zxkkb}PLA9k| zJKbzn^}%E!3weA}Rj>k3c{Tx@qr!9obaz&)Cx3u*#s2=S*VpguTnF`V9&V|d&+_v_ z_X;nfA=+*#6fD`;9<>(QL4l-Gob#Wn?MrBtf%+l=R*?dsIar&9O)V5su*ymy#b7{G zY7y7|QdfMP7L-!e9GA;ku=d6Ikv#7b?1i*Jb_>)q5ftN#+;r#=wv9bsfY9sTV-tD} zSzN)xtjMVkx#XWkso1bH=CE2v^Zckld*P!CN1L&+yiT1(2z8$7DvhK<;CZnf1@PAm z@E@5v&DvM;HkpE$h&xw{SeX3@rj62J{^i#A>+xPhQax0lno07<0ylir;A;;ks`x_D zPSpLMT^QnA=-Uf5d7jfLhUP|jTg%yIv?PsW^`fd!F|53W9ltQW!{_Xa!Y8)c0;K8P zYZsHFZzwppNPc>#oK(9TP6^7PgPT@igb()A-Ls0*z-6R{#I-?AD)uoDuRZ2-SL`sd zIdKWxocS>49s>QNDFWwI3r#&FE>LR&KeDBt)Mw?&>Yzv1B5>2dtizNjEcl~pTz{`4 zwR~9*TYXtcn2@yFnsk|*$B^x1M{|sylmlXdKF5$!JYT+S+iTUt4F#NtX?g~=pcb6c zcbX#MiMei;nGVtcZ+nhej*4*if( z`Fu$cn;IFlS!P0Sg;I!25EY_g#$l6J6zti>+-uQ%Xl{$cw5h9lb9llkA*HK|7Bl4yEbA(!r<5(rKR6mnHv9;rK% zBe}N)nx1Nh+VVYax%hKUf~gW8ObZswgqDo79CFEwI!)AK>G&c`jN>#<$%eKs*Gr77 zMp`Txcn_^g@C8cj`Va0(e2XxorXsJ`1*Q+>jFGRe^EHrwN8drl>{f&jr46GK0;N)^ z<)$;(Jh;n;0{zEgPT5eKr7d0V8();P0*muEV(=KR?!?d+I04N7bSkx6BUo z@>51$1hRIYR;OD(5pG=fvjptU#XgB_7E}{OmB^zBX@L)dgyC4QWhmsHKybYk--o1Jg zoj7xHHIpX;2O?%R=ieR#MmkT-B$FkZnxjoYif)Ul4T@up-?jLr&UO)GO>n%< z7r{}9-~P4L8V+Gus_Z6Ue{MJ7Lujat?$$dvYj*1(g6!ByfZ3s+au88o7;;=lv0JnL zb%pJEu6Nu`{tmWfl7y8}%>-55mM#$fgNi26Uf1TX4Q=?>OMPJ%w;T;`BA5qYC&=tj z^-AmQ)teC%F))cCi&e=oEa2zGL#7?Z*fMjeoZn0J)ag2OE z&8Mlp#k6k7oD-csnqta^7JcVm^%+BoM~)a#N&O)ge_1us8<3Dvn3D)jYAv7hU!0g+&CNbb^zBWO2C?z#(;nW2mJJ;DGhJO|`OObf~tXkTL8}GhkQ6!&h7!sb*8s{UV#OY?sqhPF!{ZJi=V< z9NE)iPWtM=L}r`SN?pLnt;FNGD%Zy#sT7-cz!$}0Nkg0+Psf^qgVn*Hng{oQQl(>7 z@?)KtybsJ}D6DR%&Rj#jJs!#})zC7F9ICr}vU9}z@~HKKbz_^zh%Axn^)Kns%w)z@)t9{u<;SWUnOTCjQxbql;bYa|njr6vbj- z$*jy0P#_q3#>>kKdtF5+<+Bb+^CmkTxAO@Z!Yj8DJ`}~J2eUGP|L@~;^oBtpgQ9~T z5QkUdGKMyPZ?I6#TW*3Q8I>g;c8zz2iDAgo}wGTzYULLvQc3G5zQ5 zSz0jT13n;@ zPg?g12^?EsL<1w+a@_wW>g!8urCw`O-)!<~0ig{1i|6Id4 zGMlirWTiZ!*7YdoHj%r*8Q(Ot#zRN%H7Bi_Zl=5c-PBx*1_H@ zZoxaRrkn&eh~!pFNCYUvXq^L^w~h#lSIf*|;E0!D&bo5S`Y$xh&}Kaf5(&|`jfvxv zny0Z8&|sDBknEJ;xCJsgO7IF!WvrrdUuCx7F`oxVJN|r-3TdIqN5Yl> z4?*X-emsijFuU>e`vVo~h?otms{w7Rc5n%aI-ZDW5b2BwpYTCZzvPXPI0dphD#zv? zy6o!oJM5tR)!v@Gu>Dngq3^3sN+jwZb`+JD;uh+>GrpKT-KOO=NWH|rIRb&oY!i5Q ze5pHVc{jKaBaSL&SiYZ(C3bnP1*(Q;_P>v#w{sTx#iIt(Rx=T!Q?>@+&#v8M51kN4 z-`vvpju<;yu;T`Ms%yTbokm+=BB#GZ4X!+#Sw?R5K#cj5Ro*o*vOd^$L3Vl9KF9mw zn$Oscv+asiT$z*8Xydn`|^Nm)<<}F!a7_cgG1E)q7~$ z8uqN#{TNccm+bkW4EXG_UP!6l3nveOUD66L)%!tvLiM7f?md#9PE#i2RPO~ki4nWE zOT>at^`680j>jMn(F+zT^O*{j3}1RSdJ|%bq&vGlye<-k5}kFN=U+$z`m}rpESj^e z!i!;sd24wNFmW#>yp>jF4C1vX%QyFp98xfCmvey!`wqnZC^(`l}D>ic* zzTU|wA#Q11Inh97i|dFkZ5#Udy{naGp=U|2c&`ucd{e;NN;zrKE3OI``Q zAb+d2n?J+ButvmKIAJJdt&uhuSp5o6I*^Vg+bdBY3VcD;!N0BMBzN-R#p0-%Q}X23 z*Y%QyGyU&>FW<%lNX(BoBP_$x-Q%7kX86NzhQjSq`({7!Mpt3t(dAQz%C1$ai?_W| zSCpvw^>yYBudk;uZQv3Nq&=ie$&3p}flY-l$D4{*2&L}rSA%hl!f*eN!)&xa(9JKU zU9QepuI!xH1A^|n8l#dZfbc9|L3LO=>IHB@YaG^;RAKWERPJI1G5Npx_YZz5KRy{O zH}LC^ANT+8@ylBS_z8mbVpYrr_X*yO$r$6|^p_2k>ENr8K9|)}P2wSN&wQpbJ#S7y z;-xi>0oER4&h`H5>ra+&%0tiP4aUl0Cr7H50icm0cAfQL{QC9s$ug_fGrp`mBAX~G zGo%`FQ6slBbXP~-W_k9?qx(0|G37COJx1L2qV}lU{-nrTs(S0wRP;W0)zWLgKuDMI zfCY14U<999SLdbzS+(9Su!><*PDU&JfoNKtjad;yS-5Bo_EgQ@ zz@(K22}i2|@X^q%+MKEDKr1Fti?{&s29N)KkaqqC{6u~LuDlZX9Bq&Asy7tAw77)p zY0k&6R2fbKc0fD2_xbX+`#0+(iuW5k6&ic1@(6p@aC-xUp3K0eAh&!Zf#I-yu^#v zfJl-hv%BHY`$1{x-eA0_pK(2PSOjtl0feoc6-V#NjaS!2mNoD&a;il8zKeJJ>QG6G z;qJXm0)HE(#Zd(0wZcS=n#L*9j7pJ*2L?YQH$Z*$hEm^sP&6%7Pp}Hm?@vEHdDI_h zYefswLI=Hbc}Db~ukb$?>QD9b#_Iy@+Y67dC$G*g-b_wBiZfI&4dxafUT$ax*asw^ zj@LQR+X6`Di){Z77^`D1LgM(mhbmK)(tGE<>^?v^$olK-_u1b0msIWikGI2$GS2r} z9_m9QUb#!FLG?{9iPgG%&(|W>WZrha(T$%_QtbP*uK$AeKkFA5mf*awt{q`auT1Mb z6Ma$X`Rrqq_4y?n_~0z1n08PI&7>1m)oYdi!V>NJ5d&8lmot}afoTjn>F-}oij6kq z42&~XEgM&M&F}bq->x8&hh~b$)!0`oi{1NOvS-qwXSN%g>&vV_Bf%ZOpk;3qQflTg;(|5h$ajDvc)PRM zCE1e~o3)QILBTPjwRr@xa*SGJNQ15&{XNfFB`K6z#O+Nqk&g{RR1ZW$`eYoyef4Gx zi~lhohmU>^h#{e=eWI|GUvn=qEAfGZa|N>QLuP`NFhOggP+ts8(_Wc%{X%>jv}9?% z((T%PYiT<(1hYXArK}N6Ca4bEY|3IiV&6M|nP^XnyLQ`p-SZe=%35!NW|4_qj?rO^!eg0gC~#}Zc00@Yq; zQT=_#3iWQ~tG43tg`xp8R&Ch4^u8DD9L^s5``>3*;04yw)HPr2z3IxQoq8R{Q`U4s zVA*-*pA6~GAM%AZav5mjRZllh$1y2fuX4)!rC*He)x3m5*|--G73>t=@>u1)4{&&f z<9NSc5JNBg&t##gzD5LDyGh+sy$B1n`g~zCkTB7{s*nG%@ZzLy2nr0D!U7HmKLnw& zCA9zud8h+He~ayIY(;jrk^IaqXiI(3Q-L~<^n7%s3Dbs&R$C90of-`_v01UaNuonv z_MO=L;CR{?>Qov2F;|-J-g0!qZ)j)|?4krGSmOmLg{#Cd?TEv;$FwK$GVl4Q5?n z=I94%>8k96nnn1FlKCbUMGc#&qWE9d3(jKg>wv&1d9v?vDPo%QvFWF^_^z@@&er*= zPYMxllSm8Kjclb=z-EkLv#@hVlz$Aj--8d&){)>qRDbeV2XspEMsq*4D{v3@NEg%dvrpi#l-QfwD>sBXw6cUPsrabF+oTgCXRa|SLJQP&jnp*|j8 zNfO3?(0fT4E#t+9&X>4U=cigiL&|%lzvJrFlFyX2LBL$@M-H-nVFrZ?px;O<#~p|= zKT)k5}9Jw6C!0vs+gT2C{x^ z!(aqh=WRF)m>CMFr5n9)a?KGZKB5pJLJHHuS1{~E3p5l(P(yK$i7kfe_?Qd%$e26B z-hDA>z@7Nr)hSj?gWeSvb%NY{8cuEEnrp@sJ(hxJce=$|Z%i*V%_JlVJvo{dnLWGY z7_WyNht}|^W#KM~atWkGq2umSNSc%) zvSrvE)>vzs6NK>d*HBon}IvNHKH%WwePJb)Tw4Y?y;?n*^WI9aKxuDK-8p zi+a}ew8nn&YFdv6wH6O%zk;Z?++a8QJFQEZ!0rWb}XB87(SfiyNLswJ!shskPLpqi+U?ihn1mLh^D#D6l*<&=JP#6oux zs;pwZyI@7xi9W42_PTYrNau6Tp%bWyjq3O##}t2At+0!Z&8PXIe;v3dx^%(&R!M!A z6XUeHMvI2uNz^npweFhMZzpP~ABvrJshkibn(hxG0-hKzuJV)OXECvjS^ahBX=61H zC9$%5?yLCK2L985R-P8en*_1YC-d`u6TLK)?LaYDKw_ev2_} zVgGzMFX7FP=*we|m;oT#p5^Nk^y46Mz$>{PzU>Xz{GvY?FLVLtgapg$S-ITS1SI1^ z*(lT5U^e;m9j3H7o&y13GMK+@i<-hmOupRvW`Fk)MINV+9!f9>oKNh~vl5zH8WLZ4s@tc&m9D6#3gBSxzmmhCNe;LQL{3qiy1Xijiyrt!Q z&$1*0|Djybjtrti?(fJgY|#?IAImtHoH`c%5q&NjaV2?&J_T7EY~de%s9NXDT@`x3mst?%EP(!|Cm#W@) zB5zQ<)kVpV_psWor-fBg+?Xfi*gL@^P#xBKvOKP=I=Yk|xbc1>CvFS|p~fk}H5>uw z)KATH*#L`rtR)xnH@@%bEI5pz{}O{5`X#aJ_Pcn)RzO45t{rLz!=c)#@$`p3QIIIS z5!1n5)whZ6soi`CTPDaDdFX(iVU9Ejepsx>i|X${MEST{pG=D7=%>R82qyL9uf@>> zk2(`sD3h9?|IR>vef^#!Rm8AbLCEf4Ks*`#p!h8e%$~7C;I)@Jyc(dm$R^@`AnhM zIQpUqeBfsR{GR}9pAvvApj4jYe0*{|85<|$YQAOP<~psjD}N%G9OR2<4~oYHWOf5!bP+J4*uk^d>1^& zC-&g;%NBx@3>FkbpJ+o^yG#UyW5?tur+Iy<0tbVn%CT%_X}nT)=%uw@>FGo0mKZAHRYCJ~f(3=^m336gny4h>=m)&0?z-+YbyID>zO^6INU?$Imw zSH1e?>u=~4{+k@8i3jZs(|l+iXP5xm#KbLBRjuANxb0<;aq}mZFFcBpOK%}7gnC`Y4(~Yv*`^`bXAK4iPaLm*&jh6-b1R=e! zV*PvR+pR=>4G9q30oZv0ykV$MHU~1E2+=|PU~zY1t(+FA+#sqIJUeZZ7vEC04=Wa~ zHIy*oEhna?NTf^3Qw#;B5}|#`(eE&evBdk#B~7mIWKQ#t+bMxHT#4h#X#>`zDWl<_ z2(zqJCS(l!YqE?|f&Lg)?=Ty$X2G);^Z@o zj9$Wt&yn*|bDo&*u9N)$&K@9pQyyuVD<#}#tMjH9rYbW%6vQBjimy|G97!~pf=!#j ztlAQx=PQ#;JV^TIj+xlCH(+|#%qqTvBPHPAT~?nWmHqVN)5N$AB`FNu6?h9%MFQ3K za~hZtv~-$o%DLer)m5p76y0JyOy7*zNzwy8mY$EOvB>gP1rG6htCaEbtU#^_3n1Cz z28)dBB1+1|4=>?;TN9YQeEqM6Y9|{^8s8i4eG=XBy&JY)kUj%#>;8Kn0|jCjk?A(3 zTqxJLuOCtJcxp8*KB{_2?CBES@b}2V5DwLJ429D4B$|#y$XI`DCuPkxP$WdlRKDl1 z4=moUKF0{TfVN{mbi>|IkJYlJTM^n9lp0XAHTj+THR4aOF{oO2JylLiO#W<#PbLKt z&GE3dD+MF`#AD9_H$#-vsdwa~9M53*QPdUT_s z>U{D$&D``zu~4)PV)D?)S9^QW@5}81X#%_ZwXKlx@=FBlHG2F!?r{2iRMvmn*4c`7 z${BPX)?blGp5l;&p1P1ePK)^pE$IL-p{!U=D2>y+s3-g1?0>WO$FD}e=I?WcjQQb? z%M%G@GE&J%P@%{$62!4k(nVUbpz5P=SW3j8?@#pS?wCp{9RHi5C?amthbU|N+iW=(|uH*{6MvZDd_ zoIs;JRs)#I>Hx0an6s)WL`OsOC!Xo_UwpjMe_F?s;GKR!TtNTji$3~;mQ=jPNOfkF za<+0aQh$>Qzc{duU9|d(!}}ocSTjGFU`p5b#d^awZ<@&X42_}c^F=v}q&ilaaJVwn1t0b%l!oE+MD(1V_Ii*>hi|bP5BUN)d zKcOpeqkY0WDKp}Q|I5kn;N1cW{bH;LsP6?>wef=qQ z^1ing1_#!i{zqdX7#edt{l1us1($2vI|n2Q2JTX+F@-H*UXA2|0nRDDs?!t4*o#b* z7)Zh{$+bT6J6F~}Y7ya(w8eL&Ps%rC=tKg5by{MQ))9(^z;Vtht-M#-X4D$K&r6Ek z>2@?|3^s_M*AkL=h`^Tm2JH}B6GaR2aSXK)~03lF?}Nu-Na~z(GWUqGA{kN``?%%Lt(~CbR_4v zO}D+)XfLFoLRZ?;H0pk2Gis0hz9Y_L|v2pADV4eyqR6Ty>aGnBqFcT(?8zR1;B%hhmFLB|}?O+K6W6R4WTU-7ms)I_+fWI~lVy#8V|4D9b17l& z`ez_AE<$7|3tWx(4(On%?u-qx+T9Tu={g}U$e`XYwjr0MU>~0T7X~k!t1ZGX;4@Er zQ{{iA@_GX?6__p~Z5WR4;ku{uDSin|Ccwpc_63Ir^*;1g=ff;4e$iAM&{j|Ld9)$K zfnO)m01iDYwm-1l@07cb8gZ~E0yldisj=`b!P;D$99+Rc-p#|6_-t}ycSI1xJ+NDAyX^POu_{Il8&1I$<=f5%m#(xF$fHcg;U1H@-^Fe)}Uq}WX zRZJXZ6K-RS$d~zv?+;A=k&M>F*`2>WKl(M6ze0tF7xx9*p&ZclABWF>7}Jhr+Bi^! zZ~KQmkO3?Ec8eJk=1J%H zzIiRCTXLO0V-p>*CU6Yn>v$8~_nSa1Ko8KJOP)~bC|+5;L0XHQs$&`m%^A5q(jJ1p z1g^ku0&V1F#81oW@cxtfzhW@?^8H z@=7!;?RBlhVkgjy`Uv3sPjl&yM;S3?lXRp}#l$WB!VsmxtMZK-sMM{3UYz+7uV=}* zpQ*+zf-4bWzS?`k>nN^`#v;_xv%I@OcM%EA)um(<-SB@0r<*PGLP z;{ZD=*2VJw```cf#xf~IUWJ@&TA^(UYU!V&UqX$kL$`BeT-6v>@bq0ZBGronP%NBk zG&{`Z<+~#L;qWUqLC@*N>H>zw$%M#!ajCmJ4$&}HUDzRPqtlx|S7#XHe8>&YDo!{@ zT5R#8!p!dy^{>Rhqstrs=W?1c4onPAKC1m?DG8_p zP7;C+mE#9js|$tbqayozv93JCAYPnaA}`pxDu#YgN$l}b8agmNg^8s^;~-^h7ns8j z$fM4xcjJKcalkPdkqj!>)gh1-e_2WX>p+y7Z5NA+C%9H(F>UPZ7ziFOuIO|dfuz&5 zvcfJ>;+L}ii|w+3)*nqGBl0M2mOO7FB9elL(Z<#9@kO=WY>z_fbwSAyL<&2xSWJ|h zDE#;3qNut-r=k(qUFzaR;n%(R_K%qPg{BVUOUo2`xDgppeQiz=6aX6oUYcT6r4D&C z6h7qL_+Z9$X&v&^dqqp}!&n?J64{7d0^+sm_b1_7#&L1>ZG{5*UbdIr!vAS=I`3Iw zCinIG;sM$-Y<@&FIaE7;R?dEg|EFplVq(pXo@wO>)i5$5pVHars}S% zIlE4tq)Nn5R!$LNVU5%&n2xpg!hYSE@RvljRW-jjK?9v+Cq^Wa05zKg2l!VOYRK&&V*riFt2o^$5L3T@v^j|A(jgaNbhGo0jY8yvU{q;_JPCgUZtj z{S$Qp(tj>@@2Z{U>i>iecf+@1SSrtr56nTl%S1Y1M~}`jW_G(XCuP~F__SwzGnn5R$7U!m>Tn*$Kw`me-|Y4&C?6z`?*JzC4; zAoPY`%H?Xid4$;TEsGv*-29C?Tf#|D zKA)B|5Z2pbu=V{hf|R~pzFUIWKEU4*lIn1u`j8SqWHYv9H6)jt^u{W%09pvt;xr`1 z`6d;$8oc@y>?e4OK3~-+;pSxeb&P5cwDUq6IkMo)r_L=bIe}489i*SAg#9N?|Lmy! z)?oA4^oiQ0hd*Eyz3vs4e(XCw||P)EAx=ddg{`gG@j zvK{$-MYt7gQOx>mUcZRxeOz5=o-xG%HP7wGwS#rn^Ky8k_0sxmQ_^Us0tu z%KkW(;;y0Pv_%m-xOS>wL;^C>yB{4`nx{rnENC*S|F#=#3K5>*wxrWJ zAQfID1m>l`f|6F{$eCcg<6^z8QV9v107u!uNC&$>YC}!4c-N8UAaVVAXHHqLY)04u0wqkAO(}_d{`~{!@9Wp&!F{R&f5RU~#mA!p{)K+S zkI}N4R@J*w-VCG~0)71&*5$_nXmwkN5bI^bF`t|QW z-hTuC9KQKt@WrHTIj${=YNw9FPdrb-2_65U`q)n{#0-o31|5U$LEnDCZjHYf+;8d2 z8JwBQys0xZ>4-Dx)A%Md!<7VkXC?foH-s~?EU6h=^djug#Osc`-cu^$^lFwGP4Q}t z8ab{pP6Ma%-9R%=c7V+l+T-lv26lPdicqMc;*syzZ6^{W*LZ-TQXY`I%ptN9N`k?O zK!#xn79^a{99o|0I`8M-6DW1~p#ms0;Z2_|Xvd!%aW*A8mLykwYO%xz^Z6kr?_QoL zz&68th&^#X+m)?PPQ$glx0)t=4YLpS5o&0;wK(;uuoDBbdyq};<-@94&s3M6;lg;R z)L1X7y2MS|#^a+B?*YwA`(h><$Ku%;g2&HzJ$f*9Op^sXpY7!MhCl2J~&`4QQ$$J)G=qpF7*yS2Cf z&1CPZiOkJtyBd+U12wK2lw3wD=pQyXW{-G+_tUcc8%9`SV|EPguXHl6m+VvYWJU*G zYl(1#IGaw?tgN<2a|}`;Jd{Wmw${i2guT6H#XNOB z7V~S4lECc)TFhS4_VKqpu+L#J7l;UT<>`E9X+dF0I_tPqD z*XP(#q!M#L(XG5#|ByH%K6_r5rTFt@&}o4E5^s|UbS^-0SYNqPxM5(Rb#($%T6=i- zc3WRW0m90mE9Pno6vXN`Akz=^S-C2P6g}vWe*$SwPcI#?ROtcLxqp!Ls1CV$>T2{C z)$G}=>Q#+RQ?hL6R!`C2L(24WSlPRR9>Xf)AGg%aO83=+D=*Iv#V7#T0j1M0ZEy7LQMmmO%OcsCSndDoM8MEhSag z4&1geg=p^4ZZ;-M41!arzBGwTcj?@G$nJ06w7yZ;a@n%*A4dYFkECcUoDD#KbDWFx zHH=qCBJXIasV}3A6g}FO^Vu`z{GLM$2FgeF%Z@(k1_E{o;E=_V4w6QtP@=YyZ%tgx zx#*JoW!$Z?g8BR3cPIsoIJrrJT3+7G1Q0uVdzcM!U7cmUVrD)yu5YdWh$%Op&5*+K6xiCe*%+XuH&M6t754PVC=Om_fp zh;O{E$Ii<>nMM|n&*0sDlf3zOIeVZa&UnUXT^{A9hb&n=UqU@=oAdgn+Pmfgn9eJ@ z=x=F<J8;VnT|kkDy5 zRHxj}K4*HsEiEeEchMD@&$1kY)6Y=v-mKRSDAsgiq*Sj*sMab*gwRxS8AwzCp6HQnPSX#Jn|-`8Dw=j?TX1VYV(g^W5it% z!(xI!aD#5q`QAOTxoId?)PbfROL0FzlrLIHqY?G59uA8JVSFN$)&9^47S|7&NQsn( zBz}X87?V55^H=g0_mxVKq?8~fu*!?c$?p7Az)dUgU2*XOwFB|>t-kh?ZX5te&cpq5 z>Tr%7{|L@G!Ai2e(+MbEK(N5Z;t$~{^v>*DORh?pEu zLGwM0gveIa$TsmXtF<~vAdw+?6qu?KjhXcmN#ztfu7aa6Qbz&H2G|tK>qpxoI8S1J zD#;K-61Logq8|uFxbs4yWwzyvR+GukJ0e0`>q$N({hm|^w7XW-S5(C}pW*U1Oa<>; zXP4EZpOweQ1?d>kPKLefjwvYy;0?w(%`xc#|3%t&n>THjMB2`iTcaBvu*T(Ew3cl0dMuC= z^W6&F$OPSV2WaWgo(P?JQa-)?_>l=L0n1-#eIM*FOOOygF*in&0NpZ?V5NYqO7T8% z=quv(=*G0BCh>N_#PZW;JMGWI+Aa<;T`i|fNh}~5n79*^B(PiI{gJ4-(6`v6QgUu8 z=VH6`b2zvPj>JZ1HdfYm8@E?}k>vlXJXyqGt~P!_oOp<BlP6zUq$cExxq{TWUvc522Hl~muQitz&&_I>Ob@&ln7N<&hoV{&EWIa zKD=YlfK-c@c6XJ<1drpG?H6WS)^h`iy!B+FCThoUdg=nR@7Sn>Y5MRHg$VL!rLocV zpUfD-AeiDG{0_Mnb0e)Yyc{W?_P3FCp3E>9Zoix*W3bxr0TRJ8z%7^p z(N5FlfNe(4+usRTyHkV9w*hi^J2?cHbG~gR7bU8YSPCg27dGl!37G_MB2bnk*!>auq5RA^@m)Y%A$P&a!M)kHKN_Gv zi*frRU~Pv_Ci?nS4*`}SH4~-w-uQ>k>$ZOlmZiWHFolj7OfoFV^#X6$~i|y}@#~ zx^B!VQVX)F>~Gs@;~7j_ow>;luN)hw;>NP%NW>l-aPU<7PX_X=``K;ze%1@!FMB$# zbsU7mIdUOI!^>bjPTg^o?3(pG-nW@4knEh@NJHn4$8p2W#66<1^eXtQ{rcMSfl`;1I<4k0AD$ zRlq0UPr+*fr<>{oxQJ>r#OiJsC0?Uo1qk(#sY-UhXB3yP8K8|BEi&`X;r2H^gln?v zkb3sQbzC(O!X`gbA*n|DY6{>io6mJLG7LcEaJox*W3iV@wFLo#o>z|Bx$hUOa|Cx3 zm6Xj*R9v#AL6y@xo$uzdbIT-Gw>3+JaO&ZNH=5S2gvq(PF6Q2IYMfj<#kYNi=8KGXmB`4nmC_7fT2m8NQ{?clo1mMPsZPoIoLB{BcA@E9Qx|DFH$TSq?A`klySuF657wv+G@ zsEMJ<}Z1db`-EjQX0=Di`tJO;hs#17_{s|dKmu!BWF2mUT1c;_B;K~J~QO^TCNDZiJVqjjMm{1u^lnI@^3fZvg-_NhU1fYb(GI- z9eY--OO@(xdYUg!66O3}Mr{yuFW1E}GYfZ^Q1D96HZyjR9rV6I^{@O~5_j)%7wX2%2<{ACNuQEe@*jdciDab}Lci^wFc@bk zb9S}f;@)7vw5iT)s?|`XQP9?6@kU}sCcc3`Kwyi}Frkz?X+EwZi{CKY*hedWL*#RS z<3N2xo~=MvRss+8__(4VfgZrLSsX7>j;DrI`eu~FIMO0vWc}u;o@Y6Tp&b}@=s3|} zL{~0OR3ZvRGg6)3*ZoeNbZ02eaV6jd%I+#nGybL^Vj~KJk*r6-F%n-TWCnH?b~`nm z7A!WHhgpdzYHy_eZCfz8ZUBOKewgH)-26ns?zz+P7bkLJzl=?R!;`2h769+=*{NsM zu%^dEbnFd0{Mwxi_^WN!@zZKX>AMkht*m8TtBnUU49Pk}o8fgfD=_|SqN zSiti!r8pTIM?52IihH#}U(FKT;`3}v{X695IOC%R_NS$}zxW~>scVnLc7sDI&e5NG zdE)hnTA7t@j9sk#V1AZg)Z93lZlEO-T9Tc(z7)Fr&(#*naV!nW8#YB-6*BP$x?1L# z#}k%Wjk8QKMHHN4v^=u_VT2M6*C81#V+q%{&O8yW9iST39Gv*9tcxMp$h?)^v_E(& z@XerAZcW0;_tA0c^qXjjL|)?5u5<^(Ly+h)gf5lSQ}N6^aqWC07z>)38@N+=aZ;gk z==U$k>5H>VS}ps@zuin^yYMBiG zkpA0zq3={pk4&oau5Nt^iN{9#k8+EeCL)i3tRxOrBlMQfFTer&R{x)fO|xrAZ8~VW z=d?7gPs?M=-s6ib2GhZlgBmLmJ}kDnD6Gup61jydk9g=4I4?bd*LY@9^~9*oX+&Ik z9gp~7=G!?X1$yQ*_cGhUHkw7zDt$L79k*(sI6-zv)Ka!U-b;hJX2Xg@nWoN3__XJa zQyV`;=?{-BEQOCv$bH?eN0QW0zYNcs_$fvF3`J)_`4_^kfdjbf_Kgq4!j9n)vmK+^ zu`LF0Ii0&u@^G*xlEjZEI&2u|xULpO-=^{*jhw7tW9MZG!e&a3DI3DwyB6Bx86|A0 zdy+8C4P(MbX4xtjI21)r%`u#_IKMv0m*~)@WXQVziyU4?`@z(q667H(Ep;*MXHd|Q zO1b2~wVab4#q^g7Nx%5U%Qo?G^@pNV`6ZBi8x8Q(JTfm<$M zO}%UK2WuMLUrTr!`c>MGL?gC}i-$x5yvV|gPL^FMT?HRLeWJ>4qbuu<`1}2sI?VfF#Hxo~QWR-<~ECDD#ojh=!K2`%VeX!?%@zc$MO) zIL7WLB~G2eKAA~)@2Ti~jxI=bR#FmZl>BU=9sMs!kyPL<>@G?miMIO#of|I&G*D&O zMo`CcF2B@Hn4|2kq^RO>18&3-)>i#pg(L`+0SS%N4PloGj#E0l5MUfSo@vH>R!9@2%qtI?7XuSN|zSGJ!B%^pyLH*jzDc) zzeoO{upo8xG%HvLgT~-qn|!^gd0oKDUC%gFexGHCd_EZaHD02=mlbrFa?RHEqSn?9 zG(=$i`s|)+>zex!y|d8SAW8>n%(n07Eeki7p9=@!;MP*;H-W0Q! zm8B9;N7>-B(8Rk=%Aa_50)>#0(cO%3(YnU%mNF2;6gaki3wFo1w%H`U^sQ_$ z`lhl~cD#zx7C>S*Q>yS5P8pafWMtu$9S&6|Ew@tmnRsO$3O<{mz^54rL=+Y6E=Q_- zqIXtL5=nC#tt?V{&)X4x5Z<<@BK2L>5~2w5FFFwa6-*yA-Pyx=sa}58F-6`c#~8(U zyMH!5hAO=YhV$t)J={+IzP>>jY~1uA8jdA$Eg$R_Dkp2q;TIp3nLah^zX?x=uTy{ys4LaCGF{&5GY_`l$ zHkEQ|l!y?SF{Shxj7?lu#dS0evDLT3O(jVaRL5#Rwkzf`=XW?kSx)!nco$Skrea}d zT1ZuG`=MTK!@^p<_k@nNiN>t9Vy8eU#Bhb4`Z3ec?!xd58U>|PJ1ex20|t((IZ|BE zfC@p66hrZLOl;<3HgH&!baZV?CMFaLKd(R(aMPJ*ka*E~K~wX@OnZF?JIvy1KF z(OkD3soFLfu_odr@bM%;WL6^;<~q}FKs?cJQ`T7oEmY3TgG5aDTz;+@3W(`40j^diQ; zZt%_WBVH7KJT`nVmMxm+QG!a@$4JdsYZaP01p+_Z54qkIWF36El6GoMNsm)x+>DD> z3J0w4zOC%ov`!^a7Yobr#3RsK3_@ zy*w?}Bzg`1-~R`GXQu@zm!*kmuCtg<^Z9f;CyO=9?rCU+>(W>1SkuYyz)(!1qT!-w za7w!+g=&+?gT`mHRagU~_340BAgHV`_sE*4NIH(St)ACpI2xQtfsU)^Ah_ukiHs*mT5Jp7l&4*I5~w!^x$}|h$je>-Kfw(i>{&R z<6bJ1p7Ng*2?|3Bh%SU~viLQF>1lZGHJ5XF%Wg?g4f3B=W*IytVF*fCl@!!eN0p|t zBXSEg6w6k?9kn%iw$p*RMPqE&3R#01#-jpt#PmbI@y9V}(uIVtNLc=KB zhRJ@Xo8;r+!P%-CCQ&_s5ai5d=Oc*K10}0C6CBFqt_sFIaDg0;T_EH9V9lV!^@5Xu zeFv!T-zXO+I$U3q9j<}T(bS(7C;9Z^+jVtTN93Q48~aZ^RvNN?Vn$So^@Hpc_KkUK z%(E=OJwvUd51g*qeLVseWL(Pd_V+*p*kG%->GPd zu?hgwDPLPQ7Gq?~ztee3h%88Pjeq^hp=ddNd3;}ht~^DlLCy^DFJI82CT~BsW8(m^ z3PrW);bBSr^}DpKb7E7pVWz(l0B<9v-YR3?A0^^TQirCVxZQcWPNNYvK8BvO^)=s) zH&?@FT>MSc?j6b!Yf)s?seFS2vQrWXCTWR{PrEfXJ}x3uPgOrUw33iAwP1r$yIXDI zTZA0-ynT$&P?dr%jpP?8-PacUxHHL1*jN0J6ZX?IDuWfrz@cT}oh`i^z^4*~e{z^u zi@(L#A3l81eq6xBS!Uc&Ix#H3fzyj&)?)$*4`NA_IoCzWSUdOxBCrW6e9x>u5xjOj z4mc_iG)BXu+vvi_!V_Oc0M^LZQfo%Y!P#3d?ChgvnO2ClUg}vYH~O^P&Kt!7-YgsZ zmRciHG%ny|)Cv25Z_u#Ay#9ur^R+Nd{Y%VoaOrU;mC5~{M~&{~h*QC%x!6Tt#Awiu zDdhAuBGbQ6nX<@(?^DEh$wi}*W?>A7vugcLr3Uh@CWhIAd0h>axi^;dilHq8$H`W< z>u1GW390(xfLm)lG?-LEz}xn3!#{WYYb5~%-y%7L$Y(jb7m?kKyEC)K*hC${;s0IR z#oWes3RMT%(zLyg7pE3x58y|!NBn+pMiU||u&tOk* zT|_D39pOaf*dQ00gBu@oadxV?T*W+y7y0_6T#n|&@#Y{K1(mW%cB`=>T_ZX5^tnnx9j&K3Y~xLB5WI#yr}tt#VjFy%pz-;vvAo1rNNNfJ!!O(ah|K|n z<^+u%m=M4iC>Vg?e?NW<2N9`2aTA)TB2s7SWcA_hkG%19pwV<@*H@GnqiJ(O@Ab(g4!l(>-XXSK%?%2R17IAoQZPlxd?Q&w z@CE1o2-AI-KsWVwNKQ0|7 zfg$DYJpdx>+%GAQL>c)&R2q5DWZTUNLE?|eWnh}iN(qOn$UBGYQPk?mIuWa(d z9b3xls}qA$$NAS`Zy;$?Syk8PC)JY5Jtw{RQ#`v^km{tEQ{!^@nuI+hQ(%jnomPAK zTZOA7!aWc>1Y|$XN76t>z9v}}nS*hManr870En#OH|$5PQXFvYC=uFefijZLdy@_XwcS!l))`#9^44(W+Kf|ll}|8wQjAj zDw&$0pUv$wT=1DAJfHe+6!Yw%@~WWIH@WP2rHEhnFK1*OPx(DWVEPHUSGcl(onn_KEC6K#C9i^ z^pwTx??5;#X1zB}V0vPz(CNyfNlDp4Fjv+He9oo$*`#_$XqG^!%tBGAN8YA7+AJ?Y zG)BjZc>I3Eck-)Zjo0ouWo};1*wd>xN6X3r-Z^d1YOa;qm2UGhl+>|dvL&bgctLFy zjm|H!Ic?eguzz7De%EIp27|%*qI~E`CQRqC^H-yHZ~uh znqp90yXNt-YrfxSlw<-g#7G%mY16=MRMnVq9$gIRxCzR! zTipT#6)apt>*&6((q&Se7+=702Jqg%Vr$83{zvH8rDQCsAAw>-*UkPf|FbVlaXKfb` zxlLsPgYR(vHx4U(%ZvUJmiiRy98=gAbYz-Sm!wC)Vs$*9{3I`ppOT2@!9|kE766bn zbNP*QY&Ui`iSQwOkj;8`MV*3!+OZEMLA#=kxN3tuwx0rLJJ3dSBCezDX5zRte9n zmzuAV*@$$xR0ta?&>WfvpZDce;_~1VJ6d#!u*MG^e&lbk>S;VItEbBe$SLcy(MUfL3qdcF=FSQsJKlb&r|lL@cd9|p zhfgmR#3T_a@fFI<9?cXwl1}y;Ia#oaA%+DorxP(HQL$K9WvwHdd1n!&h^E7c z(~zX4tbE2c=)lC;W!_~h7%BSaUGlo5>cgJs+G zoc7hzf!uI%L!x*;D(uL!6!nIBgNZ34!Ni@D0)^W`$dSW>9zTIg9b}>N&oOw+u|~ew zSTAROL^{9*XM&!&-My0WOqcio4kL^&?7(C{48Uf>vbBX|6JQUl#Ep?yT%AvtL5Q&{ zpZmHZ%$bpH7b+5~tv$^PnVGd~sp6HdXqx3e9SA}_*1oAtdfKwVG&%{{PbV9y*wZG< z+E1GnKlY?8u@WuBt+S$q6Bb*sCvu958+OH>lp~$~-au`;NnN_TpF#Rk&rVX9dQxtu z=@p)awe#8!jH&Er7gmzEoAn<#W+%>U?QvpKb~>@A>lqWDE^D*Nu0%b*G#Qwv$IbWej3qO#1=zWjEK(kGB(GV&(ewpXX3k?S(%a|%O0rS)y4YacJ*)wk5)qXf^ipc9v zp7PM}w_qz+Jc_lJK8K_AlPLx6@5$?+mja`hb*%8fuf29IMOeaU@pyJo4CO-}OUZjU~Ao)iB= zoctNb33h$!N!JFm8>Ao5`2u{kPqWp3Y@%HQfAuo7>}il7Ql`AEHo!5P-iVdZZswkb zQni<4PbDG=Trb?JzQU@b+hapD$MZ3$Ue@MPj;SY-d#jyNfw!?f@n-g=5ld{}?bhU0 zsVT%18&4A7_{H;Ml{bCQ%pfa9+)U6-dAO_^UM^^0vCrU)wAe1PTavlT=w>$4X;ogdx zeN*P{-()SGRlZ ziE$aDk)kma%#0(P?i!FPDye)DDc)%eg|i=32r~B7Sdt|C8)5u^$o8K^wj=8Q=n7;T z*?KI;fhx@AV3@N`8-)J ze1GuSiJWa!!S@A=_hq%M+kll{CHTJ8odoF5?k5vykQR+C!I@( zF*}uw$_E)OmC*l4B&sru6KZ#x+*6(`H+`pT%4KBK8@&4R&A`vU(-H$Xg_ba`kS^&@ zAuQ!b)!7oy-+w^^q1H%-;Z8V{`l-nOS9F3h5HP)l>g2bZs0DN6@?Uj}BBMXvh9GXY4Llp3IF!u$&6Y^0{6NVO$F0fS+~yQ z9~TySr|aT4Wq;g)_C^bVn6Za#x)QsnO?yGcJji_ECDN?u4z*boCL@|E}BElFgcsGV~YAI~v zl&pz>c@|B7l7uG{{9dQ8Mto{zA144eF6IJFItR4%&r%%GYfejfyhDVRq0ZrLL0vckBG5r2&k@*sTE_vyrmU1z-

Vf7?Uu<3c1>G%!#=>Mc$x5bo#Szo68d&x*}yH8WR>e=5#%y!+KJ)CB|C z$%8;-=kzj%pD&0QVX{st{O_0RnV&vL4DGpVw@gLv{KDU@9WZf~q^IqEEV`D)dGxEs z9eky=XAt<&G1N=OAF$5{NK8hm=lcV=Vz|6ct1c*>RVu|8cd)=kvPS69A4M%$}XZy@hi%dDuth(s9K5 zmaL(eIs2irj?A~HFJel=iciWUP;V#bQmFq(6~vuI7sNkeF}7mz5izxx#TGuhCxB%K zy)_8BkIEX2dYb6}n%?%}7Z%p_x8X%eZ*g-VlH*YNpkW~2+Z8e$xI3NgBjeT6nBE&2 zPyX><<+Ud>G%H~=gHIF-His@3I-i(L=Tnc&GPKC)*$0FwW)hiER%!bF1HegWk)ra% zy@&;dMuKWk-E`wkS>hzB8`ouTQrUQE@8U0%nxcJ8T}rB_!-?DPYV0mKHvCk764k8* zn}%Puj<(Th$VJ#*ykHx?5Xip*zIIiv*lnfyWcNGPa8&)Vvyv(lKy|x=&!|mGG=nG@ ze7e%7yZ)pRlyM?oZ8v^sJ+jl@NG5b({^f?O>uVi_uUwFLNFG;bXtVFdSY^BY$o|x( z*wy$8qU8Hu#%j#4Ife-9@U{k5(<$zc{j*)|>9J6$TR zqiDD=PF+pe4`_YX26URu3LedeqLfXiv|UqGN5%6J9c`7aQE ztj74=?Nt4rgZe*5>i=xjpY!cSb#{1Gt_q804p8MyAjb)^U2U%H9FY4F7AVF75C8vhGRHUu;##8OW&YXt9)8+F39i7+@xhQ@%4)^ zv&e-uUId-Qvz9?aeE(=?Ux`3PK>(Yd12gV>;mI_G4zs;<3v`ymVVFY_r5I>xnrDdf zUiv{ZC~?oYIzEQ3QRv91Zn z6XER%yp&GZV6aI=VktxH!-uj*i%1nC9??yUUyh{zkrTfI$oRd*QGGt%L`!bGs@dIXLEy-2`!=69;wzC)u4m2 zI`f4qGqsV0dKllqowOoN`()dR)?d5+WX6|oyz}8SC&6W{f%0b0GRQ02+@mQ89dZ-!IamsSnB9`LnUH`Og14v55x1klOY0Q!-ni>DVULQy$jWLI!%aB+w=2s~ymDmm()mUY^l`74Y5?9i4v?0P>xA}~nOMK137Eb0c!NtrL3j(V& zv9o14hT{!U$RgZ;S!l7N)Xi}CB&kTwBJXh8CPl<)=bA;5PFx#vK<^MgIU+!HAfW~; z+xYF4ErO=58}=hXIyj6A>0@G=S`r;6r_(rXFZbCvlUQnp0O;%Y8G&^MyC?{DZ1P{gw1z=jL&XD ziF!H(c3ne*wC?Zm6@MBCu7cr z!%U0RhR?3jYiE)5HAH=?;~eUpC1x2L^KmlEt|k6p*sDYcK_7Yk^1gb|MF)jlvuU?q zCdE8cva|yUj>JO7y;yj+@J#f}j&3U97$V@hIoBitVW7WB;3oDt<5?JxzhRIFi2~u? zyITeRR2M~dC(kgv)!oAmky_@o3jK8O z_|hXGgVv@cdnXbqTQ%WtB%y(A(@D}>kZ8t#C)tlQGo{)$Z$|c?242e!*BZUe31APb zhPpUr=(aiXhgI3}#Fn@m;u755^@)~$G^A{ZmnNsYPsdJI3?;GjSukZ`D`J+3fI;pv zIn7aZ((FgAdlfMwTO%95^qt8_P+dLKyjJ|3puM5XVfIyMFic;XHYWKe#gKJePA@^n ze*>=k;WELOjd{?g@Z|`9Hh}-n=g;>NVwov28eN46YaD(O6UL{>yY7>jH2WU^R!n*a zarQGJb{FL0)8@YTS$KRD(FFY;#pCD2@jrycx3=>+IQ+Zf;srXz#!iL4P72D(bJ8SbIJ^J_0*rUji)9q2>&rpp-L6>%MkY+|5=;4x{5orWE`$noc zmi>2YE{>hV*qwk=4NmG9TZ4;oy_zIn#Us!Y17l6BtNHUKY)WVaiVQ6#c*PZGNl=NP z={HukN-Q-`x1&{;mNqbn^V{J{HAnU)Jz6~J00LE^uo;gS3fug)^-1PsXUU7<+g92Z zWQX^qfyeB*+tiaZ4Zr2M2>z#z%lm1^_K&%2-YDj=z~AQ-nlKW>^dj|v9PrQ=f8T%k zv-L72qkw>m2L0|xdgQ1DQtrYJ#>iiA7+(SnXE#Gca_3`TdMgl0qjfHt>+G%02Rxco zqcZ*&fJBpmoOq4>L1Tmox?DUvEsAKw3p|AarEDMEP6fZ?OUzeqJ(L!&M@Frah5$oDjpz5LpePtPBGY^@W`Oy4jQD#7j~B( zTIdA8k>)gx8jsP);k#C_Pnv@$GiAA+y6qGc~uj)c5O-oPegT51No~D=44k=j8%p z&@M0;D*h;!^Kz*}lUY&J+cb-!!{eivg1d|GyO27&NTil)FgI+GA`K+&54u7|Zb!yMdHu-jQ(qBeDo!esq#evUlM9xF^eL%P^+j=8#O52O z0$rfbnYnrA-XXOtBf< zF%|a^Ae+)5naCZGls}A24UOlsX<9m1{iHUm*mRWj%lwEGL}Z^sCsnqDhxa|)(cQ!A zzeo1AYc`N8Z=u{DLNrRRkLR@=Yx+C$o+dr!;T@g2mYCbpD#jbJnn2yT)sa_waazV* zzoC}>ho#R&STO;iJ}r+o|5?OMZYdfjz+-}+Zp!xx6P&Qh8$eRS(D(bC*V&(6K6@&_ z6s4#14xJPfaR=(%2jz7&J*Hs#{sDt(;=yc@^UzU<#WNv!dI06NJqT9}@@s8SAGzB} zZB(R|+hvzZ>hV0I#z@`*toeNTG7m33CX?*RaduH{$!Rvz89gYf(;66g4io}XVU6!p zq)`}6oe@wne?znAA^?kM&6zk^>kgX=<*E~x(+`9 zbvTz|$w7n_uNV?9z^KDybAT@ObnAnr0``D2zK_R3u+XQ4umj-`rhPf{@IN&*Rn!~2 z4#XD9MS&2Uy4qiV4&z%+=i3>x57mT;SL6i(`iEGP#V6f2L2ybDejMwAFh6Q2K%#_~ z+J*QU6~TsNDhN+x5^cSk<}hh3`w4|HWa(NZC^3#tj+UGY9pz!p99!^aUzV5Eirc|m z<50ayT0RCjV%?LDIl{m3Hfyb+R7sh$k5SJTurJyxR>hX zXCGnYZF0mK?@d7uJCU6pWar>&$T1`m8G;+3?Zt>=|3+0B-Lzo%ctPCI69i2rtXSWX zI^lhRdU__n+eq>CRL)t?$ON0#7AB9RF2;IZ)G-LDe%Ut{7N+eaO@u_^^sFlCWp4wr_WOdq;?yBW zKut|~1cMl=pgJtCQ%oJqi%4fA8y=tx`N}bDvYR@I5#OYti3t6$e?KjcfcPliB%LB^ z%&iIdIl6FmX{XMgHr1@M->~Wd_B+&9q26}9S$MvN>~8{6$-26DR?W8af={Gg2`iX; z;*eL?kG6}&#SVbmjT50xK~-_-z?SbJDV+wqym8sFk)^K#jfLn)qW* zk4xy5ACb%pb4w=n;jwZIq&y$I7x-ht;HK1ErjlHp2geCg92Yfg_ zl{G}ytWT@6Q5hkE=NPL?^OTdNCE7b-yHHDDB{?aVLTLtAm(X21@2PrhyR$NUVv*}w zuoREwO=~5ql_VVjYsurV()&>;Kgf|z*t@%AB-xDGfz+80gXq<#MM24E&WiawHY7zE zk!>{+k?$WQ6!_%YAPzLCGVDouYl%~GDc~+qD#jNaJ4jX`Aw)!}n5ZV+mc?SV3DpmQ z(cZ2;kCb|a4ucKW-yE!vSw*MBD2Yz`R|DzJ2KPTl^X)ozfgVAaK3PZX?}r|jzv+j3 z*LsYgRCv!lf>I zu3FsJDyV&yuTx0~-`XP9!6?J*g;~8_dkQG-1~LvH)>W}4oeeBlRPVg)l3vi7gFsvF z$z<~9eZJ89?NCdXAKX@hewWZM#p3r8E&5#o;HcC{eHpy&c9ZkZoN>XzXP9wY-T5Qm zuDh*MatSmfqC6VM+4QuW&)^*2qWOG@hZ)}8j<<8%1~~;$X6H}S3DpRwx<7|g#~NSd z%M)N7*gmd&bfChGK!z^b(6ASBw}K$Hv~$cZmieNbQXEp&wNCS;=vkp@cwHWsDD$k> z`2~(pD)8MI7NI+}jGVp-)SA$q&ZxrAs)0Zg8}+J^(j)9n%(d#b&f@;4KoJkGc|efY zvx%We3-(eor9}ZNV@>N`RRLQ!cHc?l^y*EwOFuzQT-g$sbELI7c25%i;BNkM`_FFr z2M>UfI2yY~g;XjoGG=y*vK$0krat&0I0*samy1gg44vejI#}#}(+P$SgmLI-4Ew=| zgWkjvjQM3GIs?q~oO?(j*blj7mZ-bBT9@yUUC458xI2z16a3KUzY(c9rYvZklQ3e5 z&z;hb^n%a9p(VtR&9@&3OSG5$xbZ6;@Jisc!ZMU#SzA{@9r(N4NP%cq5$mWk`=Z~d z3`!)5CA_^D!zN?yrT8`qc0JN~S+`K?-f5=UJr-BJG-G>$EQ{?xk+GlU%MEkq5z9n# z)U-JRCtu=>WNihTb#=qcssbmoY6<Ri{oqI zsXaQu>hvA1auLFBpGuPNSHy zIgrz{+k_o!p#ML6-`<`$j_kdE=Tmr@^K7Sgb1~%7o9^j38we2Sgd`9kq0c&xq*Ceny9DcKGATS`xB90XUB(wxVT-x`oN;3A4=qu=Qz1C% z?NJAW^8@+;alRaq@>T4BIDa_bxTObvrMMINjF~SCA6WARlD7(_&>Wb1DZuri*r)LR zmPE$al+JpFm-)2zLHAK;|NaMS|L);goX$BPMdRhRrjI_02HonTc2R$@OtLiScD0{_ z8tX6O(Oco~URP|BD8`h0GRzQ7<%7DLH|?q65XW-f^h%SMmyN%B&dbSb?hBP=5e8D5 zTuhFI+J$FC=H(#tx_Mdf?!E{EG$My7#nVG7h^*PfQ4GcLL9tNaWM{L z0G*eGJk~D4#T}Nz^T2<*wN&4{t*UJY|>YoKl)q@vO6LLqOcv;6 z_&NB844-rX{+^$YH(-eARj+AE{%SJCoAalV#s)EEfFm=ltiG!B`D;^3J4YK3MgTFP z&mHrpfv8BR9AZFVj)`f9d5|CU_8I%duPC;Wm3$Xj6NLR7Q^6pb_&~VTGO3OfOA>v!F z`(M8!(T;g<433AJ`um+>uMEa?kTM)=^S$;rjYLDHrnMP=|NWa+B)LEolY^8;E|IL~ zAhGH63h($id_n!ax2*}`o(%rI&D~uNWYBC4??-ilVbE!rgPzm78}8zCtwh#OT{MHl z-}erbhnoVc6eoN}cT675Af-A(K_DVvU(qf1S19eTJ5Jwj4L9HIynFvu|21H%(1i&~ zk=vv%;soIjSM*2;-4cCuw>^ZqhK%3;`r=)V*I0OcU`r$1rXJg(Kl<`?L!6`s{lZ)r zdFkM=&>NHm!U2r^lG{;|BjnDfZ;ve=7 z8{Oh|c5yAx25-a~Y(K^icM+U( zmu7!z*uX^9@?1DX|3-p)9@ctcF5R{&+{`^14Y%qT3V+a&#b$GOp#XHyLHZ1)I-kmQ(bcE6BDi;9m1FnhgA)#W+Xf@tCWoyA4rdGvZhBIBFIY%IGP4@5$OkD~lu(t^99Yo9 zF3G8h;dF5+*><1N@#J{^?n}4#)GduW^`1R7J<@Hrk#O4~l$-<6A~kFD@ zQJ*w~Y3xX%ZMtu?eQ!A14o$c1(1h&FBJw{yF8x-zOs8^b__us{c~QIuwlC$n`Hl>s z0uPoR(kb!+DNV}7=^A)1xr7XW{OhlDIA)O@#-onBF%ZsG-p4c{$rqO1r~biyKW& zLPCS;-O1cOYwz3|MTkpnQ;z+tQOo(Sf4N3fB=Fkld-+7ATwwpzHwm_oH4h=pOU#6? zudJzxm(h@=DnfT;!|dhNGKs31ss%NI^9geE1^YpLybEyfwy>4HSF>gR&?dp2vhtNe zY{0ZcAH@Q_-^3&T*ax;T8~weT3wiaWOJ93wYd>QF;E%uk4VoT4?t%ih@ksW?du0gO zMw2jf8sF2MQ)r>X9vj=pDLciYb+>~p8a21Gjg3(4YHTfpFAU?Q^n%+=I_ zf{dgNV*B5&kLIyD z5_sKfTU{DPp9nlLh6cTEX${CKoGn%_77 zoGV+_eRlTVxlYc#?zLB6OSQQugCG$#2inH;3R}kkNjt+EdvLS(w*QZ%rPVqPJ|<~z zlpm>J$U=2r-P8VZ0!ImkgNP1*-NhCc> zL^pWg-?-SQ#H9u6wD>%AJS-2#7^LJ9L@}xi8%*$uGfgT4qkN)z+Yv1H?C`(^Uy9{+ z{oEx=f86EhgBBki@l}EQGH~A*L9F*R>992Ps{6@@otYB!@X&l+*cK=)P7M&7@mGp{ zelsFGJuz7ryQav2;mT+y;s2C@A>fj}kbdeie-xPPA#7FS5U-DNSN98c7>m9gW{Iqc z6ZV%)!VhB9UF!_?CNz+U-oP$@JAnsEpK8@#RNX7h_!?F9Yn1n!sXE6+B@BcLazMOyqPT9-^Zv5dE5~h@0zxdyv>ZqU3gT8nLzdDR!uBITDsf zD);32a1L&K(QwE5x3Y`@4rFZhN9FVXm)9SpMe-49q<#4CpM}zQ5K3B zZ-f1vuT1)ZhAIdq{7-Ez2td?5;=L~*8xc9mw2!cc6Fnf#JzF2W$`CX?v+%6>>34`{ zh~Njn^ zpuoVE{TpI*bcu6gAsr%R)&z{OLD?Os>7q&PjP@~f)K4wZHqr!Po9=qh))y5`0(B!4 zeGsLf06gWr;zIA|J3jUlXxC}2`bz0iXSc#Qt_o}T(gvxYoUmM4vRRkJHV}Ud(Hs<} z2(*!OA`yM87HoQo*=fkrqbT#2F*rkLLS`G_TUvqr$yQI1dNa4A%s(b>N!JPWNc3; zm|Dl_uD02|$v4}_RIH=%rg@F8_C}PvIC!(jOi*kVdUnB(uZlbpxmA^`-;IGQfZk1F zX|{VhCEUH*;q~r_LYVkA+Nx3T&2;hyylvr|Jlwdzy(Fq*kNByJ?J(TaSyfxBQEI4M zq@TmQd+kN~0_~a_Nd{z6?lGMDo~lfF_%b?~U}m~^BdR&uV>#AI?C1K9Jb6tfyHk(B z_}NsVU>C%f8=b2AKom|WVB}y%NRR0%T z7&%_&${ANt-<_K`FtI)*Jh~xKNL~iXSn`_WDptY^4&A{T>B?fQ{ zKFZ)&pRR80F6lODB^+{p2I4e&L=Z$jZ_c}ZP_+S~yB{GGg*c-*dC>!%LJH&DebKWv zhZKgOqx8GY!29rsA@t&G04dDZ`tBkc5k4D>@Z>{)Y7GD0BD&=es8R6ySn5Zp!>*yt zU(mEMB9?1+TyT>U)Dau%_y-TgD> zgEbFa?f}7h*EV_!p&3Qwo&m`Jx!kv%jSIqQO8akVpt)zyTeX1W)bh zj*iLn`xkN`RHna{5}bc6?`%6JX@>E$lRL4#bB*K<=FS5j5P#EfCUv#BC=A;ijyBkd`h-?f9eYxH|&h?eAEGN<7v4K z+X`6<)7svA<>?k3GrfR}X0A|phja$yuThharVOD@N}3t7#bf?{f#Fyb+l;%kzjm|F zZrU)tucYI{!p#~fEYLh)Ayiok+*!5kW5fL6I}3z_PRew>4PMve#fDrTu5qg_G#k^c8(gyZzxXbiN<@&a&-Di)gYGY$# zO^#DsFHRD)NSCwoP3P1!TOYSm#vgU&;6rSnklJCi{1*_G2XeXrXdXGbiI(c+C6ea{ zw@HV)4Zr0#Zxo|DA;Lkm#==L&72`!po`2o6cA3+U^sl-3?sq>6ku-X!Pre1Fl`)31N~;e=8|u5cACpSL_ebD`_|4SGQK1lOr|h1_4Tx(-!Ip?W7fatbQz zU*GvEe7f9LM;96N1FjgZ5#ILP_k>dK4l%3zY60F(d}kS*j#D!eM|Hz zk#ejv<8QKIVFrvgCJg-|63;x-qg$Sah00Qi+AWUjnVY220SeUFGTm|Lj)l&Ft)CiR zamF)I+>k9Qt!?}o$#7884riNmgkS1c?Rsr?eArV&qhGcVum%-@$Shh7Hnu=^?MNvw zdm*h?MhhmWD6t7$u{YResrvvNch}>7-L`%+o+yE~XEE+x& z0c$?CoUm|e^4D-XoF%Nx^lXnLJNxC?iu_15mk)bW#76dfzm`o(s2s2)dXYy5p(qoRIo|aAsJos zzsR%LF>GWA8usmpV?WT#1cI@tU$6B0UMz74nm2qvrAsC8OGX#LVg6ViOQ-M2!{rzW z#WN1E=KEgfxA{2haz943l!p_lM%FHqm0w$=5;mJAfp{*XqXUWc}2L~s^k z1Ny2v-?u{e4jBx))<{~dx<}V8&indO2}Al4-P!=v&XKKNBSvNnjUd&-KW{dnS0wMT zUJ^R)$L;+7GEl&m@t#Q$W^tJr289a?)MkdZ#Jxoyss{A8O7+%yS?*_<5;T-(SSu_& z1-qVQAzItm-DtM0q#>DtHQNGbZ&tjw&AKSUHBBl8NM%$zdS~hQa1#2*TfU9=BW#y~?&UtO4Tk2eS2{Z!!sldRA~346XRnOrsva z#yTD;y;SzW)nQNP7aaM&+R&Kw^jndNV;+|cKYv*a1I#|dbNvPtTb#2jpWO|TXmcF7 zT+FoQ%ZEA-;ZRx4AAIGENGOU$&xr*;p6=^A=0F*6cK^Ly$NK#PImat#k0>Wy zno?UFy85YYV8oXZ0gk=y=lr(&b_2ltNt8i?!t`wGL;+Zgk9b7O*{P zo7r6c`Rw>st7Dr-n@SGu#I;DZ8Q_qq;Pr4Zf2Hp#zwbInpKLd>>5ss>`pjr08dhYi z8OxRU-a|T;->{!wD^tUslyD5~CXmaR)sFCf=X#012w1wQS@l)W`pmljqSW;wn8%&9)qlSRI*6(iiG@o zo)aQsGdc`K6>aW*+OSOl;Ox1aSx<9bvu^oM!?|`V=^1`Yprukt==jiRfFM7|1RBwInMWLC4P8^cor`74d%OG z(&0@a?CL?Fh(a9M4?D*UYnver*i-VgC=~Z#k*2Pq_Q5Xv8U|%o!tjlry)B~JZ6*zw zSk>>pH;D%PII&l`iw=IAtM5AzBHLBXy?EVVoKSRf0sy+3Cs{6lfBhIjy_v<_S8fzl ztnRytj>ffztobXW+BO8Yr>>Kz2L{B;5SIjQzaljXixo$fTebh#Rk73fW`2M5s_R-< znbmeu52elF&~i+iLyGK*njU zV&53JEeErIieX=y^i%6@Dg^0oupKXvod1^p%-0w+VRWgyO1@`-MoP7p74}hlKkn@W z)sK4je)LtVZf?(EDj3osD>xO0Qc}LDmIPX?7VYwpv|MY+WcKq%inv+TrRagX1Gyne zO&+6fHC{f|TpbCb?5U_Z#3AKai00|)GTa0Z1phF+u7D4TEcdAIO*Yl#J&K8~)=Z2> zFPc^DDaA~I-PitDIRqXN4?5ib&5sCwnOZ7 zZ49@$B1MnuxVTD4DvsWK3=9tz2al%`Wp64AC%#&B&ojX3WG}3PMg3BQJ79=6+ol3n zv+SErGmndIjC`Y~g`95jA$`6pA4~WSeKM2+YJf+Zl*>4JBzGdHIibm1vld7n5e(J# zUn|kM%yCZEI2#evr||SGXF^XYe6jacRBKCnVnXZZ?st!xdN(it=#zKYF{o^_;QO3PqfAx}VssGn8j+&xvw9`G&+V87+#v`->!&PTfi}>stD(s=Rc4 zT>ZBHmi{7}y?#G-q-g8z>m$L_yu+TIHFNVGw)8Ron=<8IDhJf_M_PDp;{wb4wvd|^ z)sC!18KedglQ}Xr39z0Gu#JhO%w62&ua183yj~D!Ia&u^WiJ&;tfiObhA#+%yvuN+ zr!VFd_lng|zK7JMU(5xI+k8k1X%HM_LUA{SH@Px;s4IaQCnyF@79Q=@$G(3l-od!N zS!dJzWS~9{W~H+16J~<4iwW4CNy6a~YJSOMrT2j4IirAvm*(JCPk3r(m*u+)aYRwa)?keWsaOWkjERGHvO+AdiRmZz%eD8>{dA>EBk|`TR9oHe z*KqElAYJ#D=oYIGp#%{~8DH2|i+n{6=i61MjWXX_tw>h%FVN*&N|0Y%9<5CO1U*CHz)d|VFy;#ld%{`NjP;{dZ zBZO;wXVw~*R>z|*m@vRAmHU|-%2LZBM#wM`Z>KFt9ey*&vP(Xe<|2o7BS9ST_S(ol z$lK{x)XIL=HF_Cl{l`V$P1DTXYOU<#ZKxep z#4cX5&H_z7c8?{!wF2GA|9#0HoMB!i-O!ZOd0n1ls1y&+Af2awwWUYX?j7&_ z?tsx|HUvA*_{x}~7dMQnqaa{bYETe{bwI|TuG%(bNxa|dyza*B`;D_;d1tqu&p0eo zfrzbubUa6=KtimXcfV7f_7a)X9@7P4^GbM{i@)sUKsQOE^0`F{OKy+5tZ+VGK&k32 z&*I@!sEI$YNaFyn11U$|vH{QsdwFDCB<1NJImkQ`o6M5e;VR1#{5l|2YS+Z^Tzi!# ze^bFCDSjH8@Vv5jtJ`Y7x>uCRg3de{Z;*JM%hF-ND7npM($DPWpr6hw9I0euxx1l` zb0CWa)lla7w~9t7tScVpPECpA3hXhFBo6mKY0jO+DLL5Ht~K7`1ob)2A5?GqGzpu7 z&Rq6PJoUPxD*nV7{59e6jIVeD@6}%p7>6!4#~Oi%ed0@X4)o9@^_9TQgGttv;MetL3lf_r ziOm}jnwCaW0XXGhh&-p1|AD{VDeDqJ}vH=`ySh5eCo z=bVIvhbg^D1pY0BsOw9xirs<8pVtE>Q-a~7*Zn44q_MePrrali{c%23ZxFi7C6!Dh z7r~g$UA|f)q>K|)(dDU^M}x;QURm@S%P5iISyF6Eh=|W?^ad*r5yg@jLrXUigGk&* zEfo*CUzTnXGKTMY zr}VqhG!DW_giPK#weVupar<5PDyGu2LRjYHk{n6KZTcy@+LZdT@AUw|uCAZarFoZg z#2!ywGrn4^)-^idBcmrF3HHMk)KK#<4%5?Tfx^j}KZsXAS09b>>Kjk+-#RScUe;W& zONyQwo$}bPTbxu4@_0e-vk!j>vv-H=WH-M?PNv1yv+rMu96kCBfq#+4Y@aws z!4Ffq3NjIf8)%hHV+f|-7yr;{JBZv1#N-`f_Yvd_2Z$hOz=+r}gxr5uL*80B!wr9O z|GQ~?*8KmrkmQm5Z_ED$7}#+BY?ujuzOPzu%ot+)>-p{@LV@M~K||zbA=W@>2s4n( zEvMJ>*wi24jklbd)_w>_;&sSJ2;h>l0}cs55cMO$o1i> zW>Fj^i}-i-e;~v~{Tu0@X4^HJl@s41Wm5L$dt&{kh;rX2?sDHz zvlx<=JN~C+s7*u|houZ@?Qd)ygN@yQIX%kfPsVBpnzn5I1A@D`n;L`D0R*Z3I2O~? z4{+YDz#L+3N$X+V&a@0Jc=d=NC;Zon{@;MJ3D0d7U&#J{Pz)dM#t<}Ik10J#Fa!o`7wC=vj4=B#tmc}P8uSm-X-=*V$gStu)rbo zZ%;qyajSx*_c`fQ#pzqrHTYZ6=QB1Uw!d0Bqp>w3ljtKwmix(Qc09^4{$@3rB<6xY zm)YMdJEPe|3 zhSMHl9bwphi&iO&1*xSlQVY^~#M1hdv)Z8ch`Rn` z&|Zsc3AH<#QU4~v-1ML2gRM;SS zcnwa7QTi-bmY3zR(7}Ru6tqCGSb5k51P3$b}n5aQ5@21rlu)Qqr85Vv^ zPfzCT?M__2$5Z6=eQ7BXSUc~(*J1o)pKkxJB#<#0&4Q0|X)Z}kdh+w(F1@QWVLDTc zlF4{4ok%#9z!iB$kHG@UdhSxs`CqnaKVSLbbgN?Jxxl30^++l$F~UIfddcn<$Cd{_rq`1#2t*FEtRZb!$-IM0XBT8aU~oPwfre{2-C^^kjdZF{GJ5m5u!NAWN&PTKEV(yy zY|0^Q8mtRG6_WfFImqSV0#?x8b4nTK4>HWkr}$v)%Z#MRekIlzz(eL4vuVgC4%l$h zACGsZV`pVef+R3H$cpTIqb=`(*@RiwI1BeP?<8ufi^_awNdb%8#T0TlXD_j4Hpb@H zc(SuXm_F7i*@%Tg4kj4J>@xeojXk@V$5sn?X#iqXebCCQ*Rtw=`p$_qxsHO zQ$U%{Q>@xu25v|WI)8>wB{W7ljulJk{p^oFPi#c)X-g_czEX8K5XBZLRi(;IF`P3d zoBHV?O2_joepR@yQ;RDH%{pF0!){LZjZ-1-NiR#dXCu?w(YK29O_%SG@{Ern`r=*r z=^V~9Hw-rR=Bi4(8jfD2Da?oiA*HRjY<8qW*hfuV&5ld_^Byl|HANv1OKz^K&=zSbt+FI_h8K;p5h(%0{)vb|sl z&J4ik0@rw3=f(VVVo%}7>%`@NO)o%V>nY}(biy)d}~XK#pJKL>;F zn-Uw-Ongsby;tE&u}Gd+{E0DTtWqkyLNR^fVa;z1A5Vf=Wo#Ffw1nx?_s`ie1{hNU z7j(bG-epNXT<(`U?p-?tr{tjo&i~0-A_aV_Lev{hvs@GXYL}f7RNeGa6>{iDm1SMD zG_lqa+KN1y9!{S-yCPT;zGP8%T|J%{%bJY1Rj9?eMlMoY}QJ0?_E_t%$b*IBi~%uLqSsvhqN zG+r&GSG8VmpRLLljUz4V5Ey9PDRoJ61+MNt>RhCF8fK&gX4rti-|huZZ?oll*X;R>;{|q z9;}`H(!UCK3RNUCHMo5Kl7FZ zb3-Pk)5bZ*D|p8q@~Yy-n6qfXpCu-3MAAQAAL1Tr&y4-%HX=5CaZ!Z^esb~CcdIY?wJV7)HeWxYJ$tK>r7vGkFaoqyW$cv&C|&H_5inS%#W&e8h@VC*p= zP^icByndm^jtFrEFB=cdmUY{A>O}WU5=c;!Hy@||R_hEzcE9BLe|c7aOPtn6wGYgu@0yTukUA(F zI5*l`QaG7OnNbv>X)3T9l*rCVen`H|kOJfvxIxEQ5YEe*67@IA(@Z{l3lhwukfY(O zj912H%C}}rN9ku{5AKQFfrIAvX1O~|%qLZl&g*WV@IAw`o~QoH zV9bIr`L-(Vl~_{7v9slzZvUv>`?OM*$ohpbv9yJuqGXmHyQLe?w)>3omDeZH`-x78 zD;UkNZS}eWsO>q^)!}5G2FGHwO@X1ZIIDL|<_C=FDFbMYt0*n-k4Bll%}=Y=mD|Y0 z(KZ7mzmbIqK&(vPL$<`4`EF5lW``onv}^5d=RdzfP(54Y{TE4S{XT}i!D zvIjMtB8NWZng&IhXW_2Aq1fme^zzm;7q+AL9H9Ah%~Z0i@>;YHXtkx z5}P%9<{NP;YUFPCtMv5Sv=6pv4)S5;CmDttP0z_j=qr`eOfR|>ud`#H!|4q8%N(AA zo=<9*+K;RUGz)ibg5ZhSPq}>${qbrP{Y=zH*4|5_EqgvgZUWo@e_t~IOn4x^$!)fE zOaLoRvm%pO$&tx(I)WE$9xGd_Oh2k-Spj}~L;)3Na}wk#|LzD5D5G=nn3QVcA6UEN zuGs1Ke1NY;K~+v-qZr-1)QZSwf9uo8dxxz&r|^{YWvDcrXden?wpPSwneA;Bt5g)V zOUHarVUd0g%|FR8u)4DyvubwVDh@fy4>-bH{F$-#+Uug{e8kyr?TwAlV!W$I#ngK+ zN$6ElPxsMq%0S>CQ}AGOwph5nd)(zgVVzZ){6yx#)=vM@K5^n8>FU-K%7JP%MLE2q z-7TiCoH}5Lep=p`5WzDq^P5!c;FrBt+NLk-1(U!o`TatpgOnM`k^Bo_&a0?aDj-R%_x{yDagA*? zj8@pLS^3jdvOif>MK@_TpQ{NN<~ji+RZZ2iNYMYb%j#j0vU&ah6k}B*xjg-b3_|Xs zm}2?~|FFTz#mHZM-OYX?Kji*lijp#i<^_V<5YwU#;tub~Lx&F@8Jtb#`N&jd8MIrD zj~?<~f@~n$YX?+L?(%(dr$D7^gm1FYiw8xUmzgc_blQVFhaaLn2H!()XBPAa1&kF| zEF`8;ZbgZv>w1@07n!<*ZO4-{86`RS+2k%nfUAbJ-U5$-y5<*rYj(~b5c%}G{nTWF zy%O`b6K?s@*G+SSLgv3m_KK-EV<=_=4AzFPf-c?oCu33c2YvOISZVG!iz&3d9L;GK zvis@wDIY`ewmlMygzA1!et)0*V^%lwMj!1U{Eo`X>wBigC1CztDaMfXXz$keX&7uyJ{Wt7?$ zZgz3dpy^^GNhx#>e$D3b*>q(q5Biv3CP6%ZZv<#uX>DD#6A+PmS{xic3W!PkGZx&) zCH4d>{(~>TRB3$t8c@N+bHoKyBy&?=EzeBy=s#@Ma$QsDbNG2e93^ZMV+MHRnR*@p zYtwO)(i7oR-XJXkvKdkH%C~I6rMLjQ_&GzQn-)dY7!yH1FeKpvNn#&=d7K;h4%fnQ zfZMNZ5R?K|SZf`3k8D0V=N>ZxdVfyhg*$~W#l^p^#XaR)dCNPuV&@t{47aR7;GOog zb_`u(nkfg`Byo)=&bq@dk9?~bws&&Jdf8J|Me;PBF7dQR*s!6PM( zS=6WHo6$4>@dhOEfy>{@Q^D6MmErpDS7#>h)BNly^-rF|rfwohhRLoqTgdK%Jc(@F?|eFi&YL z5{6PqhPHA@Np*Yqpqf@)_i)cLqTC3fV6w*fbAk=igErE^y0-I z@)uHuO~|t-&(ZJIw~Ny=-m#({5BZk~wgq?dZRC4~n(v?jsP)P^neTRM=4py> ztSXhcp#3iW+Ka+tRHz0|G*wD9k8+-baxlW%SV8)iTF_%{!#Lu{Pzn6X~ zU)^5c-2Ud9@^2-rmQPfT*7y;eZ_hLLA*gjNDiYClfSYJw5kw5&8}oNu?b_+_?BJ{0 zkmsJ~ymURFIlz~(0wZNpM9sNIL%>0NU;h0tRv#w|oNhKt$o!x?9J6U&321vv0Q zc1~$#$d<|=+P0)uKsQ#D=|DtC&T2(D@u0P!AILmxdX!Y_;=yU$ik!}T0vx!?-w)aH zm|H(+RC_q38tJ#S8%y`qM;**7FX?3<&-Gk-+*m-Vrun+cx|+U1Q%lX`v_^PsslnwN zZXxMdyrjgT#dI)P5#&=Oc&ygdluA7NYQaXNc-P%Ff3bywp?B~VTP9IPL#E6>wTEIb zii*Tf7DO7{OmX91nCmqsM}Lhp^*WK*=^LtQYt*LT&pAUmF)om^p>+H{oy_O%b<4ahW(bepC$xy7r2FgYwvWX(c$Yu@o#SGvhBso znIsNrEJ2H+LNlOcOws~10M`=0(*NsQ3bs&)who7T8OUegTF1)01k z#OhK}{h}D?f%S?DletYfjfv^6p_qZB1Ts0x$H76h{8RRwd`sPexQ+vN zPB~dJyYQ+kALC3gs|g~5AjD*-hqN3R_-dADNwiAC-LG}f_qz868cHc*dmc7lzpcer zanHg+>poeh-%Ot_Viy0vi19gzni4+;UOCP*!K<_n=;F6K(PzMgsMT*pM$WZM&IT zD!6TD1Ca{bDq0BH zmaHn01u1|uv6t#0nI(4ENj6Q-QIbQ@l6xVE&MWQh`%;UfZ=bKe$kOTgZ zsvSFBn*QSYs9b`fqe~zO z?-SPA?H8#Ou67Q6g;?v`67cYA^=+}-TF2j-I7tevjnvDt%VyS{TNF|lwuCuDy?^7XegAQ|H&XxG zxBY#GLPKrHtQ*0U0mb!V<1BJhVcYE92}H`#bfWept15>^hBaX`jJ@#P z&=X(hKW;lNrF9}8sM(Se3-+PAV@eX)K^ZTh&fXdy^-13;rPROgiD)CRe#Hd-LF#kE zvdJYr;Rdjww-uidw)7+NuFJcrg~GBb+enJtHnX=!IhHhb(~w?ifiIGU4%tl^v#X)s za5A2h6`0hUXGh3slh7N)Ni8Qh@a+1FrAs&EhBv5a7@M+fV-xKLDORO&DrB3s=yUHa zC9XtXOMEVEd__V82-d2{BuQ-l-1ao%~O$GF*iZY~j$Z+x5fg8RRu36#4>>48SLa)BIGnR)hq&K`qi zCuuJ4nF6$aW8RZ2t7 zQ1WI)7+b>5CvscF*<|ons1p19ebdxbl~H-#_sUeY=`MR7CJf{3v_upN)9sQY528pI zG$VZBltiRXm)H0Kkfyo-cR4qw42 zgg$)}q&%<(4U_K>)uli76j4Vz;jW>7Eptq@QkWK&zbn{R; z{d|&`GCQxsYe7-8mStg2n>@$RrsOc7<7#sycuw0I@%3?BY!pBa9+HM#E{6uvZr)fP zZ_$jMD!Ctg>Q#QTs)64ey?@cRAmUE2dfnH6tt*&csL_^4HuV^a8)xV4mFWGu5m%+} zUlJQps3)U`xOrm&GRH1^e{kM>J`QQZ-;>71FPfm*f0vuq*Y2t*>@kMeQ!L_BOs21TpWP2HrxkDSwnTp}YnxE%? zZB?r=t)0yT#|Qys$mB{k*B4Y)cPOU^6qOxp|6!2d!lYYLmH9XrjPH}*^bv#)=g~i& zCxo5_-px((6j0_eIFN2-1Woo2DQ^&z?B_e<;79d-ZOtR>mh<`?ibL^SV0$i<`szb? zT=%t;jm&W?s9!3j9IrP|UZRpdk;BIDX>qMJ`C^PQw=jJdhaEW2URSNF+}JL?<4LoM zQS2KUK3h|IdEKy7UbS-2VB69fR4E_BB>SCr*wBXz`j9hzKt7w`M% ztRBk8&>r>m*_ozAS(%OiVbYpe0fI;Ch1_bYb~~}XNns}n z_M$SB<9P`H7;oEQBuvDMuZXh}!MQG?Nn851UXVs&`|)TLrg-{or?1D{y8zZ7I+?c6 z9#L7j_6A$`Z17WC#(})GTlvZ7!{uHnSG+597@)?fV0^6VR>ie^Lif$M!KJp<0|k58 zlSgZt2w2W7Y8?B`tg*9eW8)aAVdnk_l;)Ye+)-Q{cofO?4sd4t2^0V`kj$kC^*7;N zqwO>}WeA=*Y@g&NDbvdGk5Nd~@$zJH7V&PAdWu{uY~8u^c@UKz-MPr#wfY59%UUE3 zWVZQ>M=omfp_iKA7)jJ;*MK;bEiwcryZ^ZXvWqOVw`5B=oh0&sh{a3>{<+>JTI`~$Lz5lbJdIv3w4k=Dpc%>K?RzGB zZSda)ja}czkF9>N__~Hu!D|N|(Y3H?}sbX(zVTI!Jx=*!=um9-@wqVBYP3B_{^Mqlc*bR1I9{~xAV`GoyZDrQ`{u!$IgV?rRKeuXTeDKm ztZLtZDZ@z#ksJ}uYVnu91YoyQ&Fz!j_5oXOy<8nVeW?RZ`_JERy}Q2tRlwxJR>)Kz zy#+YmQ69&fsKMo@u`@~0TZLD@@)~mo+<7DljJogmv@W#2U)R66@YS}P$>ajxJh^P& zhx0wHQ+gI!2w2`%0YIKg0Yk|+x=frG*EY|AF930IYpLl2ThB9vgkqv72{F=-V{~M* zw`x9|6+24c?Vs++EI&s+onRK|d9N34yKMOV{j;rfWnPvJDou%L(bPVPngVWEKEIHL zbuLw`(bJ3`|HNMtNGXdxz-&wFZ>S@>@nny8poLWB=fO@s6ciebIUJhYthDC^O&^*t zUfc+vR6&2%Vv#hZX!vq^czP2^2#ia2rDqMjBS0+no9cMKaHZ{U-aZkycj)r)#82-W z*X^ifzV}e-_f576a-(<>p>-c_cjjRnnxNrqFF8oD!rJDKwP>!r(&6_tQ2xGX(scaa zoa^$6skk+sHO_(XvrutDu#zU4qIfe@?^pfF@1=HD>b~lEkhcY#aD1hPBKBInJ%4lZ zQesP#b-vf_Q%;un2P#GKbKR^_`E~H*3k9huK@J_QZCN9|Oc;z_KVx2chN5?}egE8Z z?8}>isJ?EEpLeK6kp?#^bG8J1g-LVeVzUEYUA5lZK?Nnt^h=xih7p_s@fYbPc1l{A zYL$#;)Px+giON`s&U71_gZEd{_gs@&O^;eu1@C6^Z3Ok62DS7h%@X!{D-(JQ`#zg^ zYE(wi!{55%C2IGKoK36ZkQT_}x5&(iVvf&u3S_6JO8QQZ4P z6XNaeS?V^j&R#`#YhE=mu7usJ?!$Qfn;c5zeQ+a>Hnp~_mc^p`0#wN50OW3HFsoGm z3z-?Dn95}5SH5_X#TfefC6ly&PdW>C=LE!*^`QZC2E_5O%&v}qA6<%DPhn$lg>~eF zv6(R==J}&v`QmJ;Z6kM~`DV&u(=CTnr`mAGOHJf9+HFM5Hy2^d-0pt}_rWpq`LV2b z<#&SGX93RS#E(;dgK?KWZw2kQxkg)hXWDNF6LL6dANJY3cN#fvl0fpZXuh_5mb7_m z{?$w^Bz}_r6Md9UaIgdDI8xp2Q>9X{G{<6Zk!;vV(Mon6Iz+9DO3G zdy^Zehdp=T4Dw2D&8xB{y|)_o;iXwL&ZZezJyM<_a(#HFSf`3bNMT*4m$8Kr67#nz z0TSw*0Klq7r19b}p5s5w$yK5|6TQ_BAv`f9&2eWK-AS61C$r5&FsX|?U;o8E&-SQkJs2t6oXcjl0nyLp?_y0lUFJd$JlG`m^q2Vt#eV8rMxGpEW z5f~XhA|G(-{H|U_{SvP6zMG5EyL~jWk$0lL8MSboQMpP=Y23?yo;3z}oP3 z10cBp&W74c7iX}L-?je4=-4Du?Yi__J8=|oNXewH#B&nl$`jbV!BXK`%Fwri@07cc z)-@v!WbZYHvc=u$v%n3PRG8*sB>s}Vft|alUQ!278QzY;m>{2kVO(q*IWn=A0V7y~#EKptkHS@Ewua^2Lp|ql`loNd} zu_*DX!}a=Tr`trG`;!{5xQS{P66y%weWi z{1@@ePj`~MXC6-=(50IC>C1em=aR(p%Ji20i5Z|yH+ewyDOCe>`Lwwd(XjPnd1Gd3 zsvtT~`HR#2YHI9`%d-J!U~%k7E1DkDwta1}wN}O}w&Tc(%FJG;fQz}Bf#=#Z zu!T3Qsli*onAi#Vt~AKRi+H89KSNi0P%FY}_Au?JqwaLI@1)y^F1SQ_g6 z4~0w{pQ~xVA1W!cH+SD1imhS zTO(Mx>a%FX@@aTrD!G%HA)8L=R&&(8Hd)Eags@@05Vr>E5<(tYI4!|T&`cYa<>sn} z>)p^>#PSPY#yUp^Ei#q$i zwBBgy7?ybi3{1*DyBac5ego5_kh_ow*VCt8+6#Vo7I(X2S#|$@)^;-#@w5G-?Iy6d zYNQlX$RQ@M6k>lSk;wFL3g4|&+lmpMB&vl~a(`I&dH))RA|x@+PAT_o$BQ&d`mdfU zoKa)AFaDfNv=NlBz4;#H!Z(G4@ecKN@%0M^nU2rIHiRO@r&pf~a>Xmn<|n+!|1IX` zj38LZe_vi(S~$~YR$tavpv8a6*^>@WL!? zl>OI8Fc-E-@egFAtw*lZZ~v!?niaPEtff3MihT$n^EjP>=G^>#hwXCJ&^y0BpT}?*9?oL68!ZGT`+9{L33(` z_y0%PTZc9E_<#QjB1(r6(o!NVO2Y`H8ziJbx};+aloaXCF_2P0x?@Opca83b!59Pf zoA1y4jqCIM-S_YQ{d2DET-$ZdwzKPOkMnpwUnzAe93m6cRvYl35OGIWjb@6A-Ri-jc#)6?*n^wbC-(I?BYkm+J<9w*ZW@1Eq^y;Xx zX61}97h5PoW7Fc3g266YZ1m%Y!b>r$tAC|6{s%i682?}F2r2UK>?j<=j(o7%8;5A; zyssZE)>6&-u3RHhrpvF1Wbz$4Ola!#7*W-Ae9@owR)hq(+rK@DO5V;0Ir8D$U0x2% zc%C}9i`(0!ea*5EC|yZu<(i{tw#pbtGQ)Linl!_IP?AmcUzC)srjjZy80Ud8!ygMq zJ`)?!>ZQ39*uy{gZZp>Q_Ia_grI`npEpc4O(hmnBX-Puw%<3<1XbBrTyA#@fvR#r- ze+V4ihdi=~NZE7vGx}CIUKa1n?A)Q8AAcz5L&IpFxHgsO&k3RXx4EvGFStKkj7G5LF^Jaiu?!}s5K+6cvRd|MWl+e0MMNI0k7d!$YP>de8p+hB z-P%$alxrLPImPeB^AL7I{j%YbF1#yxX$kVWNa$JGbi>$j@E0D+5y^Ek1gT^$E|u+- zH$#>QLVM{`$^SmWHGr@WOwKcla(?$Z8sj8>|CA&q9~-T6#5dF5)@$tJxVXV!FSPw2 ze!Zjy{o>9hdy64jZ8O)^@9s(_Aa={-Zk51=yUxGtme{2jcS-I733FVHMBlt|@|Ujg z)b_KV5=&J2bZA7ndTkxk}_2-=he=y{0ZHlj^ik;(fk2b~(AVW9)kn`L3*$ zG=KDilH3Czj`V!EGuy7R6sOaV7aw`FsJV;6Np|GrFLL2e$Dc?Ok!o1YMQ}6j*oB4r zg>Mc%%-bhzVm@X3@iXzEQ`L21QL!8AVXgP1w!s*=13;yg`4Ot=iJS)Frm}C7MB`53 zZapta!#mx9^1jk4>kR34h;MH-fvT(Tk9vZq(cjl}DWtnL4`aTsU6XJlg-IShMSO4O zd&wi)cuqp%vMqa}{Hrmsn_Jz5-R3&^>oY|X)Y}KGoHzxsr@pxd_<1XMuW^EY-H_Sm z3!7+ojBnNm#R^G}WYO3qo<1I@md?TtSIaP^veTyKR1~W!WNaGwQqA#P43f1Une)!A zQ#`2J0D?hQcJ3~&`KoV&hQ*bM-|B(c?Y6nyHtml{0% z(a7~#oQVX?1U#H4*3F)CmtICEXQK-=2UlFO>^S;@rq?laX;IYjUv!BL{DxwNI+GLc zYx}@NdJjgybKj3TeOxKv;f%58g#WT7*I^l->w~i!jM;WPMKMObj`8RE*fSJuwj=ks zDs42y4Bv@Gc7Hw*wUn$a5@4`E{e2|4#Nh9L=#IysK-BPHmuL5lrnJp~0|xxOI?gt< ziBgXn&cCr9HvqYUBhKl)qwSZ4D6^dIh-%jsjgNJOVT8d7i8K;X zPFgupAU60N$ejp$>iNnXkXu{rDd^JtW3*)y2_l7>DkI4K9Y*)&Z&V}|%};M1RN62P zRitdA{F)I*lw)-3&qo4ob~b*|X3Z#F98tbu+1V@dO_>U87ELE^_LY zZk4KWoMN}jO(zAOZbSfUHuqOUuDECQ#)vaVp@vT`%X_}!dO^yvqf+Va{jt^D{5vpL1LSP2wS+$ThiJN zn7A+92QNw-lkhNYhRc+cEozTuwp{&uaiUQgoM%)kSjrB!reAoNU&i`Mjc)$idr>$0 z_4*-=$fm1jKQ%)Gs#9m&i`33Bh)KH+lqykeR)PMpeNDe_;QoRUzqMb;`If9XujP^>f1MvSAWV^y2IIX*bB6XTTo zWt(1YCdtJ1k*`{)*v?ZA7>ltvR7wTrcwWK}F03P3m%E$%E?Y~vW+KmCaStei;#2Y) znhI^b6*iXkvII!>f_2b6hU+xA}N7dXpXnzJD1rZmTYlul2^vR!b$`SNQHnDD1Du#dg9y8$I!ScE6iN0b_%~ z{l&K|0~Bj;fG_fLOxuM|SqHiU{M(G)ny*U|f%qH7MD}LX>hEIBZ+!o9DQMCt1sQ`E z<^0!6B)K|$Gby@W5ZGjm4h#$r z@H>Xy1qgQ$Tl0?2&`0l0aUKRm{Ud&9h=bM(e-UqqZM3lw{Z%e&Jkn~}Vw)t5m0u(! zpEQ=IE(#^NE*9ZGR&=2%Y+myzn+B8U5ey|>&LnN*NLHw5o5 z?`3ElGWIg0r-Vxh=+O@nr%yvTGW!2h`PxkOr#Gdswxyn#Qz{}Yaj0`Y*DI^xdmk271`-HgqjdC!2NrC4tUwXjxbobkaXV?oa3}1RFs*K@F%(X9G zy?n&2bCkYkCi+}i_-!i+C}1KRxN;gz+S7dTM@mfb&hVL544=2Q#tnwM$eTX;u#U3AMOR2_-@vT}){lPnCEMnIMyeFA-TKacJX z{5RVv17ka-)`^DL{UuC%#s@ksv425fafNoE-q&-(T{kJmP^c{mBsPh7W?WF+C&Xv12zw3lVP>$kGCy!-^+iD zRozt%lAQj*5brLvuL01Hd72}A-i&ok{MadH~tqwO-k$(KCu0RgXE1CM>oEtQLwfd$YB;CK6d!%KP&_ z5fg{A#9qHduvS2=!&05eOhSKU5Hd3fQkl)#^;^%l;#|f>eEMIEi31Xzp=Da?JZ(w8 z4G6!OKF2{fTtA(Ci#Dh#{|`UOs(9M@tWlG@ME(|U`$%^M^23`aiC=wcWDlfN0?-Qg zy4g`5J4SE)o1E0~kDT<@V#ayO`&~$mlU$W$<0DxyFs@CQxQ8)dad{@F{h}UPw9ilt zIHaT9JH1-XCGzll9#Eh9IWU#S>5t0>LG=A6R+^HcNV}V5KyTTU`3pU)&L`6M#-I+~ z!6x!R1aX~RTFaMONBV_| z(oZ`+btV~}`vnM&^Nj~Lkv*KVic-v>FGPHQJ%MgEKXDp(Lbga6_h>mw?%o?LygSw| z?Um;g(F|H#ZEP0tCw0$*KTCFQu9)Nf{w&aG=bI)oAoWF<4w>S)9`6Iml6ioOg?Fr- zYxYPg3)33#?CCacFQzSE92;)#;e1a66n+#M=b=qi$biO8l3YgpCoC zT8jQlOw!0O{Y)m%tu97v(Ws15|ecPuf!zyzl%u~e*Z&EYM}a` zVv@%HSxiD!{r?e@w&ed^Oyc@?G3oWciAjT%|1Ks`|4%Wgzvth@q-p2>4>2kJe~3v+ z|1KsCWc?2@$?D(5q;a%&PG7akp?CiY01XvTIjouz()&P=79txqq8qfMe(NUc4=f zUf_%a%^RlO-Ep!AJyeY>e~x3h*}#@722;95ARvXkR$kZl-AP}jwnXWbsA#LH`010vWG4seBR}igl_L)6tII1+(KCyJmWnjE>RKqMBJHGW9dkSm zqE`4n0=T--6#Xv`LNNseSm1KvfBFR+gE`qiz)Ij4j6LEh0*WasAQ`x9`CCh%hiJC2 zCn-9+Y_f2ZQb8T<-{=;($VxKQcmupM7uY@pLC*$8n%aBBb{N%49c1%v6ufNpZSJ7v z5>?>Sm8Ggy}>?ds@ScKKVjdI_CQ$Y8lRAjg&uhL^CJ`6oS+)KD4Q{&6PwQ+bzbCdWOYFV5BK^ljn(Nzt zGy=Uwn`3X#z+fzp9Wl(1`2Vgd>1z^L;<@%ai)@j1Nm-?-6YyqQNE(x>6ju%eo6~AX zDTS52<J^`ryK;ofh>lN@`Fn4cSKw$GuKm8IJX&2cHoPy0<36NNi% zen}aH_Gl7(C+jHJDd+xQq1VpWoNgtYDZD-8dCenqL7ci0Yr7oXYF`Q=Iv-V_WL=oL z9S+L%$S%zT7P3^u2C8+gn04~xN40!C+Ig=uKahEA4mSwc+C1X5*_G{37e##XKHk32j((EY=UO<&|pCyinib&(Rb z_{Nk?(dO1Jcz<;&>2ogb^}`I07SIt@{!qbVRn2Zw*$jedJ(3jKJW5xjEzsWG|Bv`( z*Y}y_M`6a?td>O3Ac(N;DLE@Bf@=KbaBgI%!a(01@ecV&nFT(@_!B^F4(DcG?dKJN zXY^a#DFQT69BKzKoxx@ks?Vy2_SCaW`;)5|V4CVy@6=0f`Q~C65015{+7>Sc*ivQx zT(Kf!W3^1zi5vjNe>GtAa6 zx;)v2fs1c`ftHOv)gr}azqxz2XoL4Z_GX!XLB8loQ(qA;Tv3TMZ8wt4NG~>z)tU$NQ(S zCewdqNGW@>eO`cvgnQa=dmW}FdAmC%iZgGl3}ykpQ>A%@_=rV^%xL_&Z$IGQB#v_= zp;?H{cTcB+gPpFPAevO+#?G&PMk?~-!|R3md{?1Up0&q&#~qZD!7wib=NLt`M0Q7j z=7>%l`_WWNSvdJxotf!7fTIk`S#!4Ixy}93ira($#fy?m9eFMg_q&T8|8{M`vK+hO z5oqP#(Dyu)D*B-prYZtVRo}uBwjkX}~N2 zE`H9Rv*Q)6eaLCrd@=)Io!NXaX25akh1|he$W%H+2w*BbFb$DC?v$&7`=oC zj^%m`67NKe6`lRSd=>v#Z(JQ8p?*AZY0;OkMNObwCz6G~^~GPF!dt*<2BJ z5ch#PyJgi5)aUW>g5FWo&2$OCq^tcU-lnKzfpNz{E`4jcV?$i9(ta)LzERBlQx}% zt4JRi6>HM-9(CoDkEK6(aI$C=k7*Y+-sa1ekVlx3Kyf)`Ndn}|K9CB?sBxOVdQey} zdvC_A$?SL#x8_~C2|*%K*(+}9%M-SlbVtgkewS+Xoy#uk#uBJyV9NeG-|e)`0_Z!H z@x@i(@a6dqUeBu&&ApA=Rp1eE+J-UeZx)d5;jB9EvUWMQkRmP$u;raDv6KD2@9Jy7 z@G_6KJahRnvA&7;2#5nNU^{^8X~COtLDPA=zXvMM9A*14;*ohT5clA!#=@m6pn`!DojY#wv31~`ss~q)H`CWg^ z5^t<0{aW)>`h6*~d(wOM22K%6lh1jA+sv%_>W5Q_-~+ryzPq>RjE^%`{?9eRX1kxmJ_ZR>gt1H3d}l5SO)?l9Bj)rKnP1qn7h*unYGk zkfn@>XGF%6PmD!9`)6zcj)xYJ(WZX@g+ERvdq>A0ZyzeSD!_)`AmyMyynb@I&&dCK zdGW^&A3<(|T{8){tm`~Q+ihx&Z2{tx!VKWRJ#ly9VQBsI9BXw^_xwxbR8D{}5r7}? zgnFTHl(=UI*)#lgk9E)RJ80tlb*>rG6tZG;`FR+mp3vY@T9#!1Iw5HlDB@L%S!S=* zfi5$L4RFJArH_|}Rv=+LMI&27xc6skr4MOsuP;4_omz5wy&ulVyBMZQ37|F#txSmm z?;A#)AfOwZA;^cm=;mmsfwLHIY-zK0Iy6-HqOBGisk%|9I8F6&0l~WSIP&U2gE7mn>{y&o~<7Upy8W}lOKZ7f0{kNHlW0D zhr{4N@w(@z1e!JC^p#3E(}sLWJFX|YmDHfFGJsQv(fDm{P2cxl5T6Xku-G0c*hq^D zpn=+ddWBO+yJ#cuO(K*U#QrVMZAr0 znJ(|{g5V$<0ymC-+Er4!B_GLxVO4-#xY1za_1A+6#mdex%ixW#S=jR-chcfVuoQ)T ztzP1Y#O&7J>w7+j#$8ww4e7=Fw%JA(Ch zEe2|3&nR|QJ$Cp9YQ0=+oPrW!S7{AU(*2dLRgPua9ktc7285R+Z zDW3l$C+-!^a=a5Z+`rlILz+4QbEmrK(-#yL@J6 zY6HI+7pHNmT4NavMF zW-dC+;goj5{ zH9E?Qk2fS*5iZYD9<>$-eu9N3c(J%@nGBC;BnU+$p1mrPQj|R79%ma$2w)TO*_Mi9 zzD;uDBbHL6I0J9Q-`+?G@+_=Ci;9VB?eJcd%{@!L z)9Nvyyv>b?aG3lg@1~_x*(`cb#RpugePDON&rKorOZ!U_#}^pR6ifqmNhsKc-lOBh znqBrv4>wsYOHk}Lhgria*{zT1V3w9~L!B+rrMP5XgN1hUasOQEd28fbV^%^ESkz&6 zNfyNT#;BD0G^eirvXjroQ9BFlphsI{w2)unm#ms3H8QL9bMi@HvRm1onI@go$1@N@;uXw?P=w>mj%w<&nZL2GfcB5`s4_R^iQdimG@i=emC+oN)C*}8EAwe`rQf4JCV#q! zW-;5gXXS{uV~a2@1+Tr@ewq1FCcC1>B9{YCX|P$GZp~`(y*5*r7%t)3bEDMrG56Z! zJD~?Drwj8gPgc;VR!V0>l;%0%6%u`SoP!#4z&)A;uC7(WhlX7~EHg-fasjmBW3?*9 z7CKSCd*obRwu;8WDFOCUM_3HeDIGd5y6Ay&m1pKHqvTVwKgoOzL7}B6QaU z9kzBWr}nwVKv; z1r}n2_KnDVMbt+_EdpE#RxAX#J=Hd;5D#c+*e;~Fec4r8UxsOHi*PDnP{f-fUQh~f zuXh8Q8>S2MFw_y(CP%EFRS=ePuZlSVGqM5_bOMeYBGDUKbI_TT6V>rei85}Hmwm}c z-cAvuhVyk%C%{|Hdl#7Z1ueO==k)nOh>fo#A6AhH*(PHPQ*W9jn>Zgj-UwfPe6~Ix=pKH_JTV;rex;rOMttpad>d#{pr+Yj40XS(?G%S-YzDc|~!-EGxeFNWe2 z0KDy-74&~_(Y>O0snnf>!!Z;siZ8R$orl9zo@-kHGpXhS407wIMF+X3ru6iN-plXU zHtMQz5$2MdUAk4n4^MPm03OE3<>Uaeny*Q5o7hhtldXJTTfQYD!c{kP-kJIp+mgw= ze={-m8&x49a`UPgR1-Mq4G17yse_#6o}6}VEK1@70!6d@w_u2XDTXEb>zRNB`;5ao z*OT1kW|`%e;de|?i#>W^b$QcaK+EOwgIsif8D^ByJm#m#;@w>8@W6~7&V_N!VIJ>J z$7o}BZC2J}m^OG17S>ujAzAO{L1Auv*iE`tTtU=RO=X5S5`CWCt27_12aM8VEG zy`P-pOn+&1S|i@`2b}(Vf*N~^jsbG7$K|_QQI~#3&$%ar-K7sR9&#z>Nq$vJCsyvO zvzmRrymd!|4axwsKuh&oA^`k&C{Kl(Zy-mu&7ZMg%MW*#D)2sUC6IkZ_3dmArE(rL zQDHt3b5mGZ`Gy=!w%i^8cr(wIk(%Fv{6vKsv$UH;jBuP9dg<%OAR93Ewn++G?le?n zx6We(Y zUG-O9_KnA1(e)$9QEWfi?CswJGr7t>MT;O*pURZeb!8YGzsKV*TTU_MtGHnn(J)r2$GM4Z$;1~Ya zKslic-$)<&AE0mKEzExyp}WpvNjA~@NxBTf**!Ng9@mUx5vRlshU9C{WN1$tGMzHN z;%={}P6kdaZeJgD0k?|O!&omht4C0`d3VnQpd^%+GYZIfWaZnI+WL{UkmDb%a_qby zp5$ohb4a#I zPv9EBlS2)#$(790ldr<;+IkD$5LK2xVE=sd;Nt8x=Y>I^&HhT28$lYxdazr~ZmU#H zPZ507hP>`Ch=i zZEov0hts5IAADxCjgv0G#m}JXKWHc%D?)TWuE&?kyItS_PPLv^sB$31KR3lfQI|6C zs)^yrPodi}VpYac5EqZUK)`ayxMSt3jDm7)5&aNrf|zgCj>OhP8FVvB8B5qhN^?e^ zt@}i&>mZ+?m7cX8&BA%W+{lIJeSaBPZ;AAP!@0m5OV7YDdz=J~c}$Jyf>5XvA|;nD zIBySaS;;O*Ib@w>iK#aOc0*j8zo#Bc(zV?FIfT?o-ZPeL6W`gy-^eYiH{JgNa=Ruw z3G{m4I^qHYJ&q4IT?_E0aY|L^yO|6j9K}D!R%WI-)th+fkh)}i~qni7rvN?skAE%x0LtyJOgB&itnr1 zE~kMr6<3JL7rK3HU1$ck`bKgxAYuSjb{XqzcsVy@vwx6s4ehAAA#z}FiIMxQ4%9nr zYby1wLPUuHp3qBD{$*i%#aB~zu!U(WK371?zDd^6#lo$%NBuHVL?V3hCdh?`VM*># z7x2ejO9*@`;pe>T>*o9uC@I`%555zR8<9}l)H3bUz8Pb8Vf%IaE}V>Zt>a}`$p(!W zH)r!g7G${99P(Rs7a@rq9LOL+*==Cb*e+zbhL#9mNWL}%Aa{(c2W)N&mF*_kd(H_4 z4;Frk_>R}Hw_4ju`QzIRL_iIqR2o-~#exy|r@!YM8xQdJLplcR=;^bTtGV)kA2kEV zw<7?%);Zrjv{2}5Z5tEFWog1188n^jEX z(brKh7xr7OD`1P2uNI^Pi#B;=SV*$AChsizWs(G{+FKFESm*{C=m*yjKWZKIJ_oc= z><^3yl{jWY)JWw@h(`g-l=G5I!<4pds8RBr;$CIfI})m#Jkz=o%2a|fl^e}9d2ilz zv8d$un@o;Rcp*13S@%rOes`WJOC~?KY6dV(Tf?^11$j@|&$Gu9&fS?uB~G2rqDI1@ zY7cx~qUi~6lhFiL1~8itechA394=)Lb~7b1s70V`?HxaWfxVp)&bW`wq;?>n$*Y8% z6I;c)DT#^Q%>o@898m6pEp=0GDEK+tzZ{F;nzA2%;=-mWcn4!RV!f2gY<38AtUl<- zkO?fjfIe6{v*Ue>?74=~3kT~lV8EEyFuHlkMNKL&P}=`g9AT(7{5cg&F-8get-gbB zF^iIN!BW@A+^xd7B-%MeBtStuVB&3$-8Z9MGU8IpQ1Os}Bu}3+in9TUoI{aOv@GS0 z?9G=Z2Gfuq=fjA=?us8Xe!jFUNa7##E*Q4rkz*RL+OK?!o?&U?Sr?PK-Fh>Ll=07$ z?3!Y^ed`q5k~eKOa&X{%|HyUJ*B9%$(Y@H7Q;4WgkiLpPaISR&p1YHI#~nr9N?TsR zuq<5U_6Kfq<}B`;2c2+<8HTXJ(bV0L{ox|-4pTKvN-`QRN*@cV)^|j=DzB8P1(v|GEfmbM{}{Q zchuvpeT7l6UJW%=H<(#>tESTrdI@8JsagQGm&1^e4u`e+%-oul<8#M=4-Ys~2<>P` zMrBUssD^@h0k8p3PXTz4FmWE|Rjk!Ef7OYTJ>bP^%RS#TTtG6Ism?gwhDTCkj@j4q zlP|@u;5jDWGZhdQcTS?)%FFHZsuj*zacX+&07V!>)`i%4Z{C76G}s-AGmxoZZs% z8#(6^6Z#!HKSaM4mjnsANIv>gOK86>HBnatwB5&f2NkH7^jm0rkTJ(D#Eo*h!k@JW zX+^M_G7Sp#qPCsjLv9Pcz8;(4emHmMPvTm-UYF-Wm@z?&3s7EZb^T8EUc&Pwcd=;G zSJ3*-i?E@S_iSs`k`OD4mL+C%bGf*BrZ^2y7Spl3^hy4%@?)!heyQFL;$_*g`>i?0 zg24f^vVGo$P--o(P_h>h{~7|wHz{+<&Xf4$Ida!Gej!zm&4Sk5%8bfvQoM^5_Hzv5 z`Y|nhY;eqRNu_oS9nm>o_PtH`Y38T^*#6DwGEHRzK^F0s*w^ah{BLp+^$%CVJFcj!bl&K6zsfEf> z$5at@ir7c#E-F8o$szA*A^h3OGGBt3L51`tffFNuKN+kRWBFpEM<6jr3xUF|fmLB| zc<#7*M{bz|)m0OR;)*>O_TbsKibdNN(^G%-tOV8=dKwn_4cbvQIPsb*qW0~FRG9#U z8*6y<-oZiGEa(P$_-sSb^OE42=f&Q!ftjN&;Cwq%C?A4sIls85`lR-$Er8#a9IV;bm>e73fUO z1EXoaK=QrB>8cRSRZ~tclb!4y(Oo0N(gI}7_ea*z(t$C0TrX?E+8 zjG?CO!aqQPj|sIHpSOs)rjkk!2g0i6{|8}t1zxRwxeWIDJdCx}yKnouFNfSG1F+*`$~j+^D@Y}mF>{)Sx3Li2 zVsV>e92E|7YN`~=sK#pj-NYOS1QW?DwmIC5-`Wk>KhqEMeiB3^ED57kGeHtwmiaCn z2?cg3I~`^|muDDS@M;}3?-d^g?72h@!}`JnMbCU(8%OA|N$Kxa=+bEck-YtM0n{}_ zx7}r}aX69Yh)x;Sz>x0E&DFN}xjjh8b`g;IipB>ub<`)Fw}54NLNdOje%yP1)AWX| zLEP)^r#!D9cGeY{z7$*KXQ%Y>;rDOyhP#>=0-If+TpfNvC1~CwvwJTl(Yiyf zjt1x%!U>KGv}n+>&GjPTn`N^Pw?%0*^Bonq_F$`PRWVxs)A{%Xyyl)Pi1gm8y$Y{I zki>zC*~yhIL3sJ}eJk!1?UT1x@U~#VMy)4CjM;wcoUMoadNqfuj8Wa>9+C<-1h6_i zgD~SYZLf^u*`zp}VN3b-)nqJm^}*8X`^6VxCfg+aF0tVqwqmCd4U(~`w9-XaO&dO1 zyC+(^H6jb$J?Z}VB8_ijQ#$qLvD?3YSPP^UP5A!ZO|yZ{V^bka;~<*MZ6%gP&{Oa+ z$Ekcm#wq*b^!$33<8V?B`U@~sLX`j81m#Urt@aE#c2*yoggAlQC+2L_31uwCXLyf& zL#TchCM7M_>8HMR;tyZxC9V9ltVlm>%)Frh4e{7Zh-Y07k5g*qseF6IUGwFA@9M)`ga?nl&Is{~ zh!Ou|zt-&<-j-pa*e8BLXop(40`{wlnRn{PmTPc{#rVatM6NQTd*lJVOB|O>=roE* zMbQY$(YNkZ@UgX z9^L5aKeZhOzs=+{15A5)i4Wc?piUVw+M5cWu^yt1lbLnYyguNJ5_5K;Ds6q3Y^YYV11c=9JjI_g+vFOTtpQKubGKx4(s!yOOQj zSdl*z`k8hj$X($TcR8)GRB$oQVqIXE!EWYTT?=BY)!`zRw%yQc_) zgpJ`bkT_u>&Z;TybLRtho@tD2J|-OivU$12q6@fTJS zkr!>pWU~AWb>LiZtKF%^n~jJ-nMV5}Cr%ngw{hcI?(5*rd@)DEU0lV!gHk7}wO2Jg zKx@Nawh5WbybEgpZGAKxp$ev~IhFB+(xRXyL_p~LM z#9kxHBYA)1bD*y5Oqlp#-P`cbJ|8~H*>lx`(KNDZx;g3<>T>I=JJd5=Cd3@Wbe%m< zrR*YP`&y@d**lZygbx{Wz4vgZ9I|aM$e`QrZTNEX%blNqf{W7*hC^yv-RcXL@HUq& z7%|S!zQRu~z;2g$*Y~x8v7mw9O8U{FZ587K!BMX1g-D7m+zK50Dt_mq@v}$uB%eJ# zWfl9lQERr_37Qg3$Sv1ZN%g$h{!EXG`58 z8VAYC(Y#wxK9cTTy(044pm$`A$><8xT1<7P_0IYop7d@v-MBxipJ1ZVv%gL0Wlqxu zMZck2>RS}@FxN|zI{1m-{E3V<_$|A)CjB7LmlfJ_W|$rSYmaz}X~RWC&-jdJNbmY+ zrwzn#q5BYd(`r}6Y1Zw$Qs?G;pQL{uPH)PMYxkzrDx>f{W_XUgLd@lepASIZ zE5YLFo001EC=Qm@;kFcwrRfQM9elYX7vjpXVyfoDZ^ryXO?1suKSo5n${r$;qnGvs zxd9#{ONAc2*E6jg*2=MKk)s#tLf^`cFKzZM&nvN!CKvK`H_;=+w_8sejV0konq(g_ z0k|o0iu2ACwKlV8u(0{|8imgNh3-jx8G^<)Fvy{2B+J?eVxO?j-x4o$1Z93 zNJ+6ICh3YL#yisH~rUAB<`%8*L(E4 z-^>zDEReWBpcg!e9(e1F^XxnutvUDy^qvTC=exX#ZQjcdBgC?)^<6QH+@GuC2O6S| zrNO2+dM6BiK=z$yVqxof%10)T0u{x6qOOMT>k&8l2HvuH;xaIC*&aV_ga;gJr@~xO zJJECb&@@377t~peg7$|(n9R*kX_6O#U75&r{IRI3y0gegNM@(p+Hk^2!U|jcvWPVZ z5ZiQgz3Sd)b%F~c+&0-GLKc4TAx8>q<0Vc?8~KS|ak0e5n`$A_Qnwjma|vLKL^%>= z4&l7tXP&F$W<{PQs_lKiK*ofm)wPjdMmIY8ltuSPKPS&EqsB#jTo<5oi36-~xMNjw zynhjsC0cLB1x@1_dh3#Ui58WyL)$pE*mwO}Je^-s8Vu|jU%L6>(tH6hP1LnK9nM~=lu-?lyPmQ;K8z!I(OL!Wpe#+Uw|bXj+PZCY3pCy5Pirl>0(2EKEp}+T*p1EbZ+G zPzdO90!Eyt+FVVl*(cEeTXb8o#ZT6@l0E&WjsmGx#2nf?b4G1i+5jEeoerj2%-2hw zufse8w%F)8HjG<>6IZHmtWIt<<0>u>%TZ%5(mpoxB_P%;niZ)9qGKV18H6blH=9vF z`<;92G(B~55o$6ce#pB;iSVe~<4@{;e)rv#{hUVc7u>eSlvi8^HdvWD&+*n;l`U>W zpO=_l=ZxEld*Qk5FAv=?FB{c zc85b_fQwE?>}YmuQP)0#r3?f=m^x?k7qWOZ-hwL{eZ^I}lgg)}n;F=P2C#7_a>V2o#=BR6IgF z{OR!aA!IJh&w2R@`1|{Ae^DpvI(-K!1am-OA6q>GJe~eSbw8kFu!$$VcD77FyD%x6 zRMPM;@cLsC>K-Q{HLA6i`m)t3>0ie~>SdrE`rj7l1{o+i^(i$v(4g~9$o}H&2K@nZ z==|HG{<({8Xn&3fl=Z{++Y*tgxOJg}}XTvSMI`1$~VAkf2nxOTG=s_AB z)xfrmha>cet~p)T-UO0Qsx?phkY0Kp|8W3OI4+1b?ZSh3w~L0$oM7|9*!b-M+pVX> zp&k8`ytbZadtoS>Tek$_B@b#i0=NzxqRZa&YS3y za+ga?dKqE6O|gJWF#&7R9(yJcTwm4sL4axa(FoH~mVuGW*QYeFpr^{*M%Kxs#m9M= zy5dKFK1g75RtBdSkQn-yrPD!CpU#e^?u#hUe@VVh*8iCru4n)+^BX@ttn%CM85u#S z4Z{k``*Pt&PxXN|_tsTJlLD^yaH>}ig3Z1NM4oJc0mbjARC-I+Rzd+2hZ=6~+Ak96 zj{+XwIzVFoxHXC2>i@nUMFaN*dI&VVxnSCzn2Zq7&rhrcxlJH_{sNv=-UAIUUp~|b zDMbUi!5%f@Re5Rp`@?+T{-Z!Fl*{yjf2PCT&{9xSHkE_`zJ>CMb;lOw^82dg3lHn9vNl>HOq2x8Uk|bQThd1gGA+eq-*Y^> zG1|voijiD$IT8SBEXD{Dzdy_w>6w#9RY@{|M$i52qoT8 zVANM3$t60Z`_kob80O9KI4Oacq0^`Qe9=G&bEcli!L+L{O=rg9hO+^p^3->~t_})z znjS0^(`PU6j(qxhhb6mG)3n1UzD(l3bid{(z(2a~t$f)-_PX%WD_r@iAgNUfe9Qqok-{1G* zj4E7%)_zyxo9{v1wy+Ttb@ePv{>DMlvZoA>UKP-M&H86uspAM&uBv037Y5EgYQg<* z0a%Z78$Dp4->72UT|79Wl?>J_u|JM;p{a@<;Qva9wKWvBL zZZviWp-C)AWB`e*X{bf2UmkSxfk75_+IlL9urAzW>!9gxh$$ z?}w)k9{hAM9ACTRjC(kdW@y2}_R=qVN3> zD|hVUQCmU(48 zJ7{+b0phnGJx!@|?cvY^xIoWVFl=8weemtUg9=pdw}%5p z_1zyd?4!TZ)A#Nm(xRa@0xg1GH~cW1c%gRfM?I|tLlDfjH1BKV4e(fYs6{&*4WyI^aMX#liG;+ofk#sUf8gmo2FwI5 zWF*-0q6pgd0zhgf9+;+MnAvGRrXg+_VA8tuBb{Q~9}c4)*f8QwS)ruAN3IQxy|&@ z_Z5jFwDbZ7QCX4K*Tg#+L*Ony0u5s@L5>4~g*uFyNLuzP$4~yC9ZVo8(Gol4R{+Ml z-Pti7Yxw_18WGeTqvAYbYB;&rp{Q|yYG<|@Sv{s<{EbyL9ejH-9-~s85w@WOEYQuI zUTI3j$3+cRB+iO1Q3(4WC&T`Z^2$xpMVc9E?McgT>n-or_r`G(E0*(EGaqS2sCGER z+6x&0fCnlXa%M7SIzasO?N6Yr?;y;i|CgK&Ox6Fg|2MN{l;=O!6Bg9}Yt;QrTk3PE z;yE<^ipG{w`IpN7cNjA3KU4{s4Jjy=3LKla+7)jBwE3@@}RyJA%gtuyg( zr6THinm>rf!_I_WsvcetSd(ZtqTt7nt_>$+?O;3^L>GSGRkZg#??$`!p~9A@jlKTx z3cy3Qt7?THsB1qD{62MmNWb@hk;z)sl^^;oKLC}&5{6&3u;+G$*W9;%3sZgiy${oW z)P(I}FzLt8Ufzs)Ui|Sk0Jyzj&;e9&<$}h(j};$}#rxEPq7ff(Mds8Cyf!NaiZ=uT zcE@guw1jKNPlT$P8^`QCOnyFMiaK81ND`iCX(qO=F)T{WNrJ&eu3aCveQ)O>{x`RF zk_RB+9|^vgq=Mg>j9D||U-|XKIRIe%Q?5^$MOAO)_o4Ik_?G|9Ln$I33n?SiB*n-$ z%}_u|882{efGqf@fF>SUIHcJ!)DRO@wSdt^$)vZ3Ab2|urHK5RrHoLG6eD9ZLjffn ze9$b6MdF_Y^oX-yv*X_xx~Ma$Y6nde=>1^_gdq8uUwe`T04KlY+H*3cwO@KS7x)lG zC<@+BaeYa;_T6tJ$2ZP``>9P;*;8f{v7)%nxlp-qkz#Wd`9@S=j_Q8P*0|Zac1X_v zT?BsnlCJ(5W+L>!kq+>cI5^z82O?0Us6Nh{r9ofnt;l8 z2ROda1@aD#R{!n!osKv7Z_*(xhMS(^w(~IkE%SpSJ9KsW!7V+{mUVhAO2cPkn3U0B zE*`FrhY|4Evvhd=Z>2T-s?$t6kN%qu*Cq_tKt|{R7e-u&+Zzs}5QsV2Cc{`b8R6al zfJpj+>@4)$D^F`B<15f}7pju!5Q&RZ@zkI6S0(E0s!yj!7nHE&cIS15Erk zr`q4E6t%+5pjjdB<$ksx^hV4R8X!Tj``B#I3% ztDTq~`^@ZMcrgLdnKiQWkp7@r^05|wcHI#G?vDMA-kspih<@#NqMqCWzVH)GfW@_A zYOd*E#QG?9=|{FMb&lLbO1C#7RHAO6^@w#wRBB8&8U^&C+SLW~GA73LaNN0YaTu~jsJ-)FjYA@jy6g*BUyXs+QUOKMk?fk+dJcP zK1wmn%|UT(YIp)7Mz1(GKxcjhEsz;^`0|ho8vOMU`2~P(a*$T!L(ES-PwPd|D15TJ+x4T~q=hGP zccbf8xZ8@yg|4}tG50hzm(k3TMX4Bi9$*OF1HrJHi$^l!PL(u@c z!;<0O?JUg@3*^@-=aV>m)_N70)vTFcA3a)!^Oo+|^TLA4 z7dLEA$y1Q5#77^F{jNWl6)l#17VHYLPR}K28KiN7DgB$v1Sv%NgTroWp0FTGhD8dX zDbU|}n9kr5+y$g?2_?z$RKbPWWRb12=~)5Er2V+JWI}xSBH`h zv1xhfxryHti0C7jBYI<;z$zjOQA=_O)g-YpGE=iF(POJ#a!dhM@gkQTmBA-JqZ*TB zWl|AYOek&@QW2X)Y)W<|dh;$|<`>Od!JMyz8c9i}XW{>hC@Lf((FSoDK|M?rAzoP& z%TrD^D)MQJ)+U>ycw9DqHkR&dz-Ynv9SkM5)d7<~+C&Yo)`nWDmI?0CRKvdkKC zGR{#f%o4UkUYaI~j*yoYmr2VvnkymEmNa8HidZ#CeBcebQIEl(9|D+1+~E}De^x;I z$B&vNaW>xU&>s497249G9*AAHmz2mJq~MW~I)ueP&THF4KYQdvAvA=%PiRGtx%!?; zS>hfLu;5Z2YcW4%c|fJ7^JEJE(A9L^S}~sQwUl z?dcXW!x%qwwzo_Xr61{_iaDN&DTt^ddZ^4BDq?BOHvx+l8V5>Da2Nk+E^b&Z2R}v9 zFt<#Ylaj`kXNA&Gc>XiJW4Y9MplRnnjm-V8nr)T$f7cS`JpY+;#JW%av&B2RW^}yn ziVyqq73j0qFzXpg9=r;+K&i?J{);$6!^+(Ku^60ceP4KxwCH}+_{hFN|XxhFK|8jNCeOsJBmX#o*-Ev+1-l2Pi9Jw_GlfA#ZK z^9~2o-v6;>{cjm{r@a5WmN2jWS98R=hl50=##ePE9Tr~}zKf~Cw7Tc0y42g*Q0ncq zhB@^A!n1&B`XAqV6Yc-HS-$_gp0Jeu-zc@uKM=8QwLf3grP|MiQtjVQm_h%GPslDX z3QSx7shJu3-?Gd1Ki3i#(*GhyY{ps;-i^Wqb};_wBEE8Pz<;B!_qY~RjOOxK&NsHC z*kp0xF)7EFKkBB%T>5{(8Nf9Ck83@W{a-Ejf7cV1)c>2N`+py*ztsGt=HHMotNxGu zIV>^+OgsN+$>)D8EKutIb%e$Bf6NhUUj#zc1xh_tUU#wDvq&XNY2Z@P{;?J9hK9NH z|AHgHRQ)f%|7jVvUF!d}geCR={fz)@5yiaI5n$d*$`PO(0e)X$KK;Mg0?<_bpE>_o zcS`-gp0KR`zenA_4%J_3{!;V*p~F1-f6)U#)AYZYdH=s|mHuDW6PDBe_oDsRvGh}} z{FK`NPZ4I-|I54qvB3VXX_n_d*Af=j{~LAkN4N4eGdF7cHy_P%|98RWl!Mb!VOISw z_^+RHB$#^sQ`Y~MY1pOxzm~AL{uel6b4CKTWN#_dT6!<+-Uot0ESE#F90$sAVD>P# z{=b9s|Au`3t33a|wy*;IziGOEBUJxXd{T5uou1d6Qm5Z}m`DFFx&}0L{m03y|I|zW zzv~Ih>Hm$g{ON@%rPA9V%fArI((+%RIprv^M3_VW-`V=VA>aQs>!x9q`hOi^DgD1W zx_^UI|5SWR%fHm=8xv;K|9AQRzf;ZF|21+ZwABB19~RdCo1^=GA6viW&aaZJHmXV?GDT512UB`l@?*QodvZ#%D4VQ1fOUY(+qv}vhK z|ES9JcNmKG|L`KxZ->MFat>go>3=8l{&UST%J<*a66V$aF-NRN^(WS81&veopOq>8 z)D&-`(xU%ajoz2d>Qd*I?=x>?5cEIl{HW*kJ-y>yxRW4S+Vvv|h5FyL3@5YyTdkVq z{_k1>)&J1%SMJz%TY;D8|0G2kpD0;0yTHFWkN#fI*3)}Hr=UwjT;QhS`j#hl*sTf<;Gu8jwP{=#>6 zH6{@nk&g$l;(h!e*3XO*Es&?~csLn!fJg!Q9e)_>Xrjei%qw|oIPTy9D!1cLLYhg4 z(p#V;X;vj163Nn;gY(hQA4DFD?D*j*aG^I^!LWV#H0`C(zxAGImNoiHBm3^S>kss3 zIC_Fpt2lb(b~^r``$TJuzG@h)HIt+v9WI_|ZYvxHlZfF-Ksd(V=+~|84?5mg!26c` zAUrc31|dxzPND!9=!rHM4m_SDaSXFLpdHAS9c~0m4GZnBet$F^NA4g>hmM#WtiztN zv4g^U(i_6$^~qou?IfTdaj=!NCS`bv)A5MdLqH>7aAN*^&%sH^pEeJNuY_+{*0JC1 zMbI0B>u7Qv-=b1`=N zUbq9`35vQmNXTUTjRQw(Gz20$iX6I~a2Csj)9idex#(cNrLmbG86-5YY(h$6TqUHD zjNxJHi`SNIuB18c!0!_UCQug)C_9u4pj6PtUI0a|yfpnAk3PXBrp)5VBoG$F1+W1{ z8FWDt41<=SG{A}tUzZ3PIknVe$$YkH^_^ysJ8@MAuDmmp0 z&F*?s&>0GeYGy0B(Qma8#iV(58PJyh#_ zEUHaCPO^lgL}?R+ZKMei>M}R*yFkshCnCjY=omaCQlR6thjgr^dQ7Qq6Ge_>pY%C} zM}Y@{-tM^rB(_8*#SCPJWWmWqNZRR+IW|mt?}=24IC7-1U-hu(c81q-%J*^K>SjZd z46ZZG22YW6Ho^uGsbC&&WCo8E7{_SsU>Nc`KdZQD9h~y68{1icF}%L})$cAk2QFFSJ-k5hO$ z^F3M1m^DN~stM2M2}nj?K}}c@Gh(Eq%Y!3B0Ec^4O8p*?5~J2!M<0(7_-5Bqx04SSC`O7aFM z2D&1PVB{rPUKkRXmcT`5kXaCUNR?D#Dnq0H4>7d?@m{ zC!Cc~ET&=*OpOG_%>epVXWP})I6aY_Kq+P=`B*BD5^P!y zF@1P(5qdaNcd}M*x$^#p4Tbx^(WK?AU<+W%{%Hk(54f7WUkt_i->#aO_do4gwLJg1mhcc4SUTh3 zNKaLV_Sa zCgf~F&+qmEx-0>Zcg$Mzu~vuw%P?u~*iy$%Nz-ux4z>7gjTqCIX)+EUBug&X)(qN? zTtm7#L)Umz$=v!coi9jO#LGbZnoXSBtKt77sF{Twy1praJ;qH&vNecU(3bJL(A@G; zt1HzY?J~r;#_l8<;`$p< zcGw+zVW{CY*F!Rx(g;14l<#cYmg*DoxNY1-OL{_L?V^(Lnw*pA^pP9&C?W9|;SiYe zp>;=oZp%J*iI=JhdNxaN!RGd&Mc{*unWHnF6 zReV429!QI~ISR#W%&SsrS(PI037|B2p3H!~NxwC4{Qy|8+l8rfYZ67n0n;9krqg)Z zp+?7W4L74?xNI|VEGaMzU~<4F>1{AJ$+kYA{T6y@On$NLi3joS1X&@(ybiDI;?$Un zfQc|q!&c;pPic@0RYe9SG$h?pq_YhYlCDAm*Pw<2k8oyAmJzluKNaMU_ET;avg`?o zHC19f;9-U;pW(iT;(G~&^M4}jK8z54cNuGN+WBwQ{r`G7|6fa(bNATEc?*AJ4G-A@slcQf8_DX(;voA3e;X z|Ce0}o_hZ?qyL>+`TqNQ!eaV=-M2q&y!c7~v+@yOUg+gGP>utCoG@MggQ>UV0?<_Z zKjZ(k=G065zm~9w{%0Jq-a%k?L%o~;l#0I$Gltpp|8jGHa{Xs>!=n0s-E)AuQvc=p zf2sce%wZ<|zvKeY)b*dN{cluD|KDo~3+n$hEB{Izbq)Q`9X$UvAM|n{CH~;W-gA`$S1LPbYcrDybpo0j~u8 zsRzZ=TG@L)x_3p7w~B9n-M6HxgRKAC!+syJU!VSW3^Q~8)3(d^-`5isegBbgiQXE1 zWirFmMKygLpq9sx4P4cFSTAQZV^3{(*sB}8Hc3FJ8Gk*}^ z9~!AnGm!bgAtoewHcz z17w;~@I(-X@BanO{Cd&q2WSmM-jCZbLj>ONI@|x2pN`19y(B)PmX5Oj(87^Bkcul6 zKw3`G_3|rdMT|C1EeFH-6BBf5wRKefs>@O`(#K?|oSg|3F~& zH8163uoyCWD&@5c|Et%TRe@p1d(=|X`PCiO`$y!-7C#`-J-^fO201L3W>h?Aq+&pU zP14dZ{4j>ZEAx%qN3S3$$(OFwBrns*UB|A^{Wb@?HjPHk`-R{0km)=~nik}9Ob$8p zjtBX64Ea^lDJFnHJRvHcTF6_y((R=PiBeHx0$}Kf}tt|6|w6^}qFmiqPk|i!q7j-ugeDWwf`rJslB(J{;t)(~!cQ zErsH_Z!-L8gDn5_73UQ=ed59t`FCoW^FLK8N~@@RS}5h8?{j`9H@2PGng6HEeCKi( zyiF<;hQw6n@m&ZnVi~mV*llUoJs(V<&e-jCVb+iukqDS%5cP@Q@8-U2UtG6nMsa(s zNmZ@%@!Hi_$CTYBSy{6DleZUEx%m5+Y4TsS?9BNOt7ezy|JD)~TmO}(@PunJI-tnw zKz4HuL1Z_(Oe6bXxgJmS&D7ILBE%FG)e1|Rn)5Jiyr!m@yQw8Pov!lRNYeJ2k~A0; zK4LP!b8*gH*P62Ym$p$}Zz%HcAwT*Z4M%dP;98F(c87AED{WEw(v7Mw3LXcZ!@Fv} zvZpv?mKOvR6?pMZB@FUETpx!4Eb@Tjp*L0gOWmp@LeY)}hMd=jW1-;JT4OnC2(J-m zR=*^{vQ$#XJo(gwG}WqBvij%Dx@!=xHH!5Xy{A0$Yu_^-bmEr2oMancTpi;#dALmS z>R7hYltUf5n#2hS7#Fi_yz^Z-Wiegm+?++!%)8U#N~%D4N7&@ZNC3JBQ^Tx3l7&L$ zmrQ7!uzIgr*-Yyveu}sw7a49+siVhS1bH_*^Io>9c}fA#?qj%PPmp6uMk+YO;|MUm z-=VD;xp*`$OY?Nxn;|#d@i3A%#k1-_7e~-3!$aH+8TS_g3y2C~W+~5e9U=7_=V{}< zt)oAFknR6?><3;RVLz^7DlldKUpKS&{|%#D|65C_DEho$TA$;ig-9=|NF5Yan`{)1 z`)=@5(yUY?iQCmgX(Zc)Qi+*2pjFM7b}C(o0eMPQN=yeI_R3{!EO?2JPKu34COo?) zQgmKy1&lKX#l>F>s>_W05AjgIY8L>C<=-+<=B4$2!z$iwy$8F*YXZzoe3$oCo7sAn+N+M>& zf_kh{cnp^PO(TasAoPH zrkRwIZy%2A)3>_FAq7Krx660Xj4(_Y2Jd2s@5IMal(>4rpIEB#hiV=u3QWVvmT{68 zXdHjc|?|8+-|CI5+X4e(#|M(_MIsV^$Sk3s4?`fkK*o`^EmwR5c zJjN$mHbVa?kK4tmkCm~%>r;3{-OYaZ?pucA=UBCu7FDf`Ghf+zEQY`jAtAa6s6i=P zWQuzNxlX|6ln!q54h2n;8)xb+K#@>P?{O#7adU>W$)M=rk+aJ5sYghInDSCVQYH{G^NV{MCZM zm#FjolfVV3X!rb}qgXMK_OcAQzHbsR)h;ClR}qIHZlP`4Pcs>cos6o$=7KBgYhkf% zG?qFqQ30Szq#YFuMA=-peLn!;+iynRKs$xL-F~cXzx0AD4`)=`u{ZG`CW&~g{R{>| zkiFd>LQy^R#{Pw(7M0g=4Ea=_ZZ8EP*{;ZS4CsR)`jqw;|U0ZJ5 zY_rlBP05`rhUq+!kM>0{bR&73APIRlUNFS%%r4H(Kn5n-8Q-#b>$=nEgMq0n5g&OJ zmWS`6GYr$OBs7dp&Xt6uE)bix*BTBlz(ZF{jJeMc00m zU9c}e&M=@ooyCx=&xzcKEG>Cq=JA+(^x7@Uu?`EFx$z6?Szlkjgg2FB|0%hbZUu6^%k9D{gw}l+htHe5+~IKaQLkT z6`-;B`pZ0rQ`ORmVb;T`azF8B|9G=cy@ex9)%2`xN%KxIeW%%!KjFOvSKH}BeN3&? zYhbZHk{X`7e4=i;Ox67R=DY%mBlGo@nqEaqND?iJNGU9(FqrbC_8G|~VN{i;0P#A4 zm8>IVR|eFl{8FsQ8ZkZSCtOyXGUeUpIArYq^aFDtu*M+EKRMF0-u-`a*0;R>cRyh@`~QS%Uu4n|4JYlMWH}~tgyOYuT3@E+ zOP<11n!0K;cZLI-$q@^-ts!F%$cn~hQXqLnR3JPlrKG!(1M*IP=fC?J2h|iM-R5Pt zkO0@b`ALEoKL6&)yOuHm9_OWIo=sJ^E|{j=2QF@-*;$$$DIyHO-;sS`p zui-IHW!-E4jgQ4c8*Tg_jZD=^rIt_mTyk^j(X@E|sK&VMkK4(T#w^c$3uBiw)QH2_ zd^8}Z4Q%7F7XLFU%|}8(xjR@i+A(c+ghDtObc7^McO-g4p)*KYR#-WX$RiAEi{&Up zINj@)gj1AUl@!_?P7c${^>@V?dD7w!2I4_@(xC#gN=lABvYN3_bNCGdU8f?nmGra4 z9rZ#*;SVnSfgef!HlzX1tT;*2h{F`IY>IV`X)tZjSD7+1D$>-;$)9%Bs|<0F=l?5x z_=|-p^MA)QGV_1OEYJV1B`iPx-`#~tIE-JMhS%a9*>oEK9Z6Lff2nq&;~fn4wCO1D zA}`L5Xenk)c>C;n?2fXtC30DK?#<)=9Q)ba1_zLdTQ%1~|MG96E!j3jBZ{81pVHXb zJUl%leWW0fvK$84bhglHs?tpu107&h%;uv7Ts|c<^xz)YH@SJ9PJ3y?Bxcv~>Ms((m8s z*}Yj%NAF`~Kr#I~@yB3P0gcJ~d}@@6-L=ipuZs%NtOArheJ#FQlY5dj)3NJ z&ku1;)eDKDabdEr5l%RuoS?abjs`!qQ80m7d-&i16ng&E#Yuzq0t{>VI3hVpiAm|X zO5rZ3kdmCZj4!z*sq_i}x4g?zh@WHP2^mu}cLME4ikxx%)oN8tCI3;S3YsC#;5bf_ zAvYndm23csUe#34^Rr1#Q)6FLn7oe<>m*Axq-W^zOuAfyqg=Snt=~|Jv)2>E1a?B0 zkEB|hi-_HC@^PqS`ET;(C?AnJgy3VzJup5ZcDKgI(N%XohI?^d$SA#_ww;nF&cy4p z_K?(l-vYN`Az%L^y;idlT&Vvov+88@f7Nly^Pg)8^RNG+hy|WIzVN?3px2p(laXMy zW?nByPJ2ae@)k!MVc_k9s7E$E0W8mc8nR#PY?KU233$cT6tMSji;j=_K7NCdGXzzq z>=XMop5f5bSbEFrxmP~w<_UfEmt~`moq(~Jc+1IN;-JmJH76f$6A?d)4=U*Z@R&K# z_O9qJ96MNC`dU1V=%HPlytt`&ezVYrb>73+OCOJr*Ctg5Bc_)kg~*WrHMz(Wnm+#? zX+pp_f)X+QqJ&J+luz$x9aAUlA`)Aih2*??T68ueE=s`SVrwYDMC4~YqNZGFC2u=t zR$HYx;UN3?!CaNhQb+t!(h}9+VhgLP;1FG255D-bZv%GH#D#z>a{)OXWBP|@Tkj^uZ}L5I^Id75QM zT%%6kYbOPM;JPYZn8rugeQ0NQCwX1wYjS8oT6Vb@g z4o9BXA!awdlcdFWl2Yin)2Z0}dombCJA_4%bUKhOvGe6Sb>GLjfi8NBMi8c@X5=SyKV!Y)JvNPrN>`9ZztDYbaqqxnL`KBdA(*B^kr) z=WBV6oZ>u7b*;U~i&gP$_Uvk>;s*Q7;FTBG6&|692|43AcKPJ_4CmUV6NCJ&sC3#) zc>;c}Q}v6zWSpu^!MBC@$~x}JW?LXK|MzpKo)vpA#~^w!SH2>aGP_{gE8I?#_T*?; zm27j8D@LZWo_Fz`znM~a6@`cUM)CrLv;h^eYY5s-g^+(Z7(q8ff6LAd1@h7W?32#$0W(T%;@vDDwaFvDXwJyPF_nWTr?=MV{O~+CwC%J ztM>bfue{jsFve5VRo~d^>NC2ZrBU^h+};Q)+G%e%2|8NK(|||YI9-o$bCS_T8(xsF zq=W`$+XKm@OsAr_@5xO^y^9OrOzw0{d@OE8TU0g0%pZ#LmuZQ4Y$S^*>N#dsN#a@M zob`#ks%Jc|$<>5QL@t!<4?A93^@W=mC8qdi5)!7&!ShwF@Cm4KoynGPU@kNQg+=$d zWD>CoGk4tM>s?&O|=#<06v1ktV{45vok1*&FtE#i<%J&6qb z9Qsa4G4&AmY-?*2b;(l8;{pshoPZ%$MiZE+6yzMM&)dz252Y$kwX5sOoyZr~wNO?0 zBAQ!|`Ye1LiflXu5_hS+l1Aofup~pC7F&o+bKa7eDjr#s;-J!%%FGMgsQ5PXM)mBw z(vlrA!;*L$qsQjAq}U}Bv!Fw!FJFsCdgs$0i!sUUOX?VkB}@Iq^(N5$kj!i}b_R|e zm!@&QC9{W^r0J5JyxW{N}H!f)LI>Pd{ATG@6QI&fnO% zs(6b0KsjU1(|=6Ws$OrH`OyacFoNyy^W50p$;@(6{GLiPDzPI9pAJZ7S-;-{zEeW( z`LDIT|81CA|G#$4td{4$))8huHd>yo{3C`~{z>=m2Hi?{)m?QRh4OEkM%9w#-*oI! z{?`)z{?D)d02gdS7#n}wGAqUw9_|@*+yF+;AGZd>t$+UG!QcP-?9KlB&u^b=z#iJ$ z4|}f;_q8p3clV>czq|YF{WI;P}6?(RN6-qN;uQ8aq8yL)|oUAeX^!*O@_VC;^1 zemmTSjJuc-3he?g)2wu&&XxvsAZS2l5dNqrZvjy;{}yEIdy$K`i{R&%a5zBp{%ngi{?`_=@(beKXzPi#6?C^ALuB9mG8~`LWRjOboy%>S(PS?XW$3Jsb`yB==Q~Y+3~b zvTcb#pf=l=x+M@LjRQhpM>HI}V%yao)JM>FY{0&0Q~gTHQg+u5_nbhaWanY}QGNX<>~< z#jMpM`bWp8UYt=ku}uU?$gWpwPCiN=$u zlj2^lH8|J|ZA0gfjdZRRJaMPAG0qsn)Mz5fAK`yk1cx@ws&k2v&Xp=)sk$Mt6uBfJ zFjO1^>;#S1YBj>L0T8%>|1|bjuNnA%K8D6>@P96r{7zz%82DF!X0s}x>5j+4YvS)j zz*UF_gc*sjw`6+i2|XF9uxA<=i=>1o=x%7F<&baow^yq=-;e`OWI zALKltdM)M^9%96U1kP(vu49EM(#;0Jkp2BN0dB{?Xn{!h3gluG7fr~-zKXiaQFaxz zXtI43$D`J665*zu)u8l6NoLJrXz3h!X)42uQ6kcX&x9hnL=iDt64_wHw^3O@B%wO} zi#RzbaScr(9%^&OB-qaxouH*UftTp`Hy4FWhMboG{8ehC*dvHcoEl>oai|yc)rBSX zRlJV-A99T1KXj!^=(W5Y(0`!Tp~?o8lLn~uMh!>-KhSQeH7w0;Fx3G$;h&|G5_PKw zrBIvoun_)*?|iJyiwl{J~w#XPHnJ{0D5k z>J{`O)Cry2sNTM=BSTZ2LK3jENk%NvsFF^9ZJAZgVVN+IfP+K=MJMnO7RYfzJQ7Qi zF&`Gdf{?4Ap|Yi!w&*|JS3k;WZJfsViji1VH$m!_5Qa%aQETj~mG)N=Wn!Be;*@mG zZ?bKgQj_sy+JAhpW79ZhM6<3y!<~wA6%eYC&#HxHJ$zIxl7u;`$eKpN_P;jJ_BL&h zqFUtC@R!d1&`6!e=nfyjvVnZn66p+}rPx}S+Ts7<7qSw}EkKu8K;mEZdJVKLsBVM& zF>5$>HtSl$i1Y>++)a=d{8K0YXbdJaNH!e$jVc2WKs7*DyMTdgQ&yaWaxe$Ul9NUP zJ&|W&YR9C6XgciS>eZixYK@H8k=yy=?1jYuy+E}B!xR2%*U%g=ttue|{DFTVX}^X4 zs_|dVX^=ng*@paN<_G`RtVRH%Ff_SdYs0(_##Weez>HLHH1NNmE)5hPTAYY%=#W40 zzqVZkST(FjBV_{Hz@e)O;GiBIL=*pGV~wbMg~B2H(`l4Wf9mm11g#@%=pW5Qd^Ed; zxZ?O&YXeDPPNG}*AKM6Z=uM~wenRzCn!~~tI?&}f&cT24$=@_&Tc5sr@SltoEylAI ziF%DqsFBpD$-xdWt*C*PEHDNA!(u@#{MrP3`$Ho^0oI_cW)oW8 z1Y(lEs5zk#uSsuFZ5IGT*Q{TwH6)a2)buJbEq>LT$O`}jrW2?iVM1ZYlYRr~T}ARi z4P;{SE3!@NjX7Ob)R#A$t)~WxdLXm$i4L1mtjJ z&N{V7p>5TgRwXU$Ve6o2O_1CMQt6iTfXQ&J5!Qx$kR6Dl*HDlxA`Xzf)*$v)!vUsY z#tESoPThccNCkwX#;?GLb@;)mfQcP6*J2i06DZL%t{~-C#KWv%uR%9Q(24NnXzUM- zr5ysS0n|b!(2zACUPCLE{bA8pW-*h>nl-$3NB<$KaiXH&qj72q+`zPJY+o95Tm)gl z0TchwffV#GqYNE`F@=oE`=ozDF;){2*_X!hXks2QRxAP(0@JE$HGvg@N=~z<*X>H9 z0eCekb;m)S4(SclNLZMCShY&SYF_EMD(3W>R;6m97P2eNI*3E9Vl-?31bJ=f6$@)H zAfi#PpmIvS>&*&`eOD|$`>Iwe^=h+?14YF$91zcng92yPDs~<8jsdf|dOiN`QEY+r zj7qawFimS3@|3ze9HQsMyw0P^|FhA32VGIAH9#v=o0W#)v~iZ)0R3z_6~jP_1t^MY zr{Xl4*ey*Mu-O-MnL}1RDvfILC)CY~S;uIrQU|?cKntOMI<%Y3N)wt2+QDcfUrndt zG-14MG%I!!6q(VeG&Hcnarw6jGiTeRUp+*u4cf3`IVM;nl{zBkz!w+{W(D=2@KLEX zb%S6JZK&4aH}HZE`~!-X{>Djum7rb&Tw$QAG@EtZsY7fN6e`qd>QGM=XAi(C4H)r( z?U0=;G(PZm!>TlzWbSVu?;%scUzkUjz{w7-FykRs@>MhKo(as~Yyj7TpqOUcAnT`S z90J=D{F|1ogVAUdvH>5irk)QE!uplk!tt2lSYOCNPiM^nd!uCq+N z3Vdam@fQ^hcP>yj`+u4Abo~G zj8v$&0ki^~Kx(0_4k}C9H8wDSi9=4ssW-7?6TU#&9mmnDb>y!23xvOJ;X)5YLkH@F zW@z979%wV5YQQ6+z;8Hzg%;o-4K(Q?M}m65|Mqm~ck7D&B+>ZYBfm%_Nv2t8DU84= zJXB+Xco@+AD36sIkwyn_a2NwYb8TcA+d%WGQpdF)WUs0Xh&zl5VCn$Hz^nyuHjy9b zIMVOUxDd*gg;N1glOW2_!S$vFY5v2JQL=u)ssq)A0V^fGA}d(#MgmBb@l}{2K&uWW9w_amjhqNZ1AJ70_W*APFomA6n%Hn)9j#fZf>{N8+-REEFp$w2 z^p#;^OKOnBz9?lt>%*wiAg?HE1S^eT1(OeKwpPcp0`?Ygd8~%)Ce{HO$HuM%uColn0q_U(WF2J&)q(}u$pjvEK>DCa4J-%?w|W|& zb>XuLy#)OS+6|C_PIL?+1~ufGCT`u4ENn=^bygE5HaJs3)d`6j0I7rC2Tc#k1_u@c ztrOHPW*y*xsMYZ=TJs=Rh%Rmf)`wpi1FQVo#YI@tY?f~E->7g$q49#Ozx zK(ufq0UNmqjEjUc!JIPd#DF3LWsNLsq3r`EDl`v=r6yr;3j~jh890PCa1sZykGdVk zGZ^}+I2_>KDzpyWOZBZlwbx8!GYdm2-&J_T4`ew0z9mcOFuHXPwY7M(h ztpiY8%?3GP4nq+r#ya~A^sY8-x>BK&trDOks$d)(>Xf|kH%^2a78xi}M^~{MnrK~t z?nhIU=vq)o4h(l-eOjcSa0o=7W4Qfkpjm*wK|<{s8X8~$LnJd#h<#z<=tTy59Ncjc zlbQ>_Cq~0Sy;p}So2U@MMh623@BnUTU@b=7(MapbfQCYD)@$@PFgK3zxT#q+8X7h0 zm^nmLtxgRgjj*Q zY!o&aK;vq0hy`OrqXt9#)xeuP6ty}Gc2#1%ffmQrJE#Zkuqq0NiRJ2b9GM*ybudDV zs)3zG+TCmt!h;}yF0yE=fjl6VDDFTFfY@ZeL0_3C!h-wuF?HVvN{6=L4 z764kp4TC7hI<+9Hzl!HNM+9+8jv7yZx+Fu|o$W%y9NN!*qKx7L{ zYSf&zM(WjZ=&Na@ULB>WPJj1s+-TIQZQW_&G*KgEfSf>2TuK8#77Tq2lqHk!DKM{t zy4OUGu7ZUFYzG4=+EP`NJ=-Q(QH`6pWK24wh6Z+B2i4zzk;Zh02;*lHPsw0cH&IhK zO`=6Y|%?+GUX*eL&abX+87H53WGbUIYz>!V(gA)=o&~Vmwwoxcb^{p$dq8j0NG4E!&ALfg0OSQ71+PxDS`vL2Ro`D}dRHvo^?pY6YTjHKm5_F_Bg9 zq!s(aV%s)ZoiR;fh+zTLNll#Ip;AB-52X?H5RR2KTr583_Y0 zsNmM|gbo0#(E+N8lUme$O{mNQ8w{s`xEBZJo{fBA;xY|xGT*43rWt~!M%HbjAq*2k%Os<6yf^%`PCx z?Q07L?Iv!$k%MwFf!nMD#6NLov3?2T-eY~4^p@QBS4nR%w%3KO5HSpk+H^&lKTD_g zFk?(6t$+i_XkQL;iFMV3`(YWOW}7$d1|r{NztjK2wWNxLD7kzFurDj zqLdK&yWuctp%Ox+g~*9c_{V+UP$|P*hWP%MJ0Mp_ zcFpQ8xj$R!RH9Y+fSq#x(=sytUv0xG{lBgy?Edh>1MLUxAibSL-2P~k3AATJZ7_^9 zuj5A*$hZ4ocXwC&yW8*R{b6SU`RF*#Uk2q^iRcvXD_+%yI>_@A+m+qXq!svW-5vSm zmC<_-8TofM08&7$zeN5^|4(ZPcPal)DgPTEGV)*B4EeW9|37O9cPan1QvNqS$nw8( z;s49@_h0In_g}0Uz6n#x|J{eXlmAlqe-9y+|GSX;I82d$8`GrsU(A|S%Kth7eMnFH zO?$<8d_DD|$RBh=?OP(Z_-rAI-G2JNA1I6Q**S%P`8!@4RDzedOA;K+?s&ly?dAK| zubu}Ux&uXLb>uDQe?C#7^+=2c@J!9H$EpP2kb2)V-sBL=KlAOo8+&`j4v&8)J-?uS znBxDrR?pb~^=jQL<$oQ4Ne(%nN?!K)nRWVUG$tzGxBt!Fp6_-8FHU@-g(Mk->sumy z3K+2-VL-sxpg+JMcs@W!6k5z<%(--&yi0$$Nqw#1F!0>L(_BF0MOyN*YFtQyMKYX1 zhM#8u`o4!gK>D7x;}5ic_(*Gc(Y5CdG|z4KNDbU0m6g1j4v`{PE@-#Gq~G$!ii%Eo zjJ5bl={Xx*br-{N+dG|y zVwi8YN8aL(tHzf_$HO3$=@VzzXX%AtM_${%fM)c(u}2^7m%(dc^5DMvGZZD7GGT>e_-W*h-M;o4^#$`y^Qdj8>4J3^M`MxQj2#G46^03x@hF6km1ZnR zqPL3#4m0?PK6eLkA#5;amz5ZKQLgi5@E%>lJR7^+ybMIk?z0z>#VkZ0j3@1AIEHZu zpJi-Im_JG|^P?TGi?4=$Cx$=vuYkm;9k1V}qlc6lE76z)=-mLD^A=h!0mKm`C#f9_ zLoc@G#UvP%p#nbkTWOJRPLTC~d)P;L+NCdiSz0*7{EtCQxBeN6p}%Lzief2y!>=>g{_*|z0(cj#6#1#}I)3=;BrJeNGt2_< znFtEh?SVrmhpqZh(|N=7P%0M}TFhesjln*xCs5^cg{bnLt1%gIPh_wY4I zybJr7)gYP2BHI;M$8C|hp2*x*uJ_CprtAOZ7lo&-|5VM4{g2PRmim7UA-2Z_qdHL) zbd!fo=7htO6JKo`w-QAuSj4Cv51@i8;iSqEqyTpr2 zuN0#CIE6A)xq%0t`1w4tizV%L)h(=tlgDo_CD;@ zWl5`J?Uf};E)7J zNH~nc6+)blKp@wbgFpPA&Hvu3s_v@l?wMH~V`FtoyF1fW_3C`D-h1`xJ*(>WKH%~a zY2cErD*tjHed)mfonh5wTsIBmDsznWsbD@dm*%mt(;S)@m)@}QS?jn}z~D`8j~G+d zb|>TN_~`bo7oXCerfd_JdVCo!e|s%Nd}D8$P}|p+_VjIC5%zRuu`{TZXVTa%Z)2Z_ zJQk$!vJA6fa&OZDQwnpBiIHkXe6p%+FWel$2|+KkVrDkG$73~uY2ymx@DdP}1pUXr z#uWAUJe&d6rT_iIBcs9i52LaEzctT%5AwYHNA0ZT9Cm6IVEFy)f@~ef)ZXeGP+VE- zGid_{=j1dM&T+AI7&{6D{#8=y0zIrDx>#8QmB5s7Cs58=U*vENWDrrG0{Cf6*K8<> znx$E5+O?}b2o@riASmi0nZYdV-Oa;abNY18G0QvfxK|c^q>k;eD^RynD$Kzz7?If- zOFiQ>Y?r8vZ5Hf@tSs9P(0IZqUs)$i4E9c64AI2AvDNESPu{BX zgVUXJ6WOj#wz+b2PG_y6(@As=%lGyg2VuxCl9pMTv$N6$+vc zg?tZCQko=OPiVQ))yYP&Gi7v9^SX_#+i3naF@Y%nkaG28t*U7kdPKuT4JW`qmD%VY5EC9ozP^4_nM_s#4OIkFllWRCAbUtjvTqvYIFrzQwV9 zLtUA)9&xHzq)Z<3&6qJ=m?MiSuqudQ&`QUEfpn#u6w|OrS+YCu6ln*Ys*wItTfSk* zVI!gEqe+b(nh7*g5doZC4pc|Yss)HTZ2=xw21bj=K$-}X6FQ}< zJ1N@%$fb2sO$h6rpTqA{-6pZaxkfFbQ4491@;-978#KpZ2y7YDDqI-24E&|zEg1~3 z2e^vOMy?l%s!N0>bfRh%Cm~g9X&^1EwMwRQxF`Y|5~o6C*_kMdY^q`*kQ=}U5LjTV zz=H%-aPX*|VxIUAurb2Gm);SiF*RemydZq2SP#}{pmV(1Ky+~(St*Prf?ze$=D{Ez zvfMHjz`U#iDmv%XknF;1C`E)$S2$TLEU7#qwz~)WPlGNiw3n@&%rh zPT%V3XPc;Q2AW#J!OH-zaxAP8%+WN?FdE+k$`G}V++7>*tMR{R>-KS;^Dcy02GYbjwvQ@F2EQT}zOv%YsR@ykPHU8o>*qzHieiI0O4f;LM>tcV&ckhx zF`6M#Qlsa?%XS_apLcc=svGb#G|~>Roaa+D;0=v-6vp)*{xDQ5 z7gcy_w|9wrhbUF+b4Y4fhqY|yy|+qFK_CHH(&em*>the^;XczPov+q4`E^*IMEZO> zlbRWwch*tz_yLG2o?>VbNoz%LZgLk3&oGl+nw#rMzvKFun*Wvz32Pj5oq- z7Z0k&Ly}J3bFcKxtU~&9t!laKehl@KOTL@^#`Suw6TL>v9;V!5vZ6lB(47+?)*oEs zj7il2nl587o1-pv(ac+Acb)^;#gu<7Ceg?B*$1+2N!tv!%opO>ihESMP9IW^ad z(?1bQF{F1#c~VH<ew$M*4>1 z`=2d&yz^Yn2B5w@U_ZjvfMU|2UFXbORbgm&7+1}tT{_m4_d$-y@Vljr@5S!_h5qRH z@5k39BH(>H8!PYz_>WH6Rs0|5!-#V+{Zdl%whnj%<$qkIaB{&W3zY4UC4#>!@Txr-R>EiCi~TE*2#fEsbip=3v_%eWH4STq_0{0KN|+10sfDUjt2Js zp?Lpq&C?>=(GY5&n2&~RG?5mhdpsgA4-3*z48$xgF(S2HztLI}+5=c_)o-7cj!~{7 z6LUJ$d0)iS@gD^J8JrOOd-gZK*wYCA`vd-;hDU~C{BOwYkV-3@P|IrMiMxRPyr>xrrBNkdR|sD7It6jlnXU2=QS3Wr85tJTQtR_Ki3Hh`t+ z)dtl$5(uVDigJ%Ht;rWA2A{1w74LTNLR&t~zNH_6 zuV=vwHsb$=Li9f)Loxkt#S`HF_InFp9$X+>Cq}_OW*N9xKx#otE-PqY#)#h<9@&$KOs#C_xpSMrFoO;7AA^7D`k&!}SpI9t(<1&agsLc9VAw_z$qf3y=D`w%qQ<#p z0R<$cDaVtpUD)1e2Jt1pn&|kCf^h|Bgg%@b4N#-=-=P2B5sV)e<9`dDpdC5R`#iRO zS|{NeAWCXRsZo~e98;U{QaLDjnLhRL|J-PR8twmsf&G7IFpmGxnx{qkze-hF<+@oU^f0K{C|5q%um;?62B#92`f_RnAuy^xT z3N*t10e$};7>M=%Eqa3YOw{aaTFod1D&dV8i)v-ePt5l@1N@&i zhtSaeD|r4l9LIlX%@gkbl}$7qSd|NA2G6+!Qu}Dm?*P*g+%nx0=^5wWR5|79rj}UoF6D+M&~4TR_egkq=D~(gf$$RvmR8U5fK_L> zWsBKT741U7b}c~mY=EC(EyJ93Yz=rw0p6+t425noiXJ+b;bG>nE zuFDNr;zsoUT&RN@(Eq`afc|%AG(P`n&C{auAB~EuES<_|L^E=X^v#2RQz})k=BQby zSuXl@RD5=5uAcoUUm~)~xjR83lh`S%2>f-`(mlb4aExZTT$m#!QP1p?ozMiLI$BB| z*v?u79lg;Q0h!ff@ah)4Dw)#2$y7>9f}zaktqOCg&Aerb0Ztjr2PTcP)_->brHTV+ zLde?30;FXn+u_*q_gp-Z{{I}^_6k0A>HpB+P+vg*KQP!I+yAuWsek^boc*1jqk?9F zNj4Rny2)52O$54Y{^n}aUK5(R3{&?CX7kpR&0F#}Wuei)FtE8@zM*zO0YeAKb)a}Q z3d}Mg6vmYB-s;u?>)l^fk_h53OWr_@M;$@ zLHnI)yWkJkR%7>xOre&ww&)o}mXy(1RLXR2+Z-ZzYjCX-RSRU`2Gyrv9aS)P#1^@) z+x*wTd65#8F_zxzq(Ms35M4?MBCeDuqoDL!K?3Q$y0E1LWvOoC9#I2B8JG!GyCSnN znx2H267M%p*hTvx-C>+?+RS~nD`_R+7gT$nb!JQGt6m2Mqs#rpDeuV<=OhbiwFhR+ z%GSM^5Llo)3I%CpMy*I=qly|E!_ar5hJqV|JI2NU-QO5Szc;EBc%w%9HtKY2qehW7 zh8vSN8VhM4#PW$4s!)849J~;f*c8@{xA*+m0^%|ayD_8dXNnH4luo3n3qeRt4?lEgNjlq2)UZ(*Oqmm-aM3f529u7TIaa=d*eMA}PW%%3Z{E_u| zX>!?uQvg}eDeK?mJZ$S%zsc#<+O*Xfb}5Xm#hN8p!L*`x9X@PWCSAfRSI`Z2bxvE= zEH(N%|CEm&Ssr1~=t8Bh+pQyr+d$1bkt0_GEDRMkNjXqM-6e6El?rLLU`@LRXzJUhZa@w|{`5 zB6e(xPTSIJZtKwpaMolV>8ln-{gB6ydxGYp#M%`cCpM%R)4%zQ-Wl#knJg`S(TDpD z(*+11?f{)ND|2!mwYldhw_5t{thkc3u(9IGbik7Z4{Bm`_V@K&-)R63HrUr!KGCUF zHDhTA<*jbpyv#eznfz+vFM>Z>No-@@Otp?pAvcKC%wS2C7SEMY6Py}H3Zx&pK6oIzzWLh$h z+j*0qLS-dumR;6&H5k28X9Yp?x?5+U`Oywt=_P5!VPn905aFlgE{UccD><{&M^+H< zlyw%}TN|}9z${hiA}^4x<1E+_U7*dHRWptI4d(OQAS23d$pEXeP06seqyMIXzI6Y< zjeT2sDY-+mOeZf{r_@=cR;AdSAbh|k)5yWtG2Te{aw*tu)gvc{d(1Ags1M;y6RWRG zv22n5;8WpKS%sX@8gpm(@CZ$}zozY+S`$ov$*Bf?Q%CPW70WFPJPxy4!f97 z1B9Lj%6Wqz;0u64F93>G)U9M#8H9~_It;$Fg5%Csi#d%kRCr%fu(n}fpdvOuZUx)WQC4=-SJ7i)lrI8cO z@J7&sBKjQ)CYp%uV4O+OK`AVylTL@55W!k@SvYACG!wChuNFd@5bAmdZ%7WPAh|5h z&Xvrfo#9X=FH45MTTP4uXuO-xar(%i$q>+yq#tStr~bI?O*~XEGA?3BDF;kKHPGx3 zx~sygcNTuPM|IiA__RSVt6?O4hsZU~Gd1vokOkIRmJuZX+t}X zhiFJArUe`%-5EC^U5fN3nzW0D`=$`8JiLwIJbXeTB2oB_JmOlpT7h=libXE>N(CTV zlKU@Q*+r+~bJEP87*Ihr*K89M3q=rQp@w5vYm)N`*R}H{w!e8H>873RoWCf{3X(Qt?Q_A5R2tr+56jV-qiBV9yF_E{GzX=(}aW78cjE%Y*g?phMF{r;XQ81oqs4pKnUIao;FX;$3vkQjr(7NWNz)wiJQA z5lq^Ns^(J3*y6Hq0Y2$Kan9RJa-@Gl-zTgBVT#FN=bd_>X)b#_*&P_IJZy}vm}JH~ zlPf#KhHREC>|jTNG3?M;zRd%4u{_)pl}})>#j*|x_1ui&GZ0?nN{MFbVwgBS` zS*FcO%3nxG+`RJ-z6m0+N1rzZv&=X@77*5A)JPTnyaHUbkzipw721+4(&C`X zmIQ>F6jyZ11z~)vY+FabUhq=_SSUENsDm{R@CF8;1~H0nV`NAmR&CkgE0YV04H8ECa`~kdGeNk=bVVfAVgH)0-8y2pkOnvAT1ER6GYnshlmlJ zCP$OOqi{V?vfjF8(SJZHA%3_X9hW>gr9)gfVK7}g2ZKU9akLof)o{pSN5@%;)rGA9 z%IXwqR3qZlMqm~wLND<>uCF+osaDJGSZ^=K;hwzX!170}ST77XYCwBo(alesY!rAF>IPaF;&CMo)#TGc@&l7(SJt%Mi4k~mSEZIJS(piTx-X9BPY z&kzh7q}R4D6hTO3$}xnLeSyU!kk{2wTu^gDB%z4O*`;g%=Xs243a}hOR!G+)*FY`f zY+*QZ`wcn_n?;|_G`b5@ zl$rF3)LA41oT1os0D7ek^l`sTJ$)+0AI$(uhRNwWxV@t;-iwDz#SV%!6AYW?g|rN(J3HsZq-in5vySB=U+wYJeqV|AFx;Z!psH5{ zgIA&idpo+xVv{nd%#{Fn>s+h1f?ae`&&Ihtud5`^H94XL<*+g~4OkB*wo_wgNuWS6 z4wZ|D5frji7WMG>qEJwo44(@p+JIXz6WCNiPZvHBI961zeT4b0XT47G6?@%TyDT+N z_YKGxYwDIHFmYuBOB7Xm>263VovXuIryO#A+C-BnkTChSo-Tlt%{(LOZ4Mg}>p*F$ z{=O?#TW1;;6qvP0k&2|R?p>WK|g>yVP!baj!<+e4kY({slR2wPl)Qf%!q zLQBHv5^*>cu8zRW9lPC32OSz}H3He9Gp>eLJ)rEgV^*@>@k2lr1vw64o%MiCRbYqB zIhmSE@`W9YzS$%(0@7ICgK(OgK_qy+Br3BNEr~Cot6Eakpn{@_@uB(LjjC3mj0=-x zA%mx^Yf5g@8}2D9VGqe-$ea=r5_)M-5vvx#4a z2dQx!YRV$8NvC8tc7^sEoU}rcS zc83_%8fP+uUW@pC6L}$*pHBw12-e)g9JaWOTW@k1Gmi8gRw;>2Y@voDB4M3%!p_vl zueqWZ)6{P+MSGd!hs6G*2cdfl!UH z4ke+|!I^g@WIJY+(bNu@@*=UGq;`%_Bsegjs0@L2S(O|vc~aFNXPvDPw)soI6IiG| zakStRBhG}6Syq{gt+W+7vuFhac*-!^hsy`Z2k5t2)Cv0cIXZCT>tJRo2!zFi(KVZQ z@p{SXf=y(Kn2niZMsjc$@Nh=3_bJD>UpE%y_fL{keegft+6aEB~otc=Qszs`5X+8S` z99D@592YXMJgukEFs8l3vcP~!Nm4WUF%|7jHlCJboT9W*Y&9ZAzYDYXz(4wa2jfk< zgEORLb1LE-PMafEzHv+;+W&Fc5{Jim1RYHw2{)v9KqFo$92zDyfF^KmcE-*K;?Bt? zqv0hR4VeRqszwppaRX;I40Q6JtC+=r0L0$j(ZE&>AxTQ;dZ6|-GOj~ds7G$DWgt5? z(>Mg!WCHz|IH$#|vY9kGR5at2Qi7|vrO$Q)3#%G0)sH)+V?!zA*{Ek8=ZjJk@Ilxo@#MOtX- zbKzf+XhQgQxDA(61$sf>7?&~&p~G0Fu^jK>4dP=}r_2ON(h7>2Lg9`> zhI(LCH4QtAVt2-?Hk|`9Ba>PwGh>lSWFDx3e-JY*PlzwM3qgp?D4nu6FyW^Ny9**; zmusO$3b@K{cA(4cT!@CF#Otlw07fuS^}4nL_@qk3oI@baG_ykQ0&LB ziE1^djOKyu-HTTrWEXSa69W82{$dE?_9 zx|+<8lXed_`)CbQhJ@)%$F?nYF>jFFCoNExw|AR-irOT&6LSwW2X0F*G~fSv%VED` za(}u!HZ^Zmxi#3%xruC7r<|*^JLS2uU@i5BbIiD>lQj{)cHZk{JL$<4MsKfB3kEES zg|Pr``6cqt+2(13`2FXtt+X(6^=;9w^nxF#(^i77tR8 zECq1>jImsFpIz=wQ+C&XASptw0$>By+b% zcy324MyrZ4I=d7e!8qA2yXd`r%wU$ObcWXCN`)A804D5p5n1DBPt-W!Jt=ggc(1~ z{KtulR~65Mn>HBW2=QH^xpO6$VjtFN538@CJ;olW7&0AW1p>ZFd1^gC9t6C`gbG5V3Vc}AFDj7Uya-rLws42gH3^l4 zSqNV#{wRf9&L$s>ksu`NdLdi%X04(lh-AmMarhQuW$go$kP0>=>078&c*f3esXdw_ zSQ$U-Y@e=-j$;}kYrbeB@T7@VAF+xXugb_Z*35#5nuikV#Jm}3X7FCVY(oA0za{Y> zM+5O+F#cn_|F`66=yb2Xo4tAX0uJ@*OSR6!rLWRT&kY)nmLMVdW&!aW#AwJ{BBY&L zmEt@?qbBo|u%Ap;B1$_Yx{ykSHFW@^rW94%!7Sr!zzzp{cP{+f>iFNlCE^(og!=eD zG}s@A|1df_6vuyT$>THTp36Orsb@DceTRGv`1=sgeUVJQeBCp`U`z0?BBRa+$ahQY z@}bhLFLtzMNmpJ2NAK*6p8Nv(_ggwKdIQ-W742-cz+9M-Ep3>M>OtjhseiXtc>S3b zo}8Gv#mnHiTS13Fmg_R*zce(RE-M>QoO_oi?R-g|ulcpx^DsrXLH&jWBoj>G1~8GQ z^#0wxW}r1T&?z%}X5q|G0~!Vsh%@=wh-_le8e5u-diL1z)h?+BZfGJi3K?X{jDFah z5}sRka$71i%(P1=fmG>^m$(GwdnE8Gnh5w|;AU5HwNk+p>ZBzX1?csHAG_EOkz5fx zrDZKv06LmZcFrJsY%(O5eD!Fukq@DFy^E^OjK7Vz(IOL7?=M=pkP%;8kaBQ&KNFGZt68lPq$iE6-E@s0Z)BgypL@ zuy<+J&&ueso9a?4q|*l0b$z7fq^j91@J1Hi^H)cB&C{f6ox`Z3mhk7m*G&XDi&&F? z)=zW%|JmsQ8tDHi){n0L?~CKVwd840{GaBc%WF~u?s7*kO;QkKT_s=-xjeg5BVugt z%IdF03?DRQIBo^ZdrQ{rlsGoli&8aHb`i+sI3#Zt`(rlnj`mZ8&r&=nCj-4hypo4S zIM|opJuDH_2*>NPHpSm~9#+)|s9Di83mXXN0c5ZAltP{WX|MhK#Po-yPN5ZaXsS1` zVa0agZ8c;ybcIg1p6BdiFNG+3=qNyY2lY>J5hAGH(YUebRANc=$V?Us|K#mxAvKF3 z>mnlnv6KRFoDTBaVU!=Qqutq6pa^tceq|-g@^Y7QOGAb1FbQ%>Ea$GOf{|kyhIZ>O zLcr`UWzP^wo=*g7-?|iJNU1kXQg~r^yGZO-oa$+lN(wiGM|bnaLUHn*djr$5LmI!( zXk10J1pDa@;=#zJzI_xwndLq8Qm0zT9CbZR=@IsOLe||Q@mA^!y z&y)*jp#P_{eog;3fH9%s{r~(w^W32|W<4jY2oXcsg5etN(y=bd23WDl@0ND57rXlx z{3FGGJ1ZQo_teGzf&Tu1K>Rlp0Al=a#pB_Bp{by5ECi2Js{j`p6$8t&8B$A4lyXi} zmPKT`jJgTI#m~B(1NTR(r8peCKF*VH!ywMw^sK?pFc&7FKsY<}{Ait_)ReFlfLw2EH_BfS% zuT@GPIoz9dGH&l3)^sm&PraOd>U9bDdLMYlHtwSo^|^uD^MTH=Y0x{w-a@D3xeB$8 z@r4^0z;GpQ)LpBZ%Uz=>cN#pm(&9q6DJe`9AGWD8zgj`|#;VQ^=bzkTmgd++D=EG~ zDH|;5C(}I&c2UYV^4Fbe#%k}A zLLoH}(G9DCoEGW5z;}&n@h_@Jjt@&thgHIorW#eXOY-#TxsVP=Y@r0VY%)prP=j0$ zagQM!%EUO`$nd>db5bijP_WZC?k~a(ciS1DUEGt9PQ2KS)_Q%EXnhVZfhe^L*H7fE zp}wcCad9m~oZU>|Zd0VJ(;TQ26b|Nj2PqiaQDs}t9{OmG{9a)RA8fCAu z09j%l!q3aA%rihFaCT)_gU(*oU1;2440*4hHNiukdeVC;jW$S||O4dc6#KO!u#}5C?>K5J@Bj8w4PNoDjThqGlGu zCP+4$sThmu^@cHp0oP>Ym&{dI20G)XyGrD*0{ufbM`A;X>-Ks_hU2oU59}{hOMPW5 zdc*=cC^^~C;v7i+F6($6QJXJ2=+HVLl4OcwJW{7iw@H+o2r2VAW>W|c0Zlf}(5|8J ztwOq_Ds?1y6_xpLCsU3RIrWAN8SW&Z#4H2Q;Gj|L<*$ZrZK7d77zbKTrT?*NIyEO>FbWTxFHpJ*JUgS-<^yfRM5$p;np)EWhw zh=10p(GoYyzR&%D4^6elM4+|q(z|*DLcNSa5sAWkb(o*{)Ad&kA;nca*Sl*gfcfl{ z=gpohCKPie;oD2BSS*LW&e0uEba#cJzt9N>&{||59bf})VrtexN-14c3Dk!+Ue$Ey zZ5BvCga7&!NY`p!I>W5EUWy)TP5mAi>Z+t|Z7|XY)oVO2`Jq6T7y9Ej8@-*_72L(A zDY^pH8qFk%a*<=_>N6oxmVy3Vf zh@@}r80zZ_OD)xkxDueD!yS>XT>_*uRG`c?lqbh+_raPA0x<4~S#*t*v#kg}Maoj} zCM>WfW~@TFCrfZ?sH{>iIY=v5Zg2l+|7hQhL+J<1<0b=)o)#%U8%=mxxczZEwlNS9 z3!*4Eh-mJCil>8}5^MyePk71Aj#8wu@F#M3LRe`^2q9wk-A82D)4dA;96$3c_Z;&> z8s9sH3dvBDJnxhbI)@<=rkrtTQWrK(I%@YSS1tK!?4UnH559+cz#{5^DiI2kM_#v$ zyp0YGaFbvz^kBE1*A5yX9}NHS2GBmjiwdED{Hl3a0*URWrN z7=ZBu`@J_^53u7B=IgARMef2@1|egU1CUwf{S+^agJ;3h!XR~ZGW+OGRBd%uEOhH_ zbp~RTQ_m!Ce91aJJ9IP6I&%@{MhY95hlQS1)n`9p8%o^N8NtH8+;zAn88 z2l>NF^rRm2+L5JYe|K1TP_0vVNeaq$p$~V-nj@FiK)f&d-@RUKj~KA-u+jA`cqX`uQ?jKB z@$H%l_0pP(aJHI?a+#V^4$0)Eq(T+bp*@gVUCfIntAz7aUj;9nTI@O+~GqIZ*#JA{qjI=3x65r?TF$1E*4l;IKvZ;D7oKDqIaslccxYdL@8DS z6;7c0;zHT=gU5Q_9dW;rygPbDNJT_hi$L0Jbd?PoDTV;5n$Kkh<5-Sz`@o| z$2gr8R8%@)7vo|)e1Nv}lRTmy9{78CcApq~*x=Fj3}Xy9s17D_@OQ)^&YG|dZ$G{@ z(`UN3(>>y9tj@6YLO)`7veG6;DZU z>yJ=K?%>IETbB7FX7<%t?wOW|C10dI46m47Qv2lvUBnQ$Xn&){?iH38y!;+)DRr;j z{=+Q0y*q*A(j9FSkk_m#p79mGg6wiFI|Gg^>x)r22Tz^orlDOr*2Hm-8x|p!RdAnQ zLC3bpy4AxTU0ruB40iZsM0twFv@H0b+hMml4YCZmv>Y?~gRXng3qNj}klGjG*jKm& zg;XWc7qJ44R6`rbR3s5A;HX`MC4DCIe>}Y8S1=lXLz*Rji(UqIz@%bW z_%m1sQAOv!5M~Jy%|AC8k|+aP3u*4>Y(0_EwDPX0<=~xoVpYxH$zDf<@DstsP(orm z0omI~;VKkoz=CeiI+bHAc7b*)n|lW?IYlq54<)r_BQI?*p#zqRraJ zW=T0o5r-#Grh>6_;ddJ8V}}8B(BkiPBhcw>;}$utC}rlh^iFTnywWnS!Xd`Qyiv5; zI=0cbTWF5k#6mW4tl50=c$!+&5h?OUEM3D(c2MK&*ZQ?zj#slf2PPkF0*-KD%Tf_eLtyB1NrZq+zF~L|Md?H1pI#u57XbX zsI%!Omj5E}=+Nyy{hp2>3iw_XuC^M7EWDw=#Z!U{4KNRW<=K60Q%u0Z0Q2qLgUlJi zdrnBlm670e{gh0_h?5yJx}50;#?)HK-MB|kqYJxJ4$}|<6zO!0iYox4puirWI3IW+0@fNKH6IAyN% z*Uz98CBD+`7aJ!oq^CapZ-M{U{=UAU!2R!`!Qt5dV@n>!G>Xd|EP4eUBgry56BQr0MYa^P`lbHdYhn1c#IQd>7p7*Zj7u~W}!OENb z99HTbt$qb45R}X@2c)=M!I>q957sP~E$RNgp&M_!X=t$5GTpiKtT~siI%!zeY0@^O z?Q9x(ue8a(GjlH=G*jw5gd)1jEH`H|xC&~nZ@0rZJq7vK;4COaIVKLqkKO=_7#H?BLlu4Wt3=TRv}LfJjp7nOtXPlS|uj0hR>!u;?rK z0tfR1=_G|SLaRI3`6$uzJuqLV{+z6YX1a9bxs=xMPFE$XGdykGyt0y-o-CP1j_~{ZYPZ~ zE#r{6oBy1#`*V$^%vXU+%T(4_OJ+^{w(QGd*tszd_x?=ARj3c&wrb80SKqj=h~}2)&!7-E~Z9DNRJ%S ziAF29Jnu#mxp=W#jg4s7Y+)Hm?&QeIiY(;JY?cls_*cz-6t8~_bK3%mtI*9EgSebl zHX6@Qx6=GT&n2rzz(BN!XILNb+QRcIHgH_Wl;+%q&z1utC8#ll`X-))_muVUXox!i zW@Jt&F4-k}_Qz6fs+UjSa!uls{P7JWDPt|Ymj_+que#-L5yyqn#MW5~+|VFo$)pTs z#VMIQYN*ZWDzmR8pO{@6l;MFLAVbs`ZDQNmZh8avW2!ZYaz60_ivD`^Hlk*nLSM7%Gpzg zv#0+3OvT@y&($Jjh)|r#O`k^ux=5O&Gp1w>so4OGIVD90zJuDLV-85&6SBsN!u|EexG#fFkR8^(b%Ajhf$$2F_Zk zsybZGQQ!`eZcwC~^XNhXME0uiz=Phv@U99!0O2*MuwCqm z$(`Ja;BbE5XJ^od7`mVnE?M|?uCzc*eAYq^+oa0^tjQItKpqG~>qfVPXcsL&drsC^ zFLC-w8xbDQ%uB9=B_sy$<(T3~QmfJ`2@^2xCQ<=(fhbsAJ8x~xxr{qND`Lr9U${l` z(@4yjc0d?mb8->-V;`i}{F*9>2BA!606O)6$jnb5S9)FeK0p z=67?)3ETDk`I9rwI|E^X@$Frj(nn?bSWF^1c@*{&fCzfzFN)`7smBqR@2-&3g|PA` zJ!b}bDWyRoiqkH6aEf+G2M4e8nv3R%KrZvdU7?{7R2djYVg9xw!7yCn4e8W7@9X2Up+_&cnJY+9+$l<;YuJ8!AqrFcrvprm@Rd;4ljqS>!Sro92{s!Gd{rbOfKwy{pzS z(m_e#A=P~mH&02iCFC=-K3MVt!-3=F?P(0x%)Cv7nEwzM&RpV7&&|TgK)hn`?T9*p z-i~PXMst%5?IZlG2Qz_~6?J>g^*OwN9c*el>MI_Br3FmGN~pSXl%4XmdwWud0n zx*fN3x$V*sUDPTBbi=Ofc3pIhX9i-)1=j=%8=**sUbHzDn!I9`iCv_INXvxV;7(iQ zS(SqI0%fr(Hn*%)XEoq$g`lO`Y9G?wHw+8=iD8pl2`f`l3;jXP6! z`O~5cKCD?hCY{T?D@mJH*m3w=$h$C_d9qFyg*&?tiwfcMRWq&OuJyPX5c})N&Bsl< zK!`4U(9)%6;eZgy6cR_WugT!KHY}{(s#zAYCyrr2B($o&9HSq~Q}x@&G>#xZ2W~T~ zwF-}I8CV?3Smou~4&z{Um88Oc%}P|G5GdSAiPo78F(msz$i~S}RF@Pw)W8KlSDSZpklr!!i5L1(*0Gprf;n<5#@vwvA zHrsLo#9C!4fHut#Og(NRa)qTV>m=G(v#}LpoWi^8`YVl7P3cT(ih&*H&O;;HPiXG% zHs`K-;mpwoKBh9J`Wo^WKX<1!=ajM{^CYlA4YC|UMyEj@V451_*hxML#X@0D?U+@a zj-!E z$8nw_hQ`m!>G9(~(#ky_;U62F{|$`}2jV{t_s9C5mOQ=+;y^BkXF(4~O0ufB8&uEI z#cdHreyh+s&EOBE-AD!q^URA^d{a1T^ePvu6 zvD+=~looCALW@h0;;=v|TBJbn1xj&>yDpRhMT)x@3KVyj#ogUq7kAs;x%}UIzg&C2 zWG49~Gn33@p5!FwJd5Nnjxx|Uo*k4j$}#meyHM#HO>|I}v@$`=te;z{>Tfp5ou_K< z7-PPfCDBTz@dpvC2DxrPGy~n}cx5(h8;Cfsuif8)n|08sSN)&+d+QvcQ?Z_lK2Che z+xtra=9lxjel`-#>)~+G-+YIHrb;1<;^OhQG@QrkO9jXHYFWF@VMlvnnK?=!ng}Te z&WCX_N*roamA!`A4=$lSHSu0t@2SkH$|8*2yDo8TOhH+vo7y7-Y_ohJdl@`n&fIv_ z9V`07XA?wFxtImr{d3E8bw=X^_XKtiE3bIqatp1iCdBHKEwW8MLz+9#{O~|XQPT0^!UVE5+Z8QCw_p<|n+4=nl$g+1Z{P z0c;D9Uwazip!+hSR|0d1VwpT3kf@O9j+h2AttUq^*FjQ?n|o!>#PHX%ITrKxqO1y) z@nFlKoEBje-2@8Lzl^Kz*31=IZw8&aa@!LBR0{4t<9L&MVVz`u_xtv5w@ppX0(fxH z=vK5Z!PF^-)$oXQe#cj(#}B82Y`b2L^9r;BO=DRwWE~)h@^J0%@HX+l%V~Q(#B#34 zqiW9Gdhq#|-RmrKY}*U5f!XbVrF$<&z@!bO0@t2&(U$`fQbj2u5JI=1swnA>>-1Hu zB*V;G$+kN7U86R_uwS*JIN}|6VI&~X6?Zhb#-~{jpNiA(Bgd1>(j}v;=i4ncduHuj zq2X@{7~nmVY8tk zBSwJqpn4L1@VcbT2Xu{>^ynMP8Bd;V?>Lh1vpuu3{zm$sF#FG2W*!u!SOpzKR`^5ncN(~_fzEbmtJ8G=K1O3n0$*TT4CL+3#EV7y+ zIw}mS0Y6})uagLuG^E4BIc2#^?8NmZ)H8!O|JjbHM;i=5_d2JDP*jR$|KQP->3G&O z|BD`Y&YZDa2CJqUNJ-(Df8!oY01Xz$;#wBM2R9evcV?OC~rEfZC;_A}_Wk6LekPx4O= zSM777ml|UT%|AnCUObW}?ZmY`p21B4_B=L>_#HJP1y}h%2I!g1gq*Ts(m%Q(dT2H^ z?VoQ4NNsL1h14whwHAJQLqB4_n8oAI%#FuLCDsDD;O+FMBl8O)VG8e!sGxYM2bBYf zS6>e%-B~mGgVF<9v#HrW8>iH`8%hKKeq5&`=38&FyA_B;PY&j%9l4Fy2X>=Y`8&8J z0=!>||Jeh$G4DZjPu`hHhJZ>q-G38M^paQuOD6YpzKDYh2*d}u7W)K-e7gtz?*Xvf z53JV0o&R84;&9BOcYFEk5IOXE`BUg)gl18ke0Z~C6Flg-{0@t`KuV}J>=i@ z1%w_+HwaV$<^OFF$e(_ImC=ISfL#mSph8s=NoQ9J2Z>CVKLQ``A^eGe{(1KWgahdN z-vj9P9mpLPRp=`3{8gX<`->3 z{22->k<+?{gsA_D$jN@>yN05@J~Yup3De6rbSx{uO(ge9^9o84VAe@wcY{T>m7L(F zp?u$XWe)Tc*4z-PCWl%hRK!@n(g%QVoZ=9oci#Pwr2~*0LQD{< zB|zvks1nIM3;f@Sdpp3-9zeVgmWB1i^PHH-2BJ1Lgpl@1ng7qyLP$BEQ|7kYODE{< zR(MMj-2EgE$|nNQQU6AO>b667pgPF#|05Xt&$n;~2T1@?|LYXk0WeM=S09W0!&K_D zDn@IOA@>i{S0LY~Z8u|yV#=Wpiurz-g#`hb6|cxT{PaE>fY#3gDn`X5&g#U5NL;Dg z)ltifoy~>@q%OUr8@s)I@y1ySMiUqFuv>ON#nVG18o($eiLpy14RdNMTn zkwEUBI}r62ggrBf0V(MCmt|Z+Gcw{p?sCj$6OvVqfUxWX&G!5^z)b8OGZxTQD`_E# z4MVpUrujFQPA<=M84Aov!%t7cPa*Z&q357pz6-#>Kv*IsB-oII#0%jxfgf|q_qIv`TJ`)KnS+<6$JhKse|q1{Q^J>504byvU|7u zzQ9&QB|vZkASYrr?%?Hb$CO?GTL|FeHgGr(G-&NKWTb!yE&YKHjEqkdS^AqNhV0(5 z!Sw>_{fP8Ve%JRPho6buhc1HO1jyralEg*8B`zxgtEY;>AxfDq0q&#!l=!cT&i$vN_>WIlS5-QPyy*qB#CVWK^J6|o z5WO(q9Pu=e{I9s!5oDAULA423;yg7MwA7Pp`w~jwePo2EI&}lGh(K7>0Jns_w-CLH z?nfX9fdfx+L`FowVPdZ55M!5@rw_$9Pd|;mJqV|#v@hl<3+d0?Wldk^PVu6>b+fk9 zuZCze2YC^p3?-FaHy;x9Dzs|xtqY}*HPP? zYh{XBBFn}-1EU2qd24><|G0H5Kx?Sg_q&2$GEKLwWewcV?uyLx_KcMFV-Piux9+hj z?ljU3;`z2VjZ`>kNrq-Dho5>vTRZos$I(!xA~h<8i6Qn$RkOH+){SaIOK&ZMbW<;F z_LN1`CZ$L(L~Tyek#(?XUOrJvc-<59e^LUj6ZtI{F&aW$;4%NGRi~7aqGA}#>)93A zV=hK#AO9$HJHv!G+|GZ@&#vJ%;bi^A`km^)G#lB=7nGx+lMNcw=z~T9=Qko4m?dEn zp9HA<=thIBvh5ebG-jRcShmHLlm(-cU)Zoknpi97c9NYkB5gDz~qu&t`zY$+a z>+ankdTLjC@7YdfjK)Ez@X=|YkaVE9A<-`BsAvx@iJMPSl*rXVI2NSLsd1XG+>)C{ zU^mHeEwAK6_*ZD^eRFgW9v>Nue)`?qmKiC3e}3^6E{1+_G6+=Q4cp}za!Ib-PW65)UcR5Vmnx?AeBoM28Dt8tJ@330ghS4@BdkY0R?GbR zJV=ooHw$h+eeO{!$WIVr#qc$|raLU5Sm$IofcWwcm3&Xq_P?YewZ|mh??j?~a0HJR zn1*#LnTqR&)9)jL0S*S%grt$k?*e8hep-YDX!`mccq8`1PXy3h`cv1sAqt(S7OmrD zYEB*%A%r-&G=92QVxQSe|Dygh*X{l65~G4Ru6Irx{dn7XqpyCX+A>y^^0-}Go=mYKf&o< zR1c$++6f|7h699;u&e9Z*v4ZbPGRM?-(|sdG`1AU4cY`ZHdtsfD@D zV~dufw8np^n8SvyJ`JxtVz7A#b$$ibT4nn^7CNer%;Hw-aNUu7s)?$8-K%A$*Nl-T z08dz13TLOFkaVc@N-^eP7b9mAn?sAKcWbIvkf@yDJjz7$z?94VtR)W-@q5m zVjskU$BMI>%Y<8#T3al+Kd99^idw}JCMYgPg&m6{%VtHlUW}DsEF=4MuS9;jo(I>o z`*vf=a#_V`yuu9Q5GOunemM@y!tc*EjZA*1f?DXSf*BT+=f1ev(iq~a?L5-$3)ZF? zp9pOZCten)Wb$#kv^NZjE zOc{45gi#Cy%z3DDSk>6uAD$F0LLG&T%VDtLY@NvzUZ+}O4KEj0n{Sw;vFZ2C1l;~n zg{D>(M+YL3#{&2(;$ESw+ivqW@x^4MhS;9ul`#SSUtj37`sD9wSuI@&m6km(3ooxe z8F!_B;7~9DqfgGK6P)0+qAvXASzGcwNn>1e`#2oIBwUY*jxXP6)B6*QYKfiWoPrNU zYgORK${d$;y{0Z;nF-U~T#%eb7eRvu$8-%;IfU?(7(CO#ge({MGyfGrEi72W&-(oe zKSohAhQ})3LDtw}Xd18kue?53k@!V{a*~WJTS_&%e^rSxb(j%r*6gdx22h?@oQ>o+ zf*}k&8N_7)j*{tcY(SVtPR83VjxLJlRWU)^gng6hL*Q7l?7UG9*3)P0YGlK_6sNWK z=vAa;8(poh#Xgc;t+3z}p(!Rge2$i|jO(xO<05SmKxsXb>EHiovK*n=KL7D@Si!xw z@HPIy-U8v04a6RjHLIOjK3dlI2OY);Rvbh5Dt$AJyP(H#lk2tg!X8UfE{r0&=dk|3 zxQ9*1Jh9r)Vv1mEwZLrhR zYOO!nuBmfc@;je{JJ29Xev7?yMJoP0DI${bySO;d7t_EL{aIGCz|S_Pg~Px(HP z6SLtVtMoF$GQ-6l za>A+XY!J~rs!lRx)MpvIV6#34>@CNVvy~IYp2B`^M(w=OueKF* zkd#`y-E25z&hL3s2fn`JYb) z-TEJR|6&GCpEVpWPGL@u3t328c>f4;t6I&%xMvSEbLx&|gnZ6sIwwcn z^lZsX2^p!8)Avo*9%r+~Lv`w2?nm#tA?E6_h(UUKvrv&R?ACDVFc&?TSL0iR6mL(9 zqfC%C=h3F1@V8+&SaQ1cPmq3Ao3&*@%0&$a#6roL(Y;mpXTE6pHW*0k9Ld=J_=1|~ zF!;(nOys+mYpR-2B^28U!`NH$_JpqP%f&kbB3)XvX2JmMfPUxJxgzx!ONEWU8;SQf zr7~04m9tSy%AArhycZhy^gAactjVplS`pM^5;*ayI8~eL#NFZs#z#IRMVN((nPf+8 z{CsA4U!C->6xR+>oYGRQ8M2QvD3<;*@>yf$pAk?DzK}pidzZTX)iL-h!HJ;DqKz8L z*J&ei8sZZ+^EN3=mcjSh0nZ-@h&9oTiKf(rtvurV3ouqK8i&9_f~`WZmCMiL`yw$+ z3Da-7J56_J;Nm(1uyg_KFID-3GGRG(^SIH1a!YxoGgR95W?CYea}iXuUn_^FdwThO z(+?JUK8B0zw_jFAXsFC^$fU!RM-n&}i4u;VU%2HE>^~o!7oN_pjFN};Sb;csBXH(} zm;}F=ck}GNa@NWFzE0+ng!L<)hEhrDRB53s+G*n~YO2tQRICntJk(uV2QT=|5#EmV zU!icYNW!0QvOg8DBV7MBx7M`7e;e%|Ril<|b8%y_!?5PZ6$rZpS^~B}O5XWO8bMEmZTVg5cP8+@TKe76^5o zjFDJCeO|;MYyQ_Q?3-6V2C-DHNvMef;(=YOR*Uu3QIygbT|2US=@QgDZ2#=|_v1sa z7q!>#A*>qz%!1UD%`VNtzyHo?u8+Mlk8cb!QHVF-m%vM9FL}=<)Ac)`io>Bne%q+N z+Bsw2)#=xQ$UpX=(YNC{=uDKJZNm}Zel+YU;{i(x(l)|iADz=zCePLWAT2_GSJSXA z%`skOtQQ{Xs;jS7D7$QWFf`H_e^F+z4EDWdHIh=nk6*AxZ6+c^<>B9}2wDA10sG|> zIwKm`J?c>XTyd5F8>Zpw7#32B`x>#AWgoq5=KR5 z*dLE>4E_}2o7gR=aez8~G4PVnkp8eqrqd_qZNKKM{&q6BX7Y3iLnXoHKvso}{g{fX zh^BnJGD-nUo?3vWPFo|^m*E5lDMeQLeKo?V=k*8LB|6rDXE3fvb(T!Lmi2EK?5m`)qAt4k{Zv6*<|Q4chX;RK?|!KZPYA;w)V30ngwscCSQftS<=QU9S2 z#GFECI^VaSDvo=pae=3y*u=gsetv(E@}$b2>h>B_rl%}yY;}O6`VU!o;dmskL&QSY zFwTd+M}MarYc4-u406YR!>Uc6e5T+)QLZ+~%#M4H3FFv4ZC0YxROSC-9IqIRlBygk`}!drgpoz@*4Ztg1OY-i|>b9ta*0ZAM)yEQ-PwgqZlyJ6lU9B?86_^ zW5w>~edbL9DnB@U3s|^{+-l*IOb0jq1TA&6Jbp@w)J+{JFC}l(*_XzX#^EZFJe5ua zKaYeG>|8u-M*K74&M#dzW;Odb^!7udm!>|t#;f*Uzh*N#D5KvgalMpmFjgQ!-EpGS z3Qm&dn8CkKrZU8Or^~(h+I?EctDlxy>Gv}ksk43Q=Rah5bLgLU;3OvQ%Xb@K;lZw$ zbw&$#orE)PWD*$lNI6(y{uwJIpbZ9fS$^~Ilw!Z0WFt%%%Dl3}RIK^Dc==2#otH9M zJ3y#`b|#{MZosNA+N*BJeX`-`04yx^qL**bU&|wjI21EuS+rMRH&eX14r8&}w%R3$ z$6^*w$M{n0PO$@^Dc5b~y`uGSEE8&fTCi0!g7^beKk9jaxv;)(Q<1aqp~iQ&R!zid zH#wdzcF*=OV(inGy`u*dc&lG45PvqKa*ClOc{NCc_39tfe9patF6s?$|9J43tLv)| zuk^rLpFPPs*leh+UUn5Z)bQTYbfShhkiPizSHqtcY!MN2cda*h|gLuR3Z4dMf0_Y|zOyw{+5mN|kjlkF4L+i*TF2Z!Z?;DT1Y2 z^F>&{%v$6~quf?c`=*XA2J{Q<}x6uKUT| zg-LqtMQRPob%it&g|TQx@o&Lb9QPB|#&U%$RemP+D;&=_0|ZCByuRmeaRs&AoOWub zG?92Jzb`b|u@z~46Gq$I+lZ1CeP?8*9#b$<p z>`4WBt-Pu>sT5M!i$HnOM4Nb8rMbTDxp=~fDm=hdt?p5j|JWTq?7l0b*aa;TrF^M) zck+98nl$&FS;hjfo+mauqsjw6&JDNJG4Bvjl*Y;*6>mS-G9P%$>)`@t7BuAS1vZ{A ztK%nN2;+GwCI>?<715uAG~z8KC$g3WNcfPfx9_Agpi|ne?!3Sm#R?xT_wsl(%to4C z_JuPuRBtn+H~bvoBZdZyarPFg`oig6;;aIPPr_~gfx%pt`F|CwD6bGqwczu+uW(OV zbO#T#5=#5Cxj)Y<8La&PaM}K6GZ&^*hmW;;2pBC>CjWbo*sa-HqlLUQ8xI=viSB_7 z3)YWr&(M#;$!Dg*!9wQL{OtQE7E1H~zB8W49?UYzmd4jQxebK3dGNwhc^eyQlt{rp z-17+JeG6zsiC0(h9cJE3`LVRBL79-Hv_fNC3R_ z5fA@7HN5`FLC|F|v5{$!*IiK;B)9mSkWdzrPzK|-``s+a1Q_dRX_U0`E}B_xEXzGX zMtLLDi~%~@h+~NU<(rMY*zQ6Z@0`>2jn#miV)9pKySE#A$WId-&<*UsFa0&o+Mpo& zCQEB5S{sBIX&BEvymNB5rCR#)G)v(PSF2+$Z?!gLJ(!tQiGha~otqrAfYd%i$lkSm z&DRl+Q8I91^?|(g;igEBSh$A~s;z~A0#Cnvyp$2HA!G1>Wew!)I~@o+Bcs0FLd zU5chYo~9n}_@~7evMG||V~{-3z~n2##Em7D^quaF;60+-_`;+$i~TBdEnVKnUg41$ z0w3reInL^~=O^Ff*>@KObg`|D>_vCHd(pUt|GF;L)%lX5h;4_HXK~;h+6<6y?lbwe%qL;mFe%=ih#8{ljrC;ar z=J^hTNbiBN5q`9-*(bucFP5>g9YUlzXOW4x1w>J z@4j!oKTcb0LrYGR=Q3<=aCY3Y+}mHAxKRe+WBT1dom?Kb+OGU2&Xr)mR@&clgVCl> z;y1m5q3G$8!=+8)?{?^(C2zM2kyl zwSxb}KkiVnH}?c~s)l_QPG=&>`s02!j>t1q(rLI)=FIX9%XACrq4x&68vc6}8}Da+ z<$qJT^_xhwFSkOe7NhFcQ26k_ckjCvmn(6dQ2%`U;IVYDS3rM%uAxyboGRw^;Bs+J z5y`|A440z^ZC;za?Axihm}4pnzOJX8T{~Ncx!oyrj_t3*uJ3L|kap2fdvEyF!4&tW zj7$;Vhdx}m1EoY~7NeTf4}@CSZ8M=CV_9gUK2B}fPZ1J@e_uTiW?gsKugi@PcwRGZ zS1E-W1^Jnt8`FFRD&kW&2^K1??_6Oig{F9hS;4n46uB`_BEYoMg&nRHN5P`v@zkbD zR<`<^`}w(NKtP~ir*pI)Gm(VzC7%+rMNxg1Mk%dWgR_-BF&~YumTAXYbm6yy(Ln5C zjAj&;tgcO{yei^j=Jka);XBkd z8REH-V(P80UuFLh=GpIYSQ;3f#QiWnn2_9N-4hp{WW>)eEX?n7XvPk5nYidV13nCC zZ|ZsRI#QHu%%KoAs=b ztF7#`-mrtcIom@WCl@QH6`i$2eZ%|d@&1*#?|=vOq9e{?$L#C6Z>BB|6PrDZxi%D> zDrF(ob1q!8hTZ1)i=DexE)B={IH$ePrO9gBHN-$!u98UIZ{K~ZS+?2E?Zr&a@|L%l zxPn~D5>us(74Bmc0|aHQvaTS<9_;nHFnXD?S(Sq7GG6e(}bhsQQ&{4q+CchSV`<( zalKV_@4TFHUrUGsX)}{^`|ebsyHg8Q$%oiwGHt=@Iomo%7~UYsKB zcvtEl-ClY^#pOt*o{YE!Wla&y>`A^U#0XozBP~vR0IA%NE^0-Cz7p7j-?PBhM(S6t zJ0xMm9TOC!hQTX!@m>Li$ZRg^hJL;0id>N(^0TxHWUf@%Xc;RU(g<$m^|az`%(e}! z+^iZhkE=dRx07Obgt zHA*sc8X>dAUrORIYM^g4K7SZmzl6P~kRw{V6y?^fvGbW@=W4dwh|NngblhJweT?mC zudLxbHn1>&UgemDbL%;tUr^1K)3sa;J>C+XtQlGBH*LqVCxH=RbvK9QZB7U}D(yE* z+8p|BGZ)2k%oM*3m8cUy*!6;XBxh9Wf{_t+)Vj^Vyk+3Pt(q4AYQE&39&rV>>R^k1 ze8Du@2EGf#mN&ghb9OLry~75qu8xqZyvh2wGss4C@&KW2;5qTbwODoX5p~9lW<$Xk)kPaa5&L*6KFLZdmDYKBK+n*F~u9Qd95l?s{W% z9(I_xoZdEL;B#IYSEwv_)C8}(`6+-^Zq1K%Xe|6$q^t>5o;IL%3Rfvu;=8i+t2*)? z>^IdYs9_ar6X+KyUy5%Co}IwjuA4q8QMi6@o!mF7I@`nyPvZO$RAqi(ru}3JUqfp- zJvHWFgh^!$H}Yd+-Ey+X`F%G++dd{k>=v~_E0Z+Z z7Kyy3qTq3nqSkN0!M5>^CF~L~K-h1`Ziz`Hm)Kc-4z?NDEaKlV)cS7g0)loNd z;H{CdrEL$>Z-mX>+ywOw?v-UJ7DT$(jTpM$FXpmq8@Ofzi{L}iTd?=UV7Q-I4QHeA zOxW+a(pLf^OtVIHt@ASrOPTO(>-J!MBal#wvy{{I;*gw3uwiq#P0^!01-Qv$=OQSM zT^n3yy;5v<(o_$1-dya^pEGFknF+%jxQV$1w>X_YgkB5oG?lk~?I|KV{*cyWF7OS& zgtqcjq95>GIgPZt9r3u3cvv2(?)@I{qa$_2rT$QtLeycobPB?zKF0bE8)T1bVI1e5-Q8opx-Iz{RV8gJC|2(x&I_B) zqhlsFSdIkiC4aZ+$^-$_ho5*W&vGy;eB#CzOsUX*mT~Df#SaA1<7OJFtvIe-Z~`d} zrl`0fYb_(baX`{H{(g9J(ohC&Yz7Gj+uFfctjWlgD zcYBy;_Z0UQ+hO^4dmqn`Uy+`;4z}THy+#f^Egi&1Pn4}|tf!o-V;5uNmirWsE$=Fs z9O-}-oYk!DtfV)=#ImomSl(QCr>oCYm-bUmIrqx+E}RPGWp-!&jAMCQ)Xuj{Lhe&V zobVHOtyG45RhfBr{Z@tnz44}tX!lsy`isHz-m|MKRMajsyUzSK=rTc>GIYi92no{| zR_)E_ro&yyq$plNZ{H@%zV$OCR+R)q54T5a(Ha7f?$3Q&tsmB6CgzdFZ^w=T#Jyj> z*SofzX6jh04^{_xsDTJfiCn91w}@b2eA|9+h0)j6qCo$+&Am1S;?ub|LF{VU1gBhb z;ylRg)tA>j(LWisagf<3FI{`jPOi^<(UIB6m)B3{a~qciM?V5btLNY{Z% zF5%g?egEG?_=UIhH57fXF7n|P5*&;bcmu5{?|WF&6063(A$W)P^fJo;U-anRF}VXg zij^#nk>CUhPETzZg?*zbflPHB;qeY;Z|B@<)qKMPdJ@x<(*Rm{X-J(By!i1kb6?N5 zFaNzN)ORfe3j8@eeOz6dix9t=EeEPw??=|s9}CX^h(;n{%*aQ02xb}eqBpRE9d%xD;|%|M*E0$2-p#34;bG9e##6R zDiGoGayk#wyXIVMRdK}Xi4w>g!ipFmI`Q5H&mlX)3bZ8d_DAgDPM((b7ki-3ZTG2| zQPeGUzUy*_WgxS70Tp|n{U>q`X%tMM!Qy-ZFYON1@-wuh$N191wvZagjbUYpLPVx#j~86%2#rhIgF zrtbtk^?LB=i)BZ`7XS~7q_4p8M_c>Uwuk0Zgz=-k-)?w4}pldrWHbQ*Zy40q5Xg{0iYjd6PPJ{x2boaF@ zTSE}XzNd$|1r2iOL-!$18&sowy5ReQz$$Vg-<_-ZG89|lBIJak?)H>U?_$rWwNGRw z3yCC>b6W-$vLq0hGP^}tV4$f_BF1yy*&7O#8~}rQtOB_c zhdgXI+X2>VZ4|N+7xy7qj|Hlb?J62opM&NEI{03WD)P1&;%9HZbLh8&xS?y$q5XrvU>R$lfHRScNGSAgp}Tk&$3%cv8`Hw?pU@i8vqI(k!fbuW8(Jw2dIU@uR@-BW7B}#t3jV(Pwx*!3=48IQo8kfj!5m zdzP!s*|s^hc9jC$PbVR_3qjszi$tx_4-b2^kXxD%CL;J+y&=Q`fOX1gN7+BQ3It$K ziHo9wS-+LL#p0+VzrCip)~yV>`*k|d+PU0Gt6&zq>#^-J3*vMPT7f)Vo>HmUWj@43 zmBTN~3F#m=8bp4(1F$hyxcA6?Z?BQZir}i)L-%k2sLp=eXQ`msqU|Pw2Ksp8DyTJd zD6x!~r;s?Woe(@x02b1q(HY+%ecW_+cQ?(D+egqNaw`cw4Y>E5$7w_M^7lYzL`hk9 zclF54#<7ArZpz19cW>I4dY6@gZ3n;tBJu`W zkiB^$zdH)#RodKg#dcCY6v@5=Lez>slEdf9DBOT9Xv@|rNx6|GQt)#9OC!7)(zq2q zCSIL;3I;t)CeiAHE8XGyrM7(Ku=4AbyU3ZtwaWwUmb}LT2;{;WfIPYaqZnu?4nE(H za)QFThFgXcZeJfXc9G7#4@FW00;wOdM%KsYkMv&1U{bL+PJ|igC9sLf1em!6>zLmq8xCWAdlMnZ zyPxaskAvAll0}pka-`?oOP-r-NCL$?2_=2`3DX_}n-g4TaPUQxNzO1gelZ7k)H~@z zqiVHQhH)|ceO1Pry))~2o)a0G#_s(ccJ3EcKgj+N{8&!8xFau(Rmd;ilauoVyDuOM z@69H={H=dyJ1U5fc&xHMF!@@D-$PO`Akr1-ER&@}KfNC2!f| zJkHKbSf35ex1wCCyi)5E@Ur7N!&;(-zsb3uLP^-<`-ezaG7LV zJ%g3Aq-3{gt`6jhx$SbNqVY#}T7RzhU2F>CcCV(s^+?ZIuqk}Mj9&f@l(JcC$3*nWkh$}VcMA8&(dBW1X^h|JWW1Q;wUOgkz z(x&yRobE{2dEX+*pfW_qo^e(GzQr7?^qc+e6sPMxrXt%1{V?V~&W(-lC_Su)M|1+| zKS`|Vle`!ED5(k_)^o0CI&(8+dQZstqpwuPqkzL@tr7MiSE?fR`3yEWjsz)WpL%p~ ziXlU)@UhgCs88qnqF^tf2J1)wQ^p9(N$E zaK4sZIGiCt@+b`6LzP*5o;!(wj_C>YOS`QTYx)z&oIW$Vxb=lxRB-guw&daP;6&WL zd^p)~;?`hP(X_>RPrY1w9hq&A1&THDYa2-D4e1EeT-b_BhEnDBM~7O%%K&EHi($dl zH==DX8&rgTvpviod}9YpcRI{#LRa2doa;$dN2S{MS65!ta^Y&}uLsdil(i5%GKHg6=ukSkFw5j+U15KCP`RkyrkrBX#?7i&(L<@_&~iAChF; V7fB;}1HGfzc~8TOLjE1)e*l(Vm{kA( literal 0 HcmV?d00001 diff --git a/assets/lightGallery/lightgallery.d.ts b/assets/lightGallery/lightgallery.d.ts new file mode 100644 index 0000000..b213d71 --- /dev/null +++ b/assets/lightGallery/lightgallery.d.ts @@ -0,0 +1,305 @@ +import { LightGalleryAllSettings, LightGallerySettings } from './lg-settings'; +import { GalleryItem, ImageSize } from './lg-utils'; +import { lgQuery } from './lgQuery'; +import { Coords, MediaContainerPosition, SlideDirection } from './types'; +export declare class LightGallery { + settings: LightGalleryAllSettings; + galleryItems: GalleryItem[]; + lgId: number; + el: HTMLElement; + LGel: lgQuery; + lgOpened: boolean; + index: number; + plugins: any[]; + lGalleryOn: boolean; + lgBusy: boolean; + touchAction?: 'swipe' | 'zoomSwipe' | 'pinch'; + swipeDirection?: 'horizontal' | 'vertical'; + hideBarTimeout: any; + currentItemsInDom: string[]; + outer: lgQuery; + items: any; + $backdrop: lgQuery; + $lgComponents: lgQuery; + $container: lgQuery; + $inner: lgQuery; + $content: lgQuery; + $toolbar: lgQuery; + prevScrollTop: number; + bodyPaddingRight: number; + private zoomFromOrigin; + private currentImageSize?; + private isDummyImageRemoved; + private dragOrSwipeEnabled; + mediaContainerPosition: { + top: number; + bottom: number; + }; + constructor(element: HTMLElement, options?: LightGallerySettings); + private generateSettings; + private normalizeSettings; + init(): void; + openGalleryOnItemClick(): void; + /** + * Module constructor + * Modules are build incrementally. + * Gallery should be opened only once all the modules are initialized. + * use moduleBuildTimeout to make sure this + */ + buildModules(): void; + validateLicense(): void; + getSlideItem(index: number): lgQuery; + getSlideItemId(index: number): string; + getIdName(id: string): string; + getElementById(id: string): lgQuery; + manageSingleSlideClassName(): void; + buildStructure(): void; + refreshOnResize(): void; + resizeVideoSlide(index: number, imageSize?: ImageSize): void; + /** + * Update slides dynamically. + * Add, edit or delete slides dynamically when lightGallery is opened. + * Modify the current gallery items and pass it via updateSlides method + * @note + * - Do not mutate existing lightGallery items directly. + * - Always pass new list of gallery items + * - You need to take care of thumbnails outside the gallery if any + * - user this method only if you want to update slides when the gallery is opened. Otherwise, use `refresh()` method. + * @param items Gallery items + * @param index After the update operation, which slide gallery should navigate to + * @category lGPublicMethods + * @example + * const plugin = lightGallery(); + * + * // Adding slides dynamically + * let galleryItems = [ + * // Access existing lightGallery items + * // galleryItems are automatically generated internally from the gallery HTML markup + * // or directly from galleryItems when dynamic gallery is used + * ...plugin.galleryItems, + * ...[ + * { + * src: 'img/img-1.png', + * thumb: 'img/thumb1.png', + * }, + * ], + * ]; + * plugin.updateSlides( + * galleryItems, + * plugin.index, + * ); + * + * + * // Remove slides dynamically + * galleryItems = JSON.parse( + * JSON.stringify(updateSlideInstance.galleryItems), + * ); + * galleryItems.shift(); + * updateSlideInstance.updateSlides(galleryItems, 1); + * @see Demo + */ + updateSlides(items: GalleryItem[], index: number): void; + getItems(): GalleryItem[]; + shouldHideScrollbar(): boolean; + hideScrollbar(): void; + resetScrollBar(): void; + /** + * Open lightGallery. + * Open gallery with specific slide by passing index of the slide as parameter. + * @category lGPublicMethods + * @param {Number} index - index of the slide + * @param {HTMLElement} element - Which image lightGallery should zoom from + * + * @example + * const $dynamicGallery = document.getElementById('dynamic-gallery-demo'); + * const dynamicGallery = lightGallery($dynamicGallery, { + * dynamic: true, + * dynamicEl: [ + * { + * src: 'img/1.jpg', + * thumb: 'img/thumb-1.jpg', + * subHtml: '

Image 1 title

Image 1 descriptions.

', + * }, + * ... + * ], + * }); + * $dynamicGallery.addEventListener('click', function () { + * // Starts with third item.(Optional). + * // This is useful if you want use dynamic mode with + * // custom thumbnails (thumbnails outside gallery), + * dynamicGallery.openGallery(2); + * }); + * + */ + openGallery(index?: number, element?: HTMLElement): void; + /** + * Note - Changing the position of the media on every slide transition creates a flickering effect. + * Therefore, The height of the caption is calculated dynamically, only once based on the first slide caption. + * if you have dynamic captions for each media, + * you can provide an appropriate height for the captions via allowMediaOverlap option + */ + getMediaContainerPosition(): MediaContainerPosition; + private setMediaContainerPosition; + hideBars(): void; + initPictureFill($img: lgQuery): void; + /** + * @desc Create image counter + * Ex: 1/10 + */ + counter(): void; + /** + * @desc add sub-html into the slide + * @param {Number} index - index of the slide + */ + addHtml(index: number): void; + /** + * @desc Preload slides + * @param {Number} index - index of the slide + * @todo preload not working for the first slide, Also, should work for the first and last slide as well + */ + preload(index: number): void; + getDummyImgStyles(imageSize?: ImageSize): string; + getVideoContStyle(imageSize?: ImageSize): string; + getDummyImageContent($currentSlide: lgQuery, index: number, alt: string): HTMLImageElement | string; + setImgMarkup(src: string, $currentSlide: lgQuery, index: number): void; + onSlideObjectLoad($slide: lgQuery, isHTML5VideoWithoutPoster: boolean, onLoad: () => void, onError: () => void): void; + /** + * + * @param $el Current slide item + * @param index + * @param delay Delay is 0 except first time + * @param speed Speed is same as delay, except it is 0 if gallery is opened via hash plugin + * @param isFirstSlide + */ + onLgObjectLoad(currentSlide: lgQuery, index: number, delay: number, speed: number, isFirstSlide: boolean, isHTML5VideoWithoutPoster: boolean): void; + triggerSlideItemLoad($currentSlide: lgQuery, index: number, delay: number, speed: number, isFirstSlide: boolean): void; + isFirstSlideWithZoomAnimation(): boolean; + addSlideVideoInfo(items: GalleryItem[]): void; + /** + * Load slide content into slide. + * This is used to load content into slides that is not visible too + * @param {Number} index - index of the slide. + * @param {Boolean} rec - if true call loadcontent() function again. + */ + loadContent(index: number, rec: boolean): void; + /** + * @desc Remove dummy image content and load next slides + * Called only for the first time if zoomFromOrigin animation is enabled + * @param index + * @param $currentSlide + * @param speed + */ + loadContentOnFirstSlideLoad(index: number, $currentSlide: lgQuery, speed: number): void; + getItemsToBeInsertedToDom(index: number, prevIndex: number, numberOfItems?: number): string[]; + organizeSlideItems(index: number, prevIndex: number): string[]; + /** + * Get previous index of the slide + */ + getPreviousSlideIndex(): number; + setDownloadValue(index: number): void; + makeSlideAnimation(direction: 'next' | 'prev', currentSlideItem: lgQuery, previousSlideItem: lgQuery): void; + /** + * Goto a specific slide. + * @param {Number} index - index of the slide + * @param {Boolean} fromTouch - true if slide function called via touch event or mouse drag + * @param {Boolean} fromThumb - true if slide function called via thumbnail click + * @param {String} direction - Direction of the slide(next/prev) + * @category lGPublicMethods + * @example + * const plugin = lightGallery(); + * // to go to 3rd slide + * plugin.slide(2); + * + */ + slide(index: number, fromTouch?: boolean, fromThumb?: boolean, direction?: SlideDirection | false): void; + updateCurrentCounter(index: number): void; + updateCounterTotal(): void; + getSlideType(item: GalleryItem): 'video' | 'iframe' | 'image'; + touchMove(startCoords: Coords, endCoords: Coords, e?: TouchEvent): void; + touchEnd(endCoords: Coords, startCoords: Coords, event: TouchEvent): void; + enableSwipe(): void; + enableDrag(): void; + triggerPosterClick(): void; + manageSwipeClass(): void; + /** + * Go to next slide + * @param {Boolean} fromTouch - true if slide function called via touch event + * @category lGPublicMethods + * @example + * const plugin = lightGallery(); + * plugin.goToNextSlide(); + * @see Demo + */ + goToNextSlide(fromTouch?: boolean): void; + /** + * Go to previous slides + * @param {Boolean} fromTouch - true if slide function called via touch event + * @category lGPublicMethods + * @example + * const plugin = lightGallery({}); + * plugin.goToPrevSlide(); + * @see Demo + * + */ + goToPrevSlide(fromTouch?: boolean): void; + keyPress(): void; + arrow(): void; + arrowDisable(index: number): void; + setTranslate($el: lgQuery, xValue: number, yValue: number, scaleX?: number, scaleY?: number): void; + mousewheel(): void; + isSlideElement(target: lgQuery): boolean; + isPosterElement(target: lgQuery): boolean; + /** + * Maximize minimize inline gallery. + * @category lGPublicMethods + */ + toggleMaximize(): void; + invalidateItems(): void; + trapFocus(): void; + manageCloseGallery(): void; + /** + * Close lightGallery if it is opened. + * + * @description If closable is false in the settings, you need to pass true via closeGallery method to force close gallery + * @return returns the estimated time to close gallery completely including the close animation duration + * @category lGPublicMethods + * @example + * const plugin = lightGallery(); + * plugin.closeGallery(); + * + */ + closeGallery(force?: boolean): number; + initModules(): void; + destroyModules(destroy?: true): void; + /** + * Refresh lightGallery with new set of children. + * + * @description This is useful to update the gallery when the child elements are changed without calling destroy method. + * + * If you are using dynamic mode, you can pass the modified array of dynamicEl as the first parameter to refresh the dynamic gallery + * @see Demo + * @category lGPublicMethods + * @example + * const plugin = lightGallery(); + * // Delete or add children, then call + * plugin.refresh(); + * + */ + refresh(galleryItems?: GalleryItem[]): void; + updateControls(): void; + private destroyGallery; + /** + * Destroy lightGallery. + * Destroy lightGallery and its plugin instances completely + * + * @description This method also calls CloseGallery function internally. Returns the time takes to completely close and destroy the instance. + * In case if you want to re-initialize lightGallery right after destroying it, initialize it only once the destroy process is completed. + * You can use refresh method most of the times. + * @category lGPublicMethods + * @example + * const plugin = lightGallery(); + * plugin.destroy(); + * + */ + destroy(): number; +} diff --git a/assets/lightGallery/lightgallery.es5.js b/assets/lightGallery/lightgallery.es5.js new file mode 100644 index 0000000..2c305f3 --- /dev/null +++ b/assets/lightGallery/lightgallery.es5.js @@ -0,0 +1,2786 @@ +/*! + * lightgallery | 2.9.0 | October 1st 2025 + * http://www.lightgalleryjs.com/ + * Copyright (c) 2020 Sachin Neravath; + * @license GPLv3 + */ + +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ + +var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; + +function __spreadArrays() { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; +} + +/** + * List of lightGallery events + * All events should be documented here + * Below interfaces are used to build the website documentations + * */ +var lGEvents = { + afterAppendSlide: 'lgAfterAppendSlide', + init: 'lgInit', + hasVideo: 'lgHasVideo', + containerResize: 'lgContainerResize', + updateSlides: 'lgUpdateSlides', + afterAppendSubHtml: 'lgAfterAppendSubHtml', + beforeOpen: 'lgBeforeOpen', + afterOpen: 'lgAfterOpen', + slideItemLoad: 'lgSlideItemLoad', + beforeSlide: 'lgBeforeSlide', + afterSlide: 'lgAfterSlide', + posterClick: 'lgPosterClick', + dragStart: 'lgDragStart', + dragMove: 'lgDragMove', + dragEnd: 'lgDragEnd', + beforeNextSlide: 'lgBeforeNextSlide', + beforePrevSlide: 'lgBeforePrevSlide', + beforeClose: 'lgBeforeClose', + afterClose: 'lgAfterClose', + rotateLeft: 'lgRotateLeft', + rotateRight: 'lgRotateRight', + flipHorizontal: 'lgFlipHorizontal', + flipVertical: 'lgFlipVertical', + autoplay: 'lgAutoplay', + autoplayStart: 'lgAutoplayStart', + autoplayStop: 'lgAutoplayStop', +}; + +var lightGalleryCoreSettings = { + mode: 'lg-slide', + easing: 'ease', + speed: 400, + licenseKey: '0000-0000-000-0000', + height: '100%', + width: '100%', + addClass: '', + startClass: 'lg-start-zoom', + backdropDuration: 300, + container: '', + startAnimationDuration: 400, + zoomFromOrigin: true, + hideBarsDelay: 0, + showBarsAfter: 10000, + slideDelay: 0, + supportLegacyBrowser: true, + allowMediaOverlap: false, + videoMaxSize: '1280-720', + loadYouTubePoster: true, + defaultCaptionHeight: 0, + ariaLabelledby: '', + ariaDescribedby: '', + resetScrollPosition: true, + hideScrollbar: false, + closable: true, + swipeToClose: true, + closeOnTap: true, + showCloseIcon: true, + showMaximizeIcon: false, + loop: true, + escKey: true, + keyPress: true, + trapFocus: true, + controls: true, + slideEndAnimation: true, + hideControlOnEnd: false, + mousewheel: false, + getCaptionFromTitleOrAlt: true, + appendSubHtmlTo: '.lg-sub-html', + subHtmlSelectorRelative: false, + preload: 2, + numberOfSlideItemsInDom: 10, + selector: '', + selectWithin: '', + nextHtml: '', + prevHtml: '', + index: 0, + iframeWidth: '100%', + iframeHeight: '100%', + iframeMaxWidth: '100%', + iframeMaxHeight: '100%', + download: true, + counter: true, + appendCounterTo: '.lg-toolbar', + swipeThreshold: 50, + enableSwipe: true, + enableDrag: true, + dynamic: false, + dynamicEl: [], + extraProps: [], + exThumbImage: '', + isMobile: undefined, + mobileSettings: { + controls: false, + showCloseIcon: false, + download: false, + }, + plugins: [], + strings: { + closeGallery: 'Close gallery', + toggleMaximize: 'Toggle maximize', + previousSlide: 'Previous slide', + nextSlide: 'Next slide', + download: 'Download', + playVideo: 'Play video', + mediaLoadingFailed: 'Oops... Failed to load content...', + }, +}; + +function initLgPolyfills() { + (function () { + if (typeof window.CustomEvent === 'function') + return false; + function CustomEvent(event, params) { + params = params || { + bubbles: false, + cancelable: false, + detail: null, + }; + var evt = document.createEvent('CustomEvent'); + evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail); + return evt; + } + window.CustomEvent = CustomEvent; + })(); + (function () { + if (!Element.prototype.matches) { + Element.prototype.matches = + Element.prototype.msMatchesSelector || + Element.prototype.webkitMatchesSelector; + } + })(); +} +var lgQuery = /** @class */ (function () { + function lgQuery(selector) { + this.cssVenderPrefixes = [ + 'TransitionDuration', + 'TransitionTimingFunction', + 'Transform', + 'Transition', + ]; + this.selector = this._getSelector(selector); + this.firstElement = this._getFirstEl(); + return this; + } + lgQuery.generateUUID = function () { + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = (Math.random() * 16) | 0, v = c == 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + }; + lgQuery.prototype._getSelector = function (selector, context) { + if (context === void 0) { context = document; } + if (typeof selector !== 'string') { + return selector; + } + context = context || document; + var fl = selector.substring(0, 1); + if (fl === '#') { + return context.querySelector(selector); + } + else { + return context.querySelectorAll(selector); + } + }; + lgQuery.prototype._each = function (func) { + if (!this.selector) { + return this; + } + if (this.selector.length !== undefined) { + [].forEach.call(this.selector, func); + } + else { + func(this.selector, 0); + } + return this; + }; + lgQuery.prototype._setCssVendorPrefix = function (el, cssProperty, value) { + // prettier-ignore + var property = cssProperty.replace(/-([a-z])/gi, function (s, group1) { + return group1.toUpperCase(); + }); + if (this.cssVenderPrefixes.indexOf(property) !== -1) { + el.style[property.charAt(0).toLowerCase() + property.slice(1)] = value; + el.style['webkit' + property] = value; + el.style['moz' + property] = value; + el.style['ms' + property] = value; + el.style['o' + property] = value; + } + else { + el.style[property] = value; + } + }; + lgQuery.prototype._getFirstEl = function () { + if (this.selector && this.selector.length !== undefined) { + return this.selector[0]; + } + else { + return this.selector; + } + }; + lgQuery.prototype.isEventMatched = function (event, eventName) { + var eventNamespace = eventName.split('.'); + return event + .split('.') + .filter(function (e) { return e; }) + .every(function (e) { + return eventNamespace.indexOf(e) !== -1; + }); + }; + lgQuery.prototype.attr = function (attr, value) { + if (value === undefined) { + if (!this.firstElement) { + return ''; + } + return this.firstElement.getAttribute(attr); + } + this._each(function (el) { + el.setAttribute(attr, value); + }); + return this; + }; + lgQuery.prototype.find = function (selector) { + return $LG(this._getSelector(selector, this.selector)); + }; + lgQuery.prototype.first = function () { + if (this.selector && this.selector.length !== undefined) { + return $LG(this.selector[0]); + } + else { + return $LG(this.selector); + } + }; + lgQuery.prototype.eq = function (index) { + return $LG(this.selector[index]); + }; + lgQuery.prototype.parent = function () { + return $LG(this.selector.parentElement); + }; + lgQuery.prototype.get = function () { + return this._getFirstEl(); + }; + lgQuery.prototype.removeAttr = function (attributes) { + var attrs = attributes.split(' '); + this._each(function (el) { + attrs.forEach(function (attr) { return el.removeAttribute(attr); }); + }); + return this; + }; + lgQuery.prototype.wrap = function (className) { + if (!this.firstElement) { + return this; + } + var wrapper = document.createElement('div'); + wrapper.className = className; + this.firstElement.parentNode.insertBefore(wrapper, this.firstElement); + this.firstElement.parentNode.removeChild(this.firstElement); + wrapper.appendChild(this.firstElement); + return this; + }; + lgQuery.prototype.addClass = function (classNames) { + if (classNames === void 0) { classNames = ''; } + this._each(function (el) { + // IE doesn't support multiple arguments + classNames.split(' ').forEach(function (className) { + if (className) { + el.classList.add(className); + } + }); + }); + return this; + }; + lgQuery.prototype.removeClass = function (classNames) { + this._each(function (el) { + // IE doesn't support multiple arguments + classNames.split(' ').forEach(function (className) { + if (className) { + el.classList.remove(className); + } + }); + }); + return this; + }; + lgQuery.prototype.hasClass = function (className) { + if (!this.firstElement) { + return false; + } + return this.firstElement.classList.contains(className); + }; + lgQuery.prototype.hasAttribute = function (attribute) { + if (!this.firstElement) { + return false; + } + return this.firstElement.hasAttribute(attribute); + }; + lgQuery.prototype.toggleClass = function (className) { + if (!this.firstElement) { + return this; + } + if (this.hasClass(className)) { + this.removeClass(className); + } + else { + this.addClass(className); + } + return this; + }; + lgQuery.prototype.css = function (property, value) { + var _this = this; + this._each(function (el) { + _this._setCssVendorPrefix(el, property, value); + }); + return this; + }; + // Need to pass separate namespaces for separate elements + lgQuery.prototype.on = function (events, listener) { + var _this = this; + if (!this.selector) { + return this; + } + events.split(' ').forEach(function (event) { + if (!Array.isArray(lgQuery.eventListeners[event])) { + lgQuery.eventListeners[event] = []; + } + lgQuery.eventListeners[event].push(listener); + _this.selector.addEventListener(event.split('.')[0], listener); + }); + return this; + }; + // @todo - test this + lgQuery.prototype.once = function (event, listener) { + var _this = this; + this.on(event, function () { + _this.off(event); + listener(event); + }); + return this; + }; + lgQuery.prototype.off = function (event) { + var _this = this; + if (!this.selector) { + return this; + } + Object.keys(lgQuery.eventListeners).forEach(function (eventName) { + if (_this.isEventMatched(event, eventName)) { + lgQuery.eventListeners[eventName].forEach(function (listener) { + _this.selector.removeEventListener(eventName.split('.')[0], listener); + }); + lgQuery.eventListeners[eventName] = []; + } + }); + return this; + }; + lgQuery.prototype.trigger = function (event, detail) { + if (!this.firstElement) { + return this; + } + var customEvent = new CustomEvent(event.split('.')[0], { + detail: detail || null, + }); + this.firstElement.dispatchEvent(customEvent); + return this; + }; + // Does not support IE + lgQuery.prototype.load = function (url) { + var _this = this; + fetch(url) + .then(function (res) { return res.text(); }) + .then(function (html) { + _this.selector.innerHTML = html; + }); + return this; + }; + lgQuery.prototype.html = function (html) { + if (html === undefined) { + if (!this.firstElement) { + return ''; + } + return this.firstElement.innerHTML; + } + this._each(function (el) { + el.innerHTML = html; + }); + return this; + }; + lgQuery.prototype.append = function (html) { + this._each(function (el) { + if (typeof html === 'string') { + el.insertAdjacentHTML('beforeend', html); + } + else { + el.appendChild(html); + } + }); + return this; + }; + lgQuery.prototype.prepend = function (html) { + this._each(function (el) { + if (typeof html === 'string') { + el.insertAdjacentHTML('afterbegin', html); + } + else if (html instanceof HTMLElement) { + el.insertBefore(html.cloneNode(true), el.firstChild); + } + }); + return this; + }; + lgQuery.prototype.remove = function () { + this._each(function (el) { + el.parentNode.removeChild(el); + }); + return this; + }; + lgQuery.prototype.empty = function () { + this._each(function (el) { + el.innerHTML = ''; + }); + return this; + }; + lgQuery.prototype.scrollTop = function (scrollTop) { + if (scrollTop !== undefined) { + document.body.scrollTop = scrollTop; + document.documentElement.scrollTop = scrollTop; + return this; + } + else { + return (window.pageYOffset || + document.documentElement.scrollTop || + document.body.scrollTop || + 0); + } + }; + lgQuery.prototype.scrollLeft = function (scrollLeft) { + if (scrollLeft !== undefined) { + document.body.scrollLeft = scrollLeft; + document.documentElement.scrollLeft = scrollLeft; + return this; + } + else { + return (window.pageXOffset || + document.documentElement.scrollLeft || + document.body.scrollLeft || + 0); + } + }; + lgQuery.prototype.offset = function () { + if (!this.firstElement) { + return { + left: 0, + top: 0, + }; + } + var rect = this.firstElement.getBoundingClientRect(); + var bodyMarginLeft = $LG('body').style().marginLeft; + // Minus body margin - https://stackoverflow.com/questions/30711548/is-getboundingclientrect-left-returning-a-wrong-value + return { + left: rect.left - parseFloat(bodyMarginLeft) + this.scrollLeft(), + top: rect.top + this.scrollTop(), + }; + }; + lgQuery.prototype.style = function () { + if (!this.firstElement) { + return {}; + } + return (this.firstElement.currentStyle || + window.getComputedStyle(this.firstElement)); + }; + // Width without padding and border even if box-sizing is used. + lgQuery.prototype.width = function () { + var style = this.style(); + return (this.firstElement.clientWidth - + parseFloat(style.paddingLeft) - + parseFloat(style.paddingRight)); + }; + // Height without padding and border even if box-sizing is used. + lgQuery.prototype.height = function () { + var style = this.style(); + return (this.firstElement.clientHeight - + parseFloat(style.paddingTop) - + parseFloat(style.paddingBottom)); + }; + lgQuery.eventListeners = {}; + return lgQuery; +}()); +function $LG(selector) { + initLgPolyfills(); + return new lgQuery(selector); +} + +var defaultDynamicOptions = [ + 'src', + 'sources', + 'subHtml', + 'subHtmlUrl', + 'html', + 'video', + 'poster', + 'slideName', + 'responsive', + 'srcset', + 'sizes', + 'iframe', + 'downloadUrl', + 'download', + 'width', + 'facebookShareUrl', + 'tweetText', + 'iframeTitle', + 'twitterShareUrl', + 'pinterestShareUrl', + 'pinterestText', + 'fbHtml', + 'disqusIdentifier', + 'disqusUrl', +]; +// Convert html data-attribute to camalcase +function convertToData(attr) { + // FInd a way for lgsize + if (attr === 'href') { + return 'src'; + } + attr = attr.replace('data-', ''); + attr = attr.charAt(0).toLowerCase() + attr.slice(1); + attr = attr.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); }); + return attr; +} +var utils = { + /** + * Fetches HTML content from a given URL and inserts it into a specified element. + * + * @param url - The URL to fetch the HTML content from. + * @param element - The DOM element (jQuery object) to insert the HTML content into. + * @param insertMethod - The method to insert the HTML ('append' or 'replace'). + */ + fetchCaptionFromUrl: function (url, element, insertMethod) { + // Fetch content from the URL + fetch(url) + .then(function (response) { return response.text(); }) + .then(function (htmlContent) { + if (insertMethod === 'append') { + var contentDiv = "
" + htmlContent + "
"; + element.append(contentDiv); + } + else { + element.html(htmlContent); + } + }); + }, + /** + * get possible width and height from the lgSize attribute. Used for ZoomFromOrigin option + */ + getSize: function (el, container, spacing, defaultLgSize) { + if (spacing === void 0) { spacing = 0; } + var LGel = $LG(el); + var lgSize = LGel.attr('data-lg-size') || defaultLgSize; + if (!lgSize) { + return; + } + var isResponsiveSizes = lgSize.split(','); + // if at-least two viewport sizes are available + if (isResponsiveSizes[1]) { + var wWidth = window.innerWidth; + for (var i = 0; i < isResponsiveSizes.length; i++) { + var size_1 = isResponsiveSizes[i]; + var responsiveWidth = parseInt(size_1.split('-')[2], 10); + if (responsiveWidth > wWidth) { + lgSize = size_1; + break; + } + // take last item as last option + if (i === isResponsiveSizes.length - 1) { + lgSize = size_1; + } + } + } + var size = lgSize.split('-'); + var width = parseInt(size[0], 10); + var height = parseInt(size[1], 10); + var cWidth = container.width(); + var cHeight = container.height() - spacing; + var maxWidth = Math.min(cWidth, width); + var maxHeight = Math.min(cHeight, height); + var ratio = Math.min(maxWidth / width, maxHeight / height); + return { width: width * ratio, height: height * ratio }; + }, + /** + * @desc Get transform value based on the imageSize. Used for ZoomFromOrigin option + * @param {jQuery Element} + * @returns {String} Transform CSS string + */ + getTransform: function (el, container, top, bottom, imageSize) { + if (!imageSize) { + return; + } + var LGel = $LG(el).find('img').first(); + if (!LGel.get()) { + return; + } + var containerRect = container.get().getBoundingClientRect(); + var wWidth = containerRect.width; + // using innerWidth to include mobile safari bottom bar + var wHeight = container.height() - (top + bottom); + var elWidth = LGel.width(); + var elHeight = LGel.height(); + var elStyle = LGel.style(); + var x = (wWidth - elWidth) / 2 - + LGel.offset().left + + (parseFloat(elStyle.paddingLeft) || 0) + + (parseFloat(elStyle.borderLeft) || 0) + + $LG(window).scrollLeft() + + containerRect.left; + var y = (wHeight - elHeight) / 2 - + LGel.offset().top + + (parseFloat(elStyle.paddingTop) || 0) + + (parseFloat(elStyle.borderTop) || 0) + + $LG(window).scrollTop() + + top; + var scX = elWidth / imageSize.width; + var scY = elHeight / imageSize.height; + var transform = 'translate3d(' + + (x *= -1) + + 'px, ' + + (y *= -1) + + 'px, 0) scale3d(' + + scX + + ', ' + + scY + + ', 1)'; + return transform; + }, + getIframeMarkup: function (iframeWidth, iframeHeight, iframeMaxWidth, iframeMaxHeight, src, iframeTitle) { + var title = iframeTitle ? 'title="' + iframeTitle + '"' : ''; + return "
\n \n
"; + }, + getImgMarkup: function (index, src, altAttr, srcset, sizes, sources) { + var srcsetAttr = srcset ? "srcset=\"" + srcset + "\"" : ''; + var sizesAttr = sizes ? "sizes=\"" + sizes + "\"" : ''; + var imgMarkup = ""; + var sourceTag = ''; + if (sources) { + var sourceObj = typeof sources === 'string' ? JSON.parse(sources) : sources; + sourceTag = sourceObj.map(function (source) { + var attrs = ''; + Object.keys(source).forEach(function (key) { + // Do not remove the first space as it is required to separate the attributes + attrs += " " + key + "=\"" + source[key] + "\""; + }); + return ""; + }); + } + return "" + sourceTag + imgMarkup; + }, + // Get src from responsive src + getResponsiveSrc: function (srcItms) { + var rsWidth = []; + var rsSrc = []; + var src = ''; + for (var i = 0; i < srcItms.length; i++) { + var _src = srcItms[i].split(' '); + // Manage empty space + if (_src[0] === '') { + _src.splice(0, 1); + } + rsSrc.push(_src[0]); + rsWidth.push(_src[1]); + } + var wWidth = window.innerWidth; + for (var j = 0; j < rsWidth.length; j++) { + if (parseInt(rsWidth[j], 10) > wWidth) { + src = rsSrc[j]; + break; + } + } + return src; + }, + isImageLoaded: function (img) { + if (!img) + return false; + // During the onload event, IE correctly identifies any images that + // weren’t downloaded as not complete. Others should too. Gecko-based + // browsers act like NS4 in that they report this incorrectly. + if (!img.complete) { + return false; + } + // However, they do have two very useful properties: naturalWidth and + // naturalHeight. These give the true size of the image. If it failed + // to load, either of these should be zero. + if (img.naturalWidth === 0) { + return false; + } + // No other way of checking: assume it’s ok. + return true; + }, + getVideoPosterMarkup: function (_poster, dummyImg, videoContStyle, playVideoString, _isVideo) { + var videoClass = ''; + if (_isVideo && _isVideo.youtube) { + videoClass = 'lg-has-youtube'; + } + else if (_isVideo && _isVideo.vimeo) { + videoClass = 'lg-has-vimeo'; + } + else { + videoClass = 'lg-has-html5'; + } + var _dummy = dummyImg; + if (typeof dummyImg !== 'string') { + _dummy = dummyImg.outerHTML; + } + return "
\n
\n \n " + playVideoString + "\n \n \n \n \n \n \n \n
\n " + _dummy + "\n \n
"; + }, + getFocusableElements: function (container) { + var elements = container.querySelectorAll('a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])'); + var visibleElements = [].filter.call(elements, function (element) { + var style = window.getComputedStyle(element); + return style.display !== 'none' && style.visibility !== 'hidden'; + }); + return visibleElements; + }, + /** + * @desc Create dynamic elements array from gallery items when dynamic option is false + * It helps to avoid frequent DOM interaction + * and avoid multiple checks for dynamic elments + * + * @returns {Array} dynamicEl + */ + getDynamicOptions: function (items, extraProps, getCaptionFromTitleOrAlt, exThumbImage) { + var dynamicElements = []; + var availableDynamicOptions = __spreadArrays(defaultDynamicOptions, extraProps); + [].forEach.call(items, function (item) { + var dynamicEl = {}; + for (var i = 0; i < item.attributes.length; i++) { + var attr = item.attributes[i]; + if (attr.specified) { + var dynamicAttr = convertToData(attr.name); + var label = ''; + if (availableDynamicOptions.indexOf(dynamicAttr) > -1) { + label = dynamicAttr; + } + if (label) { + dynamicEl[label] = attr.value; + } + } + } + var currentItem = $LG(item); + var alt = currentItem.find('img').first().attr('alt'); + var title = currentItem.attr('title'); + var thumb = exThumbImage + ? currentItem.attr(exThumbImage) + : currentItem.find('img').first().attr('src'); + dynamicEl.thumb = thumb; + if (getCaptionFromTitleOrAlt && !dynamicEl.subHtml) { + dynamicEl.subHtml = title || alt || ''; + } + dynamicEl.alt = alt || title || ''; + dynamicElements.push(dynamicEl); + }); + return dynamicElements; + }, + isMobile: function () { + return /iPhone|iPad|iPod|Android/i.test(navigator.userAgent); + }, + /** + * @desc Check the given src is video + * @param {String} src + * @return {Object} video type + * Ex:{ youtube : ["//www.youtube.com/watch?v=c0asJgSyxcY", "c0asJgSyxcY"] } + * + * @todo - this information can be moved to dynamicEl to avoid frequent calls + */ + isVideo: function (src, isHTML5VIdeo, index) { + if (!src) { + if (isHTML5VIdeo) { + return { + html5: true, + }; + } + else { + console.error('lightGallery :- data-src is not provided on slide item ' + + (index + 1) + + '. Please make sure the selector property is properly configured. More info - https://www.lightgalleryjs.com/demos/html-markup/'); + return; + } + } + var youtube = src.match(/\/\/(?:www\.)?youtu(?:\.be|be\.com|be-nocookie\.com)\/(?:watch\?v=|embed\/)?([a-z0-9\-\_\%]+)([\&|?][\S]*)*/i); + var vimeo = src.match(/\/\/(?:www\.)?(?:player\.)?vimeo.com\/(?:video\/)?([0-9a-z\-_]+)(.*)?/i); + var wistia = src.match(/https?:\/\/(.+)?(wistia\.com|wi\.st)\/(medias|embed)\/([0-9a-z\-_]+)(.*)/); + if (youtube) { + return { + youtube: youtube, + }; + } + else if (vimeo) { + return { + vimeo: vimeo, + }; + } + else if (wistia) { + return { + wistia: wistia, + }; + } + }, +}; + +// @ref - https://stackoverflow.com/questions/3971841/how-to-resize-images-proportionally-keeping-the-aspect-ratio +// @ref - https://2ality.com/2017/04/setting-up-multi-platform-packages.html +// Unique id for each gallery +var lgId = 0; +var LightGallery = /** @class */ (function () { + function LightGallery(element, options) { + this.lgOpened = false; + this.index = 0; + // lightGallery modules + this.plugins = []; + // false when lightGallery load first slide content; + this.lGalleryOn = false; + // True when a slide animation is in progress + this.lgBusy = false; + this.currentItemsInDom = []; + // Scroll top value before lightGallery is opened + this.prevScrollTop = 0; + this.bodyPaddingRight = 0; + this.isDummyImageRemoved = false; + this.dragOrSwipeEnabled = false; + this.mediaContainerPosition = { + top: 0, + bottom: 0, + }; + if (!element) { + return this; + } + lgId++; + this.lgId = lgId; + this.el = element; + this.LGel = $LG(element); + this.generateSettings(options); + this.buildModules(); + // When using dynamic mode, ensure dynamicEl is an array + if (this.settings.dynamic && + this.settings.dynamicEl !== undefined && + !Array.isArray(this.settings.dynamicEl)) { + throw 'When using dynamic mode, you must also define dynamicEl as an Array.'; + } + this.galleryItems = this.getItems(); + this.normalizeSettings(); + // Gallery items + this.init(); + this.validateLicense(); + return this; + } + LightGallery.prototype.generateSettings = function (options) { + // lightGallery settings + this.settings = __assign(__assign({}, lightGalleryCoreSettings), options); + if (this.settings.isMobile && + typeof this.settings.isMobile === 'function' + ? this.settings.isMobile() + : utils.isMobile()) { + var mobileSettings = __assign(__assign({}, this.settings.mobileSettings), this.settings.mobileSettings); + this.settings = __assign(__assign({}, this.settings), mobileSettings); + } + }; + LightGallery.prototype.normalizeSettings = function () { + if (this.settings.slideEndAnimation) { + this.settings.hideControlOnEnd = false; + } + if (!this.settings.closable) { + this.settings.swipeToClose = false; + } + // And reset it on close to get the correct value next time + this.zoomFromOrigin = this.settings.zoomFromOrigin; + // At the moment, Zoom from image doesn't support dynamic options + // @todo add zoomFromOrigin support for dynamic images + if (this.settings.dynamic) { + this.zoomFromOrigin = false; + } + if (this.settings.container) { + var container = this.settings.container; + if (typeof container === 'function') { + this.settings.container = container(); + } + else if (typeof container === 'string') { + var el = document.querySelector(container); + this.settings.container = el !== null && el !== void 0 ? el : document.body; + } + } + else { + this.settings.container = document.body; + } + // settings.preload should not be grater than $item.length + this.settings.preload = Math.min(this.settings.preload, this.galleryItems.length); + }; + LightGallery.prototype.init = function () { + var _this = this; + this.addSlideVideoInfo(this.galleryItems); + this.buildStructure(); + this.LGel.trigger(lGEvents.init, { + instance: this, + }); + if (this.settings.keyPress) { + this.keyPress(); + } + setTimeout(function () { + _this.enableDrag(); + _this.enableSwipe(); + _this.triggerPosterClick(); + }, 50); + this.arrow(); + if (this.settings.mousewheel) { + this.mousewheel(); + } + if (!this.settings.dynamic) { + this.openGalleryOnItemClick(); + } + }; + LightGallery.prototype.openGalleryOnItemClick = function () { + var _this = this; + var _loop_1 = function (index) { + var element = this_1.items[index]; + var $element = $LG(element); + // Using different namespace for click because click event should not unbind if selector is same object('this') + // @todo manage all event listners - should have namespace that represent element + var uuid = lgQuery.generateUUID(); + $element + .attr('data-lg-id', uuid) + .on("click.lgcustom-item-" + uuid, function (e) { + e.preventDefault(); + var currentItemIndex = _this.settings.index || index; + _this.openGallery(currentItemIndex, element); + }); + }; + var this_1 = this; + // Using for loop instead of using bubbling as the items can be any html element. + for (var index = 0; index < this.items.length; index++) { + _loop_1(index); + } + }; + /** + * Module constructor + * Modules are build incrementally. + * Gallery should be opened only once all the modules are initialized. + * use moduleBuildTimeout to make sure this + */ + LightGallery.prototype.buildModules = function () { + var _this = this; + this.settings.plugins.forEach(function (plugin) { + _this.plugins.push(new plugin(_this, $LG)); + }); + }; + LightGallery.prototype.validateLicense = function () { + if (!this.settings.licenseKey) { + console.error('Please provide a valid license key'); + } + else if (this.settings.licenseKey === '0000-0000-000-0000') { + console.warn("lightGallery: " + this.settings.licenseKey + " license key is not valid for production use"); + } + }; + LightGallery.prototype.getSlideItem = function (index) { + return $LG(this.getSlideItemId(index)); + }; + LightGallery.prototype.getSlideItemId = function (index) { + return "#lg-item-" + this.lgId + "-" + index; + }; + LightGallery.prototype.getIdName = function (id) { + return id + "-" + this.lgId; + }; + LightGallery.prototype.getElementById = function (id) { + return $LG("#" + this.getIdName(id)); + }; + LightGallery.prototype.manageSingleSlideClassName = function () { + if (this.galleryItems.length < 2) { + this.outer.addClass('lg-single-item'); + } + else { + this.outer.removeClass('lg-single-item'); + } + }; + LightGallery.prototype.buildStructure = function () { + var _this = this; + var container = this.$container && this.$container.get(); + if (container) { + return; + } + var controls = ''; + var subHtmlCont = ''; + // Create controls + if (this.settings.controls) { + controls = "\n "; + } + if (this.settings.appendSubHtmlTo !== '.lg-item') { + subHtmlCont = + '
'; + } + var addClasses = ''; + if (this.settings.allowMediaOverlap) { + // Do not remove space before last single quote + addClasses += 'lg-media-overlap '; + } + var ariaLabelledby = this.settings.ariaLabelledby + ? 'aria-labelledby="' + this.settings.ariaLabelledby + '"' + : ''; + var ariaDescribedby = this.settings.ariaDescribedby + ? 'aria-describedby="' + this.settings.ariaDescribedby + '"' + : ''; + var containerClassName = "lg-container " + this.settings.addClass + " " + (document.body !== this.settings.container ? 'lg-inline' : ''); + var closeIcon = this.settings.closable && this.settings.showCloseIcon + ? "" + : ''; + var maximizeIcon = this.settings.showMaximizeIcon + ? "" + : ''; + var template = "\n
\n
\n\n
\n\n
\n
\n
\n " + controls + "\n
\n
\n " + maximizeIcon + "\n " + closeIcon + "\n
\n " + (this.settings.appendSubHtmlTo === '.lg-outer' + ? subHtmlCont + : '') + "\n
\n " + (this.settings.appendSubHtmlTo === '.lg-sub-html' + ? subHtmlCont + : '') + "\n
\n
\n
\n "; + $LG(this.settings.container).append(template); + if (document.body !== this.settings.container) { + $LG(this.settings.container).css('position', 'relative'); + } + this.outer = this.getElementById('lg-outer'); + this.$lgComponents = this.getElementById('lg-components'); + this.$backdrop = this.getElementById('lg-backdrop'); + this.$container = this.getElementById('lg-container'); + this.$inner = this.getElementById('lg-inner'); + this.$content = this.getElementById('lg-content'); + this.$toolbar = this.getElementById('lg-toolbar'); + this.$backdrop.css('transition-duration', this.settings.backdropDuration + 'ms'); + var outerClassNames = this.settings.mode + " "; + this.manageSingleSlideClassName(); + if (this.settings.enableDrag) { + outerClassNames += 'lg-grab '; + } + this.outer.addClass(outerClassNames); + this.$inner.css('transition-timing-function', this.settings.easing); + this.$inner.css('transition-duration', this.settings.speed + 'ms'); + if (this.settings.download) { + this.$toolbar.append(""); + } + this.counter(); + $LG(window).on("resize.lg.global" + this.lgId + " orientationchange.lg.global" + this.lgId, function () { + _this.refreshOnResize(); + }); + this.hideBars(); + this.manageCloseGallery(); + this.toggleMaximize(); + this.initModules(); + }; + LightGallery.prototype.refreshOnResize = function () { + if (this.lgOpened) { + var currentGalleryItem = this.galleryItems[this.index]; + var __slideVideoInfo = currentGalleryItem.__slideVideoInfo; + this.mediaContainerPosition = this.getMediaContainerPosition(); + var _a = this.mediaContainerPosition, top_1 = _a.top, bottom = _a.bottom; + this.currentImageSize = utils.getSize(this.items[this.index], this.outer, top_1 + bottom, __slideVideoInfo && this.settings.videoMaxSize); + if (__slideVideoInfo) { + this.resizeVideoSlide(this.index, this.currentImageSize); + } + if (this.zoomFromOrigin && !this.isDummyImageRemoved) { + var imgStyle = this.getDummyImgStyles(this.currentImageSize); + this.outer + .find('.lg-current .lg-dummy-img') + .first() + .attr('style', imgStyle); + } + this.LGel.trigger(lGEvents.containerResize); + } + }; + LightGallery.prototype.resizeVideoSlide = function (index, imageSize) { + var lgVideoStyle = this.getVideoContStyle(imageSize); + var currentSlide = this.getSlideItem(index); + currentSlide.find('.lg-video-cont').attr('style', lgVideoStyle); + }; + /** + * Update slides dynamically. + * Add, edit or delete slides dynamically when lightGallery is opened. + * Modify the current gallery items and pass it via updateSlides method + * @note + * - Do not mutate existing lightGallery items directly. + * - Always pass new list of gallery items + * - You need to take care of thumbnails outside the gallery if any + * - user this method only if you want to update slides when the gallery is opened. Otherwise, use `refresh()` method. + * @param items Gallery items + * @param index After the update operation, which slide gallery should navigate to + * @category lGPublicMethods + * @example + * const plugin = lightGallery(); + * + * // Adding slides dynamically + * let galleryItems = [ + * // Access existing lightGallery items + * // galleryItems are automatically generated internally from the gallery HTML markup + * // or directly from galleryItems when dynamic gallery is used + * ...plugin.galleryItems, + * ...[ + * { + * src: 'img/img-1.png', + * thumb: 'img/thumb1.png', + * }, + * ], + * ]; + * plugin.updateSlides( + * galleryItems, + * plugin.index, + * ); + * + * + * // Remove slides dynamically + * galleryItems = JSON.parse( + * JSON.stringify(updateSlideInstance.galleryItems), + * ); + * galleryItems.shift(); + * updateSlideInstance.updateSlides(galleryItems, 1); + * @see Demo + */ + LightGallery.prototype.updateSlides = function (items, index) { + if (this.index > items.length - 1) { + this.index = items.length - 1; + } + if (items.length === 1) { + this.index = 0; + } + if (!items.length) { + this.closeGallery(); + return; + } + var currentSrc = this.galleryItems[index].src; + this.galleryItems = items; + this.updateControls(); + this.$inner.empty(); + this.currentItemsInDom = []; + var _index = 0; + // Find the current index based on source value of the slide + this.galleryItems.some(function (galleryItem, itemIndex) { + if (galleryItem.src === currentSrc) { + _index = itemIndex; + return true; + } + return false; + }); + this.currentItemsInDom = this.organizeSlideItems(_index, -1); + this.loadContent(_index, true); + this.getSlideItem(_index).addClass('lg-current'); + this.index = _index; + this.updateCurrentCounter(_index); + this.LGel.trigger(lGEvents.updateSlides); + }; + // Get gallery items based on multiple conditions + LightGallery.prototype.getItems = function () { + // Gallery items + this.items = []; + if (!this.settings.dynamic) { + if (this.settings.selector === 'this') { + this.items.push(this.el); + } + else if (this.settings.selector) { + if (typeof this.settings.selector === 'string') { + if (this.settings.selectWithin) { + var selectWithin = $LG(this.settings.selectWithin); + this.items = selectWithin + .find(this.settings.selector) + .get(); + } + else { + this.items = this.el.querySelectorAll(this.settings.selector); + } + } + else { + this.items = this.settings.selector; + } + } + else { + this.items = this.el.children; + } + return utils.getDynamicOptions(this.items, this.settings.extraProps, this.settings.getCaptionFromTitleOrAlt, this.settings.exThumbImage); + } + else { + return this.settings.dynamicEl || []; + } + }; + LightGallery.prototype.shouldHideScrollbar = function () { + return (this.settings.hideScrollbar && + document.body === this.settings.container); + }; + LightGallery.prototype.hideScrollbar = function () { + if (!this.shouldHideScrollbar()) { + return; + } + this.bodyPaddingRight = parseFloat($LG('body').style().paddingRight); + var bodyRect = document.documentElement.getBoundingClientRect(); + var scrollbarWidth = window.innerWidth - bodyRect.width; + $LG(document.body).css('padding-right', scrollbarWidth + this.bodyPaddingRight + 'px'); + $LG(document.body).addClass('lg-overlay-open'); + }; + LightGallery.prototype.resetScrollBar = function () { + if (!this.shouldHideScrollbar()) { + return; + } + $LG(document.body).css('padding-right', this.bodyPaddingRight + 'px'); + $LG(document.body).removeClass('lg-overlay-open'); + }; + /** + * Open lightGallery. + * Open gallery with specific slide by passing index of the slide as parameter. + * @category lGPublicMethods + * @param {Number} index - index of the slide + * @param {HTMLElement} element - Which image lightGallery should zoom from + * + * @example + * const $dynamicGallery = document.getElementById('dynamic-gallery-demo'); + * const dynamicGallery = lightGallery($dynamicGallery, { + * dynamic: true, + * dynamicEl: [ + * { + * src: 'img/1.jpg', + * thumb: 'img/thumb-1.jpg', + * subHtml: '

Image 1 title

Image 1 descriptions.

', + * }, + * ... + * ], + * }); + * $dynamicGallery.addEventListener('click', function () { + * // Starts with third item.(Optional). + * // This is useful if you want use dynamic mode with + * // custom thumbnails (thumbnails outside gallery), + * dynamicGallery.openGallery(2); + * }); + * + */ + LightGallery.prototype.openGallery = function (index, element) { + var _this = this; + if (index === void 0) { index = this.settings.index; } + // prevent accidental double execution + if (this.lgOpened) + return; + this.lgOpened = true; + this.outer.removeClass('lg-hide-items'); + this.hideScrollbar(); + // Add display block, but still has opacity 0 + this.$container.addClass('lg-show'); + var itemsToBeInsertedToDom = this.getItemsToBeInsertedToDom(index, index); + this.currentItemsInDom = itemsToBeInsertedToDom; + var items = ''; + itemsToBeInsertedToDom.forEach(function (item) { + items = items + ("
"); + }); + this.$inner.append(items); + this.addHtml(index); + var transform = ''; + this.mediaContainerPosition = this.getMediaContainerPosition(); + var _a = this.mediaContainerPosition, top = _a.top, bottom = _a.bottom; + if (!this.settings.allowMediaOverlap) { + this.setMediaContainerPosition(top, bottom); + } + var __slideVideoInfo = this.galleryItems[index].__slideVideoInfo; + if (this.zoomFromOrigin && element) { + this.currentImageSize = utils.getSize(element, this.outer, top + bottom, __slideVideoInfo && this.settings.videoMaxSize); + transform = utils.getTransform(element, this.outer, top, bottom, this.currentImageSize); + } + if (!this.zoomFromOrigin || !transform) { + this.outer.addClass(this.settings.startClass); + this.getSlideItem(index).removeClass('lg-complete'); + } + var timeout = this.settings.zoomFromOrigin + ? 100 + : this.settings.backdropDuration; + setTimeout(function () { + _this.outer.addClass('lg-components-open'); + }, timeout); + this.index = index; + this.LGel.trigger(lGEvents.beforeOpen); + // add class lg-current to remove initial transition + this.getSlideItem(index).addClass('lg-current'); + this.lGalleryOn = false; + // Store the current scroll top value to scroll back after closing the gallery.. + this.prevScrollTop = $LG(window).scrollTop(); + setTimeout(function () { + // Need to check both zoomFromOrigin and transform values as we need to set set the + // default opening animation if user missed to add the lg-size attribute + if (_this.zoomFromOrigin && transform) { + var currentSlide_1 = _this.getSlideItem(index); + currentSlide_1.css('transform', transform); + setTimeout(function () { + currentSlide_1 + .addClass('lg-start-progress lg-start-end-progress') + .css('transition-duration', _this.settings.startAnimationDuration + 'ms'); + _this.outer.addClass('lg-zoom-from-image'); + }); + setTimeout(function () { + currentSlide_1.css('transform', 'translate3d(0, 0, 0)'); + }, 100); + } + setTimeout(function () { + _this.$backdrop.addClass('in'); + _this.$container.addClass('lg-show-in'); + }, 10); + setTimeout(function () { + if (_this.settings.trapFocus && + document.body === _this.settings.container) { + _this.trapFocus(); + } + }, _this.settings.backdropDuration + 50); + // lg-visible class resets gallery opacity to 1 + if (!_this.zoomFromOrigin || !transform) { + setTimeout(function () { + _this.outer.addClass('lg-visible'); + }, _this.settings.backdropDuration); + } + // initiate slide function + _this.slide(index, false, false, false); + _this.LGel.trigger(lGEvents.afterOpen); + }); + if (document.body === this.settings.container) { + $LG('html').addClass('lg-on'); + } + }; + /** + * Note - Changing the position of the media on every slide transition creates a flickering effect. + * Therefore, The height of the caption is calculated dynamically, only once based on the first slide caption. + * if you have dynamic captions for each media, + * you can provide an appropriate height for the captions via allowMediaOverlap option + */ + LightGallery.prototype.getMediaContainerPosition = function () { + if (this.settings.allowMediaOverlap) { + return { + top: 0, + bottom: 0, + }; + } + var top = this.$toolbar.get().clientHeight || 0; + var subHtml = this.outer.find('.lg-components .lg-sub-html').get(); + var captionHeight = this.settings.defaultCaptionHeight || + (subHtml && subHtml.clientHeight) || + 0; + var thumbContainer = this.outer.find('.lg-thumb-outer').get(); + var thumbHeight = thumbContainer ? thumbContainer.clientHeight : 0; + var bottom = thumbHeight + captionHeight; + return { + top: top, + bottom: bottom, + }; + }; + LightGallery.prototype.setMediaContainerPosition = function (top, bottom) { + if (top === void 0) { top = 0; } + if (bottom === void 0) { bottom = 0; } + this.$content.css('top', top + 'px').css('bottom', bottom + 'px'); + }; + LightGallery.prototype.hideBars = function () { + var _this = this; + // Hide controllers if mouse doesn't move for some period + setTimeout(function () { + _this.outer.removeClass('lg-hide-items'); + if (_this.settings.hideBarsDelay > 0) { + _this.outer.on('mousemove.lg click.lg touchstart.lg', function () { + _this.outer.removeClass('lg-hide-items'); + clearTimeout(_this.hideBarTimeout); + // Timeout will be cleared on each slide movement also + _this.hideBarTimeout = setTimeout(function () { + _this.outer.addClass('lg-hide-items'); + }, _this.settings.hideBarsDelay); + }); + _this.outer.trigger('mousemove.lg'); + } + }, this.settings.showBarsAfter); + }; + LightGallery.prototype.initPictureFill = function ($img) { + if (this.settings.supportLegacyBrowser) { + try { + picturefill({ + elements: [$img.get()], + }); + } + catch (e) { + console.warn('lightGallery :- If you want srcset or picture tag to be supported for older browser please include picturefil javascript library in your document.'); + } + } + }; + /** + * @desc Create image counter + * Ex: 1/10 + */ + LightGallery.prototype.counter = function () { + if (this.settings.counter) { + var counterHtml = "
\n " + (this.index + 1) + " /\n " + this.galleryItems.length + "
"; + this.outer.find(this.settings.appendCounterTo).append(counterHtml); + } + }; + /** + * @desc add sub-html into the slide + * @param {Number} index - index of the slide + */ + LightGallery.prototype.addHtml = function (index) { + var subHtml; + var subHtmlUrl; + if (this.galleryItems[index].subHtmlUrl) { + subHtmlUrl = this.galleryItems[index].subHtmlUrl; + } + else { + subHtml = this.galleryItems[index].subHtml; + } + if (!subHtmlUrl) { + if (subHtml) { + // get first letter of sub-html + // if first letter starts with . or # get the html form the jQuery object + var fL = subHtml.substring(0, 1); + if (fL === '.' || fL === '#') { + try { + if (this.settings.subHtmlSelectorRelative && + !this.settings.dynamic) { + subHtml = $LG(this.items) + .eq(index) + .find(subHtml) + .first() + .html(); + } + else { + subHtml = $LG(subHtml).first().html(); + } + } + catch (error) { + console.warn("Error processing subHtml selector \"" + subHtml + "\""); + subHtml = ''; + } + } + } + else { + subHtml = ''; + } + } + if (this.settings.appendSubHtmlTo !== '.lg-item') { + if (subHtmlUrl) { + utils.fetchCaptionFromUrl(subHtmlUrl, this.outer.find('.lg-sub-html'), 'replace'); + } + else { + this.outer.find('.lg-sub-html').html(subHtml); + } + } + else { + var currentSlide = $LG(this.getSlideItemId(index)); + if (subHtmlUrl) { + utils.fetchCaptionFromUrl(subHtmlUrl, currentSlide, 'append'); + } + else { + currentSlide.append("
" + subHtml + "
"); + } + } + // Add lg-empty-html class if title doesn't exist + if (typeof subHtml !== 'undefined' && subHtml !== null) { + if (subHtml === '') { + this.outer + .find(this.settings.appendSubHtmlTo) + .addClass('lg-empty-html'); + } + else { + this.outer + .find(this.settings.appendSubHtmlTo) + .removeClass('lg-empty-html'); + } + } + this.LGel.trigger(lGEvents.afterAppendSubHtml, { + index: index, + }); + }; + /** + * @desc Preload slides + * @param {Number} index - index of the slide + * @todo preload not working for the first slide, Also, should work for the first and last slide as well + */ + LightGallery.prototype.preload = function (index) { + for (var i = 1; i <= this.settings.preload; i++) { + if (i >= this.galleryItems.length - index) { + break; + } + this.loadContent(index + i, false); + } + for (var j = 1; j <= this.settings.preload; j++) { + if (index - j < 0) { + break; + } + this.loadContent(index - j, false); + } + }; + LightGallery.prototype.getDummyImgStyles = function (imageSize) { + if (!imageSize) + return ''; + return "width:" + imageSize.width + "px;\n margin-left: -" + imageSize.width / 2 + "px;\n margin-top: -" + imageSize.height / 2 + "px;\n height:" + imageSize.height + "px"; + }; + LightGallery.prototype.getVideoContStyle = function (imageSize) { + if (!imageSize) + return ''; + return "width:" + imageSize.width + "px;\n height:" + imageSize.height + "px"; + }; + LightGallery.prototype.getDummyImageContent = function ($currentSlide, index, alt) { + var $currentItem; + if (!this.settings.dynamic) { + $currentItem = $LG(this.items).eq(index); + } + if ($currentItem) { + var _dummyImgSrc = void 0; + if (!this.settings.exThumbImage) { + _dummyImgSrc = $currentItem.find('img').first().attr('src'); + } + else { + _dummyImgSrc = $currentItem.attr(this.settings.exThumbImage); + } + if (!_dummyImgSrc) + return ''; + var imgStyle = this.getDummyImgStyles(this.currentImageSize); + var dummyImgContentImg = document.createElement('img'); + dummyImgContentImg.alt = alt || ''; + dummyImgContentImg.src = _dummyImgSrc; + dummyImgContentImg.className = "lg-dummy-img"; + dummyImgContentImg.style.cssText = imgStyle; + $currentSlide.addClass('lg-first-slide'); + this.outer.addClass('lg-first-slide-loading'); + return dummyImgContentImg; + } + return ''; + }; + LightGallery.prototype.setImgMarkup = function (src, $currentSlide, index) { + var currentGalleryItem = this.galleryItems[index]; + var alt = currentGalleryItem.alt, srcset = currentGalleryItem.srcset, sizes = currentGalleryItem.sizes, sources = currentGalleryItem.sources; + // Use the thumbnail as dummy image which will be resized to actual image size and + // displayed on top of actual image + var imgContent = ''; + var altAttr = alt ? 'alt="' + alt + '"' : ''; + if (this.isFirstSlideWithZoomAnimation()) { + imgContent = this.getDummyImageContent($currentSlide, index, altAttr); + } + else { + imgContent = utils.getImgMarkup(index, src, altAttr, srcset, sizes, sources); + } + var picture = document.createElement('picture'); + picture.className = 'lg-img-wrap'; + $LG(picture).append(imgContent); + $currentSlide.prepend(picture); + }; + LightGallery.prototype.onSlideObjectLoad = function ($slide, isHTML5VideoWithoutPoster, onLoad, onError) { + var mediaObject = $slide.find('.lg-object').first(); + if (utils.isImageLoaded(mediaObject.get()) || + isHTML5VideoWithoutPoster) { + onLoad(); + } + else { + mediaObject.on('load.lg error.lg', function () { + onLoad && onLoad(); + }); + mediaObject.on('error.lg', function () { + onError && onError(); + }); + } + }; + /** + * + * @param $el Current slide item + * @param index + * @param delay Delay is 0 except first time + * @param speed Speed is same as delay, except it is 0 if gallery is opened via hash plugin + * @param isFirstSlide + */ + LightGallery.prototype.onLgObjectLoad = function (currentSlide, index, delay, speed, isFirstSlide, isHTML5VideoWithoutPoster) { + var _this = this; + this.onSlideObjectLoad(currentSlide, isHTML5VideoWithoutPoster, function () { + _this.triggerSlideItemLoad(currentSlide, index, delay, speed, isFirstSlide); + }, function () { + currentSlide.addClass('lg-complete lg-complete_'); + currentSlide.html('' + + _this.settings.strings['mediaLoadingFailed'] + + ''); + }); + }; + LightGallery.prototype.triggerSlideItemLoad = function ($currentSlide, index, delay, speed, isFirstSlide) { + var _this = this; + var currentGalleryItem = this.galleryItems[index]; + // Adding delay for video slides without poster for better performance and user experience + // Videos should start playing once once the gallery is completely loaded + var _speed = isFirstSlide && + this.getSlideType(currentGalleryItem) === 'video' && + !currentGalleryItem.poster + ? speed + : 0; + setTimeout(function () { + $currentSlide.addClass('lg-complete lg-complete_'); + _this.LGel.trigger(lGEvents.slideItemLoad, { + index: index, + delay: delay || 0, + isFirstSlide: isFirstSlide, + }); + }, _speed); + }; + LightGallery.prototype.isFirstSlideWithZoomAnimation = function () { + return !!(!this.lGalleryOn && + this.zoomFromOrigin && + this.currentImageSize); + }; + // Add video slideInfo + LightGallery.prototype.addSlideVideoInfo = function (items) { + var _this = this; + items.forEach(function (element, index) { + element.__slideVideoInfo = utils.isVideo(element.src, !!element.video, index); + if (element.__slideVideoInfo && + _this.settings.loadYouTubePoster && + !element.poster && + element.__slideVideoInfo.youtube) { + element.poster = "//img.youtube.com/vi/" + element.__slideVideoInfo.youtube[1] + "/maxresdefault.jpg"; + } + }); + }; + /** + * Load slide content into slide. + * This is used to load content into slides that is not visible too + * @param {Number} index - index of the slide. + * @param {Boolean} rec - if true call loadcontent() function again. + */ + LightGallery.prototype.loadContent = function (index, rec) { + var _this = this; + var currentGalleryItem = this.galleryItems[index]; + var $currentSlide = $LG(this.getSlideItemId(index)); + var poster = currentGalleryItem.poster, srcset = currentGalleryItem.srcset, sizes = currentGalleryItem.sizes, sources = currentGalleryItem.sources; + var src = currentGalleryItem.src; + var video = currentGalleryItem.video; + var _html5Video = video && typeof video === 'string' ? JSON.parse(video) : video; + if (currentGalleryItem.responsive) { + var srcDyItms = currentGalleryItem.responsive.split(','); + src = utils.getResponsiveSrc(srcDyItms) || src; + } + var videoInfo = currentGalleryItem.__slideVideoInfo; + var lgVideoStyle = ''; + var iframe = !!currentGalleryItem.iframe; + var isFirstSlide = !this.lGalleryOn; + // delay for adding complete class. it is 0 except first time. + var delay = 0; + if (isFirstSlide) { + if (this.zoomFromOrigin && this.currentImageSize) { + delay = this.settings.startAnimationDuration + 10; + } + else { + delay = this.settings.backdropDuration + 10; + } + } + if (!$currentSlide.hasClass('lg-loaded')) { + if (videoInfo) { + var _a = this.mediaContainerPosition, top_2 = _a.top, bottom = _a.bottom; + var videoSize = utils.getSize(this.items[index], this.outer, top_2 + bottom, videoInfo && this.settings.videoMaxSize); + lgVideoStyle = this.getVideoContStyle(videoSize); + } + if (iframe) { + var markup = utils.getIframeMarkup(this.settings.iframeWidth, this.settings.iframeHeight, this.settings.iframeMaxWidth, this.settings.iframeMaxHeight, src, currentGalleryItem.iframeTitle); + $currentSlide.prepend(markup); + } + else if (poster) { + var dummyImg = ''; + var hasStartAnimation = isFirstSlide && + this.zoomFromOrigin && + this.currentImageSize; + if (hasStartAnimation) { + dummyImg = this.getDummyImageContent($currentSlide, index, ''); + } + var markup = utils.getVideoPosterMarkup(poster, dummyImg || '', lgVideoStyle, this.settings.strings['playVideo'], videoInfo); + $currentSlide.prepend(markup); + } + else if (videoInfo) { + var markup = "
"; + $currentSlide.prepend(markup); + } + else { + this.setImgMarkup(src, $currentSlide, index); + if (srcset || sources) { + var $img = $currentSlide.find('.lg-object'); + this.initPictureFill($img); + } + } + if (poster || videoInfo) { + this.LGel.trigger(lGEvents.hasVideo, { + index: index, + src: src, + html5Video: _html5Video, + hasPoster: !!poster, + }); + } + this.LGel.trigger(lGEvents.afterAppendSlide, { index: index }); + if (this.lGalleryOn && + this.settings.appendSubHtmlTo === '.lg-item') { + this.addHtml(index); + } + } + // For first time add some delay for displaying the start animation. + var _speed = 0; + // Do not change the delay value because it is required for zoom plugin. + // If gallery opened from direct url (hash) speed value should be 0 + if (delay && !$LG(document.body).hasClass('lg-from-hash')) { + _speed = delay; + } + // Only for first slide and zoomFromOrigin is enabled + if (this.isFirstSlideWithZoomAnimation()) { + setTimeout(function () { + $currentSlide + .removeClass('lg-start-end-progress lg-start-progress') + .removeAttr('style'); + }, this.settings.startAnimationDuration + 100); + if (!$currentSlide.hasClass('lg-loaded')) { + setTimeout(function () { + if (_this.getSlideType(currentGalleryItem) === 'image') { + var alt = currentGalleryItem.alt; + var altAttr = alt ? 'alt="' + alt + '"' : ''; + $currentSlide + .find('.lg-img-wrap') + .append(utils.getImgMarkup(index, src, altAttr, srcset, sizes, currentGalleryItem.sources)); + if (srcset || sources) { + var $img = $currentSlide.find('.lg-object'); + _this.initPictureFill($img); + } + } + if (_this.getSlideType(currentGalleryItem) === 'image' || + (_this.getSlideType(currentGalleryItem) === 'video' && + poster)) { + _this.onLgObjectLoad($currentSlide, index, delay, _speed, true, false); + // load remaining slides once the slide is completely loaded + _this.onSlideObjectLoad($currentSlide, !!(videoInfo && videoInfo.html5 && !poster), function () { + _this.loadContentOnFirstSlideLoad(index, $currentSlide, _speed); + }, function () { + _this.loadContentOnFirstSlideLoad(index, $currentSlide, _speed); + }); + } + }, this.settings.startAnimationDuration + 100); + } + } + // SLide content has been added to dom + $currentSlide.addClass('lg-loaded'); + if (!this.isFirstSlideWithZoomAnimation() || + (this.getSlideType(currentGalleryItem) === 'video' && !poster)) { + this.onLgObjectLoad($currentSlide, index, delay, _speed, isFirstSlide, !!(videoInfo && videoInfo.html5 && !poster)); + } + // When gallery is opened once content is loaded (second time) need to add lg-complete class for css styling + if ((!this.zoomFromOrigin || !this.currentImageSize) && + $currentSlide.hasClass('lg-complete_') && + !this.lGalleryOn) { + setTimeout(function () { + $currentSlide.addClass('lg-complete'); + }, this.settings.backdropDuration); + } + // Content loaded + // Need to set lGalleryOn before calling preload function + this.lGalleryOn = true; + if (rec === true) { + if (!$currentSlide.hasClass('lg-complete_')) { + $currentSlide + .find('.lg-object') + .first() + .on('load.lg error.lg', function () { + _this.preload(index); + }); + } + else { + this.preload(index); + } + } + }; + /** + * @desc Remove dummy image content and load next slides + * Called only for the first time if zoomFromOrigin animation is enabled + * @param index + * @param $currentSlide + * @param speed + */ + LightGallery.prototype.loadContentOnFirstSlideLoad = function (index, $currentSlide, speed) { + var _this = this; + setTimeout(function () { + $currentSlide.find('.lg-dummy-img').remove(); + $currentSlide.removeClass('lg-first-slide'); + _this.outer.removeClass('lg-first-slide-loading'); + _this.isDummyImageRemoved = true; + _this.preload(index); + }, speed + 300); + }; + LightGallery.prototype.getItemsToBeInsertedToDom = function (index, prevIndex, numberOfItems) { + var _this = this; + if (numberOfItems === void 0) { numberOfItems = 0; } + var itemsToBeInsertedToDom = []; + // Minimum 2 items should be there + var possibleNumberOfItems = Math.max(numberOfItems, 3); + possibleNumberOfItems = Math.min(possibleNumberOfItems, this.galleryItems.length); + var prevIndexItem = "lg-item-" + this.lgId + "-" + prevIndex; + if (this.galleryItems.length <= 3) { + this.galleryItems.forEach(function (_element, index) { + itemsToBeInsertedToDom.push("lg-item-" + _this.lgId + "-" + index); + }); + return itemsToBeInsertedToDom; + } + if (index < (this.galleryItems.length - 1) / 2) { + for (var idx = index; idx > index - possibleNumberOfItems / 2 && idx >= 0; idx--) { + itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + idx); + } + var numberOfExistingItems = itemsToBeInsertedToDom.length; + for (var idx = 0; idx < possibleNumberOfItems - numberOfExistingItems; idx++) { + itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + (index + idx + 1)); + } + } + else { + for (var idx = index; idx <= this.galleryItems.length - 1 && + idx < index + possibleNumberOfItems / 2; idx++) { + itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + idx); + } + var numberOfExistingItems = itemsToBeInsertedToDom.length; + for (var idx = 0; idx < possibleNumberOfItems - numberOfExistingItems; idx++) { + itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + (index - idx - 1)); + } + } + if (this.settings.loop) { + if (index === this.galleryItems.length - 1) { + itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + 0); + } + else if (index === 0) { + itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + (this.galleryItems.length - 1)); + } + } + if (itemsToBeInsertedToDom.indexOf(prevIndexItem) === -1) { + itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + prevIndex); + } + return itemsToBeInsertedToDom; + }; + LightGallery.prototype.organizeSlideItems = function (index, prevIndex) { + var _this = this; + var itemsToBeInsertedToDom = this.getItemsToBeInsertedToDom(index, prevIndex, this.settings.numberOfSlideItemsInDom); + itemsToBeInsertedToDom.forEach(function (item) { + if (_this.currentItemsInDom.indexOf(item) === -1) { + _this.$inner.append("
"); + } + }); + this.currentItemsInDom.forEach(function (item) { + if (itemsToBeInsertedToDom.indexOf(item) === -1) { + $LG("#" + item).remove(); + } + }); + return itemsToBeInsertedToDom; + }; + /** + * Get previous index of the slide + */ + LightGallery.prototype.getPreviousSlideIndex = function () { + var prevIndex = 0; + try { + var currentItemId = this.outer + .find('.lg-current') + .first() + .attr('id'); + prevIndex = parseInt(currentItemId.split('-')[3]) || 0; + } + catch (error) { + prevIndex = 0; + } + return prevIndex; + }; + LightGallery.prototype.setDownloadValue = function (index) { + if (this.settings.download) { + var currentGalleryItem = this.galleryItems[index]; + var hideDownloadBtn = currentGalleryItem.downloadUrl === false || + currentGalleryItem.downloadUrl === 'false'; + if (hideDownloadBtn) { + this.outer.addClass('lg-hide-download'); + } + else { + var $download = this.getElementById('lg-download'); + this.outer.removeClass('lg-hide-download'); + $download.attr('href', currentGalleryItem.downloadUrl || + currentGalleryItem.src); + if (currentGalleryItem.download) { + $download.attr('download', currentGalleryItem.download); + } + } + } + }; + LightGallery.prototype.makeSlideAnimation = function (direction, currentSlideItem, previousSlideItem) { + var _this = this; + if (this.lGalleryOn) { + previousSlideItem.addClass('lg-slide-progress'); + } + setTimeout(function () { + // remove all transitions + _this.outer.addClass('lg-no-trans'); + _this.outer + .find('.lg-item') + .removeClass('lg-prev-slide lg-next-slide'); + if (direction === 'prev') { + //prevslide + currentSlideItem.addClass('lg-prev-slide'); + previousSlideItem.addClass('lg-next-slide'); + } + else { + // next slide + currentSlideItem.addClass('lg-next-slide'); + previousSlideItem.addClass('lg-prev-slide'); + } + // give 50 ms for browser to add/remove class + setTimeout(function () { + _this.outer.find('.lg-item').removeClass('lg-current'); + currentSlideItem.addClass('lg-current'); + // reset all transitions + _this.outer.removeClass('lg-no-trans'); + }, 50); + }, this.lGalleryOn ? this.settings.slideDelay : 0); + }; + /** + * Goto a specific slide. + * @param {Number} index - index of the slide + * @param {Boolean} fromTouch - true if slide function called via touch event or mouse drag + * @param {Boolean} fromThumb - true if slide function called via thumbnail click + * @param {String} direction - Direction of the slide(next/prev) + * @category lGPublicMethods + * @example + * const plugin = lightGallery(); + * // to go to 3rd slide + * plugin.slide(2); + * + */ + LightGallery.prototype.slide = function (index, fromTouch, fromThumb, direction) { + var _this = this; + var prevIndex = this.getPreviousSlideIndex(); + this.currentItemsInDom = this.organizeSlideItems(index, prevIndex); + // Prevent multiple call, Required for hsh plugin + if (this.lGalleryOn && prevIndex === index) { + return; + } + var numberOfGalleryItems = this.galleryItems.length; + if (!this.lgBusy) { + if (this.settings.counter) { + this.updateCurrentCounter(index); + } + var currentSlideItem = this.getSlideItem(index); + var previousSlideItem_1 = this.getSlideItem(prevIndex); + var currentGalleryItem = this.galleryItems[index]; + var videoInfo = currentGalleryItem.__slideVideoInfo; + this.outer.attr('data-lg-slide-type', this.getSlideType(currentGalleryItem)); + this.setDownloadValue(index); + if (videoInfo) { + var _a = this.mediaContainerPosition, top_3 = _a.top, bottom = _a.bottom; + var videoSize = utils.getSize(this.items[index], this.outer, top_3 + bottom, videoInfo && this.settings.videoMaxSize); + this.resizeVideoSlide(index, videoSize); + } + this.LGel.trigger(lGEvents.beforeSlide, { + prevIndex: prevIndex, + index: index, + fromTouch: !!fromTouch, + fromThumb: !!fromThumb, + }); + this.lgBusy = true; + clearTimeout(this.hideBarTimeout); + this.arrowDisable(index); + if (!direction) { + if (index < prevIndex) { + direction = 'prev'; + } + else if (index > prevIndex) { + direction = 'next'; + } + } + if (!fromTouch) { + this.makeSlideAnimation(direction, currentSlideItem, previousSlideItem_1); + } + else { + this.outer + .find('.lg-item') + .removeClass('lg-prev-slide lg-current lg-next-slide'); + var touchPrev = void 0; + var touchNext = void 0; + if (numberOfGalleryItems > 2) { + touchPrev = index - 1; + touchNext = index + 1; + if (index === 0 && prevIndex === numberOfGalleryItems - 1) { + // next slide + touchNext = 0; + touchPrev = numberOfGalleryItems - 1; + } + else if (index === numberOfGalleryItems - 1 && + prevIndex === 0) { + // prev slide + touchNext = 0; + touchPrev = numberOfGalleryItems - 1; + } + } + else { + touchPrev = 0; + touchNext = 1; + } + if (direction === 'prev') { + this.getSlideItem(touchNext).addClass('lg-next-slide'); + } + else { + this.getSlideItem(touchPrev).addClass('lg-prev-slide'); + } + currentSlideItem.addClass('lg-current'); + } + // Do not put load content in set timeout as it needs to load immediately when the gallery is opened + if (!this.lGalleryOn) { + this.loadContent(index, true); + } + else { + setTimeout(function () { + _this.loadContent(index, true); + // Add title if this.settings.appendSubHtmlTo === lg-sub-html + if (_this.settings.appendSubHtmlTo !== '.lg-item') { + _this.addHtml(index); + } + }, this.settings.speed + 50 + (fromTouch ? 0 : this.settings.slideDelay)); + } + setTimeout(function () { + _this.lgBusy = false; + previousSlideItem_1.removeClass('lg-slide-progress'); + _this.LGel.trigger(lGEvents.afterSlide, { + prevIndex: prevIndex, + index: index, + fromTouch: fromTouch, + fromThumb: fromThumb, + }); + }, (this.lGalleryOn ? this.settings.speed + 100 : 100) + (fromTouch ? 0 : this.settings.slideDelay)); + } + this.index = index; + }; + LightGallery.prototype.updateCurrentCounter = function (index) { + this.getElementById('lg-counter-current').html(index + 1 + ''); + }; + LightGallery.prototype.updateCounterTotal = function () { + this.getElementById('lg-counter-all').html(this.galleryItems.length + ''); + }; + LightGallery.prototype.getSlideType = function (item) { + if (item.__slideVideoInfo) { + return 'video'; + } + else if (item.iframe) { + return 'iframe'; + } + else { + return 'image'; + } + }; + LightGallery.prototype.touchMove = function (startCoords, endCoords, e) { + var distanceX = endCoords.pageX - startCoords.pageX; + var distanceY = endCoords.pageY - startCoords.pageY; + var allowSwipe = false; + if (this.swipeDirection) { + allowSwipe = true; + } + else { + if (Math.abs(distanceX) > 15) { + this.swipeDirection = 'horizontal'; + allowSwipe = true; + } + else if (Math.abs(distanceY) > 15) { + this.swipeDirection = 'vertical'; + allowSwipe = true; + } + } + if (!allowSwipe) { + return; + } + var $currentSlide = this.getSlideItem(this.index); + if (this.swipeDirection === 'horizontal') { + e === null || e === void 0 ? void 0 : e.preventDefault(); + // reset opacity and transition duration + this.outer.addClass('lg-dragging'); + // move current slide + this.setTranslate($currentSlide, distanceX, 0); + // move next and prev slide with current slide + var width = $currentSlide.get().offsetWidth; + var slideWidthAmount = (width * 15) / 100; + var gutter = slideWidthAmount - Math.abs((distanceX * 10) / 100); + this.setTranslate(this.outer.find('.lg-prev-slide').first(), -width + distanceX - gutter, 0); + this.setTranslate(this.outer.find('.lg-next-slide').first(), width + distanceX + gutter, 0); + } + else if (this.swipeDirection === 'vertical') { + if (this.settings.swipeToClose) { + e === null || e === void 0 ? void 0 : e.preventDefault(); + this.$container.addClass('lg-dragging-vertical'); + var opacity = 1 - Math.abs(distanceY) / window.innerHeight; + this.$backdrop.css('opacity', opacity); + var scale = 1 - Math.abs(distanceY) / (window.innerWidth * 2); + this.setTranslate($currentSlide, 0, distanceY, scale, scale); + if (Math.abs(distanceY) > 100) { + this.outer + .addClass('lg-hide-items') + .removeClass('lg-components-open'); + } + } + } + }; + LightGallery.prototype.touchEnd = function (endCoords, startCoords, event) { + var _this = this; + var distance; + // keep slide animation for any mode while dragg/swipe + if (this.settings.mode !== 'lg-slide') { + this.outer.addClass('lg-slide'); + } + // set transition duration + setTimeout(function () { + _this.$container.removeClass('lg-dragging-vertical'); + _this.outer + .removeClass('lg-dragging lg-hide-items') + .addClass('lg-components-open'); + var triggerClick = true; + if (_this.swipeDirection === 'horizontal') { + distance = endCoords.pageX - startCoords.pageX; + var distanceAbs = Math.abs(endCoords.pageX - startCoords.pageX); + if (distance < 0 && + distanceAbs > _this.settings.swipeThreshold) { + _this.goToNextSlide(true); + triggerClick = false; + } + else if (distance > 0 && + distanceAbs > _this.settings.swipeThreshold) { + _this.goToPrevSlide(true); + triggerClick = false; + } + } + else if (_this.swipeDirection === 'vertical') { + distance = Math.abs(endCoords.pageY - startCoords.pageY); + if (_this.settings.closable && + _this.settings.swipeToClose && + distance > 100) { + _this.closeGallery(); + return; + } + else { + _this.$backdrop.css('opacity', 1); + } + } + _this.outer.find('.lg-item').removeAttr('style'); + if (triggerClick && + Math.abs(endCoords.pageX - startCoords.pageX) < 5) { + // Trigger click if distance is less than 5 pix + var target = $LG(event.target); + if (_this.isPosterElement(target)) { + _this.LGel.trigger(lGEvents.posterClick); + } + } + _this.swipeDirection = undefined; + }); + // remove slide class once drag/swipe is completed if mode is not slide + setTimeout(function () { + if (!_this.outer.hasClass('lg-dragging') && + _this.settings.mode !== 'lg-slide') { + _this.outer.removeClass('lg-slide'); + } + }, this.settings.speed + 100); + }; + LightGallery.prototype.enableSwipe = function () { + var _this = this; + var startCoords = {}; + var endCoords = {}; + var isMoved = false; + var isSwiping = false; + if (this.settings.enableSwipe) { + this.$inner.on('touchstart.lg', function (e) { + _this.dragOrSwipeEnabled = true; + var $item = _this.getSlideItem(_this.index); + if (($LG(e.target).hasClass('lg-item') || + $item.get().contains(e.target)) && + !_this.outer.hasClass('lg-zoomed') && + !_this.lgBusy && + e.touches.length === 1) { + isSwiping = true; + _this.touchAction = 'swipe'; + _this.manageSwipeClass(); + startCoords = { + pageX: e.touches[0].pageX, + pageY: e.touches[0].pageY, + }; + } + }); + this.$inner.on('touchmove.lg', function (e) { + if (isSwiping && + _this.touchAction === 'swipe' && + e.touches.length === 1) { + endCoords = { + pageX: e.touches[0].pageX, + pageY: e.touches[0].pageY, + }; + _this.touchMove(startCoords, endCoords, e); + isMoved = true; + } + }); + this.$inner.on('touchend.lg', function (event) { + if (_this.touchAction === 'swipe') { + if (isMoved) { + isMoved = false; + _this.touchEnd(endCoords, startCoords, event); + } + else if (isSwiping) { + var target = $LG(event.target); + if (_this.isPosterElement(target)) { + _this.LGel.trigger(lGEvents.posterClick); + } + } + _this.touchAction = undefined; + isSwiping = false; + } + }); + } + }; + LightGallery.prototype.enableDrag = function () { + var _this = this; + var startCoords = {}; + var endCoords = {}; + var isDraging = false; + var isMoved = false; + if (this.settings.enableDrag) { + this.outer.on('mousedown.lg', function (e) { + _this.dragOrSwipeEnabled = true; + var $item = _this.getSlideItem(_this.index); + if ($LG(e.target).hasClass('lg-item') || + $item.get().contains(e.target)) { + if (!_this.outer.hasClass('lg-zoomed') && !_this.lgBusy) { + e.preventDefault(); + if (!_this.lgBusy) { + _this.manageSwipeClass(); + startCoords = { + pageX: e.pageX, + pageY: e.pageY, + }; + isDraging = true; + // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723 + _this.outer.get().scrollLeft += 1; + _this.outer.get().scrollLeft -= 1; + // * + _this.outer + .removeClass('lg-grab') + .addClass('lg-grabbing'); + _this.LGel.trigger(lGEvents.dragStart); + } + } + } + }); + $LG(window).on("mousemove.lg.global" + this.lgId, function (e) { + if (isDraging && _this.lgOpened) { + isMoved = true; + endCoords = { + pageX: e.pageX, + pageY: e.pageY, + }; + _this.touchMove(startCoords, endCoords); + _this.LGel.trigger(lGEvents.dragMove); + } + }); + $LG(window).on("mouseup.lg.global" + this.lgId, function (event) { + if (!_this.lgOpened) { + return; + } + var target = $LG(event.target); + if (isMoved) { + isMoved = false; + _this.touchEnd(endCoords, startCoords, event); + _this.LGel.trigger(lGEvents.dragEnd); + } + else if (_this.isPosterElement(target)) { + _this.LGel.trigger(lGEvents.posterClick); + } + // Prevent execution on click + if (isDraging) { + isDraging = false; + _this.outer.removeClass('lg-grabbing').addClass('lg-grab'); + } + }); + } + }; + LightGallery.prototype.triggerPosterClick = function () { + var _this = this; + this.$inner.on('click.lg', function (event) { + if (!_this.dragOrSwipeEnabled && + _this.isPosterElement($LG(event.target))) { + _this.LGel.trigger(lGEvents.posterClick); + } + }); + }; + LightGallery.prototype.manageSwipeClass = function () { + var _touchNext = this.index + 1; + var _touchPrev = this.index - 1; + if (this.settings.loop && this.galleryItems.length > 2) { + if (this.index === 0) { + _touchPrev = this.galleryItems.length - 1; + } + else if (this.index === this.galleryItems.length - 1) { + _touchNext = 0; + } + } + this.outer.find('.lg-item').removeClass('lg-next-slide lg-prev-slide'); + if (_touchPrev > -1) { + this.getSlideItem(_touchPrev).addClass('lg-prev-slide'); + } + this.getSlideItem(_touchNext).addClass('lg-next-slide'); + }; + /** + * Go to next slide + * @param {Boolean} fromTouch - true if slide function called via touch event + * @category lGPublicMethods + * @example + * const plugin = lightGallery(); + * plugin.goToNextSlide(); + * @see Demo + */ + LightGallery.prototype.goToNextSlide = function (fromTouch) { + var _this = this; + var _loop = this.settings.loop; + if (fromTouch && this.galleryItems.length < 3) { + _loop = false; + } + if (!this.lgBusy) { + if (this.index + 1 < this.galleryItems.length) { + this.index++; + this.LGel.trigger(lGEvents.beforeNextSlide, { + index: this.index, + }); + this.slide(this.index, !!fromTouch, false, 'next'); + } + else { + if (_loop) { + this.index = 0; + this.LGel.trigger(lGEvents.beforeNextSlide, { + index: this.index, + }); + this.slide(this.index, !!fromTouch, false, 'next'); + } + else if (this.settings.slideEndAnimation && !fromTouch) { + this.outer.addClass('lg-right-end'); + setTimeout(function () { + _this.outer.removeClass('lg-right-end'); + }, 400); + } + } + } + }; + /** + * Go to previous slides + * @param {Boolean} fromTouch - true if slide function called via touch event + * @category lGPublicMethods + * @example + * const plugin = lightGallery({}); + * plugin.goToPrevSlide(); + * @see Demo + * + */ + LightGallery.prototype.goToPrevSlide = function (fromTouch) { + var _this = this; + var _loop = this.settings.loop; + if (fromTouch && this.galleryItems.length < 3) { + _loop = false; + } + if (!this.lgBusy) { + if (this.index > 0) { + this.index--; + this.LGel.trigger(lGEvents.beforePrevSlide, { + index: this.index, + fromTouch: fromTouch, + }); + this.slide(this.index, !!fromTouch, false, 'prev'); + } + else { + if (_loop) { + this.index = this.galleryItems.length - 1; + this.LGel.trigger(lGEvents.beforePrevSlide, { + index: this.index, + fromTouch: fromTouch, + }); + this.slide(this.index, !!fromTouch, false, 'prev'); + } + else if (this.settings.slideEndAnimation && !fromTouch) { + this.outer.addClass('lg-left-end'); + setTimeout(function () { + _this.outer.removeClass('lg-left-end'); + }, 400); + } + } + } + }; + LightGallery.prototype.keyPress = function () { + var _this = this; + $LG(window).on("keydown.lg.global" + this.lgId, function (e) { + if (_this.lgOpened && + _this.settings.escKey === true && + e.keyCode === 27) { + e.preventDefault(); + if (_this.settings.allowMediaOverlap && + _this.outer.hasClass('lg-can-toggle') && + _this.outer.hasClass('lg-components-open')) { + _this.outer.removeClass('lg-components-open'); + } + else { + _this.closeGallery(); + } + } + if (_this.lgOpened && _this.galleryItems.length > 1) { + if (e.keyCode === 37) { + e.preventDefault(); + _this.goToPrevSlide(); + } + if (e.keyCode === 39) { + e.preventDefault(); + _this.goToNextSlide(); + } + } + }); + }; + LightGallery.prototype.arrow = function () { + var _this = this; + this.getElementById('lg-prev').on('click.lg', function () { + _this.goToPrevSlide(); + }); + this.getElementById('lg-next').on('click.lg', function () { + _this.goToNextSlide(); + }); + }; + LightGallery.prototype.arrowDisable = function (index) { + // Disable arrows if settings.hideControlOnEnd is true + if (!this.settings.loop && this.settings.hideControlOnEnd) { + var $prev = this.getElementById('lg-prev'); + var $next = this.getElementById('lg-next'); + if (index + 1 === this.galleryItems.length) { + $next.attr('disabled', 'disabled').addClass('disabled'); + } + else { + $next.removeAttr('disabled').removeClass('disabled'); + } + if (index === 0) { + $prev.attr('disabled', 'disabled').addClass('disabled'); + } + else { + $prev.removeAttr('disabled').removeClass('disabled'); + } + } + }; + LightGallery.prototype.setTranslate = function ($el, xValue, yValue, scaleX, scaleY) { + if (scaleX === void 0) { scaleX = 1; } + if (scaleY === void 0) { scaleY = 1; } + $el.css('transform', 'translate3d(' + + xValue + + 'px, ' + + yValue + + 'px, 0px) scale3d(' + + scaleX + + ', ' + + scaleY + + ', 1)'); + }; + LightGallery.prototype.mousewheel = function () { + var _this = this; + var lastCall = 0; + this.outer.on('wheel.lg', function (e) { + if (!e.deltaY || _this.galleryItems.length < 2) { + return; + } + e.preventDefault(); + var now = new Date().getTime(); + if (now - lastCall < 1000) { + return; + } + lastCall = now; + if (e.deltaY > 0) { + _this.goToNextSlide(); + } + else if (e.deltaY < 0) { + _this.goToPrevSlide(); + } + }); + }; + LightGallery.prototype.isSlideElement = function (target) { + return (target.hasClass('lg-outer') || + target.hasClass('lg-item') || + target.hasClass('lg-img-wrap') || + target.hasClass('lg-img-rotate')); + }; + LightGallery.prototype.isPosterElement = function (target) { + var playButton = this.getSlideItem(this.index) + .find('.lg-video-play-button') + .get(); + return (target.hasClass('lg-video-poster') || + target.hasClass('lg-video-play-button') || + (playButton && playButton.contains(target.get()))); + }; + /** + * Maximize minimize inline gallery. + * @category lGPublicMethods + */ + LightGallery.prototype.toggleMaximize = function () { + var _this = this; + this.getElementById('lg-maximize').on('click.lg', function () { + _this.$container.toggleClass('lg-inline'); + _this.refreshOnResize(); + }); + }; + LightGallery.prototype.invalidateItems = function () { + for (var index = 0; index < this.items.length; index++) { + var element = this.items[index]; + var $element = $LG(element); + $element.off("click.lgcustom-item-" + $element.attr('data-lg-id')); + } + }; + LightGallery.prototype.trapFocus = function () { + var _this = this; + this.$container.get().focus({ + preventScroll: true, + }); + $LG(window).on("keydown.lg.global" + this.lgId, function (e) { + if (!_this.lgOpened) { + return; + } + var isTabPressed = e.key === 'Tab' || e.keyCode === 9; + if (!isTabPressed) { + return; + } + var focusableEls = utils.getFocusableElements(_this.$container.get()); + var firstFocusableEl = focusableEls[0]; + var lastFocusableEl = focusableEls[focusableEls.length - 1]; + if (e.shiftKey) { + if (document.activeElement === firstFocusableEl) { + lastFocusableEl.focus(); + e.preventDefault(); + } + } + else { + if (document.activeElement === lastFocusableEl) { + firstFocusableEl.focus(); + e.preventDefault(); + } + } + }); + }; + LightGallery.prototype.manageCloseGallery = function () { + var _this = this; + if (!this.settings.closable) + return; + var mousedown = false; + this.getElementById('lg-close').on('click.lg', function () { + _this.closeGallery(); + }); + if (this.settings.closeOnTap) { + // If you drag the slide and release outside gallery gets close on chrome + // for preventing this check mousedown and mouseup happened on .lg-item or lg-outer + this.outer.on('mousedown.lg', function (e) { + var target = $LG(e.target); + if (_this.isSlideElement(target)) { + mousedown = true; + } + else { + mousedown = false; + } + }); + this.outer.on('mousemove.lg', function () { + mousedown = false; + }); + this.outer.on('mouseup.lg', function (e) { + var target = $LG(e.target); + if (_this.isSlideElement(target) && mousedown) { + if (!_this.outer.hasClass('lg-dragging')) { + _this.closeGallery(); + } + } + }); + } + }; + /** + * Close lightGallery if it is opened. + * + * @description If closable is false in the settings, you need to pass true via closeGallery method to force close gallery + * @return returns the estimated time to close gallery completely including the close animation duration + * @category lGPublicMethods + * @example + * const plugin = lightGallery(); + * plugin.closeGallery(); + * + */ + LightGallery.prototype.closeGallery = function (force) { + var _this = this; + if (!this.lgOpened || (!this.settings.closable && !force)) { + return 0; + } + this.LGel.trigger(lGEvents.beforeClose); + if (this.settings.resetScrollPosition && !this.settings.hideScrollbar) { + $LG(window).scrollTop(this.prevScrollTop); + } + var currentItem = this.items[this.index]; + var transform; + if (this.zoomFromOrigin && currentItem) { + var _a = this.mediaContainerPosition, top_4 = _a.top, bottom = _a.bottom; + var _b = this.galleryItems[this.index], __slideVideoInfo = _b.__slideVideoInfo, poster = _b.poster; + var imageSize = utils.getSize(currentItem, this.outer, top_4 + bottom, __slideVideoInfo && poster && this.settings.videoMaxSize); + transform = utils.getTransform(currentItem, this.outer, top_4, bottom, imageSize); + } + if (this.zoomFromOrigin && transform) { + this.outer.addClass('lg-closing lg-zoom-from-image'); + this.getSlideItem(this.index) + .addClass('lg-start-end-progress') + .css('transition-duration', this.settings.startAnimationDuration + 'ms') + .css('transform', transform); + } + else { + this.outer.addClass('lg-hide-items'); + // lg-zoom-from-image is used for setting the opacity to 1 if zoomFromOrigin is true + // If the closing item doesn't have the lg-size attribute, remove this class to avoid the closing css conflicts + this.outer.removeClass('lg-zoom-from-image'); + } + // Unbind all events added by lightGallery + // @todo + //this.$el.off('.lg.tm'); + this.destroyModules(); + this.lGalleryOn = false; + this.isDummyImageRemoved = false; + this.zoomFromOrigin = this.settings.zoomFromOrigin; + clearTimeout(this.hideBarTimeout); + this.hideBarTimeout = false; + $LG('html').removeClass('lg-on'); + this.outer.removeClass('lg-visible lg-components-open'); + // Resetting opacity to 0 isd required as vertical swipe to close function adds inline opacity. + this.$backdrop.removeClass('in').css('opacity', 0); + var removeTimeout = this.zoomFromOrigin && transform + ? Math.max(this.settings.startAnimationDuration, this.settings.backdropDuration) + : this.settings.backdropDuration; + this.$container.removeClass('lg-show-in'); + // Once the closign animation is completed and gallery is invisible + setTimeout(function () { + if (_this.zoomFromOrigin && transform) { + _this.outer.removeClass('lg-zoom-from-image'); + } + _this.$container.removeClass('lg-show'); + // Reset scrollbar + _this.resetScrollBar(); + // Need to remove inline opacity as it is used in the stylesheet as well + _this.$backdrop + .removeAttr('style') + .css('transition-duration', _this.settings.backdropDuration + 'ms'); + _this.outer.removeClass("lg-closing " + _this.settings.startClass); + _this.getSlideItem(_this.index).removeClass('lg-start-end-progress'); + _this.$inner.empty(); + if (_this.lgOpened) { + _this.LGel.trigger(lGEvents.afterClose, { + instance: _this, + }); + } + if (_this.$container.get()) { + _this.$container.get().blur(); + } + _this.lgOpened = false; + }, removeTimeout + 100); + return removeTimeout + 100; + }; + LightGallery.prototype.initModules = function () { + this.plugins.forEach(function (module) { + try { + module.init(); + } + catch (err) { + console.warn("lightGallery:- make sure lightGallery module is properly initiated"); + } + }); + }; + LightGallery.prototype.destroyModules = function (destroy) { + this.plugins.forEach(function (module) { + try { + if (destroy) { + module.destroy(); + } + else { + module.closeGallery && module.closeGallery(); + } + } + catch (err) { + console.warn("lightGallery:- make sure lightGallery module is properly destroyed"); + } + }); + }; + /** + * Refresh lightGallery with new set of children. + * + * @description This is useful to update the gallery when the child elements are changed without calling destroy method. + * + * If you are using dynamic mode, you can pass the modified array of dynamicEl as the first parameter to refresh the dynamic gallery + * @see Demo + * @category lGPublicMethods + * @example + * const plugin = lightGallery(); + * // Delete or add children, then call + * plugin.refresh(); + * + */ + LightGallery.prototype.refresh = function (galleryItems) { + if (!this.settings.dynamic) { + this.invalidateItems(); + } + if (galleryItems) { + this.galleryItems = galleryItems; + } + else { + this.galleryItems = this.getItems(); + } + this.updateControls(); + this.openGalleryOnItemClick(); + this.LGel.trigger(lGEvents.updateSlides); + }; + LightGallery.prototype.updateControls = function () { + this.addSlideVideoInfo(this.galleryItems); + this.updateCounterTotal(); + this.manageSingleSlideClassName(); + }; + LightGallery.prototype.destroyGallery = function () { + this.destroyModules(true); + if (!this.settings.dynamic) { + this.invalidateItems(); + } + $LG(window).off(".lg.global" + this.lgId); + this.LGel.off('.lg'); + this.$container.remove(); + }; + /** + * Destroy lightGallery. + * Destroy lightGallery and its plugin instances completely + * + * @description This method also calls CloseGallery function internally. Returns the time takes to completely close and destroy the instance. + * In case if you want to re-initialize lightGallery right after destroying it, initialize it only once the destroy process is completed. + * You can use refresh method most of the times. + * @category lGPublicMethods + * @example + * const plugin = lightGallery(); + * plugin.destroy(); + * + */ + LightGallery.prototype.destroy = function () { + var closeTimeout = this.closeGallery(true); + if (closeTimeout) { + setTimeout(this.destroyGallery.bind(this), closeTimeout); + } + else { + this.destroyGallery(); + } + return closeTimeout; + }; + return LightGallery; +}()); + +function lightGallery(el, options) { + return new LightGallery(el, options); +} + +export default lightGallery; +//# sourceMappingURL=lightgallery.es5.js.map diff --git a/assets/lightGallery/lightgallery.es5.js.map b/assets/lightGallery/lightgallery.es5.js.map new file mode 100644 index 0000000..49fb518 --- /dev/null +++ b/assets/lightGallery/lightgallery.es5.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lightgallery.es5.js","sources":["../src/lg-events.ts","../src/lg-settings.ts","../src/lgQuery.ts","../src/lg-utils.ts","../src/lightgallery.ts","../src/index.ts"],"sourcesContent":["import { LightGallery } from './lightgallery';\nimport { VideoSource } from './plugins/video/types';\n\n/**\n * List of lightGallery events\n * All events should be documented here\n * Below interfaces are used to build the website documentations\n * */\nexport const lGEvents: {\n [key: string]: string;\n} = {\n afterAppendSlide: 'lgAfterAppendSlide',\n init: 'lgInit',\n hasVideo: 'lgHasVideo',\n containerResize: 'lgContainerResize',\n updateSlides: 'lgUpdateSlides',\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\n beforeOpen: 'lgBeforeOpen',\n afterOpen: 'lgAfterOpen',\n slideItemLoad: 'lgSlideItemLoad',\n beforeSlide: 'lgBeforeSlide',\n afterSlide: 'lgAfterSlide',\n posterClick: 'lgPosterClick',\n dragStart: 'lgDragStart',\n dragMove: 'lgDragMove',\n dragEnd: 'lgDragEnd',\n beforeNextSlide: 'lgBeforeNextSlide',\n beforePrevSlide: 'lgBeforePrevSlide',\n beforeClose: 'lgBeforeClose',\n afterClose: 'lgAfterClose',\n rotateLeft: 'lgRotateLeft',\n rotateRight: 'lgRotateRight',\n flipHorizontal: 'lgFlipHorizontal',\n flipVertical: 'lgFlipVertical',\n autoplay: 'lgAutoplay',\n autoplayStart: 'lgAutoplayStart',\n autoplayStop: 'lgAutoplayStop',\n};\n\n// Follow the below format for the event documentation\n// @method is the method name when event is used with Angular/React components\n\n/**\n * Fired only once when lightGallery is initialized\n * @name lgInit\n * @method onInit\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action on lightGallery initialization.\n * // Init event returns the plugin instance that can be used to call any lightGalley public method\n * let pluginInstance = null;\n * lg.addEventListener('lgInit', (event) => {\n * pluginInstance = event.detail.instance;\n * });\n * lightGallery(lg);\n * @see Methods\n */\nexport interface InitDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired when the slide content has been inserted into it's slide container.\n * @name lgAfterAppendSlide\n * @method onAfterAppendSlide\n */\nexport interface AfterAppendSlideEventDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired immediately before opening the gallery\n * @name lgBeforeOpen\n * @method onBeforeOpen\n */\nexport interface BeforeOpenDetail {}\n\n/**\n * Fired immediately after opening the gallery\n * @name lgAfterOpen\n * @method onAfterOpen\n */\nexport interface AfterOpenDetail {}\n\n/**\n * Fired once the media inside the slide has been completely loaded .\n * @name lgSlideItemLoad\n * @method onSlideItemLoad\n */\nexport interface SlideItemLoadDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * For the first slide, lightGallery adds some delay for displaying the loaded slide item.\n * This delay is required for the transition effect when the slide item is displayed\n * Respect the delay when you use this event\n */\n delay: number;\n\n // Will be true for the first slide\n isFirstSlide: boolean;\n}\n\n/**\n * Fired immediately before each slide transition.\n * @name lgBeforeSlide\n * @method onBeforeSlide\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action before each slide transition\n * lg.addEventListener('lgBeforeSlide', (event) => {\n * const { index, prevIndex } = event.detail;\n * alert(index, prevIndex);\n * });\n * lightGallery(lg);\n */\nexport interface BeforeSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired immediately after each slide transition.\n * @name lgAfterSlide\n * @method onAfterSlide\n */\nexport interface AfterSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired when the video poster is clicked.\n * @name lgPosterClick\n * @method onPosterClick\n */\nexport interface PosterClickDetail {}\n\n/**\n * Fired when the drag event to move to different slide starts.\n * @name lgDragStart\n * @method onDragStart\n */\nexport interface DragStartDetail {}\n\n/**\n * Fired periodically during the drag operation.\n * @name lgDragMove\n * @method onDragMove\n */\nexport interface DragMoveDetail {}\n\n/**\n * Fired when the user has finished the drag operation\n * @name lgDragEnd\n * @method onDragEnd\n */\nexport interface DragEndDetail {}\n\n/**\n * Fired immediately before the start of the close process.\n * @name lgBeforeClose\n * @method onBeforeClose\n */\nexport interface BeforeCloseDetail {}\n\n/**\n * Fired immediately once lightGallery is closed.\n * @name lgAfterClose\n * @method onAfterClose\n */\nexport interface AfterCloseDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired immediately before each \"next\" slide transition\n * @name lgBeforeNextSlide\n * @method onBeforeNextSlide\n */\nexport interface BeforeNextSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired immediately before each \"prev\" slide transition\n * @name lgBeforePrevSlide\n * @method onBeforePrevSlide\n */\nexport interface BeforePrevSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired when the sub-html content (ex : title/ description) has been appended into the slide.\n * @name lgAfterAppendSubHtml\n * @method onAfterAppendSubHtml\n */\nexport interface AfterAppendSubHtmlDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the lightGallery container has been resized.\n * @name lgContainerResize\n * @method onContainerResize\n */\nexport interface ContainerResizeDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when lightGallery detects video slide\n * @name lgHasVideo\n * @method onHasVideo\n */\nexport interface HasVideoDetail {\n /**\n * Index of the slide,\n */\n index: number;\n /**\n * Video source\n */\n src: string;\n /**\n * HTML5 video source if available\n *

\n HTML5 video source = source: {\n src: string;\n type: string;\n }[];\n attributes: HTMLVideoElement;\n *

\n */\n html5Video: VideoSource;\n /**\n * True if video has poster\n */\n hasPoster: boolean;\n}\n\n/**\n * Fired when the image is rotated in anticlockwise direction\n * @name lgRotateLeft\n * @method onRotateLeft\n */\nexport interface RotateLeftDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is rotated in clockwise direction\n * @name lgRotateRight\n * @method onRotateRight\n */\nexport interface RotateRightDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped horizontally\n * @name lgFlipHorizontal\n * @method onFlipHorizontal\n */\nexport interface FlipHorizontalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped vertically\n * @name lgFlipVertical\n * @method onFlipVertical\n */\nexport interface FlipVerticalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n","import { GalleryItem } from './lg-utils';\nimport { LgQuery } from './lgQuery';\nimport { LightGallery } from './lightgallery';\nimport { AutoplaySettings } from './plugins/autoplay/lg-autoplay-settings';\nimport { CommentSettings } from './plugins/comment/lg-comment-settings';\nimport { FullscreenSettings } from './plugins/fullscreen/lg-fullscreen-settings';\nimport { HashSettings } from './plugins/hash/lg-hash-settings';\nimport { MediumZoomSettings } from './plugins/mediumZoom/lg-medium-zoom-settings';\nimport { PagerSettings } from './plugins/pager/lg-pager-settings';\nimport { RotateSettings } from './plugins/rotate/lg-rotate-settings';\nimport { ShareSettings } from './plugins/share/lg-share-settings';\nimport { ThumbnailsSettings } from './plugins/thumbnail/lg-thumbnail-settings';\nimport { VideoSettings } from './plugins/video/lg-video-settings';\nimport { ZoomSettings } from './plugins/zoom/lg-zoom-settings';\n\ntype LightGalleryCoreMobileSettings = Exclude<\n LightGalleryCoreSettings,\n 'mobileSettings'\n>;\n\n// @todo use separate mobile settings for plugins\nexport interface MobileSettings\n extends LightGalleryCoreMobileSettings,\n Partial,\n Partial,\n Partial,\n Partial,\n Partial,\n Partial,\n Partial,\n Partial,\n Partial,\n Partial {}\n\nexport interface LightGalleryCoreStrings {\n closeGallery: string;\n toggleMaximize: string;\n previousSlide: string;\n nextSlide: string;\n download: string;\n playVideo: string;\n mediaLoadingFailed: string;\n}\n\nexport type LightGalleryAllSettings = LightGalleryCoreSettings &\n ZoomSettings &\n ThumbnailsSettings &\n VideoSettings &\n AutoplaySettings &\n CommentSettings &\n FullscreenSettings &\n HashSettings &\n PagerSettings &\n RotateSettings &\n ShareSettings &\n MediumZoomSettings;\n\nexport type LightGallerySettings = Partial;\n\nexport interface LightGalleryCoreSettings {\n /**\n * Type of transition between images.\n */\n mode:\n | 'lg-slide'\n | 'lg-fade'\n | 'lg-zoom-in'\n | 'lg-zoom-in-big'\n | 'lg-zoom-out'\n | 'lg-zoom-out-big'\n | 'lg-zoom-out-in'\n | 'lg-zoom-in-out'\n | 'lg-soft-zoom'\n | 'lg-scale-up'\n | 'lg-slide-circular'\n | 'lg-slide-circular-vertical'\n | 'lg-slide-vertical'\n | 'lg-slide-vertical-growth'\n | 'lg-slide-skew-only'\n | 'lg-slide-skew-only-rev'\n | 'lg-slide-skew-only-y'\n | 'lg-slide-skew-only-y-rev'\n | 'lg-slide-skew'\n | 'lg-slide-skew-rev'\n | 'lg-slide-skew-cross'\n | 'lg-slide-skew-cross-rev'\n | 'lg-slide-skew-ver'\n | 'lg-slide-skew-ver-rev'\n | 'lg-slide-skew-ver-cross'\n | 'lg-slide-skew-ver-cross-rev'\n | 'lg-lollipop'\n | 'lg-lollipop-rev'\n | 'lg-rotate'\n | 'lg-rotate-rev'\n | 'lg-tube';\n\n /**\n * Slide animation CSS easing property\n */\n easing: string;\n\n /**\n *Transition duration (in ms).\n */\n speed: number;\n\n /**\n * If you are using lightGallery for commercial projects, you need to purchase a commercial license\n * to get the license key. For projects that are compatible with GPLv3 license,\n * please contact us for getting a license key at
contact@lightgalleryjs.com.\n * If you want to test lightGallery before purchasing a commercial license, you can\n * use `0000-0000-000-0000` as a temporary license key\n */\n\n licenseKey: string;\n\n /**\n * Height of the gallery.\n * example '100%' , '300px'\n */\n height: string;\n\n /**\n * Width of the gallery.\n * example '100%' , '300px'\n */\n width: string;\n\n /**\n * Add custom class for gallery container\n * This can be used to set different style for different galleries\n */\n addClass: string;\n\n /**\n * Start animation class for the gallery.\n * @description\n *
    \n *
  • startClass will be empty zoomFromOrigin is true.
  • \n *
  • This can be used to change the starting effect when the image is loaded
  • \n *
  • This is also applied when navigating to new slides
  • \n *
\n */\n startClass: string;\n\n /**\n * Enable zoom from origin effect.\n * @description You need to know the original image size upfront and provide it via data-lg-size attribute as data-lg-size=\"1920-1280\"\n *\n * If you don't know, the size of a few images in the list, you can skip the data-lg-size attribute for the particular slides,\n * lightGallery will show the default animation if data-lg-size is not available\n *\n * If you are using responsive images,\n * you can pass a comma separated list of sizes combined with a max-width (up to what size the particular image should be used)\n *\n * example -\n * data-lg-size=\"240-160-375, 400-267-480, 1600-1067\"\n * data-responsive=\"img-240.jpg 375, img-400.jpg 480\"\n * data-src=\"img-1600.jpg\" \n *\n * In the above example, upto 375 width img.240.jpg and lg-size 240-160 will be used.\n * Similarly, upto 480 pixel width size 400-267 and img-400.jpg will be used\n * And above 480, lg-size 1600-1067 and img-1600.jpg will be used\n *\n *
    \n *
  • At the moment, zoomFromOrigin options is supported only for image slides.
  • \n *
  • Will be false if dynamic option is enabled or galleryID found in the URL.
  • \n *
  • startClass will be empty if zoomFromOrigin is true to avoid css conflicts.
  • \n *
\n */\n zoomFromOrigin: boolean;\n\n /**\n * Zoom from image animation duration\n */\n startAnimationDuration: number;\n\n /**\n * Backdrop transition duration.\n * Note - Do not change the value of backdrop via css.\n */\n backdropDuration: number;\n\n /**\n * Configure where the gallery should be appended.\n * Useful to create inline galleries and more\n * It is an empty string in the default settings and later assigned to document.body to avoid accessing document for SSR\n */\n container: HTMLElement | (() => HTMLElement | null) | (string | null);\n\n /**\n * Delay for hiding gallery controls in ms.\n * Pass 0 if you don't want to hide the controls\n */\n hideBarsDelay: number;\n\n /**\n * Delay in hiding controls for the first time when gallery is opened\n */\n showBarsAfter: number;\n\n /**\n * Delay slide transitions.\n * @description This is useful if you want to do any action in the current slide before moving to next slide.\n *
\n * For example, fading out the captions before going to next slide.\n * .lg-slide-progress class name is added to the current slide immediately after calling the slide method.\n * But transition begins only after the delay\n *
\n */\n slideDelay: number;\n\n /**\n * Support legacy browsers\n * @description Currently this is used only for adding support to srcset attribute via picturefill library\n * If true lightGallery will show warning message to include picturefill library\n */\n supportLegacyBrowser: boolean;\n\n /**\n * If true, toolbar, captions and thumbnails will not overlap with media element\n * This will not effect thumbnails if animateThumb is false\n * Also, toggle thumbnails button is not displayed if allowMediaOverlap is false\n *
\n * Note - Changing the position of the media on every slide transition creates a flickering effect.\n * Therefore, the height of the caption is calculated dynamically, only once based on the first slide caption.\n *
\n *
\n * if you have dynamic captions for each media,\n * you can provide an appropriate height for the captions via allowMediaOverlap option\n *
\n */\n allowMediaOverlap: boolean;\n\n /**\n * Video max size.\n * @description This can be over-written by passing specific size via data-lg-size attribute\n * Recommended video resolution and & aspect ratios https://support.google.com/youtube/answer/6375112\n */\n videoMaxSize: string;\n\n /**\n * Automatically load poster image for YouTube videos\n */\n loadYouTubePoster: boolean;\n\n /**\n * Height of the caption for calculating allowMediaOverlap positions\n * Note - this is only used to find the position of media item if allowMediaOverlap is true.\n * Not for setting height of the captions\n * Set 0 if you want to calculate the height of captions dynamically\n */\n defaultCaptionHeight: number;\n\n /**\n * aria-labelledby attribute fot gallery\n */\n ariaLabelledby: string;\n\n /**\n * aria-describedby attribute for gallery\n */\n ariaDescribedby: string;\n\n /**\n * Hide scrollbar when gallery is opened\n * @version V2.5.0\n */\n hideScrollbar: boolean;\n\n /**\n * Reset to previous scrollPosition when lightGallery is closed\n * @description By default, lightGallery doesn't hide the scrollbar for a smooth opening transition.\n * If a user changes the scroll position, lightGallery resets it to the previous value\n * @version V2.5.0\n */\n resetScrollPosition: boolean;\n\n /**\n * If false user won't be able to close the gallery at all\n * This is useful for creating inline galleries.\n */\n closable: boolean;\n\n /**\n * allows vertical drag/swipe to close gallery\n * false if option closable is false\n */\n swipeToClose: boolean;\n /**\n * allows clicks on black area to close gallery.\n */\n closeOnTap: boolean;\n\n /**\n * If false, close button won't be displayed.\n * Useful for creating inline galleries.\n */\n showCloseIcon: boolean;\n\n /**\n * Show maximize icon.\n * Useful for creating inline galleries.\n */\n showMaximizeIcon: boolean;\n\n /**\n * If false, will disable the ability to loop back to the beginning of the gallery from the last slide.\n */\n loop: boolean;\n\n /**\n * Whether the LightGallery could be closed by pressing the \"Esc\" key.\n */\n escKey: boolean;\n\n /**\n * Enable keyboard navigation\n */\n keyPress: boolean;\n\n /**\n * Trap focus within the lightGallery\n * @version V2.5.0\n */\n trapFocus: boolean;\n\n /**\n * If false, prev/next buttons will not be displayed.\n */\n controls: boolean;\n\n /**\n * Enable slideEnd animation\n */\n slideEndAnimation: boolean;\n\n /**\n * If true, prev/next button will be hidden on first/last image.\n * @description Note - this option will be ignored if loop or slideEndAnimation is set to true\n */\n hideControlOnEnd: boolean;\n\n /**\n * ability to navigate to next/prev slides on mousewheel\n */\n mousewheel: boolean;\n\n /**\n * Option to get captions from alt or title tags.\n */\n getCaptionFromTitleOrAlt: boolean;\n\n /**\n * control where the sub-html should be appended.\n * If you choose '.lg-outer', you are responsible for placing the div at the right position.\n * '.lg-outer' is useful if you want show custom HTML outside the normal gallery\n */\n appendSubHtmlTo: '.lg-sub-html' | '.lg-item' | '.lg-outer';\n\n /**\n * Set to true if the selector in \"data-sub-html\" should use the current item as its origin.\n */\n subHtmlSelectorRelative: boolean;\n\n /**\n * number of preload slides\n * @description will exicute only after the current slide is fully loaded.\n * for example, if you click on 4th image and if preload = 1 then 3rd slide and 5th\n * slide will be loaded in the background after the 4th slide is fully loaded..\n * if preload is 2 then 2nd 3rd 5th 6th slides will be preloaded.\n */\n preload: number;\n\n /**\n * Control how many slide items should be kept in dom at a time\n * @description To improve performance by reducing number of gallery items in the dom,\n * lightGallery keeps only the lowest possible number of slides in the dom at a time.\n * This has a minimum value of 3\n */\n numberOfSlideItemsInDom: number;\n\n /**\n * Custom selector property instead of direct children.\n * @description Based on your markup structure, you can specify custom selectors to fetch media data for the gallery\n * Pass \"this\" to select same element\n * You can also pass HTMLCollection directly\n * Example - '.my-selector' | '#my-selector' | this | document.querySelectorAll('.my-selector')\n */\n selector: string | HTMLCollection[];\n\n /**\n * By default selector element relative to the current gallery.\n * Instead of that you can tell lightGallery to select element relative to another element.\n * Example - '.my-selector-container' | '#my-selector-container'\n * In the code this become selector = document.querySelector(this.s.selectWithin ).querySelectorAll(this.s.selector);\n */\n selectWithin: string;\n\n /**\n * Custom html for next control\n */\n nextHtml: string;\n\n /**\n * Custom html for prev control\n */\n prevHtml: string;\n\n /**\n * specify which slide should load initially\n */\n index: number;\n\n /**\n * Set width for iframe.\n */\n iframeWidth: string;\n\n /**\n * Set height for iframe.\n */\n iframeHeight: string;\n\n /**\n * Set max width for iframe.\n */\n iframeMaxWidth: string;\n\n /**\n * Set max height for iframe.\n */\n iframeMaxHeight: string;\n\n /**\n * Enable download button.\n * @description By default download url will be taken from data-src/href attribute but it supports only for modern browsers.\n * If you want you can provide another url for download via data-download-url.\n * pass false in data-download-url if you want to hide download button for the particular slide.\n */\n download: boolean;\n\n /**\n * Whether to show total number of images and index number of currently displayed image.\n */\n counter: boolean;\n\n /**\n * Where the counter should be appended\n */\n appendCounterTo: string;\n\n /**\n * By setting the swipeThreshold (in px) you can set how far the user must swipe for the next/prev image.\n */\n swipeThreshold: number;\n\n /**\n * Enables swipe support for touch devices\n */\n enableSwipe: boolean;\n\n /**\n * Enables desktop mouse drag support\n */\n enableDrag: boolean;\n\n /**\n * LightGallery can be instantiated and launched programmatically by setting this option to true and populating dynamicEl option (see below) with the definitions of images.\n */\n dynamic: boolean;\n\n /**\n * An array of objects (src, iframe, subHtml, thumb, poster, responsive, srcset sizes) representing gallery elements.\n */\n dynamicEl: GalleryItem[];\n\n /**\n * Fetch custom properties from the selector\n * @description this is useful for plugin development\n * By default lightGallery fetches and store all the props selectors to\n * reduce frequent dom interaction for fetching props every time.\n *\n * If you need any addition data to be fetched and stored in the galleryItems variable,\n * you can do this just by passing the prop names via extraProps\n * @example\n * HTML:\n *
\n * \n * \n *
\n * JS:\n * lightGallery(document.getElementById('lightGallery'), {\n * extraProps: ['customProp']\n * })\n * // Note - If you are using dynamic mode, you can pass any custom prop in the galleryItem\n * lightGallery(document.getElementById('lightGallery'), {\n * dynamic: true,\n * dynamicEl: [{\n * src: 'img/img1.jpg',\n * customProp:'abc',\n * }]\n * })\n *\n */\n extraProps: string[];\n\n /**\n * Option to fetch different thumbnail image other than first image\n * @description If you want to use external image for thumbnail,\n * add the path of that image inside \"data-\" attribute\n * and set value of this option to the name of your custom attribute.\n *\n * @example\n *
\n * \n *
\n *\n * lightGallery(document.getElementById('lightGallery'), {\n * exThumbImage: 'data-external-thumb-image'\n * })\n */\n exThumbImage: string;\n\n /**\n * Function to detect mobile devices\n */\n isMobile?: () => boolean;\n\n /**\n * Separate settings for mobile devices\n * @description Note - this is applied only at the time of loading\n * by default controls and close buttons are disabled on mobile devices.\n * use this options if you want to enable them or change any other settings for mobile devices\n * Note - mobileSettings does not merge default values, You need to provide all mobileSettings including default values\n */\n mobileSettings: Partial;\n\n /**\n * Customize string.\n * @description This can be useful if you want to localize the lightGallery strings to other languages.\n * Use your own service to translate the strings and pass it via settings.strings\n * You can find dedicated strings option for all lightGallery modules in their respective documentation.\n * Note - You need to provide values for all the strings. For example, even if you just want to change the closeGallery string, you need to provide all the other strings as well.\n */\n strings: LightGalleryCoreStrings;\n\n plugins: (new (instance: LightGallery, $LG: LgQuery) => any)[];\n}\n\nexport const lightGalleryCoreSettings: LightGalleryCoreSettings = {\n mode: 'lg-slide',\n easing: 'ease',\n speed: 400,\n licenseKey: '0000-0000-000-0000',\n height: '100%',\n width: '100%',\n addClass: '',\n startClass: 'lg-start-zoom',\n backdropDuration: 300,\n container: '',\n startAnimationDuration: 400,\n zoomFromOrigin: true,\n hideBarsDelay: 0,\n showBarsAfter: 10000,\n slideDelay: 0,\n supportLegacyBrowser: true,\n allowMediaOverlap: false,\n videoMaxSize: '1280-720',\n loadYouTubePoster: true,\n defaultCaptionHeight: 0,\n ariaLabelledby: '',\n ariaDescribedby: '',\n resetScrollPosition: true,\n hideScrollbar: false,\n closable: true,\n swipeToClose: true,\n closeOnTap: true,\n showCloseIcon: true,\n showMaximizeIcon: false,\n loop: true,\n escKey: true,\n keyPress: true,\n trapFocus: true,\n controls: true,\n slideEndAnimation: true,\n hideControlOnEnd: false,\n mousewheel: false,\n getCaptionFromTitleOrAlt: true,\n appendSubHtmlTo: '.lg-sub-html',\n subHtmlSelectorRelative: false,\n preload: 2,\n numberOfSlideItemsInDom: 10,\n selector: '',\n selectWithin: '',\n nextHtml: '',\n prevHtml: '',\n index: 0,\n iframeWidth: '100%',\n iframeHeight: '100%',\n iframeMaxWidth: '100%',\n iframeMaxHeight: '100%',\n download: true,\n counter: true,\n appendCounterTo: '.lg-toolbar',\n swipeThreshold: 50,\n enableSwipe: true,\n enableDrag: true,\n dynamic: false,\n dynamicEl: [],\n extraProps: [],\n exThumbImage: '',\n isMobile: undefined,\n mobileSettings: {\n controls: false,\n showCloseIcon: false,\n download: false,\n } as MobileSettings,\n plugins: [],\n strings: {\n closeGallery: 'Close gallery',\n toggleMaximize: 'Toggle maximize',\n previousSlide: 'Previous slide',\n nextSlide: 'Next slide',\n download: 'Download',\n playVideo: 'Play video',\n mediaLoadingFailed: 'Oops... Failed to load content...',\n } as LightGalleryCoreStrings,\n};\n","interface Offset {\n left: number;\n top: number;\n}\n\nfunction initLgPolyfills() {\n (function () {\n if (typeof window.CustomEvent === 'function') return false;\n\n function CustomEvent(event: string, params: any) {\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: null,\n };\n const evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(\n event,\n params.bubbles,\n params.cancelable,\n params.detail,\n );\n return evt;\n }\n\n window.CustomEvent = CustomEvent as any;\n })();\n (function () {\n if (!Element.prototype.matches) {\n Element.prototype.matches =\n (Element.prototype as any).msMatchesSelector ||\n Element.prototype.webkitMatchesSelector;\n }\n })();\n}\n\nexport type LgQuery = (selector: any) => lgQuery;\nexport class lgQuery {\n static eventListeners: { [key: string]: any[] } = {};\n static generateUUID(): string {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(\n /[xy]/g,\n function (c) {\n const r = (Math.random() * 16) | 0,\n v = c == 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n },\n );\n }\n\n private selector: any;\n private firstElement: any;\n private cssVenderPrefixes: string[] = [\n 'TransitionDuration',\n 'TransitionTimingFunction',\n 'Transform',\n 'Transition',\n ];\n constructor(selector: string | Element) {\n this.selector = this._getSelector(selector);\n this.firstElement = this._getFirstEl();\n return this;\n }\n\n private _getSelector(\n selector: string | Element,\n context: Element | Document = document,\n ): Element | null | NodeListOf {\n if (typeof selector !== 'string') {\n return selector;\n }\n context = context || document;\n const fl = selector.substring(0, 1);\n if (fl === '#') {\n return context.querySelector(selector);\n } else {\n return context.querySelectorAll(selector);\n }\n }\n\n private _each(\n func: (\n elements: Element | NodeListOf | null,\n index: number,\n ) => void,\n ): this {\n if (!this.selector) {\n return this;\n }\n if (this.selector.length !== undefined) {\n [].forEach.call(this.selector, func);\n } else {\n func(this.selector, 0);\n }\n return this;\n }\n\n private _setCssVendorPrefix(\n el: any,\n cssProperty: string,\n value?: string | number,\n ): void {\n // prettier-ignore\n const property = cssProperty.replace(/-([a-z])/gi, function (\n s,\n group1,\n ) {\n return group1.toUpperCase();\n });\n if (this.cssVenderPrefixes.indexOf(property) !== -1) {\n el.style[\n property.charAt(0).toLowerCase() + property.slice(1)\n ] = value;\n el.style['webkit' + property] = value;\n el.style['moz' + property] = value;\n el.style['ms' + property] = value;\n el.style['o' + property] = value;\n } else {\n el.style[property] = value;\n }\n }\n\n private _getFirstEl() {\n if (this.selector && this.selector.length !== undefined) {\n return this.selector[0];\n } else {\n return this.selector;\n }\n }\n\n private isEventMatched(event: string, eventName: string): boolean {\n const eventNamespace = eventName.split('.');\n return event\n .split('.')\n .filter((e) => e)\n .every((e) => {\n return eventNamespace.indexOf(e) !== -1;\n });\n }\n\n attr(attr: string): string;\n attr(attr: string, value: string | number | boolean): this;\n attr(attr: string, value?: string | number | boolean): string | this {\n if (value === undefined) {\n if (!this.firstElement) {\n return '';\n }\n return this.firstElement.getAttribute(attr);\n }\n this._each((el: any) => {\n el.setAttribute(attr, value);\n });\n return this;\n }\n\n find(selector: any): lgQuery {\n return $LG(this._getSelector(selector, this.selector));\n }\n\n first(): lgQuery {\n if (this.selector && this.selector.length !== undefined) {\n return $LG(this.selector[0]);\n } else {\n return $LG(this.selector);\n }\n }\n\n eq(index: number): lgQuery {\n return $LG(this.selector[index]);\n }\n\n parent(): lgQuery {\n return $LG(this.selector.parentElement);\n }\n\n get(): HTMLElement {\n return this._getFirstEl();\n }\n\n removeAttr(attributes: string): this {\n const attrs = attributes.split(' ');\n this._each((el: any) => {\n attrs.forEach((attr: string) => el.removeAttribute(attr));\n });\n return this;\n }\n\n wrap(className: string): this {\n if (!this.firstElement) {\n return this;\n }\n const wrapper = document.createElement('div');\n wrapper.className = className;\n this.firstElement.parentNode.insertBefore(wrapper, this.firstElement);\n this.firstElement.parentNode.removeChild(this.firstElement);\n wrapper.appendChild(this.firstElement);\n return this;\n }\n\n addClass(classNames = ''): this {\n this._each((el: any) => {\n // IE doesn't support multiple arguments\n classNames.split(' ').forEach((className) => {\n if (className) {\n el.classList.add(className);\n }\n });\n });\n return this;\n }\n\n removeClass(classNames: string): this {\n this._each((el: any) => {\n // IE doesn't support multiple arguments\n classNames.split(' ').forEach((className) => {\n if (className) {\n el.classList.remove(className);\n }\n });\n });\n return this;\n }\n\n hasClass(className: string): boolean {\n if (!this.firstElement) {\n return false;\n }\n return this.firstElement.classList.contains(className);\n }\n hasAttribute(attribute: string): boolean {\n if (!this.firstElement) {\n return false;\n }\n return this.firstElement.hasAttribute(attribute);\n }\n toggleClass(className: string): this {\n if (!this.firstElement) {\n return this;\n }\n if (this.hasClass(className)) {\n this.removeClass(className);\n } else {\n this.addClass(className);\n }\n return this;\n }\n\n css(property: string, value?: string | number): this {\n this._each((el: any) => {\n this._setCssVendorPrefix(el, property, value);\n });\n return this;\n }\n // Need to pass separate namespaces for separate elements\n on(events: string, listener: (e: any) => void): this {\n if (!this.selector) {\n return this;\n }\n events.split(' ').forEach((event: string) => {\n if (!Array.isArray(lgQuery.eventListeners[event])) {\n lgQuery.eventListeners[event] = [];\n }\n lgQuery.eventListeners[event].push(listener);\n this.selector.addEventListener(event.split('.')[0], listener);\n });\n\n return this;\n }\n // @todo - test this\n once(event: string, listener: (e: any) => void): this {\n this.on(event, () => {\n this.off(event);\n listener(event);\n });\n return this;\n }\n off(event: string): this {\n if (!this.selector) {\n return this;\n }\n Object.keys(lgQuery.eventListeners).forEach((eventName) => {\n if (this.isEventMatched(event, eventName)) {\n lgQuery.eventListeners[eventName].forEach((listener) => {\n this.selector.removeEventListener(\n eventName.split('.')[0],\n listener,\n );\n });\n lgQuery.eventListeners[eventName] = [];\n }\n });\n\n return this;\n }\n trigger(event: string, detail?: Detail): this {\n if (!this.firstElement) {\n return this;\n }\n\n const customEvent = new CustomEvent(event.split('.')[0], {\n detail: detail || null,\n });\n this.firstElement.dispatchEvent(customEvent);\n return this;\n }\n\n // Does not support IE\n load(url: string): this {\n fetch(url)\n .then((res) => res.text())\n .then((html) => {\n this.selector.innerHTML = html;\n });\n return this;\n }\n\n html(): string;\n html(html: string): this;\n html(html?: string): string | this {\n if (html === undefined) {\n if (!this.firstElement) {\n return '';\n }\n return this.firstElement.innerHTML;\n }\n this._each((el: any) => {\n el.innerHTML = html;\n });\n return this;\n }\n append(html: string | HTMLElement): this {\n this._each((el: any) => {\n if (typeof html === 'string') {\n el.insertAdjacentHTML('beforeend', html);\n } else {\n el.appendChild(html);\n }\n });\n return this;\n }\n prepend(html: string | HTMLElement): this {\n this._each((el: any) => {\n if (typeof html === 'string') {\n el.insertAdjacentHTML('afterbegin', html);\n } else if (html instanceof HTMLElement) {\n el.insertBefore(html.cloneNode(true), el.firstChild);\n }\n });\n return this;\n }\n remove(): this {\n this._each((el: any) => {\n el.parentNode.removeChild(el);\n });\n return this;\n }\n empty(): this {\n this._each((el: any) => {\n el.innerHTML = '';\n });\n return this;\n }\n // Supports only window\n scrollTop(): number;\n scrollTop(scrollTop: number): this;\n scrollTop(scrollTop?: number): number | this {\n if (scrollTop !== undefined) {\n document.body.scrollTop = scrollTop;\n document.documentElement.scrollTop = scrollTop;\n return this;\n } else {\n return (\n window.pageYOffset ||\n document.documentElement.scrollTop ||\n document.body.scrollTop ||\n 0\n );\n }\n }\n // Supports only window\n scrollLeft(): number;\n scrollLeft(scrollLeft?: number): this;\n scrollLeft(scrollLeft?: number): number | this {\n if (scrollLeft !== undefined) {\n document.body.scrollLeft = scrollLeft;\n document.documentElement.scrollLeft = scrollLeft;\n return this;\n } else {\n return (\n window.pageXOffset ||\n document.documentElement.scrollLeft ||\n document.body.scrollLeft ||\n 0\n );\n }\n }\n offset(): Offset {\n if (!this.firstElement) {\n return {\n left: 0,\n top: 0,\n };\n }\n const rect = this.firstElement.getBoundingClientRect();\n const bodyMarginLeft = $LG('body').style().marginLeft;\n\n // Minus body margin - https://stackoverflow.com/questions/30711548/is-getboundingclientrect-left-returning-a-wrong-value\n return {\n left: rect.left - parseFloat(bodyMarginLeft) + this.scrollLeft(),\n top: rect.top + this.scrollTop(),\n };\n }\n style(): CSSStyleDeclaration {\n if (!this.firstElement) {\n return {} as CSSStyleDeclaration;\n }\n return (\n this.firstElement.currentStyle ||\n window.getComputedStyle(this.firstElement)\n );\n }\n // Width without padding and border even if box-sizing is used.\n width(): number {\n const style = this.style();\n return (\n this.firstElement.clientWidth -\n parseFloat(style.paddingLeft) -\n parseFloat(style.paddingRight)\n );\n }\n // Height without padding and border even if box-sizing is used.\n height(): number {\n const style = this.style();\n return (\n this.firstElement.clientHeight -\n parseFloat(style.paddingTop) -\n parseFloat(style.paddingBottom)\n );\n }\n}\n\nexport function $LG(selector: any): lgQuery {\n initLgPolyfills();\n return new lgQuery(selector);\n}\n","import { $LG, lgQuery } from './lgQuery';\nimport { VideoSource } from './plugins/video/types';\nimport { VideoInfo } from './types';\n\nexport interface ImageSize {\n width: number;\n height: number;\n}\n\nexport interface ImageSources {\n media?: string;\n srcset: string;\n sizes?: string;\n type?: string;\n}\n\nexport interface GalleryItem {\n /**\n * url of the media\n * @data-attr data-src\n */\n src?: string;\n\n /**\n * Source attributes for the picture element\n * @data-attr data-sources\n */\n sources?: ImageSources[];\n\n /**\n * Thumbnail url\n * @description By default lightGallery uses the image inside gallery selector as thumbnail.\n * But, If you want to use external image for thumbnail,\n * pass the thumbnail url via any data attribute and\n * pass the attribute name via exThumbImage option\n * @example\n *
\n * \n *
\n *\n * lightGallery(document.getElementById('lightGallery'), {\n * exThumbImage: 'data-external-thumb-image'\n * })\n * @data-attr data-*\n */\n thumb?: string;\n\n /**\n * alt attribute for the image\n * @data-attr alt\n */\n alt?: string;\n\n /**\n * Title attribute for the video\n * @data-attr title\n */\n title?: string;\n\n /**\n * Title for iframe\n * @data-attr data-iframe-title\n */\n iframeTitle?: string;\n\n /**\n * Caption for the slide\n * @description You can either pass the HTML markup or the ID or class name of the element which contains the captions\n * @data-attr data-sub-html\n */\n subHtml?: string;\n\n /**\n * url of the file which contain the sub html.\n * @description Note - Does not support Internet Explorer browser\n * @data-attr data-sub-html-url\n */\n subHtmlUrl?: string;\n\n /**\n * Video source\n * @data-attr data-video\n */\n video?: VideoSource;\n\n /**\n * Poster url\n * @data-attr data-poster\n */\n poster?: string;\n\n /**\n * Custom slide name to use in the url when hash plugin is enabled\n * @data-attr data-slide-name\n */\n slideName?: string;\n\n /**\n * List of images and viewport's max width separated by comma.\n * @description Ex?: img/1-375.jpg 375, img/1-480.jpg 480, img/1-757.jpg 757.\n * @data-attr data-responsive\n */\n responsive?: string;\n\n /**\n * srcset attribute values for the main image\n * @data-attr data-srcset\n */\n srcset?: string;\n\n /**\n * srcset sizes attribute for the main image\n * @data-attr data-sizes\n */\n sizes?: string;\n\n /**\n * Set true is you want to open your url in an iframe\n * @data-attr data-iframe\n */\n iframe?: boolean;\n\n /**\n * Download url for your image/video.\n * @description Pass false if you want to disable the download button.\n * @data-attr data-download-url\n */\n downloadUrl?: string | boolean;\n\n /**\n * Name of the file after it is downloaded.\n * @description The HTML value of the download attribute.\n * There are no restrictions on allowed values, and the browser will automatically\n * detect the correct file extension and add it to the file (.img, .pdf, .txt, .html, etc.).\n * More info\n * @data-attr data-download\n */\n download?: string | boolean;\n\n /**\n * Actual size of the image in px.\n * @description This is used in zoom plugin to see the actual size of the image when double taped on the image.\n * @data-attr data-width\n */\n width?: string;\n\n /**\n * Facebook share URL.\n * @description Specify only if you want to provide separate share URL for the specific slide. By default, current browser URL is taken.\n * @data-attr data-facebook-share-url\n */\n facebookShareUrl?: string;\n\n /**\n * Tweet text\n * @data-attr data-tweet-text\n */\n tweetText?: string;\n\n /**\n * Twitter share URL.\n * @description Specify only if you want to provide separate share URL for the specific slide. By default, current browser URL will be taken.\n * @data-attr data-twitter-share-url\n */\n twitterShareUrl?: string;\n\n /**\n * Pinterest share URL.\n * @description Specify only if you want to provide separate share URL for the specific slide. By default, current browser URL will be taken.\n * Note?: Pinterest requires absolute URL\n * @data-attr data-pinterest-share-url\n */\n pinterestShareUrl?: string;\n\n /**\n * Description for Pinterest post.\n * @data-attr data-pinterest-text\n */\n pinterestText?: string;\n\n /**\n * Facebook comments body html\n * @description Please refer facebook official documentation for generating the HTML markup\n * @example\n * \n * \n * @data-attr data-fb-html\n */\n fbHtml?: string;\n\n /**\n * Disqus page identifier\n * @description Please refer official disqus documentation for more info\n * @data-attr data-disqus-identifier\n */\n disqusIdentifier?: string;\n\n /**\n * Disqus page url\n * @description Please refer official disqus documentation for more info\n * @data-attr data-disqus-url\n */\n disqusUrl?: string;\n\n __slideVideoInfo?: VideoInfo;\n [key: string]: any;\n}\n\nconst defaultDynamicOptions = [\n 'src',\n 'sources',\n 'subHtml',\n 'subHtmlUrl',\n 'html',\n 'video',\n 'poster',\n 'slideName',\n 'responsive',\n 'srcset',\n 'sizes',\n 'iframe',\n 'downloadUrl',\n 'download',\n 'width',\n 'facebookShareUrl',\n 'tweetText',\n 'iframeTitle',\n 'twitterShareUrl',\n 'pinterestShareUrl',\n 'pinterestText',\n 'fbHtml',\n 'disqusIdentifier',\n 'disqusUrl',\n];\n\n// Convert html data-attribute to camalcase\nexport function convertToData(attr: string): string {\n // FInd a way for lgsize\n if (attr === 'href') {\n return 'src';\n }\n attr = attr.replace('data-', '');\n attr = attr.charAt(0).toLowerCase() + attr.slice(1);\n attr = attr.replace(/-([a-z])/g, (g) => g[1].toUpperCase());\n\n return attr;\n}\n\nconst utils = {\n /**\n * Fetches HTML content from a given URL and inserts it into a specified element.\n *\n * @param url - The URL to fetch the HTML content from.\n * @param element - The DOM element (jQuery object) to insert the HTML content into.\n * @param insertMethod - The method to insert the HTML ('append' or 'replace').\n */\n fetchCaptionFromUrl(\n url: string,\n element: lgQuery,\n insertMethod: 'append' | 'replace',\n ): void {\n // Fetch content from the URL\n fetch(url)\n .then((response) => response.text())\n .then((htmlContent) => {\n if (insertMethod === 'append') {\n const contentDiv = `
${htmlContent}
`;\n element.append(contentDiv);\n } else {\n element.html(htmlContent);\n }\n });\n },\n /**\n * get possible width and height from the lgSize attribute. Used for ZoomFromOrigin option\n */\n getSize(\n el: HTMLElement,\n container: lgQuery,\n spacing = 0,\n defaultLgSize?: string,\n ): ImageSize | undefined {\n const LGel = $LG(el);\n let lgSize = LGel.attr('data-lg-size') || defaultLgSize;\n\n if (!lgSize) {\n return;\n }\n\n const isResponsiveSizes = lgSize.split(',');\n // if at-least two viewport sizes are available\n if (isResponsiveSizes[1]) {\n const wWidth = window.innerWidth;\n for (let i = 0; i < isResponsiveSizes.length; i++) {\n const size = isResponsiveSizes[i];\n const responsiveWidth = parseInt(size.split('-')[2], 10);\n if (responsiveWidth > wWidth) {\n lgSize = size;\n break;\n }\n\n // take last item as last option\n if (i === isResponsiveSizes.length - 1) {\n lgSize = size;\n }\n }\n }\n\n const size = lgSize.split('-');\n\n const width = parseInt(size[0], 10);\n const height = parseInt(size[1], 10);\n\n const cWidth = container.width();\n const cHeight = container.height() - spacing;\n\n const maxWidth = Math.min(cWidth, width);\n const maxHeight = Math.min(cHeight, height);\n\n const ratio = Math.min(maxWidth / width, maxHeight / height);\n\n return { width: width * ratio, height: height * ratio };\n },\n\n /**\n * @desc Get transform value based on the imageSize. Used for ZoomFromOrigin option\n * @param {jQuery Element}\n * @returns {String} Transform CSS string\n */\n getTransform(\n el: HTMLElement,\n container: lgQuery,\n top: number,\n bottom: number,\n imageSize?: ImageSize,\n ): string | undefined {\n if (!imageSize) {\n return;\n }\n const LGel = $LG(el).find('img').first();\n if (!LGel.get()) {\n return;\n }\n\n const containerRect = container.get().getBoundingClientRect();\n\n const wWidth = containerRect.width;\n\n // using innerWidth to include mobile safari bottom bar\n const wHeight = container.height() - (top + bottom);\n\n const elWidth = LGel.width();\n const elHeight = LGel.height();\n\n const elStyle = LGel.style();\n let x =\n (wWidth - elWidth) / 2 -\n LGel.offset().left +\n (parseFloat(elStyle.paddingLeft) || 0) +\n (parseFloat(elStyle.borderLeft) || 0) +\n $LG(window).scrollLeft() +\n containerRect.left;\n let y =\n (wHeight - elHeight) / 2 -\n LGel.offset().top +\n (parseFloat(elStyle.paddingTop) || 0) +\n (parseFloat(elStyle.borderTop) || 0) +\n $LG(window).scrollTop() +\n top;\n\n const scX = elWidth / imageSize.width;\n const scY = elHeight / imageSize.height;\n\n const transform =\n 'translate3d(' +\n (x *= -1) +\n 'px, ' +\n (y *= -1) +\n 'px, 0) scale3d(' +\n scX +\n ', ' +\n scY +\n ', 1)';\n return transform;\n },\n\n getIframeMarkup(\n iframeWidth: string,\n iframeHeight: string,\n iframeMaxWidth: string,\n iframeMaxHeight: string,\n src?: string,\n iframeTitle?: string,\n ): string {\n const title = iframeTitle ? 'title=\"' + iframeTitle + '\"' : '';\n return `
\n \n
`;\n },\n\n getImgMarkup(\n index: number,\n src: string,\n altAttr: string,\n srcset?: string,\n sizes?: string,\n sources?: ImageSources[],\n ): string {\n const srcsetAttr = srcset ? `srcset=\"${srcset}\"` : '';\n const sizesAttr = sizes ? `sizes=\"${sizes}\"` : '';\n const imgMarkup = ``;\n let sourceTag = '';\n if (sources) {\n const sourceObj =\n typeof sources === 'string' ? JSON.parse(sources) : sources;\n\n sourceTag = sourceObj.map((source: any) => {\n let attrs = '';\n Object.keys(source).forEach((key) => {\n // Do not remove the first space as it is required to separate the attributes\n attrs += ` ${key}=\"${source[key]}\"`;\n });\n return ``;\n });\n }\n return `${sourceTag}${imgMarkup}`;\n },\n\n // Get src from responsive src\n getResponsiveSrc(srcItms: string[]): string {\n const rsWidth = [];\n const rsSrc = [];\n let src = '';\n for (let i = 0; i < srcItms.length; i++) {\n const _src = srcItms[i].split(' ');\n\n // Manage empty space\n if (_src[0] === '') {\n _src.splice(0, 1);\n }\n\n rsSrc.push(_src[0]);\n rsWidth.push(_src[1]);\n }\n\n const wWidth = window.innerWidth;\n for (let j = 0; j < rsWidth.length; j++) {\n if (parseInt(rsWidth[j], 10) > wWidth) {\n src = rsSrc[j];\n break;\n }\n }\n return src;\n },\n\n isImageLoaded(img: HTMLImageElement): boolean {\n if (!img) return false;\n // During the onload event, IE correctly identifies any images that\n // weren’t downloaded as not complete. Others should too. Gecko-based\n // browsers act like NS4 in that they report this incorrectly.\n if (!img.complete) {\n return false;\n }\n\n // However, they do have two very useful properties: naturalWidth and\n // naturalHeight. These give the true size of the image. If it failed\n // to load, either of these should be zero.\n if (img.naturalWidth === 0) {\n return false;\n }\n\n // No other way of checking: assume it’s ok.\n return true;\n },\n\n getVideoPosterMarkup(\n _poster: string,\n dummyImg: string | HTMLElement,\n videoContStyle: string,\n playVideoString: string,\n _isVideo?: VideoInfo,\n ): string {\n let videoClass = '';\n if (_isVideo && _isVideo.youtube) {\n videoClass = 'lg-has-youtube';\n } else if (_isVideo && _isVideo.vimeo) {\n videoClass = 'lg-has-vimeo';\n } else {\n videoClass = 'lg-has-html5';\n }\n let _dummy = dummyImg;\n if (typeof dummyImg !== 'string') {\n _dummy = dummyImg.outerHTML;\n }\n return `
\n
\n \n ${playVideoString}\n \n \n \n \n \n \n \n
\n ${_dummy}\n \n
`;\n },\n\n getFocusableElements(container: HTMLElement): NodeListOf {\n const elements = container.querySelectorAll(\n 'a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type=\"text\"]:not([disabled]), input[type=\"radio\"]:not([disabled]), input[type=\"checkbox\"]:not([disabled]), select:not([disabled])',\n );\n const visibleElements = [].filter.call(elements, (element) => {\n const style = window.getComputedStyle(element);\n return style.display !== 'none' && style.visibility !== 'hidden';\n });\n return (visibleElements as unknown) as NodeListOf;\n },\n\n /**\n * @desc Create dynamic elements array from gallery items when dynamic option is false\n * It helps to avoid frequent DOM interaction\n * and avoid multiple checks for dynamic elments\n *\n * @returns {Array} dynamicEl\n */\n getDynamicOptions(\n items: any,\n extraProps: string[],\n getCaptionFromTitleOrAlt: boolean,\n exThumbImage: string,\n ): GalleryItem[] {\n const dynamicElements: GalleryItem[] = [];\n const availableDynamicOptions = [\n ...defaultDynamicOptions,\n ...extraProps,\n ];\n [].forEach.call(items, (item: HTMLElement) => {\n const dynamicEl: GalleryItem = {} as GalleryItem;\n for (let i = 0; i < item.attributes.length; i++) {\n const attr = item.attributes[i];\n if (attr.specified) {\n const dynamicAttr = convertToData(attr.name);\n let label = '';\n if (availableDynamicOptions.indexOf(dynamicAttr) > -1) {\n label = dynamicAttr;\n }\n if (label) {\n (dynamicEl as any)[label] = attr.value;\n }\n }\n }\n const currentItem = $LG(item);\n const alt = currentItem.find('img').first().attr('alt');\n const title = currentItem.attr('title');\n\n const thumb = exThumbImage\n ? currentItem.attr(exThumbImage)\n : currentItem.find('img').first().attr('src');\n dynamicEl.thumb = thumb;\n\n if (getCaptionFromTitleOrAlt && !dynamicEl.subHtml) {\n dynamicEl.subHtml = title || alt || '';\n }\n dynamicEl.alt = alt || title || '';\n dynamicElements.push(dynamicEl);\n });\n return dynamicElements;\n },\n isMobile(): boolean {\n return /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);\n },\n /**\n * @desc Check the given src is video\n * @param {String} src\n * @return {Object} video type\n * Ex:{ youtube : [\"//www.youtube.com/watch?v=c0asJgSyxcY\", \"c0asJgSyxcY\"] }\n *\n * @todo - this information can be moved to dynamicEl to avoid frequent calls\n */\n\n isVideo(\n src: string,\n isHTML5VIdeo: boolean,\n index: number,\n ): VideoInfo | undefined {\n if (!src) {\n if (isHTML5VIdeo) {\n return {\n html5: true,\n };\n } else {\n console.error(\n 'lightGallery :- data-src is not provided on slide item ' +\n (index + 1) +\n '. Please make sure the selector property is properly configured. More info - https://www.lightgalleryjs.com/demos/html-markup/',\n );\n return;\n }\n }\n\n const youtube = src.match(\n /\\/\\/(?:www\\.)?youtu(?:\\.be|be\\.com|be-nocookie\\.com)\\/(?:watch\\?v=|embed\\/)?([a-z0-9\\-\\_\\%]+)([\\&|?][\\S]*)*/i,\n );\n const vimeo = src.match(\n /\\/\\/(?:www\\.)?(?:player\\.)?vimeo.com\\/(?:video\\/)?([0-9a-z\\-_]+)(.*)?/i,\n );\n const wistia = src.match(\n /https?:\\/\\/(.+)?(wistia\\.com|wi\\.st)\\/(medias|embed)\\/([0-9a-z\\-_]+)(.*)/,\n );\n\n if (youtube) {\n return {\n youtube,\n };\n } else if (vimeo) {\n return {\n vimeo,\n };\n } else if (wistia) {\n return {\n wistia,\n };\n }\n },\n};\n\nexport default utils;\n","import {\n AfterAppendSlideEventDetail,\n AfterAppendSubHtmlDetail,\n BeforeSlideDetail,\n lGEvents,\n SlideItemLoadDetail,\n} from './lg-events';\nimport {\n LightGalleryAllSettings,\n lightGalleryCoreSettings,\n LightGallerySettings,\n} from './lg-settings';\nimport utils, { GalleryItem, ImageSize } from './lg-utils';\nimport { $LG, lgQuery } from './lgQuery';\nimport {\n Coords,\n MediaContainerPosition,\n SlideDirection,\n VideoInfo,\n} from './types';\n\ndeclare let picturefill: any;\n\n// @ref - https://stackoverflow.com/questions/3971841/how-to-resize-images-proportionally-keeping-the-aspect-ratio\n// @ref - https://2ality.com/2017/04/setting-up-multi-platform-packages.html\n\n// Unique id for each gallery\nlet lgId = 0;\n\nexport class LightGallery {\n public settings!: LightGalleryAllSettings;\n public galleryItems!: GalleryItem[];\n\n // Current gallery item\n public lgId!: number;\n\n public el!: HTMLElement;\n public LGel!: lgQuery;\n public lgOpened = false;\n\n public index = 0;\n\n // lightGallery modules\n public plugins: any[] = [];\n\n // false when lightGallery load first slide content;\n public lGalleryOn = false;\n\n // True when a slide animation is in progress\n public lgBusy = false;\n\n // Type of touch action - {swipe, zoomSwipe, pinch}\n public touchAction?: 'swipe' | 'zoomSwipe' | 'pinch';\n\n // Direction of swipe/drag - {horizontal, vertical}\n public swipeDirection?: 'horizontal' | 'vertical';\n\n // Timeout function for hiding controls;\n public hideBarTimeout: any;\n\n public currentItemsInDom: string[] = [];\n\n public outer!: lgQuery;\n\n public items: any;\n\n public $backdrop!: lgQuery;\n public $lgComponents!: lgQuery;\n\n public $container!: lgQuery;\n\n public $inner!: lgQuery;\n public $content!: lgQuery;\n public $toolbar!: lgQuery;\n\n // Scroll top value before lightGallery is opened\n public prevScrollTop = 0;\n\n public bodyPaddingRight = 0;\n\n private zoomFromOrigin!: boolean;\n\n private currentImageSize?: ImageSize;\n\n private isDummyImageRemoved = false;\n\n private dragOrSwipeEnabled = false;\n\n public mediaContainerPosition = {\n top: 0,\n bottom: 0,\n };\n\n constructor(element: HTMLElement, options?: LightGallerySettings) {\n if (!element) {\n return this;\n }\n lgId++;\n this.lgId = lgId;\n\n this.el = element;\n this.LGel = $LG(element);\n\n this.generateSettings(options);\n\n this.buildModules();\n\n // When using dynamic mode, ensure dynamicEl is an array\n if (\n this.settings.dynamic &&\n this.settings.dynamicEl !== undefined &&\n !Array.isArray(this.settings.dynamicEl)\n ) {\n throw 'When using dynamic mode, you must also define dynamicEl as an Array.';\n }\n\n this.galleryItems = this.getItems();\n this.normalizeSettings();\n\n // Gallery items\n\n this.init();\n\n this.validateLicense();\n\n return this;\n }\n\n private generateSettings(options?: LightGallerySettings) {\n // lightGallery settings\n this.settings = {\n ...lightGalleryCoreSettings,\n ...options,\n } as LightGalleryAllSettings;\n if (\n this.settings.isMobile &&\n typeof this.settings.isMobile === 'function'\n ? this.settings.isMobile()\n : utils.isMobile()\n ) {\n const mobileSettings = {\n ...this.settings.mobileSettings,\n ...this.settings.mobileSettings,\n };\n this.settings = { ...this.settings, ...mobileSettings };\n }\n }\n\n private normalizeSettings() {\n if (this.settings.slideEndAnimation) {\n this.settings.hideControlOnEnd = false;\n }\n if (!this.settings.closable) {\n this.settings.swipeToClose = false;\n }\n\n // And reset it on close to get the correct value next time\n this.zoomFromOrigin = this.settings.zoomFromOrigin;\n\n // At the moment, Zoom from image doesn't support dynamic options\n // @todo add zoomFromOrigin support for dynamic images\n if (this.settings.dynamic) {\n this.zoomFromOrigin = false;\n }\n\n if (this.settings.container) {\n const { container } = this.settings;\n if (typeof container === 'function') {\n this.settings.container = container();\n } else if (typeof container === 'string') {\n const el = document.querySelector(container);\n this.settings.container = el ?? document.body;\n }\n } else {\n this.settings.container = document.body;\n }\n\n // settings.preload should not be grater than $item.length\n this.settings.preload = Math.min(\n this.settings.preload,\n this.galleryItems.length,\n );\n }\n\n init(): void {\n this.addSlideVideoInfo(this.galleryItems);\n\n this.buildStructure();\n\n this.LGel.trigger(lGEvents.init, {\n instance: this,\n });\n\n if (this.settings.keyPress) {\n this.keyPress();\n }\n\n setTimeout(() => {\n this.enableDrag();\n this.enableSwipe();\n this.triggerPosterClick();\n }, 50);\n\n this.arrow();\n if (this.settings.mousewheel) {\n this.mousewheel();\n }\n\n if (!this.settings.dynamic) {\n this.openGalleryOnItemClick();\n }\n }\n\n openGalleryOnItemClick(): void {\n // Using for loop instead of using bubbling as the items can be any html element.\n for (let index = 0; index < this.items.length; index++) {\n const element = this.items[index];\n const $element = $LG(element);\n // Using different namespace for click because click event should not unbind if selector is same object('this')\n // @todo manage all event listners - should have namespace that represent element\n const uuid = lgQuery.generateUUID();\n $element\n .attr('data-lg-id', uuid)\n .on(`click.lgcustom-item-${uuid}`, (e) => {\n e.preventDefault();\n const currentItemIndex = this.settings.index || index;\n this.openGallery(currentItemIndex, element);\n });\n }\n }\n\n /**\n * Module constructor\n * Modules are build incrementally.\n * Gallery should be opened only once all the modules are initialized.\n * use moduleBuildTimeout to make sure this\n */\n buildModules(): void {\n this.settings.plugins.forEach((plugin) => {\n this.plugins.push(new plugin(this, $LG));\n });\n }\n\n validateLicense(): void {\n if (!this.settings.licenseKey) {\n console.error('Please provide a valid license key');\n } else if (this.settings.licenseKey === '0000-0000-000-0000') {\n console.warn(\n `lightGallery: ${this.settings.licenseKey} license key is not valid for production use`,\n );\n }\n }\n\n getSlideItem(index: number): lgQuery {\n return $LG(this.getSlideItemId(index));\n }\n\n getSlideItemId(index: number): string {\n return `#lg-item-${this.lgId}-${index}`;\n }\n\n getIdName(id: string): string {\n return `${id}-${this.lgId}`;\n }\n getElementById(id: string): lgQuery {\n return $LG(`#${this.getIdName(id)}`);\n }\n\n manageSingleSlideClassName(): void {\n if (this.galleryItems.length < 2) {\n this.outer.addClass('lg-single-item');\n } else {\n this.outer.removeClass('lg-single-item');\n }\n }\n\n buildStructure(): void {\n const container = this.$container && this.$container.get();\n if (container) {\n return;\n }\n let controls = '';\n let subHtmlCont = '';\n\n // Create controls\n if (this.settings.controls) {\n controls = `\n `;\n }\n\n if (this.settings.appendSubHtmlTo !== '.lg-item') {\n subHtmlCont =\n '
';\n }\n\n let addClasses = '';\n\n if (this.settings.allowMediaOverlap) {\n // Do not remove space before last single quote\n addClasses += 'lg-media-overlap ';\n }\n\n const ariaLabelledby = this.settings.ariaLabelledby\n ? 'aria-labelledby=\"' + this.settings.ariaLabelledby + '\"'\n : '';\n const ariaDescribedby = this.settings.ariaDescribedby\n ? 'aria-describedby=\"' + this.settings.ariaDescribedby + '\"'\n : '';\n\n const containerClassName = `lg-container ${this.settings.addClass} ${\n document.body !== this.settings.container ? 'lg-inline' : ''\n }`;\n const closeIcon =\n this.settings.closable && this.settings.showCloseIcon\n ? ``\n : '';\n const maximizeIcon = this.settings.showMaximizeIcon\n ? ``\n : '';\n const template = `\n
\n
\n\n
\n\n
\n
\n
\n ${controls}\n
\n
\n ${maximizeIcon}\n ${closeIcon}\n
\n ${\n this.settings.appendSubHtmlTo === '.lg-outer'\n ? subHtmlCont\n : ''\n }\n
\n ${\n this.settings.appendSubHtmlTo === '.lg-sub-html'\n ? subHtmlCont\n : ''\n }\n
\n
\n
\n `;\n\n $LG(this.settings.container).append(template);\n\n if (document.body !== this.settings.container) {\n $LG(this.settings.container).css('position', 'relative');\n }\n\n this.outer = this.getElementById('lg-outer');\n this.$lgComponents = this.getElementById('lg-components');\n this.$backdrop = this.getElementById('lg-backdrop');\n this.$container = this.getElementById('lg-container');\n this.$inner = this.getElementById('lg-inner');\n this.$content = this.getElementById('lg-content');\n this.$toolbar = this.getElementById('lg-toolbar');\n\n this.$backdrop.css(\n 'transition-duration',\n this.settings.backdropDuration + 'ms',\n );\n\n let outerClassNames = `${this.settings.mode} `;\n\n this.manageSingleSlideClassName();\n\n if (this.settings.enableDrag) {\n outerClassNames += 'lg-grab ';\n }\n\n this.outer.addClass(outerClassNames);\n\n this.$inner.css('transition-timing-function', this.settings.easing);\n this.$inner.css('transition-duration', this.settings.speed + 'ms');\n\n if (this.settings.download) {\n this.$toolbar.append(\n ``,\n );\n }\n\n this.counter();\n\n $LG(window).on(\n `resize.lg.global${this.lgId} orientationchange.lg.global${this.lgId}`,\n () => {\n this.refreshOnResize();\n },\n );\n\n this.hideBars();\n\n this.manageCloseGallery();\n this.toggleMaximize();\n\n this.initModules();\n }\n\n refreshOnResize(): void {\n if (this.lgOpened) {\n const currentGalleryItem = this.galleryItems[this.index];\n const { __slideVideoInfo } = currentGalleryItem;\n\n this.mediaContainerPosition = this.getMediaContainerPosition();\n const { top, bottom } = this.mediaContainerPosition;\n this.currentImageSize = utils.getSize(\n this.items[this.index],\n this.outer,\n top + bottom,\n __slideVideoInfo && this.settings.videoMaxSize,\n );\n if (__slideVideoInfo) {\n this.resizeVideoSlide(this.index, this.currentImageSize);\n }\n if (this.zoomFromOrigin && !this.isDummyImageRemoved) {\n const imgStyle = this.getDummyImgStyles(this.currentImageSize);\n this.outer\n .find('.lg-current .lg-dummy-img')\n .first()\n .attr('style', imgStyle);\n }\n this.LGel.trigger(lGEvents.containerResize);\n }\n }\n\n resizeVideoSlide(index: number, imageSize?: ImageSize): void {\n const lgVideoStyle = this.getVideoContStyle(imageSize);\n const currentSlide = this.getSlideItem(index);\n currentSlide.find('.lg-video-cont').attr('style', lgVideoStyle);\n }\n\n /**\n * Update slides dynamically.\n * Add, edit or delete slides dynamically when lightGallery is opened.\n * Modify the current gallery items and pass it via updateSlides method\n * @note\n * - Do not mutate existing lightGallery items directly.\n * - Always pass new list of gallery items\n * - You need to take care of thumbnails outside the gallery if any\n * - user this method only if you want to update slides when the gallery is opened. Otherwise, use `refresh()` method.\n * @param items Gallery items\n * @param index After the update operation, which slide gallery should navigate to\n * @category lGPublicMethods\n * @example\n * const plugin = lightGallery();\n *\n * // Adding slides dynamically\n * let galleryItems = [\n * // Access existing lightGallery items\n * // galleryItems are automatically generated internally from the gallery HTML markup\n * // or directly from galleryItems when dynamic gallery is used\n * ...plugin.galleryItems,\n * ...[\n * {\n * src: 'img/img-1.png',\n * thumb: 'img/thumb1.png',\n * },\n * ],\n * ];\n * plugin.updateSlides(\n * galleryItems,\n * plugin.index,\n * );\n *\n *\n * // Remove slides dynamically\n * galleryItems = JSON.parse(\n * JSON.stringify(updateSlideInstance.galleryItems),\n * );\n * galleryItems.shift();\n * updateSlideInstance.updateSlides(galleryItems, 1);\n * @see Demo\n */\n updateSlides(items: GalleryItem[], index: number): void {\n if (this.index > items.length - 1) {\n this.index = items.length - 1;\n }\n if (items.length === 1) {\n this.index = 0;\n }\n if (!items.length) {\n this.closeGallery();\n return;\n }\n const currentSrc = this.galleryItems[index].src;\n this.galleryItems = items;\n this.updateControls();\n this.$inner.empty();\n this.currentItemsInDom = [];\n\n let _index = 0;\n // Find the current index based on source value of the slide\n this.galleryItems.some((galleryItem, itemIndex) => {\n if (galleryItem.src === currentSrc) {\n _index = itemIndex;\n return true;\n }\n return false;\n });\n\n this.currentItemsInDom = this.organizeSlideItems(_index, -1);\n this.loadContent(_index, true);\n this.getSlideItem(_index).addClass('lg-current');\n\n this.index = _index;\n this.updateCurrentCounter(_index);\n this.LGel.trigger(lGEvents.updateSlides);\n }\n\n // Get gallery items based on multiple conditions\n getItems(): GalleryItem[] {\n // Gallery items\n this.items = [];\n if (!this.settings.dynamic) {\n if (this.settings.selector === 'this') {\n this.items.push(this.el);\n } else if (this.settings.selector) {\n if (typeof this.settings.selector === 'string') {\n if (this.settings.selectWithin) {\n const selectWithin = $LG(this.settings.selectWithin);\n this.items = selectWithin\n .find(this.settings.selector)\n .get();\n } else {\n this.items = this.el.querySelectorAll(\n this.settings.selector,\n );\n }\n } else {\n this.items = this.settings.selector;\n }\n } else {\n this.items = this.el.children;\n }\n return utils.getDynamicOptions(\n this.items,\n this.settings.extraProps,\n this.settings.getCaptionFromTitleOrAlt,\n this.settings.exThumbImage,\n );\n } else {\n return this.settings.dynamicEl || [];\n }\n }\n\n shouldHideScrollbar(): boolean {\n return (\n this.settings.hideScrollbar &&\n document.body === this.settings.container\n );\n }\n\n hideScrollbar(): void {\n if (!this.shouldHideScrollbar()) {\n return;\n }\n this.bodyPaddingRight = parseFloat($LG('body').style().paddingRight);\n const bodyRect = document.documentElement.getBoundingClientRect();\n const scrollbarWidth = window.innerWidth - bodyRect.width;\n\n $LG(document.body).css(\n 'padding-right',\n scrollbarWidth + this.bodyPaddingRight + 'px',\n );\n $LG(document.body).addClass('lg-overlay-open');\n }\n\n resetScrollBar(): void {\n if (!this.shouldHideScrollbar()) {\n return;\n }\n $LG(document.body).css('padding-right', this.bodyPaddingRight + 'px');\n $LG(document.body).removeClass('lg-overlay-open');\n }\n\n /**\n * Open lightGallery.\n * Open gallery with specific slide by passing index of the slide as parameter.\n * @category lGPublicMethods\n * @param {Number} index - index of the slide\n * @param {HTMLElement} element - Which image lightGallery should zoom from\n *\n * @example\n * const $dynamicGallery = document.getElementById('dynamic-gallery-demo');\n * const dynamicGallery = lightGallery($dynamicGallery, {\n * dynamic: true,\n * dynamicEl: [\n * {\n * src: 'img/1.jpg',\n * thumb: 'img/thumb-1.jpg',\n * subHtml: '

Image 1 title

Image 1 descriptions.

',\n * },\n * ...\n * ],\n * });\n * $dynamicGallery.addEventListener('click', function () {\n * // Starts with third item.(Optional).\n * // This is useful if you want use dynamic mode with\n * // custom thumbnails (thumbnails outside gallery),\n * dynamicGallery.openGallery(2);\n * });\n *\n */\n openGallery(index = this.settings.index, element?: HTMLElement): void {\n // prevent accidental double execution\n if (this.lgOpened) return;\n this.lgOpened = true;\n this.outer.removeClass('lg-hide-items');\n\n this.hideScrollbar();\n\n // Add display block, but still has opacity 0\n this.$container.addClass('lg-show');\n\n const itemsToBeInsertedToDom = this.getItemsToBeInsertedToDom(\n index,\n index,\n );\n this.currentItemsInDom = itemsToBeInsertedToDom;\n\n let items = '';\n itemsToBeInsertedToDom.forEach((item) => {\n items = items + `
`;\n });\n\n this.$inner.append(items);\n this.addHtml(index);\n let transform: string | undefined = '';\n this.mediaContainerPosition = this.getMediaContainerPosition();\n const { top, bottom } = this.mediaContainerPosition;\n if (!this.settings.allowMediaOverlap) {\n this.setMediaContainerPosition(top, bottom);\n }\n const { __slideVideoInfo } = this.galleryItems[index];\n if (this.zoomFromOrigin && element) {\n this.currentImageSize = utils.getSize(\n element,\n this.outer,\n top + bottom,\n __slideVideoInfo && this.settings.videoMaxSize,\n );\n transform = utils.getTransform(\n element,\n this.outer,\n top,\n bottom,\n this.currentImageSize,\n );\n }\n if (!this.zoomFromOrigin || !transform) {\n this.outer.addClass(this.settings.startClass);\n this.getSlideItem(index).removeClass('lg-complete');\n }\n const timeout = this.settings.zoomFromOrigin\n ? 100\n : this.settings.backdropDuration;\n setTimeout(() => {\n this.outer.addClass('lg-components-open');\n }, timeout);\n this.index = index;\n this.LGel.trigger(lGEvents.beforeOpen);\n\n // add class lg-current to remove initial transition\n this.getSlideItem(index).addClass('lg-current');\n\n this.lGalleryOn = false;\n // Store the current scroll top value to scroll back after closing the gallery..\n this.prevScrollTop = $LG(window).scrollTop();\n\n setTimeout(() => {\n // Need to check both zoomFromOrigin and transform values as we need to set set the\n // default opening animation if user missed to add the lg-size attribute\n\n if (this.zoomFromOrigin && transform) {\n const currentSlide = this.getSlideItem(index);\n currentSlide.css('transform', transform);\n setTimeout(() => {\n currentSlide\n .addClass('lg-start-progress lg-start-end-progress')\n .css(\n 'transition-duration',\n this.settings.startAnimationDuration + 'ms',\n );\n this.outer.addClass('lg-zoom-from-image');\n });\n setTimeout(() => {\n currentSlide.css('transform', 'translate3d(0, 0, 0)');\n }, 100);\n }\n\n setTimeout(() => {\n this.$backdrop.addClass('in');\n this.$container.addClass('lg-show-in');\n }, 10);\n\n setTimeout(() => {\n if (\n this.settings.trapFocus &&\n document.body === this.settings.container\n ) {\n this.trapFocus();\n }\n }, this.settings.backdropDuration + 50);\n\n // lg-visible class resets gallery opacity to 1\n if (!this.zoomFromOrigin || !transform) {\n setTimeout(() => {\n this.outer.addClass('lg-visible');\n }, this.settings.backdropDuration);\n }\n\n // initiate slide function\n this.slide(index, false, false, false);\n\n this.LGel.trigger(lGEvents.afterOpen);\n });\n\n if (document.body === this.settings.container) {\n $LG('html').addClass('lg-on');\n }\n }\n\n /**\n * Note - Changing the position of the media on every slide transition creates a flickering effect.\n * Therefore, The height of the caption is calculated dynamically, only once based on the first slide caption.\n * if you have dynamic captions for each media,\n * you can provide an appropriate height for the captions via allowMediaOverlap option\n */\n public getMediaContainerPosition(): MediaContainerPosition {\n if (this.settings.allowMediaOverlap) {\n return {\n top: 0,\n bottom: 0,\n };\n }\n const top = this.$toolbar.get().clientHeight || 0;\n const subHtml = this.outer.find('.lg-components .lg-sub-html').get();\n const captionHeight =\n this.settings.defaultCaptionHeight ||\n (subHtml && subHtml.clientHeight) ||\n 0;\n const thumbContainer = this.outer.find('.lg-thumb-outer').get();\n const thumbHeight = thumbContainer ? thumbContainer.clientHeight : 0;\n const bottom = thumbHeight + captionHeight;\n return {\n top,\n bottom,\n };\n }\n\n private setMediaContainerPosition(top = 0, bottom = 0): void {\n this.$content.css('top', top + 'px').css('bottom', bottom + 'px');\n }\n\n hideBars(): void {\n // Hide controllers if mouse doesn't move for some period\n setTimeout(() => {\n this.outer.removeClass('lg-hide-items');\n if (this.settings.hideBarsDelay > 0) {\n this.outer.on('mousemove.lg click.lg touchstart.lg', () => {\n this.outer.removeClass('lg-hide-items');\n\n clearTimeout(this.hideBarTimeout);\n\n // Timeout will be cleared on each slide movement also\n this.hideBarTimeout = setTimeout(() => {\n this.outer.addClass('lg-hide-items');\n }, this.settings.hideBarsDelay);\n });\n this.outer.trigger('mousemove.lg');\n }\n }, this.settings.showBarsAfter);\n }\n\n initPictureFill($img: lgQuery): void {\n if (this.settings.supportLegacyBrowser) {\n try {\n picturefill({\n elements: [$img.get()],\n });\n } catch (e) {\n console.warn(\n 'lightGallery :- If you want srcset or picture tag to be supported for older browser please include picturefil javascript library in your document.',\n );\n }\n }\n }\n\n /**\n * @desc Create image counter\n * Ex: 1/10\n */\n counter(): void {\n if (this.settings.counter) {\n const counterHtml = `
\n ${this.index + 1} /\n ${\n this.galleryItems.length\n }
`;\n this.outer.find(this.settings.appendCounterTo).append(counterHtml);\n }\n }\n\n /**\n * @desc add sub-html into the slide\n * @param {Number} index - index of the slide\n */\n addHtml(index: number): void {\n let subHtml;\n let subHtmlUrl;\n if (this.galleryItems[index].subHtmlUrl) {\n subHtmlUrl = this.galleryItems[index].subHtmlUrl;\n } else {\n subHtml = this.galleryItems[index].subHtml;\n }\n\n if (!subHtmlUrl) {\n if (subHtml) {\n // get first letter of sub-html\n // if first letter starts with . or # get the html form the jQuery object\n const fL = subHtml.substring(0, 1);\n if (fL === '.' || fL === '#') {\n try {\n if (\n this.settings.subHtmlSelectorRelative &&\n !this.settings.dynamic\n ) {\n subHtml = $LG(this.items)\n .eq(index)\n .find(subHtml)\n .first()\n .html();\n } else {\n subHtml = $LG(subHtml).first().html();\n }\n } catch (error) {\n console.warn(\n `Error processing subHtml selector \"${subHtml}\"`,\n );\n subHtml = '';\n }\n }\n } else {\n subHtml = '';\n }\n }\n\n if (this.settings.appendSubHtmlTo !== '.lg-item') {\n if (subHtmlUrl) {\n utils.fetchCaptionFromUrl(\n subHtmlUrl,\n this.outer.find('.lg-sub-html'),\n 'replace',\n );\n } else {\n this.outer.find('.lg-sub-html').html(subHtml as string);\n }\n } else {\n const currentSlide = $LG(this.getSlideItemId(index));\n if (subHtmlUrl) {\n utils.fetchCaptionFromUrl(subHtmlUrl, currentSlide, 'append');\n } else {\n currentSlide.append(\n `
${subHtml}
`,\n );\n }\n }\n\n // Add lg-empty-html class if title doesn't exist\n if (typeof subHtml !== 'undefined' && subHtml !== null) {\n if (subHtml === '') {\n this.outer\n .find(this.settings.appendSubHtmlTo)\n .addClass('lg-empty-html');\n } else {\n this.outer\n .find(this.settings.appendSubHtmlTo)\n .removeClass('lg-empty-html');\n }\n }\n\n this.LGel.trigger(\n lGEvents.afterAppendSubHtml,\n {\n index,\n },\n );\n }\n\n /**\n * @desc Preload slides\n * @param {Number} index - index of the slide\n * @todo preload not working for the first slide, Also, should work for the first and last slide as well\n */\n preload(index: number): void {\n for (let i = 1; i <= this.settings.preload; i++) {\n if (i >= this.galleryItems.length - index) {\n break;\n }\n\n this.loadContent(index + i, false);\n }\n\n for (let j = 1; j <= this.settings.preload; j++) {\n if (index - j < 0) {\n break;\n }\n\n this.loadContent(index - j, false);\n }\n }\n\n getDummyImgStyles(imageSize?: ImageSize): string {\n if (!imageSize) return '';\n return `width:${imageSize.width}px;\n margin-left: -${imageSize.width / 2}px;\n margin-top: -${imageSize.height / 2}px;\n height:${imageSize.height}px`;\n }\n getVideoContStyle(imageSize?: ImageSize): string {\n if (!imageSize) return '';\n return `width:${imageSize.width}px;\n height:${imageSize.height}px`;\n }\n\n getDummyImageContent(\n $currentSlide: lgQuery,\n index: number,\n alt: string,\n ): HTMLImageElement | string {\n let $currentItem;\n if (!this.settings.dynamic) {\n $currentItem = $LG(this.items).eq(index);\n }\n if ($currentItem) {\n let _dummyImgSrc;\n if (!this.settings.exThumbImage) {\n _dummyImgSrc = $currentItem.find('img').first().attr('src');\n } else {\n _dummyImgSrc = $currentItem.attr(this.settings.exThumbImage);\n }\n if (!_dummyImgSrc) return '';\n const imgStyle = this.getDummyImgStyles(this.currentImageSize);\n const dummyImgContentImg = document.createElement('img');\n dummyImgContentImg.alt = alt || '';\n dummyImgContentImg.src = _dummyImgSrc;\n dummyImgContentImg.className = `lg-dummy-img`;\n dummyImgContentImg.style.cssText = imgStyle;\n\n $currentSlide.addClass('lg-first-slide');\n this.outer.addClass('lg-first-slide-loading');\n\n return dummyImgContentImg;\n }\n return '';\n }\n\n setImgMarkup(src: string, $currentSlide: lgQuery, index: number): void {\n const currentGalleryItem = this.galleryItems[index];\n const { alt, srcset, sizes, sources } = currentGalleryItem;\n\n // Use the thumbnail as dummy image which will be resized to actual image size and\n // displayed on top of actual image\n let imgContent: string | HTMLImageElement = '';\n const altAttr = alt ? 'alt=\"' + alt + '\"' : '';\n\n if (this.isFirstSlideWithZoomAnimation()) {\n imgContent = this.getDummyImageContent(\n $currentSlide,\n index,\n altAttr,\n );\n } else {\n imgContent = utils.getImgMarkup(\n index,\n src,\n altAttr,\n srcset,\n sizes,\n sources,\n );\n }\n const picture = document.createElement('picture');\n picture.className = 'lg-img-wrap';\n $LG(picture).append(imgContent);\n $currentSlide.prepend(picture);\n }\n\n onSlideObjectLoad(\n $slide: lgQuery,\n isHTML5VideoWithoutPoster: boolean,\n onLoad: () => void,\n onError: () => void,\n ): void {\n const mediaObject = $slide.find('.lg-object').first();\n if (\n utils.isImageLoaded(mediaObject.get() as HTMLImageElement) ||\n isHTML5VideoWithoutPoster\n ) {\n onLoad();\n } else {\n mediaObject.on('load.lg error.lg', () => {\n onLoad && onLoad();\n });\n mediaObject.on('error.lg', () => {\n onError && onError();\n });\n }\n }\n\n /**\n *\n * @param $el Current slide item\n * @param index\n * @param delay Delay is 0 except first time\n * @param speed Speed is same as delay, except it is 0 if gallery is opened via hash plugin\n * @param isFirstSlide\n */\n onLgObjectLoad(\n currentSlide: lgQuery,\n index: number,\n delay: number,\n speed: number,\n isFirstSlide: boolean,\n isHTML5VideoWithoutPoster: boolean,\n ): void {\n this.onSlideObjectLoad(\n currentSlide,\n isHTML5VideoWithoutPoster,\n () => {\n this.triggerSlideItemLoad(\n currentSlide,\n index,\n delay,\n speed,\n isFirstSlide,\n );\n },\n () => {\n currentSlide.addClass('lg-complete lg-complete_');\n currentSlide.html(\n '' +\n this.settings.strings['mediaLoadingFailed'] +\n '',\n );\n },\n );\n }\n\n triggerSlideItemLoad(\n $currentSlide: lgQuery,\n index: number,\n delay: number,\n speed: number,\n isFirstSlide: boolean,\n ): void {\n const currentGalleryItem = this.galleryItems[index];\n\n // Adding delay for video slides without poster for better performance and user experience\n // Videos should start playing once once the gallery is completely loaded\n const _speed =\n isFirstSlide &&\n this.getSlideType(currentGalleryItem) === 'video' &&\n !currentGalleryItem.poster\n ? speed\n : 0;\n setTimeout(() => {\n $currentSlide.addClass('lg-complete lg-complete_');\n this.LGel.trigger(lGEvents.slideItemLoad, {\n index,\n delay: delay || 0,\n isFirstSlide,\n });\n }, _speed);\n }\n\n isFirstSlideWithZoomAnimation(): boolean {\n return !!(\n !this.lGalleryOn &&\n this.zoomFromOrigin &&\n this.currentImageSize\n );\n }\n\n // Add video slideInfo\n addSlideVideoInfo(items: GalleryItem[]): void {\n items.forEach((element, index) => {\n element.__slideVideoInfo = utils.isVideo(\n element.src as string,\n !!element.video,\n index,\n );\n if (\n element.__slideVideoInfo &&\n this.settings.loadYouTubePoster &&\n !element.poster &&\n element.__slideVideoInfo.youtube\n ) {\n element.poster = `//img.youtube.com/vi/${element.__slideVideoInfo.youtube[1]}/maxresdefault.jpg`;\n }\n });\n }\n\n /**\n * Load slide content into slide.\n * This is used to load content into slides that is not visible too\n * @param {Number} index - index of the slide.\n * @param {Boolean} rec - if true call loadcontent() function again.\n */\n loadContent(index: number, rec: boolean): void {\n const currentGalleryItem = this.galleryItems[index];\n const $currentSlide = $LG(this.getSlideItemId(index));\n\n const { poster, srcset, sizes, sources } = currentGalleryItem;\n let { src } = currentGalleryItem;\n\n const video = currentGalleryItem.video;\n\n const _html5Video =\n video && typeof video === 'string' ? JSON.parse(video) : video;\n\n if (currentGalleryItem.responsive) {\n const srcDyItms = currentGalleryItem.responsive.split(',');\n src = utils.getResponsiveSrc(srcDyItms) || src;\n }\n\n const videoInfo = currentGalleryItem.__slideVideoInfo;\n let lgVideoStyle = '';\n\n const iframe = !!currentGalleryItem.iframe;\n\n const isFirstSlide = !this.lGalleryOn;\n\n // delay for adding complete class. it is 0 except first time.\n let delay = 0;\n if (isFirstSlide) {\n if (this.zoomFromOrigin && this.currentImageSize) {\n delay = this.settings.startAnimationDuration + 10;\n } else {\n delay = this.settings.backdropDuration + 10;\n }\n }\n\n if (!$currentSlide.hasClass('lg-loaded')) {\n if (videoInfo) {\n const { top, bottom } = this.mediaContainerPosition;\n const videoSize = utils.getSize(\n this.items[index],\n this.outer,\n top + bottom,\n videoInfo && this.settings.videoMaxSize,\n );\n lgVideoStyle = this.getVideoContStyle(videoSize);\n }\n if (iframe) {\n const markup = utils.getIframeMarkup(\n this.settings.iframeWidth,\n this.settings.iframeHeight,\n this.settings.iframeMaxWidth,\n this.settings.iframeMaxHeight,\n src,\n currentGalleryItem.iframeTitle,\n );\n $currentSlide.prepend(markup);\n } else if (poster) {\n let dummyImg: string | HTMLImageElement = '';\n const hasStartAnimation =\n isFirstSlide &&\n this.zoomFromOrigin &&\n this.currentImageSize;\n if (hasStartAnimation) {\n dummyImg = this.getDummyImageContent(\n $currentSlide,\n index,\n '',\n );\n }\n\n const markup = utils.getVideoPosterMarkup(\n poster,\n dummyImg || '',\n lgVideoStyle,\n this.settings.strings['playVideo'],\n videoInfo,\n );\n $currentSlide.prepend(markup);\n } else if (videoInfo) {\n const markup = `
`;\n $currentSlide.prepend(markup);\n } else {\n this.setImgMarkup(src as string, $currentSlide, index);\n if (srcset || sources) {\n const $img = $currentSlide.find('.lg-object');\n this.initPictureFill($img);\n }\n }\n if (poster || videoInfo) {\n this.LGel.trigger(lGEvents.hasVideo, {\n index,\n src: src,\n html5Video: _html5Video,\n hasPoster: !!poster,\n });\n }\n\n this.LGel.trigger(\n lGEvents.afterAppendSlide,\n { index },\n );\n\n if (\n this.lGalleryOn &&\n this.settings.appendSubHtmlTo === '.lg-item'\n ) {\n this.addHtml(index);\n }\n }\n\n // For first time add some delay for displaying the start animation.\n let _speed = 0;\n\n // Do not change the delay value because it is required for zoom plugin.\n // If gallery opened from direct url (hash) speed value should be 0\n if (delay && !$LG(document.body).hasClass('lg-from-hash')) {\n _speed = delay;\n }\n\n // Only for first slide and zoomFromOrigin is enabled\n if (this.isFirstSlideWithZoomAnimation()) {\n setTimeout(() => {\n $currentSlide\n .removeClass('lg-start-end-progress lg-start-progress')\n .removeAttr('style');\n }, this.settings.startAnimationDuration + 100);\n if (!$currentSlide.hasClass('lg-loaded')) {\n setTimeout(() => {\n if (this.getSlideType(currentGalleryItem) === 'image') {\n const { alt } = currentGalleryItem;\n const altAttr = alt ? 'alt=\"' + alt + '\"' : '';\n\n $currentSlide\n .find('.lg-img-wrap')\n .append(\n utils.getImgMarkup(\n index,\n src as string,\n altAttr,\n srcset,\n sizes,\n currentGalleryItem.sources,\n ),\n );\n if (srcset || sources) {\n const $img = $currentSlide.find('.lg-object');\n this.initPictureFill($img);\n }\n }\n if (\n this.getSlideType(currentGalleryItem) === 'image' ||\n (this.getSlideType(currentGalleryItem) === 'video' &&\n poster)\n ) {\n this.onLgObjectLoad(\n $currentSlide,\n index,\n delay,\n _speed,\n true,\n false,\n );\n\n // load remaining slides once the slide is completely loaded\n this.onSlideObjectLoad(\n $currentSlide,\n !!(videoInfo && videoInfo.html5 && !poster),\n () => {\n this.loadContentOnFirstSlideLoad(\n index,\n $currentSlide,\n _speed,\n );\n },\n () => {\n this.loadContentOnFirstSlideLoad(\n index,\n $currentSlide,\n _speed,\n );\n },\n );\n }\n }, this.settings.startAnimationDuration + 100);\n }\n }\n\n // SLide content has been added to dom\n $currentSlide.addClass('lg-loaded');\n\n if (\n !this.isFirstSlideWithZoomAnimation() ||\n (this.getSlideType(currentGalleryItem) === 'video' && !poster)\n ) {\n this.onLgObjectLoad(\n $currentSlide,\n index,\n delay,\n _speed,\n isFirstSlide,\n !!(videoInfo && videoInfo.html5 && !poster),\n );\n }\n\n // When gallery is opened once content is loaded (second time) need to add lg-complete class for css styling\n if (\n (!this.zoomFromOrigin || !this.currentImageSize) &&\n $currentSlide.hasClass('lg-complete_') &&\n !this.lGalleryOn\n ) {\n setTimeout(() => {\n $currentSlide.addClass('lg-complete');\n }, this.settings.backdropDuration);\n }\n\n // Content loaded\n // Need to set lGalleryOn before calling preload function\n this.lGalleryOn = true;\n\n if (rec === true) {\n if (!$currentSlide.hasClass('lg-complete_')) {\n $currentSlide\n .find('.lg-object')\n .first()\n .on('load.lg error.lg', () => {\n this.preload(index);\n });\n } else {\n this.preload(index);\n }\n }\n }\n\n /**\n * @desc Remove dummy image content and load next slides\n * Called only for the first time if zoomFromOrigin animation is enabled\n * @param index\n * @param $currentSlide\n * @param speed\n */\n loadContentOnFirstSlideLoad(\n index: number,\n $currentSlide: lgQuery,\n speed: number,\n ): void {\n setTimeout(() => {\n $currentSlide.find('.lg-dummy-img').remove();\n $currentSlide.removeClass('lg-first-slide');\n this.outer.removeClass('lg-first-slide-loading');\n this.isDummyImageRemoved = true;\n this.preload(index);\n }, speed + 300);\n }\n\n getItemsToBeInsertedToDom(\n index: number,\n prevIndex: number,\n numberOfItems = 0,\n ): string[] {\n const itemsToBeInsertedToDom: string[] = [];\n // Minimum 2 items should be there\n let possibleNumberOfItems = Math.max(numberOfItems, 3);\n possibleNumberOfItems = Math.min(\n possibleNumberOfItems,\n this.galleryItems.length,\n );\n const prevIndexItem = `lg-item-${this.lgId}-${prevIndex}`;\n if (this.galleryItems.length <= 3) {\n this.galleryItems.forEach((_element, index) => {\n itemsToBeInsertedToDom.push(`lg-item-${this.lgId}-${index}`);\n });\n return itemsToBeInsertedToDom;\n }\n\n if (index < (this.galleryItems.length - 1) / 2) {\n for (\n let idx = index;\n idx > index - possibleNumberOfItems / 2 && idx >= 0;\n idx--\n ) {\n itemsToBeInsertedToDom.push(`lg-item-${this.lgId}-${idx}`);\n }\n const numberOfExistingItems = itemsToBeInsertedToDom.length;\n for (\n let idx = 0;\n idx < possibleNumberOfItems - numberOfExistingItems;\n idx++\n ) {\n itemsToBeInsertedToDom.push(\n `lg-item-${this.lgId}-${index + idx + 1}`,\n );\n }\n } else {\n for (\n let idx = index;\n idx <= this.galleryItems.length - 1 &&\n idx < index + possibleNumberOfItems / 2;\n idx++\n ) {\n itemsToBeInsertedToDom.push(`lg-item-${this.lgId}-${idx}`);\n }\n const numberOfExistingItems = itemsToBeInsertedToDom.length;\n for (\n let idx = 0;\n idx < possibleNumberOfItems - numberOfExistingItems;\n idx++\n ) {\n itemsToBeInsertedToDom.push(\n `lg-item-${this.lgId}-${index - idx - 1}`,\n );\n }\n }\n if (this.settings.loop) {\n if (index === this.galleryItems.length - 1) {\n itemsToBeInsertedToDom.push(`lg-item-${this.lgId}-${0}`);\n } else if (index === 0) {\n itemsToBeInsertedToDom.push(\n `lg-item-${this.lgId}-${this.galleryItems.length - 1}`,\n );\n }\n }\n if (itemsToBeInsertedToDom.indexOf(prevIndexItem) === -1) {\n itemsToBeInsertedToDom.push(`lg-item-${this.lgId}-${prevIndex}`);\n }\n\n return itemsToBeInsertedToDom;\n }\n\n organizeSlideItems(index: number, prevIndex: number): string[] {\n const itemsToBeInsertedToDom = this.getItemsToBeInsertedToDom(\n index,\n prevIndex,\n this.settings.numberOfSlideItemsInDom,\n );\n\n itemsToBeInsertedToDom.forEach((item) => {\n if (this.currentItemsInDom.indexOf(item) === -1) {\n this.$inner.append(`
`);\n }\n });\n\n this.currentItemsInDom.forEach((item) => {\n if (itemsToBeInsertedToDom.indexOf(item) === -1) {\n $LG(`#${item}`).remove();\n }\n });\n return itemsToBeInsertedToDom;\n }\n\n /**\n * Get previous index of the slide\n */\n getPreviousSlideIndex(): number {\n let prevIndex = 0;\n try {\n const currentItemId = this.outer\n .find('.lg-current')\n .first()\n .attr('id');\n prevIndex = parseInt(currentItemId.split('-')[3]) || 0;\n } catch (error) {\n prevIndex = 0;\n }\n return prevIndex;\n }\n\n setDownloadValue(index: number): void {\n if (this.settings.download) {\n const currentGalleryItem = this.galleryItems[index];\n const hideDownloadBtn =\n currentGalleryItem.downloadUrl === false ||\n currentGalleryItem.downloadUrl === 'false';\n if (hideDownloadBtn) {\n this.outer.addClass('lg-hide-download');\n } else {\n const $download = this.getElementById('lg-download');\n this.outer.removeClass('lg-hide-download');\n $download.attr(\n 'href',\n currentGalleryItem.downloadUrl ||\n (currentGalleryItem.src as string),\n );\n if (currentGalleryItem.download) {\n $download.attr('download', currentGalleryItem.download);\n }\n }\n }\n }\n\n makeSlideAnimation(\n direction: 'next' | 'prev',\n currentSlideItem: lgQuery,\n previousSlideItem: lgQuery,\n ): void {\n if (this.lGalleryOn) {\n previousSlideItem.addClass('lg-slide-progress');\n }\n setTimeout(\n () => {\n // remove all transitions\n this.outer.addClass('lg-no-trans');\n\n this.outer\n .find('.lg-item')\n .removeClass('lg-prev-slide lg-next-slide');\n\n if (direction === 'prev') {\n //prevslide\n currentSlideItem.addClass('lg-prev-slide');\n previousSlideItem.addClass('lg-next-slide');\n } else {\n // next slide\n currentSlideItem.addClass('lg-next-slide');\n previousSlideItem.addClass('lg-prev-slide');\n }\n\n // give 50 ms for browser to add/remove class\n setTimeout(() => {\n this.outer.find('.lg-item').removeClass('lg-current');\n\n currentSlideItem.addClass('lg-current');\n\n // reset all transitions\n this.outer.removeClass('lg-no-trans');\n }, 50);\n },\n this.lGalleryOn ? this.settings.slideDelay : 0,\n );\n }\n\n /**\n * Goto a specific slide.\n * @param {Number} index - index of the slide\n * @param {Boolean} fromTouch - true if slide function called via touch event or mouse drag\n * @param {Boolean} fromThumb - true if slide function called via thumbnail click\n * @param {String} direction - Direction of the slide(next/prev)\n * @category lGPublicMethods\n * @example\n * const plugin = lightGallery();\n * // to go to 3rd slide\n * plugin.slide(2);\n *\n */\n slide(\n index: number,\n fromTouch?: boolean,\n fromThumb?: boolean,\n direction?: SlideDirection | false,\n ): void {\n const prevIndex = this.getPreviousSlideIndex();\n this.currentItemsInDom = this.organizeSlideItems(index, prevIndex);\n\n // Prevent multiple call, Required for hsh plugin\n if (this.lGalleryOn && prevIndex === index) {\n return;\n }\n\n const numberOfGalleryItems = this.galleryItems.length;\n\n if (!this.lgBusy) {\n if (this.settings.counter) {\n this.updateCurrentCounter(index);\n }\n\n const currentSlideItem = this.getSlideItem(index);\n const previousSlideItem = this.getSlideItem(prevIndex);\n\n const currentGalleryItem = this.galleryItems[index];\n const videoInfo = currentGalleryItem.__slideVideoInfo;\n\n this.outer.attr(\n 'data-lg-slide-type',\n this.getSlideType(currentGalleryItem),\n );\n this.setDownloadValue(index);\n\n if (videoInfo) {\n const { top, bottom } = this.mediaContainerPosition;\n const videoSize = utils.getSize(\n this.items[index],\n this.outer,\n top + bottom,\n videoInfo && this.settings.videoMaxSize,\n );\n this.resizeVideoSlide(index, videoSize);\n }\n\n this.LGel.trigger(lGEvents.beforeSlide, {\n prevIndex,\n index,\n fromTouch: !!fromTouch,\n fromThumb: !!fromThumb,\n });\n\n this.lgBusy = true;\n\n clearTimeout(this.hideBarTimeout);\n\n this.arrowDisable(index);\n\n if (!direction) {\n if (index < prevIndex) {\n direction = 'prev';\n } else if (index > prevIndex) {\n direction = 'next';\n }\n }\n\n if (!fromTouch) {\n this.makeSlideAnimation(\n direction as SlideDirection,\n currentSlideItem,\n previousSlideItem,\n );\n } else {\n this.outer\n .find('.lg-item')\n .removeClass('lg-prev-slide lg-current lg-next-slide');\n let touchPrev;\n let touchNext;\n if (numberOfGalleryItems > 2) {\n touchPrev = index - 1;\n touchNext = index + 1;\n\n if (index === 0 && prevIndex === numberOfGalleryItems - 1) {\n // next slide\n touchNext = 0;\n touchPrev = numberOfGalleryItems - 1;\n } else if (\n index === numberOfGalleryItems - 1 &&\n prevIndex === 0\n ) {\n // prev slide\n touchNext = 0;\n touchPrev = numberOfGalleryItems - 1;\n }\n } else {\n touchPrev = 0;\n touchNext = 1;\n }\n\n if (direction === 'prev') {\n this.getSlideItem(touchNext).addClass('lg-next-slide');\n } else {\n this.getSlideItem(touchPrev).addClass('lg-prev-slide');\n }\n\n currentSlideItem.addClass('lg-current');\n }\n\n // Do not put load content in set timeout as it needs to load immediately when the gallery is opened\n if (!this.lGalleryOn) {\n this.loadContent(index, true);\n } else {\n setTimeout(() => {\n this.loadContent(index, true);\n // Add title if this.settings.appendSubHtmlTo === lg-sub-html\n if (this.settings.appendSubHtmlTo !== '.lg-item') {\n this.addHtml(index);\n }\n }, this.settings.speed + 50 + (fromTouch ? 0 : this.settings.slideDelay));\n }\n\n setTimeout(() => {\n this.lgBusy = false;\n previousSlideItem.removeClass('lg-slide-progress');\n this.LGel.trigger(lGEvents.afterSlide, {\n prevIndex: prevIndex,\n index,\n fromTouch,\n fromThumb,\n });\n }, (this.lGalleryOn ? this.settings.speed + 100 : 100) + (fromTouch ? 0 : this.settings.slideDelay));\n }\n\n this.index = index;\n }\n\n updateCurrentCounter(index: number): void {\n this.getElementById('lg-counter-current').html(index + 1 + '');\n }\n\n updateCounterTotal(): void {\n this.getElementById('lg-counter-all').html(\n this.galleryItems.length + '',\n );\n }\n\n getSlideType(item: GalleryItem): 'video' | 'iframe' | 'image' {\n if (item.__slideVideoInfo) {\n return 'video';\n } else if (item.iframe) {\n return 'iframe';\n } else {\n return 'image';\n }\n }\n\n touchMove(startCoords: Coords, endCoords: Coords, e?: TouchEvent): void {\n const distanceX = endCoords.pageX - startCoords.pageX;\n const distanceY = endCoords.pageY - startCoords.pageY;\n let allowSwipe = false;\n\n if (this.swipeDirection) {\n allowSwipe = true;\n } else {\n if (Math.abs(distanceX) > 15) {\n this.swipeDirection = 'horizontal';\n allowSwipe = true;\n } else if (Math.abs(distanceY) > 15) {\n this.swipeDirection = 'vertical';\n allowSwipe = true;\n }\n }\n\n if (!allowSwipe) {\n return;\n }\n\n const $currentSlide = this.getSlideItem(this.index);\n\n if (this.swipeDirection === 'horizontal') {\n e?.preventDefault();\n // reset opacity and transition duration\n this.outer.addClass('lg-dragging');\n\n // move current slide\n this.setTranslate($currentSlide, distanceX, 0);\n\n // move next and prev slide with current slide\n const width = $currentSlide.get().offsetWidth;\n const slideWidthAmount = (width * 15) / 100;\n const gutter = slideWidthAmount - Math.abs((distanceX * 10) / 100);\n this.setTranslate(\n this.outer.find('.lg-prev-slide').first(),\n -width + distanceX - gutter,\n 0,\n );\n\n this.setTranslate(\n this.outer.find('.lg-next-slide').first(),\n width + distanceX + gutter,\n 0,\n );\n } else if (this.swipeDirection === 'vertical') {\n if (this.settings.swipeToClose) {\n e?.preventDefault();\n this.$container.addClass('lg-dragging-vertical');\n\n const opacity = 1 - Math.abs(distanceY) / window.innerHeight;\n this.$backdrop.css('opacity', opacity);\n\n const scale = 1 - Math.abs(distanceY) / (window.innerWidth * 2);\n this.setTranslate($currentSlide, 0, distanceY, scale, scale);\n if (Math.abs(distanceY) > 100) {\n this.outer\n .addClass('lg-hide-items')\n .removeClass('lg-components-open');\n }\n }\n }\n }\n\n touchEnd(endCoords: Coords, startCoords: Coords, event: TouchEvent): void {\n let distance;\n\n // keep slide animation for any mode while dragg/swipe\n if (this.settings.mode !== 'lg-slide') {\n this.outer.addClass('lg-slide');\n }\n\n // set transition duration\n setTimeout(() => {\n this.$container.removeClass('lg-dragging-vertical');\n this.outer\n .removeClass('lg-dragging lg-hide-items')\n .addClass('lg-components-open');\n\n let triggerClick = true;\n\n if (this.swipeDirection === 'horizontal') {\n distance = endCoords.pageX - startCoords.pageX;\n const distanceAbs = Math.abs(\n endCoords.pageX - startCoords.pageX,\n );\n if (\n distance < 0 &&\n distanceAbs > this.settings.swipeThreshold\n ) {\n this.goToNextSlide(true);\n triggerClick = false;\n } else if (\n distance > 0 &&\n distanceAbs > this.settings.swipeThreshold\n ) {\n this.goToPrevSlide(true);\n triggerClick = false;\n }\n } else if (this.swipeDirection === 'vertical') {\n distance = Math.abs(endCoords.pageY - startCoords.pageY);\n if (\n this.settings.closable &&\n this.settings.swipeToClose &&\n distance > 100\n ) {\n this.closeGallery();\n return;\n } else {\n this.$backdrop.css('opacity', 1);\n }\n }\n this.outer.find('.lg-item').removeAttr('style');\n\n if (\n triggerClick &&\n Math.abs(endCoords.pageX - startCoords.pageX) < 5\n ) {\n // Trigger click if distance is less than 5 pix\n const target = $LG(event.target);\n if (this.isPosterElement(target)) {\n this.LGel.trigger(lGEvents.posterClick);\n }\n }\n\n this.swipeDirection = undefined;\n });\n\n // remove slide class once drag/swipe is completed if mode is not slide\n setTimeout(() => {\n if (\n !this.outer.hasClass('lg-dragging') &&\n this.settings.mode !== 'lg-slide'\n ) {\n this.outer.removeClass('lg-slide');\n }\n }, this.settings.speed + 100);\n }\n\n enableSwipe(): void {\n let startCoords: Coords = {} as Coords;\n let endCoords: Coords = {} as Coords;\n let isMoved = false;\n let isSwiping = false;\n\n if (this.settings.enableSwipe) {\n this.$inner.on('touchstart.lg', (e) => {\n this.dragOrSwipeEnabled = true;\n const $item = this.getSlideItem(this.index);\n if (\n ($LG(e.target).hasClass('lg-item') ||\n $item.get().contains(e.target)) &&\n !this.outer.hasClass('lg-zoomed') &&\n !this.lgBusy &&\n e.touches.length === 1\n ) {\n isSwiping = true;\n this.touchAction = 'swipe';\n this.manageSwipeClass();\n startCoords = {\n pageX: e.touches[0].pageX,\n pageY: e.touches[0].pageY,\n };\n }\n });\n\n this.$inner.on('touchmove.lg', (e) => {\n if (\n isSwiping &&\n this.touchAction === 'swipe' &&\n e.touches.length === 1\n ) {\n endCoords = {\n pageX: e.touches[0].pageX,\n pageY: e.touches[0].pageY,\n };\n this.touchMove(startCoords, endCoords, e);\n isMoved = true;\n }\n });\n\n this.$inner.on('touchend.lg', (event: TouchEvent) => {\n if (this.touchAction === 'swipe') {\n if (isMoved) {\n isMoved = false;\n this.touchEnd(endCoords, startCoords, event);\n } else if (isSwiping) {\n const target = $LG(event.target);\n if (this.isPosterElement(target)) {\n this.LGel.trigger(lGEvents.posterClick);\n }\n }\n this.touchAction = undefined;\n isSwiping = false;\n }\n });\n }\n }\n\n enableDrag(): void {\n let startCoords: Coords = {} as Coords;\n let endCoords: Coords = {} as Coords;\n let isDraging = false;\n let isMoved = false;\n if (this.settings.enableDrag) {\n this.outer.on('mousedown.lg', (e) => {\n this.dragOrSwipeEnabled = true;\n const $item = this.getSlideItem(this.index);\n if (\n $LG(e.target).hasClass('lg-item') ||\n $item.get().contains(e.target)\n ) {\n if (!this.outer.hasClass('lg-zoomed') && !this.lgBusy) {\n e.preventDefault();\n if (!this.lgBusy) {\n this.manageSwipeClass();\n startCoords = {\n pageX: e.pageX,\n pageY: e.pageY,\n };\n isDraging = true;\n\n // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723\n this.outer.get().scrollLeft += 1;\n this.outer.get().scrollLeft -= 1;\n\n // *\n\n this.outer\n .removeClass('lg-grab')\n .addClass('lg-grabbing');\n\n this.LGel.trigger(lGEvents.dragStart);\n }\n }\n }\n });\n\n $LG(window).on(`mousemove.lg.global${this.lgId}`, (e) => {\n if (isDraging && this.lgOpened) {\n isMoved = true;\n endCoords = {\n pageX: e.pageX,\n pageY: e.pageY,\n };\n this.touchMove(startCoords, endCoords);\n this.LGel.trigger(lGEvents.dragMove);\n }\n });\n\n $LG(window).on(`mouseup.lg.global${this.lgId}`, (event) => {\n if (!this.lgOpened) {\n return;\n }\n const target = $LG(event.target);\n if (isMoved) {\n isMoved = false;\n this.touchEnd(endCoords, startCoords, event);\n this.LGel.trigger(lGEvents.dragEnd);\n } else if (this.isPosterElement(target)) {\n this.LGel.trigger(lGEvents.posterClick);\n }\n\n // Prevent execution on click\n if (isDraging) {\n isDraging = false;\n this.outer.removeClass('lg-grabbing').addClass('lg-grab');\n }\n });\n }\n }\n\n triggerPosterClick(): void {\n this.$inner.on('click.lg', (event) => {\n if (\n !this.dragOrSwipeEnabled &&\n this.isPosterElement($LG(event.target))\n ) {\n this.LGel.trigger(lGEvents.posterClick);\n }\n });\n }\n\n manageSwipeClass(): void {\n let _touchNext = this.index + 1;\n let _touchPrev = this.index - 1;\n if (this.settings.loop && this.galleryItems.length > 2) {\n if (this.index === 0) {\n _touchPrev = this.galleryItems.length - 1;\n } else if (this.index === this.galleryItems.length - 1) {\n _touchNext = 0;\n }\n }\n\n this.outer.find('.lg-item').removeClass('lg-next-slide lg-prev-slide');\n if (_touchPrev > -1) {\n this.getSlideItem(_touchPrev).addClass('lg-prev-slide');\n }\n\n this.getSlideItem(_touchNext).addClass('lg-next-slide');\n }\n\n /**\n * Go to next slide\n * @param {Boolean} fromTouch - true if slide function called via touch event\n * @category lGPublicMethods\n * @example\n * const plugin = lightGallery();\n * plugin.goToNextSlide();\n * @see Demo\n */\n goToNextSlide(fromTouch?: boolean): void {\n let _loop = this.settings.loop;\n if (fromTouch && this.galleryItems.length < 3) {\n _loop = false;\n }\n\n if (!this.lgBusy) {\n if (this.index + 1 < this.galleryItems.length) {\n this.index++;\n this.LGel.trigger(lGEvents.beforeNextSlide, {\n index: this.index,\n });\n this.slide(this.index, !!fromTouch, false, 'next');\n } else {\n if (_loop) {\n this.index = 0;\n this.LGel.trigger(lGEvents.beforeNextSlide, {\n index: this.index,\n });\n this.slide(this.index, !!fromTouch, false, 'next');\n } else if (this.settings.slideEndAnimation && !fromTouch) {\n this.outer.addClass('lg-right-end');\n setTimeout(() => {\n this.outer.removeClass('lg-right-end');\n }, 400);\n }\n }\n }\n }\n\n /**\n * Go to previous slides\n * @param {Boolean} fromTouch - true if slide function called via touch event\n * @category lGPublicMethods\n * @example\n * const plugin = lightGallery({});\n * plugin.goToPrevSlide();\n * @see Demo\n *\n */\n goToPrevSlide(fromTouch?: boolean): void {\n let _loop = this.settings.loop;\n if (fromTouch && this.galleryItems.length < 3) {\n _loop = false;\n }\n\n if (!this.lgBusy) {\n if (this.index > 0) {\n this.index--;\n this.LGel.trigger(lGEvents.beforePrevSlide, {\n index: this.index,\n fromTouch,\n });\n this.slide(this.index, !!fromTouch, false, 'prev');\n } else {\n if (_loop) {\n this.index = this.galleryItems.length - 1;\n this.LGel.trigger(lGEvents.beforePrevSlide, {\n index: this.index,\n fromTouch,\n });\n this.slide(this.index, !!fromTouch, false, 'prev');\n } else if (this.settings.slideEndAnimation && !fromTouch) {\n this.outer.addClass('lg-left-end');\n setTimeout(() => {\n this.outer.removeClass('lg-left-end');\n }, 400);\n }\n }\n }\n }\n\n keyPress(): void {\n $LG(window).on(`keydown.lg.global${this.lgId}`, (e) => {\n if (\n this.lgOpened &&\n this.settings.escKey === true &&\n e.keyCode === 27\n ) {\n e.preventDefault();\n if (\n this.settings.allowMediaOverlap &&\n this.outer.hasClass('lg-can-toggle') &&\n this.outer.hasClass('lg-components-open')\n ) {\n this.outer.removeClass('lg-components-open');\n } else {\n this.closeGallery();\n }\n }\n if (this.lgOpened && this.galleryItems.length > 1) {\n if (e.keyCode === 37) {\n e.preventDefault();\n this.goToPrevSlide();\n }\n\n if (e.keyCode === 39) {\n e.preventDefault();\n this.goToNextSlide();\n }\n }\n });\n }\n\n arrow(): void {\n this.getElementById('lg-prev').on('click.lg', () => {\n this.goToPrevSlide();\n });\n this.getElementById('lg-next').on('click.lg', () => {\n this.goToNextSlide();\n });\n }\n\n arrowDisable(index: number): void {\n // Disable arrows if settings.hideControlOnEnd is true\n if (!this.settings.loop && this.settings.hideControlOnEnd) {\n const $prev = this.getElementById('lg-prev');\n const $next = this.getElementById('lg-next');\n if (index + 1 === this.galleryItems.length) {\n $next.attr('disabled', 'disabled').addClass('disabled');\n } else {\n $next.removeAttr('disabled').removeClass('disabled');\n }\n\n if (index === 0) {\n $prev.attr('disabled', 'disabled').addClass('disabled');\n } else {\n $prev.removeAttr('disabled').removeClass('disabled');\n }\n }\n }\n\n setTranslate(\n $el: lgQuery,\n xValue: number,\n yValue: number,\n scaleX = 1,\n scaleY = 1,\n ): void {\n $el.css(\n 'transform',\n 'translate3d(' +\n xValue +\n 'px, ' +\n yValue +\n 'px, 0px) scale3d(' +\n scaleX +\n ', ' +\n scaleY +\n ', 1)',\n );\n }\n\n mousewheel(): void {\n let lastCall = 0;\n this.outer.on('wheel.lg', (e) => {\n if (!e.deltaY || this.galleryItems.length < 2) {\n return;\n }\n e.preventDefault();\n const now = new Date().getTime();\n if (now - lastCall < 1000) {\n return;\n }\n lastCall = now;\n if (e.deltaY > 0) {\n this.goToNextSlide();\n } else if (e.deltaY < 0) {\n this.goToPrevSlide();\n }\n });\n }\n\n isSlideElement(target: lgQuery): boolean {\n return (\n target.hasClass('lg-outer') ||\n target.hasClass('lg-item') ||\n target.hasClass('lg-img-wrap') ||\n target.hasClass('lg-img-rotate')\n );\n }\n\n isPosterElement(target: lgQuery): boolean {\n const playButton = this.getSlideItem(this.index)\n .find('.lg-video-play-button')\n .get();\n return (\n target.hasClass('lg-video-poster') ||\n target.hasClass('lg-video-play-button') ||\n (playButton && playButton.contains(target.get()))\n );\n }\n\n /**\n * Maximize minimize inline gallery.\n * @category lGPublicMethods\n */\n toggleMaximize(): void {\n this.getElementById('lg-maximize').on('click.lg', () => {\n this.$container.toggleClass('lg-inline');\n this.refreshOnResize();\n });\n }\n\n invalidateItems(): void {\n for (let index = 0; index < this.items.length; index++) {\n const element = this.items[index];\n const $element = $LG(element);\n $element.off(`click.lgcustom-item-${$element.attr('data-lg-id')}`);\n }\n }\n\n trapFocus(): void {\n this.$container.get().focus({\n preventScroll: true,\n });\n $LG(window).on(`keydown.lg.global${this.lgId}`, (e) => {\n if (!this.lgOpened) {\n return;\n }\n\n const isTabPressed = e.key === 'Tab' || e.keyCode === 9;\n if (!isTabPressed) {\n return;\n }\n const focusableEls = utils.getFocusableElements(\n this.$container.get(),\n );\n const firstFocusableEl = focusableEls[0];\n const lastFocusableEl = focusableEls[focusableEls.length - 1];\n\n if (e.shiftKey) {\n if (document.activeElement === firstFocusableEl) {\n (lastFocusableEl as HTMLElement).focus();\n e.preventDefault();\n }\n } else {\n if (document.activeElement === lastFocusableEl) {\n (firstFocusableEl as HTMLElement).focus();\n e.preventDefault();\n }\n }\n });\n }\n\n manageCloseGallery(): void {\n if (!this.settings.closable) return;\n let mousedown = false;\n this.getElementById('lg-close').on('click.lg', () => {\n this.closeGallery();\n });\n\n if (this.settings.closeOnTap) {\n // If you drag the slide and release outside gallery gets close on chrome\n // for preventing this check mousedown and mouseup happened on .lg-item or lg-outer\n this.outer.on('mousedown.lg', (e) => {\n const target = $LG(e.target);\n if (this.isSlideElement(target)) {\n mousedown = true;\n } else {\n mousedown = false;\n }\n });\n\n this.outer.on('mousemove.lg', () => {\n mousedown = false;\n });\n\n this.outer.on('mouseup.lg', (e) => {\n const target = $LG(e.target);\n if (this.isSlideElement(target) && mousedown) {\n if (!this.outer.hasClass('lg-dragging')) {\n this.closeGallery();\n }\n }\n });\n }\n }\n\n /**\n * Close lightGallery if it is opened.\n *\n * @description If closable is false in the settings, you need to pass true via closeGallery method to force close gallery\n * @return returns the estimated time to close gallery completely including the close animation duration\n * @category lGPublicMethods\n * @example\n * const plugin = lightGallery();\n * plugin.closeGallery();\n *\n */\n closeGallery(force?: boolean): number {\n if (!this.lgOpened || (!this.settings.closable && !force)) {\n return 0;\n }\n this.LGel.trigger(lGEvents.beforeClose);\n\n if (this.settings.resetScrollPosition && !this.settings.hideScrollbar) {\n $LG(window).scrollTop(this.prevScrollTop);\n }\n\n const currentItem = this.items[this.index];\n let transform: string | undefined;\n if (this.zoomFromOrigin && currentItem) {\n const { top, bottom } = this.mediaContainerPosition;\n const { __slideVideoInfo, poster } = this.galleryItems[this.index];\n const imageSize = utils.getSize(\n currentItem,\n this.outer,\n top + bottom,\n __slideVideoInfo && poster && this.settings.videoMaxSize,\n );\n transform = utils.getTransform(\n currentItem,\n this.outer,\n top,\n bottom,\n imageSize,\n );\n }\n if (this.zoomFromOrigin && transform) {\n this.outer.addClass('lg-closing lg-zoom-from-image');\n this.getSlideItem(this.index)\n .addClass('lg-start-end-progress')\n .css(\n 'transition-duration',\n this.settings.startAnimationDuration + 'ms',\n )\n .css('transform', transform);\n } else {\n this.outer.addClass('lg-hide-items');\n // lg-zoom-from-image is used for setting the opacity to 1 if zoomFromOrigin is true\n // If the closing item doesn't have the lg-size attribute, remove this class to avoid the closing css conflicts\n this.outer.removeClass('lg-zoom-from-image');\n }\n\n // Unbind all events added by lightGallery\n // @todo\n //this.$el.off('.lg.tm');\n\n this.destroyModules();\n\n this.lGalleryOn = false;\n this.isDummyImageRemoved = false;\n this.zoomFromOrigin = this.settings.zoomFromOrigin;\n\n clearTimeout(this.hideBarTimeout);\n this.hideBarTimeout = false;\n $LG('html').removeClass('lg-on');\n\n this.outer.removeClass('lg-visible lg-components-open');\n\n // Resetting opacity to 0 isd required as vertical swipe to close function adds inline opacity.\n this.$backdrop.removeClass('in').css('opacity', 0);\n\n const removeTimeout =\n this.zoomFromOrigin && transform\n ? Math.max(\n this.settings.startAnimationDuration,\n this.settings.backdropDuration,\n )\n : this.settings.backdropDuration;\n this.$container.removeClass('lg-show-in');\n\n // Once the closign animation is completed and gallery is invisible\n setTimeout(() => {\n if (this.zoomFromOrigin && transform) {\n this.outer.removeClass('lg-zoom-from-image');\n }\n this.$container.removeClass('lg-show');\n\n // Reset scrollbar\n this.resetScrollBar();\n\n // Need to remove inline opacity as it is used in the stylesheet as well\n this.$backdrop\n .removeAttr('style')\n .css(\n 'transition-duration',\n this.settings.backdropDuration + 'ms',\n );\n\n this.outer.removeClass(`lg-closing ${this.settings.startClass}`);\n\n this.getSlideItem(this.index).removeClass('lg-start-end-progress');\n this.$inner.empty();\n if (this.lgOpened) {\n this.LGel.trigger(lGEvents.afterClose, {\n instance: this,\n });\n }\n if (this.$container.get()) {\n this.$container.get().blur();\n }\n\n this.lgOpened = false;\n }, removeTimeout + 100);\n return removeTimeout + 100;\n }\n\n initModules(): void {\n this.plugins.forEach((module) => {\n try {\n module.init();\n } catch (err) {\n console.warn(\n `lightGallery:- make sure lightGallery module is properly initiated`,\n );\n }\n });\n }\n\n destroyModules(destroy?: true): void {\n this.plugins.forEach((module) => {\n try {\n if (destroy) {\n module.destroy();\n } else {\n module.closeGallery && module.closeGallery();\n }\n } catch (err) {\n console.warn(\n `lightGallery:- make sure lightGallery module is properly destroyed`,\n );\n }\n });\n }\n\n /**\n * Refresh lightGallery with new set of children.\n *\n * @description This is useful to update the gallery when the child elements are changed without calling destroy method.\n *\n * If you are using dynamic mode, you can pass the modified array of dynamicEl as the first parameter to refresh the dynamic gallery\n * @see Demo\n * @category lGPublicMethods\n * @example\n * const plugin = lightGallery();\n * // Delete or add children, then call\n * plugin.refresh();\n *\n */\n refresh(galleryItems?: GalleryItem[]): void {\n if (!this.settings.dynamic) {\n this.invalidateItems();\n }\n if (galleryItems) {\n this.galleryItems = galleryItems;\n } else {\n this.galleryItems = this.getItems();\n }\n this.updateControls();\n this.openGalleryOnItemClick();\n this.LGel.trigger(lGEvents.updateSlides);\n }\n\n updateControls(): void {\n this.addSlideVideoInfo(this.galleryItems);\n this.updateCounterTotal();\n this.manageSingleSlideClassName();\n }\n\n private destroyGallery(): void {\n this.destroyModules(true);\n if (!this.settings.dynamic) {\n this.invalidateItems();\n }\n $LG(window).off(`.lg.global${this.lgId}`);\n this.LGel.off('.lg');\n this.$container.remove();\n }\n\n /**\n * Destroy lightGallery.\n * Destroy lightGallery and its plugin instances completely\n *\n * @description This method also calls CloseGallery function internally. Returns the time takes to completely close and destroy the instance.\n * In case if you want to re-initialize lightGallery right after destroying it, initialize it only once the destroy process is completed.\n * You can use refresh method most of the times.\n * @category lGPublicMethods\n * @example\n * const plugin = lightGallery();\n * plugin.destroy();\n *\n */\n destroy(): number {\n const closeTimeout = this.closeGallery(true);\n if (closeTimeout) {\n setTimeout(this.destroyGallery.bind(this), closeTimeout);\n } else {\n this.destroyGallery();\n }\n return closeTimeout;\n }\n}\n","import { LightGallerySettings } from './lg-settings';\nimport { LightGallery } from './lightgallery';\n\nfunction lightGallery(\n el: HTMLElement,\n options?: LightGallerySettings,\n): LightGallery {\n return new LightGallery(el, options);\n}\nexport default lightGallery;\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/assets/lightGallery/lightgallery.min.js b/assets/lightGallery/lightgallery.min.js new file mode 100644 index 0000000..16c4a50 --- /dev/null +++ b/assets/lightGallery/lightgallery.min.js @@ -0,0 +1,8 @@ +/** + * lightgallery | 2.9.0 | October 1st 2025 + * http://www.lightgalleryjs.com/ + * Copyright (c) 2020 Sachin Neravath; + * @license GPLv3 + */ + +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).lightGallery=e()}(this,(function(){"use strict";var t=function(){return(t=Object.assign||function(t){for(var e,i=1,s=arguments.length;i";e.append(s)}else e.html(t)}))},E=function(t,e,i,s){void 0===i&&(i=0);var n=x(t).attr("data-lg-size")||s;if(n){var o=n.split(",");if(o[1])for(var r=window.innerWidth,l=0;lr){n=a;break}l===o.length-1&&(n=a)}var d=n.split("-"),g=parseInt(d[0],10),h=parseInt(d[1],10),c=e.width(),u=e.height()-i,m=Math.min(c,g),p=Math.min(u,h),f=Math.min(m/g,p/h);return{width:g*f,height:h*f}}},O=function(t,e,i,s,n){if(n){var o=x(t).find("img").first();if(o.get()){var r=e.get().getBoundingClientRect(),l=r.width,a=e.height()-(i+s),d=o.width(),g=o.height(),h=o.style(),c=(l-d)/2-o.offset().left+(parseFloat(h.paddingLeft)||0)+(parseFloat(h.borderLeft)||0)+x(window).scrollLeft()+r.left,u=(a-g)/2-o.offset().top+(parseFloat(h.paddingTop)||0)+(parseFloat(h.borderTop)||0)+x(window).scrollTop()+i;return"translate3d("+(c*=-1)+"px, "+(u*=-1)+"px, 0) scale3d("+d/n.width+", "+g/n.height+", 1)"}}},L=function(t,e,i,s,n,o){return'
\n \n
'},D=function(t,e,i,s,n,o){var r="',l="";o&&(l=("string"==typeof o?JSON.parse(o):o).map((function(t){var e="";return Object.keys(t).forEach((function(i){e+=" "+i+'="'+t[i]+'"'})),""})));return""+l+r},z=function(t){for(var e=[],i=[],s="",n=0;nr){s=i[l];break}return s},M=function(t){return!!t&&(!!t.complete&&0!==t.naturalWidth)},G=function(t,e,i,s,n){var o="";o=n&&n.youtube?"lg-has-youtube":n&&n.vimeo?"lg-has-vimeo":"lg-has-html5";var r=e;return"string"!=typeof e&&(r=e.outerHTML),'
\n
\n \n '+s+'\n \n \n \n \n \n \n \n
\n '+r+'\n \n
'},k=function(t){var e=t.querySelectorAll('a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])');return[].filter.call(e,(function(t){var e=window.getComputedStyle(t);return"none"!==e.display&&"hidden"!==e.visibility}))},A=function(t,e,i,s){var n=[],o=function(){for(var t=0,e=0,i=arguments.length;e-1&&(d=a),d&&(e[d]=l.value)}}var g=x(t),h=g.find("img").first().attr("alt"),c=g.attr("title"),u=s?g.attr(s):g.find("img").first().attr("src");e.thumb=u,i&&!e.subHtml&&(e.subHtml=c||h||""),e.alt=h||c||"",n.push(e)})),n},B=function(){return/iPhone|iPad|iPod|Android/i.test(navigator.userAgent)},P=function(t,e,i){if(!t)return e?{html5:!0}:void console.error("lightGallery :- data-src is not provided on slide item "+(i+1)+". Please make sure the selector property is properly configured. More info - https://www.lightgalleryjs.com/demos/html-markup/");var s=t.match(/\/\/(?:www\.)?youtu(?:\.be|be\.com|be-nocookie\.com)\/(?:watch\?v=|embed\/)?([a-z0-9\-\_\%]+)([\&|?][\S]*)*/i),n=t.match(/\/\/(?:www\.)?(?:player\.)?vimeo.com\/(?:video\/)?([0-9a-z\-_]+)(.*)?/i),o=t.match(/https?:\/\/(.+)?(wistia\.com|wi\.st)\/(medias|embed)\/([0-9a-z\-_]+)(.*)/);return s?{youtube:s}:n?{vimeo:n}:o?{wistia:o}:void 0},F=0,H=function(){function w(t,e){if(this.lgOpened=!1,this.index=0,this.plugins=[],this.lGalleryOn=!1,this.lgBusy=!1,this.currentItemsInDom=[],this.prevScrollTop=0,this.bodyPaddingRight=0,this.isDummyImageRemoved=!1,this.dragOrSwipeEnabled=!1,this.mediaContainerPosition={top:0,bottom:0},!t)return this;if(F++,this.lgId=F,this.el=t,this.LGel=x(t),this.generateSettings(e),this.buildModules(),this.settings.dynamic&&void 0!==this.settings.dynamicEl&&!Array.isArray(this.settings.dynamicEl))throw"When using dynamic mode, you must also define dynamicEl as an Array.";return this.galleryItems=this.getItems(),this.normalizeSettings(),this.init(),this.validateLicense(),this}return w.prototype.generateSettings=function(e){if(this.settings=t(t({},C),e),this.settings.isMobile&&"function"==typeof this.settings.isMobile?this.settings.isMobile():B()){var i=t(t({},this.settings.mobileSettings),this.settings.mobileSettings);this.settings=t(t({},this.settings),i)}},w.prototype.normalizeSettings=function(){if(this.settings.slideEndAnimation&&(this.settings.hideControlOnEnd=!1),this.settings.closable||(this.settings.swipeToClose=!1),this.zoomFromOrigin=this.settings.zoomFromOrigin,this.settings.dynamic&&(this.zoomFromOrigin=!1),this.settings.container){var t=this.settings.container;if("function"==typeof t)this.settings.container=t();else if("string"==typeof t){var e=document.querySelector(t);this.settings.container=null!=e?e:document.body}}else this.settings.container=document.body;this.settings.preload=Math.min(this.settings.preload,this.galleryItems.length)},w.prototype.init=function(){var t=this;this.addSlideVideoInfo(this.galleryItems),this.buildStructure(),this.LGel.trigger(i,{instance:this}),this.settings.keyPress&&this.keyPress(),setTimeout((function(){t.enableDrag(),t.enableSwipe(),t.triggerPosterClick()}),50),this.arrow(),this.settings.mousewheel&&this.mousewheel(),this.settings.dynamic||this.openGalleryOnItemClick()},w.prototype.openGalleryOnItemClick=function(){for(var t=this,e=function(e){var s=i.items[e],n=x(s),o=I.generateUUID();n.attr("data-lg-id",o).on("click.lgcustom-item-"+o,(function(i){i.preventDefault();var n=t.settings.index||e;t.openGallery(n,s)}))},i=this,s=0;s '+this.settings.prevHtml+' \n "),".lg-item"!==this.settings.appendSubHtmlTo&&(i='
');var s="";this.settings.allowMediaOverlap&&(s+="lg-media-overlap ");var n=this.settings.ariaLabelledby?'aria-labelledby="'+this.settings.ariaLabelledby+'"':"",o=this.settings.ariaDescribedby?'aria-describedby="'+this.settings.ariaDescribedby+'"':"",r="lg-container "+this.settings.addClass+" "+(document.body!==this.settings.container?"lg-inline":""),l=this.settings.closable&&this.settings.showCloseIcon?'':"",a=this.settings.showMaximizeIcon?'':"",d='\n \n ";x(this.settings.container).append(d),document.body!==this.settings.container&&x(this.settings.container).css("position","relative"),this.outer=this.getElementById("lg-outer"),this.$lgComponents=this.getElementById("lg-components"),this.$backdrop=this.getElementById("lg-backdrop"),this.$container=this.getElementById("lg-container"),this.$inner=this.getElementById("lg-inner"),this.$content=this.getElementById("lg-content"),this.$toolbar=this.getElementById("lg-toolbar"),this.$backdrop.css("transition-duration",this.settings.backdropDuration+"ms");var g=this.settings.mode+" ";this.manageSingleSlideClassName(),this.settings.enableDrag&&(g+="lg-grab "),this.outer.addClass(g),this.$inner.css("transition-timing-function",this.settings.easing),this.$inner.css("transition-duration",this.settings.speed+"ms"),this.settings.download&&this.$toolbar.append(''),this.counter(),x(window).on("resize.lg.global"+this.lgId+" orientationchange.lg.global"+this.lgId,(function(){t.refreshOnResize()})),this.hideBars(),this.manageCloseGallery(),this.toggleMaximize(),this.initModules()}},w.prototype.refreshOnResize=function(){if(this.lgOpened){var t=this.galleryItems[this.index].__slideVideoInfo;this.mediaContainerPosition=this.getMediaContainerPosition();var e=this.mediaContainerPosition,i=e.top,s=e.bottom;if(this.currentImageSize=E(this.items[this.index],this.outer,i+s,t&&this.settings.videoMaxSize),t&&this.resizeVideoSlide(this.index,this.currentImageSize),this.zoomFromOrigin&&!this.isDummyImageRemoved){var o=this.getDummyImgStyles(this.currentImageSize);this.outer.find(".lg-current .lg-dummy-img").first().attr("style",o)}this.LGel.trigger(n)}},w.prototype.resizeVideoSlide=function(t,e){var i=this.getVideoContStyle(e);this.getSlideItem(t).find(".lg-video-cont").attr("style",i)},w.prototype.updateSlides=function(t,e){if(this.index>t.length-1&&(this.index=t.length-1),1===t.length&&(this.index=0),t.length){var i=this.galleryItems[e].src;this.galleryItems=t,this.updateControls(),this.$inner.empty(),this.currentItemsInDom=[];var s=0;this.galleryItems.some((function(t,e){return t.src===i&&(s=e,!0)})),this.currentItemsInDom=this.organizeSlideItems(s,-1),this.loadContent(s,!0),this.getSlideItem(s).addClass("lg-current"),this.index=s,this.updateCurrentCounter(s),this.LGel.trigger(o)}else this.closeGallery()},w.prototype.getItems=function(){if(this.items=[],this.settings.dynamic)return this.settings.dynamicEl||[];if("this"===this.settings.selector)this.items.push(this.el);else if(this.settings.selector)if("string"==typeof this.settings.selector)if(this.settings.selectWithin){var t=x(this.settings.selectWithin);this.items=t.find(this.settings.selector).get()}else this.items=this.el.querySelectorAll(this.settings.selector);else this.items=this.settings.selector;else this.items=this.el.children;return A(this.items,this.settings.extraProps,this.settings.getCaptionFromTitleOrAlt,this.settings.exThumbImage)},w.prototype.shouldHideScrollbar=function(){return this.settings.hideScrollbar&&document.body===this.settings.container},w.prototype.hideScrollbar=function(){if(this.shouldHideScrollbar()){this.bodyPaddingRight=parseFloat(x("body").style().paddingRight);var t=document.documentElement.getBoundingClientRect(),e=window.innerWidth-t.width;x(document.body).css("padding-right",e+this.bodyPaddingRight+"px"),x(document.body).addClass("lg-overlay-open")}},w.prototype.resetScrollBar=function(){this.shouldHideScrollbar()&&(x(document.body).css("padding-right",this.bodyPaddingRight+"px"),x(document.body).removeClass("lg-overlay-open"))},w.prototype.openGallery=function(t,e){var i=this;if(void 0===t&&(t=this.settings.index),!this.lgOpened){this.lgOpened=!0,this.outer.removeClass("lg-hide-items"),this.hideScrollbar(),this.$container.addClass("lg-show");var s=this.getItemsToBeInsertedToDom(t,t);this.currentItemsInDom=s;var n="";s.forEach((function(t){n=n+'
'})),this.$inner.append(n),this.addHtml(t);var o="";this.mediaContainerPosition=this.getMediaContainerPosition();var r=this.mediaContainerPosition,d=r.top,g=r.bottom;this.settings.allowMediaOverlap||this.setMediaContainerPosition(d,g);var h=this.galleryItems[t].__slideVideoInfo;this.zoomFromOrigin&&e&&(this.currentImageSize=E(e,this.outer,d+g,h&&this.settings.videoMaxSize),o=O(e,this.outer,d,g,this.currentImageSize)),this.zoomFromOrigin&&o||(this.outer.addClass(this.settings.startClass),this.getSlideItem(t).removeClass("lg-complete"));var c=this.settings.zoomFromOrigin?100:this.settings.backdropDuration;setTimeout((function(){i.outer.addClass("lg-components-open")}),c),this.index=t,this.LGel.trigger(l),this.getSlideItem(t).addClass("lg-current"),this.lGalleryOn=!1,this.prevScrollTop=x(window).scrollTop(),setTimeout((function(){if(i.zoomFromOrigin&&o){var e=i.getSlideItem(t);e.css("transform",o),setTimeout((function(){e.addClass("lg-start-progress lg-start-end-progress").css("transition-duration",i.settings.startAnimationDuration+"ms"),i.outer.addClass("lg-zoom-from-image")})),setTimeout((function(){e.css("transform","translate3d(0, 0, 0)")}),100)}setTimeout((function(){i.$backdrop.addClass("in"),i.$container.addClass("lg-show-in")}),10),setTimeout((function(){i.settings.trapFocus&&document.body===i.settings.container&&i.trapFocus()}),i.settings.backdropDuration+50),i.zoomFromOrigin&&o||setTimeout((function(){i.outer.addClass("lg-visible")}),i.settings.backdropDuration),i.slide(t,!1,!1,!1),i.LGel.trigger(a)})),document.body===this.settings.container&&x("html").addClass("lg-on")}},w.prototype.getMediaContainerPosition=function(){if(this.settings.allowMediaOverlap)return{top:0,bottom:0};var t=this.$toolbar.get().clientHeight||0,e=this.outer.find(".lg-components .lg-sub-html").get(),i=this.settings.defaultCaptionHeight||e&&e.clientHeight||0,s=this.outer.find(".lg-thumb-outer").get();return{top:t,bottom:(s?s.clientHeight:0)+i}},w.prototype.setMediaContainerPosition=function(t,e){void 0===t&&(t=0),void 0===e&&(e=0),this.$content.css("top",t+"px").css("bottom",e+"px")},w.prototype.hideBars=function(){var t=this;setTimeout((function(){t.outer.removeClass("lg-hide-items"),t.settings.hideBarsDelay>0&&(t.outer.on("mousemove.lg click.lg touchstart.lg",(function(){t.outer.removeClass("lg-hide-items"),clearTimeout(t.hideBarTimeout),t.hideBarTimeout=setTimeout((function(){t.outer.addClass("lg-hide-items")}),t.settings.hideBarsDelay)})),t.outer.trigger("mousemove.lg"))}),this.settings.showBarsAfter)},w.prototype.initPictureFill=function(t){if(this.settings.supportLegacyBrowser)try{picturefill({elements:[t.get()]})}catch(t){console.warn("lightGallery :- If you want srcset or picture tag to be supported for older browser please include picturefil javascript library in your document.")}},w.prototype.counter=function(){if(this.settings.counter){var t='
\n '+(this.index+1)+' /\n '+this.galleryItems.length+"
";this.outer.find(this.settings.appendCounterTo).append(t)}},w.prototype.addHtml=function(t){var e,i;if(this.galleryItems[t].subHtmlUrl?i=this.galleryItems[t].subHtmlUrl:e=this.galleryItems[t].subHtml,!i)if(e){var s=e.substring(0,1);if("."===s||"#"===s)try{e=this.settings.subHtmlSelectorRelative&&!this.settings.dynamic?x(this.items).eq(t).find(e).first().html():x(e).first().html()}catch(t){console.warn('Error processing subHtml selector "'+e+'"'),e=""}}else e="";if(".lg-item"!==this.settings.appendSubHtmlTo)i?T(i,this.outer.find(".lg-sub-html"),"replace"):this.outer.find(".lg-sub-html").html(e);else{var n=x(this.getSlideItemId(t));i?T(i,n,"append"):n.append('
'+e+"
")}null!=e&&(""===e?this.outer.find(this.settings.appendSubHtmlTo).addClass("lg-empty-html"):this.outer.find(this.settings.appendSubHtmlTo).removeClass("lg-empty-html")),this.LGel.trigger(r,{index:t})},w.prototype.preload=function(t){for(var e=1;e<=this.settings.preload&&!(e>=this.galleryItems.length-t);e++)this.loadContent(t+e,!1);for(var i=1;i<=this.settings.preload&&!(t-i<0);i++)this.loadContent(t-i,!1)},w.prototype.getDummyImgStyles=function(t){return t?"width:"+t.width+"px;\n margin-left: -"+t.width/2+"px;\n margin-top: -"+t.height/2+"px;\n height:"+t.height+"px":""},w.prototype.getVideoContStyle=function(t){return t?"width:"+t.width+"px;\n height:"+t.height+"px":""},w.prototype.getDummyImageContent=function(t,e,i){var s;if(this.settings.dynamic||(s=x(this.items).eq(e)),s){var n=void 0;if(!(n=this.settings.exThumbImage?s.attr(this.settings.exThumbImage):s.find("img").first().attr("src")))return"";var o=this.getDummyImgStyles(this.currentImageSize),r=document.createElement("img");return r.alt=i||"",r.src=n,r.className="lg-dummy-img",r.style.cssText=o,t.addClass("lg-first-slide"),this.outer.addClass("lg-first-slide-loading"),r}return""},w.prototype.setImgMarkup=function(t,e,i){var s=this.galleryItems[i],n=s.alt,o=s.srcset,r=s.sizes,l=s.sources,a="",d=n?'alt="'+n+'"':"";a=this.isFirstSlideWithZoomAnimation()?this.getDummyImageContent(e,i,d):D(i,t,d,o,r,l);var g=document.createElement("picture");g.className="lg-img-wrap",x(g).append(a),e.prepend(g)},w.prototype.onSlideObjectLoad=function(t,e,i,s){var n=t.find(".lg-object").first();M(n.get())||e?i():(n.on("load.lg error.lg",(function(){i&&i()})),n.on("error.lg",(function(){s&&s()})))},w.prototype.onLgObjectLoad=function(t,e,i,s,n,o){var r=this;this.onSlideObjectLoad(t,o,(function(){r.triggerSlideItemLoad(t,e,i,s,n)}),(function(){t.addClass("lg-complete lg-complete_"),t.html(''+r.settings.strings.mediaLoadingFailed+"")}))},w.prototype.triggerSlideItemLoad=function(t,e,i,s,n){var o=this,r=this.galleryItems[e],l=n&&"video"===this.getSlideType(r)&&!r.poster?s:0;setTimeout((function(){t.addClass("lg-complete lg-complete_"),o.LGel.trigger(d,{index:e,delay:i||0,isFirstSlide:n})}),l)},w.prototype.isFirstSlideWithZoomAnimation=function(){return!(this.lGalleryOn||!this.zoomFromOrigin||!this.currentImageSize)},w.prototype.addSlideVideoInfo=function(t){var e=this;t.forEach((function(t,i){t.__slideVideoInfo=P(t.src,!!t.video,i),t.__slideVideoInfo&&e.settings.loadYouTubePoster&&!t.poster&&t.__slideVideoInfo.youtube&&(t.poster="//img.youtube.com/vi/"+t.__slideVideoInfo.youtube[1]+"/maxresdefault.jpg")}))},w.prototype.loadContent=function(t,i){var n=this,o=this.galleryItems[t],r=x(this.getSlideItemId(t)),l=o.poster,a=o.srcset,d=o.sizes,g=o.sources,h=o.src,c=o.video,u=c&&"string"==typeof c?JSON.parse(c):c;if(o.responsive){var m=o.responsive.split(",");h=z(m)||h}var p=o.__slideVideoInfo,f="",y=!!o.iframe,v=!this.lGalleryOn,b=0;if(v&&(b=this.zoomFromOrigin&&this.currentImageSize?this.settings.startAnimationDuration+10:this.settings.backdropDuration+10),!r.hasClass("lg-loaded")){if(p){var C=this.mediaContainerPosition,I=C.top,w=C.bottom,S=E(this.items[t],this.outer,I+w,p&&this.settings.videoMaxSize);f=this.getVideoContStyle(S)}if(y){var T=L(this.settings.iframeWidth,this.settings.iframeHeight,this.settings.iframeMaxWidth,this.settings.iframeMaxHeight,h,o.iframeTitle);r.prepend(T)}else if(l){var O="";v&&this.zoomFromOrigin&&this.currentImageSize&&(O=this.getDummyImageContent(r,t,""));T=G(l,O||"",f,this.settings.strings.playVideo,p);r.prepend(T)}else if(p){T='
';r.prepend(T)}else if(this.setImgMarkup(h,r,t),a||g){var M=r.find(".lg-object");this.initPictureFill(M)}(l||p)&&this.LGel.trigger(s,{index:t,src:h,html5Video:u,hasPoster:!!l}),this.LGel.trigger(e,{index:t}),this.lGalleryOn&&".lg-item"===this.settings.appendSubHtmlTo&&this.addHtml(t)}var k=0;b&&!x(document.body).hasClass("lg-from-hash")&&(k=b),this.isFirstSlideWithZoomAnimation()&&(setTimeout((function(){r.removeClass("lg-start-end-progress lg-start-progress").removeAttr("style")}),this.settings.startAnimationDuration+100),r.hasClass("lg-loaded")||setTimeout((function(){if("image"===n.getSlideType(o)){var e=o.alt,i=e?'alt="'+e+'"':"";if(r.find(".lg-img-wrap").append(D(t,h,i,a,d,o.sources)),a||g){var s=r.find(".lg-object");n.initPictureFill(s)}}("image"===n.getSlideType(o)||"video"===n.getSlideType(o)&&l)&&(n.onLgObjectLoad(r,t,b,k,!0,!1),n.onSlideObjectLoad(r,!(!p||!p.html5||l),(function(){n.loadContentOnFirstSlideLoad(t,r,k)}),(function(){n.loadContentOnFirstSlideLoad(t,r,k)})))}),this.settings.startAnimationDuration+100)),r.addClass("lg-loaded"),this.isFirstSlideWithZoomAnimation()&&("video"!==this.getSlideType(o)||l)||this.onLgObjectLoad(r,t,b,k,v,!(!p||!p.html5||l)),this.zoomFromOrigin&&this.currentImageSize||!r.hasClass("lg-complete_")||this.lGalleryOn||setTimeout((function(){r.addClass("lg-complete")}),this.settings.backdropDuration),this.lGalleryOn=!0,!0===i&&(r.hasClass("lg-complete_")?this.preload(t):r.find(".lg-object").first().on("load.lg error.lg",(function(){n.preload(t)})))},w.prototype.loadContentOnFirstSlideLoad=function(t,e,i){var s=this;setTimeout((function(){e.find(".lg-dummy-img").remove(),e.removeClass("lg-first-slide"),s.outer.removeClass("lg-first-slide-loading"),s.isDummyImageRemoved=!0,s.preload(t)}),i+300)},w.prototype.getItemsToBeInsertedToDom=function(t,e,i){var s=this;void 0===i&&(i=0);var n=[],o=Math.max(i,3);o=Math.min(o,this.galleryItems.length);var r="lg-item-"+this.lgId+"-"+e;if(this.galleryItems.length<=3)return this.galleryItems.forEach((function(t,e){n.push("lg-item-"+s.lgId+"-"+e)})),n;if(t<(this.galleryItems.length-1)/2){for(var l=t;l>t-o/2&&l>=0;l--)n.push("lg-item-"+this.lgId+"-"+l);var a=n.length;for(l=0;l')})),this.currentItemsInDom.forEach((function(t){-1===s.indexOf(t)&&x("#"+t).remove()})),s},w.prototype.getPreviousSlideIndex=function(){var t=0;try{var e=this.outer.find(".lg-current").first().attr("id");t=parseInt(e.split("-")[3])||0}catch(e){t=0}return t},w.prototype.setDownloadValue=function(t){if(this.settings.download){var e=this.galleryItems[t];if(!1===e.downloadUrl||"false"===e.downloadUrl)this.outer.addClass("lg-hide-download");else{var i=this.getElementById("lg-download");this.outer.removeClass("lg-hide-download"),i.attr("href",e.downloadUrl||e.src),e.download&&i.attr("download",e.download)}}},w.prototype.makeSlideAnimation=function(t,e,i){var s=this;this.lGalleryOn&&i.addClass("lg-slide-progress"),setTimeout((function(){s.outer.addClass("lg-no-trans"),s.outer.find(".lg-item").removeClass("lg-prev-slide lg-next-slide"),"prev"===t?(e.addClass("lg-prev-slide"),i.addClass("lg-next-slide")):(e.addClass("lg-next-slide"),i.addClass("lg-prev-slide")),setTimeout((function(){s.outer.find(".lg-item").removeClass("lg-current"),e.addClass("lg-current"),s.outer.removeClass("lg-no-trans")}),50)}),this.lGalleryOn?this.settings.slideDelay:0)},w.prototype.slide=function(t,e,i,s){var n=this,o=this.getPreviousSlideIndex();if(this.currentItemsInDom=this.organizeSlideItems(t,o),!this.lGalleryOn||o!==t){var r=this.galleryItems.length;if(!this.lgBusy){this.settings.counter&&this.updateCurrentCounter(t);var l=this.getSlideItem(t),a=this.getSlideItem(o),d=this.galleryItems[t],c=d.__slideVideoInfo;if(this.outer.attr("data-lg-slide-type",this.getSlideType(d)),this.setDownloadValue(t),c){var u=this.mediaContainerPosition,m=u.top,p=u.bottom,f=E(this.items[t],this.outer,m+p,c&&this.settings.videoMaxSize);this.resizeVideoSlide(t,f)}if(this.LGel.trigger(g,{prevIndex:o,index:t,fromTouch:!!e,fromThumb:!!i}),this.lgBusy=!0,clearTimeout(this.hideBarTimeout),this.arrowDisable(t),s||(to&&(s="next")),e){this.outer.find(".lg-item").removeClass("lg-prev-slide lg-current lg-next-slide");var y=void 0,v=void 0;r>2?(y=t-1,v=t+1,(0===t&&o===r-1||t===r-1&&0===o)&&(v=0,y=r-1)):(y=0,v=1),"prev"===s?this.getSlideItem(v).addClass("lg-next-slide"):this.getSlideItem(y).addClass("lg-prev-slide"),l.addClass("lg-current")}else this.makeSlideAnimation(s,l,a);this.lGalleryOn?setTimeout((function(){n.loadContent(t,!0),".lg-item"!==n.settings.appendSubHtmlTo&&n.addHtml(t)}),this.settings.speed+50+(e?0:this.settings.slideDelay)):this.loadContent(t,!0),setTimeout((function(){n.lgBusy=!1,a.removeClass("lg-slide-progress"),n.LGel.trigger(h,{prevIndex:o,index:t,fromTouch:e,fromThumb:i})}),(this.lGalleryOn?this.settings.speed+100:100)+(e?0:this.settings.slideDelay))}this.index=t}},w.prototype.updateCurrentCounter=function(t){this.getElementById("lg-counter-current").html(t+1+"")},w.prototype.updateCounterTotal=function(){this.getElementById("lg-counter-all").html(this.galleryItems.length+"")},w.prototype.getSlideType=function(t){return t.__slideVideoInfo?"video":t.iframe?"iframe":"image"},w.prototype.touchMove=function(t,e,i){var s=e.pageX-t.pageX,n=e.pageY-t.pageY,o=!1;if(this.swipeDirection?o=!0:Math.abs(s)>15?(this.swipeDirection="horizontal",o=!0):Math.abs(n)>15&&(this.swipeDirection="vertical",o=!0),o){var r=this.getSlideItem(this.index);if("horizontal"===this.swipeDirection){null==i||i.preventDefault(),this.outer.addClass("lg-dragging"),this.setTranslate(r,s,0);var l=r.get().offsetWidth,a=15*l/100-Math.abs(10*s/100);this.setTranslate(this.outer.find(".lg-prev-slide").first(),-l+s-a,0),this.setTranslate(this.outer.find(".lg-next-slide").first(),l+s+a,0)}else if("vertical"===this.swipeDirection&&this.settings.swipeToClose){null==i||i.preventDefault(),this.$container.addClass("lg-dragging-vertical");var d=1-Math.abs(n)/window.innerHeight;this.$backdrop.css("opacity",d);var g=1-Math.abs(n)/(2*window.innerWidth);this.setTranslate(r,0,n,g,g),Math.abs(n)>100&&this.outer.addClass("lg-hide-items").removeClass("lg-components-open")}}},w.prototype.touchEnd=function(t,e,i){var s,n=this;"lg-slide"!==this.settings.mode&&this.outer.addClass("lg-slide"),setTimeout((function(){n.$container.removeClass("lg-dragging-vertical"),n.outer.removeClass("lg-dragging lg-hide-items").addClass("lg-components-open");var o=!0;if("horizontal"===n.swipeDirection){s=t.pageX-e.pageX;var r=Math.abs(t.pageX-e.pageX);s<0&&r>n.settings.swipeThreshold?(n.goToNextSlide(!0),o=!1):s>0&&r>n.settings.swipeThreshold&&(n.goToPrevSlide(!0),o=!1)}else if("vertical"===n.swipeDirection){if(s=Math.abs(t.pageY-e.pageY),n.settings.closable&&n.settings.swipeToClose&&s>100)return void n.closeGallery();n.$backdrop.css("opacity",1)}if(n.outer.find(".lg-item").removeAttr("style"),o&&Math.abs(t.pageX-e.pageX)<5){var l=x(i.target);n.isPosterElement(l)&&n.LGel.trigger(c)}n.swipeDirection=void 0})),setTimeout((function(){n.outer.hasClass("lg-dragging")||"lg-slide"===n.settings.mode||n.outer.removeClass("lg-slide")}),this.settings.speed+100)},w.prototype.enableSwipe=function(){var t=this,e={},i={},s=!1,n=!1;this.settings.enableSwipe&&(this.$inner.on("touchstart.lg",(function(i){t.dragOrSwipeEnabled=!0;var s=t.getSlideItem(t.index);!x(i.target).hasClass("lg-item")&&!s.get().contains(i.target)||t.outer.hasClass("lg-zoomed")||t.lgBusy||1!==i.touches.length||(n=!0,t.touchAction="swipe",t.manageSwipeClass(),e={pageX:i.touches[0].pageX,pageY:i.touches[0].pageY})})),this.$inner.on("touchmove.lg",(function(o){n&&"swipe"===t.touchAction&&1===o.touches.length&&(i={pageX:o.touches[0].pageX,pageY:o.touches[0].pageY},t.touchMove(e,i,o),s=!0)})),this.$inner.on("touchend.lg",(function(o){if("swipe"===t.touchAction){if(s)s=!1,t.touchEnd(i,e,o);else if(n){var r=x(o.target);t.isPosterElement(r)&&t.LGel.trigger(c)}t.touchAction=void 0,n=!1}})))},w.prototype.enableDrag=function(){var t=this,e={},i={},s=!1,n=!1;this.settings.enableDrag&&(this.outer.on("mousedown.lg",(function(i){t.dragOrSwipeEnabled=!0;var n=t.getSlideItem(t.index);(x(i.target).hasClass("lg-item")||n.get().contains(i.target))&&(t.outer.hasClass("lg-zoomed")||t.lgBusy||(i.preventDefault(),t.lgBusy||(t.manageSwipeClass(),e={pageX:i.pageX,pageY:i.pageY},s=!0,t.outer.get().scrollLeft+=1,t.outer.get().scrollLeft-=1,t.outer.removeClass("lg-grab").addClass("lg-grabbing"),t.LGel.trigger(u))))})),x(window).on("mousemove.lg.global"+this.lgId,(function(o){s&&t.lgOpened&&(n=!0,i={pageX:o.pageX,pageY:o.pageY},t.touchMove(e,i),t.LGel.trigger(m))})),x(window).on("mouseup.lg.global"+this.lgId,(function(o){if(t.lgOpened){var r=x(o.target);n?(n=!1,t.touchEnd(i,e,o),t.LGel.trigger(p)):t.isPosterElement(r)&&t.LGel.trigger(c),s&&(s=!1,t.outer.removeClass("lg-grabbing").addClass("lg-grab"))}})))},w.prototype.triggerPosterClick=function(){var t=this;this.$inner.on("click.lg",(function(e){!t.dragOrSwipeEnabled&&t.isPosterElement(x(e.target))&&t.LGel.trigger(c)}))},w.prototype.manageSwipeClass=function(){var t=this.index+1,e=this.index-1;this.settings.loop&&this.galleryItems.length>2&&(0===this.index?e=this.galleryItems.length-1:this.index===this.galleryItems.length-1&&(t=0)),this.outer.find(".lg-item").removeClass("lg-next-slide lg-prev-slide"),e>-1&&this.getSlideItem(e).addClass("lg-prev-slide"),this.getSlideItem(t).addClass("lg-next-slide")},w.prototype.goToNextSlide=function(t){var e=this,i=this.settings.loop;t&&this.galleryItems.length<3&&(i=!1),this.lgBusy||(this.index+10?(this.index--,this.LGel.trigger(y,{index:this.index,fromTouch:t}),this.slide(this.index,!!t,!1,"prev")):i?(this.index=this.galleryItems.length-1,this.LGel.trigger(y,{index:this.index,fromTouch:t}),this.slide(this.index,!!t,!1,"prev")):this.settings.slideEndAnimation&&!t&&(this.outer.addClass("lg-left-end"),setTimeout((function(){e.outer.removeClass("lg-left-end")}),400)))},w.prototype.keyPress=function(){var t=this;x(window).on("keydown.lg.global"+this.lgId,(function(e){t.lgOpened&&!0===t.settings.escKey&&27===e.keyCode&&(e.preventDefault(),t.settings.allowMediaOverlap&&t.outer.hasClass("lg-can-toggle")&&t.outer.hasClass("lg-components-open")?t.outer.removeClass("lg-components-open"):t.closeGallery()),t.lgOpened&&t.galleryItems.length>1&&(37===e.keyCode&&(e.preventDefault(),t.goToPrevSlide()),39===e.keyCode&&(e.preventDefault(),t.goToNextSlide()))}))},w.prototype.arrow=function(){var t=this;this.getElementById("lg-prev").on("click.lg",(function(){t.goToPrevSlide()})),this.getElementById("lg-next").on("click.lg",(function(){t.goToNextSlide()}))},w.prototype.arrowDisable=function(t){if(!this.settings.loop&&this.settings.hideControlOnEnd){var e=this.getElementById("lg-prev"),i=this.getElementById("lg-next");t+1===this.galleryItems.length?i.attr("disabled","disabled").addClass("disabled"):i.removeAttr("disabled").removeClass("disabled"),0===t?e.attr("disabled","disabled").addClass("disabled"):e.removeAttr("disabled").removeClass("disabled")}},w.prototype.setTranslate=function(t,e,i,s,n){void 0===s&&(s=1),void 0===n&&(n=1),t.css("transform","translate3d("+e+"px, "+i+"px, 0px) scale3d("+s+", "+n+", 1)")},w.prototype.mousewheel=function(){var t=this,e=0;this.outer.on("wheel.lg",(function(i){if(i.deltaY&&!(t.galleryItems.length<2)){i.preventDefault();var s=(new Date).getTime();s-e<1e3||(e=s,i.deltaY>0?t.goToNextSlide():i.deltaY<0&&t.goToPrevSlide())}}))},w.prototype.isSlideElement=function(t){return t.hasClass("lg-outer")||t.hasClass("lg-item")||t.hasClass("lg-img-wrap")||t.hasClass("lg-img-rotate")},w.prototype.isPosterElement=function(t){var e=this.getSlideItem(this.index).find(".lg-video-play-button").get();return t.hasClass("lg-video-poster")||t.hasClass("lg-video-play-button")||e&&e.contains(t.get())},w.prototype.toggleMaximize=function(){var t=this;this.getElementById("lg-maximize").on("click.lg",(function(){t.$container.toggleClass("lg-inline"),t.refreshOnResize()}))},w.prototype.invalidateItems=function(){for(var t=0;t" + htmlContent + ""; + element.append(contentDiv); + } + else { + element.html(htmlContent); + } + }); + }, + /** + * get possible width and height from the lgSize attribute. Used for ZoomFromOrigin option + */ + getSize: function (el, container, spacing, defaultLgSize) { + if (spacing === void 0) { spacing = 0; } + var LGel = $LG(el); + var lgSize = LGel.attr('data-lg-size') || defaultLgSize; + if (!lgSize) { + return; + } + var isResponsiveSizes = lgSize.split(','); + // if at-least two viewport sizes are available + if (isResponsiveSizes[1]) { + var wWidth = window.innerWidth; + for (var i = 0; i < isResponsiveSizes.length; i++) { + var size_1 = isResponsiveSizes[i]; + var responsiveWidth = parseInt(size_1.split('-')[2], 10); + if (responsiveWidth > wWidth) { + lgSize = size_1; + break; + } + // take last item as last option + if (i === isResponsiveSizes.length - 1) { + lgSize = size_1; + } + } + } + var size = lgSize.split('-'); + var width = parseInt(size[0], 10); + var height = parseInt(size[1], 10); + var cWidth = container.width(); + var cHeight = container.height() - spacing; + var maxWidth = Math.min(cWidth, width); + var maxHeight = Math.min(cHeight, height); + var ratio = Math.min(maxWidth / width, maxHeight / height); + return { width: width * ratio, height: height * ratio }; + }, + /** + * @desc Get transform value based on the imageSize. Used for ZoomFromOrigin option + * @param {jQuery Element} + * @returns {String} Transform CSS string + */ + getTransform: function (el, container, top, bottom, imageSize) { + if (!imageSize) { + return; + } + var LGel = $LG(el).find('img').first(); + if (!LGel.get()) { + return; + } + var containerRect = container.get().getBoundingClientRect(); + var wWidth = containerRect.width; + // using innerWidth to include mobile safari bottom bar + var wHeight = container.height() - (top + bottom); + var elWidth = LGel.width(); + var elHeight = LGel.height(); + var elStyle = LGel.style(); + var x = (wWidth - elWidth) / 2 - + LGel.offset().left + + (parseFloat(elStyle.paddingLeft) || 0) + + (parseFloat(elStyle.borderLeft) || 0) + + $LG(window).scrollLeft() + + containerRect.left; + var y = (wHeight - elHeight) / 2 - + LGel.offset().top + + (parseFloat(elStyle.paddingTop) || 0) + + (parseFloat(elStyle.borderTop) || 0) + + $LG(window).scrollTop() + + top; + var scX = elWidth / imageSize.width; + var scY = elHeight / imageSize.height; + var transform = 'translate3d(' + + (x *= -1) + + 'px, ' + + (y *= -1) + + 'px, 0) scale3d(' + + scX + + ', ' + + scY + + ', 1)'; + return transform; + }, + getIframeMarkup: function (iframeWidth, iframeHeight, iframeMaxWidth, iframeMaxHeight, src, iframeTitle) { + var title = iframeTitle ? 'title="' + iframeTitle + '"' : ''; + return "
\n \n
"; + }, + getImgMarkup: function (index, src, altAttr, srcset, sizes, sources) { + var srcsetAttr = srcset ? "srcset=\"" + srcset + "\"" : ''; + var sizesAttr = sizes ? "sizes=\"" + sizes + "\"" : ''; + var imgMarkup = ""; + var sourceTag = ''; + if (sources) { + var sourceObj = typeof sources === 'string' ? JSON.parse(sources) : sources; + sourceTag = sourceObj.map(function (source) { + var attrs = ''; + Object.keys(source).forEach(function (key) { + // Do not remove the first space as it is required to separate the attributes + attrs += " " + key + "=\"" + source[key] + "\""; + }); + return ""; + }); + } + return "" + sourceTag + imgMarkup; + }, + // Get src from responsive src + getResponsiveSrc: function (srcItms) { + var rsWidth = []; + var rsSrc = []; + var src = ''; + for (var i = 0; i < srcItms.length; i++) { + var _src = srcItms[i].split(' '); + // Manage empty space + if (_src[0] === '') { + _src.splice(0, 1); + } + rsSrc.push(_src[0]); + rsWidth.push(_src[1]); + } + var wWidth = window.innerWidth; + for (var j = 0; j < rsWidth.length; j++) { + if (parseInt(rsWidth[j], 10) > wWidth) { + src = rsSrc[j]; + break; + } + } + return src; + }, + isImageLoaded: function (img) { + if (!img) + return false; + // During the onload event, IE correctly identifies any images that + // weren’t downloaded as not complete. Others should too. Gecko-based + // browsers act like NS4 in that they report this incorrectly. + if (!img.complete) { + return false; + } + // However, they do have two very useful properties: naturalWidth and + // naturalHeight. These give the true size of the image. If it failed + // to load, either of these should be zero. + if (img.naturalWidth === 0) { + return false; + } + // No other way of checking: assume it’s ok. + return true; + }, + getVideoPosterMarkup: function (_poster, dummyImg, videoContStyle, playVideoString, _isVideo) { + var videoClass = ''; + if (_isVideo && _isVideo.youtube) { + videoClass = 'lg-has-youtube'; + } + else if (_isVideo && _isVideo.vimeo) { + videoClass = 'lg-has-vimeo'; + } + else { + videoClass = 'lg-has-html5'; + } + var _dummy = dummyImg; + if (typeof dummyImg !== 'string') { + _dummy = dummyImg.outerHTML; + } + return "
\n
\n \n " + playVideoString + "\n \n \n \n \n \n \n \n
\n " + _dummy + "\n \n
"; + }, + getFocusableElements: function (container) { + var elements = container.querySelectorAll('a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])'); + var visibleElements = [].filter.call(elements, function (element) { + var style = window.getComputedStyle(element); + return style.display !== 'none' && style.visibility !== 'hidden'; + }); + return visibleElements; + }, + /** + * @desc Create dynamic elements array from gallery items when dynamic option is false + * It helps to avoid frequent DOM interaction + * and avoid multiple checks for dynamic elments + * + * @returns {Array} dynamicEl + */ + getDynamicOptions: function (items, extraProps, getCaptionFromTitleOrAlt, exThumbImage) { + var dynamicElements = []; + var availableDynamicOptions = __spreadArrays(defaultDynamicOptions, extraProps); + [].forEach.call(items, function (item) { + var dynamicEl = {}; + for (var i = 0; i < item.attributes.length; i++) { + var attr = item.attributes[i]; + if (attr.specified) { + var dynamicAttr = convertToData(attr.name); + var label = ''; + if (availableDynamicOptions.indexOf(dynamicAttr) > -1) { + label = dynamicAttr; + } + if (label) { + dynamicEl[label] = attr.value; + } + } + } + var currentItem = $LG(item); + var alt = currentItem.find('img').first().attr('alt'); + var title = currentItem.attr('title'); + var thumb = exThumbImage + ? currentItem.attr(exThumbImage) + : currentItem.find('img').first().attr('src'); + dynamicEl.thumb = thumb; + if (getCaptionFromTitleOrAlt && !dynamicEl.subHtml) { + dynamicEl.subHtml = title || alt || ''; + } + dynamicEl.alt = alt || title || ''; + dynamicElements.push(dynamicEl); + }); + return dynamicElements; + }, + isMobile: function () { + return /iPhone|iPad|iPod|Android/i.test(navigator.userAgent); + }, + /** + * @desc Check the given src is video + * @param {String} src + * @return {Object} video type + * Ex:{ youtube : ["//www.youtube.com/watch?v=c0asJgSyxcY", "c0asJgSyxcY"] } + * + * @todo - this information can be moved to dynamicEl to avoid frequent calls + */ + isVideo: function (src, isHTML5VIdeo, index) { + if (!src) { + if (isHTML5VIdeo) { + return { + html5: true, + }; + } + else { + console.error('lightGallery :- data-src is not provided on slide item ' + + (index + 1) + + '. Please make sure the selector property is properly configured. More info - https://www.lightgalleryjs.com/demos/html-markup/'); + return; + } + } + var youtube = src.match(/\/\/(?:www\.)?youtu(?:\.be|be\.com|be-nocookie\.com)\/(?:watch\?v=|embed\/)?([a-z0-9\-\_\%]+)([\&|?][\S]*)*/i); + var vimeo = src.match(/\/\/(?:www\.)?(?:player\.)?vimeo.com\/(?:video\/)?([0-9a-z\-_]+)(.*)?/i); + var wistia = src.match(/https?:\/\/(.+)?(wistia\.com|wi\.st)\/(medias|embed)\/([0-9a-z\-_]+)(.*)/); + if (youtube) { + return { + youtube: youtube, + }; + } + else if (vimeo) { + return { + vimeo: vimeo, + }; + } + else if (wistia) { + return { + wistia: wistia, + }; + } + }, + }; + + // @ref - https://stackoverflow.com/questions/3971841/how-to-resize-images-proportionally-keeping-the-aspect-ratio + // @ref - https://2ality.com/2017/04/setting-up-multi-platform-packages.html + // Unique id for each gallery + var lgId = 0; + var LightGallery = /** @class */ (function () { + function LightGallery(element, options) { + this.lgOpened = false; + this.index = 0; + // lightGallery modules + this.plugins = []; + // false when lightGallery load first slide content; + this.lGalleryOn = false; + // True when a slide animation is in progress + this.lgBusy = false; + this.currentItemsInDom = []; + // Scroll top value before lightGallery is opened + this.prevScrollTop = 0; + this.bodyPaddingRight = 0; + this.isDummyImageRemoved = false; + this.dragOrSwipeEnabled = false; + this.mediaContainerPosition = { + top: 0, + bottom: 0, + }; + if (!element) { + return this; + } + lgId++; + this.lgId = lgId; + this.el = element; + this.LGel = $LG(element); + this.generateSettings(options); + this.buildModules(); + // When using dynamic mode, ensure dynamicEl is an array + if (this.settings.dynamic && + this.settings.dynamicEl !== undefined && + !Array.isArray(this.settings.dynamicEl)) { + throw 'When using dynamic mode, you must also define dynamicEl as an Array.'; + } + this.galleryItems = this.getItems(); + this.normalizeSettings(); + // Gallery items + this.init(); + this.validateLicense(); + return this; + } + LightGallery.prototype.generateSettings = function (options) { + // lightGallery settings + this.settings = __assign(__assign({}, lightGalleryCoreSettings), options); + if (this.settings.isMobile && + typeof this.settings.isMobile === 'function' + ? this.settings.isMobile() + : utils.isMobile()) { + var mobileSettings = __assign(__assign({}, this.settings.mobileSettings), this.settings.mobileSettings); + this.settings = __assign(__assign({}, this.settings), mobileSettings); + } + }; + LightGallery.prototype.normalizeSettings = function () { + if (this.settings.slideEndAnimation) { + this.settings.hideControlOnEnd = false; + } + if (!this.settings.closable) { + this.settings.swipeToClose = false; + } + // And reset it on close to get the correct value next time + this.zoomFromOrigin = this.settings.zoomFromOrigin; + // At the moment, Zoom from image doesn't support dynamic options + // @todo add zoomFromOrigin support for dynamic images + if (this.settings.dynamic) { + this.zoomFromOrigin = false; + } + if (this.settings.container) { + var container = this.settings.container; + if (typeof container === 'function') { + this.settings.container = container(); + } + else if (typeof container === 'string') { + var el = document.querySelector(container); + this.settings.container = el !== null && el !== void 0 ? el : document.body; + } + } + else { + this.settings.container = document.body; + } + // settings.preload should not be grater than $item.length + this.settings.preload = Math.min(this.settings.preload, this.galleryItems.length); + }; + LightGallery.prototype.init = function () { + var _this = this; + this.addSlideVideoInfo(this.galleryItems); + this.buildStructure(); + this.LGel.trigger(lGEvents.init, { + instance: this, + }); + if (this.settings.keyPress) { + this.keyPress(); + } + setTimeout(function () { + _this.enableDrag(); + _this.enableSwipe(); + _this.triggerPosterClick(); + }, 50); + this.arrow(); + if (this.settings.mousewheel) { + this.mousewheel(); + } + if (!this.settings.dynamic) { + this.openGalleryOnItemClick(); + } + }; + LightGallery.prototype.openGalleryOnItemClick = function () { + var _this = this; + var _loop_1 = function (index) { + var element = this_1.items[index]; + var $element = $LG(element); + // Using different namespace for click because click event should not unbind if selector is same object('this') + // @todo manage all event listners - should have namespace that represent element + var uuid = lgQuery.generateUUID(); + $element + .attr('data-lg-id', uuid) + .on("click.lgcustom-item-" + uuid, function (e) { + e.preventDefault(); + var currentItemIndex = _this.settings.index || index; + _this.openGallery(currentItemIndex, element); + }); + }; + var this_1 = this; + // Using for loop instead of using bubbling as the items can be any html element. + for (var index = 0; index < this.items.length; index++) { + _loop_1(index); + } + }; + /** + * Module constructor + * Modules are build incrementally. + * Gallery should be opened only once all the modules are initialized. + * use moduleBuildTimeout to make sure this + */ + LightGallery.prototype.buildModules = function () { + var _this = this; + this.settings.plugins.forEach(function (plugin) { + _this.plugins.push(new plugin(_this, $LG)); + }); + }; + LightGallery.prototype.validateLicense = function () { + if (!this.settings.licenseKey) { + console.error('Please provide a valid license key'); + } + else if (this.settings.licenseKey === '0000-0000-000-0000') { + console.warn("lightGallery: " + this.settings.licenseKey + " license key is not valid for production use"); + } + }; + LightGallery.prototype.getSlideItem = function (index) { + return $LG(this.getSlideItemId(index)); + }; + LightGallery.prototype.getSlideItemId = function (index) { + return "#lg-item-" + this.lgId + "-" + index; + }; + LightGallery.prototype.getIdName = function (id) { + return id + "-" + this.lgId; + }; + LightGallery.prototype.getElementById = function (id) { + return $LG("#" + this.getIdName(id)); + }; + LightGallery.prototype.manageSingleSlideClassName = function () { + if (this.galleryItems.length < 2) { + this.outer.addClass('lg-single-item'); + } + else { + this.outer.removeClass('lg-single-item'); + } + }; + LightGallery.prototype.buildStructure = function () { + var _this = this; + var container = this.$container && this.$container.get(); + if (container) { + return; + } + var controls = ''; + var subHtmlCont = ''; + // Create controls + if (this.settings.controls) { + controls = "\n "; + } + if (this.settings.appendSubHtmlTo !== '.lg-item') { + subHtmlCont = + '
'; + } + var addClasses = ''; + if (this.settings.allowMediaOverlap) { + // Do not remove space before last single quote + addClasses += 'lg-media-overlap '; + } + var ariaLabelledby = this.settings.ariaLabelledby + ? 'aria-labelledby="' + this.settings.ariaLabelledby + '"' + : ''; + var ariaDescribedby = this.settings.ariaDescribedby + ? 'aria-describedby="' + this.settings.ariaDescribedby + '"' + : ''; + var containerClassName = "lg-container " + this.settings.addClass + " " + (document.body !== this.settings.container ? 'lg-inline' : ''); + var closeIcon = this.settings.closable && this.settings.showCloseIcon + ? "" + : ''; + var maximizeIcon = this.settings.showMaximizeIcon + ? "" + : ''; + var template = "\n
\n
\n\n
\n\n
\n
\n
\n " + controls + "\n
\n
\n " + maximizeIcon + "\n " + closeIcon + "\n
\n " + (this.settings.appendSubHtmlTo === '.lg-outer' + ? subHtmlCont + : '') + "\n
\n " + (this.settings.appendSubHtmlTo === '.lg-sub-html' + ? subHtmlCont + : '') + "\n
\n
\n
\n "; + $LG(this.settings.container).append(template); + if (document.body !== this.settings.container) { + $LG(this.settings.container).css('position', 'relative'); + } + this.outer = this.getElementById('lg-outer'); + this.$lgComponents = this.getElementById('lg-components'); + this.$backdrop = this.getElementById('lg-backdrop'); + this.$container = this.getElementById('lg-container'); + this.$inner = this.getElementById('lg-inner'); + this.$content = this.getElementById('lg-content'); + this.$toolbar = this.getElementById('lg-toolbar'); + this.$backdrop.css('transition-duration', this.settings.backdropDuration + 'ms'); + var outerClassNames = this.settings.mode + " "; + this.manageSingleSlideClassName(); + if (this.settings.enableDrag) { + outerClassNames += 'lg-grab '; + } + this.outer.addClass(outerClassNames); + this.$inner.css('transition-timing-function', this.settings.easing); + this.$inner.css('transition-duration', this.settings.speed + 'ms'); + if (this.settings.download) { + this.$toolbar.append(""); + } + this.counter(); + $LG(window).on("resize.lg.global" + this.lgId + " orientationchange.lg.global" + this.lgId, function () { + _this.refreshOnResize(); + }); + this.hideBars(); + this.manageCloseGallery(); + this.toggleMaximize(); + this.initModules(); + }; + LightGallery.prototype.refreshOnResize = function () { + if (this.lgOpened) { + var currentGalleryItem = this.galleryItems[this.index]; + var __slideVideoInfo = currentGalleryItem.__slideVideoInfo; + this.mediaContainerPosition = this.getMediaContainerPosition(); + var _a = this.mediaContainerPosition, top_1 = _a.top, bottom = _a.bottom; + this.currentImageSize = utils.getSize(this.items[this.index], this.outer, top_1 + bottom, __slideVideoInfo && this.settings.videoMaxSize); + if (__slideVideoInfo) { + this.resizeVideoSlide(this.index, this.currentImageSize); + } + if (this.zoomFromOrigin && !this.isDummyImageRemoved) { + var imgStyle = this.getDummyImgStyles(this.currentImageSize); + this.outer + .find('.lg-current .lg-dummy-img') + .first() + .attr('style', imgStyle); + } + this.LGel.trigger(lGEvents.containerResize); + } + }; + LightGallery.prototype.resizeVideoSlide = function (index, imageSize) { + var lgVideoStyle = this.getVideoContStyle(imageSize); + var currentSlide = this.getSlideItem(index); + currentSlide.find('.lg-video-cont').attr('style', lgVideoStyle); + }; + /** + * Update slides dynamically. + * Add, edit or delete slides dynamically when lightGallery is opened. + * Modify the current gallery items and pass it via updateSlides method + * @note + * - Do not mutate existing lightGallery items directly. + * - Always pass new list of gallery items + * - You need to take care of thumbnails outside the gallery if any + * - user this method only if you want to update slides when the gallery is opened. Otherwise, use `refresh()` method. + * @param items Gallery items + * @param index After the update operation, which slide gallery should navigate to + * @category lGPublicMethods + * @example + * const plugin = lightGallery(); + * + * // Adding slides dynamically + * let galleryItems = [ + * // Access existing lightGallery items + * // galleryItems are automatically generated internally from the gallery HTML markup + * // or directly from galleryItems when dynamic gallery is used + * ...plugin.galleryItems, + * ...[ + * { + * src: 'img/img-1.png', + * thumb: 'img/thumb1.png', + * }, + * ], + * ]; + * plugin.updateSlides( + * galleryItems, + * plugin.index, + * ); + * + * + * // Remove slides dynamically + * galleryItems = JSON.parse( + * JSON.stringify(updateSlideInstance.galleryItems), + * ); + * galleryItems.shift(); + * updateSlideInstance.updateSlides(galleryItems, 1); + * @see Demo + */ + LightGallery.prototype.updateSlides = function (items, index) { + if (this.index > items.length - 1) { + this.index = items.length - 1; + } + if (items.length === 1) { + this.index = 0; + } + if (!items.length) { + this.closeGallery(); + return; + } + var currentSrc = this.galleryItems[index].src; + this.galleryItems = items; + this.updateControls(); + this.$inner.empty(); + this.currentItemsInDom = []; + var _index = 0; + // Find the current index based on source value of the slide + this.galleryItems.some(function (galleryItem, itemIndex) { + if (galleryItem.src === currentSrc) { + _index = itemIndex; + return true; + } + return false; + }); + this.currentItemsInDom = this.organizeSlideItems(_index, -1); + this.loadContent(_index, true); + this.getSlideItem(_index).addClass('lg-current'); + this.index = _index; + this.updateCurrentCounter(_index); + this.LGel.trigger(lGEvents.updateSlides); + }; + // Get gallery items based on multiple conditions + LightGallery.prototype.getItems = function () { + // Gallery items + this.items = []; + if (!this.settings.dynamic) { + if (this.settings.selector === 'this') { + this.items.push(this.el); + } + else if (this.settings.selector) { + if (typeof this.settings.selector === 'string') { + if (this.settings.selectWithin) { + var selectWithin = $LG(this.settings.selectWithin); + this.items = selectWithin + .find(this.settings.selector) + .get(); + } + else { + this.items = this.el.querySelectorAll(this.settings.selector); + } + } + else { + this.items = this.settings.selector; + } + } + else { + this.items = this.el.children; + } + return utils.getDynamicOptions(this.items, this.settings.extraProps, this.settings.getCaptionFromTitleOrAlt, this.settings.exThumbImage); + } + else { + return this.settings.dynamicEl || []; + } + }; + LightGallery.prototype.shouldHideScrollbar = function () { + return (this.settings.hideScrollbar && + document.body === this.settings.container); + }; + LightGallery.prototype.hideScrollbar = function () { + if (!this.shouldHideScrollbar()) { + return; + } + this.bodyPaddingRight = parseFloat($LG('body').style().paddingRight); + var bodyRect = document.documentElement.getBoundingClientRect(); + var scrollbarWidth = window.innerWidth - bodyRect.width; + $LG(document.body).css('padding-right', scrollbarWidth + this.bodyPaddingRight + 'px'); + $LG(document.body).addClass('lg-overlay-open'); + }; + LightGallery.prototype.resetScrollBar = function () { + if (!this.shouldHideScrollbar()) { + return; + } + $LG(document.body).css('padding-right', this.bodyPaddingRight + 'px'); + $LG(document.body).removeClass('lg-overlay-open'); + }; + /** + * Open lightGallery. + * Open gallery with specific slide by passing index of the slide as parameter. + * @category lGPublicMethods + * @param {Number} index - index of the slide + * @param {HTMLElement} element - Which image lightGallery should zoom from + * + * @example + * const $dynamicGallery = document.getElementById('dynamic-gallery-demo'); + * const dynamicGallery = lightGallery($dynamicGallery, { + * dynamic: true, + * dynamicEl: [ + * { + * src: 'img/1.jpg', + * thumb: 'img/thumb-1.jpg', + * subHtml: '

Image 1 title

Image 1 descriptions.

', + * }, + * ... + * ], + * }); + * $dynamicGallery.addEventListener('click', function () { + * // Starts with third item.(Optional). + * // This is useful if you want use dynamic mode with + * // custom thumbnails (thumbnails outside gallery), + * dynamicGallery.openGallery(2); + * }); + * + */ + LightGallery.prototype.openGallery = function (index, element) { + var _this = this; + if (index === void 0) { index = this.settings.index; } + // prevent accidental double execution + if (this.lgOpened) + return; + this.lgOpened = true; + this.outer.removeClass('lg-hide-items'); + this.hideScrollbar(); + // Add display block, but still has opacity 0 + this.$container.addClass('lg-show'); + var itemsToBeInsertedToDom = this.getItemsToBeInsertedToDom(index, index); + this.currentItemsInDom = itemsToBeInsertedToDom; + var items = ''; + itemsToBeInsertedToDom.forEach(function (item) { + items = items + ("
"); + }); + this.$inner.append(items); + this.addHtml(index); + var transform = ''; + this.mediaContainerPosition = this.getMediaContainerPosition(); + var _a = this.mediaContainerPosition, top = _a.top, bottom = _a.bottom; + if (!this.settings.allowMediaOverlap) { + this.setMediaContainerPosition(top, bottom); + } + var __slideVideoInfo = this.galleryItems[index].__slideVideoInfo; + if (this.zoomFromOrigin && element) { + this.currentImageSize = utils.getSize(element, this.outer, top + bottom, __slideVideoInfo && this.settings.videoMaxSize); + transform = utils.getTransform(element, this.outer, top, bottom, this.currentImageSize); + } + if (!this.zoomFromOrigin || !transform) { + this.outer.addClass(this.settings.startClass); + this.getSlideItem(index).removeClass('lg-complete'); + } + var timeout = this.settings.zoomFromOrigin + ? 100 + : this.settings.backdropDuration; + setTimeout(function () { + _this.outer.addClass('lg-components-open'); + }, timeout); + this.index = index; + this.LGel.trigger(lGEvents.beforeOpen); + // add class lg-current to remove initial transition + this.getSlideItem(index).addClass('lg-current'); + this.lGalleryOn = false; + // Store the current scroll top value to scroll back after closing the gallery.. + this.prevScrollTop = $LG(window).scrollTop(); + setTimeout(function () { + // Need to check both zoomFromOrigin and transform values as we need to set set the + // default opening animation if user missed to add the lg-size attribute + if (_this.zoomFromOrigin && transform) { + var currentSlide_1 = _this.getSlideItem(index); + currentSlide_1.css('transform', transform); + setTimeout(function () { + currentSlide_1 + .addClass('lg-start-progress lg-start-end-progress') + .css('transition-duration', _this.settings.startAnimationDuration + 'ms'); + _this.outer.addClass('lg-zoom-from-image'); + }); + setTimeout(function () { + currentSlide_1.css('transform', 'translate3d(0, 0, 0)'); + }, 100); + } + setTimeout(function () { + _this.$backdrop.addClass('in'); + _this.$container.addClass('lg-show-in'); + }, 10); + setTimeout(function () { + if (_this.settings.trapFocus && + document.body === _this.settings.container) { + _this.trapFocus(); + } + }, _this.settings.backdropDuration + 50); + // lg-visible class resets gallery opacity to 1 + if (!_this.zoomFromOrigin || !transform) { + setTimeout(function () { + _this.outer.addClass('lg-visible'); + }, _this.settings.backdropDuration); + } + // initiate slide function + _this.slide(index, false, false, false); + _this.LGel.trigger(lGEvents.afterOpen); + }); + if (document.body === this.settings.container) { + $LG('html').addClass('lg-on'); + } + }; + /** + * Note - Changing the position of the media on every slide transition creates a flickering effect. + * Therefore, The height of the caption is calculated dynamically, only once based on the first slide caption. + * if you have dynamic captions for each media, + * you can provide an appropriate height for the captions via allowMediaOverlap option + */ + LightGallery.prototype.getMediaContainerPosition = function () { + if (this.settings.allowMediaOverlap) { + return { + top: 0, + bottom: 0, + }; + } + var top = this.$toolbar.get().clientHeight || 0; + var subHtml = this.outer.find('.lg-components .lg-sub-html').get(); + var captionHeight = this.settings.defaultCaptionHeight || + (subHtml && subHtml.clientHeight) || + 0; + var thumbContainer = this.outer.find('.lg-thumb-outer').get(); + var thumbHeight = thumbContainer ? thumbContainer.clientHeight : 0; + var bottom = thumbHeight + captionHeight; + return { + top: top, + bottom: bottom, + }; + }; + LightGallery.prototype.setMediaContainerPosition = function (top, bottom) { + if (top === void 0) { top = 0; } + if (bottom === void 0) { bottom = 0; } + this.$content.css('top', top + 'px').css('bottom', bottom + 'px'); + }; + LightGallery.prototype.hideBars = function () { + var _this = this; + // Hide controllers if mouse doesn't move for some period + setTimeout(function () { + _this.outer.removeClass('lg-hide-items'); + if (_this.settings.hideBarsDelay > 0) { + _this.outer.on('mousemove.lg click.lg touchstart.lg', function () { + _this.outer.removeClass('lg-hide-items'); + clearTimeout(_this.hideBarTimeout); + // Timeout will be cleared on each slide movement also + _this.hideBarTimeout = setTimeout(function () { + _this.outer.addClass('lg-hide-items'); + }, _this.settings.hideBarsDelay); + }); + _this.outer.trigger('mousemove.lg'); + } + }, this.settings.showBarsAfter); + }; + LightGallery.prototype.initPictureFill = function ($img) { + if (this.settings.supportLegacyBrowser) { + try { + picturefill({ + elements: [$img.get()], + }); + } + catch (e) { + console.warn('lightGallery :- If you want srcset or picture tag to be supported for older browser please include picturefil javascript library in your document.'); + } + } + }; + /** + * @desc Create image counter + * Ex: 1/10 + */ + LightGallery.prototype.counter = function () { + if (this.settings.counter) { + var counterHtml = "
\n " + (this.index + 1) + " /\n " + this.galleryItems.length + "
"; + this.outer.find(this.settings.appendCounterTo).append(counterHtml); + } + }; + /** + * @desc add sub-html into the slide + * @param {Number} index - index of the slide + */ + LightGallery.prototype.addHtml = function (index) { + var subHtml; + var subHtmlUrl; + if (this.galleryItems[index].subHtmlUrl) { + subHtmlUrl = this.galleryItems[index].subHtmlUrl; + } + else { + subHtml = this.galleryItems[index].subHtml; + } + if (!subHtmlUrl) { + if (subHtml) { + // get first letter of sub-html + // if first letter starts with . or # get the html form the jQuery object + var fL = subHtml.substring(0, 1); + if (fL === '.' || fL === '#') { + try { + if (this.settings.subHtmlSelectorRelative && + !this.settings.dynamic) { + subHtml = $LG(this.items) + .eq(index) + .find(subHtml) + .first() + .html(); + } + else { + subHtml = $LG(subHtml).first().html(); + } + } + catch (error) { + console.warn("Error processing subHtml selector \"" + subHtml + "\""); + subHtml = ''; + } + } + } + else { + subHtml = ''; + } + } + if (this.settings.appendSubHtmlTo !== '.lg-item') { + if (subHtmlUrl) { + utils.fetchCaptionFromUrl(subHtmlUrl, this.outer.find('.lg-sub-html'), 'replace'); + } + else { + this.outer.find('.lg-sub-html').html(subHtml); + } + } + else { + var currentSlide = $LG(this.getSlideItemId(index)); + if (subHtmlUrl) { + utils.fetchCaptionFromUrl(subHtmlUrl, currentSlide, 'append'); + } + else { + currentSlide.append("
" + subHtml + "
"); + } + } + // Add lg-empty-html class if title doesn't exist + if (typeof subHtml !== 'undefined' && subHtml !== null) { + if (subHtml === '') { + this.outer + .find(this.settings.appendSubHtmlTo) + .addClass('lg-empty-html'); + } + else { + this.outer + .find(this.settings.appendSubHtmlTo) + .removeClass('lg-empty-html'); + } + } + this.LGel.trigger(lGEvents.afterAppendSubHtml, { + index: index, + }); + }; + /** + * @desc Preload slides + * @param {Number} index - index of the slide + * @todo preload not working for the first slide, Also, should work for the first and last slide as well + */ + LightGallery.prototype.preload = function (index) { + for (var i = 1; i <= this.settings.preload; i++) { + if (i >= this.galleryItems.length - index) { + break; + } + this.loadContent(index + i, false); + } + for (var j = 1; j <= this.settings.preload; j++) { + if (index - j < 0) { + break; + } + this.loadContent(index - j, false); + } + }; + LightGallery.prototype.getDummyImgStyles = function (imageSize) { + if (!imageSize) + return ''; + return "width:" + imageSize.width + "px;\n margin-left: -" + imageSize.width / 2 + "px;\n margin-top: -" + imageSize.height / 2 + "px;\n height:" + imageSize.height + "px"; + }; + LightGallery.prototype.getVideoContStyle = function (imageSize) { + if (!imageSize) + return ''; + return "width:" + imageSize.width + "px;\n height:" + imageSize.height + "px"; + }; + LightGallery.prototype.getDummyImageContent = function ($currentSlide, index, alt) { + var $currentItem; + if (!this.settings.dynamic) { + $currentItem = $LG(this.items).eq(index); + } + if ($currentItem) { + var _dummyImgSrc = void 0; + if (!this.settings.exThumbImage) { + _dummyImgSrc = $currentItem.find('img').first().attr('src'); + } + else { + _dummyImgSrc = $currentItem.attr(this.settings.exThumbImage); + } + if (!_dummyImgSrc) + return ''; + var imgStyle = this.getDummyImgStyles(this.currentImageSize); + var dummyImgContentImg = document.createElement('img'); + dummyImgContentImg.alt = alt || ''; + dummyImgContentImg.src = _dummyImgSrc; + dummyImgContentImg.className = "lg-dummy-img"; + dummyImgContentImg.style.cssText = imgStyle; + $currentSlide.addClass('lg-first-slide'); + this.outer.addClass('lg-first-slide-loading'); + return dummyImgContentImg; + } + return ''; + }; + LightGallery.prototype.setImgMarkup = function (src, $currentSlide, index) { + var currentGalleryItem = this.galleryItems[index]; + var alt = currentGalleryItem.alt, srcset = currentGalleryItem.srcset, sizes = currentGalleryItem.sizes, sources = currentGalleryItem.sources; + // Use the thumbnail as dummy image which will be resized to actual image size and + // displayed on top of actual image + var imgContent = ''; + var altAttr = alt ? 'alt="' + alt + '"' : ''; + if (this.isFirstSlideWithZoomAnimation()) { + imgContent = this.getDummyImageContent($currentSlide, index, altAttr); + } + else { + imgContent = utils.getImgMarkup(index, src, altAttr, srcset, sizes, sources); + } + var picture = document.createElement('picture'); + picture.className = 'lg-img-wrap'; + $LG(picture).append(imgContent); + $currentSlide.prepend(picture); + }; + LightGallery.prototype.onSlideObjectLoad = function ($slide, isHTML5VideoWithoutPoster, onLoad, onError) { + var mediaObject = $slide.find('.lg-object').first(); + if (utils.isImageLoaded(mediaObject.get()) || + isHTML5VideoWithoutPoster) { + onLoad(); + } + else { + mediaObject.on('load.lg error.lg', function () { + onLoad && onLoad(); + }); + mediaObject.on('error.lg', function () { + onError && onError(); + }); + } + }; + /** + * + * @param $el Current slide item + * @param index + * @param delay Delay is 0 except first time + * @param speed Speed is same as delay, except it is 0 if gallery is opened via hash plugin + * @param isFirstSlide + */ + LightGallery.prototype.onLgObjectLoad = function (currentSlide, index, delay, speed, isFirstSlide, isHTML5VideoWithoutPoster) { + var _this = this; + this.onSlideObjectLoad(currentSlide, isHTML5VideoWithoutPoster, function () { + _this.triggerSlideItemLoad(currentSlide, index, delay, speed, isFirstSlide); + }, function () { + currentSlide.addClass('lg-complete lg-complete_'); + currentSlide.html('' + + _this.settings.strings['mediaLoadingFailed'] + + ''); + }); + }; + LightGallery.prototype.triggerSlideItemLoad = function ($currentSlide, index, delay, speed, isFirstSlide) { + var _this = this; + var currentGalleryItem = this.galleryItems[index]; + // Adding delay for video slides without poster for better performance and user experience + // Videos should start playing once once the gallery is completely loaded + var _speed = isFirstSlide && + this.getSlideType(currentGalleryItem) === 'video' && + !currentGalleryItem.poster + ? speed + : 0; + setTimeout(function () { + $currentSlide.addClass('lg-complete lg-complete_'); + _this.LGel.trigger(lGEvents.slideItemLoad, { + index: index, + delay: delay || 0, + isFirstSlide: isFirstSlide, + }); + }, _speed); + }; + LightGallery.prototype.isFirstSlideWithZoomAnimation = function () { + return !!(!this.lGalleryOn && + this.zoomFromOrigin && + this.currentImageSize); + }; + // Add video slideInfo + LightGallery.prototype.addSlideVideoInfo = function (items) { + var _this = this; + items.forEach(function (element, index) { + element.__slideVideoInfo = utils.isVideo(element.src, !!element.video, index); + if (element.__slideVideoInfo && + _this.settings.loadYouTubePoster && + !element.poster && + element.__slideVideoInfo.youtube) { + element.poster = "//img.youtube.com/vi/" + element.__slideVideoInfo.youtube[1] + "/maxresdefault.jpg"; + } + }); + }; + /** + * Load slide content into slide. + * This is used to load content into slides that is not visible too + * @param {Number} index - index of the slide. + * @param {Boolean} rec - if true call loadcontent() function again. + */ + LightGallery.prototype.loadContent = function (index, rec) { + var _this = this; + var currentGalleryItem = this.galleryItems[index]; + var $currentSlide = $LG(this.getSlideItemId(index)); + var poster = currentGalleryItem.poster, srcset = currentGalleryItem.srcset, sizes = currentGalleryItem.sizes, sources = currentGalleryItem.sources; + var src = currentGalleryItem.src; + var video = currentGalleryItem.video; + var _html5Video = video && typeof video === 'string' ? JSON.parse(video) : video; + if (currentGalleryItem.responsive) { + var srcDyItms = currentGalleryItem.responsive.split(','); + src = utils.getResponsiveSrc(srcDyItms) || src; + } + var videoInfo = currentGalleryItem.__slideVideoInfo; + var lgVideoStyle = ''; + var iframe = !!currentGalleryItem.iframe; + var isFirstSlide = !this.lGalleryOn; + // delay for adding complete class. it is 0 except first time. + var delay = 0; + if (isFirstSlide) { + if (this.zoomFromOrigin && this.currentImageSize) { + delay = this.settings.startAnimationDuration + 10; + } + else { + delay = this.settings.backdropDuration + 10; + } + } + if (!$currentSlide.hasClass('lg-loaded')) { + if (videoInfo) { + var _a = this.mediaContainerPosition, top_2 = _a.top, bottom = _a.bottom; + var videoSize = utils.getSize(this.items[index], this.outer, top_2 + bottom, videoInfo && this.settings.videoMaxSize); + lgVideoStyle = this.getVideoContStyle(videoSize); + } + if (iframe) { + var markup = utils.getIframeMarkup(this.settings.iframeWidth, this.settings.iframeHeight, this.settings.iframeMaxWidth, this.settings.iframeMaxHeight, src, currentGalleryItem.iframeTitle); + $currentSlide.prepend(markup); + } + else if (poster) { + var dummyImg = ''; + var hasStartAnimation = isFirstSlide && + this.zoomFromOrigin && + this.currentImageSize; + if (hasStartAnimation) { + dummyImg = this.getDummyImageContent($currentSlide, index, ''); + } + var markup = utils.getVideoPosterMarkup(poster, dummyImg || '', lgVideoStyle, this.settings.strings['playVideo'], videoInfo); + $currentSlide.prepend(markup); + } + else if (videoInfo) { + var markup = "
"; + $currentSlide.prepend(markup); + } + else { + this.setImgMarkup(src, $currentSlide, index); + if (srcset || sources) { + var $img = $currentSlide.find('.lg-object'); + this.initPictureFill($img); + } + } + if (poster || videoInfo) { + this.LGel.trigger(lGEvents.hasVideo, { + index: index, + src: src, + html5Video: _html5Video, + hasPoster: !!poster, + }); + } + this.LGel.trigger(lGEvents.afterAppendSlide, { index: index }); + if (this.lGalleryOn && + this.settings.appendSubHtmlTo === '.lg-item') { + this.addHtml(index); + } + } + // For first time add some delay for displaying the start animation. + var _speed = 0; + // Do not change the delay value because it is required for zoom plugin. + // If gallery opened from direct url (hash) speed value should be 0 + if (delay && !$LG(document.body).hasClass('lg-from-hash')) { + _speed = delay; + } + // Only for first slide and zoomFromOrigin is enabled + if (this.isFirstSlideWithZoomAnimation()) { + setTimeout(function () { + $currentSlide + .removeClass('lg-start-end-progress lg-start-progress') + .removeAttr('style'); + }, this.settings.startAnimationDuration + 100); + if (!$currentSlide.hasClass('lg-loaded')) { + setTimeout(function () { + if (_this.getSlideType(currentGalleryItem) === 'image') { + var alt = currentGalleryItem.alt; + var altAttr = alt ? 'alt="' + alt + '"' : ''; + $currentSlide + .find('.lg-img-wrap') + .append(utils.getImgMarkup(index, src, altAttr, srcset, sizes, currentGalleryItem.sources)); + if (srcset || sources) { + var $img = $currentSlide.find('.lg-object'); + _this.initPictureFill($img); + } + } + if (_this.getSlideType(currentGalleryItem) === 'image' || + (_this.getSlideType(currentGalleryItem) === 'video' && + poster)) { + _this.onLgObjectLoad($currentSlide, index, delay, _speed, true, false); + // load remaining slides once the slide is completely loaded + _this.onSlideObjectLoad($currentSlide, !!(videoInfo && videoInfo.html5 && !poster), function () { + _this.loadContentOnFirstSlideLoad(index, $currentSlide, _speed); + }, function () { + _this.loadContentOnFirstSlideLoad(index, $currentSlide, _speed); + }); + } + }, this.settings.startAnimationDuration + 100); + } + } + // SLide content has been added to dom + $currentSlide.addClass('lg-loaded'); + if (!this.isFirstSlideWithZoomAnimation() || + (this.getSlideType(currentGalleryItem) === 'video' && !poster)) { + this.onLgObjectLoad($currentSlide, index, delay, _speed, isFirstSlide, !!(videoInfo && videoInfo.html5 && !poster)); + } + // When gallery is opened once content is loaded (second time) need to add lg-complete class for css styling + if ((!this.zoomFromOrigin || !this.currentImageSize) && + $currentSlide.hasClass('lg-complete_') && + !this.lGalleryOn) { + setTimeout(function () { + $currentSlide.addClass('lg-complete'); + }, this.settings.backdropDuration); + } + // Content loaded + // Need to set lGalleryOn before calling preload function + this.lGalleryOn = true; + if (rec === true) { + if (!$currentSlide.hasClass('lg-complete_')) { + $currentSlide + .find('.lg-object') + .first() + .on('load.lg error.lg', function () { + _this.preload(index); + }); + } + else { + this.preload(index); + } + } + }; + /** + * @desc Remove dummy image content and load next slides + * Called only for the first time if zoomFromOrigin animation is enabled + * @param index + * @param $currentSlide + * @param speed + */ + LightGallery.prototype.loadContentOnFirstSlideLoad = function (index, $currentSlide, speed) { + var _this = this; + setTimeout(function () { + $currentSlide.find('.lg-dummy-img').remove(); + $currentSlide.removeClass('lg-first-slide'); + _this.outer.removeClass('lg-first-slide-loading'); + _this.isDummyImageRemoved = true; + _this.preload(index); + }, speed + 300); + }; + LightGallery.prototype.getItemsToBeInsertedToDom = function (index, prevIndex, numberOfItems) { + var _this = this; + if (numberOfItems === void 0) { numberOfItems = 0; } + var itemsToBeInsertedToDom = []; + // Minimum 2 items should be there + var possibleNumberOfItems = Math.max(numberOfItems, 3); + possibleNumberOfItems = Math.min(possibleNumberOfItems, this.galleryItems.length); + var prevIndexItem = "lg-item-" + this.lgId + "-" + prevIndex; + if (this.galleryItems.length <= 3) { + this.galleryItems.forEach(function (_element, index) { + itemsToBeInsertedToDom.push("lg-item-" + _this.lgId + "-" + index); + }); + return itemsToBeInsertedToDom; + } + if (index < (this.galleryItems.length - 1) / 2) { + for (var idx = index; idx > index - possibleNumberOfItems / 2 && idx >= 0; idx--) { + itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + idx); + } + var numberOfExistingItems = itemsToBeInsertedToDom.length; + for (var idx = 0; idx < possibleNumberOfItems - numberOfExistingItems; idx++) { + itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + (index + idx + 1)); + } + } + else { + for (var idx = index; idx <= this.galleryItems.length - 1 && + idx < index + possibleNumberOfItems / 2; idx++) { + itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + idx); + } + var numberOfExistingItems = itemsToBeInsertedToDom.length; + for (var idx = 0; idx < possibleNumberOfItems - numberOfExistingItems; idx++) { + itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + (index - idx - 1)); + } + } + if (this.settings.loop) { + if (index === this.galleryItems.length - 1) { + itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + 0); + } + else if (index === 0) { + itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + (this.galleryItems.length - 1)); + } + } + if (itemsToBeInsertedToDom.indexOf(prevIndexItem) === -1) { + itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + prevIndex); + } + return itemsToBeInsertedToDom; + }; + LightGallery.prototype.organizeSlideItems = function (index, prevIndex) { + var _this = this; + var itemsToBeInsertedToDom = this.getItemsToBeInsertedToDom(index, prevIndex, this.settings.numberOfSlideItemsInDom); + itemsToBeInsertedToDom.forEach(function (item) { + if (_this.currentItemsInDom.indexOf(item) === -1) { + _this.$inner.append("
"); + } + }); + this.currentItemsInDom.forEach(function (item) { + if (itemsToBeInsertedToDom.indexOf(item) === -1) { + $LG("#" + item).remove(); + } + }); + return itemsToBeInsertedToDom; + }; + /** + * Get previous index of the slide + */ + LightGallery.prototype.getPreviousSlideIndex = function () { + var prevIndex = 0; + try { + var currentItemId = this.outer + .find('.lg-current') + .first() + .attr('id'); + prevIndex = parseInt(currentItemId.split('-')[3]) || 0; + } + catch (error) { + prevIndex = 0; + } + return prevIndex; + }; + LightGallery.prototype.setDownloadValue = function (index) { + if (this.settings.download) { + var currentGalleryItem = this.galleryItems[index]; + var hideDownloadBtn = currentGalleryItem.downloadUrl === false || + currentGalleryItem.downloadUrl === 'false'; + if (hideDownloadBtn) { + this.outer.addClass('lg-hide-download'); + } + else { + var $download = this.getElementById('lg-download'); + this.outer.removeClass('lg-hide-download'); + $download.attr('href', currentGalleryItem.downloadUrl || + currentGalleryItem.src); + if (currentGalleryItem.download) { + $download.attr('download', currentGalleryItem.download); + } + } + } + }; + LightGallery.prototype.makeSlideAnimation = function (direction, currentSlideItem, previousSlideItem) { + var _this = this; + if (this.lGalleryOn) { + previousSlideItem.addClass('lg-slide-progress'); + } + setTimeout(function () { + // remove all transitions + _this.outer.addClass('lg-no-trans'); + _this.outer + .find('.lg-item') + .removeClass('lg-prev-slide lg-next-slide'); + if (direction === 'prev') { + //prevslide + currentSlideItem.addClass('lg-prev-slide'); + previousSlideItem.addClass('lg-next-slide'); + } + else { + // next slide + currentSlideItem.addClass('lg-next-slide'); + previousSlideItem.addClass('lg-prev-slide'); + } + // give 50 ms for browser to add/remove class + setTimeout(function () { + _this.outer.find('.lg-item').removeClass('lg-current'); + currentSlideItem.addClass('lg-current'); + // reset all transitions + _this.outer.removeClass('lg-no-trans'); + }, 50); + }, this.lGalleryOn ? this.settings.slideDelay : 0); + }; + /** + * Goto a specific slide. + * @param {Number} index - index of the slide + * @param {Boolean} fromTouch - true if slide function called via touch event or mouse drag + * @param {Boolean} fromThumb - true if slide function called via thumbnail click + * @param {String} direction - Direction of the slide(next/prev) + * @category lGPublicMethods + * @example + * const plugin = lightGallery(); + * // to go to 3rd slide + * plugin.slide(2); + * + */ + LightGallery.prototype.slide = function (index, fromTouch, fromThumb, direction) { + var _this = this; + var prevIndex = this.getPreviousSlideIndex(); + this.currentItemsInDom = this.organizeSlideItems(index, prevIndex); + // Prevent multiple call, Required for hsh plugin + if (this.lGalleryOn && prevIndex === index) { + return; + } + var numberOfGalleryItems = this.galleryItems.length; + if (!this.lgBusy) { + if (this.settings.counter) { + this.updateCurrentCounter(index); + } + var currentSlideItem = this.getSlideItem(index); + var previousSlideItem_1 = this.getSlideItem(prevIndex); + var currentGalleryItem = this.galleryItems[index]; + var videoInfo = currentGalleryItem.__slideVideoInfo; + this.outer.attr('data-lg-slide-type', this.getSlideType(currentGalleryItem)); + this.setDownloadValue(index); + if (videoInfo) { + var _a = this.mediaContainerPosition, top_3 = _a.top, bottom = _a.bottom; + var videoSize = utils.getSize(this.items[index], this.outer, top_3 + bottom, videoInfo && this.settings.videoMaxSize); + this.resizeVideoSlide(index, videoSize); + } + this.LGel.trigger(lGEvents.beforeSlide, { + prevIndex: prevIndex, + index: index, + fromTouch: !!fromTouch, + fromThumb: !!fromThumb, + }); + this.lgBusy = true; + clearTimeout(this.hideBarTimeout); + this.arrowDisable(index); + if (!direction) { + if (index < prevIndex) { + direction = 'prev'; + } + else if (index > prevIndex) { + direction = 'next'; + } + } + if (!fromTouch) { + this.makeSlideAnimation(direction, currentSlideItem, previousSlideItem_1); + } + else { + this.outer + .find('.lg-item') + .removeClass('lg-prev-slide lg-current lg-next-slide'); + var touchPrev = void 0; + var touchNext = void 0; + if (numberOfGalleryItems > 2) { + touchPrev = index - 1; + touchNext = index + 1; + if (index === 0 && prevIndex === numberOfGalleryItems - 1) { + // next slide + touchNext = 0; + touchPrev = numberOfGalleryItems - 1; + } + else if (index === numberOfGalleryItems - 1 && + prevIndex === 0) { + // prev slide + touchNext = 0; + touchPrev = numberOfGalleryItems - 1; + } + } + else { + touchPrev = 0; + touchNext = 1; + } + if (direction === 'prev') { + this.getSlideItem(touchNext).addClass('lg-next-slide'); + } + else { + this.getSlideItem(touchPrev).addClass('lg-prev-slide'); + } + currentSlideItem.addClass('lg-current'); + } + // Do not put load content in set timeout as it needs to load immediately when the gallery is opened + if (!this.lGalleryOn) { + this.loadContent(index, true); + } + else { + setTimeout(function () { + _this.loadContent(index, true); + // Add title if this.settings.appendSubHtmlTo === lg-sub-html + if (_this.settings.appendSubHtmlTo !== '.lg-item') { + _this.addHtml(index); + } + }, this.settings.speed + 50 + (fromTouch ? 0 : this.settings.slideDelay)); + } + setTimeout(function () { + _this.lgBusy = false; + previousSlideItem_1.removeClass('lg-slide-progress'); + _this.LGel.trigger(lGEvents.afterSlide, { + prevIndex: prevIndex, + index: index, + fromTouch: fromTouch, + fromThumb: fromThumb, + }); + }, (this.lGalleryOn ? this.settings.speed + 100 : 100) + (fromTouch ? 0 : this.settings.slideDelay)); + } + this.index = index; + }; + LightGallery.prototype.updateCurrentCounter = function (index) { + this.getElementById('lg-counter-current').html(index + 1 + ''); + }; + LightGallery.prototype.updateCounterTotal = function () { + this.getElementById('lg-counter-all').html(this.galleryItems.length + ''); + }; + LightGallery.prototype.getSlideType = function (item) { + if (item.__slideVideoInfo) { + return 'video'; + } + else if (item.iframe) { + return 'iframe'; + } + else { + return 'image'; + } + }; + LightGallery.prototype.touchMove = function (startCoords, endCoords, e) { + var distanceX = endCoords.pageX - startCoords.pageX; + var distanceY = endCoords.pageY - startCoords.pageY; + var allowSwipe = false; + if (this.swipeDirection) { + allowSwipe = true; + } + else { + if (Math.abs(distanceX) > 15) { + this.swipeDirection = 'horizontal'; + allowSwipe = true; + } + else if (Math.abs(distanceY) > 15) { + this.swipeDirection = 'vertical'; + allowSwipe = true; + } + } + if (!allowSwipe) { + return; + } + var $currentSlide = this.getSlideItem(this.index); + if (this.swipeDirection === 'horizontal') { + e === null || e === void 0 ? void 0 : e.preventDefault(); + // reset opacity and transition duration + this.outer.addClass('lg-dragging'); + // move current slide + this.setTranslate($currentSlide, distanceX, 0); + // move next and prev slide with current slide + var width = $currentSlide.get().offsetWidth; + var slideWidthAmount = (width * 15) / 100; + var gutter = slideWidthAmount - Math.abs((distanceX * 10) / 100); + this.setTranslate(this.outer.find('.lg-prev-slide').first(), -width + distanceX - gutter, 0); + this.setTranslate(this.outer.find('.lg-next-slide').first(), width + distanceX + gutter, 0); + } + else if (this.swipeDirection === 'vertical') { + if (this.settings.swipeToClose) { + e === null || e === void 0 ? void 0 : e.preventDefault(); + this.$container.addClass('lg-dragging-vertical'); + var opacity = 1 - Math.abs(distanceY) / window.innerHeight; + this.$backdrop.css('opacity', opacity); + var scale = 1 - Math.abs(distanceY) / (window.innerWidth * 2); + this.setTranslate($currentSlide, 0, distanceY, scale, scale); + if (Math.abs(distanceY) > 100) { + this.outer + .addClass('lg-hide-items') + .removeClass('lg-components-open'); + } + } + } + }; + LightGallery.prototype.touchEnd = function (endCoords, startCoords, event) { + var _this = this; + var distance; + // keep slide animation for any mode while dragg/swipe + if (this.settings.mode !== 'lg-slide') { + this.outer.addClass('lg-slide'); + } + // set transition duration + setTimeout(function () { + _this.$container.removeClass('lg-dragging-vertical'); + _this.outer + .removeClass('lg-dragging lg-hide-items') + .addClass('lg-components-open'); + var triggerClick = true; + if (_this.swipeDirection === 'horizontal') { + distance = endCoords.pageX - startCoords.pageX; + var distanceAbs = Math.abs(endCoords.pageX - startCoords.pageX); + if (distance < 0 && + distanceAbs > _this.settings.swipeThreshold) { + _this.goToNextSlide(true); + triggerClick = false; + } + else if (distance > 0 && + distanceAbs > _this.settings.swipeThreshold) { + _this.goToPrevSlide(true); + triggerClick = false; + } + } + else if (_this.swipeDirection === 'vertical') { + distance = Math.abs(endCoords.pageY - startCoords.pageY); + if (_this.settings.closable && + _this.settings.swipeToClose && + distance > 100) { + _this.closeGallery(); + return; + } + else { + _this.$backdrop.css('opacity', 1); + } + } + _this.outer.find('.lg-item').removeAttr('style'); + if (triggerClick && + Math.abs(endCoords.pageX - startCoords.pageX) < 5) { + // Trigger click if distance is less than 5 pix + var target = $LG(event.target); + if (_this.isPosterElement(target)) { + _this.LGel.trigger(lGEvents.posterClick); + } + } + _this.swipeDirection = undefined; + }); + // remove slide class once drag/swipe is completed if mode is not slide + setTimeout(function () { + if (!_this.outer.hasClass('lg-dragging') && + _this.settings.mode !== 'lg-slide') { + _this.outer.removeClass('lg-slide'); + } + }, this.settings.speed + 100); + }; + LightGallery.prototype.enableSwipe = function () { + var _this = this; + var startCoords = {}; + var endCoords = {}; + var isMoved = false; + var isSwiping = false; + if (this.settings.enableSwipe) { + this.$inner.on('touchstart.lg', function (e) { + _this.dragOrSwipeEnabled = true; + var $item = _this.getSlideItem(_this.index); + if (($LG(e.target).hasClass('lg-item') || + $item.get().contains(e.target)) && + !_this.outer.hasClass('lg-zoomed') && + !_this.lgBusy && + e.touches.length === 1) { + isSwiping = true; + _this.touchAction = 'swipe'; + _this.manageSwipeClass(); + startCoords = { + pageX: e.touches[0].pageX, + pageY: e.touches[0].pageY, + }; + } + }); + this.$inner.on('touchmove.lg', function (e) { + if (isSwiping && + _this.touchAction === 'swipe' && + e.touches.length === 1) { + endCoords = { + pageX: e.touches[0].pageX, + pageY: e.touches[0].pageY, + }; + _this.touchMove(startCoords, endCoords, e); + isMoved = true; + } + }); + this.$inner.on('touchend.lg', function (event) { + if (_this.touchAction === 'swipe') { + if (isMoved) { + isMoved = false; + _this.touchEnd(endCoords, startCoords, event); + } + else if (isSwiping) { + var target = $LG(event.target); + if (_this.isPosterElement(target)) { + _this.LGel.trigger(lGEvents.posterClick); + } + } + _this.touchAction = undefined; + isSwiping = false; + } + }); + } + }; + LightGallery.prototype.enableDrag = function () { + var _this = this; + var startCoords = {}; + var endCoords = {}; + var isDraging = false; + var isMoved = false; + if (this.settings.enableDrag) { + this.outer.on('mousedown.lg', function (e) { + _this.dragOrSwipeEnabled = true; + var $item = _this.getSlideItem(_this.index); + if ($LG(e.target).hasClass('lg-item') || + $item.get().contains(e.target)) { + if (!_this.outer.hasClass('lg-zoomed') && !_this.lgBusy) { + e.preventDefault(); + if (!_this.lgBusy) { + _this.manageSwipeClass(); + startCoords = { + pageX: e.pageX, + pageY: e.pageY, + }; + isDraging = true; + // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723 + _this.outer.get().scrollLeft += 1; + _this.outer.get().scrollLeft -= 1; + // * + _this.outer + .removeClass('lg-grab') + .addClass('lg-grabbing'); + _this.LGel.trigger(lGEvents.dragStart); + } + } + } + }); + $LG(window).on("mousemove.lg.global" + this.lgId, function (e) { + if (isDraging && _this.lgOpened) { + isMoved = true; + endCoords = { + pageX: e.pageX, + pageY: e.pageY, + }; + _this.touchMove(startCoords, endCoords); + _this.LGel.trigger(lGEvents.dragMove); + } + }); + $LG(window).on("mouseup.lg.global" + this.lgId, function (event) { + if (!_this.lgOpened) { + return; + } + var target = $LG(event.target); + if (isMoved) { + isMoved = false; + _this.touchEnd(endCoords, startCoords, event); + _this.LGel.trigger(lGEvents.dragEnd); + } + else if (_this.isPosterElement(target)) { + _this.LGel.trigger(lGEvents.posterClick); + } + // Prevent execution on click + if (isDraging) { + isDraging = false; + _this.outer.removeClass('lg-grabbing').addClass('lg-grab'); + } + }); + } + }; + LightGallery.prototype.triggerPosterClick = function () { + var _this = this; + this.$inner.on('click.lg', function (event) { + if (!_this.dragOrSwipeEnabled && + _this.isPosterElement($LG(event.target))) { + _this.LGel.trigger(lGEvents.posterClick); + } + }); + }; + LightGallery.prototype.manageSwipeClass = function () { + var _touchNext = this.index + 1; + var _touchPrev = this.index - 1; + if (this.settings.loop && this.galleryItems.length > 2) { + if (this.index === 0) { + _touchPrev = this.galleryItems.length - 1; + } + else if (this.index === this.galleryItems.length - 1) { + _touchNext = 0; + } + } + this.outer.find('.lg-item').removeClass('lg-next-slide lg-prev-slide'); + if (_touchPrev > -1) { + this.getSlideItem(_touchPrev).addClass('lg-prev-slide'); + } + this.getSlideItem(_touchNext).addClass('lg-next-slide'); + }; + /** + * Go to next slide + * @param {Boolean} fromTouch - true if slide function called via touch event + * @category lGPublicMethods + * @example + * const plugin = lightGallery(); + * plugin.goToNextSlide(); + * @see Demo + */ + LightGallery.prototype.goToNextSlide = function (fromTouch) { + var _this = this; + var _loop = this.settings.loop; + if (fromTouch && this.galleryItems.length < 3) { + _loop = false; + } + if (!this.lgBusy) { + if (this.index + 1 < this.galleryItems.length) { + this.index++; + this.LGel.trigger(lGEvents.beforeNextSlide, { + index: this.index, + }); + this.slide(this.index, !!fromTouch, false, 'next'); + } + else { + if (_loop) { + this.index = 0; + this.LGel.trigger(lGEvents.beforeNextSlide, { + index: this.index, + }); + this.slide(this.index, !!fromTouch, false, 'next'); + } + else if (this.settings.slideEndAnimation && !fromTouch) { + this.outer.addClass('lg-right-end'); + setTimeout(function () { + _this.outer.removeClass('lg-right-end'); + }, 400); + } + } + } + }; + /** + * Go to previous slides + * @param {Boolean} fromTouch - true if slide function called via touch event + * @category lGPublicMethods + * @example + * const plugin = lightGallery({}); + * plugin.goToPrevSlide(); + * @see Demo + * + */ + LightGallery.prototype.goToPrevSlide = function (fromTouch) { + var _this = this; + var _loop = this.settings.loop; + if (fromTouch && this.galleryItems.length < 3) { + _loop = false; + } + if (!this.lgBusy) { + if (this.index > 0) { + this.index--; + this.LGel.trigger(lGEvents.beforePrevSlide, { + index: this.index, + fromTouch: fromTouch, + }); + this.slide(this.index, !!fromTouch, false, 'prev'); + } + else { + if (_loop) { + this.index = this.galleryItems.length - 1; + this.LGel.trigger(lGEvents.beforePrevSlide, { + index: this.index, + fromTouch: fromTouch, + }); + this.slide(this.index, !!fromTouch, false, 'prev'); + } + else if (this.settings.slideEndAnimation && !fromTouch) { + this.outer.addClass('lg-left-end'); + setTimeout(function () { + _this.outer.removeClass('lg-left-end'); + }, 400); + } + } + } + }; + LightGallery.prototype.keyPress = function () { + var _this = this; + $LG(window).on("keydown.lg.global" + this.lgId, function (e) { + if (_this.lgOpened && + _this.settings.escKey === true && + e.keyCode === 27) { + e.preventDefault(); + if (_this.settings.allowMediaOverlap && + _this.outer.hasClass('lg-can-toggle') && + _this.outer.hasClass('lg-components-open')) { + _this.outer.removeClass('lg-components-open'); + } + else { + _this.closeGallery(); + } + } + if (_this.lgOpened && _this.galleryItems.length > 1) { + if (e.keyCode === 37) { + e.preventDefault(); + _this.goToPrevSlide(); + } + if (e.keyCode === 39) { + e.preventDefault(); + _this.goToNextSlide(); + } + } + }); + }; + LightGallery.prototype.arrow = function () { + var _this = this; + this.getElementById('lg-prev').on('click.lg', function () { + _this.goToPrevSlide(); + }); + this.getElementById('lg-next').on('click.lg', function () { + _this.goToNextSlide(); + }); + }; + LightGallery.prototype.arrowDisable = function (index) { + // Disable arrows if settings.hideControlOnEnd is true + if (!this.settings.loop && this.settings.hideControlOnEnd) { + var $prev = this.getElementById('lg-prev'); + var $next = this.getElementById('lg-next'); + if (index + 1 === this.galleryItems.length) { + $next.attr('disabled', 'disabled').addClass('disabled'); + } + else { + $next.removeAttr('disabled').removeClass('disabled'); + } + if (index === 0) { + $prev.attr('disabled', 'disabled').addClass('disabled'); + } + else { + $prev.removeAttr('disabled').removeClass('disabled'); + } + } + }; + LightGallery.prototype.setTranslate = function ($el, xValue, yValue, scaleX, scaleY) { + if (scaleX === void 0) { scaleX = 1; } + if (scaleY === void 0) { scaleY = 1; } + $el.css('transform', 'translate3d(' + + xValue + + 'px, ' + + yValue + + 'px, 0px) scale3d(' + + scaleX + + ', ' + + scaleY + + ', 1)'); + }; + LightGallery.prototype.mousewheel = function () { + var _this = this; + var lastCall = 0; + this.outer.on('wheel.lg', function (e) { + if (!e.deltaY || _this.galleryItems.length < 2) { + return; + } + e.preventDefault(); + var now = new Date().getTime(); + if (now - lastCall < 1000) { + return; + } + lastCall = now; + if (e.deltaY > 0) { + _this.goToNextSlide(); + } + else if (e.deltaY < 0) { + _this.goToPrevSlide(); + } + }); + }; + LightGallery.prototype.isSlideElement = function (target) { + return (target.hasClass('lg-outer') || + target.hasClass('lg-item') || + target.hasClass('lg-img-wrap') || + target.hasClass('lg-img-rotate')); + }; + LightGallery.prototype.isPosterElement = function (target) { + var playButton = this.getSlideItem(this.index) + .find('.lg-video-play-button') + .get(); + return (target.hasClass('lg-video-poster') || + target.hasClass('lg-video-play-button') || + (playButton && playButton.contains(target.get()))); + }; + /** + * Maximize minimize inline gallery. + * @category lGPublicMethods + */ + LightGallery.prototype.toggleMaximize = function () { + var _this = this; + this.getElementById('lg-maximize').on('click.lg', function () { + _this.$container.toggleClass('lg-inline'); + _this.refreshOnResize(); + }); + }; + LightGallery.prototype.invalidateItems = function () { + for (var index = 0; index < this.items.length; index++) { + var element = this.items[index]; + var $element = $LG(element); + $element.off("click.lgcustom-item-" + $element.attr('data-lg-id')); + } + }; + LightGallery.prototype.trapFocus = function () { + var _this = this; + this.$container.get().focus({ + preventScroll: true, + }); + $LG(window).on("keydown.lg.global" + this.lgId, function (e) { + if (!_this.lgOpened) { + return; + } + var isTabPressed = e.key === 'Tab' || e.keyCode === 9; + if (!isTabPressed) { + return; + } + var focusableEls = utils.getFocusableElements(_this.$container.get()); + var firstFocusableEl = focusableEls[0]; + var lastFocusableEl = focusableEls[focusableEls.length - 1]; + if (e.shiftKey) { + if (document.activeElement === firstFocusableEl) { + lastFocusableEl.focus(); + e.preventDefault(); + } + } + else { + if (document.activeElement === lastFocusableEl) { + firstFocusableEl.focus(); + e.preventDefault(); + } + } + }); + }; + LightGallery.prototype.manageCloseGallery = function () { + var _this = this; + if (!this.settings.closable) + return; + var mousedown = false; + this.getElementById('lg-close').on('click.lg', function () { + _this.closeGallery(); + }); + if (this.settings.closeOnTap) { + // If you drag the slide and release outside gallery gets close on chrome + // for preventing this check mousedown and mouseup happened on .lg-item or lg-outer + this.outer.on('mousedown.lg', function (e) { + var target = $LG(e.target); + if (_this.isSlideElement(target)) { + mousedown = true; + } + else { + mousedown = false; + } + }); + this.outer.on('mousemove.lg', function () { + mousedown = false; + }); + this.outer.on('mouseup.lg', function (e) { + var target = $LG(e.target); + if (_this.isSlideElement(target) && mousedown) { + if (!_this.outer.hasClass('lg-dragging')) { + _this.closeGallery(); + } + } + }); + } + }; + /** + * Close lightGallery if it is opened. + * + * @description If closable is false in the settings, you need to pass true via closeGallery method to force close gallery + * @return returns the estimated time to close gallery completely including the close animation duration + * @category lGPublicMethods + * @example + * const plugin = lightGallery(); + * plugin.closeGallery(); + * + */ + LightGallery.prototype.closeGallery = function (force) { + var _this = this; + if (!this.lgOpened || (!this.settings.closable && !force)) { + return 0; + } + this.LGel.trigger(lGEvents.beforeClose); + if (this.settings.resetScrollPosition && !this.settings.hideScrollbar) { + $LG(window).scrollTop(this.prevScrollTop); + } + var currentItem = this.items[this.index]; + var transform; + if (this.zoomFromOrigin && currentItem) { + var _a = this.mediaContainerPosition, top_4 = _a.top, bottom = _a.bottom; + var _b = this.galleryItems[this.index], __slideVideoInfo = _b.__slideVideoInfo, poster = _b.poster; + var imageSize = utils.getSize(currentItem, this.outer, top_4 + bottom, __slideVideoInfo && poster && this.settings.videoMaxSize); + transform = utils.getTransform(currentItem, this.outer, top_4, bottom, imageSize); + } + if (this.zoomFromOrigin && transform) { + this.outer.addClass('lg-closing lg-zoom-from-image'); + this.getSlideItem(this.index) + .addClass('lg-start-end-progress') + .css('transition-duration', this.settings.startAnimationDuration + 'ms') + .css('transform', transform); + } + else { + this.outer.addClass('lg-hide-items'); + // lg-zoom-from-image is used for setting the opacity to 1 if zoomFromOrigin is true + // If the closing item doesn't have the lg-size attribute, remove this class to avoid the closing css conflicts + this.outer.removeClass('lg-zoom-from-image'); + } + // Unbind all events added by lightGallery + // @todo + //this.$el.off('.lg.tm'); + this.destroyModules(); + this.lGalleryOn = false; + this.isDummyImageRemoved = false; + this.zoomFromOrigin = this.settings.zoomFromOrigin; + clearTimeout(this.hideBarTimeout); + this.hideBarTimeout = false; + $LG('html').removeClass('lg-on'); + this.outer.removeClass('lg-visible lg-components-open'); + // Resetting opacity to 0 isd required as vertical swipe to close function adds inline opacity. + this.$backdrop.removeClass('in').css('opacity', 0); + var removeTimeout = this.zoomFromOrigin && transform + ? Math.max(this.settings.startAnimationDuration, this.settings.backdropDuration) + : this.settings.backdropDuration; + this.$container.removeClass('lg-show-in'); + // Once the closign animation is completed and gallery is invisible + setTimeout(function () { + if (_this.zoomFromOrigin && transform) { + _this.outer.removeClass('lg-zoom-from-image'); + } + _this.$container.removeClass('lg-show'); + // Reset scrollbar + _this.resetScrollBar(); + // Need to remove inline opacity as it is used in the stylesheet as well + _this.$backdrop + .removeAttr('style') + .css('transition-duration', _this.settings.backdropDuration + 'ms'); + _this.outer.removeClass("lg-closing " + _this.settings.startClass); + _this.getSlideItem(_this.index).removeClass('lg-start-end-progress'); + _this.$inner.empty(); + if (_this.lgOpened) { + _this.LGel.trigger(lGEvents.afterClose, { + instance: _this, + }); + } + if (_this.$container.get()) { + _this.$container.get().blur(); + } + _this.lgOpened = false; + }, removeTimeout + 100); + return removeTimeout + 100; + }; + LightGallery.prototype.initModules = function () { + this.plugins.forEach(function (module) { + try { + module.init(); + } + catch (err) { + console.warn("lightGallery:- make sure lightGallery module is properly initiated"); + } + }); + }; + LightGallery.prototype.destroyModules = function (destroy) { + this.plugins.forEach(function (module) { + try { + if (destroy) { + module.destroy(); + } + else { + module.closeGallery && module.closeGallery(); + } + } + catch (err) { + console.warn("lightGallery:- make sure lightGallery module is properly destroyed"); + } + }); + }; + /** + * Refresh lightGallery with new set of children. + * + * @description This is useful to update the gallery when the child elements are changed without calling destroy method. + * + * If you are using dynamic mode, you can pass the modified array of dynamicEl as the first parameter to refresh the dynamic gallery + * @see Demo + * @category lGPublicMethods + * @example + * const plugin = lightGallery(); + * // Delete or add children, then call + * plugin.refresh(); + * + */ + LightGallery.prototype.refresh = function (galleryItems) { + if (!this.settings.dynamic) { + this.invalidateItems(); + } + if (galleryItems) { + this.galleryItems = galleryItems; + } + else { + this.galleryItems = this.getItems(); + } + this.updateControls(); + this.openGalleryOnItemClick(); + this.LGel.trigger(lGEvents.updateSlides); + }; + LightGallery.prototype.updateControls = function () { + this.addSlideVideoInfo(this.galleryItems); + this.updateCounterTotal(); + this.manageSingleSlideClassName(); + }; + LightGallery.prototype.destroyGallery = function () { + this.destroyModules(true); + if (!this.settings.dynamic) { + this.invalidateItems(); + } + $LG(window).off(".lg.global" + this.lgId); + this.LGel.off('.lg'); + this.$container.remove(); + }; + /** + * Destroy lightGallery. + * Destroy lightGallery and its plugin instances completely + * + * @description This method also calls CloseGallery function internally. Returns the time takes to completely close and destroy the instance. + * In case if you want to re-initialize lightGallery right after destroying it, initialize it only once the destroy process is completed. + * You can use refresh method most of the times. + * @category lGPublicMethods + * @example + * const plugin = lightGallery(); + * plugin.destroy(); + * + */ + LightGallery.prototype.destroy = function () { + var closeTimeout = this.closeGallery(true); + if (closeTimeout) { + setTimeout(this.destroyGallery.bind(this), closeTimeout); + } + else { + this.destroyGallery(); + } + return closeTimeout; + }; + return LightGallery; + }()); + + function lightGallery(el, options) { + return new LightGallery(el, options); + } + + return lightGallery; + +}))); +//# sourceMappingURL=lightgallery.umd.js.map diff --git a/assets/lightGallery/lightgallery.umd.js.map b/assets/lightGallery/lightgallery.umd.js.map new file mode 100644 index 0000000..c7c0b48 --- /dev/null +++ b/assets/lightGallery/lightgallery.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lightgallery.umd.js","sources":["../src/lg-events.ts","../src/lg-settings.ts","../src/lgQuery.ts","../src/lg-utils.ts","../src/lightgallery.ts","../src/index.ts"],"sourcesContent":["import { LightGallery } from './lightgallery';\nimport { VideoSource } from './plugins/video/types';\n\n/**\n * List of lightGallery events\n * All events should be documented here\n * Below interfaces are used to build the website documentations\n * */\nexport const lGEvents: {\n [key: string]: string;\n} = {\n afterAppendSlide: 'lgAfterAppendSlide',\n init: 'lgInit',\n hasVideo: 'lgHasVideo',\n containerResize: 'lgContainerResize',\n updateSlides: 'lgUpdateSlides',\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\n beforeOpen: 'lgBeforeOpen',\n afterOpen: 'lgAfterOpen',\n slideItemLoad: 'lgSlideItemLoad',\n beforeSlide: 'lgBeforeSlide',\n afterSlide: 'lgAfterSlide',\n posterClick: 'lgPosterClick',\n dragStart: 'lgDragStart',\n dragMove: 'lgDragMove',\n dragEnd: 'lgDragEnd',\n beforeNextSlide: 'lgBeforeNextSlide',\n beforePrevSlide: 'lgBeforePrevSlide',\n beforeClose: 'lgBeforeClose',\n afterClose: 'lgAfterClose',\n rotateLeft: 'lgRotateLeft',\n rotateRight: 'lgRotateRight',\n flipHorizontal: 'lgFlipHorizontal',\n flipVertical: 'lgFlipVertical',\n autoplay: 'lgAutoplay',\n autoplayStart: 'lgAutoplayStart',\n autoplayStop: 'lgAutoplayStop',\n};\n\n// Follow the below format for the event documentation\n// @method is the method name when event is used with Angular/React components\n\n/**\n * Fired only once when lightGallery is initialized\n * @name lgInit\n * @method onInit\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action on lightGallery initialization.\n * // Init event returns the plugin instance that can be used to call any lightGalley public method\n * let pluginInstance = null;\n * lg.addEventListener('lgInit', (event) => {\n * pluginInstance = event.detail.instance;\n * });\n * lightGallery(lg);\n * @see Methods\n */\nexport interface InitDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired when the slide content has been inserted into it's slide container.\n * @name lgAfterAppendSlide\n * @method onAfterAppendSlide\n */\nexport interface AfterAppendSlideEventDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired immediately before opening the gallery\n * @name lgBeforeOpen\n * @method onBeforeOpen\n */\nexport interface BeforeOpenDetail {}\n\n/**\n * Fired immediately after opening the gallery\n * @name lgAfterOpen\n * @method onAfterOpen\n */\nexport interface AfterOpenDetail {}\n\n/**\n * Fired once the media inside the slide has been completely loaded .\n * @name lgSlideItemLoad\n * @method onSlideItemLoad\n */\nexport interface SlideItemLoadDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * For the first slide, lightGallery adds some delay for displaying the loaded slide item.\n * This delay is required for the transition effect when the slide item is displayed\n * Respect the delay when you use this event\n */\n delay: number;\n\n // Will be true for the first slide\n isFirstSlide: boolean;\n}\n\n/**\n * Fired immediately before each slide transition.\n * @name lgBeforeSlide\n * @method onBeforeSlide\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action before each slide transition\n * lg.addEventListener('lgBeforeSlide', (event) => {\n * const { index, prevIndex } = event.detail;\n * alert(index, prevIndex);\n * });\n * lightGallery(lg);\n */\nexport interface BeforeSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired immediately after each slide transition.\n * @name lgAfterSlide\n * @method onAfterSlide\n */\nexport interface AfterSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired when the video poster is clicked.\n * @name lgPosterClick\n * @method onPosterClick\n */\nexport interface PosterClickDetail {}\n\n/**\n * Fired when the drag event to move to different slide starts.\n * @name lgDragStart\n * @method onDragStart\n */\nexport interface DragStartDetail {}\n\n/**\n * Fired periodically during the drag operation.\n * @name lgDragMove\n * @method onDragMove\n */\nexport interface DragMoveDetail {}\n\n/**\n * Fired when the user has finished the drag operation\n * @name lgDragEnd\n * @method onDragEnd\n */\nexport interface DragEndDetail {}\n\n/**\n * Fired immediately before the start of the close process.\n * @name lgBeforeClose\n * @method onBeforeClose\n */\nexport interface BeforeCloseDetail {}\n\n/**\n * Fired immediately once lightGallery is closed.\n * @name lgAfterClose\n * @method onAfterClose\n */\nexport interface AfterCloseDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired immediately before each \"next\" slide transition\n * @name lgBeforeNextSlide\n * @method onBeforeNextSlide\n */\nexport interface BeforeNextSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired immediately before each \"prev\" slide transition\n * @name lgBeforePrevSlide\n * @method onBeforePrevSlide\n */\nexport interface BeforePrevSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired when the sub-html content (ex : title/ description) has been appended into the slide.\n * @name lgAfterAppendSubHtml\n * @method onAfterAppendSubHtml\n */\nexport interface AfterAppendSubHtmlDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the lightGallery container has been resized.\n * @name lgContainerResize\n * @method onContainerResize\n */\nexport interface ContainerResizeDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when lightGallery detects video slide\n * @name lgHasVideo\n * @method onHasVideo\n */\nexport interface HasVideoDetail {\n /**\n * Index of the slide,\n */\n index: number;\n /**\n * Video source\n */\n src: string;\n /**\n * HTML5 video source if available\n *

\n HTML5 video source = source: {\n src: string;\n type: string;\n }[];\n attributes: HTMLVideoElement;\n *

\n */\n html5Video: VideoSource;\n /**\n * True if video has poster\n */\n hasPoster: boolean;\n}\n\n/**\n * Fired when the image is rotated in anticlockwise direction\n * @name lgRotateLeft\n * @method onRotateLeft\n */\nexport interface RotateLeftDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is rotated in clockwise direction\n * @name lgRotateRight\n * @method onRotateRight\n */\nexport interface RotateRightDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped horizontally\n * @name lgFlipHorizontal\n * @method onFlipHorizontal\n */\nexport interface FlipHorizontalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped vertically\n * @name lgFlipVertical\n * @method onFlipVertical\n */\nexport interface FlipVerticalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n","import { GalleryItem } from './lg-utils';\nimport { LgQuery } from './lgQuery';\nimport { LightGallery } from './lightgallery';\nimport { AutoplaySettings } from './plugins/autoplay/lg-autoplay-settings';\nimport { CommentSettings } from './plugins/comment/lg-comment-settings';\nimport { FullscreenSettings } from './plugins/fullscreen/lg-fullscreen-settings';\nimport { HashSettings } from './plugins/hash/lg-hash-settings';\nimport { MediumZoomSettings } from './plugins/mediumZoom/lg-medium-zoom-settings';\nimport { PagerSettings } from './plugins/pager/lg-pager-settings';\nimport { RotateSettings } from './plugins/rotate/lg-rotate-settings';\nimport { ShareSettings } from './plugins/share/lg-share-settings';\nimport { ThumbnailsSettings } from './plugins/thumbnail/lg-thumbnail-settings';\nimport { VideoSettings } from './plugins/video/lg-video-settings';\nimport { ZoomSettings } from './plugins/zoom/lg-zoom-settings';\n\ntype LightGalleryCoreMobileSettings = Exclude<\n LightGalleryCoreSettings,\n 'mobileSettings'\n>;\n\n// @todo use separate mobile settings for plugins\nexport interface MobileSettings\n extends LightGalleryCoreMobileSettings,\n Partial,\n Partial,\n Partial,\n Partial,\n Partial,\n Partial,\n Partial,\n Partial,\n Partial,\n Partial {}\n\nexport interface LightGalleryCoreStrings {\n closeGallery: string;\n toggleMaximize: string;\n previousSlide: string;\n nextSlide: string;\n download: string;\n playVideo: string;\n mediaLoadingFailed: string;\n}\n\nexport type LightGalleryAllSettings = LightGalleryCoreSettings &\n ZoomSettings &\n ThumbnailsSettings &\n VideoSettings &\n AutoplaySettings &\n CommentSettings &\n FullscreenSettings &\n HashSettings &\n PagerSettings &\n RotateSettings &\n ShareSettings &\n MediumZoomSettings;\n\nexport type LightGallerySettings = Partial;\n\nexport interface LightGalleryCoreSettings {\n /**\n * Type of transition between images.\n */\n mode:\n | 'lg-slide'\n | 'lg-fade'\n | 'lg-zoom-in'\n | 'lg-zoom-in-big'\n | 'lg-zoom-out'\n | 'lg-zoom-out-big'\n | 'lg-zoom-out-in'\n | 'lg-zoom-in-out'\n | 'lg-soft-zoom'\n | 'lg-scale-up'\n | 'lg-slide-circular'\n | 'lg-slide-circular-vertical'\n | 'lg-slide-vertical'\n | 'lg-slide-vertical-growth'\n | 'lg-slide-skew-only'\n | 'lg-slide-skew-only-rev'\n | 'lg-slide-skew-only-y'\n | 'lg-slide-skew-only-y-rev'\n | 'lg-slide-skew'\n | 'lg-slide-skew-rev'\n | 'lg-slide-skew-cross'\n | 'lg-slide-skew-cross-rev'\n | 'lg-slide-skew-ver'\n | 'lg-slide-skew-ver-rev'\n | 'lg-slide-skew-ver-cross'\n | 'lg-slide-skew-ver-cross-rev'\n | 'lg-lollipop'\n | 'lg-lollipop-rev'\n | 'lg-rotate'\n | 'lg-rotate-rev'\n | 'lg-tube';\n\n /**\n * Slide animation CSS easing property\n */\n easing: string;\n\n /**\n *Transition duration (in ms).\n */\n speed: number;\n\n /**\n * If you are using lightGallery for commercial projects, you need to purchase a commercial license\n * to get the license key. For projects that are compatible with GPLv3 license,\n * please contact us for getting a license key at
contact@lightgalleryjs.com.\n * If you want to test lightGallery before purchasing a commercial license, you can\n * use `0000-0000-000-0000` as a temporary license key\n */\n\n licenseKey: string;\n\n /**\n * Height of the gallery.\n * example '100%' , '300px'\n */\n height: string;\n\n /**\n * Width of the gallery.\n * example '100%' , '300px'\n */\n width: string;\n\n /**\n * Add custom class for gallery container\n * This can be used to set different style for different galleries\n */\n addClass: string;\n\n /**\n * Start animation class for the gallery.\n * @description\n *
    \n *
  • startClass will be empty zoomFromOrigin is true.
  • \n *
  • This can be used to change the starting effect when the image is loaded
  • \n *
  • This is also applied when navigating to new slides
  • \n *
\n */\n startClass: string;\n\n /**\n * Enable zoom from origin effect.\n * @description You need to know the original image size upfront and provide it via data-lg-size attribute as data-lg-size=\"1920-1280\"\n *\n * If you don't know, the size of a few images in the list, you can skip the data-lg-size attribute for the particular slides,\n * lightGallery will show the default animation if data-lg-size is not available\n *\n * If you are using responsive images,\n * you can pass a comma separated list of sizes combined with a max-width (up to what size the particular image should be used)\n *\n * example -\n * data-lg-size=\"240-160-375, 400-267-480, 1600-1067\"\n * data-responsive=\"img-240.jpg 375, img-400.jpg 480\"\n * data-src=\"img-1600.jpg\" \n *\n * In the above example, upto 375 width img.240.jpg and lg-size 240-160 will be used.\n * Similarly, upto 480 pixel width size 400-267 and img-400.jpg will be used\n * And above 480, lg-size 1600-1067 and img-1600.jpg will be used\n *\n *
    \n *
  • At the moment, zoomFromOrigin options is supported only for image slides.
  • \n *
  • Will be false if dynamic option is enabled or galleryID found in the URL.
  • \n *
  • startClass will be empty if zoomFromOrigin is true to avoid css conflicts.
  • \n *
\n */\n zoomFromOrigin: boolean;\n\n /**\n * Zoom from image animation duration\n */\n startAnimationDuration: number;\n\n /**\n * Backdrop transition duration.\n * Note - Do not change the value of backdrop via css.\n */\n backdropDuration: number;\n\n /**\n * Configure where the gallery should be appended.\n * Useful to create inline galleries and more\n * It is an empty string in the default settings and later assigned to document.body to avoid accessing document for SSR\n */\n container: HTMLElement | (() => HTMLElement | null) | (string | null);\n\n /**\n * Delay for hiding gallery controls in ms.\n * Pass 0 if you don't want to hide the controls\n */\n hideBarsDelay: number;\n\n /**\n * Delay in hiding controls for the first time when gallery is opened\n */\n showBarsAfter: number;\n\n /**\n * Delay slide transitions.\n * @description This is useful if you want to do any action in the current slide before moving to next slide.\n *
\n * For example, fading out the captions before going to next slide.\n * .lg-slide-progress class name is added to the current slide immediately after calling the slide method.\n * But transition begins only after the delay\n *
\n */\n slideDelay: number;\n\n /**\n * Support legacy browsers\n * @description Currently this is used only for adding support to srcset attribute via picturefill library\n * If true lightGallery will show warning message to include picturefill library\n */\n supportLegacyBrowser: boolean;\n\n /**\n * If true, toolbar, captions and thumbnails will not overlap with media element\n * This will not effect thumbnails if animateThumb is false\n * Also, toggle thumbnails button is not displayed if allowMediaOverlap is false\n *
\n * Note - Changing the position of the media on every slide transition creates a flickering effect.\n * Therefore, the height of the caption is calculated dynamically, only once based on the first slide caption.\n *
\n *
\n * if you have dynamic captions for each media,\n * you can provide an appropriate height for the captions via allowMediaOverlap option\n *
\n */\n allowMediaOverlap: boolean;\n\n /**\n * Video max size.\n * @description This can be over-written by passing specific size via data-lg-size attribute\n * Recommended video resolution and & aspect ratios https://support.google.com/youtube/answer/6375112\n */\n videoMaxSize: string;\n\n /**\n * Automatically load poster image for YouTube videos\n */\n loadYouTubePoster: boolean;\n\n /**\n * Height of the caption for calculating allowMediaOverlap positions\n * Note - this is only used to find the position of media item if allowMediaOverlap is true.\n * Not for setting height of the captions\n * Set 0 if you want to calculate the height of captions dynamically\n */\n defaultCaptionHeight: number;\n\n /**\n * aria-labelledby attribute fot gallery\n */\n ariaLabelledby: string;\n\n /**\n * aria-describedby attribute for gallery\n */\n ariaDescribedby: string;\n\n /**\n * Hide scrollbar when gallery is opened\n * @version V2.5.0\n */\n hideScrollbar: boolean;\n\n /**\n * Reset to previous scrollPosition when lightGallery is closed\n * @description By default, lightGallery doesn't hide the scrollbar for a smooth opening transition.\n * If a user changes the scroll position, lightGallery resets it to the previous value\n * @version V2.5.0\n */\n resetScrollPosition: boolean;\n\n /**\n * If false user won't be able to close the gallery at all\n * This is useful for creating inline galleries.\n */\n closable: boolean;\n\n /**\n * allows vertical drag/swipe to close gallery\n * false if option closable is false\n */\n swipeToClose: boolean;\n /**\n * allows clicks on black area to close gallery.\n */\n closeOnTap: boolean;\n\n /**\n * If false, close button won't be displayed.\n * Useful for creating inline galleries.\n */\n showCloseIcon: boolean;\n\n /**\n * Show maximize icon.\n * Useful for creating inline galleries.\n */\n showMaximizeIcon: boolean;\n\n /**\n * If false, will disable the ability to loop back to the beginning of the gallery from the last slide.\n */\n loop: boolean;\n\n /**\n * Whether the LightGallery could be closed by pressing the \"Esc\" key.\n */\n escKey: boolean;\n\n /**\n * Enable keyboard navigation\n */\n keyPress: boolean;\n\n /**\n * Trap focus within the lightGallery\n * @version V2.5.0\n */\n trapFocus: boolean;\n\n /**\n * If false, prev/next buttons will not be displayed.\n */\n controls: boolean;\n\n /**\n * Enable slideEnd animation\n */\n slideEndAnimation: boolean;\n\n /**\n * If true, prev/next button will be hidden on first/last image.\n * @description Note - this option will be ignored if loop or slideEndAnimation is set to true\n */\n hideControlOnEnd: boolean;\n\n /**\n * ability to navigate to next/prev slides on mousewheel\n */\n mousewheel: boolean;\n\n /**\n * Option to get captions from alt or title tags.\n */\n getCaptionFromTitleOrAlt: boolean;\n\n /**\n * control where the sub-html should be appended.\n * If you choose '.lg-outer', you are responsible for placing the div at the right position.\n * '.lg-outer' is useful if you want show custom HTML outside the normal gallery\n */\n appendSubHtmlTo: '.lg-sub-html' | '.lg-item' | '.lg-outer';\n\n /**\n * Set to true if the selector in \"data-sub-html\" should use the current item as its origin.\n */\n subHtmlSelectorRelative: boolean;\n\n /**\n * number of preload slides\n * @description will exicute only after the current slide is fully loaded.\n * for example, if you click on 4th image and if preload = 1 then 3rd slide and 5th\n * slide will be loaded in the background after the 4th slide is fully loaded..\n * if preload is 2 then 2nd 3rd 5th 6th slides will be preloaded.\n */\n preload: number;\n\n /**\n * Control how many slide items should be kept in dom at a time\n * @description To improve performance by reducing number of gallery items in the dom,\n * lightGallery keeps only the lowest possible number of slides in the dom at a time.\n * This has a minimum value of 3\n */\n numberOfSlideItemsInDom: number;\n\n /**\n * Custom selector property instead of direct children.\n * @description Based on your markup structure, you can specify custom selectors to fetch media data for the gallery\n * Pass \"this\" to select same element\n * You can also pass HTMLCollection directly\n * Example - '.my-selector' | '#my-selector' | this | document.querySelectorAll('.my-selector')\n */\n selector: string | HTMLCollection[];\n\n /**\n * By default selector element relative to the current gallery.\n * Instead of that you can tell lightGallery to select element relative to another element.\n * Example - '.my-selector-container' | '#my-selector-container'\n * In the code this become selector = document.querySelector(this.s.selectWithin ).querySelectorAll(this.s.selector);\n */\n selectWithin: string;\n\n /**\n * Custom html for next control\n */\n nextHtml: string;\n\n /**\n * Custom html for prev control\n */\n prevHtml: string;\n\n /**\n * specify which slide should load initially\n */\n index: number;\n\n /**\n * Set width for iframe.\n */\n iframeWidth: string;\n\n /**\n * Set height for iframe.\n */\n iframeHeight: string;\n\n /**\n * Set max width for iframe.\n */\n iframeMaxWidth: string;\n\n /**\n * Set max height for iframe.\n */\n iframeMaxHeight: string;\n\n /**\n * Enable download button.\n * @description By default download url will be taken from data-src/href attribute but it supports only for modern browsers.\n * If you want you can provide another url for download via data-download-url.\n * pass false in data-download-url if you want to hide download button for the particular slide.\n */\n download: boolean;\n\n /**\n * Whether to show total number of images and index number of currently displayed image.\n */\n counter: boolean;\n\n /**\n * Where the counter should be appended\n */\n appendCounterTo: string;\n\n /**\n * By setting the swipeThreshold (in px) you can set how far the user must swipe for the next/prev image.\n */\n swipeThreshold: number;\n\n /**\n * Enables swipe support for touch devices\n */\n enableSwipe: boolean;\n\n /**\n * Enables desktop mouse drag support\n */\n enableDrag: boolean;\n\n /**\n * LightGallery can be instantiated and launched programmatically by setting this option to true and populating dynamicEl option (see below) with the definitions of images.\n */\n dynamic: boolean;\n\n /**\n * An array of objects (src, iframe, subHtml, thumb, poster, responsive, srcset sizes) representing gallery elements.\n */\n dynamicEl: GalleryItem[];\n\n /**\n * Fetch custom properties from the selector\n * @description this is useful for plugin development\n * By default lightGallery fetches and store all the props selectors to\n * reduce frequent dom interaction for fetching props every time.\n *\n * If you need any addition data to be fetched and stored in the galleryItems variable,\n * you can do this just by passing the prop names via extraProps\n * @example\n * HTML:\n *
\n * \n * \n *
\n * JS:\n * lightGallery(document.getElementById('lightGallery'), {\n * extraProps: ['customProp']\n * })\n * // Note - If you are using dynamic mode, you can pass any custom prop in the galleryItem\n * lightGallery(document.getElementById('lightGallery'), {\n * dynamic: true,\n * dynamicEl: [{\n * src: 'img/img1.jpg',\n * customProp:'abc',\n * }]\n * })\n *\n */\n extraProps: string[];\n\n /**\n * Option to fetch different thumbnail image other than first image\n * @description If you want to use external image for thumbnail,\n * add the path of that image inside \"data-\" attribute\n * and set value of this option to the name of your custom attribute.\n *\n * @example\n *
\n * \n *
\n *\n * lightGallery(document.getElementById('lightGallery'), {\n * exThumbImage: 'data-external-thumb-image'\n * })\n */\n exThumbImage: string;\n\n /**\n * Function to detect mobile devices\n */\n isMobile?: () => boolean;\n\n /**\n * Separate settings for mobile devices\n * @description Note - this is applied only at the time of loading\n * by default controls and close buttons are disabled on mobile devices.\n * use this options if you want to enable them or change any other settings for mobile devices\n * Note - mobileSettings does not merge default values, You need to provide all mobileSettings including default values\n */\n mobileSettings: Partial;\n\n /**\n * Customize string.\n * @description This can be useful if you want to localize the lightGallery strings to other languages.\n * Use your own service to translate the strings and pass it via settings.strings\n * You can find dedicated strings option for all lightGallery modules in their respective documentation.\n * Note - You need to provide values for all the strings. For example, even if you just want to change the closeGallery string, you need to provide all the other strings as well.\n */\n strings: LightGalleryCoreStrings;\n\n plugins: (new (instance: LightGallery, $LG: LgQuery) => any)[];\n}\n\nexport const lightGalleryCoreSettings: LightGalleryCoreSettings = {\n mode: 'lg-slide',\n easing: 'ease',\n speed: 400,\n licenseKey: '0000-0000-000-0000',\n height: '100%',\n width: '100%',\n addClass: '',\n startClass: 'lg-start-zoom',\n backdropDuration: 300,\n container: '',\n startAnimationDuration: 400,\n zoomFromOrigin: true,\n hideBarsDelay: 0,\n showBarsAfter: 10000,\n slideDelay: 0,\n supportLegacyBrowser: true,\n allowMediaOverlap: false,\n videoMaxSize: '1280-720',\n loadYouTubePoster: true,\n defaultCaptionHeight: 0,\n ariaLabelledby: '',\n ariaDescribedby: '',\n resetScrollPosition: true,\n hideScrollbar: false,\n closable: true,\n swipeToClose: true,\n closeOnTap: true,\n showCloseIcon: true,\n showMaximizeIcon: false,\n loop: true,\n escKey: true,\n keyPress: true,\n trapFocus: true,\n controls: true,\n slideEndAnimation: true,\n hideControlOnEnd: false,\n mousewheel: false,\n getCaptionFromTitleOrAlt: true,\n appendSubHtmlTo: '.lg-sub-html',\n subHtmlSelectorRelative: false,\n preload: 2,\n numberOfSlideItemsInDom: 10,\n selector: '',\n selectWithin: '',\n nextHtml: '',\n prevHtml: '',\n index: 0,\n iframeWidth: '100%',\n iframeHeight: '100%',\n iframeMaxWidth: '100%',\n iframeMaxHeight: '100%',\n download: true,\n counter: true,\n appendCounterTo: '.lg-toolbar',\n swipeThreshold: 50,\n enableSwipe: true,\n enableDrag: true,\n dynamic: false,\n dynamicEl: [],\n extraProps: [],\n exThumbImage: '',\n isMobile: undefined,\n mobileSettings: {\n controls: false,\n showCloseIcon: false,\n download: false,\n } as MobileSettings,\n plugins: [],\n strings: {\n closeGallery: 'Close gallery',\n toggleMaximize: 'Toggle maximize',\n previousSlide: 'Previous slide',\n nextSlide: 'Next slide',\n download: 'Download',\n playVideo: 'Play video',\n mediaLoadingFailed: 'Oops... Failed to load content...',\n } as LightGalleryCoreStrings,\n};\n","interface Offset {\n left: number;\n top: number;\n}\n\nfunction initLgPolyfills() {\n (function () {\n if (typeof window.CustomEvent === 'function') return false;\n\n function CustomEvent(event: string, params: any) {\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: null,\n };\n const evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(\n event,\n params.bubbles,\n params.cancelable,\n params.detail,\n );\n return evt;\n }\n\n window.CustomEvent = CustomEvent as any;\n })();\n (function () {\n if (!Element.prototype.matches) {\n Element.prototype.matches =\n (Element.prototype as any).msMatchesSelector ||\n Element.prototype.webkitMatchesSelector;\n }\n })();\n}\n\nexport type LgQuery = (selector: any) => lgQuery;\nexport class lgQuery {\n static eventListeners: { [key: string]: any[] } = {};\n static generateUUID(): string {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(\n /[xy]/g,\n function (c) {\n const r = (Math.random() * 16) | 0,\n v = c == 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n },\n );\n }\n\n private selector: any;\n private firstElement: any;\n private cssVenderPrefixes: string[] = [\n 'TransitionDuration',\n 'TransitionTimingFunction',\n 'Transform',\n 'Transition',\n ];\n constructor(selector: string | Element) {\n this.selector = this._getSelector(selector);\n this.firstElement = this._getFirstEl();\n return this;\n }\n\n private _getSelector(\n selector: string | Element,\n context: Element | Document = document,\n ): Element | null | NodeListOf {\n if (typeof selector !== 'string') {\n return selector;\n }\n context = context || document;\n const fl = selector.substring(0, 1);\n if (fl === '#') {\n return context.querySelector(selector);\n } else {\n return context.querySelectorAll(selector);\n }\n }\n\n private _each(\n func: (\n elements: Element | NodeListOf | null,\n index: number,\n ) => void,\n ): this {\n if (!this.selector) {\n return this;\n }\n if (this.selector.length !== undefined) {\n [].forEach.call(this.selector, func);\n } else {\n func(this.selector, 0);\n }\n return this;\n }\n\n private _setCssVendorPrefix(\n el: any,\n cssProperty: string,\n value?: string | number,\n ): void {\n // prettier-ignore\n const property = cssProperty.replace(/-([a-z])/gi, function (\n s,\n group1,\n ) {\n return group1.toUpperCase();\n });\n if (this.cssVenderPrefixes.indexOf(property) !== -1) {\n el.style[\n property.charAt(0).toLowerCase() + property.slice(1)\n ] = value;\n el.style['webkit' + property] = value;\n el.style['moz' + property] = value;\n el.style['ms' + property] = value;\n el.style['o' + property] = value;\n } else {\n el.style[property] = value;\n }\n }\n\n private _getFirstEl() {\n if (this.selector && this.selector.length !== undefined) {\n return this.selector[0];\n } else {\n return this.selector;\n }\n }\n\n private isEventMatched(event: string, eventName: string): boolean {\n const eventNamespace = eventName.split('.');\n return event\n .split('.')\n .filter((e) => e)\n .every((e) => {\n return eventNamespace.indexOf(e) !== -1;\n });\n }\n\n attr(attr: string): string;\n attr(attr: string, value: string | number | boolean): this;\n attr(attr: string, value?: string | number | boolean): string | this {\n if (value === undefined) {\n if (!this.firstElement) {\n return '';\n }\n return this.firstElement.getAttribute(attr);\n }\n this._each((el: any) => {\n el.setAttribute(attr, value);\n });\n return this;\n }\n\n find(selector: any): lgQuery {\n return $LG(this._getSelector(selector, this.selector));\n }\n\n first(): lgQuery {\n if (this.selector && this.selector.length !== undefined) {\n return $LG(this.selector[0]);\n } else {\n return $LG(this.selector);\n }\n }\n\n eq(index: number): lgQuery {\n return $LG(this.selector[index]);\n }\n\n parent(): lgQuery {\n return $LG(this.selector.parentElement);\n }\n\n get(): HTMLElement {\n return this._getFirstEl();\n }\n\n removeAttr(attributes: string): this {\n const attrs = attributes.split(' ');\n this._each((el: any) => {\n attrs.forEach((attr: string) => el.removeAttribute(attr));\n });\n return this;\n }\n\n wrap(className: string): this {\n if (!this.firstElement) {\n return this;\n }\n const wrapper = document.createElement('div');\n wrapper.className = className;\n this.firstElement.parentNode.insertBefore(wrapper, this.firstElement);\n this.firstElement.parentNode.removeChild(this.firstElement);\n wrapper.appendChild(this.firstElement);\n return this;\n }\n\n addClass(classNames = ''): this {\n this._each((el: any) => {\n // IE doesn't support multiple arguments\n classNames.split(' ').forEach((className) => {\n if (className) {\n el.classList.add(className);\n }\n });\n });\n return this;\n }\n\n removeClass(classNames: string): this {\n this._each((el: any) => {\n // IE doesn't support multiple arguments\n classNames.split(' ').forEach((className) => {\n if (className) {\n el.classList.remove(className);\n }\n });\n });\n return this;\n }\n\n hasClass(className: string): boolean {\n if (!this.firstElement) {\n return false;\n }\n return this.firstElement.classList.contains(className);\n }\n hasAttribute(attribute: string): boolean {\n if (!this.firstElement) {\n return false;\n }\n return this.firstElement.hasAttribute(attribute);\n }\n toggleClass(className: string): this {\n if (!this.firstElement) {\n return this;\n }\n if (this.hasClass(className)) {\n this.removeClass(className);\n } else {\n this.addClass(className);\n }\n return this;\n }\n\n css(property: string, value?: string | number): this {\n this._each((el: any) => {\n this._setCssVendorPrefix(el, property, value);\n });\n return this;\n }\n // Need to pass separate namespaces for separate elements\n on(events: string, listener: (e: any) => void): this {\n if (!this.selector) {\n return this;\n }\n events.split(' ').forEach((event: string) => {\n if (!Array.isArray(lgQuery.eventListeners[event])) {\n lgQuery.eventListeners[event] = [];\n }\n lgQuery.eventListeners[event].push(listener);\n this.selector.addEventListener(event.split('.')[0], listener);\n });\n\n return this;\n }\n // @todo - test this\n once(event: string, listener: (e: any) => void): this {\n this.on(event, () => {\n this.off(event);\n listener(event);\n });\n return this;\n }\n off(event: string): this {\n if (!this.selector) {\n return this;\n }\n Object.keys(lgQuery.eventListeners).forEach((eventName) => {\n if (this.isEventMatched(event, eventName)) {\n lgQuery.eventListeners[eventName].forEach((listener) => {\n this.selector.removeEventListener(\n eventName.split('.')[0],\n listener,\n );\n });\n lgQuery.eventListeners[eventName] = [];\n }\n });\n\n return this;\n }\n trigger(event: string, detail?: Detail): this {\n if (!this.firstElement) {\n return this;\n }\n\n const customEvent = new CustomEvent(event.split('.')[0], {\n detail: detail || null,\n });\n this.firstElement.dispatchEvent(customEvent);\n return this;\n }\n\n // Does not support IE\n load(url: string): this {\n fetch(url)\n .then((res) => res.text())\n .then((html) => {\n this.selector.innerHTML = html;\n });\n return this;\n }\n\n html(): string;\n html(html: string): this;\n html(html?: string): string | this {\n if (html === undefined) {\n if (!this.firstElement) {\n return '';\n }\n return this.firstElement.innerHTML;\n }\n this._each((el: any) => {\n el.innerHTML = html;\n });\n return this;\n }\n append(html: string | HTMLElement): this {\n this._each((el: any) => {\n if (typeof html === 'string') {\n el.insertAdjacentHTML('beforeend', html);\n } else {\n el.appendChild(html);\n }\n });\n return this;\n }\n prepend(html: string | HTMLElement): this {\n this._each((el: any) => {\n if (typeof html === 'string') {\n el.insertAdjacentHTML('afterbegin', html);\n } else if (html instanceof HTMLElement) {\n el.insertBefore(html.cloneNode(true), el.firstChild);\n }\n });\n return this;\n }\n remove(): this {\n this._each((el: any) => {\n el.parentNode.removeChild(el);\n });\n return this;\n }\n empty(): this {\n this._each((el: any) => {\n el.innerHTML = '';\n });\n return this;\n }\n // Supports only window\n scrollTop(): number;\n scrollTop(scrollTop: number): this;\n scrollTop(scrollTop?: number): number | this {\n if (scrollTop !== undefined) {\n document.body.scrollTop = scrollTop;\n document.documentElement.scrollTop = scrollTop;\n return this;\n } else {\n return (\n window.pageYOffset ||\n document.documentElement.scrollTop ||\n document.body.scrollTop ||\n 0\n );\n }\n }\n // Supports only window\n scrollLeft(): number;\n scrollLeft(scrollLeft?: number): this;\n scrollLeft(scrollLeft?: number): number | this {\n if (scrollLeft !== undefined) {\n document.body.scrollLeft = scrollLeft;\n document.documentElement.scrollLeft = scrollLeft;\n return this;\n } else {\n return (\n window.pageXOffset ||\n document.documentElement.scrollLeft ||\n document.body.scrollLeft ||\n 0\n );\n }\n }\n offset(): Offset {\n if (!this.firstElement) {\n return {\n left: 0,\n top: 0,\n };\n }\n const rect = this.firstElement.getBoundingClientRect();\n const bodyMarginLeft = $LG('body').style().marginLeft;\n\n // Minus body margin - https://stackoverflow.com/questions/30711548/is-getboundingclientrect-left-returning-a-wrong-value\n return {\n left: rect.left - parseFloat(bodyMarginLeft) + this.scrollLeft(),\n top: rect.top + this.scrollTop(),\n };\n }\n style(): CSSStyleDeclaration {\n if (!this.firstElement) {\n return {} as CSSStyleDeclaration;\n }\n return (\n this.firstElement.currentStyle ||\n window.getComputedStyle(this.firstElement)\n );\n }\n // Width without padding and border even if box-sizing is used.\n width(): number {\n const style = this.style();\n return (\n this.firstElement.clientWidth -\n parseFloat(style.paddingLeft) -\n parseFloat(style.paddingRight)\n );\n }\n // Height without padding and border even if box-sizing is used.\n height(): number {\n const style = this.style();\n return (\n this.firstElement.clientHeight -\n parseFloat(style.paddingTop) -\n parseFloat(style.paddingBottom)\n );\n }\n}\n\nexport function $LG(selector: any): lgQuery {\n initLgPolyfills();\n return new lgQuery(selector);\n}\n","import { $LG, lgQuery } from './lgQuery';\nimport { VideoSource } from './plugins/video/types';\nimport { VideoInfo } from './types';\n\nexport interface ImageSize {\n width: number;\n height: number;\n}\n\nexport interface ImageSources {\n media?: string;\n srcset: string;\n sizes?: string;\n type?: string;\n}\n\nexport interface GalleryItem {\n /**\n * url of the media\n * @data-attr data-src\n */\n src?: string;\n\n /**\n * Source attributes for the picture element\n * @data-attr data-sources\n */\n sources?: ImageSources[];\n\n /**\n * Thumbnail url\n * @description By default lightGallery uses the image inside gallery selector as thumbnail.\n * But, If you want to use external image for thumbnail,\n * pass the thumbnail url via any data attribute and\n * pass the attribute name via exThumbImage option\n * @example\n *
\n * \n *
\n *\n * lightGallery(document.getElementById('lightGallery'), {\n * exThumbImage: 'data-external-thumb-image'\n * })\n * @data-attr data-*\n */\n thumb?: string;\n\n /**\n * alt attribute for the image\n * @data-attr alt\n */\n alt?: string;\n\n /**\n * Title attribute for the video\n * @data-attr title\n */\n title?: string;\n\n /**\n * Title for iframe\n * @data-attr data-iframe-title\n */\n iframeTitle?: string;\n\n /**\n * Caption for the slide\n * @description You can either pass the HTML markup or the ID or class name of the element which contains the captions\n * @data-attr data-sub-html\n */\n subHtml?: string;\n\n /**\n * url of the file which contain the sub html.\n * @description Note - Does not support Internet Explorer browser\n * @data-attr data-sub-html-url\n */\n subHtmlUrl?: string;\n\n /**\n * Video source\n * @data-attr data-video\n */\n video?: VideoSource;\n\n /**\n * Poster url\n * @data-attr data-poster\n */\n poster?: string;\n\n /**\n * Custom slide name to use in the url when hash plugin is enabled\n * @data-attr data-slide-name\n */\n slideName?: string;\n\n /**\n * List of images and viewport's max width separated by comma.\n * @description Ex?: img/1-375.jpg 375, img/1-480.jpg 480, img/1-757.jpg 757.\n * @data-attr data-responsive\n */\n responsive?: string;\n\n /**\n * srcset attribute values for the main image\n * @data-attr data-srcset\n */\n srcset?: string;\n\n /**\n * srcset sizes attribute for the main image\n * @data-attr data-sizes\n */\n sizes?: string;\n\n /**\n * Set true is you want to open your url in an iframe\n * @data-attr data-iframe\n */\n iframe?: boolean;\n\n /**\n * Download url for your image/video.\n * @description Pass false if you want to disable the download button.\n * @data-attr data-download-url\n */\n downloadUrl?: string | boolean;\n\n /**\n * Name of the file after it is downloaded.\n * @description The HTML value of the download attribute.\n * There are no restrictions on allowed values, and the browser will automatically\n * detect the correct file extension and add it to the file (.img, .pdf, .txt, .html, etc.).\n * More info\n * @data-attr data-download\n */\n download?: string | boolean;\n\n /**\n * Actual size of the image in px.\n * @description This is used in zoom plugin to see the actual size of the image when double taped on the image.\n * @data-attr data-width\n */\n width?: string;\n\n /**\n * Facebook share URL.\n * @description Specify only if you want to provide separate share URL for the specific slide. By default, current browser URL is taken.\n * @data-attr data-facebook-share-url\n */\n facebookShareUrl?: string;\n\n /**\n * Tweet text\n * @data-attr data-tweet-text\n */\n tweetText?: string;\n\n /**\n * Twitter share URL.\n * @description Specify only if you want to provide separate share URL for the specific slide. By default, current browser URL will be taken.\n * @data-attr data-twitter-share-url\n */\n twitterShareUrl?: string;\n\n /**\n * Pinterest share URL.\n * @description Specify only if you want to provide separate share URL for the specific slide. By default, current browser URL will be taken.\n * Note?: Pinterest requires absolute URL\n * @data-attr data-pinterest-share-url\n */\n pinterestShareUrl?: string;\n\n /**\n * Description for Pinterest post.\n * @data-attr data-pinterest-text\n */\n pinterestText?: string;\n\n /**\n * Facebook comments body html\n * @description Please refer facebook official documentation for generating the HTML markup\n * @example\n * \n * \n * @data-attr data-fb-html\n */\n fbHtml?: string;\n\n /**\n * Disqus page identifier\n * @description Please refer official disqus documentation for more info\n * @data-attr data-disqus-identifier\n */\n disqusIdentifier?: string;\n\n /**\n * Disqus page url\n * @description Please refer official disqus documentation for more info\n * @data-attr data-disqus-url\n */\n disqusUrl?: string;\n\n __slideVideoInfo?: VideoInfo;\n [key: string]: any;\n}\n\nconst defaultDynamicOptions = [\n 'src',\n 'sources',\n 'subHtml',\n 'subHtmlUrl',\n 'html',\n 'video',\n 'poster',\n 'slideName',\n 'responsive',\n 'srcset',\n 'sizes',\n 'iframe',\n 'downloadUrl',\n 'download',\n 'width',\n 'facebookShareUrl',\n 'tweetText',\n 'iframeTitle',\n 'twitterShareUrl',\n 'pinterestShareUrl',\n 'pinterestText',\n 'fbHtml',\n 'disqusIdentifier',\n 'disqusUrl',\n];\n\n// Convert html data-attribute to camalcase\nexport function convertToData(attr: string): string {\n // FInd a way for lgsize\n if (attr === 'href') {\n return 'src';\n }\n attr = attr.replace('data-', '');\n attr = attr.charAt(0).toLowerCase() + attr.slice(1);\n attr = attr.replace(/-([a-z])/g, (g) => g[1].toUpperCase());\n\n return attr;\n}\n\nconst utils = {\n /**\n * Fetches HTML content from a given URL and inserts it into a specified element.\n *\n * @param url - The URL to fetch the HTML content from.\n * @param element - The DOM element (jQuery object) to insert the HTML content into.\n * @param insertMethod - The method to insert the HTML ('append' or 'replace').\n */\n fetchCaptionFromUrl(\n url: string,\n element: lgQuery,\n insertMethod: 'append' | 'replace',\n ): void {\n // Fetch content from the URL\n fetch(url)\n .then((response) => response.text())\n .then((htmlContent) => {\n if (insertMethod === 'append') {\n const contentDiv = `
${htmlContent}
`;\n element.append(contentDiv);\n } else {\n element.html(htmlContent);\n }\n });\n },\n /**\n * get possible width and height from the lgSize attribute. Used for ZoomFromOrigin option\n */\n getSize(\n el: HTMLElement,\n container: lgQuery,\n spacing = 0,\n defaultLgSize?: string,\n ): ImageSize | undefined {\n const LGel = $LG(el);\n let lgSize = LGel.attr('data-lg-size') || defaultLgSize;\n\n if (!lgSize) {\n return;\n }\n\n const isResponsiveSizes = lgSize.split(',');\n // if at-least two viewport sizes are available\n if (isResponsiveSizes[1]) {\n const wWidth = window.innerWidth;\n for (let i = 0; i < isResponsiveSizes.length; i++) {\n const size = isResponsiveSizes[i];\n const responsiveWidth = parseInt(size.split('-')[2], 10);\n if (responsiveWidth > wWidth) {\n lgSize = size;\n break;\n }\n\n // take last item as last option\n if (i === isResponsiveSizes.length - 1) {\n lgSize = size;\n }\n }\n }\n\n const size = lgSize.split('-');\n\n const width = parseInt(size[0], 10);\n const height = parseInt(size[1], 10);\n\n const cWidth = container.width();\n const cHeight = container.height() - spacing;\n\n const maxWidth = Math.min(cWidth, width);\n const maxHeight = Math.min(cHeight, height);\n\n const ratio = Math.min(maxWidth / width, maxHeight / height);\n\n return { width: width * ratio, height: height * ratio };\n },\n\n /**\n * @desc Get transform value based on the imageSize. Used for ZoomFromOrigin option\n * @param {jQuery Element}\n * @returns {String} Transform CSS string\n */\n getTransform(\n el: HTMLElement,\n container: lgQuery,\n top: number,\n bottom: number,\n imageSize?: ImageSize,\n ): string | undefined {\n if (!imageSize) {\n return;\n }\n const LGel = $LG(el).find('img').first();\n if (!LGel.get()) {\n return;\n }\n\n const containerRect = container.get().getBoundingClientRect();\n\n const wWidth = containerRect.width;\n\n // using innerWidth to include mobile safari bottom bar\n const wHeight = container.height() - (top + bottom);\n\n const elWidth = LGel.width();\n const elHeight = LGel.height();\n\n const elStyle = LGel.style();\n let x =\n (wWidth - elWidth) / 2 -\n LGel.offset().left +\n (parseFloat(elStyle.paddingLeft) || 0) +\n (parseFloat(elStyle.borderLeft) || 0) +\n $LG(window).scrollLeft() +\n containerRect.left;\n let y =\n (wHeight - elHeight) / 2 -\n LGel.offset().top +\n (parseFloat(elStyle.paddingTop) || 0) +\n (parseFloat(elStyle.borderTop) || 0) +\n $LG(window).scrollTop() +\n top;\n\n const scX = elWidth / imageSize.width;\n const scY = elHeight / imageSize.height;\n\n const transform =\n 'translate3d(' +\n (x *= -1) +\n 'px, ' +\n (y *= -1) +\n 'px, 0) scale3d(' +\n scX +\n ', ' +\n scY +\n ', 1)';\n return transform;\n },\n\n getIframeMarkup(\n iframeWidth: string,\n iframeHeight: string,\n iframeMaxWidth: string,\n iframeMaxHeight: string,\n src?: string,\n iframeTitle?: string,\n ): string {\n const title = iframeTitle ? 'title=\"' + iframeTitle + '\"' : '';\n return `
\n \n
`;\n },\n\n getImgMarkup(\n index: number,\n src: string,\n altAttr: string,\n srcset?: string,\n sizes?: string,\n sources?: ImageSources[],\n ): string {\n const srcsetAttr = srcset ? `srcset=\"${srcset}\"` : '';\n const sizesAttr = sizes ? `sizes=\"${sizes}\"` : '';\n const imgMarkup = ``;\n let sourceTag = '';\n if (sources) {\n const sourceObj =\n typeof sources === 'string' ? JSON.parse(sources) : sources;\n\n sourceTag = sourceObj.map((source: any) => {\n let attrs = '';\n Object.keys(source).forEach((key) => {\n // Do not remove the first space as it is required to separate the attributes\n attrs += ` ${key}=\"${source[key]}\"`;\n });\n return ``;\n });\n }\n return `${sourceTag}${imgMarkup}`;\n },\n\n // Get src from responsive src\n getResponsiveSrc(srcItms: string[]): string {\n const rsWidth = [];\n const rsSrc = [];\n let src = '';\n for (let i = 0; i < srcItms.length; i++) {\n const _src = srcItms[i].split(' ');\n\n // Manage empty space\n if (_src[0] === '') {\n _src.splice(0, 1);\n }\n\n rsSrc.push(_src[0]);\n rsWidth.push(_src[1]);\n }\n\n const wWidth = window.innerWidth;\n for (let j = 0; j < rsWidth.length; j++) {\n if (parseInt(rsWidth[j], 10) > wWidth) {\n src = rsSrc[j];\n break;\n }\n }\n return src;\n },\n\n isImageLoaded(img: HTMLImageElement): boolean {\n if (!img) return false;\n // During the onload event, IE correctly identifies any images that\n // weren’t downloaded as not complete. Others should too. Gecko-based\n // browsers act like NS4 in that they report this incorrectly.\n if (!img.complete) {\n return false;\n }\n\n // However, they do have two very useful properties: naturalWidth and\n // naturalHeight. These give the true size of the image. If it failed\n // to load, either of these should be zero.\n if (img.naturalWidth === 0) {\n return false;\n }\n\n // No other way of checking: assume it’s ok.\n return true;\n },\n\n getVideoPosterMarkup(\n _poster: string,\n dummyImg: string | HTMLElement,\n videoContStyle: string,\n playVideoString: string,\n _isVideo?: VideoInfo,\n ): string {\n let videoClass = '';\n if (_isVideo && _isVideo.youtube) {\n videoClass = 'lg-has-youtube';\n } else if (_isVideo && _isVideo.vimeo) {\n videoClass = 'lg-has-vimeo';\n } else {\n videoClass = 'lg-has-html5';\n }\n let _dummy = dummyImg;\n if (typeof dummyImg !== 'string') {\n _dummy = dummyImg.outerHTML;\n }\n return `
\n
\n \n ${playVideoString}\n \n \n \n \n \n \n \n
\n ${_dummy}\n \n
`;\n },\n\n getFocusableElements(container: HTMLElement): NodeListOf {\n const elements = container.querySelectorAll(\n 'a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type=\"text\"]:not([disabled]), input[type=\"radio\"]:not([disabled]), input[type=\"checkbox\"]:not([disabled]), select:not([disabled])',\n );\n const visibleElements = [].filter.call(elements, (element) => {\n const style = window.getComputedStyle(element);\n return style.display !== 'none' && style.visibility !== 'hidden';\n });\n return (visibleElements as unknown) as NodeListOf;\n },\n\n /**\n * @desc Create dynamic elements array from gallery items when dynamic option is false\n * It helps to avoid frequent DOM interaction\n * and avoid multiple checks for dynamic elments\n *\n * @returns {Array} dynamicEl\n */\n getDynamicOptions(\n items: any,\n extraProps: string[],\n getCaptionFromTitleOrAlt: boolean,\n exThumbImage: string,\n ): GalleryItem[] {\n const dynamicElements: GalleryItem[] = [];\n const availableDynamicOptions = [\n ...defaultDynamicOptions,\n ...extraProps,\n ];\n [].forEach.call(items, (item: HTMLElement) => {\n const dynamicEl: GalleryItem = {} as GalleryItem;\n for (let i = 0; i < item.attributes.length; i++) {\n const attr = item.attributes[i];\n if (attr.specified) {\n const dynamicAttr = convertToData(attr.name);\n let label = '';\n if (availableDynamicOptions.indexOf(dynamicAttr) > -1) {\n label = dynamicAttr;\n }\n if (label) {\n (dynamicEl as any)[label] = attr.value;\n }\n }\n }\n const currentItem = $LG(item);\n const alt = currentItem.find('img').first().attr('alt');\n const title = currentItem.attr('title');\n\n const thumb = exThumbImage\n ? currentItem.attr(exThumbImage)\n : currentItem.find('img').first().attr('src');\n dynamicEl.thumb = thumb;\n\n if (getCaptionFromTitleOrAlt && !dynamicEl.subHtml) {\n dynamicEl.subHtml = title || alt || '';\n }\n dynamicEl.alt = alt || title || '';\n dynamicElements.push(dynamicEl);\n });\n return dynamicElements;\n },\n isMobile(): boolean {\n return /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);\n },\n /**\n * @desc Check the given src is video\n * @param {String} src\n * @return {Object} video type\n * Ex:{ youtube : [\"//www.youtube.com/watch?v=c0asJgSyxcY\", \"c0asJgSyxcY\"] }\n *\n * @todo - this information can be moved to dynamicEl to avoid frequent calls\n */\n\n isVideo(\n src: string,\n isHTML5VIdeo: boolean,\n index: number,\n ): VideoInfo | undefined {\n if (!src) {\n if (isHTML5VIdeo) {\n return {\n html5: true,\n };\n } else {\n console.error(\n 'lightGallery :- data-src is not provided on slide item ' +\n (index + 1) +\n '. Please make sure the selector property is properly configured. More info - https://www.lightgalleryjs.com/demos/html-markup/',\n );\n return;\n }\n }\n\n const youtube = src.match(\n /\\/\\/(?:www\\.)?youtu(?:\\.be|be\\.com|be-nocookie\\.com)\\/(?:watch\\?v=|embed\\/)?([a-z0-9\\-\\_\\%]+)([\\&|?][\\S]*)*/i,\n );\n const vimeo = src.match(\n /\\/\\/(?:www\\.)?(?:player\\.)?vimeo.com\\/(?:video\\/)?([0-9a-z\\-_]+)(.*)?/i,\n );\n const wistia = src.match(\n /https?:\\/\\/(.+)?(wistia\\.com|wi\\.st)\\/(medias|embed)\\/([0-9a-z\\-_]+)(.*)/,\n );\n\n if (youtube) {\n return {\n youtube,\n };\n } else if (vimeo) {\n return {\n vimeo,\n };\n } else if (wistia) {\n return {\n wistia,\n };\n }\n },\n};\n\nexport default utils;\n","import {\n AfterAppendSlideEventDetail,\n AfterAppendSubHtmlDetail,\n BeforeSlideDetail,\n lGEvents,\n SlideItemLoadDetail,\n} from './lg-events';\nimport {\n LightGalleryAllSettings,\n lightGalleryCoreSettings,\n LightGallerySettings,\n} from './lg-settings';\nimport utils, { GalleryItem, ImageSize } from './lg-utils';\nimport { $LG, lgQuery } from './lgQuery';\nimport {\n Coords,\n MediaContainerPosition,\n SlideDirection,\n VideoInfo,\n} from './types';\n\ndeclare let picturefill: any;\n\n// @ref - https://stackoverflow.com/questions/3971841/how-to-resize-images-proportionally-keeping-the-aspect-ratio\n// @ref - https://2ality.com/2017/04/setting-up-multi-platform-packages.html\n\n// Unique id for each gallery\nlet lgId = 0;\n\nexport class LightGallery {\n public settings!: LightGalleryAllSettings;\n public galleryItems!: GalleryItem[];\n\n // Current gallery item\n public lgId!: number;\n\n public el!: HTMLElement;\n public LGel!: lgQuery;\n public lgOpened = false;\n\n public index = 0;\n\n // lightGallery modules\n public plugins: any[] = [];\n\n // false when lightGallery load first slide content;\n public lGalleryOn = false;\n\n // True when a slide animation is in progress\n public lgBusy = false;\n\n // Type of touch action - {swipe, zoomSwipe, pinch}\n public touchAction?: 'swipe' | 'zoomSwipe' | 'pinch';\n\n // Direction of swipe/drag - {horizontal, vertical}\n public swipeDirection?: 'horizontal' | 'vertical';\n\n // Timeout function for hiding controls;\n public hideBarTimeout: any;\n\n public currentItemsInDom: string[] = [];\n\n public outer!: lgQuery;\n\n public items: any;\n\n public $backdrop!: lgQuery;\n public $lgComponents!: lgQuery;\n\n public $container!: lgQuery;\n\n public $inner!: lgQuery;\n public $content!: lgQuery;\n public $toolbar!: lgQuery;\n\n // Scroll top value before lightGallery is opened\n public prevScrollTop = 0;\n\n public bodyPaddingRight = 0;\n\n private zoomFromOrigin!: boolean;\n\n private currentImageSize?: ImageSize;\n\n private isDummyImageRemoved = false;\n\n private dragOrSwipeEnabled = false;\n\n public mediaContainerPosition = {\n top: 0,\n bottom: 0,\n };\n\n constructor(element: HTMLElement, options?: LightGallerySettings) {\n if (!element) {\n return this;\n }\n lgId++;\n this.lgId = lgId;\n\n this.el = element;\n this.LGel = $LG(element);\n\n this.generateSettings(options);\n\n this.buildModules();\n\n // When using dynamic mode, ensure dynamicEl is an array\n if (\n this.settings.dynamic &&\n this.settings.dynamicEl !== undefined &&\n !Array.isArray(this.settings.dynamicEl)\n ) {\n throw 'When using dynamic mode, you must also define dynamicEl as an Array.';\n }\n\n this.galleryItems = this.getItems();\n this.normalizeSettings();\n\n // Gallery items\n\n this.init();\n\n this.validateLicense();\n\n return this;\n }\n\n private generateSettings(options?: LightGallerySettings) {\n // lightGallery settings\n this.settings = {\n ...lightGalleryCoreSettings,\n ...options,\n } as LightGalleryAllSettings;\n if (\n this.settings.isMobile &&\n typeof this.settings.isMobile === 'function'\n ? this.settings.isMobile()\n : utils.isMobile()\n ) {\n const mobileSettings = {\n ...this.settings.mobileSettings,\n ...this.settings.mobileSettings,\n };\n this.settings = { ...this.settings, ...mobileSettings };\n }\n }\n\n private normalizeSettings() {\n if (this.settings.slideEndAnimation) {\n this.settings.hideControlOnEnd = false;\n }\n if (!this.settings.closable) {\n this.settings.swipeToClose = false;\n }\n\n // And reset it on close to get the correct value next time\n this.zoomFromOrigin = this.settings.zoomFromOrigin;\n\n // At the moment, Zoom from image doesn't support dynamic options\n // @todo add zoomFromOrigin support for dynamic images\n if (this.settings.dynamic) {\n this.zoomFromOrigin = false;\n }\n\n if (this.settings.container) {\n const { container } = this.settings;\n if (typeof container === 'function') {\n this.settings.container = container();\n } else if (typeof container === 'string') {\n const el = document.querySelector(container);\n this.settings.container = el ?? document.body;\n }\n } else {\n this.settings.container = document.body;\n }\n\n // settings.preload should not be grater than $item.length\n this.settings.preload = Math.min(\n this.settings.preload,\n this.galleryItems.length,\n );\n }\n\n init(): void {\n this.addSlideVideoInfo(this.galleryItems);\n\n this.buildStructure();\n\n this.LGel.trigger(lGEvents.init, {\n instance: this,\n });\n\n if (this.settings.keyPress) {\n this.keyPress();\n }\n\n setTimeout(() => {\n this.enableDrag();\n this.enableSwipe();\n this.triggerPosterClick();\n }, 50);\n\n this.arrow();\n if (this.settings.mousewheel) {\n this.mousewheel();\n }\n\n if (!this.settings.dynamic) {\n this.openGalleryOnItemClick();\n }\n }\n\n openGalleryOnItemClick(): void {\n // Using for loop instead of using bubbling as the items can be any html element.\n for (let index = 0; index < this.items.length; index++) {\n const element = this.items[index];\n const $element = $LG(element);\n // Using different namespace for click because click event should not unbind if selector is same object('this')\n // @todo manage all event listners - should have namespace that represent element\n const uuid = lgQuery.generateUUID();\n $element\n .attr('data-lg-id', uuid)\n .on(`click.lgcustom-item-${uuid}`, (e) => {\n e.preventDefault();\n const currentItemIndex = this.settings.index || index;\n this.openGallery(currentItemIndex, element);\n });\n }\n }\n\n /**\n * Module constructor\n * Modules are build incrementally.\n * Gallery should be opened only once all the modules are initialized.\n * use moduleBuildTimeout to make sure this\n */\n buildModules(): void {\n this.settings.plugins.forEach((plugin) => {\n this.plugins.push(new plugin(this, $LG));\n });\n }\n\n validateLicense(): void {\n if (!this.settings.licenseKey) {\n console.error('Please provide a valid license key');\n } else if (this.settings.licenseKey === '0000-0000-000-0000') {\n console.warn(\n `lightGallery: ${this.settings.licenseKey} license key is not valid for production use`,\n );\n }\n }\n\n getSlideItem(index: number): lgQuery {\n return $LG(this.getSlideItemId(index));\n }\n\n getSlideItemId(index: number): string {\n return `#lg-item-${this.lgId}-${index}`;\n }\n\n getIdName(id: string): string {\n return `${id}-${this.lgId}`;\n }\n getElementById(id: string): lgQuery {\n return $LG(`#${this.getIdName(id)}`);\n }\n\n manageSingleSlideClassName(): void {\n if (this.galleryItems.length < 2) {\n this.outer.addClass('lg-single-item');\n } else {\n this.outer.removeClass('lg-single-item');\n }\n }\n\n buildStructure(): void {\n const container = this.$container && this.$container.get();\n if (container) {\n return;\n }\n let controls = '';\n let subHtmlCont = '';\n\n // Create controls\n if (this.settings.controls) {\n controls = `\n `;\n }\n\n if (this.settings.appendSubHtmlTo !== '.lg-item') {\n subHtmlCont =\n '
';\n }\n\n let addClasses = '';\n\n if (this.settings.allowMediaOverlap) {\n // Do not remove space before last single quote\n addClasses += 'lg-media-overlap ';\n }\n\n const ariaLabelledby = this.settings.ariaLabelledby\n ? 'aria-labelledby=\"' + this.settings.ariaLabelledby + '\"'\n : '';\n const ariaDescribedby = this.settings.ariaDescribedby\n ? 'aria-describedby=\"' + this.settings.ariaDescribedby + '\"'\n : '';\n\n const containerClassName = `lg-container ${this.settings.addClass} ${\n document.body !== this.settings.container ? 'lg-inline' : ''\n }`;\n const closeIcon =\n this.settings.closable && this.settings.showCloseIcon\n ? ``\n : '';\n const maximizeIcon = this.settings.showMaximizeIcon\n ? ``\n : '';\n const template = `\n
\n
\n\n
\n\n
\n
\n
\n ${controls}\n
\n
\n ${maximizeIcon}\n ${closeIcon}\n
\n ${\n this.settings.appendSubHtmlTo === '.lg-outer'\n ? subHtmlCont\n : ''\n }\n
\n ${\n this.settings.appendSubHtmlTo === '.lg-sub-html'\n ? subHtmlCont\n : ''\n }\n
\n
\n
\n `;\n\n $LG(this.settings.container).append(template);\n\n if (document.body !== this.settings.container) {\n $LG(this.settings.container).css('position', 'relative');\n }\n\n this.outer = this.getElementById('lg-outer');\n this.$lgComponents = this.getElementById('lg-components');\n this.$backdrop = this.getElementById('lg-backdrop');\n this.$container = this.getElementById('lg-container');\n this.$inner = this.getElementById('lg-inner');\n this.$content = this.getElementById('lg-content');\n this.$toolbar = this.getElementById('lg-toolbar');\n\n this.$backdrop.css(\n 'transition-duration',\n this.settings.backdropDuration + 'ms',\n );\n\n let outerClassNames = `${this.settings.mode} `;\n\n this.manageSingleSlideClassName();\n\n if (this.settings.enableDrag) {\n outerClassNames += 'lg-grab ';\n }\n\n this.outer.addClass(outerClassNames);\n\n this.$inner.css('transition-timing-function', this.settings.easing);\n this.$inner.css('transition-duration', this.settings.speed + 'ms');\n\n if (this.settings.download) {\n this.$toolbar.append(\n ``,\n );\n }\n\n this.counter();\n\n $LG(window).on(\n `resize.lg.global${this.lgId} orientationchange.lg.global${this.lgId}`,\n () => {\n this.refreshOnResize();\n },\n );\n\n this.hideBars();\n\n this.manageCloseGallery();\n this.toggleMaximize();\n\n this.initModules();\n }\n\n refreshOnResize(): void {\n if (this.lgOpened) {\n const currentGalleryItem = this.galleryItems[this.index];\n const { __slideVideoInfo } = currentGalleryItem;\n\n this.mediaContainerPosition = this.getMediaContainerPosition();\n const { top, bottom } = this.mediaContainerPosition;\n this.currentImageSize = utils.getSize(\n this.items[this.index],\n this.outer,\n top + bottom,\n __slideVideoInfo && this.settings.videoMaxSize,\n );\n if (__slideVideoInfo) {\n this.resizeVideoSlide(this.index, this.currentImageSize);\n }\n if (this.zoomFromOrigin && !this.isDummyImageRemoved) {\n const imgStyle = this.getDummyImgStyles(this.currentImageSize);\n this.outer\n .find('.lg-current .lg-dummy-img')\n .first()\n .attr('style', imgStyle);\n }\n this.LGel.trigger(lGEvents.containerResize);\n }\n }\n\n resizeVideoSlide(index: number, imageSize?: ImageSize): void {\n const lgVideoStyle = this.getVideoContStyle(imageSize);\n const currentSlide = this.getSlideItem(index);\n currentSlide.find('.lg-video-cont').attr('style', lgVideoStyle);\n }\n\n /**\n * Update slides dynamically.\n * Add, edit or delete slides dynamically when lightGallery is opened.\n * Modify the current gallery items and pass it via updateSlides method\n * @note\n * - Do not mutate existing lightGallery items directly.\n * - Always pass new list of gallery items\n * - You need to take care of thumbnails outside the gallery if any\n * - user this method only if you want to update slides when the gallery is opened. Otherwise, use `refresh()` method.\n * @param items Gallery items\n * @param index After the update operation, which slide gallery should navigate to\n * @category lGPublicMethods\n * @example\n * const plugin = lightGallery();\n *\n * // Adding slides dynamically\n * let galleryItems = [\n * // Access existing lightGallery items\n * // galleryItems are automatically generated internally from the gallery HTML markup\n * // or directly from galleryItems when dynamic gallery is used\n * ...plugin.galleryItems,\n * ...[\n * {\n * src: 'img/img-1.png',\n * thumb: 'img/thumb1.png',\n * },\n * ],\n * ];\n * plugin.updateSlides(\n * galleryItems,\n * plugin.index,\n * );\n *\n *\n * // Remove slides dynamically\n * galleryItems = JSON.parse(\n * JSON.stringify(updateSlideInstance.galleryItems),\n * );\n * galleryItems.shift();\n * updateSlideInstance.updateSlides(galleryItems, 1);\n * @see Demo\n */\n updateSlides(items: GalleryItem[], index: number): void {\n if (this.index > items.length - 1) {\n this.index = items.length - 1;\n }\n if (items.length === 1) {\n this.index = 0;\n }\n if (!items.length) {\n this.closeGallery();\n return;\n }\n const currentSrc = this.galleryItems[index].src;\n this.galleryItems = items;\n this.updateControls();\n this.$inner.empty();\n this.currentItemsInDom = [];\n\n let _index = 0;\n // Find the current index based on source value of the slide\n this.galleryItems.some((galleryItem, itemIndex) => {\n if (galleryItem.src === currentSrc) {\n _index = itemIndex;\n return true;\n }\n return false;\n });\n\n this.currentItemsInDom = this.organizeSlideItems(_index, -1);\n this.loadContent(_index, true);\n this.getSlideItem(_index).addClass('lg-current');\n\n this.index = _index;\n this.updateCurrentCounter(_index);\n this.LGel.trigger(lGEvents.updateSlides);\n }\n\n // Get gallery items based on multiple conditions\n getItems(): GalleryItem[] {\n // Gallery items\n this.items = [];\n if (!this.settings.dynamic) {\n if (this.settings.selector === 'this') {\n this.items.push(this.el);\n } else if (this.settings.selector) {\n if (typeof this.settings.selector === 'string') {\n if (this.settings.selectWithin) {\n const selectWithin = $LG(this.settings.selectWithin);\n this.items = selectWithin\n .find(this.settings.selector)\n .get();\n } else {\n this.items = this.el.querySelectorAll(\n this.settings.selector,\n );\n }\n } else {\n this.items = this.settings.selector;\n }\n } else {\n this.items = this.el.children;\n }\n return utils.getDynamicOptions(\n this.items,\n this.settings.extraProps,\n this.settings.getCaptionFromTitleOrAlt,\n this.settings.exThumbImage,\n );\n } else {\n return this.settings.dynamicEl || [];\n }\n }\n\n shouldHideScrollbar(): boolean {\n return (\n this.settings.hideScrollbar &&\n document.body === this.settings.container\n );\n }\n\n hideScrollbar(): void {\n if (!this.shouldHideScrollbar()) {\n return;\n }\n this.bodyPaddingRight = parseFloat($LG('body').style().paddingRight);\n const bodyRect = document.documentElement.getBoundingClientRect();\n const scrollbarWidth = window.innerWidth - bodyRect.width;\n\n $LG(document.body).css(\n 'padding-right',\n scrollbarWidth + this.bodyPaddingRight + 'px',\n );\n $LG(document.body).addClass('lg-overlay-open');\n }\n\n resetScrollBar(): void {\n if (!this.shouldHideScrollbar()) {\n return;\n }\n $LG(document.body).css('padding-right', this.bodyPaddingRight + 'px');\n $LG(document.body).removeClass('lg-overlay-open');\n }\n\n /**\n * Open lightGallery.\n * Open gallery with specific slide by passing index of the slide as parameter.\n * @category lGPublicMethods\n * @param {Number} index - index of the slide\n * @param {HTMLElement} element - Which image lightGallery should zoom from\n *\n * @example\n * const $dynamicGallery = document.getElementById('dynamic-gallery-demo');\n * const dynamicGallery = lightGallery($dynamicGallery, {\n * dynamic: true,\n * dynamicEl: [\n * {\n * src: 'img/1.jpg',\n * thumb: 'img/thumb-1.jpg',\n * subHtml: '

Image 1 title

Image 1 descriptions.

',\n * },\n * ...\n * ],\n * });\n * $dynamicGallery.addEventListener('click', function () {\n * // Starts with third item.(Optional).\n * // This is useful if you want use dynamic mode with\n * // custom thumbnails (thumbnails outside gallery),\n * dynamicGallery.openGallery(2);\n * });\n *\n */\n openGallery(index = this.settings.index, element?: HTMLElement): void {\n // prevent accidental double execution\n if (this.lgOpened) return;\n this.lgOpened = true;\n this.outer.removeClass('lg-hide-items');\n\n this.hideScrollbar();\n\n // Add display block, but still has opacity 0\n this.$container.addClass('lg-show');\n\n const itemsToBeInsertedToDom = this.getItemsToBeInsertedToDom(\n index,\n index,\n );\n this.currentItemsInDom = itemsToBeInsertedToDom;\n\n let items = '';\n itemsToBeInsertedToDom.forEach((item) => {\n items = items + `
`;\n });\n\n this.$inner.append(items);\n this.addHtml(index);\n let transform: string | undefined = '';\n this.mediaContainerPosition = this.getMediaContainerPosition();\n const { top, bottom } = this.mediaContainerPosition;\n if (!this.settings.allowMediaOverlap) {\n this.setMediaContainerPosition(top, bottom);\n }\n const { __slideVideoInfo } = this.galleryItems[index];\n if (this.zoomFromOrigin && element) {\n this.currentImageSize = utils.getSize(\n element,\n this.outer,\n top + bottom,\n __slideVideoInfo && this.settings.videoMaxSize,\n );\n transform = utils.getTransform(\n element,\n this.outer,\n top,\n bottom,\n this.currentImageSize,\n );\n }\n if (!this.zoomFromOrigin || !transform) {\n this.outer.addClass(this.settings.startClass);\n this.getSlideItem(index).removeClass('lg-complete');\n }\n const timeout = this.settings.zoomFromOrigin\n ? 100\n : this.settings.backdropDuration;\n setTimeout(() => {\n this.outer.addClass('lg-components-open');\n }, timeout);\n this.index = index;\n this.LGel.trigger(lGEvents.beforeOpen);\n\n // add class lg-current to remove initial transition\n this.getSlideItem(index).addClass('lg-current');\n\n this.lGalleryOn = false;\n // Store the current scroll top value to scroll back after closing the gallery..\n this.prevScrollTop = $LG(window).scrollTop();\n\n setTimeout(() => {\n // Need to check both zoomFromOrigin and transform values as we need to set set the\n // default opening animation if user missed to add the lg-size attribute\n\n if (this.zoomFromOrigin && transform) {\n const currentSlide = this.getSlideItem(index);\n currentSlide.css('transform', transform);\n setTimeout(() => {\n currentSlide\n .addClass('lg-start-progress lg-start-end-progress')\n .css(\n 'transition-duration',\n this.settings.startAnimationDuration + 'ms',\n );\n this.outer.addClass('lg-zoom-from-image');\n });\n setTimeout(() => {\n currentSlide.css('transform', 'translate3d(0, 0, 0)');\n }, 100);\n }\n\n setTimeout(() => {\n this.$backdrop.addClass('in');\n this.$container.addClass('lg-show-in');\n }, 10);\n\n setTimeout(() => {\n if (\n this.settings.trapFocus &&\n document.body === this.settings.container\n ) {\n this.trapFocus();\n }\n }, this.settings.backdropDuration + 50);\n\n // lg-visible class resets gallery opacity to 1\n if (!this.zoomFromOrigin || !transform) {\n setTimeout(() => {\n this.outer.addClass('lg-visible');\n }, this.settings.backdropDuration);\n }\n\n // initiate slide function\n this.slide(index, false, false, false);\n\n this.LGel.trigger(lGEvents.afterOpen);\n });\n\n if (document.body === this.settings.container) {\n $LG('html').addClass('lg-on');\n }\n }\n\n /**\n * Note - Changing the position of the media on every slide transition creates a flickering effect.\n * Therefore, The height of the caption is calculated dynamically, only once based on the first slide caption.\n * if you have dynamic captions for each media,\n * you can provide an appropriate height for the captions via allowMediaOverlap option\n */\n public getMediaContainerPosition(): MediaContainerPosition {\n if (this.settings.allowMediaOverlap) {\n return {\n top: 0,\n bottom: 0,\n };\n }\n const top = this.$toolbar.get().clientHeight || 0;\n const subHtml = this.outer.find('.lg-components .lg-sub-html').get();\n const captionHeight =\n this.settings.defaultCaptionHeight ||\n (subHtml && subHtml.clientHeight) ||\n 0;\n const thumbContainer = this.outer.find('.lg-thumb-outer').get();\n const thumbHeight = thumbContainer ? thumbContainer.clientHeight : 0;\n const bottom = thumbHeight + captionHeight;\n return {\n top,\n bottom,\n };\n }\n\n private setMediaContainerPosition(top = 0, bottom = 0): void {\n this.$content.css('top', top + 'px').css('bottom', bottom + 'px');\n }\n\n hideBars(): void {\n // Hide controllers if mouse doesn't move for some period\n setTimeout(() => {\n this.outer.removeClass('lg-hide-items');\n if (this.settings.hideBarsDelay > 0) {\n this.outer.on('mousemove.lg click.lg touchstart.lg', () => {\n this.outer.removeClass('lg-hide-items');\n\n clearTimeout(this.hideBarTimeout);\n\n // Timeout will be cleared on each slide movement also\n this.hideBarTimeout = setTimeout(() => {\n this.outer.addClass('lg-hide-items');\n }, this.settings.hideBarsDelay);\n });\n this.outer.trigger('mousemove.lg');\n }\n }, this.settings.showBarsAfter);\n }\n\n initPictureFill($img: lgQuery): void {\n if (this.settings.supportLegacyBrowser) {\n try {\n picturefill({\n elements: [$img.get()],\n });\n } catch (e) {\n console.warn(\n 'lightGallery :- If you want srcset or picture tag to be supported for older browser please include picturefil javascript library in your document.',\n );\n }\n }\n }\n\n /**\n * @desc Create image counter\n * Ex: 1/10\n */\n counter(): void {\n if (this.settings.counter) {\n const counterHtml = `
\n ${this.index + 1} /\n ${\n this.galleryItems.length\n }
`;\n this.outer.find(this.settings.appendCounterTo).append(counterHtml);\n }\n }\n\n /**\n * @desc add sub-html into the slide\n * @param {Number} index - index of the slide\n */\n addHtml(index: number): void {\n let subHtml;\n let subHtmlUrl;\n if (this.galleryItems[index].subHtmlUrl) {\n subHtmlUrl = this.galleryItems[index].subHtmlUrl;\n } else {\n subHtml = this.galleryItems[index].subHtml;\n }\n\n if (!subHtmlUrl) {\n if (subHtml) {\n // get first letter of sub-html\n // if first letter starts with . or # get the html form the jQuery object\n const fL = subHtml.substring(0, 1);\n if (fL === '.' || fL === '#') {\n try {\n if (\n this.settings.subHtmlSelectorRelative &&\n !this.settings.dynamic\n ) {\n subHtml = $LG(this.items)\n .eq(index)\n .find(subHtml)\n .first()\n .html();\n } else {\n subHtml = $LG(subHtml).first().html();\n }\n } catch (error) {\n console.warn(\n `Error processing subHtml selector \"${subHtml}\"`,\n );\n subHtml = '';\n }\n }\n } else {\n subHtml = '';\n }\n }\n\n if (this.settings.appendSubHtmlTo !== '.lg-item') {\n if (subHtmlUrl) {\n utils.fetchCaptionFromUrl(\n subHtmlUrl,\n this.outer.find('.lg-sub-html'),\n 'replace',\n );\n } else {\n this.outer.find('.lg-sub-html').html(subHtml as string);\n }\n } else {\n const currentSlide = $LG(this.getSlideItemId(index));\n if (subHtmlUrl) {\n utils.fetchCaptionFromUrl(subHtmlUrl, currentSlide, 'append');\n } else {\n currentSlide.append(\n `
${subHtml}
`,\n );\n }\n }\n\n // Add lg-empty-html class if title doesn't exist\n if (typeof subHtml !== 'undefined' && subHtml !== null) {\n if (subHtml === '') {\n this.outer\n .find(this.settings.appendSubHtmlTo)\n .addClass('lg-empty-html');\n } else {\n this.outer\n .find(this.settings.appendSubHtmlTo)\n .removeClass('lg-empty-html');\n }\n }\n\n this.LGel.trigger(\n lGEvents.afterAppendSubHtml,\n {\n index,\n },\n );\n }\n\n /**\n * @desc Preload slides\n * @param {Number} index - index of the slide\n * @todo preload not working for the first slide, Also, should work for the first and last slide as well\n */\n preload(index: number): void {\n for (let i = 1; i <= this.settings.preload; i++) {\n if (i >= this.galleryItems.length - index) {\n break;\n }\n\n this.loadContent(index + i, false);\n }\n\n for (let j = 1; j <= this.settings.preload; j++) {\n if (index - j < 0) {\n break;\n }\n\n this.loadContent(index - j, false);\n }\n }\n\n getDummyImgStyles(imageSize?: ImageSize): string {\n if (!imageSize) return '';\n return `width:${imageSize.width}px;\n margin-left: -${imageSize.width / 2}px;\n margin-top: -${imageSize.height / 2}px;\n height:${imageSize.height}px`;\n }\n getVideoContStyle(imageSize?: ImageSize): string {\n if (!imageSize) return '';\n return `width:${imageSize.width}px;\n height:${imageSize.height}px`;\n }\n\n getDummyImageContent(\n $currentSlide: lgQuery,\n index: number,\n alt: string,\n ): HTMLImageElement | string {\n let $currentItem;\n if (!this.settings.dynamic) {\n $currentItem = $LG(this.items).eq(index);\n }\n if ($currentItem) {\n let _dummyImgSrc;\n if (!this.settings.exThumbImage) {\n _dummyImgSrc = $currentItem.find('img').first().attr('src');\n } else {\n _dummyImgSrc = $currentItem.attr(this.settings.exThumbImage);\n }\n if (!_dummyImgSrc) return '';\n const imgStyle = this.getDummyImgStyles(this.currentImageSize);\n const dummyImgContentImg = document.createElement('img');\n dummyImgContentImg.alt = alt || '';\n dummyImgContentImg.src = _dummyImgSrc;\n dummyImgContentImg.className = `lg-dummy-img`;\n dummyImgContentImg.style.cssText = imgStyle;\n\n $currentSlide.addClass('lg-first-slide');\n this.outer.addClass('lg-first-slide-loading');\n\n return dummyImgContentImg;\n }\n return '';\n }\n\n setImgMarkup(src: string, $currentSlide: lgQuery, index: number): void {\n const currentGalleryItem = this.galleryItems[index];\n const { alt, srcset, sizes, sources } = currentGalleryItem;\n\n // Use the thumbnail as dummy image which will be resized to actual image size and\n // displayed on top of actual image\n let imgContent: string | HTMLImageElement = '';\n const altAttr = alt ? 'alt=\"' + alt + '\"' : '';\n\n if (this.isFirstSlideWithZoomAnimation()) {\n imgContent = this.getDummyImageContent(\n $currentSlide,\n index,\n altAttr,\n );\n } else {\n imgContent = utils.getImgMarkup(\n index,\n src,\n altAttr,\n srcset,\n sizes,\n sources,\n );\n }\n const picture = document.createElement('picture');\n picture.className = 'lg-img-wrap';\n $LG(picture).append(imgContent);\n $currentSlide.prepend(picture);\n }\n\n onSlideObjectLoad(\n $slide: lgQuery,\n isHTML5VideoWithoutPoster: boolean,\n onLoad: () => void,\n onError: () => void,\n ): void {\n const mediaObject = $slide.find('.lg-object').first();\n if (\n utils.isImageLoaded(mediaObject.get() as HTMLImageElement) ||\n isHTML5VideoWithoutPoster\n ) {\n onLoad();\n } else {\n mediaObject.on('load.lg error.lg', () => {\n onLoad && onLoad();\n });\n mediaObject.on('error.lg', () => {\n onError && onError();\n });\n }\n }\n\n /**\n *\n * @param $el Current slide item\n * @param index\n * @param delay Delay is 0 except first time\n * @param speed Speed is same as delay, except it is 0 if gallery is opened via hash plugin\n * @param isFirstSlide\n */\n onLgObjectLoad(\n currentSlide: lgQuery,\n index: number,\n delay: number,\n speed: number,\n isFirstSlide: boolean,\n isHTML5VideoWithoutPoster: boolean,\n ): void {\n this.onSlideObjectLoad(\n currentSlide,\n isHTML5VideoWithoutPoster,\n () => {\n this.triggerSlideItemLoad(\n currentSlide,\n index,\n delay,\n speed,\n isFirstSlide,\n );\n },\n () => {\n currentSlide.addClass('lg-complete lg-complete_');\n currentSlide.html(\n '' +\n this.settings.strings['mediaLoadingFailed'] +\n '',\n );\n },\n );\n }\n\n triggerSlideItemLoad(\n $currentSlide: lgQuery,\n index: number,\n delay: number,\n speed: number,\n isFirstSlide: boolean,\n ): void {\n const currentGalleryItem = this.galleryItems[index];\n\n // Adding delay for video slides without poster for better performance and user experience\n // Videos should start playing once once the gallery is completely loaded\n const _speed =\n isFirstSlide &&\n this.getSlideType(currentGalleryItem) === 'video' &&\n !currentGalleryItem.poster\n ? speed\n : 0;\n setTimeout(() => {\n $currentSlide.addClass('lg-complete lg-complete_');\n this.LGel.trigger(lGEvents.slideItemLoad, {\n index,\n delay: delay || 0,\n isFirstSlide,\n });\n }, _speed);\n }\n\n isFirstSlideWithZoomAnimation(): boolean {\n return !!(\n !this.lGalleryOn &&\n this.zoomFromOrigin &&\n this.currentImageSize\n );\n }\n\n // Add video slideInfo\n addSlideVideoInfo(items: GalleryItem[]): void {\n items.forEach((element, index) => {\n element.__slideVideoInfo = utils.isVideo(\n element.src as string,\n !!element.video,\n index,\n );\n if (\n element.__slideVideoInfo &&\n this.settings.loadYouTubePoster &&\n !element.poster &&\n element.__slideVideoInfo.youtube\n ) {\n element.poster = `//img.youtube.com/vi/${element.__slideVideoInfo.youtube[1]}/maxresdefault.jpg`;\n }\n });\n }\n\n /**\n * Load slide content into slide.\n * This is used to load content into slides that is not visible too\n * @param {Number} index - index of the slide.\n * @param {Boolean} rec - if true call loadcontent() function again.\n */\n loadContent(index: number, rec: boolean): void {\n const currentGalleryItem = this.galleryItems[index];\n const $currentSlide = $LG(this.getSlideItemId(index));\n\n const { poster, srcset, sizes, sources } = currentGalleryItem;\n let { src } = currentGalleryItem;\n\n const video = currentGalleryItem.video;\n\n const _html5Video =\n video && typeof video === 'string' ? JSON.parse(video) : video;\n\n if (currentGalleryItem.responsive) {\n const srcDyItms = currentGalleryItem.responsive.split(',');\n src = utils.getResponsiveSrc(srcDyItms) || src;\n }\n\n const videoInfo = currentGalleryItem.__slideVideoInfo;\n let lgVideoStyle = '';\n\n const iframe = !!currentGalleryItem.iframe;\n\n const isFirstSlide = !this.lGalleryOn;\n\n // delay for adding complete class. it is 0 except first time.\n let delay = 0;\n if (isFirstSlide) {\n if (this.zoomFromOrigin && this.currentImageSize) {\n delay = this.settings.startAnimationDuration + 10;\n } else {\n delay = this.settings.backdropDuration + 10;\n }\n }\n\n if (!$currentSlide.hasClass('lg-loaded')) {\n if (videoInfo) {\n const { top, bottom } = this.mediaContainerPosition;\n const videoSize = utils.getSize(\n this.items[index],\n this.outer,\n top + bottom,\n videoInfo && this.settings.videoMaxSize,\n );\n lgVideoStyle = this.getVideoContStyle(videoSize);\n }\n if (iframe) {\n const markup = utils.getIframeMarkup(\n this.settings.iframeWidth,\n this.settings.iframeHeight,\n this.settings.iframeMaxWidth,\n this.settings.iframeMaxHeight,\n src,\n currentGalleryItem.iframeTitle,\n );\n $currentSlide.prepend(markup);\n } else if (poster) {\n let dummyImg: string | HTMLImageElement = '';\n const hasStartAnimation =\n isFirstSlide &&\n this.zoomFromOrigin &&\n this.currentImageSize;\n if (hasStartAnimation) {\n dummyImg = this.getDummyImageContent(\n $currentSlide,\n index,\n '',\n );\n }\n\n const markup = utils.getVideoPosterMarkup(\n poster,\n dummyImg || '',\n lgVideoStyle,\n this.settings.strings['playVideo'],\n videoInfo,\n );\n $currentSlide.prepend(markup);\n } else if (videoInfo) {\n const markup = `
`;\n $currentSlide.prepend(markup);\n } else {\n this.setImgMarkup(src as string, $currentSlide, index);\n if (srcset || sources) {\n const $img = $currentSlide.find('.lg-object');\n this.initPictureFill($img);\n }\n }\n if (poster || videoInfo) {\n this.LGel.trigger(lGEvents.hasVideo, {\n index,\n src: src,\n html5Video: _html5Video,\n hasPoster: !!poster,\n });\n }\n\n this.LGel.trigger(\n lGEvents.afterAppendSlide,\n { index },\n );\n\n if (\n this.lGalleryOn &&\n this.settings.appendSubHtmlTo === '.lg-item'\n ) {\n this.addHtml(index);\n }\n }\n\n // For first time add some delay for displaying the start animation.\n let _speed = 0;\n\n // Do not change the delay value because it is required for zoom plugin.\n // If gallery opened from direct url (hash) speed value should be 0\n if (delay && !$LG(document.body).hasClass('lg-from-hash')) {\n _speed = delay;\n }\n\n // Only for first slide and zoomFromOrigin is enabled\n if (this.isFirstSlideWithZoomAnimation()) {\n setTimeout(() => {\n $currentSlide\n .removeClass('lg-start-end-progress lg-start-progress')\n .removeAttr('style');\n }, this.settings.startAnimationDuration + 100);\n if (!$currentSlide.hasClass('lg-loaded')) {\n setTimeout(() => {\n if (this.getSlideType(currentGalleryItem) === 'image') {\n const { alt } = currentGalleryItem;\n const altAttr = alt ? 'alt=\"' + alt + '\"' : '';\n\n $currentSlide\n .find('.lg-img-wrap')\n .append(\n utils.getImgMarkup(\n index,\n src as string,\n altAttr,\n srcset,\n sizes,\n currentGalleryItem.sources,\n ),\n );\n if (srcset || sources) {\n const $img = $currentSlide.find('.lg-object');\n this.initPictureFill($img);\n }\n }\n if (\n this.getSlideType(currentGalleryItem) === 'image' ||\n (this.getSlideType(currentGalleryItem) === 'video' &&\n poster)\n ) {\n this.onLgObjectLoad(\n $currentSlide,\n index,\n delay,\n _speed,\n true,\n false,\n );\n\n // load remaining slides once the slide is completely loaded\n this.onSlideObjectLoad(\n $currentSlide,\n !!(videoInfo && videoInfo.html5 && !poster),\n () => {\n this.loadContentOnFirstSlideLoad(\n index,\n $currentSlide,\n _speed,\n );\n },\n () => {\n this.loadContentOnFirstSlideLoad(\n index,\n $currentSlide,\n _speed,\n );\n },\n );\n }\n }, this.settings.startAnimationDuration + 100);\n }\n }\n\n // SLide content has been added to dom\n $currentSlide.addClass('lg-loaded');\n\n if (\n !this.isFirstSlideWithZoomAnimation() ||\n (this.getSlideType(currentGalleryItem) === 'video' && !poster)\n ) {\n this.onLgObjectLoad(\n $currentSlide,\n index,\n delay,\n _speed,\n isFirstSlide,\n !!(videoInfo && videoInfo.html5 && !poster),\n );\n }\n\n // When gallery is opened once content is loaded (second time) need to add lg-complete class for css styling\n if (\n (!this.zoomFromOrigin || !this.currentImageSize) &&\n $currentSlide.hasClass('lg-complete_') &&\n !this.lGalleryOn\n ) {\n setTimeout(() => {\n $currentSlide.addClass('lg-complete');\n }, this.settings.backdropDuration);\n }\n\n // Content loaded\n // Need to set lGalleryOn before calling preload function\n this.lGalleryOn = true;\n\n if (rec === true) {\n if (!$currentSlide.hasClass('lg-complete_')) {\n $currentSlide\n .find('.lg-object')\n .first()\n .on('load.lg error.lg', () => {\n this.preload(index);\n });\n } else {\n this.preload(index);\n }\n }\n }\n\n /**\n * @desc Remove dummy image content and load next slides\n * Called only for the first time if zoomFromOrigin animation is enabled\n * @param index\n * @param $currentSlide\n * @param speed\n */\n loadContentOnFirstSlideLoad(\n index: number,\n $currentSlide: lgQuery,\n speed: number,\n ): void {\n setTimeout(() => {\n $currentSlide.find('.lg-dummy-img').remove();\n $currentSlide.removeClass('lg-first-slide');\n this.outer.removeClass('lg-first-slide-loading');\n this.isDummyImageRemoved = true;\n this.preload(index);\n }, speed + 300);\n }\n\n getItemsToBeInsertedToDom(\n index: number,\n prevIndex: number,\n numberOfItems = 0,\n ): string[] {\n const itemsToBeInsertedToDom: string[] = [];\n // Minimum 2 items should be there\n let possibleNumberOfItems = Math.max(numberOfItems, 3);\n possibleNumberOfItems = Math.min(\n possibleNumberOfItems,\n this.galleryItems.length,\n );\n const prevIndexItem = `lg-item-${this.lgId}-${prevIndex}`;\n if (this.galleryItems.length <= 3) {\n this.galleryItems.forEach((_element, index) => {\n itemsToBeInsertedToDom.push(`lg-item-${this.lgId}-${index}`);\n });\n return itemsToBeInsertedToDom;\n }\n\n if (index < (this.galleryItems.length - 1) / 2) {\n for (\n let idx = index;\n idx > index - possibleNumberOfItems / 2 && idx >= 0;\n idx--\n ) {\n itemsToBeInsertedToDom.push(`lg-item-${this.lgId}-${idx}`);\n }\n const numberOfExistingItems = itemsToBeInsertedToDom.length;\n for (\n let idx = 0;\n idx < possibleNumberOfItems - numberOfExistingItems;\n idx++\n ) {\n itemsToBeInsertedToDom.push(\n `lg-item-${this.lgId}-${index + idx + 1}`,\n );\n }\n } else {\n for (\n let idx = index;\n idx <= this.galleryItems.length - 1 &&\n idx < index + possibleNumberOfItems / 2;\n idx++\n ) {\n itemsToBeInsertedToDom.push(`lg-item-${this.lgId}-${idx}`);\n }\n const numberOfExistingItems = itemsToBeInsertedToDom.length;\n for (\n let idx = 0;\n idx < possibleNumberOfItems - numberOfExistingItems;\n idx++\n ) {\n itemsToBeInsertedToDom.push(\n `lg-item-${this.lgId}-${index - idx - 1}`,\n );\n }\n }\n if (this.settings.loop) {\n if (index === this.galleryItems.length - 1) {\n itemsToBeInsertedToDom.push(`lg-item-${this.lgId}-${0}`);\n } else if (index === 0) {\n itemsToBeInsertedToDom.push(\n `lg-item-${this.lgId}-${this.galleryItems.length - 1}`,\n );\n }\n }\n if (itemsToBeInsertedToDom.indexOf(prevIndexItem) === -1) {\n itemsToBeInsertedToDom.push(`lg-item-${this.lgId}-${prevIndex}`);\n }\n\n return itemsToBeInsertedToDom;\n }\n\n organizeSlideItems(index: number, prevIndex: number): string[] {\n const itemsToBeInsertedToDom = this.getItemsToBeInsertedToDom(\n index,\n prevIndex,\n this.settings.numberOfSlideItemsInDom,\n );\n\n itemsToBeInsertedToDom.forEach((item) => {\n if (this.currentItemsInDom.indexOf(item) === -1) {\n this.$inner.append(`
`);\n }\n });\n\n this.currentItemsInDom.forEach((item) => {\n if (itemsToBeInsertedToDom.indexOf(item) === -1) {\n $LG(`#${item}`).remove();\n }\n });\n return itemsToBeInsertedToDom;\n }\n\n /**\n * Get previous index of the slide\n */\n getPreviousSlideIndex(): number {\n let prevIndex = 0;\n try {\n const currentItemId = this.outer\n .find('.lg-current')\n .first()\n .attr('id');\n prevIndex = parseInt(currentItemId.split('-')[3]) || 0;\n } catch (error) {\n prevIndex = 0;\n }\n return prevIndex;\n }\n\n setDownloadValue(index: number): void {\n if (this.settings.download) {\n const currentGalleryItem = this.galleryItems[index];\n const hideDownloadBtn =\n currentGalleryItem.downloadUrl === false ||\n currentGalleryItem.downloadUrl === 'false';\n if (hideDownloadBtn) {\n this.outer.addClass('lg-hide-download');\n } else {\n const $download = this.getElementById('lg-download');\n this.outer.removeClass('lg-hide-download');\n $download.attr(\n 'href',\n currentGalleryItem.downloadUrl ||\n (currentGalleryItem.src as string),\n );\n if (currentGalleryItem.download) {\n $download.attr('download', currentGalleryItem.download);\n }\n }\n }\n }\n\n makeSlideAnimation(\n direction: 'next' | 'prev',\n currentSlideItem: lgQuery,\n previousSlideItem: lgQuery,\n ): void {\n if (this.lGalleryOn) {\n previousSlideItem.addClass('lg-slide-progress');\n }\n setTimeout(\n () => {\n // remove all transitions\n this.outer.addClass('lg-no-trans');\n\n this.outer\n .find('.lg-item')\n .removeClass('lg-prev-slide lg-next-slide');\n\n if (direction === 'prev') {\n //prevslide\n currentSlideItem.addClass('lg-prev-slide');\n previousSlideItem.addClass('lg-next-slide');\n } else {\n // next slide\n currentSlideItem.addClass('lg-next-slide');\n previousSlideItem.addClass('lg-prev-slide');\n }\n\n // give 50 ms for browser to add/remove class\n setTimeout(() => {\n this.outer.find('.lg-item').removeClass('lg-current');\n\n currentSlideItem.addClass('lg-current');\n\n // reset all transitions\n this.outer.removeClass('lg-no-trans');\n }, 50);\n },\n this.lGalleryOn ? this.settings.slideDelay : 0,\n );\n }\n\n /**\n * Goto a specific slide.\n * @param {Number} index - index of the slide\n * @param {Boolean} fromTouch - true if slide function called via touch event or mouse drag\n * @param {Boolean} fromThumb - true if slide function called via thumbnail click\n * @param {String} direction - Direction of the slide(next/prev)\n * @category lGPublicMethods\n * @example\n * const plugin = lightGallery();\n * // to go to 3rd slide\n * plugin.slide(2);\n *\n */\n slide(\n index: number,\n fromTouch?: boolean,\n fromThumb?: boolean,\n direction?: SlideDirection | false,\n ): void {\n const prevIndex = this.getPreviousSlideIndex();\n this.currentItemsInDom = this.organizeSlideItems(index, prevIndex);\n\n // Prevent multiple call, Required for hsh plugin\n if (this.lGalleryOn && prevIndex === index) {\n return;\n }\n\n const numberOfGalleryItems = this.galleryItems.length;\n\n if (!this.lgBusy) {\n if (this.settings.counter) {\n this.updateCurrentCounter(index);\n }\n\n const currentSlideItem = this.getSlideItem(index);\n const previousSlideItem = this.getSlideItem(prevIndex);\n\n const currentGalleryItem = this.galleryItems[index];\n const videoInfo = currentGalleryItem.__slideVideoInfo;\n\n this.outer.attr(\n 'data-lg-slide-type',\n this.getSlideType(currentGalleryItem),\n );\n this.setDownloadValue(index);\n\n if (videoInfo) {\n const { top, bottom } = this.mediaContainerPosition;\n const videoSize = utils.getSize(\n this.items[index],\n this.outer,\n top + bottom,\n videoInfo && this.settings.videoMaxSize,\n );\n this.resizeVideoSlide(index, videoSize);\n }\n\n this.LGel.trigger(lGEvents.beforeSlide, {\n prevIndex,\n index,\n fromTouch: !!fromTouch,\n fromThumb: !!fromThumb,\n });\n\n this.lgBusy = true;\n\n clearTimeout(this.hideBarTimeout);\n\n this.arrowDisable(index);\n\n if (!direction) {\n if (index < prevIndex) {\n direction = 'prev';\n } else if (index > prevIndex) {\n direction = 'next';\n }\n }\n\n if (!fromTouch) {\n this.makeSlideAnimation(\n direction as SlideDirection,\n currentSlideItem,\n previousSlideItem,\n );\n } else {\n this.outer\n .find('.lg-item')\n .removeClass('lg-prev-slide lg-current lg-next-slide');\n let touchPrev;\n let touchNext;\n if (numberOfGalleryItems > 2) {\n touchPrev = index - 1;\n touchNext = index + 1;\n\n if (index === 0 && prevIndex === numberOfGalleryItems - 1) {\n // next slide\n touchNext = 0;\n touchPrev = numberOfGalleryItems - 1;\n } else if (\n index === numberOfGalleryItems - 1 &&\n prevIndex === 0\n ) {\n // prev slide\n touchNext = 0;\n touchPrev = numberOfGalleryItems - 1;\n }\n } else {\n touchPrev = 0;\n touchNext = 1;\n }\n\n if (direction === 'prev') {\n this.getSlideItem(touchNext).addClass('lg-next-slide');\n } else {\n this.getSlideItem(touchPrev).addClass('lg-prev-slide');\n }\n\n currentSlideItem.addClass('lg-current');\n }\n\n // Do not put load content in set timeout as it needs to load immediately when the gallery is opened\n if (!this.lGalleryOn) {\n this.loadContent(index, true);\n } else {\n setTimeout(() => {\n this.loadContent(index, true);\n // Add title if this.settings.appendSubHtmlTo === lg-sub-html\n if (this.settings.appendSubHtmlTo !== '.lg-item') {\n this.addHtml(index);\n }\n }, this.settings.speed + 50 + (fromTouch ? 0 : this.settings.slideDelay));\n }\n\n setTimeout(() => {\n this.lgBusy = false;\n previousSlideItem.removeClass('lg-slide-progress');\n this.LGel.trigger(lGEvents.afterSlide, {\n prevIndex: prevIndex,\n index,\n fromTouch,\n fromThumb,\n });\n }, (this.lGalleryOn ? this.settings.speed + 100 : 100) + (fromTouch ? 0 : this.settings.slideDelay));\n }\n\n this.index = index;\n }\n\n updateCurrentCounter(index: number): void {\n this.getElementById('lg-counter-current').html(index + 1 + '');\n }\n\n updateCounterTotal(): void {\n this.getElementById('lg-counter-all').html(\n this.galleryItems.length + '',\n );\n }\n\n getSlideType(item: GalleryItem): 'video' | 'iframe' | 'image' {\n if (item.__slideVideoInfo) {\n return 'video';\n } else if (item.iframe) {\n return 'iframe';\n } else {\n return 'image';\n }\n }\n\n touchMove(startCoords: Coords, endCoords: Coords, e?: TouchEvent): void {\n const distanceX = endCoords.pageX - startCoords.pageX;\n const distanceY = endCoords.pageY - startCoords.pageY;\n let allowSwipe = false;\n\n if (this.swipeDirection) {\n allowSwipe = true;\n } else {\n if (Math.abs(distanceX) > 15) {\n this.swipeDirection = 'horizontal';\n allowSwipe = true;\n } else if (Math.abs(distanceY) > 15) {\n this.swipeDirection = 'vertical';\n allowSwipe = true;\n }\n }\n\n if (!allowSwipe) {\n return;\n }\n\n const $currentSlide = this.getSlideItem(this.index);\n\n if (this.swipeDirection === 'horizontal') {\n e?.preventDefault();\n // reset opacity and transition duration\n this.outer.addClass('lg-dragging');\n\n // move current slide\n this.setTranslate($currentSlide, distanceX, 0);\n\n // move next and prev slide with current slide\n const width = $currentSlide.get().offsetWidth;\n const slideWidthAmount = (width * 15) / 100;\n const gutter = slideWidthAmount - Math.abs((distanceX * 10) / 100);\n this.setTranslate(\n this.outer.find('.lg-prev-slide').first(),\n -width + distanceX - gutter,\n 0,\n );\n\n this.setTranslate(\n this.outer.find('.lg-next-slide').first(),\n width + distanceX + gutter,\n 0,\n );\n } else if (this.swipeDirection === 'vertical') {\n if (this.settings.swipeToClose) {\n e?.preventDefault();\n this.$container.addClass('lg-dragging-vertical');\n\n const opacity = 1 - Math.abs(distanceY) / window.innerHeight;\n this.$backdrop.css('opacity', opacity);\n\n const scale = 1 - Math.abs(distanceY) / (window.innerWidth * 2);\n this.setTranslate($currentSlide, 0, distanceY, scale, scale);\n if (Math.abs(distanceY) > 100) {\n this.outer\n .addClass('lg-hide-items')\n .removeClass('lg-components-open');\n }\n }\n }\n }\n\n touchEnd(endCoords: Coords, startCoords: Coords, event: TouchEvent): void {\n let distance;\n\n // keep slide animation for any mode while dragg/swipe\n if (this.settings.mode !== 'lg-slide') {\n this.outer.addClass('lg-slide');\n }\n\n // set transition duration\n setTimeout(() => {\n this.$container.removeClass('lg-dragging-vertical');\n this.outer\n .removeClass('lg-dragging lg-hide-items')\n .addClass('lg-components-open');\n\n let triggerClick = true;\n\n if (this.swipeDirection === 'horizontal') {\n distance = endCoords.pageX - startCoords.pageX;\n const distanceAbs = Math.abs(\n endCoords.pageX - startCoords.pageX,\n );\n if (\n distance < 0 &&\n distanceAbs > this.settings.swipeThreshold\n ) {\n this.goToNextSlide(true);\n triggerClick = false;\n } else if (\n distance > 0 &&\n distanceAbs > this.settings.swipeThreshold\n ) {\n this.goToPrevSlide(true);\n triggerClick = false;\n }\n } else if (this.swipeDirection === 'vertical') {\n distance = Math.abs(endCoords.pageY - startCoords.pageY);\n if (\n this.settings.closable &&\n this.settings.swipeToClose &&\n distance > 100\n ) {\n this.closeGallery();\n return;\n } else {\n this.$backdrop.css('opacity', 1);\n }\n }\n this.outer.find('.lg-item').removeAttr('style');\n\n if (\n triggerClick &&\n Math.abs(endCoords.pageX - startCoords.pageX) < 5\n ) {\n // Trigger click if distance is less than 5 pix\n const target = $LG(event.target);\n if (this.isPosterElement(target)) {\n this.LGel.trigger(lGEvents.posterClick);\n }\n }\n\n this.swipeDirection = undefined;\n });\n\n // remove slide class once drag/swipe is completed if mode is not slide\n setTimeout(() => {\n if (\n !this.outer.hasClass('lg-dragging') &&\n this.settings.mode !== 'lg-slide'\n ) {\n this.outer.removeClass('lg-slide');\n }\n }, this.settings.speed + 100);\n }\n\n enableSwipe(): void {\n let startCoords: Coords = {} as Coords;\n let endCoords: Coords = {} as Coords;\n let isMoved = false;\n let isSwiping = false;\n\n if (this.settings.enableSwipe) {\n this.$inner.on('touchstart.lg', (e) => {\n this.dragOrSwipeEnabled = true;\n const $item = this.getSlideItem(this.index);\n if (\n ($LG(e.target).hasClass('lg-item') ||\n $item.get().contains(e.target)) &&\n !this.outer.hasClass('lg-zoomed') &&\n !this.lgBusy &&\n e.touches.length === 1\n ) {\n isSwiping = true;\n this.touchAction = 'swipe';\n this.manageSwipeClass();\n startCoords = {\n pageX: e.touches[0].pageX,\n pageY: e.touches[0].pageY,\n };\n }\n });\n\n this.$inner.on('touchmove.lg', (e) => {\n if (\n isSwiping &&\n this.touchAction === 'swipe' &&\n e.touches.length === 1\n ) {\n endCoords = {\n pageX: e.touches[0].pageX,\n pageY: e.touches[0].pageY,\n };\n this.touchMove(startCoords, endCoords, e);\n isMoved = true;\n }\n });\n\n this.$inner.on('touchend.lg', (event: TouchEvent) => {\n if (this.touchAction === 'swipe') {\n if (isMoved) {\n isMoved = false;\n this.touchEnd(endCoords, startCoords, event);\n } else if (isSwiping) {\n const target = $LG(event.target);\n if (this.isPosterElement(target)) {\n this.LGel.trigger(lGEvents.posterClick);\n }\n }\n this.touchAction = undefined;\n isSwiping = false;\n }\n });\n }\n }\n\n enableDrag(): void {\n let startCoords: Coords = {} as Coords;\n let endCoords: Coords = {} as Coords;\n let isDraging = false;\n let isMoved = false;\n if (this.settings.enableDrag) {\n this.outer.on('mousedown.lg', (e) => {\n this.dragOrSwipeEnabled = true;\n const $item = this.getSlideItem(this.index);\n if (\n $LG(e.target).hasClass('lg-item') ||\n $item.get().contains(e.target)\n ) {\n if (!this.outer.hasClass('lg-zoomed') && !this.lgBusy) {\n e.preventDefault();\n if (!this.lgBusy) {\n this.manageSwipeClass();\n startCoords = {\n pageX: e.pageX,\n pageY: e.pageY,\n };\n isDraging = true;\n\n // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723\n this.outer.get().scrollLeft += 1;\n this.outer.get().scrollLeft -= 1;\n\n // *\n\n this.outer\n .removeClass('lg-grab')\n .addClass('lg-grabbing');\n\n this.LGel.trigger(lGEvents.dragStart);\n }\n }\n }\n });\n\n $LG(window).on(`mousemove.lg.global${this.lgId}`, (e) => {\n if (isDraging && this.lgOpened) {\n isMoved = true;\n endCoords = {\n pageX: e.pageX,\n pageY: e.pageY,\n };\n this.touchMove(startCoords, endCoords);\n this.LGel.trigger(lGEvents.dragMove);\n }\n });\n\n $LG(window).on(`mouseup.lg.global${this.lgId}`, (event) => {\n if (!this.lgOpened) {\n return;\n }\n const target = $LG(event.target);\n if (isMoved) {\n isMoved = false;\n this.touchEnd(endCoords, startCoords, event);\n this.LGel.trigger(lGEvents.dragEnd);\n } else if (this.isPosterElement(target)) {\n this.LGel.trigger(lGEvents.posterClick);\n }\n\n // Prevent execution on click\n if (isDraging) {\n isDraging = false;\n this.outer.removeClass('lg-grabbing').addClass('lg-grab');\n }\n });\n }\n }\n\n triggerPosterClick(): void {\n this.$inner.on('click.lg', (event) => {\n if (\n !this.dragOrSwipeEnabled &&\n this.isPosterElement($LG(event.target))\n ) {\n this.LGel.trigger(lGEvents.posterClick);\n }\n });\n }\n\n manageSwipeClass(): void {\n let _touchNext = this.index + 1;\n let _touchPrev = this.index - 1;\n if (this.settings.loop && this.galleryItems.length > 2) {\n if (this.index === 0) {\n _touchPrev = this.galleryItems.length - 1;\n } else if (this.index === this.galleryItems.length - 1) {\n _touchNext = 0;\n }\n }\n\n this.outer.find('.lg-item').removeClass('lg-next-slide lg-prev-slide');\n if (_touchPrev > -1) {\n this.getSlideItem(_touchPrev).addClass('lg-prev-slide');\n }\n\n this.getSlideItem(_touchNext).addClass('lg-next-slide');\n }\n\n /**\n * Go to next slide\n * @param {Boolean} fromTouch - true if slide function called via touch event\n * @category lGPublicMethods\n * @example\n * const plugin = lightGallery();\n * plugin.goToNextSlide();\n * @see Demo\n */\n goToNextSlide(fromTouch?: boolean): void {\n let _loop = this.settings.loop;\n if (fromTouch && this.galleryItems.length < 3) {\n _loop = false;\n }\n\n if (!this.lgBusy) {\n if (this.index + 1 < this.galleryItems.length) {\n this.index++;\n this.LGel.trigger(lGEvents.beforeNextSlide, {\n index: this.index,\n });\n this.slide(this.index, !!fromTouch, false, 'next');\n } else {\n if (_loop) {\n this.index = 0;\n this.LGel.trigger(lGEvents.beforeNextSlide, {\n index: this.index,\n });\n this.slide(this.index, !!fromTouch, false, 'next');\n } else if (this.settings.slideEndAnimation && !fromTouch) {\n this.outer.addClass('lg-right-end');\n setTimeout(() => {\n this.outer.removeClass('lg-right-end');\n }, 400);\n }\n }\n }\n }\n\n /**\n * Go to previous slides\n * @param {Boolean} fromTouch - true if slide function called via touch event\n * @category lGPublicMethods\n * @example\n * const plugin = lightGallery({});\n * plugin.goToPrevSlide();\n * @see Demo\n *\n */\n goToPrevSlide(fromTouch?: boolean): void {\n let _loop = this.settings.loop;\n if (fromTouch && this.galleryItems.length < 3) {\n _loop = false;\n }\n\n if (!this.lgBusy) {\n if (this.index > 0) {\n this.index--;\n this.LGel.trigger(lGEvents.beforePrevSlide, {\n index: this.index,\n fromTouch,\n });\n this.slide(this.index, !!fromTouch, false, 'prev');\n } else {\n if (_loop) {\n this.index = this.galleryItems.length - 1;\n this.LGel.trigger(lGEvents.beforePrevSlide, {\n index: this.index,\n fromTouch,\n });\n this.slide(this.index, !!fromTouch, false, 'prev');\n } else if (this.settings.slideEndAnimation && !fromTouch) {\n this.outer.addClass('lg-left-end');\n setTimeout(() => {\n this.outer.removeClass('lg-left-end');\n }, 400);\n }\n }\n }\n }\n\n keyPress(): void {\n $LG(window).on(`keydown.lg.global${this.lgId}`, (e) => {\n if (\n this.lgOpened &&\n this.settings.escKey === true &&\n e.keyCode === 27\n ) {\n e.preventDefault();\n if (\n this.settings.allowMediaOverlap &&\n this.outer.hasClass('lg-can-toggle') &&\n this.outer.hasClass('lg-components-open')\n ) {\n this.outer.removeClass('lg-components-open');\n } else {\n this.closeGallery();\n }\n }\n if (this.lgOpened && this.galleryItems.length > 1) {\n if (e.keyCode === 37) {\n e.preventDefault();\n this.goToPrevSlide();\n }\n\n if (e.keyCode === 39) {\n e.preventDefault();\n this.goToNextSlide();\n }\n }\n });\n }\n\n arrow(): void {\n this.getElementById('lg-prev').on('click.lg', () => {\n this.goToPrevSlide();\n });\n this.getElementById('lg-next').on('click.lg', () => {\n this.goToNextSlide();\n });\n }\n\n arrowDisable(index: number): void {\n // Disable arrows if settings.hideControlOnEnd is true\n if (!this.settings.loop && this.settings.hideControlOnEnd) {\n const $prev = this.getElementById('lg-prev');\n const $next = this.getElementById('lg-next');\n if (index + 1 === this.galleryItems.length) {\n $next.attr('disabled', 'disabled').addClass('disabled');\n } else {\n $next.removeAttr('disabled').removeClass('disabled');\n }\n\n if (index === 0) {\n $prev.attr('disabled', 'disabled').addClass('disabled');\n } else {\n $prev.removeAttr('disabled').removeClass('disabled');\n }\n }\n }\n\n setTranslate(\n $el: lgQuery,\n xValue: number,\n yValue: number,\n scaleX = 1,\n scaleY = 1,\n ): void {\n $el.css(\n 'transform',\n 'translate3d(' +\n xValue +\n 'px, ' +\n yValue +\n 'px, 0px) scale3d(' +\n scaleX +\n ', ' +\n scaleY +\n ', 1)',\n );\n }\n\n mousewheel(): void {\n let lastCall = 0;\n this.outer.on('wheel.lg', (e) => {\n if (!e.deltaY || this.galleryItems.length < 2) {\n return;\n }\n e.preventDefault();\n const now = new Date().getTime();\n if (now - lastCall < 1000) {\n return;\n }\n lastCall = now;\n if (e.deltaY > 0) {\n this.goToNextSlide();\n } else if (e.deltaY < 0) {\n this.goToPrevSlide();\n }\n });\n }\n\n isSlideElement(target: lgQuery): boolean {\n return (\n target.hasClass('lg-outer') ||\n target.hasClass('lg-item') ||\n target.hasClass('lg-img-wrap') ||\n target.hasClass('lg-img-rotate')\n );\n }\n\n isPosterElement(target: lgQuery): boolean {\n const playButton = this.getSlideItem(this.index)\n .find('.lg-video-play-button')\n .get();\n return (\n target.hasClass('lg-video-poster') ||\n target.hasClass('lg-video-play-button') ||\n (playButton && playButton.contains(target.get()))\n );\n }\n\n /**\n * Maximize minimize inline gallery.\n * @category lGPublicMethods\n */\n toggleMaximize(): void {\n this.getElementById('lg-maximize').on('click.lg', () => {\n this.$container.toggleClass('lg-inline');\n this.refreshOnResize();\n });\n }\n\n invalidateItems(): void {\n for (let index = 0; index < this.items.length; index++) {\n const element = this.items[index];\n const $element = $LG(element);\n $element.off(`click.lgcustom-item-${$element.attr('data-lg-id')}`);\n }\n }\n\n trapFocus(): void {\n this.$container.get().focus({\n preventScroll: true,\n });\n $LG(window).on(`keydown.lg.global${this.lgId}`, (e) => {\n if (!this.lgOpened) {\n return;\n }\n\n const isTabPressed = e.key === 'Tab' || e.keyCode === 9;\n if (!isTabPressed) {\n return;\n }\n const focusableEls = utils.getFocusableElements(\n this.$container.get(),\n );\n const firstFocusableEl = focusableEls[0];\n const lastFocusableEl = focusableEls[focusableEls.length - 1];\n\n if (e.shiftKey) {\n if (document.activeElement === firstFocusableEl) {\n (lastFocusableEl as HTMLElement).focus();\n e.preventDefault();\n }\n } else {\n if (document.activeElement === lastFocusableEl) {\n (firstFocusableEl as HTMLElement).focus();\n e.preventDefault();\n }\n }\n });\n }\n\n manageCloseGallery(): void {\n if (!this.settings.closable) return;\n let mousedown = false;\n this.getElementById('lg-close').on('click.lg', () => {\n this.closeGallery();\n });\n\n if (this.settings.closeOnTap) {\n // If you drag the slide and release outside gallery gets close on chrome\n // for preventing this check mousedown and mouseup happened on .lg-item or lg-outer\n this.outer.on('mousedown.lg', (e) => {\n const target = $LG(e.target);\n if (this.isSlideElement(target)) {\n mousedown = true;\n } else {\n mousedown = false;\n }\n });\n\n this.outer.on('mousemove.lg', () => {\n mousedown = false;\n });\n\n this.outer.on('mouseup.lg', (e) => {\n const target = $LG(e.target);\n if (this.isSlideElement(target) && mousedown) {\n if (!this.outer.hasClass('lg-dragging')) {\n this.closeGallery();\n }\n }\n });\n }\n }\n\n /**\n * Close lightGallery if it is opened.\n *\n * @description If closable is false in the settings, you need to pass true via closeGallery method to force close gallery\n * @return returns the estimated time to close gallery completely including the close animation duration\n * @category lGPublicMethods\n * @example\n * const plugin = lightGallery();\n * plugin.closeGallery();\n *\n */\n closeGallery(force?: boolean): number {\n if (!this.lgOpened || (!this.settings.closable && !force)) {\n return 0;\n }\n this.LGel.trigger(lGEvents.beforeClose);\n\n if (this.settings.resetScrollPosition && !this.settings.hideScrollbar) {\n $LG(window).scrollTop(this.prevScrollTop);\n }\n\n const currentItem = this.items[this.index];\n let transform: string | undefined;\n if (this.zoomFromOrigin && currentItem) {\n const { top, bottom } = this.mediaContainerPosition;\n const { __slideVideoInfo, poster } = this.galleryItems[this.index];\n const imageSize = utils.getSize(\n currentItem,\n this.outer,\n top + bottom,\n __slideVideoInfo && poster && this.settings.videoMaxSize,\n );\n transform = utils.getTransform(\n currentItem,\n this.outer,\n top,\n bottom,\n imageSize,\n );\n }\n if (this.zoomFromOrigin && transform) {\n this.outer.addClass('lg-closing lg-zoom-from-image');\n this.getSlideItem(this.index)\n .addClass('lg-start-end-progress')\n .css(\n 'transition-duration',\n this.settings.startAnimationDuration + 'ms',\n )\n .css('transform', transform);\n } else {\n this.outer.addClass('lg-hide-items');\n // lg-zoom-from-image is used for setting the opacity to 1 if zoomFromOrigin is true\n // If the closing item doesn't have the lg-size attribute, remove this class to avoid the closing css conflicts\n this.outer.removeClass('lg-zoom-from-image');\n }\n\n // Unbind all events added by lightGallery\n // @todo\n //this.$el.off('.lg.tm');\n\n this.destroyModules();\n\n this.lGalleryOn = false;\n this.isDummyImageRemoved = false;\n this.zoomFromOrigin = this.settings.zoomFromOrigin;\n\n clearTimeout(this.hideBarTimeout);\n this.hideBarTimeout = false;\n $LG('html').removeClass('lg-on');\n\n this.outer.removeClass('lg-visible lg-components-open');\n\n // Resetting opacity to 0 isd required as vertical swipe to close function adds inline opacity.\n this.$backdrop.removeClass('in').css('opacity', 0);\n\n const removeTimeout =\n this.zoomFromOrigin && transform\n ? Math.max(\n this.settings.startAnimationDuration,\n this.settings.backdropDuration,\n )\n : this.settings.backdropDuration;\n this.$container.removeClass('lg-show-in');\n\n // Once the closign animation is completed and gallery is invisible\n setTimeout(() => {\n if (this.zoomFromOrigin && transform) {\n this.outer.removeClass('lg-zoom-from-image');\n }\n this.$container.removeClass('lg-show');\n\n // Reset scrollbar\n this.resetScrollBar();\n\n // Need to remove inline opacity as it is used in the stylesheet as well\n this.$backdrop\n .removeAttr('style')\n .css(\n 'transition-duration',\n this.settings.backdropDuration + 'ms',\n );\n\n this.outer.removeClass(`lg-closing ${this.settings.startClass}`);\n\n this.getSlideItem(this.index).removeClass('lg-start-end-progress');\n this.$inner.empty();\n if (this.lgOpened) {\n this.LGel.trigger(lGEvents.afterClose, {\n instance: this,\n });\n }\n if (this.$container.get()) {\n this.$container.get().blur();\n }\n\n this.lgOpened = false;\n }, removeTimeout + 100);\n return removeTimeout + 100;\n }\n\n initModules(): void {\n this.plugins.forEach((module) => {\n try {\n module.init();\n } catch (err) {\n console.warn(\n `lightGallery:- make sure lightGallery module is properly initiated`,\n );\n }\n });\n }\n\n destroyModules(destroy?: true): void {\n this.plugins.forEach((module) => {\n try {\n if (destroy) {\n module.destroy();\n } else {\n module.closeGallery && module.closeGallery();\n }\n } catch (err) {\n console.warn(\n `lightGallery:- make sure lightGallery module is properly destroyed`,\n );\n }\n });\n }\n\n /**\n * Refresh lightGallery with new set of children.\n *\n * @description This is useful to update the gallery when the child elements are changed without calling destroy method.\n *\n * If you are using dynamic mode, you can pass the modified array of dynamicEl as the first parameter to refresh the dynamic gallery\n * @see Demo\n * @category lGPublicMethods\n * @example\n * const plugin = lightGallery();\n * // Delete or add children, then call\n * plugin.refresh();\n *\n */\n refresh(galleryItems?: GalleryItem[]): void {\n if (!this.settings.dynamic) {\n this.invalidateItems();\n }\n if (galleryItems) {\n this.galleryItems = galleryItems;\n } else {\n this.galleryItems = this.getItems();\n }\n this.updateControls();\n this.openGalleryOnItemClick();\n this.LGel.trigger(lGEvents.updateSlides);\n }\n\n updateControls(): void {\n this.addSlideVideoInfo(this.galleryItems);\n this.updateCounterTotal();\n this.manageSingleSlideClassName();\n }\n\n private destroyGallery(): void {\n this.destroyModules(true);\n if (!this.settings.dynamic) {\n this.invalidateItems();\n }\n $LG(window).off(`.lg.global${this.lgId}`);\n this.LGel.off('.lg');\n this.$container.remove();\n }\n\n /**\n * Destroy lightGallery.\n * Destroy lightGallery and its plugin instances completely\n *\n * @description This method also calls CloseGallery function internally. Returns the time takes to completely close and destroy the instance.\n * In case if you want to re-initialize lightGallery right after destroying it, initialize it only once the destroy process is completed.\n * You can use refresh method most of the times.\n * @category lGPublicMethods\n * @example\n * const plugin = lightGallery();\n * plugin.destroy();\n *\n */\n destroy(): number {\n const closeTimeout = this.closeGallery(true);\n if (closeTimeout) {\n setTimeout(this.destroyGallery.bind(this), closeTimeout);\n } else {\n this.destroyGallery();\n }\n return closeTimeout;\n }\n}\n","import { LightGallerySettings } from './lg-settings';\nimport { LightGallery } from './lightgallery';\n\nfunction lightGallery(\n el: HTMLElement,\n options?: LightGallerySettings,\n): LightGallery {\n return new LightGallery(el, options);\n}\nexport default lightGallery;\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/assets/lightGallery/package.json b/assets/lightGallery/package.json new file mode 100644 index 0000000..5b00cdb --- /dev/null +++ b/assets/lightGallery/package.json @@ -0,0 +1,33 @@ +{ + "name": "lightgallery", + "version": "2.9.0", + "description": "lightGallery is a feature-rich, modular JavaScript gallery plugin for building beautiful image and video galleries for the web and the mobile", + "keywords": [ + "JavaScript", + "Gallery", + "Video", + "slider", + "lightBox" + ], + "main": "lightgallery.umd.js", + "min": "lightgallery.min.js", + "module": "lightgallery.es5.js", + "typings": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/sachinchoolur/lightGallery" + }, + "homepage": "https://www.lightgalleryjs.com/", + "bugs": { + "url": "https://github.com/sachinchoolur/lightGallery/issues" + }, + "license": "GPLv3", + "author": { + "name": "Sachin Neravath", + "email": "sachi77n@gmail.com", + "url": "https://github.com/sachinchoolur" + }, + "engines": { + "node": ">=6.0.0" + } +} \ No newline at end of file diff --git a/assets/lightGallery/plugins/autoplay/lg-autoplay-settings.d.ts b/assets/lightGallery/plugins/autoplay/lg-autoplay-settings.d.ts new file mode 100644 index 0000000..ecabc41 --- /dev/null +++ b/assets/lightGallery/plugins/autoplay/lg-autoplay-settings.d.ts @@ -0,0 +1,38 @@ +export interface AutoplayStrings { + toggleAutoplay: string; +} +export interface AutoplaySettings { + /** + * Enable autoplay plugin + */ + autoplay: boolean; + /** + * Enable slideshow autoplay + */ + slideShowAutoplay: boolean; + /** + * The time (in ms) between each auto transition. + */ + slideShowInterval: number; + /** + * Show autoplay progressBar + */ + progressBar: boolean; + /** + * If false autoplay will be stopped after first user action + */ + forceSlideShowAutoplay: boolean; + /** + * Show/hide autoplay controls. + */ + autoplayControls: boolean; + /** + * Specify where the autoplay controls should be appended. + */ + appendAutoplayControlsTo: string; + /** + * Custom translation strings for aria-labels + */ + autoplayPluginStrings: AutoplayStrings; +} +export declare const autoplaySettings: AutoplaySettings; diff --git a/assets/lightGallery/plugins/autoplay/lg-autoplay.d.ts b/assets/lightGallery/plugins/autoplay/lg-autoplay.d.ts new file mode 100644 index 0000000..845a136 --- /dev/null +++ b/assets/lightGallery/plugins/autoplay/lg-autoplay.d.ts @@ -0,0 +1,22 @@ +import { LightGallery } from '../../lightgallery'; +import { AutoplaySettings } from './lg-autoplay-settings'; +/** + * Creates the autoplay plugin. + * @param {object} element - lightGallery element + */ +export default class Autoplay { + core: LightGallery; + settings: AutoplaySettings; + interval: any; + fromAuto: boolean; + pausedOnTouchDrag: boolean; + pausedOnSlideChange: boolean; + constructor(instance: LightGallery); + init(): void; + private showProgressBar; + private controls; + startAutoPlay(): void; + stopAutoPlay(): void; + closeGallery(): void; + destroy(): void; +} diff --git a/assets/lightGallery/plugins/autoplay/lg-autoplay.es5.js b/assets/lightGallery/plugins/autoplay/lg-autoplay.es5.js new file mode 100644 index 0000000..66948a6 --- /dev/null +++ b/assets/lightGallery/plugins/autoplay/lg-autoplay.es5.js @@ -0,0 +1,250 @@ +/*! + * lightgallery | 2.9.0 | October 1st 2025 + * http://www.lightgalleryjs.com/ + * Copyright (c) 2020 Sachin Neravath; + * @license GPLv3 + */ + +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ + +var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; + +/** + * List of lightGallery events + * All events should be documented here + * Below interfaces are used to build the website documentations + * */ +var lGEvents = { + afterAppendSlide: 'lgAfterAppendSlide', + init: 'lgInit', + hasVideo: 'lgHasVideo', + containerResize: 'lgContainerResize', + updateSlides: 'lgUpdateSlides', + afterAppendSubHtml: 'lgAfterAppendSubHtml', + beforeOpen: 'lgBeforeOpen', + afterOpen: 'lgAfterOpen', + slideItemLoad: 'lgSlideItemLoad', + beforeSlide: 'lgBeforeSlide', + afterSlide: 'lgAfterSlide', + posterClick: 'lgPosterClick', + dragStart: 'lgDragStart', + dragMove: 'lgDragMove', + dragEnd: 'lgDragEnd', + beforeNextSlide: 'lgBeforeNextSlide', + beforePrevSlide: 'lgBeforePrevSlide', + beforeClose: 'lgBeforeClose', + afterClose: 'lgAfterClose', + rotateLeft: 'lgRotateLeft', + rotateRight: 'lgRotateRight', + flipHorizontal: 'lgFlipHorizontal', + flipVertical: 'lgFlipVertical', + autoplay: 'lgAutoplay', + autoplayStart: 'lgAutoplayStart', + autoplayStop: 'lgAutoplayStop', +}; + +var autoplaySettings = { + autoplay: true, + slideShowAutoplay: false, + slideShowInterval: 5000, + progressBar: true, + forceSlideShowAutoplay: false, + autoplayControls: true, + appendAutoplayControlsTo: '.lg-toolbar', + autoplayPluginStrings: { + toggleAutoplay: 'Toggle Autoplay', + }, +}; + +/** + * Creates the autoplay plugin. + * @param {object} element - lightGallery element + */ +var Autoplay = /** @class */ (function () { + function Autoplay(instance) { + this.core = instance; + // extend module default settings with lightGallery core settings + this.settings = __assign(__assign({}, autoplaySettings), this.core.settings); + return this; + } + Autoplay.prototype.init = function () { + var _this = this; + if (!this.settings.autoplay) { + return; + } + this.interval = false; + // Identify if slide happened from autoplay + this.fromAuto = true; + // Identify if autoplay canceled from touch/drag + this.pausedOnTouchDrag = false; + this.pausedOnSlideChange = false; + // append autoplay controls + if (this.settings.autoplayControls) { + this.controls(); + } + // Create progress bar + if (this.settings.progressBar) { + this.core.outer.append('
'); + } + // Start autoplay + if (this.settings.slideShowAutoplay) { + this.core.LGel.once(lGEvents.slideItemLoad + ".autoplay", function () { + _this.startAutoPlay(); + }); + } + // cancel interval on touchstart and dragstart + this.core.LGel.on(lGEvents.dragStart + ".autoplay touchstart.lg.autoplay", function () { + if (_this.interval) { + _this.stopAutoPlay(); + _this.pausedOnTouchDrag = true; + } + }); + // restore autoplay if autoplay canceled from touchstart / dragstart + this.core.LGel.on(lGEvents.dragEnd + ".autoplay touchend.lg.autoplay", function () { + if (!_this.interval && _this.pausedOnTouchDrag) { + _this.startAutoPlay(); + _this.pausedOnTouchDrag = false; + } + }); + this.core.LGel.on(lGEvents.beforeSlide + ".autoplay", function () { + _this.showProgressBar(); + if (!_this.fromAuto && _this.interval) { + _this.stopAutoPlay(); + _this.pausedOnSlideChange = true; + } + else { + _this.pausedOnSlideChange = false; + } + _this.fromAuto = false; + }); + // restore autoplay if autoplay canceled from touchstart / dragstart + this.core.LGel.on(lGEvents.afterSlide + ".autoplay", function () { + if (_this.pausedOnSlideChange && + !_this.interval && + _this.settings.forceSlideShowAutoplay) { + _this.startAutoPlay(); + _this.pausedOnSlideChange = false; + } + }); + // set progress + this.showProgressBar(); + }; + Autoplay.prototype.showProgressBar = function () { + var _this = this; + if (this.settings.progressBar && this.fromAuto) { + var _$progressBar_1 = this.core.outer.find('.lg-progress-bar'); + var _$progress_1 = this.core.outer.find('.lg-progress'); + if (this.interval) { + _$progress_1.removeAttr('style'); + _$progressBar_1.removeClass('lg-start'); + setTimeout(function () { + _$progress_1.css('transition', 'width ' + + (_this.core.settings.speed + + _this.settings.slideShowInterval) + + 'ms ease 0s'); + _$progressBar_1.addClass('lg-start'); + }, 20); + } + } + }; + // Manage autoplay via play/stop buttons + Autoplay.prototype.controls = function () { + var _this = this; + var _html = ""; + // Append autoplay controls + this.core.outer + .find(this.settings.appendAutoplayControlsTo) + .append(_html); + this.core.outer + .find('.lg-autoplay-button') + .first() + .on('click.lg.autoplay', function () { + if (_this.core.outer.hasClass('lg-show-autoplay')) { + _this.stopAutoPlay(); + } + else { + if (!_this.interval) { + _this.startAutoPlay(); + } + } + }); + }; + // Autostart gallery + Autoplay.prototype.startAutoPlay = function () { + var _this = this; + this.core.outer + .find('.lg-progress') + .css('transition', 'width ' + + (this.core.settings.speed + + this.settings.slideShowInterval) + + 'ms ease 0s'); + this.core.outer.addClass('lg-show-autoplay'); + this.core.outer.find('.lg-progress-bar').addClass('lg-start'); + this.core.LGel.trigger(lGEvents.autoplayStart, { + index: this.core.index, + }); + this.interval = setInterval(function () { + if (_this.core.index + 1 < _this.core.galleryItems.length) { + _this.core.index++; + } + else { + _this.core.index = 0; + } + _this.core.LGel.trigger(lGEvents.autoplay, { + index: _this.core.index, + }); + _this.fromAuto = true; + _this.core.slide(_this.core.index, false, false, 'next'); + }, this.core.settings.speed + this.settings.slideShowInterval); + }; + // cancel Autostart + Autoplay.prototype.stopAutoPlay = function () { + if (this.interval) { + this.core.LGel.trigger(lGEvents.autoplayStop, { + index: this.core.index, + }); + this.core.outer.find('.lg-progress').removeAttr('style'); + this.core.outer.removeClass('lg-show-autoplay'); + this.core.outer.find('.lg-progress-bar').removeClass('lg-start'); + } + clearInterval(this.interval); + this.interval = false; + }; + Autoplay.prototype.closeGallery = function () { + this.stopAutoPlay(); + }; + Autoplay.prototype.destroy = function () { + if (this.settings.autoplay) { + this.core.outer.find('.lg-progress-bar').remove(); + } + // Remove all event listeners added by autoplay plugin + this.core.LGel.off('.lg.autoplay'); + this.core.LGel.off('.autoplay'); + }; + return Autoplay; +}()); + +export default Autoplay; +//# sourceMappingURL=lg-autoplay.es5.js.map diff --git a/assets/lightGallery/plugins/autoplay/lg-autoplay.es5.js.map b/assets/lightGallery/plugins/autoplay/lg-autoplay.es5.js.map new file mode 100644 index 0000000..1e49343 --- /dev/null +++ b/assets/lightGallery/plugins/autoplay/lg-autoplay.es5.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lg-autoplay.es5.js","sources":["../../../src/lg-events.ts","../../../src/plugins/autoplay/lg-autoplay-settings.ts","../../../src/plugins/autoplay/lg-autoplay.ts"],"sourcesContent":["import { LightGallery } from './lightgallery';\nimport { VideoSource } from './plugins/video/types';\n\n/**\n * List of lightGallery events\n * All events should be documented here\n * Below interfaces are used to build the website documentations\n * */\nexport const lGEvents: {\n [key: string]: string;\n} = {\n afterAppendSlide: 'lgAfterAppendSlide',\n init: 'lgInit',\n hasVideo: 'lgHasVideo',\n containerResize: 'lgContainerResize',\n updateSlides: 'lgUpdateSlides',\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\n beforeOpen: 'lgBeforeOpen',\n afterOpen: 'lgAfterOpen',\n slideItemLoad: 'lgSlideItemLoad',\n beforeSlide: 'lgBeforeSlide',\n afterSlide: 'lgAfterSlide',\n posterClick: 'lgPosterClick',\n dragStart: 'lgDragStart',\n dragMove: 'lgDragMove',\n dragEnd: 'lgDragEnd',\n beforeNextSlide: 'lgBeforeNextSlide',\n beforePrevSlide: 'lgBeforePrevSlide',\n beforeClose: 'lgBeforeClose',\n afterClose: 'lgAfterClose',\n rotateLeft: 'lgRotateLeft',\n rotateRight: 'lgRotateRight',\n flipHorizontal: 'lgFlipHorizontal',\n flipVertical: 'lgFlipVertical',\n autoplay: 'lgAutoplay',\n autoplayStart: 'lgAutoplayStart',\n autoplayStop: 'lgAutoplayStop',\n};\n\n// Follow the below format for the event documentation\n// @method is the method name when event is used with Angular/React components\n\n/**\n * Fired only once when lightGallery is initialized\n * @name lgInit\n * @method onInit\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action on lightGallery initialization.\n * // Init event returns the plugin instance that can be used to call any lightGalley public method\n * let pluginInstance = null;\n * lg.addEventListener('lgInit', (event) => {\n * pluginInstance = event.detail.instance;\n * });\n * lightGallery(lg);\n * @see Methods\n */\nexport interface InitDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired when the slide content has been inserted into it's slide container.\n * @name lgAfterAppendSlide\n * @method onAfterAppendSlide\n */\nexport interface AfterAppendSlideEventDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired immediately before opening the gallery\n * @name lgBeforeOpen\n * @method onBeforeOpen\n */\nexport interface BeforeOpenDetail {}\n\n/**\n * Fired immediately after opening the gallery\n * @name lgAfterOpen\n * @method onAfterOpen\n */\nexport interface AfterOpenDetail {}\n\n/**\n * Fired once the media inside the slide has been completely loaded .\n * @name lgSlideItemLoad\n * @method onSlideItemLoad\n */\nexport interface SlideItemLoadDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * For the first slide, lightGallery adds some delay for displaying the loaded slide item.\n * This delay is required for the transition effect when the slide item is displayed\n * Respect the delay when you use this event\n */\n delay: number;\n\n // Will be true for the first slide\n isFirstSlide: boolean;\n}\n\n/**\n * Fired immediately before each slide transition.\n * @name lgBeforeSlide\n * @method onBeforeSlide\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action before each slide transition\n * lg.addEventListener('lgBeforeSlide', (event) => {\n * const { index, prevIndex } = event.detail;\n * alert(index, prevIndex);\n * });\n * lightGallery(lg);\n */\nexport interface BeforeSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired immediately after each slide transition.\n * @name lgAfterSlide\n * @method onAfterSlide\n */\nexport interface AfterSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired when the video poster is clicked.\n * @name lgPosterClick\n * @method onPosterClick\n */\nexport interface PosterClickDetail {}\n\n/**\n * Fired when the drag event to move to different slide starts.\n * @name lgDragStart\n * @method onDragStart\n */\nexport interface DragStartDetail {}\n\n/**\n * Fired periodically during the drag operation.\n * @name lgDragMove\n * @method onDragMove\n */\nexport interface DragMoveDetail {}\n\n/**\n * Fired when the user has finished the drag operation\n * @name lgDragEnd\n * @method onDragEnd\n */\nexport interface DragEndDetail {}\n\n/**\n * Fired immediately before the start of the close process.\n * @name lgBeforeClose\n * @method onBeforeClose\n */\nexport interface BeforeCloseDetail {}\n\n/**\n * Fired immediately once lightGallery is closed.\n * @name lgAfterClose\n * @method onAfterClose\n */\nexport interface AfterCloseDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired immediately before each \"next\" slide transition\n * @name lgBeforeNextSlide\n * @method onBeforeNextSlide\n */\nexport interface BeforeNextSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired immediately before each \"prev\" slide transition\n * @name lgBeforePrevSlide\n * @method onBeforePrevSlide\n */\nexport interface BeforePrevSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired when the sub-html content (ex : title/ description) has been appended into the slide.\n * @name lgAfterAppendSubHtml\n * @method onAfterAppendSubHtml\n */\nexport interface AfterAppendSubHtmlDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the lightGallery container has been resized.\n * @name lgContainerResize\n * @method onContainerResize\n */\nexport interface ContainerResizeDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when lightGallery detects video slide\n * @name lgHasVideo\n * @method onHasVideo\n */\nexport interface HasVideoDetail {\n /**\n * Index of the slide,\n */\n index: number;\n /**\n * Video source\n */\n src: string;\n /**\n * HTML5 video source if available\n *

\n HTML5 video source = source: {\n src: string;\n type: string;\n }[];\n attributes: HTMLVideoElement;\n *

\n */\n html5Video: VideoSource;\n /**\n * True if video has poster\n */\n hasPoster: boolean;\n}\n\n/**\n * Fired when the image is rotated in anticlockwise direction\n * @name lgRotateLeft\n * @method onRotateLeft\n */\nexport interface RotateLeftDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is rotated in clockwise direction\n * @name lgRotateRight\n * @method onRotateRight\n */\nexport interface RotateRightDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped horizontally\n * @name lgFlipHorizontal\n * @method onFlipHorizontal\n */\nexport interface FlipHorizontalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped vertically\n * @name lgFlipVertical\n * @method onFlipVertical\n */\nexport interface FlipVerticalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n","export interface AutoplayStrings {\n toggleAutoplay: string;\n}\n\nexport interface AutoplaySettings {\n /**\n * Enable autoplay plugin\n */\n autoplay: boolean;\n\n /**\n * Enable slideshow autoplay\n */\n slideShowAutoplay: boolean;\n\n /**\n * The time (in ms) between each auto transition.\n */\n slideShowInterval: number;\n\n /**\n * Show autoplay progressBar\n */\n progressBar: boolean;\n\n /**\n * If false autoplay will be stopped after first user action\n */\n forceSlideShowAutoplay: boolean;\n\n /**\n * Show/hide autoplay controls.\n */\n autoplayControls: boolean;\n\n /**\n * Specify where the autoplay controls should be appended.\n */\n appendAutoplayControlsTo: string;\n\n /**\n * Custom translation strings for aria-labels\n */\n autoplayPluginStrings: AutoplayStrings;\n}\nexport const autoplaySettings: AutoplaySettings = {\n autoplay: true,\n slideShowAutoplay: false,\n slideShowInterval: 5000,\n progressBar: true,\n forceSlideShowAutoplay: false,\n autoplayControls: true,\n appendAutoplayControlsTo: '.lg-toolbar',\n autoplayPluginStrings: {\n toggleAutoplay: 'Toggle Autoplay',\n } as AutoplayStrings,\n};\n","import { lGEvents } from '../../lg-events';\nimport { LightGallery } from '../../lightgallery';\nimport { AutoplaySettings, autoplaySettings } from './lg-autoplay-settings';\n\n/**\n * Creates the autoplay plugin.\n * @param {object} element - lightGallery element\n */\nexport default class Autoplay {\n core: LightGallery;\n settings: AutoplaySettings;\n interval!: any;\n fromAuto!: boolean;\n pausedOnTouchDrag!: boolean;\n pausedOnSlideChange!: boolean;\n\n constructor(instance: LightGallery) {\n this.core = instance;\n\n // extend module default settings with lightGallery core settings\n this.settings = { ...autoplaySettings, ...this.core.settings };\n\n return this;\n }\n\n public init(): void {\n if (!this.settings.autoplay) {\n return;\n }\n\n this.interval = false;\n\n // Identify if slide happened from autoplay\n this.fromAuto = true;\n\n // Identify if autoplay canceled from touch/drag\n this.pausedOnTouchDrag = false;\n\n this.pausedOnSlideChange = false;\n\n // append autoplay controls\n if (this.settings.autoplayControls) {\n this.controls();\n }\n\n // Create progress bar\n if (this.settings.progressBar) {\n this.core.outer.append(\n '
',\n );\n }\n\n // Start autoplay\n if (this.settings.slideShowAutoplay) {\n this.core.LGel.once(`${lGEvents.slideItemLoad}.autoplay`, () => {\n this.startAutoPlay();\n });\n }\n\n // cancel interval on touchstart and dragstart\n this.core.LGel.on(\n `${lGEvents.dragStart}.autoplay touchstart.lg.autoplay`,\n () => {\n if (this.interval) {\n this.stopAutoPlay();\n this.pausedOnTouchDrag = true;\n }\n },\n );\n\n // restore autoplay if autoplay canceled from touchstart / dragstart\n this.core.LGel.on(\n `${lGEvents.dragEnd}.autoplay touchend.lg.autoplay`,\n () => {\n if (!this.interval && this.pausedOnTouchDrag) {\n this.startAutoPlay();\n this.pausedOnTouchDrag = false;\n }\n },\n );\n\n this.core.LGel.on(`${lGEvents.beforeSlide}.autoplay`, () => {\n this.showProgressBar();\n if (!this.fromAuto && this.interval) {\n this.stopAutoPlay();\n this.pausedOnSlideChange = true;\n } else {\n this.pausedOnSlideChange = false;\n }\n this.fromAuto = false;\n });\n\n // restore autoplay if autoplay canceled from touchstart / dragstart\n this.core.LGel.on(`${lGEvents.afterSlide}.autoplay`, () => {\n if (\n this.pausedOnSlideChange &&\n !this.interval &&\n this.settings.forceSlideShowAutoplay\n ) {\n this.startAutoPlay();\n this.pausedOnSlideChange = false;\n }\n });\n\n // set progress\n this.showProgressBar();\n }\n\n private showProgressBar() {\n if (this.settings.progressBar && this.fromAuto) {\n const _$progressBar = this.core.outer.find('.lg-progress-bar');\n const _$progress = this.core.outer.find('.lg-progress');\n if (this.interval) {\n _$progress.removeAttr('style');\n _$progressBar.removeClass('lg-start');\n setTimeout(() => {\n _$progress.css(\n 'transition',\n 'width ' +\n (this.core.settings.speed +\n this.settings.slideShowInterval) +\n 'ms ease 0s',\n );\n _$progressBar.addClass('lg-start');\n }, 20);\n }\n }\n }\n\n // Manage autoplay via play/stop buttons\n private controls() {\n const _html = ``;\n\n // Append autoplay controls\n this.core.outer\n .find(this.settings.appendAutoplayControlsTo)\n .append(_html);\n\n this.core.outer\n .find('.lg-autoplay-button')\n .first()\n .on('click.lg.autoplay', () => {\n if (this.core.outer.hasClass('lg-show-autoplay')) {\n this.stopAutoPlay();\n } else {\n if (!this.interval) {\n this.startAutoPlay();\n }\n }\n });\n }\n\n // Autostart gallery\n public startAutoPlay(): void {\n this.core.outer\n .find('.lg-progress')\n .css(\n 'transition',\n 'width ' +\n (this.core.settings.speed +\n this.settings.slideShowInterval) +\n 'ms ease 0s',\n );\n this.core.outer.addClass('lg-show-autoplay');\n this.core.outer.find('.lg-progress-bar').addClass('lg-start');\n this.core.LGel.trigger(lGEvents.autoplayStart, {\n index: this.core.index,\n });\n\n this.interval = setInterval(() => {\n if (this.core.index + 1 < this.core.galleryItems.length) {\n this.core.index++;\n } else {\n this.core.index = 0;\n }\n\n this.core.LGel.trigger(lGEvents.autoplay, {\n index: this.core.index,\n });\n\n this.fromAuto = true;\n this.core.slide(this.core.index, false, false, 'next');\n }, this.core.settings.speed + this.settings.slideShowInterval);\n }\n\n // cancel Autostart\n public stopAutoPlay(): void {\n if (this.interval) {\n this.core.LGel.trigger(lGEvents.autoplayStop, {\n index: this.core.index,\n });\n this.core.outer.find('.lg-progress').removeAttr('style');\n this.core.outer.removeClass('lg-show-autoplay');\n this.core.outer.find('.lg-progress-bar').removeClass('lg-start');\n }\n clearInterval(this.interval);\n this.interval = false;\n }\n\n public closeGallery(): void {\n this.stopAutoPlay();\n }\n public destroy(): void {\n if (this.settings.autoplay) {\n this.core.outer.find('.lg-progress-bar').remove();\n }\n // Remove all event listeners added by autoplay plugin\n this.core.LGel.off('.lg.autoplay');\n this.core.LGel.off('.autoplay');\n }\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/assets/lightGallery/plugins/autoplay/lg-autoplay.min.js b/assets/lightGallery/plugins/autoplay/lg-autoplay.min.js new file mode 100644 index 0000000..03ebbcb --- /dev/null +++ b/assets/lightGallery/plugins/autoplay/lg-autoplay.min.js @@ -0,0 +1,8 @@ +/** + * lightgallery | 2.9.0 | October 1st 2025 + * http://www.lightgalleryjs.com/ + * Copyright (c) 2020 Sachin Neravath; + * @license GPLv3 + */ + +!function(t,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o():"function"==typeof define&&define.amd?define(o):(t="undefined"!=typeof globalThis?globalThis:t||self).lgAutoplay=o()}(this,(function(){"use strict";var t=function(){return(t=Object.assign||function(t){for(var o,e=1,s=arguments.length;e
'),this.settings.slideShowAutoplay&&this.core.LGel.once(o+".autoplay",(function(){t.startAutoPlay()})),this.core.LGel.on(r+".autoplay touchstart.lg.autoplay",(function(){t.interval&&(t.stopAutoPlay(),t.pausedOnTouchDrag=!0)})),this.core.LGel.on(i+".autoplay touchend.lg.autoplay",(function(){!t.interval&&t.pausedOnTouchDrag&&(t.startAutoPlay(),t.pausedOnTouchDrag=!1)})),this.core.LGel.on(e+".autoplay",(function(){t.showProgressBar(),!t.fromAuto&&t.interval?(t.stopAutoPlay(),t.pausedOnSlideChange=!0):t.pausedOnSlideChange=!1,t.fromAuto=!1})),this.core.LGel.on(s+".autoplay",(function(){t.pausedOnSlideChange&&!t.interval&&t.settings.forceSlideShowAutoplay&&(t.startAutoPlay(),t.pausedOnSlideChange=!1)})),this.showProgressBar())},p.prototype.showProgressBar=function(){var t=this;if(this.settings.progressBar&&this.fromAuto){var o=this.core.outer.find(".lg-progress-bar"),e=this.core.outer.find(".lg-progress");this.interval&&(e.removeAttr("style"),o.removeClass("lg-start"),setTimeout((function(){e.css("transition","width "+(t.core.settings.speed+t.settings.slideShowInterval)+"ms ease 0s"),o.addClass("lg-start")}),20))}},p.prototype.controls=function(){var t=this,o='';this.core.outer.find(this.settings.appendAutoplayControlsTo).append(o),this.core.outer.find(".lg-autoplay-button").first().on("click.lg.autoplay",(function(){t.core.outer.hasClass("lg-show-autoplay")?t.stopAutoPlay():t.interval||t.startAutoPlay()}))},p.prototype.startAutoPlay=function(){var t=this;this.core.outer.find(".lg-progress").css("transition","width "+(this.core.settings.speed+this.settings.slideShowInterval)+"ms ease 0s"),this.core.outer.addClass("lg-show-autoplay"),this.core.outer.find(".lg-progress-bar").addClass("lg-start"),this.core.LGel.trigger(l,{index:this.core.index}),this.interval=setInterval((function(){t.core.index+1
'); + } + // Start autoplay + if (this.settings.slideShowAutoplay) { + this.core.LGel.once(lGEvents.slideItemLoad + ".autoplay", function () { + _this.startAutoPlay(); + }); + } + // cancel interval on touchstart and dragstart + this.core.LGel.on(lGEvents.dragStart + ".autoplay touchstart.lg.autoplay", function () { + if (_this.interval) { + _this.stopAutoPlay(); + _this.pausedOnTouchDrag = true; + } + }); + // restore autoplay if autoplay canceled from touchstart / dragstart + this.core.LGel.on(lGEvents.dragEnd + ".autoplay touchend.lg.autoplay", function () { + if (!_this.interval && _this.pausedOnTouchDrag) { + _this.startAutoPlay(); + _this.pausedOnTouchDrag = false; + } + }); + this.core.LGel.on(lGEvents.beforeSlide + ".autoplay", function () { + _this.showProgressBar(); + if (!_this.fromAuto && _this.interval) { + _this.stopAutoPlay(); + _this.pausedOnSlideChange = true; + } + else { + _this.pausedOnSlideChange = false; + } + _this.fromAuto = false; + }); + // restore autoplay if autoplay canceled from touchstart / dragstart + this.core.LGel.on(lGEvents.afterSlide + ".autoplay", function () { + if (_this.pausedOnSlideChange && + !_this.interval && + _this.settings.forceSlideShowAutoplay) { + _this.startAutoPlay(); + _this.pausedOnSlideChange = false; + } + }); + // set progress + this.showProgressBar(); + }; + Autoplay.prototype.showProgressBar = function () { + var _this = this; + if (this.settings.progressBar && this.fromAuto) { + var _$progressBar_1 = this.core.outer.find('.lg-progress-bar'); + var _$progress_1 = this.core.outer.find('.lg-progress'); + if (this.interval) { + _$progress_1.removeAttr('style'); + _$progressBar_1.removeClass('lg-start'); + setTimeout(function () { + _$progress_1.css('transition', 'width ' + + (_this.core.settings.speed + + _this.settings.slideShowInterval) + + 'ms ease 0s'); + _$progressBar_1.addClass('lg-start'); + }, 20); + } + } + }; + // Manage autoplay via play/stop buttons + Autoplay.prototype.controls = function () { + var _this = this; + var _html = ""; + // Append autoplay controls + this.core.outer + .find(this.settings.appendAutoplayControlsTo) + .append(_html); + this.core.outer + .find('.lg-autoplay-button') + .first() + .on('click.lg.autoplay', function () { + if (_this.core.outer.hasClass('lg-show-autoplay')) { + _this.stopAutoPlay(); + } + else { + if (!_this.interval) { + _this.startAutoPlay(); + } + } + }); + }; + // Autostart gallery + Autoplay.prototype.startAutoPlay = function () { + var _this = this; + this.core.outer + .find('.lg-progress') + .css('transition', 'width ' + + (this.core.settings.speed + + this.settings.slideShowInterval) + + 'ms ease 0s'); + this.core.outer.addClass('lg-show-autoplay'); + this.core.outer.find('.lg-progress-bar').addClass('lg-start'); + this.core.LGel.trigger(lGEvents.autoplayStart, { + index: this.core.index, + }); + this.interval = setInterval(function () { + if (_this.core.index + 1 < _this.core.galleryItems.length) { + _this.core.index++; + } + else { + _this.core.index = 0; + } + _this.core.LGel.trigger(lGEvents.autoplay, { + index: _this.core.index, + }); + _this.fromAuto = true; + _this.core.slide(_this.core.index, false, false, 'next'); + }, this.core.settings.speed + this.settings.slideShowInterval); + }; + // cancel Autostart + Autoplay.prototype.stopAutoPlay = function () { + if (this.interval) { + this.core.LGel.trigger(lGEvents.autoplayStop, { + index: this.core.index, + }); + this.core.outer.find('.lg-progress').removeAttr('style'); + this.core.outer.removeClass('lg-show-autoplay'); + this.core.outer.find('.lg-progress-bar').removeClass('lg-start'); + } + clearInterval(this.interval); + this.interval = false; + }; + Autoplay.prototype.closeGallery = function () { + this.stopAutoPlay(); + }; + Autoplay.prototype.destroy = function () { + if (this.settings.autoplay) { + this.core.outer.find('.lg-progress-bar').remove(); + } + // Remove all event listeners added by autoplay plugin + this.core.LGel.off('.lg.autoplay'); + this.core.LGel.off('.autoplay'); + }; + return Autoplay; + }()); + + return Autoplay; + +}))); +//# sourceMappingURL=lg-autoplay.umd.js.map diff --git a/assets/lightGallery/plugins/autoplay/lg-autoplay.umd.js.map b/assets/lightGallery/plugins/autoplay/lg-autoplay.umd.js.map new file mode 100644 index 0000000..692348c --- /dev/null +++ b/assets/lightGallery/plugins/autoplay/lg-autoplay.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lg-autoplay.umd.js","sources":["../../../src/lg-events.ts","../../../src/plugins/autoplay/lg-autoplay-settings.ts","../../../src/plugins/autoplay/lg-autoplay.ts"],"sourcesContent":["import { LightGallery } from './lightgallery';\nimport { VideoSource } from './plugins/video/types';\n\n/**\n * List of lightGallery events\n * All events should be documented here\n * Below interfaces are used to build the website documentations\n * */\nexport const lGEvents: {\n [key: string]: string;\n} = {\n afterAppendSlide: 'lgAfterAppendSlide',\n init: 'lgInit',\n hasVideo: 'lgHasVideo',\n containerResize: 'lgContainerResize',\n updateSlides: 'lgUpdateSlides',\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\n beforeOpen: 'lgBeforeOpen',\n afterOpen: 'lgAfterOpen',\n slideItemLoad: 'lgSlideItemLoad',\n beforeSlide: 'lgBeforeSlide',\n afterSlide: 'lgAfterSlide',\n posterClick: 'lgPosterClick',\n dragStart: 'lgDragStart',\n dragMove: 'lgDragMove',\n dragEnd: 'lgDragEnd',\n beforeNextSlide: 'lgBeforeNextSlide',\n beforePrevSlide: 'lgBeforePrevSlide',\n beforeClose: 'lgBeforeClose',\n afterClose: 'lgAfterClose',\n rotateLeft: 'lgRotateLeft',\n rotateRight: 'lgRotateRight',\n flipHorizontal: 'lgFlipHorizontal',\n flipVertical: 'lgFlipVertical',\n autoplay: 'lgAutoplay',\n autoplayStart: 'lgAutoplayStart',\n autoplayStop: 'lgAutoplayStop',\n};\n\n// Follow the below format for the event documentation\n// @method is the method name when event is used with Angular/React components\n\n/**\n * Fired only once when lightGallery is initialized\n * @name lgInit\n * @method onInit\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action on lightGallery initialization.\n * // Init event returns the plugin instance that can be used to call any lightGalley public method\n * let pluginInstance = null;\n * lg.addEventListener('lgInit', (event) => {\n * pluginInstance = event.detail.instance;\n * });\n * lightGallery(lg);\n * @see
Methods\n */\nexport interface InitDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired when the slide content has been inserted into it's slide container.\n * @name lgAfterAppendSlide\n * @method onAfterAppendSlide\n */\nexport interface AfterAppendSlideEventDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired immediately before opening the gallery\n * @name lgBeforeOpen\n * @method onBeforeOpen\n */\nexport interface BeforeOpenDetail {}\n\n/**\n * Fired immediately after opening the gallery\n * @name lgAfterOpen\n * @method onAfterOpen\n */\nexport interface AfterOpenDetail {}\n\n/**\n * Fired once the media inside the slide has been completely loaded .\n * @name lgSlideItemLoad\n * @method onSlideItemLoad\n */\nexport interface SlideItemLoadDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * For the first slide, lightGallery adds some delay for displaying the loaded slide item.\n * This delay is required for the transition effect when the slide item is displayed\n * Respect the delay when you use this event\n */\n delay: number;\n\n // Will be true for the first slide\n isFirstSlide: boolean;\n}\n\n/**\n * Fired immediately before each slide transition.\n * @name lgBeforeSlide\n * @method onBeforeSlide\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action before each slide transition\n * lg.addEventListener('lgBeforeSlide', (event) => {\n * const { index, prevIndex } = event.detail;\n * alert(index, prevIndex);\n * });\n * lightGallery(lg);\n */\nexport interface BeforeSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired immediately after each slide transition.\n * @name lgAfterSlide\n * @method onAfterSlide\n */\nexport interface AfterSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired when the video poster is clicked.\n * @name lgPosterClick\n * @method onPosterClick\n */\nexport interface PosterClickDetail {}\n\n/**\n * Fired when the drag event to move to different slide starts.\n * @name lgDragStart\n * @method onDragStart\n */\nexport interface DragStartDetail {}\n\n/**\n * Fired periodically during the drag operation.\n * @name lgDragMove\n * @method onDragMove\n */\nexport interface DragMoveDetail {}\n\n/**\n * Fired when the user has finished the drag operation\n * @name lgDragEnd\n * @method onDragEnd\n */\nexport interface DragEndDetail {}\n\n/**\n * Fired immediately before the start of the close process.\n * @name lgBeforeClose\n * @method onBeforeClose\n */\nexport interface BeforeCloseDetail {}\n\n/**\n * Fired immediately once lightGallery is closed.\n * @name lgAfterClose\n * @method onAfterClose\n */\nexport interface AfterCloseDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired immediately before each \"next\" slide transition\n * @name lgBeforeNextSlide\n * @method onBeforeNextSlide\n */\nexport interface BeforeNextSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired immediately before each \"prev\" slide transition\n * @name lgBeforePrevSlide\n * @method onBeforePrevSlide\n */\nexport interface BeforePrevSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired when the sub-html content (ex : title/ description) has been appended into the slide.\n * @name lgAfterAppendSubHtml\n * @method onAfterAppendSubHtml\n */\nexport interface AfterAppendSubHtmlDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the lightGallery container has been resized.\n * @name lgContainerResize\n * @method onContainerResize\n */\nexport interface ContainerResizeDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when lightGallery detects video slide\n * @name lgHasVideo\n * @method onHasVideo\n */\nexport interface HasVideoDetail {\n /**\n * Index of the slide,\n */\n index: number;\n /**\n * Video source\n */\n src: string;\n /**\n * HTML5 video source if available\n *

\n HTML5 video source = source: {\n src: string;\n type: string;\n }[];\n attributes: HTMLVideoElement;\n *

\n */\n html5Video: VideoSource;\n /**\n * True if video has poster\n */\n hasPoster: boolean;\n}\n\n/**\n * Fired when the image is rotated in anticlockwise direction\n * @name lgRotateLeft\n * @method onRotateLeft\n */\nexport interface RotateLeftDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is rotated in clockwise direction\n * @name lgRotateRight\n * @method onRotateRight\n */\nexport interface RotateRightDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped horizontally\n * @name lgFlipHorizontal\n * @method onFlipHorizontal\n */\nexport interface FlipHorizontalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped vertically\n * @name lgFlipVertical\n * @method onFlipVertical\n */\nexport interface FlipVerticalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n","export interface AutoplayStrings {\n toggleAutoplay: string;\n}\n\nexport interface AutoplaySettings {\n /**\n * Enable autoplay plugin\n */\n autoplay: boolean;\n\n /**\n * Enable slideshow autoplay\n */\n slideShowAutoplay: boolean;\n\n /**\n * The time (in ms) between each auto transition.\n */\n slideShowInterval: number;\n\n /**\n * Show autoplay progressBar\n */\n progressBar: boolean;\n\n /**\n * If false autoplay will be stopped after first user action\n */\n forceSlideShowAutoplay: boolean;\n\n /**\n * Show/hide autoplay controls.\n */\n autoplayControls: boolean;\n\n /**\n * Specify where the autoplay controls should be appended.\n */\n appendAutoplayControlsTo: string;\n\n /**\n * Custom translation strings for aria-labels\n */\n autoplayPluginStrings: AutoplayStrings;\n}\nexport const autoplaySettings: AutoplaySettings = {\n autoplay: true,\n slideShowAutoplay: false,\n slideShowInterval: 5000,\n progressBar: true,\n forceSlideShowAutoplay: false,\n autoplayControls: true,\n appendAutoplayControlsTo: '.lg-toolbar',\n autoplayPluginStrings: {\n toggleAutoplay: 'Toggle Autoplay',\n } as AutoplayStrings,\n};\n","import { lGEvents } from '../../lg-events';\nimport { LightGallery } from '../../lightgallery';\nimport { AutoplaySettings, autoplaySettings } from './lg-autoplay-settings';\n\n/**\n * Creates the autoplay plugin.\n * @param {object} element - lightGallery element\n */\nexport default class Autoplay {\n core: LightGallery;\n settings: AutoplaySettings;\n interval!: any;\n fromAuto!: boolean;\n pausedOnTouchDrag!: boolean;\n pausedOnSlideChange!: boolean;\n\n constructor(instance: LightGallery) {\n this.core = instance;\n\n // extend module default settings with lightGallery core settings\n this.settings = { ...autoplaySettings, ...this.core.settings };\n\n return this;\n }\n\n public init(): void {\n if (!this.settings.autoplay) {\n return;\n }\n\n this.interval = false;\n\n // Identify if slide happened from autoplay\n this.fromAuto = true;\n\n // Identify if autoplay canceled from touch/drag\n this.pausedOnTouchDrag = false;\n\n this.pausedOnSlideChange = false;\n\n // append autoplay controls\n if (this.settings.autoplayControls) {\n this.controls();\n }\n\n // Create progress bar\n if (this.settings.progressBar) {\n this.core.outer.append(\n '
',\n );\n }\n\n // Start autoplay\n if (this.settings.slideShowAutoplay) {\n this.core.LGel.once(`${lGEvents.slideItemLoad}.autoplay`, () => {\n this.startAutoPlay();\n });\n }\n\n // cancel interval on touchstart and dragstart\n this.core.LGel.on(\n `${lGEvents.dragStart}.autoplay touchstart.lg.autoplay`,\n () => {\n if (this.interval) {\n this.stopAutoPlay();\n this.pausedOnTouchDrag = true;\n }\n },\n );\n\n // restore autoplay if autoplay canceled from touchstart / dragstart\n this.core.LGel.on(\n `${lGEvents.dragEnd}.autoplay touchend.lg.autoplay`,\n () => {\n if (!this.interval && this.pausedOnTouchDrag) {\n this.startAutoPlay();\n this.pausedOnTouchDrag = false;\n }\n },\n );\n\n this.core.LGel.on(`${lGEvents.beforeSlide}.autoplay`, () => {\n this.showProgressBar();\n if (!this.fromAuto && this.interval) {\n this.stopAutoPlay();\n this.pausedOnSlideChange = true;\n } else {\n this.pausedOnSlideChange = false;\n }\n this.fromAuto = false;\n });\n\n // restore autoplay if autoplay canceled from touchstart / dragstart\n this.core.LGel.on(`${lGEvents.afterSlide}.autoplay`, () => {\n if (\n this.pausedOnSlideChange &&\n !this.interval &&\n this.settings.forceSlideShowAutoplay\n ) {\n this.startAutoPlay();\n this.pausedOnSlideChange = false;\n }\n });\n\n // set progress\n this.showProgressBar();\n }\n\n private showProgressBar() {\n if (this.settings.progressBar && this.fromAuto) {\n const _$progressBar = this.core.outer.find('.lg-progress-bar');\n const _$progress = this.core.outer.find('.lg-progress');\n if (this.interval) {\n _$progress.removeAttr('style');\n _$progressBar.removeClass('lg-start');\n setTimeout(() => {\n _$progress.css(\n 'transition',\n 'width ' +\n (this.core.settings.speed +\n this.settings.slideShowInterval) +\n 'ms ease 0s',\n );\n _$progressBar.addClass('lg-start');\n }, 20);\n }\n }\n }\n\n // Manage autoplay via play/stop buttons\n private controls() {\n const _html = ``;\n\n // Append autoplay controls\n this.core.outer\n .find(this.settings.appendAutoplayControlsTo)\n .append(_html);\n\n this.core.outer\n .find('.lg-autoplay-button')\n .first()\n .on('click.lg.autoplay', () => {\n if (this.core.outer.hasClass('lg-show-autoplay')) {\n this.stopAutoPlay();\n } else {\n if (!this.interval) {\n this.startAutoPlay();\n }\n }\n });\n }\n\n // Autostart gallery\n public startAutoPlay(): void {\n this.core.outer\n .find('.lg-progress')\n .css(\n 'transition',\n 'width ' +\n (this.core.settings.speed +\n this.settings.slideShowInterval) +\n 'ms ease 0s',\n );\n this.core.outer.addClass('lg-show-autoplay');\n this.core.outer.find('.lg-progress-bar').addClass('lg-start');\n this.core.LGel.trigger(lGEvents.autoplayStart, {\n index: this.core.index,\n });\n\n this.interval = setInterval(() => {\n if (this.core.index + 1 < this.core.galleryItems.length) {\n this.core.index++;\n } else {\n this.core.index = 0;\n }\n\n this.core.LGel.trigger(lGEvents.autoplay, {\n index: this.core.index,\n });\n\n this.fromAuto = true;\n this.core.slide(this.core.index, false, false, 'next');\n }, this.core.settings.speed + this.settings.slideShowInterval);\n }\n\n // cancel Autostart\n public stopAutoPlay(): void {\n if (this.interval) {\n this.core.LGel.trigger(lGEvents.autoplayStop, {\n index: this.core.index,\n });\n this.core.outer.find('.lg-progress').removeAttr('style');\n this.core.outer.removeClass('lg-show-autoplay');\n this.core.outer.find('.lg-progress-bar').removeClass('lg-start');\n }\n clearInterval(this.interval);\n this.interval = false;\n }\n\n public closeGallery(): void {\n this.stopAutoPlay();\n }\n public destroy(): void {\n if (this.settings.autoplay) {\n this.core.outer.find('.lg-progress-bar').remove();\n }\n // Remove all event listeners added by autoplay plugin\n this.core.LGel.off('.lg.autoplay');\n this.core.LGel.off('.autoplay');\n }\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/assets/lightGallery/plugins/autoplay/package.json b/assets/lightGallery/plugins/autoplay/package.json new file mode 100644 index 0000000..e4eb37b --- /dev/null +++ b/assets/lightGallery/plugins/autoplay/package.json @@ -0,0 +1,7 @@ +{ + "name": "lightgallery/plugins/autoplay", + "private": true, + "main": "lg-autoplay.umd.js", + "module": "lg-autoplay.es5.js", + "typings": "lg-autoplay.d.ts" +} \ No newline at end of file diff --git a/assets/lightGallery/plugins/comment/lg-comment-settings.d.ts b/assets/lightGallery/plugins/comment/lg-comment-settings.d.ts new file mode 100644 index 0000000..b73067d --- /dev/null +++ b/assets/lightGallery/plugins/comment/lg-comment-settings.d.ts @@ -0,0 +1,33 @@ +export interface CommentStrings { + toggleComments: string; +} +export interface CommentSettings { + /** + * Enable comment box + */ + commentBox: boolean; + /** + * Enable facebook comment box + */ + fbComments: boolean; + /** + * Enable disqus comment box + */ + disqusComments: boolean; + /** + * Disqus comment config + */ + disqusConfig: { + title?: string; + language: string; + }; + /** + * Facebook comments default markup + */ + commentsMarkup: string; + /** + * Custom translation strings for aria-labels + */ + commentPluginStrings: CommentStrings; +} +export declare const commentSettings: CommentSettings; diff --git a/assets/lightGallery/plugins/comment/lg-comment.d.ts b/assets/lightGallery/plugins/comment/lg-comment.d.ts new file mode 100644 index 0000000..b7c1cb8 --- /dev/null +++ b/assets/lightGallery/plugins/comment/lg-comment.d.ts @@ -0,0 +1,25 @@ +/** + * lightGallery comments module + * Supports facebook and disqus comments + * + * @ref - https://help.disqus.com/customer/portal/articles/472098-javascript-configuration-variables + * @ref - https://github.com/disqus/DISQUS-API-Recipes/blob/master/snippets/js/disqus-reset/disqus_reset.html + * @ref - https://css-tricks.com/lazy-loading-disqus-comments/ + * @ref - https://developers.facebook.com/docs/plugins/comments/#comments-plugin + * + */ +import { LgQuery } from '../../lgQuery'; +import { LightGallery } from '../../lightgallery'; +import { CommentSettings } from './lg-comment-settings'; +export default class CommentBox { + core: LightGallery; + settings: CommentSettings; + private $LG; + constructor(instance: LightGallery, $LG: LgQuery); + init(): void; + private setMarkup; + toggleCommentBox(): void; + addFbComments(): void; + addDisqusComments(): void; + destroy(): void; +} diff --git a/assets/lightGallery/plugins/comment/lg-comment.es5.js b/assets/lightGallery/plugins/comment/lg-comment.es5.js new file mode 100644 index 0000000..db6cc13 --- /dev/null +++ b/assets/lightGallery/plugins/comment/lg-comment.es5.js @@ -0,0 +1,205 @@ +/*! + * lightgallery | 2.9.0 | October 1st 2025 + * http://www.lightgalleryjs.com/ + * Copyright (c) 2020 Sachin Neravath; + * @license GPLv3 + */ + +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ + +var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; + +/** + * List of lightGallery events + * All events should be documented here + * Below interfaces are used to build the website documentations + * */ +var lGEvents = { + afterAppendSlide: 'lgAfterAppendSlide', + init: 'lgInit', + hasVideo: 'lgHasVideo', + containerResize: 'lgContainerResize', + updateSlides: 'lgUpdateSlides', + afterAppendSubHtml: 'lgAfterAppendSubHtml', + beforeOpen: 'lgBeforeOpen', + afterOpen: 'lgAfterOpen', + slideItemLoad: 'lgSlideItemLoad', + beforeSlide: 'lgBeforeSlide', + afterSlide: 'lgAfterSlide', + posterClick: 'lgPosterClick', + dragStart: 'lgDragStart', + dragMove: 'lgDragMove', + dragEnd: 'lgDragEnd', + beforeNextSlide: 'lgBeforeNextSlide', + beforePrevSlide: 'lgBeforePrevSlide', + beforeClose: 'lgBeforeClose', + afterClose: 'lgAfterClose', + rotateLeft: 'lgRotateLeft', + rotateRight: 'lgRotateRight', + flipHorizontal: 'lgFlipHorizontal', + flipVertical: 'lgFlipVertical', + autoplay: 'lgAutoplay', + autoplayStart: 'lgAutoplayStart', + autoplayStop: 'lgAutoplayStop', +}; + +var commentSettings = { + commentBox: false, + fbComments: false, + disqusComments: false, + disqusConfig: { + title: undefined, + language: 'en', + }, + commentsMarkup: '

Leave a comment.

', + commentPluginStrings: { + toggleComments: 'Toggle Comments', + }, +}; + +/** + * lightGallery comments module + * Supports facebook and disqus comments + * + * @ref - https://help.disqus.com/customer/portal/articles/472098-javascript-configuration-variables + * @ref - https://github.com/disqus/DISQUS-API-Recipes/blob/master/snippets/js/disqus-reset/disqus_reset.html + * @ref - https://css-tricks.com/lazy-loading-disqus-comments/ + * @ref - https://developers.facebook.com/docs/plugins/comments/#comments-plugin + * + */ +var CommentBox = /** @class */ (function () { + function CommentBox(instance, $LG) { + // get lightGallery core plugin instance + this.core = instance; + this.$LG = $LG; + // extend module default settings with lightGallery core settings + this.settings = __assign(__assign({}, commentSettings), this.core.settings); + return this; + } + CommentBox.prototype.init = function () { + if (!this.settings.commentBox) { + return; + } + this.setMarkup(); + this.toggleCommentBox(); + if (this.settings.fbComments) { + this.addFbComments(); + } + else if (this.settings.disqusComments) { + this.addDisqusComments(); + } + }; + CommentBox.prototype.setMarkup = function () { + this.core.outer.append(this.settings.commentsMarkup + + '
'); + var commentToggleBtn = ""; + this.core.$toolbar.append(commentToggleBtn); + }; + CommentBox.prototype.toggleCommentBox = function () { + var _this_1 = this; + this.core.outer + .find('.lg-comment-toggle') + .first() + .on('click.lg.comment', function () { + _this_1.core.outer.toggleClass('lg-comment-active'); + }); + this.core.outer + .find('.lg-comment-overlay') + .first() + .on('click.lg.comment', function () { + _this_1.core.outer.removeClass('lg-comment-active'); + }); + this.core.outer + .find('.lg-comment-close') + .first() + .on('click.lg.comment', function () { + _this_1.core.outer.removeClass('lg-comment-active'); + }); + }; + CommentBox.prototype.addFbComments = function () { + var _this_1 = this; + // eslint-disable-next-line @typescript-eslint/no-this-alias + var _this = this; + this.core.LGel.on(lGEvents.beforeSlide + ".comment", function (event) { + var html = _this_1.core.galleryItems[event.detail.index].fbHtml; + _this_1.core.outer.find('.lg-comment-body').html(html); + }); + this.core.LGel.on(lGEvents.afterSlide + ".comment", function () { + try { + FB.XFBML.parse(); + } + catch (err) { + _this.$LG(window).on('fbAsyncInit', function () { + FB.XFBML.parse(); + }); + } + }); + }; + CommentBox.prototype.addDisqusComments = function () { + var _this_1 = this; + var $disqusThread = this.$LG('#disqus_thread'); + $disqusThread.remove(); + this.core.outer + .find('.lg-comment-body') + .append('
'); + this.core.LGel.on(lGEvents.beforeSlide + ".comment", function () { + $disqusThread.html(''); + }); + this.core.LGel.on(lGEvents.afterSlide + ".comment", function (event) { + var index = event.detail.index; + // eslint-disable-next-line @typescript-eslint/no-this-alias + var _this = _this_1; + // DISQUS needs sometime to intialize when lightGallery is opened from direct url(hash plugin). + setTimeout(function () { + try { + DISQUS.reset({ + reload: true, + config: function () { + this.page.identifier = + _this.core.galleryItems[index].disqusIdentifier; + this.page.url = + _this.core.galleryItems[index].disqusURL; + this.page.title = + _this.settings.disqusConfig.title; + this.language = + _this.settings.disqusConfig.language; + }, + }); + } + catch (err) { + console.error('Make sure you have included disqus JavaScript code in your document. Ex - https://lg-disqus.disqus.com/admin/install/platforms/universalcode/'); + } + }, _this.core.lGalleryOn ? 0 : 1000); + }); + }; + CommentBox.prototype.destroy = function () { + this.core.LGel.off('.lg.comment'); + this.core.LGel.off('.comment'); + }; + return CommentBox; +}()); + +export default CommentBox; +//# sourceMappingURL=lg-comment.es5.js.map diff --git a/assets/lightGallery/plugins/comment/lg-comment.es5.js.map b/assets/lightGallery/plugins/comment/lg-comment.es5.js.map new file mode 100644 index 0000000..e419b9b --- /dev/null +++ b/assets/lightGallery/plugins/comment/lg-comment.es5.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lg-comment.es5.js","sources":["../../../src/lg-events.ts","../../../src/plugins/comment/lg-comment-settings.ts","../../../src/plugins/comment/lg-comment.ts"],"sourcesContent":["import { LightGallery } from './lightgallery';\nimport { VideoSource } from './plugins/video/types';\n\n/**\n * List of lightGallery events\n * All events should be documented here\n * Below interfaces are used to build the website documentations\n * */\nexport const lGEvents: {\n [key: string]: string;\n} = {\n afterAppendSlide: 'lgAfterAppendSlide',\n init: 'lgInit',\n hasVideo: 'lgHasVideo',\n containerResize: 'lgContainerResize',\n updateSlides: 'lgUpdateSlides',\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\n beforeOpen: 'lgBeforeOpen',\n afterOpen: 'lgAfterOpen',\n slideItemLoad: 'lgSlideItemLoad',\n beforeSlide: 'lgBeforeSlide',\n afterSlide: 'lgAfterSlide',\n posterClick: 'lgPosterClick',\n dragStart: 'lgDragStart',\n dragMove: 'lgDragMove',\n dragEnd: 'lgDragEnd',\n beforeNextSlide: 'lgBeforeNextSlide',\n beforePrevSlide: 'lgBeforePrevSlide',\n beforeClose: 'lgBeforeClose',\n afterClose: 'lgAfterClose',\n rotateLeft: 'lgRotateLeft',\n rotateRight: 'lgRotateRight',\n flipHorizontal: 'lgFlipHorizontal',\n flipVertical: 'lgFlipVertical',\n autoplay: 'lgAutoplay',\n autoplayStart: 'lgAutoplayStart',\n autoplayStop: 'lgAutoplayStop',\n};\n\n// Follow the below format for the event documentation\n// @method is the method name when event is used with Angular/React components\n\n/**\n * Fired only once when lightGallery is initialized\n * @name lgInit\n * @method onInit\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action on lightGallery initialization.\n * // Init event returns the plugin instance that can be used to call any lightGalley public method\n * let pluginInstance = null;\n * lg.addEventListener('lgInit', (event) => {\n * pluginInstance = event.detail.instance;\n * });\n * lightGallery(lg);\n * @see
Methods\n */\nexport interface InitDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired when the slide content has been inserted into it's slide container.\n * @name lgAfterAppendSlide\n * @method onAfterAppendSlide\n */\nexport interface AfterAppendSlideEventDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired immediately before opening the gallery\n * @name lgBeforeOpen\n * @method onBeforeOpen\n */\nexport interface BeforeOpenDetail {}\n\n/**\n * Fired immediately after opening the gallery\n * @name lgAfterOpen\n * @method onAfterOpen\n */\nexport interface AfterOpenDetail {}\n\n/**\n * Fired once the media inside the slide has been completely loaded .\n * @name lgSlideItemLoad\n * @method onSlideItemLoad\n */\nexport interface SlideItemLoadDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * For the first slide, lightGallery adds some delay for displaying the loaded slide item.\n * This delay is required for the transition effect when the slide item is displayed\n * Respect the delay when you use this event\n */\n delay: number;\n\n // Will be true for the first slide\n isFirstSlide: boolean;\n}\n\n/**\n * Fired immediately before each slide transition.\n * @name lgBeforeSlide\n * @method onBeforeSlide\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action before each slide transition\n * lg.addEventListener('lgBeforeSlide', (event) => {\n * const { index, prevIndex } = event.detail;\n * alert(index, prevIndex);\n * });\n * lightGallery(lg);\n */\nexport interface BeforeSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired immediately after each slide transition.\n * @name lgAfterSlide\n * @method onAfterSlide\n */\nexport interface AfterSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired when the video poster is clicked.\n * @name lgPosterClick\n * @method onPosterClick\n */\nexport interface PosterClickDetail {}\n\n/**\n * Fired when the drag event to move to different slide starts.\n * @name lgDragStart\n * @method onDragStart\n */\nexport interface DragStartDetail {}\n\n/**\n * Fired periodically during the drag operation.\n * @name lgDragMove\n * @method onDragMove\n */\nexport interface DragMoveDetail {}\n\n/**\n * Fired when the user has finished the drag operation\n * @name lgDragEnd\n * @method onDragEnd\n */\nexport interface DragEndDetail {}\n\n/**\n * Fired immediately before the start of the close process.\n * @name lgBeforeClose\n * @method onBeforeClose\n */\nexport interface BeforeCloseDetail {}\n\n/**\n * Fired immediately once lightGallery is closed.\n * @name lgAfterClose\n * @method onAfterClose\n */\nexport interface AfterCloseDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired immediately before each \"next\" slide transition\n * @name lgBeforeNextSlide\n * @method onBeforeNextSlide\n */\nexport interface BeforeNextSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired immediately before each \"prev\" slide transition\n * @name lgBeforePrevSlide\n * @method onBeforePrevSlide\n */\nexport interface BeforePrevSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired when the sub-html content (ex : title/ description) has been appended into the slide.\n * @name lgAfterAppendSubHtml\n * @method onAfterAppendSubHtml\n */\nexport interface AfterAppendSubHtmlDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the lightGallery container has been resized.\n * @name lgContainerResize\n * @method onContainerResize\n */\nexport interface ContainerResizeDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when lightGallery detects video slide\n * @name lgHasVideo\n * @method onHasVideo\n */\nexport interface HasVideoDetail {\n /**\n * Index of the slide,\n */\n index: number;\n /**\n * Video source\n */\n src: string;\n /**\n * HTML5 video source if available\n *

\n HTML5 video source = source: {\n src: string;\n type: string;\n }[];\n attributes: HTMLVideoElement;\n *

\n */\n html5Video: VideoSource;\n /**\n * True if video has poster\n */\n hasPoster: boolean;\n}\n\n/**\n * Fired when the image is rotated in anticlockwise direction\n * @name lgRotateLeft\n * @method onRotateLeft\n */\nexport interface RotateLeftDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is rotated in clockwise direction\n * @name lgRotateRight\n * @method onRotateRight\n */\nexport interface RotateRightDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped horizontally\n * @name lgFlipHorizontal\n * @method onFlipHorizontal\n */\nexport interface FlipHorizontalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped vertically\n * @name lgFlipVertical\n * @method onFlipVertical\n */\nexport interface FlipVerticalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n","export interface CommentStrings {\n toggleComments: string;\n}\n\nexport interface CommentSettings {\n /**\n * Enable comment box\n */\n commentBox: boolean;\n /**\n * Enable facebook comment box\n */\n fbComments: boolean;\n /**\n * Enable disqus comment box\n */\n disqusComments: boolean;\n\n /**\n * Disqus comment config\n */\n disqusConfig: {\n title?: string;\n language: string;\n };\n\n /**\n * Facebook comments default markup\n */\n commentsMarkup: string;\n\n /**\n * Custom translation strings for aria-labels\n */\n commentPluginStrings: CommentStrings;\n}\n\nexport const commentSettings: CommentSettings = {\n commentBox: false,\n fbComments: false,\n disqusComments: false,\n disqusConfig: {\n title: undefined,\n language: 'en',\n },\n commentsMarkup:\n '

Leave a comment.

',\n commentPluginStrings: {\n toggleComments: 'Toggle Comments',\n } as CommentStrings,\n};\n","/**\n * lightGallery comments module\n * Supports facebook and disqus comments\n *\n * @ref - https://help.disqus.com/customer/portal/articles/472098-javascript-configuration-variables\n * @ref - https://github.com/disqus/DISQUS-API-Recipes/blob/master/snippets/js/disqus-reset/disqus_reset.html\n * @ref - https://css-tricks.com/lazy-loading-disqus-comments/\n * @ref - https://developers.facebook.com/docs/plugins/comments/#comments-plugin\n *\n */\n\nimport { lGEvents } from '../../lg-events';\nimport { LgQuery } from '../../lgQuery';\nimport { LightGallery } from '../../lightgallery';\nimport { commentSettings, CommentSettings } from './lg-comment-settings';\n\ndeclare let FB: any;\ndeclare let DISQUS: any;\n\nexport default class CommentBox {\n core: LightGallery;\n settings: CommentSettings;\n private $LG!: LgQuery;\n constructor(instance: LightGallery, $LG: LgQuery) {\n // get lightGallery core plugin instance\n this.core = instance;\n this.$LG = $LG;\n\n // extend module default settings with lightGallery core settings\n this.settings = { ...commentSettings, ...this.core.settings };\n\n return this;\n }\n\n public init(): void {\n if (!this.settings.commentBox) {\n return;\n }\n this.setMarkup();\n this.toggleCommentBox();\n if (this.settings.fbComments) {\n this.addFbComments();\n } else if (this.settings.disqusComments) {\n this.addDisqusComments();\n }\n }\n\n private setMarkup() {\n this.core.outer.append(\n this.settings.commentsMarkup +\n '
',\n );\n\n const commentToggleBtn = ``;\n this.core.$toolbar.append(commentToggleBtn);\n }\n\n toggleCommentBox(): void {\n this.core.outer\n .find('.lg-comment-toggle')\n .first()\n .on('click.lg.comment', () => {\n this.core.outer.toggleClass('lg-comment-active');\n });\n\n this.core.outer\n .find('.lg-comment-overlay')\n .first()\n .on('click.lg.comment', () => {\n this.core.outer.removeClass('lg-comment-active');\n });\n this.core.outer\n .find('.lg-comment-close')\n .first()\n .on('click.lg.comment', () => {\n this.core.outer.removeClass('lg-comment-active');\n });\n }\n\n addFbComments() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const _this = this;\n this.core.LGel.on(`${lGEvents.beforeSlide}.comment`, (event) => {\n const html = this.core.galleryItems[event.detail.index].fbHtml;\n this.core.outer.find('.lg-comment-body').html(html as string);\n });\n this.core.LGel.on(`${lGEvents.afterSlide}.comment`, function () {\n try {\n FB.XFBML.parse();\n } catch (err) {\n _this.$LG(window).on('fbAsyncInit', function () {\n FB.XFBML.parse();\n });\n }\n });\n }\n\n addDisqusComments(): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const _this = this;\n const $disqusThread = this.$LG('#disqus_thread');\n $disqusThread.remove();\n this.core.outer\n .find('.lg-comment-body')\n .append('
');\n\n this.core.LGel.on(`${lGEvents.beforeSlide}.comment`, () => {\n $disqusThread.html('');\n });\n\n this.core.LGel.on(`${lGEvents.afterSlide}.comment`, (event) => {\n const { index } = event.detail;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const _this = this;\n // DISQUS needs sometime to intialize when lightGallery is opened from direct url(hash plugin).\n setTimeout(\n function () {\n try {\n DISQUS.reset({\n reload: true,\n config: function () {\n this.page.identifier =\n _this.core.galleryItems[\n index\n ].disqusIdentifier;\n this.page.url =\n _this.core.galleryItems[index].disqusURL;\n this.page.title =\n _this.settings.disqusConfig.title;\n this.language =\n _this.settings.disqusConfig.language;\n },\n });\n } catch (err) {\n console.error(\n 'Make sure you have included disqus JavaScript code in your document. Ex - https://lg-disqus.disqus.com/admin/install/platforms/universalcode/',\n );\n }\n },\n _this.core.lGalleryOn ? 0 : 1000,\n );\n });\n }\n\n destroy(): void {\n this.core.LGel.off('.lg.comment');\n this.core.LGel.off('.comment');\n }\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/assets/lightGallery/plugins/comment/lg-comment.min.js b/assets/lightGallery/plugins/comment/lg-comment.min.js new file mode 100644 index 0000000..bd4fa09 --- /dev/null +++ b/assets/lightGallery/plugins/comment/lg-comment.min.js @@ -0,0 +1,8 @@ +/** + * lightgallery | 2.9.0 | October 1st 2025 + * http://www.lightgalleryjs.com/ + * Copyright (c) 2020 Sachin Neravath; + * @license GPLv3 + */ + +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).lgComment=e()}(this,(function(){"use strict";var t=function(){return(t=Object.assign||function(t){for(var e,o=1,n=arguments.length;o

Leave a comment.

',commentPluginStrings:{toggleComments:"Toggle Comments"}};return function(){function i(e,o){return this.core=e,this.$LG=o,this.settings=t(t({},n),this.core.settings),this}return i.prototype.init=function(){this.settings.commentBox&&(this.setMarkup(),this.toggleCommentBox(),this.settings.fbComments?this.addFbComments():this.settings.disqusComments&&this.addDisqusComments())},i.prototype.setMarkup=function(){this.core.outer.append(this.settings.commentsMarkup+'
');var t='';this.core.$toolbar.append(t)},i.prototype.toggleCommentBox=function(){var t=this;this.core.outer.find(".lg-comment-toggle").first().on("click.lg.comment",(function(){t.core.outer.toggleClass("lg-comment-active")})),this.core.outer.find(".lg-comment-overlay").first().on("click.lg.comment",(function(){t.core.outer.removeClass("lg-comment-active")})),this.core.outer.find(".lg-comment-close").first().on("click.lg.comment",(function(){t.core.outer.removeClass("lg-comment-active")}))},i.prototype.addFbComments=function(){var t=this,n=this;this.core.LGel.on(e+".comment",(function(e){var o=t.core.galleryItems[e.detail.index].fbHtml;t.core.outer.find(".lg-comment-body").html(o)})),this.core.LGel.on(o+".comment",(function(){try{FB.XFBML.parse()}catch(t){n.$LG(window).on("fbAsyncInit",(function(){FB.XFBML.parse()}))}}))},i.prototype.addDisqusComments=function(){var t=this,n=this.$LG("#disqus_thread");n.remove(),this.core.outer.find(".lg-comment-body").append('
'),this.core.LGel.on(e+".comment",(function(){n.html("")})),this.core.LGel.on(o+".comment",(function(e){var o=e.detail.index,n=t;setTimeout((function(){try{DISQUS.reset({reload:!0,config:function(){this.page.identifier=n.core.galleryItems[o].disqusIdentifier,this.page.url=n.core.galleryItems[o].disqusURL,this.page.title=n.settings.disqusConfig.title,this.language=n.settings.disqusConfig.language}})}catch(t){console.error("Make sure you have included disqus JavaScript code in your document. Ex - https://lg-disqus.disqus.com/admin/install/platforms/universalcode/")}}),n.core.lGalleryOn?0:1e3)}))},i.prototype.destroy=function(){this.core.LGel.off(".lg.comment"),this.core.LGel.off(".comment")},i}()})); diff --git a/assets/lightGallery/plugins/comment/lg-comment.umd.js b/assets/lightGallery/plugins/comment/lg-comment.umd.js new file mode 100644 index 0000000..81d8323 --- /dev/null +++ b/assets/lightGallery/plugins/comment/lg-comment.umd.js @@ -0,0 +1,213 @@ +/*! + * lightgallery | 2.9.0 | October 1st 2025 + * http://www.lightgalleryjs.com/ + * Copyright (c) 2020 Sachin Neravath; + * @license GPLv3 + */ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lgComment = factory()); +}(this, (function () { 'use strict'; + + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + ***************************************************************************** */ + + var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + + /** + * List of lightGallery events + * All events should be documented here + * Below interfaces are used to build the website documentations + * */ + var lGEvents = { + afterAppendSlide: 'lgAfterAppendSlide', + init: 'lgInit', + hasVideo: 'lgHasVideo', + containerResize: 'lgContainerResize', + updateSlides: 'lgUpdateSlides', + afterAppendSubHtml: 'lgAfterAppendSubHtml', + beforeOpen: 'lgBeforeOpen', + afterOpen: 'lgAfterOpen', + slideItemLoad: 'lgSlideItemLoad', + beforeSlide: 'lgBeforeSlide', + afterSlide: 'lgAfterSlide', + posterClick: 'lgPosterClick', + dragStart: 'lgDragStart', + dragMove: 'lgDragMove', + dragEnd: 'lgDragEnd', + beforeNextSlide: 'lgBeforeNextSlide', + beforePrevSlide: 'lgBeforePrevSlide', + beforeClose: 'lgBeforeClose', + afterClose: 'lgAfterClose', + rotateLeft: 'lgRotateLeft', + rotateRight: 'lgRotateRight', + flipHorizontal: 'lgFlipHorizontal', + flipVertical: 'lgFlipVertical', + autoplay: 'lgAutoplay', + autoplayStart: 'lgAutoplayStart', + autoplayStop: 'lgAutoplayStop', + }; + + var commentSettings = { + commentBox: false, + fbComments: false, + disqusComments: false, + disqusConfig: { + title: undefined, + language: 'en', + }, + commentsMarkup: '

Leave a comment.

', + commentPluginStrings: { + toggleComments: 'Toggle Comments', + }, + }; + + /** + * lightGallery comments module + * Supports facebook and disqus comments + * + * @ref - https://help.disqus.com/customer/portal/articles/472098-javascript-configuration-variables + * @ref - https://github.com/disqus/DISQUS-API-Recipes/blob/master/snippets/js/disqus-reset/disqus_reset.html + * @ref - https://css-tricks.com/lazy-loading-disqus-comments/ + * @ref - https://developers.facebook.com/docs/plugins/comments/#comments-plugin + * + */ + var CommentBox = /** @class */ (function () { + function CommentBox(instance, $LG) { + // get lightGallery core plugin instance + this.core = instance; + this.$LG = $LG; + // extend module default settings with lightGallery core settings + this.settings = __assign(__assign({}, commentSettings), this.core.settings); + return this; + } + CommentBox.prototype.init = function () { + if (!this.settings.commentBox) { + return; + } + this.setMarkup(); + this.toggleCommentBox(); + if (this.settings.fbComments) { + this.addFbComments(); + } + else if (this.settings.disqusComments) { + this.addDisqusComments(); + } + }; + CommentBox.prototype.setMarkup = function () { + this.core.outer.append(this.settings.commentsMarkup + + '
'); + var commentToggleBtn = ""; + this.core.$toolbar.append(commentToggleBtn); + }; + CommentBox.prototype.toggleCommentBox = function () { + var _this_1 = this; + this.core.outer + .find('.lg-comment-toggle') + .first() + .on('click.lg.comment', function () { + _this_1.core.outer.toggleClass('lg-comment-active'); + }); + this.core.outer + .find('.lg-comment-overlay') + .first() + .on('click.lg.comment', function () { + _this_1.core.outer.removeClass('lg-comment-active'); + }); + this.core.outer + .find('.lg-comment-close') + .first() + .on('click.lg.comment', function () { + _this_1.core.outer.removeClass('lg-comment-active'); + }); + }; + CommentBox.prototype.addFbComments = function () { + var _this_1 = this; + // eslint-disable-next-line @typescript-eslint/no-this-alias + var _this = this; + this.core.LGel.on(lGEvents.beforeSlide + ".comment", function (event) { + var html = _this_1.core.galleryItems[event.detail.index].fbHtml; + _this_1.core.outer.find('.lg-comment-body').html(html); + }); + this.core.LGel.on(lGEvents.afterSlide + ".comment", function () { + try { + FB.XFBML.parse(); + } + catch (err) { + _this.$LG(window).on('fbAsyncInit', function () { + FB.XFBML.parse(); + }); + } + }); + }; + CommentBox.prototype.addDisqusComments = function () { + var _this_1 = this; + var $disqusThread = this.$LG('#disqus_thread'); + $disqusThread.remove(); + this.core.outer + .find('.lg-comment-body') + .append('
'); + this.core.LGel.on(lGEvents.beforeSlide + ".comment", function () { + $disqusThread.html(''); + }); + this.core.LGel.on(lGEvents.afterSlide + ".comment", function (event) { + var index = event.detail.index; + // eslint-disable-next-line @typescript-eslint/no-this-alias + var _this = _this_1; + // DISQUS needs sometime to intialize when lightGallery is opened from direct url(hash plugin). + setTimeout(function () { + try { + DISQUS.reset({ + reload: true, + config: function () { + this.page.identifier = + _this.core.galleryItems[index].disqusIdentifier; + this.page.url = + _this.core.galleryItems[index].disqusURL; + this.page.title = + _this.settings.disqusConfig.title; + this.language = + _this.settings.disqusConfig.language; + }, + }); + } + catch (err) { + console.error('Make sure you have included disqus JavaScript code in your document. Ex - https://lg-disqus.disqus.com/admin/install/platforms/universalcode/'); + } + }, _this.core.lGalleryOn ? 0 : 1000); + }); + }; + CommentBox.prototype.destroy = function () { + this.core.LGel.off('.lg.comment'); + this.core.LGel.off('.comment'); + }; + return CommentBox; + }()); + + return CommentBox; + +}))); +//# sourceMappingURL=lg-comment.umd.js.map diff --git a/assets/lightGallery/plugins/comment/lg-comment.umd.js.map b/assets/lightGallery/plugins/comment/lg-comment.umd.js.map new file mode 100644 index 0000000..6c36715 --- /dev/null +++ b/assets/lightGallery/plugins/comment/lg-comment.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lg-comment.umd.js","sources":["../../../src/lg-events.ts","../../../src/plugins/comment/lg-comment-settings.ts","../../../src/plugins/comment/lg-comment.ts"],"sourcesContent":["import { LightGallery } from './lightgallery';\nimport { VideoSource } from './plugins/video/types';\n\n/**\n * List of lightGallery events\n * All events should be documented here\n * Below interfaces are used to build the website documentations\n * */\nexport const lGEvents: {\n [key: string]: string;\n} = {\n afterAppendSlide: 'lgAfterAppendSlide',\n init: 'lgInit',\n hasVideo: 'lgHasVideo',\n containerResize: 'lgContainerResize',\n updateSlides: 'lgUpdateSlides',\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\n beforeOpen: 'lgBeforeOpen',\n afterOpen: 'lgAfterOpen',\n slideItemLoad: 'lgSlideItemLoad',\n beforeSlide: 'lgBeforeSlide',\n afterSlide: 'lgAfterSlide',\n posterClick: 'lgPosterClick',\n dragStart: 'lgDragStart',\n dragMove: 'lgDragMove',\n dragEnd: 'lgDragEnd',\n beforeNextSlide: 'lgBeforeNextSlide',\n beforePrevSlide: 'lgBeforePrevSlide',\n beforeClose: 'lgBeforeClose',\n afterClose: 'lgAfterClose',\n rotateLeft: 'lgRotateLeft',\n rotateRight: 'lgRotateRight',\n flipHorizontal: 'lgFlipHorizontal',\n flipVertical: 'lgFlipVertical',\n autoplay: 'lgAutoplay',\n autoplayStart: 'lgAutoplayStart',\n autoplayStop: 'lgAutoplayStop',\n};\n\n// Follow the below format for the event documentation\n// @method is the method name when event is used with Angular/React components\n\n/**\n * Fired only once when lightGallery is initialized\n * @name lgInit\n * @method onInit\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action on lightGallery initialization.\n * // Init event returns the plugin instance that can be used to call any lightGalley public method\n * let pluginInstance = null;\n * lg.addEventListener('lgInit', (event) => {\n * pluginInstance = event.detail.instance;\n * });\n * lightGallery(lg);\n * @see
Methods\n */\nexport interface InitDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired when the slide content has been inserted into it's slide container.\n * @name lgAfterAppendSlide\n * @method onAfterAppendSlide\n */\nexport interface AfterAppendSlideEventDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired immediately before opening the gallery\n * @name lgBeforeOpen\n * @method onBeforeOpen\n */\nexport interface BeforeOpenDetail {}\n\n/**\n * Fired immediately after opening the gallery\n * @name lgAfterOpen\n * @method onAfterOpen\n */\nexport interface AfterOpenDetail {}\n\n/**\n * Fired once the media inside the slide has been completely loaded .\n * @name lgSlideItemLoad\n * @method onSlideItemLoad\n */\nexport interface SlideItemLoadDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * For the first slide, lightGallery adds some delay for displaying the loaded slide item.\n * This delay is required for the transition effect when the slide item is displayed\n * Respect the delay when you use this event\n */\n delay: number;\n\n // Will be true for the first slide\n isFirstSlide: boolean;\n}\n\n/**\n * Fired immediately before each slide transition.\n * @name lgBeforeSlide\n * @method onBeforeSlide\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action before each slide transition\n * lg.addEventListener('lgBeforeSlide', (event) => {\n * const { index, prevIndex } = event.detail;\n * alert(index, prevIndex);\n * });\n * lightGallery(lg);\n */\nexport interface BeforeSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired immediately after each slide transition.\n * @name lgAfterSlide\n * @method onAfterSlide\n */\nexport interface AfterSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired when the video poster is clicked.\n * @name lgPosterClick\n * @method onPosterClick\n */\nexport interface PosterClickDetail {}\n\n/**\n * Fired when the drag event to move to different slide starts.\n * @name lgDragStart\n * @method onDragStart\n */\nexport interface DragStartDetail {}\n\n/**\n * Fired periodically during the drag operation.\n * @name lgDragMove\n * @method onDragMove\n */\nexport interface DragMoveDetail {}\n\n/**\n * Fired when the user has finished the drag operation\n * @name lgDragEnd\n * @method onDragEnd\n */\nexport interface DragEndDetail {}\n\n/**\n * Fired immediately before the start of the close process.\n * @name lgBeforeClose\n * @method onBeforeClose\n */\nexport interface BeforeCloseDetail {}\n\n/**\n * Fired immediately once lightGallery is closed.\n * @name lgAfterClose\n * @method onAfterClose\n */\nexport interface AfterCloseDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired immediately before each \"next\" slide transition\n * @name lgBeforeNextSlide\n * @method onBeforeNextSlide\n */\nexport interface BeforeNextSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired immediately before each \"prev\" slide transition\n * @name lgBeforePrevSlide\n * @method onBeforePrevSlide\n */\nexport interface BeforePrevSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired when the sub-html content (ex : title/ description) has been appended into the slide.\n * @name lgAfterAppendSubHtml\n * @method onAfterAppendSubHtml\n */\nexport interface AfterAppendSubHtmlDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the lightGallery container has been resized.\n * @name lgContainerResize\n * @method onContainerResize\n */\nexport interface ContainerResizeDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when lightGallery detects video slide\n * @name lgHasVideo\n * @method onHasVideo\n */\nexport interface HasVideoDetail {\n /**\n * Index of the slide,\n */\n index: number;\n /**\n * Video source\n */\n src: string;\n /**\n * HTML5 video source if available\n *

\n HTML5 video source = source: {\n src: string;\n type: string;\n }[];\n attributes: HTMLVideoElement;\n *

\n */\n html5Video: VideoSource;\n /**\n * True if video has poster\n */\n hasPoster: boolean;\n}\n\n/**\n * Fired when the image is rotated in anticlockwise direction\n * @name lgRotateLeft\n * @method onRotateLeft\n */\nexport interface RotateLeftDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is rotated in clockwise direction\n * @name lgRotateRight\n * @method onRotateRight\n */\nexport interface RotateRightDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped horizontally\n * @name lgFlipHorizontal\n * @method onFlipHorizontal\n */\nexport interface FlipHorizontalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped vertically\n * @name lgFlipVertical\n * @method onFlipVertical\n */\nexport interface FlipVerticalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n","export interface CommentStrings {\n toggleComments: string;\n}\n\nexport interface CommentSettings {\n /**\n * Enable comment box\n */\n commentBox: boolean;\n /**\n * Enable facebook comment box\n */\n fbComments: boolean;\n /**\n * Enable disqus comment box\n */\n disqusComments: boolean;\n\n /**\n * Disqus comment config\n */\n disqusConfig: {\n title?: string;\n language: string;\n };\n\n /**\n * Facebook comments default markup\n */\n commentsMarkup: string;\n\n /**\n * Custom translation strings for aria-labels\n */\n commentPluginStrings: CommentStrings;\n}\n\nexport const commentSettings: CommentSettings = {\n commentBox: false,\n fbComments: false,\n disqusComments: false,\n disqusConfig: {\n title: undefined,\n language: 'en',\n },\n commentsMarkup:\n '

Leave a comment.

',\n commentPluginStrings: {\n toggleComments: 'Toggle Comments',\n } as CommentStrings,\n};\n","/**\n * lightGallery comments module\n * Supports facebook and disqus comments\n *\n * @ref - https://help.disqus.com/customer/portal/articles/472098-javascript-configuration-variables\n * @ref - https://github.com/disqus/DISQUS-API-Recipes/blob/master/snippets/js/disqus-reset/disqus_reset.html\n * @ref - https://css-tricks.com/lazy-loading-disqus-comments/\n * @ref - https://developers.facebook.com/docs/plugins/comments/#comments-plugin\n *\n */\n\nimport { lGEvents } from '../../lg-events';\nimport { LgQuery } from '../../lgQuery';\nimport { LightGallery } from '../../lightgallery';\nimport { commentSettings, CommentSettings } from './lg-comment-settings';\n\ndeclare let FB: any;\ndeclare let DISQUS: any;\n\nexport default class CommentBox {\n core: LightGallery;\n settings: CommentSettings;\n private $LG!: LgQuery;\n constructor(instance: LightGallery, $LG: LgQuery) {\n // get lightGallery core plugin instance\n this.core = instance;\n this.$LG = $LG;\n\n // extend module default settings with lightGallery core settings\n this.settings = { ...commentSettings, ...this.core.settings };\n\n return this;\n }\n\n public init(): void {\n if (!this.settings.commentBox) {\n return;\n }\n this.setMarkup();\n this.toggleCommentBox();\n if (this.settings.fbComments) {\n this.addFbComments();\n } else if (this.settings.disqusComments) {\n this.addDisqusComments();\n }\n }\n\n private setMarkup() {\n this.core.outer.append(\n this.settings.commentsMarkup +\n '
',\n );\n\n const commentToggleBtn = ``;\n this.core.$toolbar.append(commentToggleBtn);\n }\n\n toggleCommentBox(): void {\n this.core.outer\n .find('.lg-comment-toggle')\n .first()\n .on('click.lg.comment', () => {\n this.core.outer.toggleClass('lg-comment-active');\n });\n\n this.core.outer\n .find('.lg-comment-overlay')\n .first()\n .on('click.lg.comment', () => {\n this.core.outer.removeClass('lg-comment-active');\n });\n this.core.outer\n .find('.lg-comment-close')\n .first()\n .on('click.lg.comment', () => {\n this.core.outer.removeClass('lg-comment-active');\n });\n }\n\n addFbComments() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const _this = this;\n this.core.LGel.on(`${lGEvents.beforeSlide}.comment`, (event) => {\n const html = this.core.galleryItems[event.detail.index].fbHtml;\n this.core.outer.find('.lg-comment-body').html(html as string);\n });\n this.core.LGel.on(`${lGEvents.afterSlide}.comment`, function () {\n try {\n FB.XFBML.parse();\n } catch (err) {\n _this.$LG(window).on('fbAsyncInit', function () {\n FB.XFBML.parse();\n });\n }\n });\n }\n\n addDisqusComments(): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const _this = this;\n const $disqusThread = this.$LG('#disqus_thread');\n $disqusThread.remove();\n this.core.outer\n .find('.lg-comment-body')\n .append('
');\n\n this.core.LGel.on(`${lGEvents.beforeSlide}.comment`, () => {\n $disqusThread.html('');\n });\n\n this.core.LGel.on(`${lGEvents.afterSlide}.comment`, (event) => {\n const { index } = event.detail;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const _this = this;\n // DISQUS needs sometime to intialize when lightGallery is opened from direct url(hash plugin).\n setTimeout(\n function () {\n try {\n DISQUS.reset({\n reload: true,\n config: function () {\n this.page.identifier =\n _this.core.galleryItems[\n index\n ].disqusIdentifier;\n this.page.url =\n _this.core.galleryItems[index].disqusURL;\n this.page.title =\n _this.settings.disqusConfig.title;\n this.language =\n _this.settings.disqusConfig.language;\n },\n });\n } catch (err) {\n console.error(\n 'Make sure you have included disqus JavaScript code in your document. Ex - https://lg-disqus.disqus.com/admin/install/platforms/universalcode/',\n );\n }\n },\n _this.core.lGalleryOn ? 0 : 1000,\n );\n });\n }\n\n destroy(): void {\n this.core.LGel.off('.lg.comment');\n this.core.LGel.off('.comment');\n }\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/assets/lightGallery/plugins/comment/package.json b/assets/lightGallery/plugins/comment/package.json new file mode 100644 index 0000000..b7c501b --- /dev/null +++ b/assets/lightGallery/plugins/comment/package.json @@ -0,0 +1,7 @@ +{ + "name": "lightgallery/plugins/comment", + "private": true, + "main": "lg-comment.umd.js", + "module": "lg-comment.es5.js", + "typings": "lg-comment.d.ts" +} \ No newline at end of file diff --git a/assets/lightGallery/plugins/fullscreen/lg-fullscreen-settings.d.ts b/assets/lightGallery/plugins/fullscreen/lg-fullscreen-settings.d.ts new file mode 100644 index 0000000..0252563 --- /dev/null +++ b/assets/lightGallery/plugins/fullscreen/lg-fullscreen-settings.d.ts @@ -0,0 +1,14 @@ +export interface FullscreenStrings { + toggleFullscreen: string; +} +export interface FullscreenSettings { + /** + * Enable/Disable fullscreen option + */ + fullScreen: boolean; + /** + * Custom translation strings for aria-labels + */ + fullscreenPluginStrings: FullscreenStrings; +} +export declare const fullscreenSettings: FullscreenSettings; diff --git a/assets/lightGallery/plugins/fullscreen/lg-fullscreen.d.ts b/assets/lightGallery/plugins/fullscreen/lg-fullscreen.d.ts new file mode 100644 index 0000000..1ecd2ae --- /dev/null +++ b/assets/lightGallery/plugins/fullscreen/lg-fullscreen.d.ts @@ -0,0 +1,16 @@ +import { LgQuery } from '../../lgQuery'; +import { LightGallery } from '../../lightgallery'; +import { FullscreenSettings } from './lg-fullscreen-settings'; +export default class FullScreen { + core: LightGallery; + settings: FullscreenSettings; + private $LG; + constructor(instance: LightGallery, $LG: LgQuery); + init(): void; + private isFullScreen; + private requestFullscreen; + private exitFullscreen; + private fullScreen; + closeGallery(): void; + destroy(): void; +} diff --git a/assets/lightGallery/plugins/fullscreen/lg-fullscreen.es5.js b/assets/lightGallery/plugins/fullscreen/lg-fullscreen.es5.js new file mode 100644 index 0000000..02a3b9b --- /dev/null +++ b/assets/lightGallery/plugins/fullscreen/lg-fullscreen.es5.js @@ -0,0 +1,135 @@ +/*! + * lightgallery | 2.9.0 | October 1st 2025 + * http://www.lightgalleryjs.com/ + * Copyright (c) 2020 Sachin Neravath; + * @license GPLv3 + */ + +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ + +var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; + +var fullscreenSettings = { + fullScreen: true, + fullscreenPluginStrings: { + toggleFullscreen: 'Toggle Fullscreen', + }, +}; + +var FullScreen = /** @class */ (function () { + function FullScreen(instance, $LG) { + // get lightGallery core plugin instance + this.core = instance; + this.$LG = $LG; + // extend module default settings with lightGallery core settings + this.settings = __assign(__assign({}, fullscreenSettings), this.core.settings); + return this; + } + FullScreen.prototype.init = function () { + var fullScreen = ''; + if (this.settings.fullScreen) { + // check for fullscreen browser support + if (!document.fullscreenEnabled && + !document.webkitFullscreenEnabled && + !document.mozFullScreenEnabled && + !document.msFullscreenEnabled) { + return; + } + else { + fullScreen = ""; + this.core.$toolbar.append(fullScreen); + this.fullScreen(); + } + } + }; + FullScreen.prototype.isFullScreen = function () { + return (document.fullscreenElement || + document.mozFullScreenElement || + document.webkitFullscreenElement || + document.msFullscreenElement); + }; + FullScreen.prototype.requestFullscreen = function () { + var el = document.documentElement; + if (el.requestFullscreen) { + el.requestFullscreen(); + } + else if (el.msRequestFullscreen) { + el.msRequestFullscreen(); + } + else if (el.mozRequestFullScreen) { + el.mozRequestFullScreen(); + } + else if (el.webkitRequestFullscreen) { + el.webkitRequestFullscreen(); + } + }; + FullScreen.prototype.exitFullscreen = function () { + if (document.exitFullscreen) { + document.exitFullscreen(); + } + else if (document.msExitFullscreen) { + document.msExitFullscreen(); + } + else if (document.mozCancelFullScreen) { + document.mozCancelFullScreen(); + } + else if (document.webkitExitFullscreen) { + document.webkitExitFullscreen(); + } + }; + // https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Using_full_screen_mode + FullScreen.prototype.fullScreen = function () { + var _this = this; + this.$LG(document).on("fullscreenchange.lg.global" + this.core.lgId + " \n webkitfullscreenchange.lg.global" + this.core.lgId + " \n mozfullscreenchange.lg.global" + this.core.lgId + " \n MSFullscreenChange.lg.global" + this.core.lgId, function () { + if (!_this.core.lgOpened) + return; + _this.core.outer.toggleClass('lg-fullscreen-on'); + }); + this.core.outer + .find('.lg-fullscreen') + .first() + .on('click.lg', function () { + if (_this.isFullScreen()) { + _this.exitFullscreen(); + } + else { + _this.requestFullscreen(); + } + }); + }; + FullScreen.prototype.closeGallery = function () { + // exit from fullscreen if activated + if (this.isFullScreen()) { + this.exitFullscreen(); + } + }; + FullScreen.prototype.destroy = function () { + this.$LG(document).off("fullscreenchange.lg.global" + this.core.lgId + " \n webkitfullscreenchange.lg.global" + this.core.lgId + " \n mozfullscreenchange.lg.global" + this.core.lgId + " \n MSFullscreenChange.lg.global" + this.core.lgId); + }; + return FullScreen; +}()); + +export default FullScreen; +//# sourceMappingURL=lg-fullscreen.es5.js.map diff --git a/assets/lightGallery/plugins/fullscreen/lg-fullscreen.es5.js.map b/assets/lightGallery/plugins/fullscreen/lg-fullscreen.es5.js.map new file mode 100644 index 0000000..9f5623c --- /dev/null +++ b/assets/lightGallery/plugins/fullscreen/lg-fullscreen.es5.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lg-fullscreen.es5.js","sources":["../../../src/plugins/fullscreen/lg-fullscreen-settings.ts","../../../src/plugins/fullscreen/lg-fullscreen.ts"],"sourcesContent":["export interface FullscreenStrings {\n toggleFullscreen: string;\n}\nexport interface FullscreenSettings {\n /**\n * Enable/Disable fullscreen option\n */\n fullScreen: boolean;\n\n /**\n * Custom translation strings for aria-labels\n */\n fullscreenPluginStrings: FullscreenStrings;\n}\n\nexport const fullscreenSettings: FullscreenSettings = {\n fullScreen: true,\n fullscreenPluginStrings: {\n toggleFullscreen: 'Toggle Fullscreen',\n } as FullscreenStrings,\n};\n","import { LgQuery } from '../../lgQuery';\nimport { LightGallery } from '../../lightgallery';\nimport {\n FullscreenSettings,\n fullscreenSettings,\n} from './lg-fullscreen-settings';\n\ndeclare let document: any;\n\nexport default class FullScreen {\n core: LightGallery;\n settings: FullscreenSettings;\n private $LG!: LgQuery;\n constructor(instance: LightGallery, $LG: LgQuery) {\n // get lightGallery core plugin instance\n this.core = instance;\n this.$LG = $LG;\n\n // extend module default settings with lightGallery core settings\n this.settings = { ...fullscreenSettings, ...this.core.settings };\n\n return this;\n }\n\n public init(): void {\n let fullScreen = '';\n if (this.settings.fullScreen) {\n // check for fullscreen browser support\n if (\n !document.fullscreenEnabled &&\n !document.webkitFullscreenEnabled &&\n !document.mozFullScreenEnabled &&\n !document.msFullscreenEnabled\n ) {\n return;\n } else {\n fullScreen = ``;\n this.core.$toolbar.append(fullScreen);\n this.fullScreen();\n }\n }\n }\n\n private isFullScreen(): boolean {\n return (\n document.fullscreenElement ||\n document.mozFullScreenElement ||\n document.webkitFullscreenElement ||\n document.msFullscreenElement\n );\n }\n\n private requestFullscreen(): void {\n const el = document.documentElement;\n if (el.requestFullscreen) {\n el.requestFullscreen();\n } else if (el.msRequestFullscreen) {\n el.msRequestFullscreen();\n } else if (el.mozRequestFullScreen) {\n el.mozRequestFullScreen();\n } else if (el.webkitRequestFullscreen) {\n el.webkitRequestFullscreen();\n }\n }\n\n private exitFullscreen(): void {\n if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n }\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Using_full_screen_mode\n private fullScreen(): void {\n this.$LG(document).on(\n `fullscreenchange.lg.global${this.core.lgId} \n webkitfullscreenchange.lg.global${this.core.lgId} \n mozfullscreenchange.lg.global${this.core.lgId} \n MSFullscreenChange.lg.global${this.core.lgId}`,\n () => {\n if (!this.core.lgOpened) return;\n this.core.outer.toggleClass('lg-fullscreen-on');\n },\n );\n\n this.core.outer\n .find('.lg-fullscreen')\n .first()\n .on('click.lg', () => {\n if (this.isFullScreen()) {\n this.exitFullscreen();\n } else {\n this.requestFullscreen();\n }\n });\n }\n\n closeGallery(): void {\n // exit from fullscreen if activated\n if (this.isFullScreen()) {\n this.exitFullscreen();\n }\n }\n\n destroy(): void {\n this.$LG(document).off(\n `fullscreenchange.lg.global${this.core.lgId} \n webkitfullscreenchange.lg.global${this.core.lgId} \n mozfullscreenchange.lg.global${this.core.lgId} \n MSFullscreenChange.lg.global${this.core.lgId}`,\n );\n }\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/assets/lightGallery/plugins/fullscreen/lg-fullscreen.min.js b/assets/lightGallery/plugins/fullscreen/lg-fullscreen.min.js new file mode 100644 index 0000000..92690fa --- /dev/null +++ b/assets/lightGallery/plugins/fullscreen/lg-fullscreen.min.js @@ -0,0 +1,8 @@ +/** + * lightgallery | 2.9.0 | October 1st 2025 + * http://www.lightgalleryjs.com/ + * Copyright (c) 2020 Sachin Neravath; + * @license GPLv3 + */ + +!function(e,l){"object"==typeof exports&&"undefined"!=typeof module?module.exports=l():"function"==typeof define&&define.amd?define(l):(e="undefined"!=typeof globalThis?globalThis:e||self).lgFullscreen=l()}(this,(function(){"use strict";var e=function(){return(e=Object.assign||function(e){for(var l,n=1,t=arguments.length;n',this.core.$toolbar.append(e),this.fullScreen()}},n.prototype.isFullScreen=function(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement},n.prototype.requestFullscreen=function(){var e=document.documentElement;e.requestFullscreen?e.requestFullscreen():e.msRequestFullscreen?e.msRequestFullscreen():e.mozRequestFullScreen?e.mozRequestFullScreen():e.webkitRequestFullscreen&&e.webkitRequestFullscreen()},n.prototype.exitFullscreen=function(){document.exitFullscreen?document.exitFullscreen():document.msExitFullscreen?document.msExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen()},n.prototype.fullScreen=function(){var e=this;this.$LG(document).on("fullscreenchange.lg.global"+this.core.lgId+" \n webkitfullscreenchange.lg.global"+this.core.lgId+" \n mozfullscreenchange.lg.global"+this.core.lgId+" \n MSFullscreenChange.lg.global"+this.core.lgId,(function(){e.core.lgOpened&&e.core.outer.toggleClass("lg-fullscreen-on")})),this.core.outer.find(".lg-fullscreen").first().on("click.lg",(function(){e.isFullScreen()?e.exitFullscreen():e.requestFullscreen()}))},n.prototype.closeGallery=function(){this.isFullScreen()&&this.exitFullscreen()},n.prototype.destroy=function(){this.$LG(document).off("fullscreenchange.lg.global"+this.core.lgId+" \n webkitfullscreenchange.lg.global"+this.core.lgId+" \n mozfullscreenchange.lg.global"+this.core.lgId+" \n MSFullscreenChange.lg.global"+this.core.lgId)},n}()})); diff --git a/assets/lightGallery/plugins/fullscreen/lg-fullscreen.umd.js b/assets/lightGallery/plugins/fullscreen/lg-fullscreen.umd.js new file mode 100644 index 0000000..588b54b --- /dev/null +++ b/assets/lightGallery/plugins/fullscreen/lg-fullscreen.umd.js @@ -0,0 +1,143 @@ +/*! + * lightgallery | 2.9.0 | October 1st 2025 + * http://www.lightgalleryjs.com/ + * Copyright (c) 2020 Sachin Neravath; + * @license GPLv3 + */ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lgFullscreen = factory()); +}(this, (function () { 'use strict'; + + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + ***************************************************************************** */ + + var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + + var fullscreenSettings = { + fullScreen: true, + fullscreenPluginStrings: { + toggleFullscreen: 'Toggle Fullscreen', + }, + }; + + var FullScreen = /** @class */ (function () { + function FullScreen(instance, $LG) { + // get lightGallery core plugin instance + this.core = instance; + this.$LG = $LG; + // extend module default settings with lightGallery core settings + this.settings = __assign(__assign({}, fullscreenSettings), this.core.settings); + return this; + } + FullScreen.prototype.init = function () { + var fullScreen = ''; + if (this.settings.fullScreen) { + // check for fullscreen browser support + if (!document.fullscreenEnabled && + !document.webkitFullscreenEnabled && + !document.mozFullScreenEnabled && + !document.msFullscreenEnabled) { + return; + } + else { + fullScreen = ""; + this.core.$toolbar.append(fullScreen); + this.fullScreen(); + } + } + }; + FullScreen.prototype.isFullScreen = function () { + return (document.fullscreenElement || + document.mozFullScreenElement || + document.webkitFullscreenElement || + document.msFullscreenElement); + }; + FullScreen.prototype.requestFullscreen = function () { + var el = document.documentElement; + if (el.requestFullscreen) { + el.requestFullscreen(); + } + else if (el.msRequestFullscreen) { + el.msRequestFullscreen(); + } + else if (el.mozRequestFullScreen) { + el.mozRequestFullScreen(); + } + else if (el.webkitRequestFullscreen) { + el.webkitRequestFullscreen(); + } + }; + FullScreen.prototype.exitFullscreen = function () { + if (document.exitFullscreen) { + document.exitFullscreen(); + } + else if (document.msExitFullscreen) { + document.msExitFullscreen(); + } + else if (document.mozCancelFullScreen) { + document.mozCancelFullScreen(); + } + else if (document.webkitExitFullscreen) { + document.webkitExitFullscreen(); + } + }; + // https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Using_full_screen_mode + FullScreen.prototype.fullScreen = function () { + var _this = this; + this.$LG(document).on("fullscreenchange.lg.global" + this.core.lgId + " \n webkitfullscreenchange.lg.global" + this.core.lgId + " \n mozfullscreenchange.lg.global" + this.core.lgId + " \n MSFullscreenChange.lg.global" + this.core.lgId, function () { + if (!_this.core.lgOpened) + return; + _this.core.outer.toggleClass('lg-fullscreen-on'); + }); + this.core.outer + .find('.lg-fullscreen') + .first() + .on('click.lg', function () { + if (_this.isFullScreen()) { + _this.exitFullscreen(); + } + else { + _this.requestFullscreen(); + } + }); + }; + FullScreen.prototype.closeGallery = function () { + // exit from fullscreen if activated + if (this.isFullScreen()) { + this.exitFullscreen(); + } + }; + FullScreen.prototype.destroy = function () { + this.$LG(document).off("fullscreenchange.lg.global" + this.core.lgId + " \n webkitfullscreenchange.lg.global" + this.core.lgId + " \n mozfullscreenchange.lg.global" + this.core.lgId + " \n MSFullscreenChange.lg.global" + this.core.lgId); + }; + return FullScreen; + }()); + + return FullScreen; + +}))); +//# sourceMappingURL=lg-fullscreen.umd.js.map diff --git a/assets/lightGallery/plugins/fullscreen/lg-fullscreen.umd.js.map b/assets/lightGallery/plugins/fullscreen/lg-fullscreen.umd.js.map new file mode 100644 index 0000000..f2b653d --- /dev/null +++ b/assets/lightGallery/plugins/fullscreen/lg-fullscreen.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lg-fullscreen.umd.js","sources":["../../../src/plugins/fullscreen/lg-fullscreen-settings.ts","../../../src/plugins/fullscreen/lg-fullscreen.ts"],"sourcesContent":["export interface FullscreenStrings {\n toggleFullscreen: string;\n}\nexport interface FullscreenSettings {\n /**\n * Enable/Disable fullscreen option\n */\n fullScreen: boolean;\n\n /**\n * Custom translation strings for aria-labels\n */\n fullscreenPluginStrings: FullscreenStrings;\n}\n\nexport const fullscreenSettings: FullscreenSettings = {\n fullScreen: true,\n fullscreenPluginStrings: {\n toggleFullscreen: 'Toggle Fullscreen',\n } as FullscreenStrings,\n};\n","import { LgQuery } from '../../lgQuery';\nimport { LightGallery } from '../../lightgallery';\nimport {\n FullscreenSettings,\n fullscreenSettings,\n} from './lg-fullscreen-settings';\n\ndeclare let document: any;\n\nexport default class FullScreen {\n core: LightGallery;\n settings: FullscreenSettings;\n private $LG!: LgQuery;\n constructor(instance: LightGallery, $LG: LgQuery) {\n // get lightGallery core plugin instance\n this.core = instance;\n this.$LG = $LG;\n\n // extend module default settings with lightGallery core settings\n this.settings = { ...fullscreenSettings, ...this.core.settings };\n\n return this;\n }\n\n public init(): void {\n let fullScreen = '';\n if (this.settings.fullScreen) {\n // check for fullscreen browser support\n if (\n !document.fullscreenEnabled &&\n !document.webkitFullscreenEnabled &&\n !document.mozFullScreenEnabled &&\n !document.msFullscreenEnabled\n ) {\n return;\n } else {\n fullScreen = ``;\n this.core.$toolbar.append(fullScreen);\n this.fullScreen();\n }\n }\n }\n\n private isFullScreen(): boolean {\n return (\n document.fullscreenElement ||\n document.mozFullScreenElement ||\n document.webkitFullscreenElement ||\n document.msFullscreenElement\n );\n }\n\n private requestFullscreen(): void {\n const el = document.documentElement;\n if (el.requestFullscreen) {\n el.requestFullscreen();\n } else if (el.msRequestFullscreen) {\n el.msRequestFullscreen();\n } else if (el.mozRequestFullScreen) {\n el.mozRequestFullScreen();\n } else if (el.webkitRequestFullscreen) {\n el.webkitRequestFullscreen();\n }\n }\n\n private exitFullscreen(): void {\n if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n }\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Using_full_screen_mode\n private fullScreen(): void {\n this.$LG(document).on(\n `fullscreenchange.lg.global${this.core.lgId} \n webkitfullscreenchange.lg.global${this.core.lgId} \n mozfullscreenchange.lg.global${this.core.lgId} \n MSFullscreenChange.lg.global${this.core.lgId}`,\n () => {\n if (!this.core.lgOpened) return;\n this.core.outer.toggleClass('lg-fullscreen-on');\n },\n );\n\n this.core.outer\n .find('.lg-fullscreen')\n .first()\n .on('click.lg', () => {\n if (this.isFullScreen()) {\n this.exitFullscreen();\n } else {\n this.requestFullscreen();\n }\n });\n }\n\n closeGallery(): void {\n // exit from fullscreen if activated\n if (this.isFullScreen()) {\n this.exitFullscreen();\n }\n }\n\n destroy(): void {\n this.$LG(document).off(\n `fullscreenchange.lg.global${this.core.lgId} \n webkitfullscreenchange.lg.global${this.core.lgId} \n mozfullscreenchange.lg.global${this.core.lgId} \n MSFullscreenChange.lg.global${this.core.lgId}`,\n );\n }\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/assets/lightGallery/plugins/fullscreen/package.json b/assets/lightGallery/plugins/fullscreen/package.json new file mode 100644 index 0000000..76d191a --- /dev/null +++ b/assets/lightGallery/plugins/fullscreen/package.json @@ -0,0 +1,7 @@ +{ + "name": "lightgallery/plugins/fullscreen", + "private": true, + "main": "lg-fullscreen.umd.js", + "module": "lg-fullscreen.es5.js", + "typings": "lg-fullscreen.d.ts" +} \ No newline at end of file diff --git a/assets/lightGallery/plugins/hash/lg-hash-settings.d.ts b/assets/lightGallery/plugins/hash/lg-hash-settings.d.ts new file mode 100644 index 0000000..68778e4 --- /dev/null +++ b/assets/lightGallery/plugins/hash/lg-hash-settings.d.ts @@ -0,0 +1,16 @@ +export interface HashSettings { + /** + * Enable/Disable hash option + */ + hash: boolean; + /** + * Unique id for each gallery. + * @description It is mandatory when you use hash plugin for multiple galleries on the same page. + */ + galleryId: string; + /** + * Custom slide name to use in the url when hash plugin is enabled + */ + customSlideName: boolean; +} +export declare const hashSettings: HashSettings; diff --git a/assets/lightGallery/plugins/hash/lg-hash.d.ts b/assets/lightGallery/plugins/hash/lg-hash.d.ts new file mode 100644 index 0000000..e646021 --- /dev/null +++ b/assets/lightGallery/plugins/hash/lg-hash.d.ts @@ -0,0 +1,23 @@ +import { LgQuery } from '../../lgQuery'; +import { LightGallery } from '../../lightgallery'; +import { HashSettings } from './lg-hash-settings'; +export default class Hash { + core: LightGallery; + settings: HashSettings; + oldHash: string; + private $LG; + constructor(instance: LightGallery, $LG: LgQuery); + init(): void; + private onAfterSlide; + /** + * Get index of the slide from custom slideName. Has to be a public method. Used in hash plugin + * @param {String} hash + * @returns {Number} Index of the slide. + */ + getIndexFromUrl(hash?: string): number; + buildFromHash(): boolean | undefined; + private onCloseAfter; + private onHashchange; + closeGallery(): void; + destroy(): void; +} diff --git a/assets/lightGallery/plugins/hash/lg-hash.es5.js b/assets/lightGallery/plugins/hash/lg-hash.es5.js new file mode 100644 index 0000000..53ed14c --- /dev/null +++ b/assets/lightGallery/plugins/hash/lg-hash.es5.js @@ -0,0 +1,198 @@ +/*! + * lightgallery | 2.9.0 | October 1st 2025 + * http://www.lightgalleryjs.com/ + * Copyright (c) 2020 Sachin Neravath; + * @license GPLv3 + */ + +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ + +var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; + +/** + * List of lightGallery events + * All events should be documented here + * Below interfaces are used to build the website documentations + * */ +var lGEvents = { + afterAppendSlide: 'lgAfterAppendSlide', + init: 'lgInit', + hasVideo: 'lgHasVideo', + containerResize: 'lgContainerResize', + updateSlides: 'lgUpdateSlides', + afterAppendSubHtml: 'lgAfterAppendSubHtml', + beforeOpen: 'lgBeforeOpen', + afterOpen: 'lgAfterOpen', + slideItemLoad: 'lgSlideItemLoad', + beforeSlide: 'lgBeforeSlide', + afterSlide: 'lgAfterSlide', + posterClick: 'lgPosterClick', + dragStart: 'lgDragStart', + dragMove: 'lgDragMove', + dragEnd: 'lgDragEnd', + beforeNextSlide: 'lgBeforeNextSlide', + beforePrevSlide: 'lgBeforePrevSlide', + beforeClose: 'lgBeforeClose', + afterClose: 'lgAfterClose', + rotateLeft: 'lgRotateLeft', + rotateRight: 'lgRotateRight', + flipHorizontal: 'lgFlipHorizontal', + flipVertical: 'lgFlipVertical', + autoplay: 'lgAutoplay', + autoplayStart: 'lgAutoplayStart', + autoplayStop: 'lgAutoplayStop', +}; + +var hashSettings = { + hash: true, + galleryId: '1', + customSlideName: false, +}; + +var Hash = /** @class */ (function () { + function Hash(instance, $LG) { + // get lightGallery core plugin instance + this.core = instance; + this.$LG = $LG; + // extend module default settings with lightGallery core settings + this.settings = __assign(__assign({}, hashSettings), this.core.settings); + return this; + } + Hash.prototype.init = function () { + var _this = this; + if (!this.settings.hash) { + return; + } + this.oldHash = window.location.hash; + setTimeout(function () { + _this.buildFromHash(); + }, 100); + // Change hash value on after each slide transition + this.core.LGel.on(lGEvents.afterSlide + ".hash", this.onAfterSlide.bind(this)); + this.core.LGel.on(lGEvents.afterClose + ".hash", this.onCloseAfter.bind(this)); + // Listen hash change and change the slide according to slide value + this.$LG(window).on("hashchange.lg.hash.global" + this.core.lgId, this.onHashchange.bind(this)); + }; + Hash.prototype.onAfterSlide = function (event) { + var slideName = this.core.galleryItems[event.detail.index].slideName; + slideName = this.settings.customSlideName + ? slideName || event.detail.index + : event.detail.index; + if (history.replaceState) { + history.replaceState(null, '', window.location.pathname + + window.location.search + + '#lg=' + + this.settings.galleryId + + '&slide=' + + slideName); + } + else { + window.location.hash = + 'lg=' + this.settings.galleryId + '&slide=' + slideName; + } + }; + /** + * Get index of the slide from custom slideName. Has to be a public method. Used in hash plugin + * @param {String} hash + * @returns {Number} Index of the slide. + */ + Hash.prototype.getIndexFromUrl = function (hash) { + if (hash === void 0) { hash = window.location.hash; } + var slideName = hash.split('&slide=')[1]; + var _idx = 0; + if (this.settings.customSlideName) { + for (var index = 0; index < this.core.galleryItems.length; index++) { + var dynamicEl = this.core.galleryItems[index]; + if (dynamicEl.slideName === slideName) { + _idx = index; + break; + } + } + } + else { + _idx = parseInt(slideName, 10); + } + return isNaN(_idx) ? 0 : _idx; + }; + // Build Gallery if gallery id exist in the URL + Hash.prototype.buildFromHash = function () { + // if dynamic option is enabled execute immediately + var _hash = window.location.hash; + if (_hash.indexOf('lg=' + this.settings.galleryId) > 0) { + // This class is used to remove the initial animation if galleryId present in the URL + this.$LG(document.body).addClass('lg-from-hash'); + var index = this.getIndexFromUrl(_hash); + this.core.openGallery(index); + return true; + } + }; + Hash.prototype.onCloseAfter = function () { + // Reset to old hash value + if (this.oldHash && + this.oldHash.indexOf('lg=' + this.settings.galleryId) < 0) { + if (history.replaceState) { + history.replaceState(null, '', this.oldHash); + } + else { + window.location.hash = this.oldHash; + } + } + else { + if (history.replaceState) { + history.replaceState(null, document.title, window.location.pathname + window.location.search); + } + else { + window.location.hash = ''; + } + } + }; + Hash.prototype.onHashchange = function () { + if (!this.core.lgOpened) + return; + var _hash = window.location.hash; + var index = this.getIndexFromUrl(_hash); + // it galleryId doesn't exist in the url close the gallery + if (_hash.indexOf('lg=' + this.settings.galleryId) > -1) { + this.core.slide(index, false, false); + } + else if (this.core.lGalleryOn) { + this.core.closeGallery(); + } + }; + Hash.prototype.closeGallery = function () { + if (this.settings.hash) { + this.$LG(document.body).removeClass('lg-from-hash'); + } + }; + Hash.prototype.destroy = function () { + this.core.LGel.off('.lg.hash'); + this.core.LGel.off('.hash'); + this.$LG(window).off("hashchange.lg.hash.global" + this.core.lgId); + }; + return Hash; +}()); + +export default Hash; +//# sourceMappingURL=lg-hash.es5.js.map diff --git a/assets/lightGallery/plugins/hash/lg-hash.es5.js.map b/assets/lightGallery/plugins/hash/lg-hash.es5.js.map new file mode 100644 index 0000000..667256d --- /dev/null +++ b/assets/lightGallery/plugins/hash/lg-hash.es5.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lg-hash.es5.js","sources":["../../../src/lg-events.ts","../../../src/plugins/hash/lg-hash-settings.ts","../../../src/plugins/hash/lg-hash.ts"],"sourcesContent":["import { LightGallery } from './lightgallery';\nimport { VideoSource } from './plugins/video/types';\n\n/**\n * List of lightGallery events\n * All events should be documented here\n * Below interfaces are used to build the website documentations\n * */\nexport const lGEvents: {\n [key: string]: string;\n} = {\n afterAppendSlide: 'lgAfterAppendSlide',\n init: 'lgInit',\n hasVideo: 'lgHasVideo',\n containerResize: 'lgContainerResize',\n updateSlides: 'lgUpdateSlides',\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\n beforeOpen: 'lgBeforeOpen',\n afterOpen: 'lgAfterOpen',\n slideItemLoad: 'lgSlideItemLoad',\n beforeSlide: 'lgBeforeSlide',\n afterSlide: 'lgAfterSlide',\n posterClick: 'lgPosterClick',\n dragStart: 'lgDragStart',\n dragMove: 'lgDragMove',\n dragEnd: 'lgDragEnd',\n beforeNextSlide: 'lgBeforeNextSlide',\n beforePrevSlide: 'lgBeforePrevSlide',\n beforeClose: 'lgBeforeClose',\n afterClose: 'lgAfterClose',\n rotateLeft: 'lgRotateLeft',\n rotateRight: 'lgRotateRight',\n flipHorizontal: 'lgFlipHorizontal',\n flipVertical: 'lgFlipVertical',\n autoplay: 'lgAutoplay',\n autoplayStart: 'lgAutoplayStart',\n autoplayStop: 'lgAutoplayStop',\n};\n\n// Follow the below format for the event documentation\n// @method is the method name when event is used with Angular/React components\n\n/**\n * Fired only once when lightGallery is initialized\n * @name lgInit\n * @method onInit\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action on lightGallery initialization.\n * // Init event returns the plugin instance that can be used to call any lightGalley public method\n * let pluginInstance = null;\n * lg.addEventListener('lgInit', (event) => {\n * pluginInstance = event.detail.instance;\n * });\n * lightGallery(lg);\n * @see
Methods\n */\nexport interface InitDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired when the slide content has been inserted into it's slide container.\n * @name lgAfterAppendSlide\n * @method onAfterAppendSlide\n */\nexport interface AfterAppendSlideEventDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired immediately before opening the gallery\n * @name lgBeforeOpen\n * @method onBeforeOpen\n */\nexport interface BeforeOpenDetail {}\n\n/**\n * Fired immediately after opening the gallery\n * @name lgAfterOpen\n * @method onAfterOpen\n */\nexport interface AfterOpenDetail {}\n\n/**\n * Fired once the media inside the slide has been completely loaded .\n * @name lgSlideItemLoad\n * @method onSlideItemLoad\n */\nexport interface SlideItemLoadDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * For the first slide, lightGallery adds some delay for displaying the loaded slide item.\n * This delay is required for the transition effect when the slide item is displayed\n * Respect the delay when you use this event\n */\n delay: number;\n\n // Will be true for the first slide\n isFirstSlide: boolean;\n}\n\n/**\n * Fired immediately before each slide transition.\n * @name lgBeforeSlide\n * @method onBeforeSlide\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action before each slide transition\n * lg.addEventListener('lgBeforeSlide', (event) => {\n * const { index, prevIndex } = event.detail;\n * alert(index, prevIndex);\n * });\n * lightGallery(lg);\n */\nexport interface BeforeSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired immediately after each slide transition.\n * @name lgAfterSlide\n * @method onAfterSlide\n */\nexport interface AfterSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired when the video poster is clicked.\n * @name lgPosterClick\n * @method onPosterClick\n */\nexport interface PosterClickDetail {}\n\n/**\n * Fired when the drag event to move to different slide starts.\n * @name lgDragStart\n * @method onDragStart\n */\nexport interface DragStartDetail {}\n\n/**\n * Fired periodically during the drag operation.\n * @name lgDragMove\n * @method onDragMove\n */\nexport interface DragMoveDetail {}\n\n/**\n * Fired when the user has finished the drag operation\n * @name lgDragEnd\n * @method onDragEnd\n */\nexport interface DragEndDetail {}\n\n/**\n * Fired immediately before the start of the close process.\n * @name lgBeforeClose\n * @method onBeforeClose\n */\nexport interface BeforeCloseDetail {}\n\n/**\n * Fired immediately once lightGallery is closed.\n * @name lgAfterClose\n * @method onAfterClose\n */\nexport interface AfterCloseDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired immediately before each \"next\" slide transition\n * @name lgBeforeNextSlide\n * @method onBeforeNextSlide\n */\nexport interface BeforeNextSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired immediately before each \"prev\" slide transition\n * @name lgBeforePrevSlide\n * @method onBeforePrevSlide\n */\nexport interface BeforePrevSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired when the sub-html content (ex : title/ description) has been appended into the slide.\n * @name lgAfterAppendSubHtml\n * @method onAfterAppendSubHtml\n */\nexport interface AfterAppendSubHtmlDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the lightGallery container has been resized.\n * @name lgContainerResize\n * @method onContainerResize\n */\nexport interface ContainerResizeDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when lightGallery detects video slide\n * @name lgHasVideo\n * @method onHasVideo\n */\nexport interface HasVideoDetail {\n /**\n * Index of the slide,\n */\n index: number;\n /**\n * Video source\n */\n src: string;\n /**\n * HTML5 video source if available\n *

\n HTML5 video source = source: {\n src: string;\n type: string;\n }[];\n attributes: HTMLVideoElement;\n *

\n */\n html5Video: VideoSource;\n /**\n * True if video has poster\n */\n hasPoster: boolean;\n}\n\n/**\n * Fired when the image is rotated in anticlockwise direction\n * @name lgRotateLeft\n * @method onRotateLeft\n */\nexport interface RotateLeftDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is rotated in clockwise direction\n * @name lgRotateRight\n * @method onRotateRight\n */\nexport interface RotateRightDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped horizontally\n * @name lgFlipHorizontal\n * @method onFlipHorizontal\n */\nexport interface FlipHorizontalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped vertically\n * @name lgFlipVertical\n * @method onFlipVertical\n */\nexport interface FlipVerticalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n","export interface HashSettings {\n /**\n * Enable/Disable hash option\n */\n hash: boolean;\n\n /**\n * Unique id for each gallery.\n * @description It is mandatory when you use hash plugin for multiple galleries on the same page.\n */\n galleryId: string;\n\n /**\n * Custom slide name to use in the url when hash plugin is enabled\n */\n customSlideName: boolean;\n}\n\nexport const hashSettings: HashSettings = {\n hash: true,\n galleryId: '1',\n customSlideName: false,\n};\n","import { lGEvents } from '../../lg-events';\nimport { LgQuery } from '../../lgQuery';\nimport { LightGallery } from '../../lightgallery';\nimport { hashSettings, HashSettings } from './lg-hash-settings';\n\nexport default class Hash {\n core: LightGallery;\n settings: HashSettings;\n oldHash!: string;\n private $LG!: LgQuery;\n constructor(instance: LightGallery, $LG: LgQuery) {\n // get lightGallery core plugin instance\n this.core = instance;\n this.$LG = $LG;\n // extend module default settings with lightGallery core settings\n this.settings = { ...hashSettings, ...this.core.settings };\n return this;\n }\n\n public init(): void {\n if (!this.settings.hash) {\n return;\n }\n this.oldHash = window.location.hash;\n setTimeout(() => {\n this.buildFromHash();\n }, 100);\n // Change hash value on after each slide transition\n this.core.LGel.on(\n `${lGEvents.afterSlide}.hash`,\n this.onAfterSlide.bind(this),\n );\n this.core.LGel.on(\n `${lGEvents.afterClose}.hash`,\n this.onCloseAfter.bind(this),\n );\n\n // Listen hash change and change the slide according to slide value\n this.$LG(window).on(\n `hashchange.lg.hash.global${this.core.lgId}`,\n this.onHashchange.bind(this),\n );\n }\n\n private onAfterSlide(event: CustomEvent) {\n let slideName = this.core.galleryItems[event.detail.index].slideName;\n slideName = this.settings.customSlideName\n ? slideName || event.detail.index\n : event.detail.index;\n if (history.replaceState) {\n history.replaceState(\n null,\n '',\n window.location.pathname +\n window.location.search +\n '#lg=' +\n this.settings.galleryId +\n '&slide=' +\n slideName,\n );\n } else {\n window.location.hash =\n 'lg=' + this.settings.galleryId + '&slide=' + slideName;\n }\n }\n\n /**\n * Get index of the slide from custom slideName. Has to be a public method. Used in hash plugin\n * @param {String} hash\n * @returns {Number} Index of the slide.\n */\n getIndexFromUrl(hash = window.location.hash): number {\n const slideName = hash.split('&slide=')[1];\n let _idx = 0;\n\n if (this.settings.customSlideName) {\n for (\n let index = 0;\n index < this.core.galleryItems.length;\n index++\n ) {\n const dynamicEl = this.core.galleryItems[index];\n if (dynamicEl.slideName === slideName) {\n _idx = index;\n break;\n }\n }\n } else {\n _idx = parseInt(slideName, 10);\n }\n\n return isNaN(_idx) ? 0 : _idx;\n }\n\n // Build Gallery if gallery id exist in the URL\n buildFromHash(): boolean | undefined {\n // if dynamic option is enabled execute immediately\n const _hash = window.location.hash;\n if (_hash.indexOf('lg=' + this.settings.galleryId) > 0) {\n // This class is used to remove the initial animation if galleryId present in the URL\n this.$LG(document.body).addClass('lg-from-hash');\n\n const index = this.getIndexFromUrl(_hash);\n\n this.core.openGallery(index);\n return true;\n }\n }\n\n private onCloseAfter() {\n // Reset to old hash value\n if (\n this.oldHash &&\n this.oldHash.indexOf('lg=' + this.settings.galleryId) < 0\n ) {\n if (history.replaceState) {\n history.replaceState(null, '', this.oldHash);\n } else {\n window.location.hash = this.oldHash;\n }\n } else {\n if (history.replaceState) {\n history.replaceState(\n null,\n document.title,\n window.location.pathname + window.location.search,\n );\n } else {\n window.location.hash = '';\n }\n }\n }\n\n private onHashchange() {\n if (!this.core.lgOpened) return;\n const _hash = window.location.hash;\n const index = this.getIndexFromUrl(_hash);\n\n // it galleryId doesn't exist in the url close the gallery\n if (_hash.indexOf('lg=' + this.settings.galleryId) > -1) {\n this.core.slide(index, false, false);\n } else if (this.core.lGalleryOn) {\n this.core.closeGallery();\n }\n }\n\n closeGallery(): void {\n if (this.settings.hash) {\n this.$LG(document.body).removeClass('lg-from-hash');\n }\n }\n\n destroy(): void {\n this.core.LGel.off('.lg.hash');\n this.core.LGel.off('.hash');\n this.$LG(window).off(`hashchange.lg.hash.global${this.core.lgId}`);\n }\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/assets/lightGallery/plugins/hash/lg-hash.min.js b/assets/lightGallery/plugins/hash/lg-hash.min.js new file mode 100644 index 0000000..4ab02cf --- /dev/null +++ b/assets/lightGallery/plugins/hash/lg-hash.min.js @@ -0,0 +1,8 @@ +/** + * lightgallery | 2.9.0 | October 1st 2025 + * http://www.lightgalleryjs.com/ + * Copyright (c) 2020 Sachin Neravath; + * @license GPLv3 + */ + +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).lgHash=e()}(this,(function(){"use strict";var t=function(){return(t=Object.assign||function(t){for(var e,i=1,o=arguments.length;i0){this.$LG(document.body).addClass("lg-from-hash");var e=this.getIndexFromUrl(t);return this.core.openGallery(e),!0}},s.prototype.onCloseAfter=function(){this.oldHash&&this.oldHash.indexOf("lg="+this.settings.galleryId)<0?history.replaceState?history.replaceState(null,"",this.oldHash):window.location.hash=this.oldHash:history.replaceState?history.replaceState(null,document.title,window.location.pathname+window.location.search):window.location.hash=""},s.prototype.onHashchange=function(){if(this.core.lgOpened){var t=window.location.hash,e=this.getIndexFromUrl(t);t.indexOf("lg="+this.settings.galleryId)>-1?this.core.slide(e,!1,!1):this.core.lGalleryOn&&this.core.closeGallery()}},s.prototype.closeGallery=function(){this.settings.hash&&this.$LG(document.body).removeClass("lg-from-hash")},s.prototype.destroy=function(){this.core.LGel.off(".lg.hash"),this.core.LGel.off(".hash"),this.$LG(window).off("hashchange.lg.hash.global"+this.core.lgId)},s}()})); diff --git a/assets/lightGallery/plugins/hash/lg-hash.umd.js b/assets/lightGallery/plugins/hash/lg-hash.umd.js new file mode 100644 index 0000000..2a8726f --- /dev/null +++ b/assets/lightGallery/plugins/hash/lg-hash.umd.js @@ -0,0 +1,206 @@ +/*! + * lightgallery | 2.9.0 | October 1st 2025 + * http://www.lightgalleryjs.com/ + * Copyright (c) 2020 Sachin Neravath; + * @license GPLv3 + */ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lgHash = factory()); +}(this, (function () { 'use strict'; + + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + ***************************************************************************** */ + + var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + + /** + * List of lightGallery events + * All events should be documented here + * Below interfaces are used to build the website documentations + * */ + var lGEvents = { + afterAppendSlide: 'lgAfterAppendSlide', + init: 'lgInit', + hasVideo: 'lgHasVideo', + containerResize: 'lgContainerResize', + updateSlides: 'lgUpdateSlides', + afterAppendSubHtml: 'lgAfterAppendSubHtml', + beforeOpen: 'lgBeforeOpen', + afterOpen: 'lgAfterOpen', + slideItemLoad: 'lgSlideItemLoad', + beforeSlide: 'lgBeforeSlide', + afterSlide: 'lgAfterSlide', + posterClick: 'lgPosterClick', + dragStart: 'lgDragStart', + dragMove: 'lgDragMove', + dragEnd: 'lgDragEnd', + beforeNextSlide: 'lgBeforeNextSlide', + beforePrevSlide: 'lgBeforePrevSlide', + beforeClose: 'lgBeforeClose', + afterClose: 'lgAfterClose', + rotateLeft: 'lgRotateLeft', + rotateRight: 'lgRotateRight', + flipHorizontal: 'lgFlipHorizontal', + flipVertical: 'lgFlipVertical', + autoplay: 'lgAutoplay', + autoplayStart: 'lgAutoplayStart', + autoplayStop: 'lgAutoplayStop', + }; + + var hashSettings = { + hash: true, + galleryId: '1', + customSlideName: false, + }; + + var Hash = /** @class */ (function () { + function Hash(instance, $LG) { + // get lightGallery core plugin instance + this.core = instance; + this.$LG = $LG; + // extend module default settings with lightGallery core settings + this.settings = __assign(__assign({}, hashSettings), this.core.settings); + return this; + } + Hash.prototype.init = function () { + var _this = this; + if (!this.settings.hash) { + return; + } + this.oldHash = window.location.hash; + setTimeout(function () { + _this.buildFromHash(); + }, 100); + // Change hash value on after each slide transition + this.core.LGel.on(lGEvents.afterSlide + ".hash", this.onAfterSlide.bind(this)); + this.core.LGel.on(lGEvents.afterClose + ".hash", this.onCloseAfter.bind(this)); + // Listen hash change and change the slide according to slide value + this.$LG(window).on("hashchange.lg.hash.global" + this.core.lgId, this.onHashchange.bind(this)); + }; + Hash.prototype.onAfterSlide = function (event) { + var slideName = this.core.galleryItems[event.detail.index].slideName; + slideName = this.settings.customSlideName + ? slideName || event.detail.index + : event.detail.index; + if (history.replaceState) { + history.replaceState(null, '', window.location.pathname + + window.location.search + + '#lg=' + + this.settings.galleryId + + '&slide=' + + slideName); + } + else { + window.location.hash = + 'lg=' + this.settings.galleryId + '&slide=' + slideName; + } + }; + /** + * Get index of the slide from custom slideName. Has to be a public method. Used in hash plugin + * @param {String} hash + * @returns {Number} Index of the slide. + */ + Hash.prototype.getIndexFromUrl = function (hash) { + if (hash === void 0) { hash = window.location.hash; } + var slideName = hash.split('&slide=')[1]; + var _idx = 0; + if (this.settings.customSlideName) { + for (var index = 0; index < this.core.galleryItems.length; index++) { + var dynamicEl = this.core.galleryItems[index]; + if (dynamicEl.slideName === slideName) { + _idx = index; + break; + } + } + } + else { + _idx = parseInt(slideName, 10); + } + return isNaN(_idx) ? 0 : _idx; + }; + // Build Gallery if gallery id exist in the URL + Hash.prototype.buildFromHash = function () { + // if dynamic option is enabled execute immediately + var _hash = window.location.hash; + if (_hash.indexOf('lg=' + this.settings.galleryId) > 0) { + // This class is used to remove the initial animation if galleryId present in the URL + this.$LG(document.body).addClass('lg-from-hash'); + var index = this.getIndexFromUrl(_hash); + this.core.openGallery(index); + return true; + } + }; + Hash.prototype.onCloseAfter = function () { + // Reset to old hash value + if (this.oldHash && + this.oldHash.indexOf('lg=' + this.settings.galleryId) < 0) { + if (history.replaceState) { + history.replaceState(null, '', this.oldHash); + } + else { + window.location.hash = this.oldHash; + } + } + else { + if (history.replaceState) { + history.replaceState(null, document.title, window.location.pathname + window.location.search); + } + else { + window.location.hash = ''; + } + } + }; + Hash.prototype.onHashchange = function () { + if (!this.core.lgOpened) + return; + var _hash = window.location.hash; + var index = this.getIndexFromUrl(_hash); + // it galleryId doesn't exist in the url close the gallery + if (_hash.indexOf('lg=' + this.settings.galleryId) > -1) { + this.core.slide(index, false, false); + } + else if (this.core.lGalleryOn) { + this.core.closeGallery(); + } + }; + Hash.prototype.closeGallery = function () { + if (this.settings.hash) { + this.$LG(document.body).removeClass('lg-from-hash'); + } + }; + Hash.prototype.destroy = function () { + this.core.LGel.off('.lg.hash'); + this.core.LGel.off('.hash'); + this.$LG(window).off("hashchange.lg.hash.global" + this.core.lgId); + }; + return Hash; + }()); + + return Hash; + +}))); +//# sourceMappingURL=lg-hash.umd.js.map diff --git a/assets/lightGallery/plugins/hash/lg-hash.umd.js.map b/assets/lightGallery/plugins/hash/lg-hash.umd.js.map new file mode 100644 index 0000000..b0e85bd --- /dev/null +++ b/assets/lightGallery/plugins/hash/lg-hash.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lg-hash.umd.js","sources":["../../../src/lg-events.ts","../../../src/plugins/hash/lg-hash-settings.ts","../../../src/plugins/hash/lg-hash.ts"],"sourcesContent":["import { LightGallery } from './lightgallery';\nimport { VideoSource } from './plugins/video/types';\n\n/**\n * List of lightGallery events\n * All events should be documented here\n * Below interfaces are used to build the website documentations\n * */\nexport const lGEvents: {\n [key: string]: string;\n} = {\n afterAppendSlide: 'lgAfterAppendSlide',\n init: 'lgInit',\n hasVideo: 'lgHasVideo',\n containerResize: 'lgContainerResize',\n updateSlides: 'lgUpdateSlides',\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\n beforeOpen: 'lgBeforeOpen',\n afterOpen: 'lgAfterOpen',\n slideItemLoad: 'lgSlideItemLoad',\n beforeSlide: 'lgBeforeSlide',\n afterSlide: 'lgAfterSlide',\n posterClick: 'lgPosterClick',\n dragStart: 'lgDragStart',\n dragMove: 'lgDragMove',\n dragEnd: 'lgDragEnd',\n beforeNextSlide: 'lgBeforeNextSlide',\n beforePrevSlide: 'lgBeforePrevSlide',\n beforeClose: 'lgBeforeClose',\n afterClose: 'lgAfterClose',\n rotateLeft: 'lgRotateLeft',\n rotateRight: 'lgRotateRight',\n flipHorizontal: 'lgFlipHorizontal',\n flipVertical: 'lgFlipVertical',\n autoplay: 'lgAutoplay',\n autoplayStart: 'lgAutoplayStart',\n autoplayStop: 'lgAutoplayStop',\n};\n\n// Follow the below format for the event documentation\n// @method is the method name when event is used with Angular/React components\n\n/**\n * Fired only once when lightGallery is initialized\n * @name lgInit\n * @method onInit\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action on lightGallery initialization.\n * // Init event returns the plugin instance that can be used to call any lightGalley public method\n * let pluginInstance = null;\n * lg.addEventListener('lgInit', (event) => {\n * pluginInstance = event.detail.instance;\n * });\n * lightGallery(lg);\n * @see
Methods\n */\nexport interface InitDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired when the slide content has been inserted into it's slide container.\n * @name lgAfterAppendSlide\n * @method onAfterAppendSlide\n */\nexport interface AfterAppendSlideEventDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired immediately before opening the gallery\n * @name lgBeforeOpen\n * @method onBeforeOpen\n */\nexport interface BeforeOpenDetail {}\n\n/**\n * Fired immediately after opening the gallery\n * @name lgAfterOpen\n * @method onAfterOpen\n */\nexport interface AfterOpenDetail {}\n\n/**\n * Fired once the media inside the slide has been completely loaded .\n * @name lgSlideItemLoad\n * @method onSlideItemLoad\n */\nexport interface SlideItemLoadDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * For the first slide, lightGallery adds some delay for displaying the loaded slide item.\n * This delay is required for the transition effect when the slide item is displayed\n * Respect the delay when you use this event\n */\n delay: number;\n\n // Will be true for the first slide\n isFirstSlide: boolean;\n}\n\n/**\n * Fired immediately before each slide transition.\n * @name lgBeforeSlide\n * @method onBeforeSlide\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action before each slide transition\n * lg.addEventListener('lgBeforeSlide', (event) => {\n * const { index, prevIndex } = event.detail;\n * alert(index, prevIndex);\n * });\n * lightGallery(lg);\n */\nexport interface BeforeSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired immediately after each slide transition.\n * @name lgAfterSlide\n * @method onAfterSlide\n */\nexport interface AfterSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired when the video poster is clicked.\n * @name lgPosterClick\n * @method onPosterClick\n */\nexport interface PosterClickDetail {}\n\n/**\n * Fired when the drag event to move to different slide starts.\n * @name lgDragStart\n * @method onDragStart\n */\nexport interface DragStartDetail {}\n\n/**\n * Fired periodically during the drag operation.\n * @name lgDragMove\n * @method onDragMove\n */\nexport interface DragMoveDetail {}\n\n/**\n * Fired when the user has finished the drag operation\n * @name lgDragEnd\n * @method onDragEnd\n */\nexport interface DragEndDetail {}\n\n/**\n * Fired immediately before the start of the close process.\n * @name lgBeforeClose\n * @method onBeforeClose\n */\nexport interface BeforeCloseDetail {}\n\n/**\n * Fired immediately once lightGallery is closed.\n * @name lgAfterClose\n * @method onAfterClose\n */\nexport interface AfterCloseDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired immediately before each \"next\" slide transition\n * @name lgBeforeNextSlide\n * @method onBeforeNextSlide\n */\nexport interface BeforeNextSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired immediately before each \"prev\" slide transition\n * @name lgBeforePrevSlide\n * @method onBeforePrevSlide\n */\nexport interface BeforePrevSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired when the sub-html content (ex : title/ description) has been appended into the slide.\n * @name lgAfterAppendSubHtml\n * @method onAfterAppendSubHtml\n */\nexport interface AfterAppendSubHtmlDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the lightGallery container has been resized.\n * @name lgContainerResize\n * @method onContainerResize\n */\nexport interface ContainerResizeDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when lightGallery detects video slide\n * @name lgHasVideo\n * @method onHasVideo\n */\nexport interface HasVideoDetail {\n /**\n * Index of the slide,\n */\n index: number;\n /**\n * Video source\n */\n src: string;\n /**\n * HTML5 video source if available\n *

\n HTML5 video source = source: {\n src: string;\n type: string;\n }[];\n attributes: HTMLVideoElement;\n *

\n */\n html5Video: VideoSource;\n /**\n * True if video has poster\n */\n hasPoster: boolean;\n}\n\n/**\n * Fired when the image is rotated in anticlockwise direction\n * @name lgRotateLeft\n * @method onRotateLeft\n */\nexport interface RotateLeftDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is rotated in clockwise direction\n * @name lgRotateRight\n * @method onRotateRight\n */\nexport interface RotateRightDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped horizontally\n * @name lgFlipHorizontal\n * @method onFlipHorizontal\n */\nexport interface FlipHorizontalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped vertically\n * @name lgFlipVertical\n * @method onFlipVertical\n */\nexport interface FlipVerticalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n","export interface HashSettings {\n /**\n * Enable/Disable hash option\n */\n hash: boolean;\n\n /**\n * Unique id for each gallery.\n * @description It is mandatory when you use hash plugin for multiple galleries on the same page.\n */\n galleryId: string;\n\n /**\n * Custom slide name to use in the url when hash plugin is enabled\n */\n customSlideName: boolean;\n}\n\nexport const hashSettings: HashSettings = {\n hash: true,\n galleryId: '1',\n customSlideName: false,\n};\n","import { lGEvents } from '../../lg-events';\nimport { LgQuery } from '../../lgQuery';\nimport { LightGallery } from '../../lightgallery';\nimport { hashSettings, HashSettings } from './lg-hash-settings';\n\nexport default class Hash {\n core: LightGallery;\n settings: HashSettings;\n oldHash!: string;\n private $LG!: LgQuery;\n constructor(instance: LightGallery, $LG: LgQuery) {\n // get lightGallery core plugin instance\n this.core = instance;\n this.$LG = $LG;\n // extend module default settings with lightGallery core settings\n this.settings = { ...hashSettings, ...this.core.settings };\n return this;\n }\n\n public init(): void {\n if (!this.settings.hash) {\n return;\n }\n this.oldHash = window.location.hash;\n setTimeout(() => {\n this.buildFromHash();\n }, 100);\n // Change hash value on after each slide transition\n this.core.LGel.on(\n `${lGEvents.afterSlide}.hash`,\n this.onAfterSlide.bind(this),\n );\n this.core.LGel.on(\n `${lGEvents.afterClose}.hash`,\n this.onCloseAfter.bind(this),\n );\n\n // Listen hash change and change the slide according to slide value\n this.$LG(window).on(\n `hashchange.lg.hash.global${this.core.lgId}`,\n this.onHashchange.bind(this),\n );\n }\n\n private onAfterSlide(event: CustomEvent) {\n let slideName = this.core.galleryItems[event.detail.index].slideName;\n slideName = this.settings.customSlideName\n ? slideName || event.detail.index\n : event.detail.index;\n if (history.replaceState) {\n history.replaceState(\n null,\n '',\n window.location.pathname +\n window.location.search +\n '#lg=' +\n this.settings.galleryId +\n '&slide=' +\n slideName,\n );\n } else {\n window.location.hash =\n 'lg=' + this.settings.galleryId + '&slide=' + slideName;\n }\n }\n\n /**\n * Get index of the slide from custom slideName. Has to be a public method. Used in hash plugin\n * @param {String} hash\n * @returns {Number} Index of the slide.\n */\n getIndexFromUrl(hash = window.location.hash): number {\n const slideName = hash.split('&slide=')[1];\n let _idx = 0;\n\n if (this.settings.customSlideName) {\n for (\n let index = 0;\n index < this.core.galleryItems.length;\n index++\n ) {\n const dynamicEl = this.core.galleryItems[index];\n if (dynamicEl.slideName === slideName) {\n _idx = index;\n break;\n }\n }\n } else {\n _idx = parseInt(slideName, 10);\n }\n\n return isNaN(_idx) ? 0 : _idx;\n }\n\n // Build Gallery if gallery id exist in the URL\n buildFromHash(): boolean | undefined {\n // if dynamic option is enabled execute immediately\n const _hash = window.location.hash;\n if (_hash.indexOf('lg=' + this.settings.galleryId) > 0) {\n // This class is used to remove the initial animation if galleryId present in the URL\n this.$LG(document.body).addClass('lg-from-hash');\n\n const index = this.getIndexFromUrl(_hash);\n\n this.core.openGallery(index);\n return true;\n }\n }\n\n private onCloseAfter() {\n // Reset to old hash value\n if (\n this.oldHash &&\n this.oldHash.indexOf('lg=' + this.settings.galleryId) < 0\n ) {\n if (history.replaceState) {\n history.replaceState(null, '', this.oldHash);\n } else {\n window.location.hash = this.oldHash;\n }\n } else {\n if (history.replaceState) {\n history.replaceState(\n null,\n document.title,\n window.location.pathname + window.location.search,\n );\n } else {\n window.location.hash = '';\n }\n }\n }\n\n private onHashchange() {\n if (!this.core.lgOpened) return;\n const _hash = window.location.hash;\n const index = this.getIndexFromUrl(_hash);\n\n // it galleryId doesn't exist in the url close the gallery\n if (_hash.indexOf('lg=' + this.settings.galleryId) > -1) {\n this.core.slide(index, false, false);\n } else if (this.core.lGalleryOn) {\n this.core.closeGallery();\n }\n }\n\n closeGallery(): void {\n if (this.settings.hash) {\n this.$LG(document.body).removeClass('lg-from-hash');\n }\n }\n\n destroy(): void {\n this.core.LGel.off('.lg.hash');\n this.core.LGel.off('.hash');\n this.$LG(window).off(`hashchange.lg.hash.global${this.core.lgId}`);\n }\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/assets/lightGallery/plugins/hash/package.json b/assets/lightGallery/plugins/hash/package.json new file mode 100644 index 0000000..78c4be1 --- /dev/null +++ b/assets/lightGallery/plugins/hash/package.json @@ -0,0 +1,7 @@ +{ + "name": "lightgallery/plugins/hash", + "private": true, + "main": "lg-hash.umd.js", + "module": "lg-hash.es5.js", + "typings": "lg-hash.d.ts" +} \ No newline at end of file diff --git a/assets/lightGallery/plugins/mediumZoom/lg-medium-zoom-settings.d.ts b/assets/lightGallery/plugins/mediumZoom/lg-medium-zoom-settings.d.ts new file mode 100644 index 0000000..18c607a --- /dev/null +++ b/assets/lightGallery/plugins/mediumZoom/lg-medium-zoom-settings.d.ts @@ -0,0 +1,16 @@ +export interface MediumZoomSettings { + /** + * Enable/Disable medium like zoom experience + */ + mediumZoom: boolean; + /** + * Space between the gallery outer area and images + */ + margin: number; + /** + * Background color for the gallery + * This can be overwritten by passing background color via `lg-background-color` for each item + */ + backgroundColor: string; +} +export declare const mediumZoomSettings: MediumZoomSettings; diff --git a/assets/lightGallery/plugins/mediumZoom/lg-medium-zoom.d.ts b/assets/lightGallery/plugins/mediumZoom/lg-medium-zoom.d.ts new file mode 100644 index 0000000..113aaf8 --- /dev/null +++ b/assets/lightGallery/plugins/mediumZoom/lg-medium-zoom.d.ts @@ -0,0 +1,12 @@ +import { LgQuery } from '../../lgQuery'; +import { LightGallery } from '../../lightgallery'; +import { MediumZoomSettings } from './lg-medium-zoom-settings'; +export default class MediumZoom { + core: LightGallery; + settings: MediumZoomSettings; + private $LG; + constructor(instance: LightGallery, $LG: LgQuery); + private toggleItemClass; + init(): void; + destroy(): void; +} diff --git a/assets/lightGallery/plugins/mediumZoom/lg-medium-zoom.es5.js b/assets/lightGallery/plugins/mediumZoom/lg-medium-zoom.es5.js new file mode 100644 index 0000000..d3d2dc2 --- /dev/null +++ b/assets/lightGallery/plugins/mediumZoom/lg-medium-zoom.es5.js @@ -0,0 +1,132 @@ +/*! + * lightgallery | 2.9.0 | October 1st 2025 + * http://www.lightgalleryjs.com/ + * Copyright (c) 2020 Sachin Neravath; + * @license GPLv3 + */ + +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ + +var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; + +/** + * List of lightGallery events + * All events should be documented here + * Below interfaces are used to build the website documentations + * */ +var lGEvents = { + afterAppendSlide: 'lgAfterAppendSlide', + init: 'lgInit', + hasVideo: 'lgHasVideo', + containerResize: 'lgContainerResize', + updateSlides: 'lgUpdateSlides', + afterAppendSubHtml: 'lgAfterAppendSubHtml', + beforeOpen: 'lgBeforeOpen', + afterOpen: 'lgAfterOpen', + slideItemLoad: 'lgSlideItemLoad', + beforeSlide: 'lgBeforeSlide', + afterSlide: 'lgAfterSlide', + posterClick: 'lgPosterClick', + dragStart: 'lgDragStart', + dragMove: 'lgDragMove', + dragEnd: 'lgDragEnd', + beforeNextSlide: 'lgBeforeNextSlide', + beforePrevSlide: 'lgBeforePrevSlide', + beforeClose: 'lgBeforeClose', + afterClose: 'lgAfterClose', + rotateLeft: 'lgRotateLeft', + rotateRight: 'lgRotateRight', + flipHorizontal: 'lgFlipHorizontal', + flipVertical: 'lgFlipVertical', + autoplay: 'lgAutoplay', + autoplayStart: 'lgAutoplayStart', + autoplayStop: 'lgAutoplayStop', +}; + +var mediumZoomSettings = { + margin: 40, + mediumZoom: true, + backgroundColor: '#000', +}; + +var MediumZoom = /** @class */ (function () { + function MediumZoom(instance, $LG) { + var _this = this; + // get lightGallery core plugin instance + this.core = instance; + this.$LG = $LG; + // Set margin + this.core.getMediaContainerPosition = function () { + return { + top: _this.settings.margin, + bottom: _this.settings.margin, + }; + }; + // Override some of lightGallery default settings + var defaultSettings = { + controls: false, + download: false, + counter: false, + showCloseIcon: false, + extraProps: ['lgBackgroundColor'], + closeOnTap: false, + enableSwipe: false, + enableDrag: false, + swipeToClose: false, + addClass: this.core.settings.addClass + ' lg-medium-zoom', + }; + this.core.settings = __assign(__assign({}, this.core.settings), defaultSettings); + // extend module default settings with lightGallery core settings + this.settings = __assign(__assign(__assign({}, mediumZoomSettings), this.core.settings), defaultSettings); + return this; + } + MediumZoom.prototype.toggleItemClass = function () { + for (var index = 0; index < this.core.items.length; index++) { + var $element = this.$LG(this.core.items[index]); + $element.toggleClass('lg-medium-zoom-item'); + } + }; + MediumZoom.prototype.init = function () { + var _this = this; + if (!this.settings.mediumZoom) { + return; + } + this.core.LGel.on(lGEvents.beforeOpen + ".medium", function () { + _this.core.$backdrop.css('background-color', _this.core.galleryItems[_this.core.index].lgBackgroundColor || + _this.settings.backgroundColor); + }); + this.toggleItemClass(); + this.core.outer.on('click.lg.medium', function () { + _this.core.closeGallery(); + }); + }; + MediumZoom.prototype.destroy = function () { + this.toggleItemClass(); + }; + return MediumZoom; +}()); + +export default MediumZoom; +//# sourceMappingURL=lg-medium-zoom.es5.js.map diff --git a/assets/lightGallery/plugins/mediumZoom/lg-medium-zoom.es5.js.map b/assets/lightGallery/plugins/mediumZoom/lg-medium-zoom.es5.js.map new file mode 100644 index 0000000..d64a2db --- /dev/null +++ b/assets/lightGallery/plugins/mediumZoom/lg-medium-zoom.es5.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lg-medium-zoom.es5.js","sources":["../../../src/lg-events.ts","../../../src/plugins/mediumZoom/lg-medium-zoom-settings.ts","../../../src/plugins/mediumZoom/lg-medium-zoom.ts"],"sourcesContent":["import { LightGallery } from './lightgallery';\nimport { VideoSource } from './plugins/video/types';\n\n/**\n * List of lightGallery events\n * All events should be documented here\n * Below interfaces are used to build the website documentations\n * */\nexport const lGEvents: {\n [key: string]: string;\n} = {\n afterAppendSlide: 'lgAfterAppendSlide',\n init: 'lgInit',\n hasVideo: 'lgHasVideo',\n containerResize: 'lgContainerResize',\n updateSlides: 'lgUpdateSlides',\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\n beforeOpen: 'lgBeforeOpen',\n afterOpen: 'lgAfterOpen',\n slideItemLoad: 'lgSlideItemLoad',\n beforeSlide: 'lgBeforeSlide',\n afterSlide: 'lgAfterSlide',\n posterClick: 'lgPosterClick',\n dragStart: 'lgDragStart',\n dragMove: 'lgDragMove',\n dragEnd: 'lgDragEnd',\n beforeNextSlide: 'lgBeforeNextSlide',\n beforePrevSlide: 'lgBeforePrevSlide',\n beforeClose: 'lgBeforeClose',\n afterClose: 'lgAfterClose',\n rotateLeft: 'lgRotateLeft',\n rotateRight: 'lgRotateRight',\n flipHorizontal: 'lgFlipHorizontal',\n flipVertical: 'lgFlipVertical',\n autoplay: 'lgAutoplay',\n autoplayStart: 'lgAutoplayStart',\n autoplayStop: 'lgAutoplayStop',\n};\n\n// Follow the below format for the event documentation\n// @method is the method name when event is used with Angular/React components\n\n/**\n * Fired only once when lightGallery is initialized\n * @name lgInit\n * @method onInit\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action on lightGallery initialization.\n * // Init event returns the plugin instance that can be used to call any lightGalley public method\n * let pluginInstance = null;\n * lg.addEventListener('lgInit', (event) => {\n * pluginInstance = event.detail.instance;\n * });\n * lightGallery(lg);\n * @see
Methods\n */\nexport interface InitDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired when the slide content has been inserted into it's slide container.\n * @name lgAfterAppendSlide\n * @method onAfterAppendSlide\n */\nexport interface AfterAppendSlideEventDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired immediately before opening the gallery\n * @name lgBeforeOpen\n * @method onBeforeOpen\n */\nexport interface BeforeOpenDetail {}\n\n/**\n * Fired immediately after opening the gallery\n * @name lgAfterOpen\n * @method onAfterOpen\n */\nexport interface AfterOpenDetail {}\n\n/**\n * Fired once the media inside the slide has been completely loaded .\n * @name lgSlideItemLoad\n * @method onSlideItemLoad\n */\nexport interface SlideItemLoadDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * For the first slide, lightGallery adds some delay for displaying the loaded slide item.\n * This delay is required for the transition effect when the slide item is displayed\n * Respect the delay when you use this event\n */\n delay: number;\n\n // Will be true for the first slide\n isFirstSlide: boolean;\n}\n\n/**\n * Fired immediately before each slide transition.\n * @name lgBeforeSlide\n * @method onBeforeSlide\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action before each slide transition\n * lg.addEventListener('lgBeforeSlide', (event) => {\n * const { index, prevIndex } = event.detail;\n * alert(index, prevIndex);\n * });\n * lightGallery(lg);\n */\nexport interface BeforeSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired immediately after each slide transition.\n * @name lgAfterSlide\n * @method onAfterSlide\n */\nexport interface AfterSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired when the video poster is clicked.\n * @name lgPosterClick\n * @method onPosterClick\n */\nexport interface PosterClickDetail {}\n\n/**\n * Fired when the drag event to move to different slide starts.\n * @name lgDragStart\n * @method onDragStart\n */\nexport interface DragStartDetail {}\n\n/**\n * Fired periodically during the drag operation.\n * @name lgDragMove\n * @method onDragMove\n */\nexport interface DragMoveDetail {}\n\n/**\n * Fired when the user has finished the drag operation\n * @name lgDragEnd\n * @method onDragEnd\n */\nexport interface DragEndDetail {}\n\n/**\n * Fired immediately before the start of the close process.\n * @name lgBeforeClose\n * @method onBeforeClose\n */\nexport interface BeforeCloseDetail {}\n\n/**\n * Fired immediately once lightGallery is closed.\n * @name lgAfterClose\n * @method onAfterClose\n */\nexport interface AfterCloseDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired immediately before each \"next\" slide transition\n * @name lgBeforeNextSlide\n * @method onBeforeNextSlide\n */\nexport interface BeforeNextSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired immediately before each \"prev\" slide transition\n * @name lgBeforePrevSlide\n * @method onBeforePrevSlide\n */\nexport interface BeforePrevSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired when the sub-html content (ex : title/ description) has been appended into the slide.\n * @name lgAfterAppendSubHtml\n * @method onAfterAppendSubHtml\n */\nexport interface AfterAppendSubHtmlDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the lightGallery container has been resized.\n * @name lgContainerResize\n * @method onContainerResize\n */\nexport interface ContainerResizeDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when lightGallery detects video slide\n * @name lgHasVideo\n * @method onHasVideo\n */\nexport interface HasVideoDetail {\n /**\n * Index of the slide,\n */\n index: number;\n /**\n * Video source\n */\n src: string;\n /**\n * HTML5 video source if available\n *

\n HTML5 video source = source: {\n src: string;\n type: string;\n }[];\n attributes: HTMLVideoElement;\n *

\n */\n html5Video: VideoSource;\n /**\n * True if video has poster\n */\n hasPoster: boolean;\n}\n\n/**\n * Fired when the image is rotated in anticlockwise direction\n * @name lgRotateLeft\n * @method onRotateLeft\n */\nexport interface RotateLeftDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is rotated in clockwise direction\n * @name lgRotateRight\n * @method onRotateRight\n */\nexport interface RotateRightDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped horizontally\n * @name lgFlipHorizontal\n * @method onFlipHorizontal\n */\nexport interface FlipHorizontalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped vertically\n * @name lgFlipVertical\n * @method onFlipVertical\n */\nexport interface FlipVerticalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n","export interface MediumZoomSettings {\n /**\n * Enable/Disable medium like zoom experience\n */\n mediumZoom: boolean;\n\n /**\n * Space between the gallery outer area and images\n */\n margin: number;\n\n /**\n * Background color for the gallery\n * This can be overwritten by passing background color via `lg-background-color` for each item\n */\n backgroundColor: string;\n}\n\nexport const mediumZoomSettings: MediumZoomSettings = {\n margin: 40,\n mediumZoom: true,\n backgroundColor: '#000',\n};\n","import { lGEvents } from '../../lg-events';\nimport { LightGallerySettings } from '../../lg-settings';\nimport { LgQuery } from '../../lgQuery';\nimport { LightGallery } from '../../lightgallery';\nimport {\n MediumZoomSettings,\n mediumZoomSettings,\n} from './lg-medium-zoom-settings';\n\nexport default class MediumZoom {\n core: LightGallery;\n settings: MediumZoomSettings;\n private $LG!: LgQuery;\n constructor(instance: LightGallery, $LG: LgQuery) {\n // get lightGallery core plugin instance\n this.core = instance;\n this.$LG = $LG;\n\n // Set margin\n this.core.getMediaContainerPosition = () => {\n return {\n top: this.settings.margin,\n bottom: this.settings.margin,\n };\n };\n\n // Override some of lightGallery default settings\n const defaultSettings: Partial = {\n controls: false,\n download: false,\n counter: false,\n showCloseIcon: false,\n extraProps: ['lgBackgroundColor'],\n closeOnTap: false,\n enableSwipe: false,\n enableDrag: false,\n swipeToClose: false,\n addClass: this.core.settings.addClass + ' lg-medium-zoom',\n };\n\n this.core.settings = { ...this.core.settings, ...defaultSettings };\n\n // extend module default settings with lightGallery core settings\n this.settings = {\n ...mediumZoomSettings,\n ...this.core.settings,\n ...defaultSettings,\n };\n\n return this;\n }\n\n private toggleItemClass() {\n for (let index = 0; index < this.core.items.length; index++) {\n const $element = this.$LG(this.core.items[index]);\n $element.toggleClass('lg-medium-zoom-item');\n }\n }\n\n init(): void {\n if (!this.settings.mediumZoom) {\n return;\n }\n this.core.LGel.on(`${lGEvents.beforeOpen}.medium`, () => {\n this.core.$backdrop.css(\n 'background-color',\n this.core.galleryItems[this.core.index].lgBackgroundColor ||\n this.settings.backgroundColor,\n );\n });\n this.toggleItemClass();\n\n this.core.outer.on('click.lg.medium', () => {\n this.core.closeGallery();\n });\n }\n\n destroy(): void {\n this.toggleItemClass();\n }\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/assets/lightGallery/plugins/mediumZoom/lg-medium-zoom.min.js b/assets/lightGallery/plugins/mediumZoom/lg-medium-zoom.min.js new file mode 100644 index 0000000..4ffedc8 --- /dev/null +++ b/assets/lightGallery/plugins/mediumZoom/lg-medium-zoom.min.js @@ -0,0 +1,8 @@ +/** + * lightgallery | 2.9.0 | October 1st 2025 + * http://www.lightgalleryjs.com/ + * Copyright (c) 2020 Sachin Neravath; + * @license GPLv3 + */ + +!function(o,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(o="undefined"!=typeof globalThis?globalThis:o||self).lgMediumZoom=t()}(this,(function(){"use strict";var o=function(){return(o=Object.assign||function(o){for(var t,e=1,i=arguments.length;e {\n * pluginInstance = event.detail.instance;\n * });\n * lightGallery(lg);\n * @see
Methods\n */\nexport interface InitDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired when the slide content has been inserted into it's slide container.\n * @name lgAfterAppendSlide\n * @method onAfterAppendSlide\n */\nexport interface AfterAppendSlideEventDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired immediately before opening the gallery\n * @name lgBeforeOpen\n * @method onBeforeOpen\n */\nexport interface BeforeOpenDetail {}\n\n/**\n * Fired immediately after opening the gallery\n * @name lgAfterOpen\n * @method onAfterOpen\n */\nexport interface AfterOpenDetail {}\n\n/**\n * Fired once the media inside the slide has been completely loaded .\n * @name lgSlideItemLoad\n * @method onSlideItemLoad\n */\nexport interface SlideItemLoadDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * For the first slide, lightGallery adds some delay for displaying the loaded slide item.\n * This delay is required for the transition effect when the slide item is displayed\n * Respect the delay when you use this event\n */\n delay: number;\n\n // Will be true for the first slide\n isFirstSlide: boolean;\n}\n\n/**\n * Fired immediately before each slide transition.\n * @name lgBeforeSlide\n * @method onBeforeSlide\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action before each slide transition\n * lg.addEventListener('lgBeforeSlide', (event) => {\n * const { index, prevIndex } = event.detail;\n * alert(index, prevIndex);\n * });\n * lightGallery(lg);\n */\nexport interface BeforeSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired immediately after each slide transition.\n * @name lgAfterSlide\n * @method onAfterSlide\n */\nexport interface AfterSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired when the video poster is clicked.\n * @name lgPosterClick\n * @method onPosterClick\n */\nexport interface PosterClickDetail {}\n\n/**\n * Fired when the drag event to move to different slide starts.\n * @name lgDragStart\n * @method onDragStart\n */\nexport interface DragStartDetail {}\n\n/**\n * Fired periodically during the drag operation.\n * @name lgDragMove\n * @method onDragMove\n */\nexport interface DragMoveDetail {}\n\n/**\n * Fired when the user has finished the drag operation\n * @name lgDragEnd\n * @method onDragEnd\n */\nexport interface DragEndDetail {}\n\n/**\n * Fired immediately before the start of the close process.\n * @name lgBeforeClose\n * @method onBeforeClose\n */\nexport interface BeforeCloseDetail {}\n\n/**\n * Fired immediately once lightGallery is closed.\n * @name lgAfterClose\n * @method onAfterClose\n */\nexport interface AfterCloseDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired immediately before each \"next\" slide transition\n * @name lgBeforeNextSlide\n * @method onBeforeNextSlide\n */\nexport interface BeforeNextSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired immediately before each \"prev\" slide transition\n * @name lgBeforePrevSlide\n * @method onBeforePrevSlide\n */\nexport interface BeforePrevSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired when the sub-html content (ex : title/ description) has been appended into the slide.\n * @name lgAfterAppendSubHtml\n * @method onAfterAppendSubHtml\n */\nexport interface AfterAppendSubHtmlDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the lightGallery container has been resized.\n * @name lgContainerResize\n * @method onContainerResize\n */\nexport interface ContainerResizeDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when lightGallery detects video slide\n * @name lgHasVideo\n * @method onHasVideo\n */\nexport interface HasVideoDetail {\n /**\n * Index of the slide,\n */\n index: number;\n /**\n * Video source\n */\n src: string;\n /**\n * HTML5 video source if available\n *

\n HTML5 video source = source: {\n src: string;\n type: string;\n }[];\n attributes: HTMLVideoElement;\n *

\n */\n html5Video: VideoSource;\n /**\n * True if video has poster\n */\n hasPoster: boolean;\n}\n\n/**\n * Fired when the image is rotated in anticlockwise direction\n * @name lgRotateLeft\n * @method onRotateLeft\n */\nexport interface RotateLeftDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is rotated in clockwise direction\n * @name lgRotateRight\n * @method onRotateRight\n */\nexport interface RotateRightDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped horizontally\n * @name lgFlipHorizontal\n * @method onFlipHorizontal\n */\nexport interface FlipHorizontalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped vertically\n * @name lgFlipVertical\n * @method onFlipVertical\n */\nexport interface FlipVerticalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n","export interface MediumZoomSettings {\n /**\n * Enable/Disable medium like zoom experience\n */\n mediumZoom: boolean;\n\n /**\n * Space between the gallery outer area and images\n */\n margin: number;\n\n /**\n * Background color for the gallery\n * This can be overwritten by passing background color via `lg-background-color` for each item\n */\n backgroundColor: string;\n}\n\nexport const mediumZoomSettings: MediumZoomSettings = {\n margin: 40,\n mediumZoom: true,\n backgroundColor: '#000',\n};\n","import { lGEvents } from '../../lg-events';\nimport { LightGallerySettings } from '../../lg-settings';\nimport { LgQuery } from '../../lgQuery';\nimport { LightGallery } from '../../lightgallery';\nimport {\n MediumZoomSettings,\n mediumZoomSettings,\n} from './lg-medium-zoom-settings';\n\nexport default class MediumZoom {\n core: LightGallery;\n settings: MediumZoomSettings;\n private $LG!: LgQuery;\n constructor(instance: LightGallery, $LG: LgQuery) {\n // get lightGallery core plugin instance\n this.core = instance;\n this.$LG = $LG;\n\n // Set margin\n this.core.getMediaContainerPosition = () => {\n return {\n top: this.settings.margin,\n bottom: this.settings.margin,\n };\n };\n\n // Override some of lightGallery default settings\n const defaultSettings: Partial = {\n controls: false,\n download: false,\n counter: false,\n showCloseIcon: false,\n extraProps: ['lgBackgroundColor'],\n closeOnTap: false,\n enableSwipe: false,\n enableDrag: false,\n swipeToClose: false,\n addClass: this.core.settings.addClass + ' lg-medium-zoom',\n };\n\n this.core.settings = { ...this.core.settings, ...defaultSettings };\n\n // extend module default settings with lightGallery core settings\n this.settings = {\n ...mediumZoomSettings,\n ...this.core.settings,\n ...defaultSettings,\n };\n\n return this;\n }\n\n private toggleItemClass() {\n for (let index = 0; index < this.core.items.length; index++) {\n const $element = this.$LG(this.core.items[index]);\n $element.toggleClass('lg-medium-zoom-item');\n }\n }\n\n init(): void {\n if (!this.settings.mediumZoom) {\n return;\n }\n this.core.LGel.on(`${lGEvents.beforeOpen}.medium`, () => {\n this.core.$backdrop.css(\n 'background-color',\n this.core.galleryItems[this.core.index].lgBackgroundColor ||\n this.settings.backgroundColor,\n );\n });\n this.toggleItemClass();\n\n this.core.outer.on('click.lg.medium', () => {\n this.core.closeGallery();\n });\n }\n\n destroy(): void {\n this.toggleItemClass();\n }\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/assets/lightGallery/plugins/mediumZoom/package.json b/assets/lightGallery/plugins/mediumZoom/package.json new file mode 100644 index 0000000..1714bf3 --- /dev/null +++ b/assets/lightGallery/plugins/mediumZoom/package.json @@ -0,0 +1,7 @@ +{ + "name": "lightgallery/plugins/mediumZoom", + "private": true, + "main": "lg-medium-zoom.umd.js", + "module": "lg-medium-zoom.es5.js", + "typings": "lg-medium-zoom.d.ts" +} \ No newline at end of file diff --git a/assets/lightGallery/plugins/pager/lg-pager-settings.d.ts b/assets/lightGallery/plugins/pager/lg-pager-settings.d.ts new file mode 100644 index 0000000..1c7a548 --- /dev/null +++ b/assets/lightGallery/plugins/pager/lg-pager-settings.d.ts @@ -0,0 +1,7 @@ +export interface PagerSettings { + /** + * Enable/Disable pager option + */ + pager: boolean; +} +export declare const pagerSettings: PagerSettings; diff --git a/assets/lightGallery/plugins/pager/lg-pager.d.ts b/assets/lightGallery/plugins/pager/lg-pager.d.ts new file mode 100644 index 0000000..384cd28 --- /dev/null +++ b/assets/lightGallery/plugins/pager/lg-pager.d.ts @@ -0,0 +1,13 @@ +import { LgQuery } from '../../lgQuery'; +import { LightGallery } from '../../lightgallery'; +import { PagerSettings } from './lg-pager-settings'; +export default class Pager { + core: LightGallery; + settings: PagerSettings; + private $LG; + constructor(instance: LightGallery, $LG: LgQuery); + private getPagerHtml; + init(): void; + private manageActiveClass; + destroy(): void; +} diff --git a/assets/lightGallery/plugins/pager/lg-pager.es5.js b/assets/lightGallery/plugins/pager/lg-pager.es5.js new file mode 100644 index 0000000..c4be4f1 --- /dev/null +++ b/assets/lightGallery/plugins/pager/lg-pager.es5.js @@ -0,0 +1,139 @@ +/*! + * lightgallery | 2.9.0 | October 1st 2025 + * http://www.lightgalleryjs.com/ + * Copyright (c) 2020 Sachin Neravath; + * @license GPLv3 + */ + +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ + +var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; + +/** + * List of lightGallery events + * All events should be documented here + * Below interfaces are used to build the website documentations + * */ +var lGEvents = { + afterAppendSlide: 'lgAfterAppendSlide', + init: 'lgInit', + hasVideo: 'lgHasVideo', + containerResize: 'lgContainerResize', + updateSlides: 'lgUpdateSlides', + afterAppendSubHtml: 'lgAfterAppendSubHtml', + beforeOpen: 'lgBeforeOpen', + afterOpen: 'lgAfterOpen', + slideItemLoad: 'lgSlideItemLoad', + beforeSlide: 'lgBeforeSlide', + afterSlide: 'lgAfterSlide', + posterClick: 'lgPosterClick', + dragStart: 'lgDragStart', + dragMove: 'lgDragMove', + dragEnd: 'lgDragEnd', + beforeNextSlide: 'lgBeforeNextSlide', + beforePrevSlide: 'lgBeforePrevSlide', + beforeClose: 'lgBeforeClose', + afterClose: 'lgAfterClose', + rotateLeft: 'lgRotateLeft', + rotateRight: 'lgRotateRight', + flipHorizontal: 'lgFlipHorizontal', + flipVertical: 'lgFlipVertical', + autoplay: 'lgAutoplay', + autoplayStart: 'lgAutoplayStart', + autoplayStop: 'lgAutoplayStop', +}; + +var pagerSettings = { + pager: true, +}; + +var Pager = /** @class */ (function () { + function Pager(instance, $LG) { + // get lightGallery core plugin instance + this.core = instance; + this.$LG = $LG; + // extend module default settings with lightGallery core settings + this.settings = __assign(__assign({}, pagerSettings), this.core.settings); + return this; + } + Pager.prototype.getPagerHtml = function (items) { + var pagerList = ''; + for (var i = 0; i < items.length; i++) { + pagerList += " \n \n
\n
"; + } + return pagerList; + }; + Pager.prototype.init = function () { + var _this = this; + if (!this.settings.pager) { + return; + } + var timeout; + this.core.$lgComponents.prepend('
'); + var $pagerOuter = this.core.outer.find('.lg-pager-outer'); + $pagerOuter.html(this.getPagerHtml(this.core.galleryItems)); + // @todo enable click + $pagerOuter.first().on('click.lg touchend.lg', function (event) { + var $target = _this.$LG(event.target); + if (!$target.hasAttribute('data-lg-item-id')) { + return; + } + var index = parseInt($target.attr('data-lg-item-id')); + _this.core.slide(index, false, true, false); + }); + $pagerOuter.first().on('mouseover.lg', function () { + clearTimeout(timeout); + $pagerOuter.addClass('lg-pager-hover'); + }); + $pagerOuter.first().on('mouseout.lg', function () { + timeout = setTimeout(function () { + $pagerOuter.removeClass('lg-pager-hover'); + }); + }); + this.core.LGel.on(lGEvents.beforeSlide + ".pager", function (event) { + var index = event.detail.index; + _this.manageActiveClass.call(_this, index); + }); + this.core.LGel.on(lGEvents.updateSlides + ".pager", function () { + $pagerOuter.empty(); + $pagerOuter.html(_this.getPagerHtml(_this.core.galleryItems)); + _this.manageActiveClass(_this.core.index); + }); + }; + Pager.prototype.manageActiveClass = function (index) { + var $pagerCont = this.core.outer.find('.lg-pager-cont'); + $pagerCont.removeClass('lg-pager-active'); + $pagerCont.eq(index).addClass('lg-pager-active'); + }; + Pager.prototype.destroy = function () { + this.core.outer.find('.lg-pager-outer').remove(); + this.core.LGel.off('.lg.pager'); + this.core.LGel.off('.pager'); + }; + return Pager; +}()); + +export default Pager; +//# sourceMappingURL=lg-pager.es5.js.map diff --git a/assets/lightGallery/plugins/pager/lg-pager.es5.js.map b/assets/lightGallery/plugins/pager/lg-pager.es5.js.map new file mode 100644 index 0000000..14371e7 --- /dev/null +++ b/assets/lightGallery/plugins/pager/lg-pager.es5.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lg-pager.es5.js","sources":["../../../src/lg-events.ts","../../../src/plugins/pager/lg-pager-settings.ts","../../../src/plugins/pager/lg-pager.ts"],"sourcesContent":["import { LightGallery } from './lightgallery';\nimport { VideoSource } from './plugins/video/types';\n\n/**\n * List of lightGallery events\n * All events should be documented here\n * Below interfaces are used to build the website documentations\n * */\nexport const lGEvents: {\n [key: string]: string;\n} = {\n afterAppendSlide: 'lgAfterAppendSlide',\n init: 'lgInit',\n hasVideo: 'lgHasVideo',\n containerResize: 'lgContainerResize',\n updateSlides: 'lgUpdateSlides',\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\n beforeOpen: 'lgBeforeOpen',\n afterOpen: 'lgAfterOpen',\n slideItemLoad: 'lgSlideItemLoad',\n beforeSlide: 'lgBeforeSlide',\n afterSlide: 'lgAfterSlide',\n posterClick: 'lgPosterClick',\n dragStart: 'lgDragStart',\n dragMove: 'lgDragMove',\n dragEnd: 'lgDragEnd',\n beforeNextSlide: 'lgBeforeNextSlide',\n beforePrevSlide: 'lgBeforePrevSlide',\n beforeClose: 'lgBeforeClose',\n afterClose: 'lgAfterClose',\n rotateLeft: 'lgRotateLeft',\n rotateRight: 'lgRotateRight',\n flipHorizontal: 'lgFlipHorizontal',\n flipVertical: 'lgFlipVertical',\n autoplay: 'lgAutoplay',\n autoplayStart: 'lgAutoplayStart',\n autoplayStop: 'lgAutoplayStop',\n};\n\n// Follow the below format for the event documentation\n// @method is the method name when event is used with Angular/React components\n\n/**\n * Fired only once when lightGallery is initialized\n * @name lgInit\n * @method onInit\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action on lightGallery initialization.\n * // Init event returns the plugin instance that can be used to call any lightGalley public method\n * let pluginInstance = null;\n * lg.addEventListener('lgInit', (event) => {\n * pluginInstance = event.detail.instance;\n * });\n * lightGallery(lg);\n * @see
Methods\n */\nexport interface InitDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired when the slide content has been inserted into it's slide container.\n * @name lgAfterAppendSlide\n * @method onAfterAppendSlide\n */\nexport interface AfterAppendSlideEventDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired immediately before opening the gallery\n * @name lgBeforeOpen\n * @method onBeforeOpen\n */\nexport interface BeforeOpenDetail {}\n\n/**\n * Fired immediately after opening the gallery\n * @name lgAfterOpen\n * @method onAfterOpen\n */\nexport interface AfterOpenDetail {}\n\n/**\n * Fired once the media inside the slide has been completely loaded .\n * @name lgSlideItemLoad\n * @method onSlideItemLoad\n */\nexport interface SlideItemLoadDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * For the first slide, lightGallery adds some delay for displaying the loaded slide item.\n * This delay is required for the transition effect when the slide item is displayed\n * Respect the delay when you use this event\n */\n delay: number;\n\n // Will be true for the first slide\n isFirstSlide: boolean;\n}\n\n/**\n * Fired immediately before each slide transition.\n * @name lgBeforeSlide\n * @method onBeforeSlide\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action before each slide transition\n * lg.addEventListener('lgBeforeSlide', (event) => {\n * const { index, prevIndex } = event.detail;\n * alert(index, prevIndex);\n * });\n * lightGallery(lg);\n */\nexport interface BeforeSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired immediately after each slide transition.\n * @name lgAfterSlide\n * @method onAfterSlide\n */\nexport interface AfterSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired when the video poster is clicked.\n * @name lgPosterClick\n * @method onPosterClick\n */\nexport interface PosterClickDetail {}\n\n/**\n * Fired when the drag event to move to different slide starts.\n * @name lgDragStart\n * @method onDragStart\n */\nexport interface DragStartDetail {}\n\n/**\n * Fired periodically during the drag operation.\n * @name lgDragMove\n * @method onDragMove\n */\nexport interface DragMoveDetail {}\n\n/**\n * Fired when the user has finished the drag operation\n * @name lgDragEnd\n * @method onDragEnd\n */\nexport interface DragEndDetail {}\n\n/**\n * Fired immediately before the start of the close process.\n * @name lgBeforeClose\n * @method onBeforeClose\n */\nexport interface BeforeCloseDetail {}\n\n/**\n * Fired immediately once lightGallery is closed.\n * @name lgAfterClose\n * @method onAfterClose\n */\nexport interface AfterCloseDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired immediately before each \"next\" slide transition\n * @name lgBeforeNextSlide\n * @method onBeforeNextSlide\n */\nexport interface BeforeNextSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired immediately before each \"prev\" slide transition\n * @name lgBeforePrevSlide\n * @method onBeforePrevSlide\n */\nexport interface BeforePrevSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired when the sub-html content (ex : title/ description) has been appended into the slide.\n * @name lgAfterAppendSubHtml\n * @method onAfterAppendSubHtml\n */\nexport interface AfterAppendSubHtmlDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the lightGallery container has been resized.\n * @name lgContainerResize\n * @method onContainerResize\n */\nexport interface ContainerResizeDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when lightGallery detects video slide\n * @name lgHasVideo\n * @method onHasVideo\n */\nexport interface HasVideoDetail {\n /**\n * Index of the slide,\n */\n index: number;\n /**\n * Video source\n */\n src: string;\n /**\n * HTML5 video source if available\n *

\n HTML5 video source = source: {\n src: string;\n type: string;\n }[];\n attributes: HTMLVideoElement;\n *

\n */\n html5Video: VideoSource;\n /**\n * True if video has poster\n */\n hasPoster: boolean;\n}\n\n/**\n * Fired when the image is rotated in anticlockwise direction\n * @name lgRotateLeft\n * @method onRotateLeft\n */\nexport interface RotateLeftDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is rotated in clockwise direction\n * @name lgRotateRight\n * @method onRotateRight\n */\nexport interface RotateRightDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped horizontally\n * @name lgFlipHorizontal\n * @method onFlipHorizontal\n */\nexport interface FlipHorizontalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped vertically\n * @name lgFlipVertical\n * @method onFlipVertical\n */\nexport interface FlipVerticalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n","export interface PagerSettings {\n /**\n * Enable/Disable pager option\n */\n pager: boolean;\n}\n\nexport const pagerSettings: PagerSettings = {\n pager: true,\n};\n","import { lGEvents } from '../../lg-events';\nimport { GalleryItem } from '../../lg-utils';\nimport { LgQuery } from '../../lgQuery';\nimport { LightGallery } from '../../lightgallery';\nimport { PagerSettings, pagerSettings } from './lg-pager-settings';\n\nexport default class Pager {\n core: LightGallery;\n settings: PagerSettings;\n private $LG!: LgQuery;\n constructor(instance: LightGallery, $LG: LgQuery) {\n // get lightGallery core plugin instance\n this.core = instance;\n this.$LG = $LG;\n // extend module default settings with lightGallery core settings\n this.settings = { ...pagerSettings, ...this.core.settings };\n\n return this;\n }\n\n private getPagerHtml(items: GalleryItem[]): string {\n let pagerList = '';\n for (let i = 0; i < items.length; i++) {\n pagerList += ` \n \n
\n
`;\n }\n return pagerList;\n }\n\n public init(): void {\n if (!this.settings.pager) {\n return;\n }\n let timeout: any;\n this.core.$lgComponents.prepend('
');\n\n const $pagerOuter = this.core.outer.find('.lg-pager-outer');\n\n $pagerOuter.html(this.getPagerHtml(this.core.galleryItems));\n\n // @todo enable click\n $pagerOuter.first().on('click.lg touchend.lg', (event: MouseEvent) => {\n const $target = this.$LG(event.target);\n if (!$target.hasAttribute('data-lg-item-id')) {\n return;\n }\n const index = parseInt($target.attr('data-lg-item-id'));\n this.core.slide(index, false, true, false);\n });\n\n $pagerOuter.first().on('mouseover.lg', () => {\n clearTimeout(timeout);\n $pagerOuter.addClass('lg-pager-hover');\n });\n\n $pagerOuter.first().on('mouseout.lg', () => {\n timeout = setTimeout(() => {\n $pagerOuter.removeClass('lg-pager-hover');\n });\n });\n\n this.core.LGel.on(`${lGEvents.beforeSlide}.pager`, (event) => {\n const { index } = event.detail;\n this.manageActiveClass.call(this, index);\n });\n\n this.core.LGel.on(`${lGEvents.updateSlides}.pager`, () => {\n $pagerOuter.empty();\n $pagerOuter.html(this.getPagerHtml(this.core.galleryItems));\n this.manageActiveClass(this.core.index);\n });\n }\n\n private manageActiveClass(index: number): void {\n const $pagerCont = this.core.outer.find('.lg-pager-cont');\n $pagerCont.removeClass('lg-pager-active');\n $pagerCont.eq(index).addClass('lg-pager-active');\n }\n\n destroy(): void {\n this.core.outer.find('.lg-pager-outer').remove();\n this.core.LGel.off('.lg.pager');\n this.core.LGel.off('.pager');\n }\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/assets/lightGallery/plugins/pager/lg-pager.min.js b/assets/lightGallery/plugins/pager/lg-pager.min.js new file mode 100644 index 0000000..2e537bb --- /dev/null +++ b/assets/lightGallery/plugins/pager/lg-pager.min.js @@ -0,0 +1,8 @@ +/** + * lightgallery | 2.9.0 | October 1st 2025 + * http://www.lightgalleryjs.com/ + * Copyright (c) 2020 Sachin Neravath; + * @license GPLv3 + */ + +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).lgPager=t()}(this,(function(){"use strict";var e=function(){return(e=Object.assign||function(e){for(var t,r=1,o=arguments.length;r \n \n
\n ';return t},i.prototype.init=function(){var e=this;if(this.settings.pager){var o;this.core.$lgComponents.prepend('
');var i=this.core.outer.find(".lg-pager-outer");i.html(this.getPagerHtml(this.core.galleryItems)),i.first().on("click.lg touchend.lg",(function(t){var r=e.$LG(t.target);if(r.hasAttribute("data-lg-item-id")){var o=parseInt(r.attr("data-lg-item-id"));e.core.slide(o,!1,!0,!1)}})),i.first().on("mouseover.lg",(function(){clearTimeout(o),i.addClass("lg-pager-hover")})),i.first().on("mouseout.lg",(function(){o=setTimeout((function(){i.removeClass("lg-pager-hover")}))})),this.core.LGel.on(r+".pager",(function(t){var r=t.detail.index;e.manageActiveClass.call(e,r)})),this.core.LGel.on(t+".pager",(function(){i.empty(),i.html(e.getPagerHtml(e.core.galleryItems)),e.manageActiveClass(e.core.index)}))}},i.prototype.manageActiveClass=function(e){var t=this.core.outer.find(".lg-pager-cont");t.removeClass("lg-pager-active"),t.eq(e).addClass("lg-pager-active")},i.prototype.destroy=function(){this.core.outer.find(".lg-pager-outer").remove(),this.core.LGel.off(".lg.pager"),this.core.LGel.off(".pager")},i}()})); diff --git a/assets/lightGallery/plugins/pager/lg-pager.umd.js b/assets/lightGallery/plugins/pager/lg-pager.umd.js new file mode 100644 index 0000000..bed2175 --- /dev/null +++ b/assets/lightGallery/plugins/pager/lg-pager.umd.js @@ -0,0 +1,147 @@ +/*! + * lightgallery | 2.9.0 | October 1st 2025 + * http://www.lightgalleryjs.com/ + * Copyright (c) 2020 Sachin Neravath; + * @license GPLv3 + */ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lgPager = factory()); +}(this, (function () { 'use strict'; + + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + ***************************************************************************** */ + + var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + + /** + * List of lightGallery events + * All events should be documented here + * Below interfaces are used to build the website documentations + * */ + var lGEvents = { + afterAppendSlide: 'lgAfterAppendSlide', + init: 'lgInit', + hasVideo: 'lgHasVideo', + containerResize: 'lgContainerResize', + updateSlides: 'lgUpdateSlides', + afterAppendSubHtml: 'lgAfterAppendSubHtml', + beforeOpen: 'lgBeforeOpen', + afterOpen: 'lgAfterOpen', + slideItemLoad: 'lgSlideItemLoad', + beforeSlide: 'lgBeforeSlide', + afterSlide: 'lgAfterSlide', + posterClick: 'lgPosterClick', + dragStart: 'lgDragStart', + dragMove: 'lgDragMove', + dragEnd: 'lgDragEnd', + beforeNextSlide: 'lgBeforeNextSlide', + beforePrevSlide: 'lgBeforePrevSlide', + beforeClose: 'lgBeforeClose', + afterClose: 'lgAfterClose', + rotateLeft: 'lgRotateLeft', + rotateRight: 'lgRotateRight', + flipHorizontal: 'lgFlipHorizontal', + flipVertical: 'lgFlipVertical', + autoplay: 'lgAutoplay', + autoplayStart: 'lgAutoplayStart', + autoplayStop: 'lgAutoplayStop', + }; + + var pagerSettings = { + pager: true, + }; + + var Pager = /** @class */ (function () { + function Pager(instance, $LG) { + // get lightGallery core plugin instance + this.core = instance; + this.$LG = $LG; + // extend module default settings with lightGallery core settings + this.settings = __assign(__assign({}, pagerSettings), this.core.settings); + return this; + } + Pager.prototype.getPagerHtml = function (items) { + var pagerList = ''; + for (var i = 0; i < items.length; i++) { + pagerList += " \n \n
\n
"; + } + return pagerList; + }; + Pager.prototype.init = function () { + var _this = this; + if (!this.settings.pager) { + return; + } + var timeout; + this.core.$lgComponents.prepend('
'); + var $pagerOuter = this.core.outer.find('.lg-pager-outer'); + $pagerOuter.html(this.getPagerHtml(this.core.galleryItems)); + // @todo enable click + $pagerOuter.first().on('click.lg touchend.lg', function (event) { + var $target = _this.$LG(event.target); + if (!$target.hasAttribute('data-lg-item-id')) { + return; + } + var index = parseInt($target.attr('data-lg-item-id')); + _this.core.slide(index, false, true, false); + }); + $pagerOuter.first().on('mouseover.lg', function () { + clearTimeout(timeout); + $pagerOuter.addClass('lg-pager-hover'); + }); + $pagerOuter.first().on('mouseout.lg', function () { + timeout = setTimeout(function () { + $pagerOuter.removeClass('lg-pager-hover'); + }); + }); + this.core.LGel.on(lGEvents.beforeSlide + ".pager", function (event) { + var index = event.detail.index; + _this.manageActiveClass.call(_this, index); + }); + this.core.LGel.on(lGEvents.updateSlides + ".pager", function () { + $pagerOuter.empty(); + $pagerOuter.html(_this.getPagerHtml(_this.core.galleryItems)); + _this.manageActiveClass(_this.core.index); + }); + }; + Pager.prototype.manageActiveClass = function (index) { + var $pagerCont = this.core.outer.find('.lg-pager-cont'); + $pagerCont.removeClass('lg-pager-active'); + $pagerCont.eq(index).addClass('lg-pager-active'); + }; + Pager.prototype.destroy = function () { + this.core.outer.find('.lg-pager-outer').remove(); + this.core.LGel.off('.lg.pager'); + this.core.LGel.off('.pager'); + }; + return Pager; + }()); + + return Pager; + +}))); +//# sourceMappingURL=lg-pager.umd.js.map diff --git a/assets/lightGallery/plugins/pager/lg-pager.umd.js.map b/assets/lightGallery/plugins/pager/lg-pager.umd.js.map new file mode 100644 index 0000000..054a00c --- /dev/null +++ b/assets/lightGallery/plugins/pager/lg-pager.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lg-pager.umd.js","sources":["../../../src/lg-events.ts","../../../src/plugins/pager/lg-pager-settings.ts","../../../src/plugins/pager/lg-pager.ts"],"sourcesContent":["import { LightGallery } from './lightgallery';\nimport { VideoSource } from './plugins/video/types';\n\n/**\n * List of lightGallery events\n * All events should be documented here\n * Below interfaces are used to build the website documentations\n * */\nexport const lGEvents: {\n [key: string]: string;\n} = {\n afterAppendSlide: 'lgAfterAppendSlide',\n init: 'lgInit',\n hasVideo: 'lgHasVideo',\n containerResize: 'lgContainerResize',\n updateSlides: 'lgUpdateSlides',\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\n beforeOpen: 'lgBeforeOpen',\n afterOpen: 'lgAfterOpen',\n slideItemLoad: 'lgSlideItemLoad',\n beforeSlide: 'lgBeforeSlide',\n afterSlide: 'lgAfterSlide',\n posterClick: 'lgPosterClick',\n dragStart: 'lgDragStart',\n dragMove: 'lgDragMove',\n dragEnd: 'lgDragEnd',\n beforeNextSlide: 'lgBeforeNextSlide',\n beforePrevSlide: 'lgBeforePrevSlide',\n beforeClose: 'lgBeforeClose',\n afterClose: 'lgAfterClose',\n rotateLeft: 'lgRotateLeft',\n rotateRight: 'lgRotateRight',\n flipHorizontal: 'lgFlipHorizontal',\n flipVertical: 'lgFlipVertical',\n autoplay: 'lgAutoplay',\n autoplayStart: 'lgAutoplayStart',\n autoplayStop: 'lgAutoplayStop',\n};\n\n// Follow the below format for the event documentation\n// @method is the method name when event is used with Angular/React components\n\n/**\n * Fired only once when lightGallery is initialized\n * @name lgInit\n * @method onInit\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action on lightGallery initialization.\n * // Init event returns the plugin instance that can be used to call any lightGalley public method\n * let pluginInstance = null;\n * lg.addEventListener('lgInit', (event) => {\n * pluginInstance = event.detail.instance;\n * });\n * lightGallery(lg);\n * @see
Methods\n */\nexport interface InitDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired when the slide content has been inserted into it's slide container.\n * @name lgAfterAppendSlide\n * @method onAfterAppendSlide\n */\nexport interface AfterAppendSlideEventDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired immediately before opening the gallery\n * @name lgBeforeOpen\n * @method onBeforeOpen\n */\nexport interface BeforeOpenDetail {}\n\n/**\n * Fired immediately after opening the gallery\n * @name lgAfterOpen\n * @method onAfterOpen\n */\nexport interface AfterOpenDetail {}\n\n/**\n * Fired once the media inside the slide has been completely loaded .\n * @name lgSlideItemLoad\n * @method onSlideItemLoad\n */\nexport interface SlideItemLoadDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * For the first slide, lightGallery adds some delay for displaying the loaded slide item.\n * This delay is required for the transition effect when the slide item is displayed\n * Respect the delay when you use this event\n */\n delay: number;\n\n // Will be true for the first slide\n isFirstSlide: boolean;\n}\n\n/**\n * Fired immediately before each slide transition.\n * @name lgBeforeSlide\n * @method onBeforeSlide\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action before each slide transition\n * lg.addEventListener('lgBeforeSlide', (event) => {\n * const { index, prevIndex } = event.detail;\n * alert(index, prevIndex);\n * });\n * lightGallery(lg);\n */\nexport interface BeforeSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired immediately after each slide transition.\n * @name lgAfterSlide\n * @method onAfterSlide\n */\nexport interface AfterSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired when the video poster is clicked.\n * @name lgPosterClick\n * @method onPosterClick\n */\nexport interface PosterClickDetail {}\n\n/**\n * Fired when the drag event to move to different slide starts.\n * @name lgDragStart\n * @method onDragStart\n */\nexport interface DragStartDetail {}\n\n/**\n * Fired periodically during the drag operation.\n * @name lgDragMove\n * @method onDragMove\n */\nexport interface DragMoveDetail {}\n\n/**\n * Fired when the user has finished the drag operation\n * @name lgDragEnd\n * @method onDragEnd\n */\nexport interface DragEndDetail {}\n\n/**\n * Fired immediately before the start of the close process.\n * @name lgBeforeClose\n * @method onBeforeClose\n */\nexport interface BeforeCloseDetail {}\n\n/**\n * Fired immediately once lightGallery is closed.\n * @name lgAfterClose\n * @method onAfterClose\n */\nexport interface AfterCloseDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired immediately before each \"next\" slide transition\n * @name lgBeforeNextSlide\n * @method onBeforeNextSlide\n */\nexport interface BeforeNextSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired immediately before each \"prev\" slide transition\n * @name lgBeforePrevSlide\n * @method onBeforePrevSlide\n */\nexport interface BeforePrevSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired when the sub-html content (ex : title/ description) has been appended into the slide.\n * @name lgAfterAppendSubHtml\n * @method onAfterAppendSubHtml\n */\nexport interface AfterAppendSubHtmlDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the lightGallery container has been resized.\n * @name lgContainerResize\n * @method onContainerResize\n */\nexport interface ContainerResizeDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when lightGallery detects video slide\n * @name lgHasVideo\n * @method onHasVideo\n */\nexport interface HasVideoDetail {\n /**\n * Index of the slide,\n */\n index: number;\n /**\n * Video source\n */\n src: string;\n /**\n * HTML5 video source if available\n *

\n HTML5 video source = source: {\n src: string;\n type: string;\n }[];\n attributes: HTMLVideoElement;\n *

\n */\n html5Video: VideoSource;\n /**\n * True if video has poster\n */\n hasPoster: boolean;\n}\n\n/**\n * Fired when the image is rotated in anticlockwise direction\n * @name lgRotateLeft\n * @method onRotateLeft\n */\nexport interface RotateLeftDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is rotated in clockwise direction\n * @name lgRotateRight\n * @method onRotateRight\n */\nexport interface RotateRightDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped horizontally\n * @name lgFlipHorizontal\n * @method onFlipHorizontal\n */\nexport interface FlipHorizontalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped vertically\n * @name lgFlipVertical\n * @method onFlipVertical\n */\nexport interface FlipVerticalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n","export interface PagerSettings {\n /**\n * Enable/Disable pager option\n */\n pager: boolean;\n}\n\nexport const pagerSettings: PagerSettings = {\n pager: true,\n};\n","import { lGEvents } from '../../lg-events';\nimport { GalleryItem } from '../../lg-utils';\nimport { LgQuery } from '../../lgQuery';\nimport { LightGallery } from '../../lightgallery';\nimport { PagerSettings, pagerSettings } from './lg-pager-settings';\n\nexport default class Pager {\n core: LightGallery;\n settings: PagerSettings;\n private $LG!: LgQuery;\n constructor(instance: LightGallery, $LG: LgQuery) {\n // get lightGallery core plugin instance\n this.core = instance;\n this.$LG = $LG;\n // extend module default settings with lightGallery core settings\n this.settings = { ...pagerSettings, ...this.core.settings };\n\n return this;\n }\n\n private getPagerHtml(items: GalleryItem[]): string {\n let pagerList = '';\n for (let i = 0; i < items.length; i++) {\n pagerList += ` \n \n
\n
`;\n }\n return pagerList;\n }\n\n public init(): void {\n if (!this.settings.pager) {\n return;\n }\n let timeout: any;\n this.core.$lgComponents.prepend('
');\n\n const $pagerOuter = this.core.outer.find('.lg-pager-outer');\n\n $pagerOuter.html(this.getPagerHtml(this.core.galleryItems));\n\n // @todo enable click\n $pagerOuter.first().on('click.lg touchend.lg', (event: MouseEvent) => {\n const $target = this.$LG(event.target);\n if (!$target.hasAttribute('data-lg-item-id')) {\n return;\n }\n const index = parseInt($target.attr('data-lg-item-id'));\n this.core.slide(index, false, true, false);\n });\n\n $pagerOuter.first().on('mouseover.lg', () => {\n clearTimeout(timeout);\n $pagerOuter.addClass('lg-pager-hover');\n });\n\n $pagerOuter.first().on('mouseout.lg', () => {\n timeout = setTimeout(() => {\n $pagerOuter.removeClass('lg-pager-hover');\n });\n });\n\n this.core.LGel.on(`${lGEvents.beforeSlide}.pager`, (event) => {\n const { index } = event.detail;\n this.manageActiveClass.call(this, index);\n });\n\n this.core.LGel.on(`${lGEvents.updateSlides}.pager`, () => {\n $pagerOuter.empty();\n $pagerOuter.html(this.getPagerHtml(this.core.galleryItems));\n this.manageActiveClass(this.core.index);\n });\n }\n\n private manageActiveClass(index: number): void {\n const $pagerCont = this.core.outer.find('.lg-pager-cont');\n $pagerCont.removeClass('lg-pager-active');\n $pagerCont.eq(index).addClass('lg-pager-active');\n }\n\n destroy(): void {\n this.core.outer.find('.lg-pager-outer').remove();\n this.core.LGel.off('.lg.pager');\n this.core.LGel.off('.pager');\n }\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/assets/lightGallery/plugins/pager/package.json b/assets/lightGallery/plugins/pager/package.json new file mode 100644 index 0000000..5a1bf54 --- /dev/null +++ b/assets/lightGallery/plugins/pager/package.json @@ -0,0 +1,7 @@ +{ + "name": "lightgallery/plugins/pager", + "private": true, + "main": "lg-pager.umd.js", + "module": "lg-pager.es5.js", + "typings": "lg-pager.d.ts" +} \ No newline at end of file diff --git a/assets/lightGallery/plugins/relativeCaption/lg-relative-caption-settings.d.ts b/assets/lightGallery/plugins/relativeCaption/lg-relative-caption-settings.d.ts new file mode 100644 index 0000000..50610f8 --- /dev/null +++ b/assets/lightGallery/plugins/relativeCaption/lg-relative-caption-settings.d.ts @@ -0,0 +1,7 @@ +export interface RelativeCaptionSettings { + /** + * Enable/Disable relative captions + */ + relativeCaption: boolean; +} +export declare const relativeCaptionSettings: RelativeCaptionSettings; diff --git a/assets/lightGallery/plugins/relativeCaption/lg-relative-caption.d.ts b/assets/lightGallery/plugins/relativeCaption/lg-relative-caption.d.ts new file mode 100644 index 0000000..dad8242 --- /dev/null +++ b/assets/lightGallery/plugins/relativeCaption/lg-relative-caption.d.ts @@ -0,0 +1,14 @@ +/** + * lightGallery caption for placing captions relative to the image + */ +import { LightGallery } from '../../lightgallery'; +import { RelativeCaptionSettings } from './lg-relative-caption-settings'; +export default class RelativeCaption { + core: LightGallery; + settings: RelativeCaptionSettings; + constructor(instance: LightGallery); + init(): void; + private setCaptionStyle; + private setRelativeCaption; + destroy(): void; +} diff --git a/assets/lightGallery/plugins/relativeCaption/lg-relative-caption.es5.js b/assets/lightGallery/plugins/relativeCaption/lg-relative-caption.es5.js new file mode 100644 index 0000000..4eed72f --- /dev/null +++ b/assets/lightGallery/plugins/relativeCaption/lg-relative-caption.es5.js @@ -0,0 +1,154 @@ +/*! + * lightgallery | 2.9.0 | October 1st 2025 + * http://www.lightgalleryjs.com/ + * Copyright (c) 2020 Sachin Neravath; + * @license GPLv3 + */ + +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ + +var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; + +/** + * List of lightGallery events + * All events should be documented here + * Below interfaces are used to build the website documentations + * */ +var lGEvents = { + afterAppendSlide: 'lgAfterAppendSlide', + init: 'lgInit', + hasVideo: 'lgHasVideo', + containerResize: 'lgContainerResize', + updateSlides: 'lgUpdateSlides', + afterAppendSubHtml: 'lgAfterAppendSubHtml', + beforeOpen: 'lgBeforeOpen', + afterOpen: 'lgAfterOpen', + slideItemLoad: 'lgSlideItemLoad', + beforeSlide: 'lgBeforeSlide', + afterSlide: 'lgAfterSlide', + posterClick: 'lgPosterClick', + dragStart: 'lgDragStart', + dragMove: 'lgDragMove', + dragEnd: 'lgDragEnd', + beforeNextSlide: 'lgBeforeNextSlide', + beforePrevSlide: 'lgBeforePrevSlide', + beforeClose: 'lgBeforeClose', + afterClose: 'lgAfterClose', + rotateLeft: 'lgRotateLeft', + rotateRight: 'lgRotateRight', + flipHorizontal: 'lgFlipHorizontal', + flipVertical: 'lgFlipVertical', + autoplay: 'lgAutoplay', + autoplayStart: 'lgAutoplayStart', + autoplayStop: 'lgAutoplayStop', +}; + +var relativeCaptionSettings = { + relativeCaption: false, +}; + +/** + * lightGallery caption for placing captions relative to the image + */ +var RelativeCaption = /** @class */ (function () { + function RelativeCaption(instance) { + // get lightGallery core plugin instance + this.core = instance; + // Override some of lightGallery default settings + var defaultSettings = { + addClass: this.core.settings.addClass + ' lg-relative-caption', + }; + this.core.settings = __assign(__assign({}, this.core.settings), defaultSettings); + // extend module default settings with lightGallery core settings + this.settings = __assign(__assign(__assign({}, relativeCaptionSettings), this.core.settings), defaultSettings); + return this; + } + RelativeCaption.prototype.init = function () { + var _this = this; + if (!this.settings.relativeCaption) { + return; + } + this.core.LGel.on(lGEvents.slideItemLoad + ".caption", function (event) { + var _a = event.detail, index = _a.index, delay = _a.delay; + setTimeout(function () { + if (index === _this.core.index) { + _this.setRelativeCaption(index); + } + }, delay); + }); + this.core.LGel.on(lGEvents.afterSlide + ".caption", function (event) { + var index = event.detail.index; + setTimeout(function () { + var slide = _this.core.getSlideItem(index); + if (slide.hasClass('lg-complete')) { + _this.setRelativeCaption(index); + } + }); + }); + this.core.LGel.on(lGEvents.beforeSlide + ".caption", function (event) { + var index = event.detail.index; + setTimeout(function () { + var slide = _this.core.getSlideItem(index); + slide.removeClass('lg-show-caption'); + }); + }); + this.core.LGel.on(lGEvents.containerResize + ".caption", function (event) { + _this.setRelativeCaption(_this.core.index); + }); + }; + RelativeCaption.prototype.setCaptionStyle = function (index, rect, slideWrapRect) { + var $subHtmlInner = this.core + .getSlideItem(index) + .find('.lg-relative-caption-item'); + var $subHtml = this.core.getSlideItem(index).find('.lg-sub-html'); + $subHtml.css('width', rect.width + "px").css('left', rect.left + "px"); + var subHtmlRect = $subHtmlInner.get().getBoundingClientRect(); + var bottom = slideWrapRect.bottom - rect.bottom - subHtmlRect.height; + $subHtml.css('top', "auto").css('bottom', Math.max(bottom, 0) + "px"); + }; + RelativeCaption.prototype.setRelativeCaption = function (index) { + var slide = this.core.getSlideItem(index); + if (slide.hasClass('lg-current')) { + var rect = this.core + .getSlideItem(index) + .find('.lg-object') + .get() + .getBoundingClientRect(); + var slideWrapRect = this.core + .getSlideItem(index) + .get() + .getBoundingClientRect(); + this.setCaptionStyle(index, rect, slideWrapRect); + slide.addClass('lg-show-caption'); + } + }; + RelativeCaption.prototype.destroy = function () { + this.core.LGel.off('.caption'); + }; + return RelativeCaption; +}()); + +export default RelativeCaption; +//# sourceMappingURL=lg-relative-caption.es5.js.map diff --git a/assets/lightGallery/plugins/relativeCaption/lg-relative-caption.es5.js.map b/assets/lightGallery/plugins/relativeCaption/lg-relative-caption.es5.js.map new file mode 100644 index 0000000..a87fa1b --- /dev/null +++ b/assets/lightGallery/plugins/relativeCaption/lg-relative-caption.es5.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lg-relative-caption.es5.js","sources":["../../../src/lg-events.ts","../../../src/plugins/relativeCaption/lg-relative-caption-settings.ts","../../../src/plugins/relativeCaption/lg-relative-caption.ts"],"sourcesContent":["import { LightGallery } from './lightgallery';\nimport { VideoSource } from './plugins/video/types';\n\n/**\n * List of lightGallery events\n * All events should be documented here\n * Below interfaces are used to build the website documentations\n * */\nexport const lGEvents: {\n [key: string]: string;\n} = {\n afterAppendSlide: 'lgAfterAppendSlide',\n init: 'lgInit',\n hasVideo: 'lgHasVideo',\n containerResize: 'lgContainerResize',\n updateSlides: 'lgUpdateSlides',\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\n beforeOpen: 'lgBeforeOpen',\n afterOpen: 'lgAfterOpen',\n slideItemLoad: 'lgSlideItemLoad',\n beforeSlide: 'lgBeforeSlide',\n afterSlide: 'lgAfterSlide',\n posterClick: 'lgPosterClick',\n dragStart: 'lgDragStart',\n dragMove: 'lgDragMove',\n dragEnd: 'lgDragEnd',\n beforeNextSlide: 'lgBeforeNextSlide',\n beforePrevSlide: 'lgBeforePrevSlide',\n beforeClose: 'lgBeforeClose',\n afterClose: 'lgAfterClose',\n rotateLeft: 'lgRotateLeft',\n rotateRight: 'lgRotateRight',\n flipHorizontal: 'lgFlipHorizontal',\n flipVertical: 'lgFlipVertical',\n autoplay: 'lgAutoplay',\n autoplayStart: 'lgAutoplayStart',\n autoplayStop: 'lgAutoplayStop',\n};\n\n// Follow the below format for the event documentation\n// @method is the method name when event is used with Angular/React components\n\n/**\n * Fired only once when lightGallery is initialized\n * @name lgInit\n * @method onInit\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action on lightGallery initialization.\n * // Init event returns the plugin instance that can be used to call any lightGalley public method\n * let pluginInstance = null;\n * lg.addEventListener('lgInit', (event) => {\n * pluginInstance = event.detail.instance;\n * });\n * lightGallery(lg);\n * @see
Methods\n */\nexport interface InitDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired when the slide content has been inserted into it's slide container.\n * @name lgAfterAppendSlide\n * @method onAfterAppendSlide\n */\nexport interface AfterAppendSlideEventDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired immediately before opening the gallery\n * @name lgBeforeOpen\n * @method onBeforeOpen\n */\nexport interface BeforeOpenDetail {}\n\n/**\n * Fired immediately after opening the gallery\n * @name lgAfterOpen\n * @method onAfterOpen\n */\nexport interface AfterOpenDetail {}\n\n/**\n * Fired once the media inside the slide has been completely loaded .\n * @name lgSlideItemLoad\n * @method onSlideItemLoad\n */\nexport interface SlideItemLoadDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * For the first slide, lightGallery adds some delay for displaying the loaded slide item.\n * This delay is required for the transition effect when the slide item is displayed\n * Respect the delay when you use this event\n */\n delay: number;\n\n // Will be true for the first slide\n isFirstSlide: boolean;\n}\n\n/**\n * Fired immediately before each slide transition.\n * @name lgBeforeSlide\n * @method onBeforeSlide\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action before each slide transition\n * lg.addEventListener('lgBeforeSlide', (event) => {\n * const { index, prevIndex } = event.detail;\n * alert(index, prevIndex);\n * });\n * lightGallery(lg);\n */\nexport interface BeforeSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired immediately after each slide transition.\n * @name lgAfterSlide\n * @method onAfterSlide\n */\nexport interface AfterSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired when the video poster is clicked.\n * @name lgPosterClick\n * @method onPosterClick\n */\nexport interface PosterClickDetail {}\n\n/**\n * Fired when the drag event to move to different slide starts.\n * @name lgDragStart\n * @method onDragStart\n */\nexport interface DragStartDetail {}\n\n/**\n * Fired periodically during the drag operation.\n * @name lgDragMove\n * @method onDragMove\n */\nexport interface DragMoveDetail {}\n\n/**\n * Fired when the user has finished the drag operation\n * @name lgDragEnd\n * @method onDragEnd\n */\nexport interface DragEndDetail {}\n\n/**\n * Fired immediately before the start of the close process.\n * @name lgBeforeClose\n * @method onBeforeClose\n */\nexport interface BeforeCloseDetail {}\n\n/**\n * Fired immediately once lightGallery is closed.\n * @name lgAfterClose\n * @method onAfterClose\n */\nexport interface AfterCloseDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired immediately before each \"next\" slide transition\n * @name lgBeforeNextSlide\n * @method onBeforeNextSlide\n */\nexport interface BeforeNextSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired immediately before each \"prev\" slide transition\n * @name lgBeforePrevSlide\n * @method onBeforePrevSlide\n */\nexport interface BeforePrevSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired when the sub-html content (ex : title/ description) has been appended into the slide.\n * @name lgAfterAppendSubHtml\n * @method onAfterAppendSubHtml\n */\nexport interface AfterAppendSubHtmlDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the lightGallery container has been resized.\n * @name lgContainerResize\n * @method onContainerResize\n */\nexport interface ContainerResizeDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when lightGallery detects video slide\n * @name lgHasVideo\n * @method onHasVideo\n */\nexport interface HasVideoDetail {\n /**\n * Index of the slide,\n */\n index: number;\n /**\n * Video source\n */\n src: string;\n /**\n * HTML5 video source if available\n *

\n HTML5 video source = source: {\n src: string;\n type: string;\n }[];\n attributes: HTMLVideoElement;\n *

\n */\n html5Video: VideoSource;\n /**\n * True if video has poster\n */\n hasPoster: boolean;\n}\n\n/**\n * Fired when the image is rotated in anticlockwise direction\n * @name lgRotateLeft\n * @method onRotateLeft\n */\nexport interface RotateLeftDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is rotated in clockwise direction\n * @name lgRotateRight\n * @method onRotateRight\n */\nexport interface RotateRightDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped horizontally\n * @name lgFlipHorizontal\n * @method onFlipHorizontal\n */\nexport interface FlipHorizontalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped vertically\n * @name lgFlipVertical\n * @method onFlipVertical\n */\nexport interface FlipVerticalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n","export interface RelativeCaptionSettings {\n /**\n * Enable/Disable relative captions\n */\n relativeCaption: boolean;\n}\n\nexport const relativeCaptionSettings: RelativeCaptionSettings = {\n relativeCaption: false,\n};\n","/**\n * lightGallery caption for placing captions relative to the image\n */\n\nimport { lGEvents } from '../../lg-events';\nimport { LightGallerySettings } from '../../lg-settings';\nimport { LightGallery } from '../../lightgallery';\nimport {\n RelativeCaptionSettings,\n relativeCaptionSettings,\n} from './lg-relative-caption-settings';\n\nexport default class RelativeCaption {\n core: LightGallery;\n settings: RelativeCaptionSettings;\n constructor(instance: LightGallery) {\n // get lightGallery core plugin instance\n this.core = instance;\n\n // Override some of lightGallery default settings\n const defaultSettings: Partial = {\n addClass: this.core.settings.addClass + ' lg-relative-caption',\n };\n\n this.core.settings = { ...this.core.settings, ...defaultSettings };\n\n // extend module default settings with lightGallery core settings\n this.settings = {\n ...relativeCaptionSettings,\n ...this.core.settings,\n ...defaultSettings,\n };\n\n return this;\n }\n\n init(): void {\n if (!this.settings.relativeCaption) {\n return;\n }\n this.core.LGel.on(`${lGEvents.slideItemLoad}.caption`, (event) => {\n const { index, delay } = event.detail;\n setTimeout(() => {\n if (index === this.core.index) {\n this.setRelativeCaption(index);\n }\n }, delay);\n });\n this.core.LGel.on(`${lGEvents.afterSlide}.caption`, (event) => {\n const { index } = event.detail;\n setTimeout(() => {\n const slide = this.core.getSlideItem(index);\n if (slide.hasClass('lg-complete')) {\n this.setRelativeCaption(index);\n }\n });\n });\n this.core.LGel.on(`${lGEvents.beforeSlide}.caption`, (event) => {\n const { index } = event.detail;\n setTimeout(() => {\n const slide = this.core.getSlideItem(index);\n slide.removeClass('lg-show-caption');\n });\n });\n this.core.LGel.on(`${lGEvents.containerResize}.caption`, (event) => {\n this.setRelativeCaption(this.core.index);\n });\n }\n\n private setCaptionStyle(\n index: number,\n rect: ClientRect,\n slideWrapRect: ClientRect,\n ) {\n const $subHtmlInner = this.core\n .getSlideItem(index)\n .find('.lg-relative-caption-item');\n const $subHtml = this.core.getSlideItem(index).find('.lg-sub-html');\n $subHtml.css('width', `${rect.width}px`).css('left', `${rect.left}px`);\n const subHtmlRect = $subHtmlInner.get().getBoundingClientRect();\n const bottom = slideWrapRect.bottom - rect.bottom - subHtmlRect.height;\n $subHtml.css('top', `auto`).css('bottom', `${Math.max(bottom, 0)}px`);\n }\n\n private setRelativeCaption(index: number) {\n const slide = this.core.getSlideItem(index);\n if (slide.hasClass('lg-current')) {\n const rect = this.core\n .getSlideItem(index)\n .find('.lg-object')\n .get()\n .getBoundingClientRect();\n const slideWrapRect = this.core\n .getSlideItem(index)\n .get()\n .getBoundingClientRect();\n this.setCaptionStyle(index, rect, slideWrapRect);\n slide.addClass('lg-show-caption');\n }\n }\n\n destroy(): void {\n this.core.LGel.off('.caption');\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;;;;;AAKO,IAAM,QAAQ,GAEjB;IACA,gBAAgB,EAAE,oBAAoB;IACtC,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,YAAY;IACtB,eAAe,EAAE,mBAAmB;IACpC,YAAY,EAAE,gBAAgB;IAC9B,kBAAkB,EAAE,sBAAsB;IAC1C,UAAU,EAAE,cAAc;IAC1B,SAAS,EAAE,aAAa;IACxB,aAAa,EAAE,iBAAiB;IAChC,WAAW,EAAE,eAAe;IAC5B,UAAU,EAAE,cAAc;IAC1B,WAAW,EAAE,eAAe;IAC5B,SAAS,EAAE,aAAa;IACxB,QAAQ,EAAE,YAAY;IACtB,OAAO,EAAE,WAAW;IACpB,eAAe,EAAE,mBAAmB;IACpC,eAAe,EAAE,mBAAmB;IACpC,WAAW,EAAE,eAAe;IAC5B,UAAU,EAAE,cAAc;IAC1B,UAAU,EAAE,cAAc;IAC1B,WAAW,EAAE,eAAe;IAC5B,cAAc,EAAE,kBAAkB;IAClC,YAAY,EAAE,gBAAgB;IAC9B,QAAQ,EAAE,YAAY;IACtB,aAAa,EAAE,iBAAiB;IAChC,YAAY,EAAE,gBAAgB;CACjC;;AC9BM,IAAM,uBAAuB,GAA4B;IAC5D,eAAe,EAAE,KAAK;CACzB;;ACTD;;;;IAeI,yBAAY,QAAsB;;QAE9B,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;;QAGrB,IAAM,eAAe,GAAkC;YACnD,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,sBAAsB;SACjE,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,QAAQ,yBAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAK,eAAe,CAAE,CAAC;;QAGnE,IAAI,CAAC,QAAQ,kCACN,uBAAuB,GACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,GAClB,eAAe,CACrB,CAAC;QAEF,OAAO,IAAI,CAAC;KACf;IAED,8BAAI,GAAJ;QAAA,iBA+BC;QA9BG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;YAChC,OAAO;SACV;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAI,QAAQ,CAAC,aAAa,aAAU,EAAE,UAAC,KAAK;YACnD,IAAA,KAAmB,KAAK,CAAC,MAAM,EAA7B,KAAK,WAAA,EAAE,KAAK,WAAiB,CAAC;YACtC,UAAU,CAAC;gBACP,IAAI,KAAK,KAAK,KAAI,CAAC,IAAI,CAAC,KAAK,EAAE;oBAC3B,KAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;iBAClC;aACJ,EAAE,KAAK,CAAC,CAAC;SACb,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAI,QAAQ,CAAC,UAAU,aAAU,EAAE,UAAC,KAAK;YAC9C,IAAA,KAAK,GAAK,KAAK,CAAC,MAAM,MAAjB,CAAkB;YAC/B,UAAU,CAAC;gBACP,IAAM,KAAK,GAAG,KAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAC5C,IAAI,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;oBAC/B,KAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;iBAClC;aACJ,CAAC,CAAC;SACN,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAI,QAAQ,CAAC,WAAW,aAAU,EAAE,UAAC,KAAK;YAC/C,IAAA,KAAK,GAAK,KAAK,CAAC,MAAM,MAAjB,CAAkB;YAC/B,UAAU,CAAC;gBACP,IAAM,KAAK,GAAG,KAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAC5C,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;aACxC,CAAC,CAAC;SACN,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAI,QAAQ,CAAC,eAAe,aAAU,EAAE,UAAC,KAAK;YAC3D,KAAI,CAAC,kBAAkB,CAAC,KAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC5C,CAAC,CAAC;KACN;IAEO,yCAAe,GAAvB,UACI,KAAa,EACb,IAAgB,EAChB,aAAyB;QAEzB,IAAM,aAAa,GAAG,IAAI,CAAC,IAAI;aAC1B,YAAY,CAAC,KAAK,CAAC;aACnB,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACvC,IAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACpE,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAK,IAAI,CAAC,KAAK,OAAI,CAAC,CAAC,GAAG,CAAC,MAAM,EAAK,IAAI,CAAC,IAAI,OAAI,CAAC,CAAC;QACvE,IAAM,WAAW,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC;QAChE,IAAM,MAAM,GAAG,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;QACvE,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAK,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,OAAI,CAAC,CAAC;KACzE;IAEO,4CAAkB,GAA1B,UAA2B,KAAa;QACpC,IAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;YAC9B,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI;iBACjB,YAAY,CAAC,KAAK,CAAC;iBACnB,IAAI,CAAC,YAAY,CAAC;iBAClB,GAAG,EAAE;iBACL,qBAAqB,EAAE,CAAC;YAC7B,IAAM,aAAa,GAAG,IAAI,CAAC,IAAI;iBAC1B,YAAY,CAAC,KAAK,CAAC;iBACnB,GAAG,EAAE;iBACL,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;YACjD,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;SACrC;KACJ;IAED,iCAAO,GAAP;QACI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;KAClC;IACL,sBAAC;AAAD,CAAC;;"} \ No newline at end of file diff --git a/assets/lightGallery/plugins/relativeCaption/lg-relative-caption.min.js b/assets/lightGallery/plugins/relativeCaption/lg-relative-caption.min.js new file mode 100644 index 0000000..d2e823a --- /dev/null +++ b/assets/lightGallery/plugins/relativeCaption/lg-relative-caption.min.js @@ -0,0 +1,8 @@ +/** + * lightgallery | 2.9.0 | October 1st 2025 + * http://www.lightgalleryjs.com/ + * Copyright (c) 2020 Sachin Neravath; + * @license GPLv3 + */ + +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).lgRelativeCaption=e()}(this,(function(){"use strict";var t=function(){return(t=Object.assign||function(t){for(var e,i=1,o=arguments.length;i {\n * pluginInstance = event.detail.instance;\n * });\n * lightGallery(lg);\n * @see
Methods\n */\nexport interface InitDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired when the slide content has been inserted into it's slide container.\n * @name lgAfterAppendSlide\n * @method onAfterAppendSlide\n */\nexport interface AfterAppendSlideEventDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired immediately before opening the gallery\n * @name lgBeforeOpen\n * @method onBeforeOpen\n */\nexport interface BeforeOpenDetail {}\n\n/**\n * Fired immediately after opening the gallery\n * @name lgAfterOpen\n * @method onAfterOpen\n */\nexport interface AfterOpenDetail {}\n\n/**\n * Fired once the media inside the slide has been completely loaded .\n * @name lgSlideItemLoad\n * @method onSlideItemLoad\n */\nexport interface SlideItemLoadDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * For the first slide, lightGallery adds some delay for displaying the loaded slide item.\n * This delay is required for the transition effect when the slide item is displayed\n * Respect the delay when you use this event\n */\n delay: number;\n\n // Will be true for the first slide\n isFirstSlide: boolean;\n}\n\n/**\n * Fired immediately before each slide transition.\n * @name lgBeforeSlide\n * @method onBeforeSlide\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action before each slide transition\n * lg.addEventListener('lgBeforeSlide', (event) => {\n * const { index, prevIndex } = event.detail;\n * alert(index, prevIndex);\n * });\n * lightGallery(lg);\n */\nexport interface BeforeSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired immediately after each slide transition.\n * @name lgAfterSlide\n * @method onAfterSlide\n */\nexport interface AfterSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired when the video poster is clicked.\n * @name lgPosterClick\n * @method onPosterClick\n */\nexport interface PosterClickDetail {}\n\n/**\n * Fired when the drag event to move to different slide starts.\n * @name lgDragStart\n * @method onDragStart\n */\nexport interface DragStartDetail {}\n\n/**\n * Fired periodically during the drag operation.\n * @name lgDragMove\n * @method onDragMove\n */\nexport interface DragMoveDetail {}\n\n/**\n * Fired when the user has finished the drag operation\n * @name lgDragEnd\n * @method onDragEnd\n */\nexport interface DragEndDetail {}\n\n/**\n * Fired immediately before the start of the close process.\n * @name lgBeforeClose\n * @method onBeforeClose\n */\nexport interface BeforeCloseDetail {}\n\n/**\n * Fired immediately once lightGallery is closed.\n * @name lgAfterClose\n * @method onAfterClose\n */\nexport interface AfterCloseDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired immediately before each \"next\" slide transition\n * @name lgBeforeNextSlide\n * @method onBeforeNextSlide\n */\nexport interface BeforeNextSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired immediately before each \"prev\" slide transition\n * @name lgBeforePrevSlide\n * @method onBeforePrevSlide\n */\nexport interface BeforePrevSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired when the sub-html content (ex : title/ description) has been appended into the slide.\n * @name lgAfterAppendSubHtml\n * @method onAfterAppendSubHtml\n */\nexport interface AfterAppendSubHtmlDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the lightGallery container has been resized.\n * @name lgContainerResize\n * @method onContainerResize\n */\nexport interface ContainerResizeDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when lightGallery detects video slide\n * @name lgHasVideo\n * @method onHasVideo\n */\nexport interface HasVideoDetail {\n /**\n * Index of the slide,\n */\n index: number;\n /**\n * Video source\n */\n src: string;\n /**\n * HTML5 video source if available\n *

\n HTML5 video source = source: {\n src: string;\n type: string;\n }[];\n attributes: HTMLVideoElement;\n *

\n */\n html5Video: VideoSource;\n /**\n * True if video has poster\n */\n hasPoster: boolean;\n}\n\n/**\n * Fired when the image is rotated in anticlockwise direction\n * @name lgRotateLeft\n * @method onRotateLeft\n */\nexport interface RotateLeftDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is rotated in clockwise direction\n * @name lgRotateRight\n * @method onRotateRight\n */\nexport interface RotateRightDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped horizontally\n * @name lgFlipHorizontal\n * @method onFlipHorizontal\n */\nexport interface FlipHorizontalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped vertically\n * @name lgFlipVertical\n * @method onFlipVertical\n */\nexport interface FlipVerticalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n","export interface RelativeCaptionSettings {\n /**\n * Enable/Disable relative captions\n */\n relativeCaption: boolean;\n}\n\nexport const relativeCaptionSettings: RelativeCaptionSettings = {\n relativeCaption: false,\n};\n","/**\n * lightGallery caption for placing captions relative to the image\n */\n\nimport { lGEvents } from '../../lg-events';\nimport { LightGallerySettings } from '../../lg-settings';\nimport { LightGallery } from '../../lightgallery';\nimport {\n RelativeCaptionSettings,\n relativeCaptionSettings,\n} from './lg-relative-caption-settings';\n\nexport default class RelativeCaption {\n core: LightGallery;\n settings: RelativeCaptionSettings;\n constructor(instance: LightGallery) {\n // get lightGallery core plugin instance\n this.core = instance;\n\n // Override some of lightGallery default settings\n const defaultSettings: Partial = {\n addClass: this.core.settings.addClass + ' lg-relative-caption',\n };\n\n this.core.settings = { ...this.core.settings, ...defaultSettings };\n\n // extend module default settings with lightGallery core settings\n this.settings = {\n ...relativeCaptionSettings,\n ...this.core.settings,\n ...defaultSettings,\n };\n\n return this;\n }\n\n init(): void {\n if (!this.settings.relativeCaption) {\n return;\n }\n this.core.LGel.on(`${lGEvents.slideItemLoad}.caption`, (event) => {\n const { index, delay } = event.detail;\n setTimeout(() => {\n if (index === this.core.index) {\n this.setRelativeCaption(index);\n }\n }, delay);\n });\n this.core.LGel.on(`${lGEvents.afterSlide}.caption`, (event) => {\n const { index } = event.detail;\n setTimeout(() => {\n const slide = this.core.getSlideItem(index);\n if (slide.hasClass('lg-complete')) {\n this.setRelativeCaption(index);\n }\n });\n });\n this.core.LGel.on(`${lGEvents.beforeSlide}.caption`, (event) => {\n const { index } = event.detail;\n setTimeout(() => {\n const slide = this.core.getSlideItem(index);\n slide.removeClass('lg-show-caption');\n });\n });\n this.core.LGel.on(`${lGEvents.containerResize}.caption`, (event) => {\n this.setRelativeCaption(this.core.index);\n });\n }\n\n private setCaptionStyle(\n index: number,\n rect: ClientRect,\n slideWrapRect: ClientRect,\n ) {\n const $subHtmlInner = this.core\n .getSlideItem(index)\n .find('.lg-relative-caption-item');\n const $subHtml = this.core.getSlideItem(index).find('.lg-sub-html');\n $subHtml.css('width', `${rect.width}px`).css('left', `${rect.left}px`);\n const subHtmlRect = $subHtmlInner.get().getBoundingClientRect();\n const bottom = slideWrapRect.bottom - rect.bottom - subHtmlRect.height;\n $subHtml.css('top', `auto`).css('bottom', `${Math.max(bottom, 0)}px`);\n }\n\n private setRelativeCaption(index: number) {\n const slide = this.core.getSlideItem(index);\n if (slide.hasClass('lg-current')) {\n const rect = this.core\n .getSlideItem(index)\n .find('.lg-object')\n .get()\n .getBoundingClientRect();\n const slideWrapRect = this.core\n .getSlideItem(index)\n .get()\n .getBoundingClientRect();\n this.setCaptionStyle(index, rect, slideWrapRect);\n slide.addClass('lg-show-caption');\n }\n }\n\n destroy(): void {\n this.core.LGel.off('.caption');\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGA;;;;;IAKO,IAAM,QAAQ,GAEjB;QACA,gBAAgB,EAAE,oBAAoB;QACtC,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,YAAY;QACtB,eAAe,EAAE,mBAAmB;QACpC,YAAY,EAAE,gBAAgB;QAC9B,kBAAkB,EAAE,sBAAsB;QAC1C,UAAU,EAAE,cAAc;QAC1B,SAAS,EAAE,aAAa;QACxB,aAAa,EAAE,iBAAiB;QAChC,WAAW,EAAE,eAAe;QAC5B,UAAU,EAAE,cAAc;QAC1B,WAAW,EAAE,eAAe;QAC5B,SAAS,EAAE,aAAa;QACxB,QAAQ,EAAE,YAAY;QACtB,OAAO,EAAE,WAAW;QACpB,eAAe,EAAE,mBAAmB;QACpC,eAAe,EAAE,mBAAmB;QACpC,WAAW,EAAE,eAAe;QAC5B,UAAU,EAAE,cAAc;QAC1B,UAAU,EAAE,cAAc;QAC1B,WAAW,EAAE,eAAe;QAC5B,cAAc,EAAE,kBAAkB;QAClC,YAAY,EAAE,gBAAgB;QAC9B,QAAQ,EAAE,YAAY;QACtB,aAAa,EAAE,iBAAiB;QAChC,YAAY,EAAE,gBAAgB;KACjC;;IC9BM,IAAM,uBAAuB,GAA4B;QAC5D,eAAe,EAAE,KAAK;KACzB;;ICTD;;;;QAeI,yBAAY,QAAsB;;YAE9B,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;;YAGrB,IAAM,eAAe,GAAkC;gBACnD,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,sBAAsB;aACjE,CAAC;YAEF,IAAI,CAAC,IAAI,CAAC,QAAQ,yBAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAK,eAAe,CAAE,CAAC;;YAGnE,IAAI,CAAC,QAAQ,kCACN,uBAAuB,GACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,GAClB,eAAe,CACrB,CAAC;YAEF,OAAO,IAAI,CAAC;SACf;QAED,8BAAI,GAAJ;YAAA,iBA+BC;YA9BG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;gBAChC,OAAO;aACV;YACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAI,QAAQ,CAAC,aAAa,aAAU,EAAE,UAAC,KAAK;gBACnD,IAAA,KAAmB,KAAK,CAAC,MAAM,EAA7B,KAAK,WAAA,EAAE,KAAK,WAAiB,CAAC;gBACtC,UAAU,CAAC;oBACP,IAAI,KAAK,KAAK,KAAI,CAAC,IAAI,CAAC,KAAK,EAAE;wBAC3B,KAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;qBAClC;iBACJ,EAAE,KAAK,CAAC,CAAC;aACb,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAI,QAAQ,CAAC,UAAU,aAAU,EAAE,UAAC,KAAK;gBAC9C,IAAA,KAAK,GAAK,KAAK,CAAC,MAAM,MAAjB,CAAkB;gBAC/B,UAAU,CAAC;oBACP,IAAM,KAAK,GAAG,KAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;oBAC5C,IAAI,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;wBAC/B,KAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;qBAClC;iBACJ,CAAC,CAAC;aACN,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAI,QAAQ,CAAC,WAAW,aAAU,EAAE,UAAC,KAAK;gBAC/C,IAAA,KAAK,GAAK,KAAK,CAAC,MAAM,MAAjB,CAAkB;gBAC/B,UAAU,CAAC;oBACP,IAAM,KAAK,GAAG,KAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;oBAC5C,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;iBACxC,CAAC,CAAC;aACN,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAI,QAAQ,CAAC,eAAe,aAAU,EAAE,UAAC,KAAK;gBAC3D,KAAI,CAAC,kBAAkB,CAAC,KAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC5C,CAAC,CAAC;SACN;QAEO,yCAAe,GAAvB,UACI,KAAa,EACb,IAAgB,EAChB,aAAyB;YAEzB,IAAM,aAAa,GAAG,IAAI,CAAC,IAAI;iBAC1B,YAAY,CAAC,KAAK,CAAC;iBACnB,IAAI,CAAC,2BAA2B,CAAC,CAAC;YACvC,IAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACpE,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAK,IAAI,CAAC,KAAK,OAAI,CAAC,CAAC,GAAG,CAAC,MAAM,EAAK,IAAI,CAAC,IAAI,OAAI,CAAC,CAAC;YACvE,IAAM,WAAW,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC;YAChE,IAAM,MAAM,GAAG,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;YACvE,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAK,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,OAAI,CAAC,CAAC;SACzE;QAEO,4CAAkB,GAA1B,UAA2B,KAAa;YACpC,IAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAC5C,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;gBAC9B,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI;qBACjB,YAAY,CAAC,KAAK,CAAC;qBACnB,IAAI,CAAC,YAAY,CAAC;qBAClB,GAAG,EAAE;qBACL,qBAAqB,EAAE,CAAC;gBAC7B,IAAM,aAAa,GAAG,IAAI,CAAC,IAAI;qBAC1B,YAAY,CAAC,KAAK,CAAC;qBACnB,GAAG,EAAE;qBACL,qBAAqB,EAAE,CAAC;gBAC7B,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;gBACjD,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;aACrC;SACJ;QAED,iCAAO,GAAP;YACI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;SAClC;QACL,sBAAC;IAAD,CAAC;;;;"} \ No newline at end of file diff --git a/assets/lightGallery/plugins/relativeCaption/package.json b/assets/lightGallery/plugins/relativeCaption/package.json new file mode 100644 index 0000000..eb43c90 --- /dev/null +++ b/assets/lightGallery/plugins/relativeCaption/package.json @@ -0,0 +1,7 @@ +{ + "name": "lightgallery/plugins/relativeCaption", + "private": true, + "main": "lg-relative-caption.umd.js", + "module": "lg-relative-caption.es5.js", + "typings": "lg-relative-caption.d.ts" +} \ No newline at end of file diff --git a/assets/lightGallery/plugins/rotate/lg-rotate-settings.d.ts b/assets/lightGallery/plugins/rotate/lg-rotate-settings.d.ts new file mode 100644 index 0000000..0230d6a --- /dev/null +++ b/assets/lightGallery/plugins/rotate/lg-rotate-settings.d.ts @@ -0,0 +1,45 @@ +export interface RotateStrings { + flipVertical: string; + flipHorizontal: string; + rotateLeft: string; + rotateRight: string; +} +export interface RotateSettings { + /** + * Enable/Disable rotate option + */ + rotate: boolean; + /** + * Rotate speed in milliseconds + */ + rotateSpeed: number; + /** + * Enable rotate left. + */ + rotateLeft: boolean; + /** + * Enable rotate right. + */ + rotateRight: boolean; + /** + * Enable flip horizontal. + */ + flipHorizontal: boolean; + /** + * Enable flip vertical. + */ + flipVertical: boolean; + /** + * Custom translation strings for aria-labels + */ + rotatePluginStrings: RotateStrings; +} +export declare const rotateSettings: { + rotate: boolean; + rotateSpeed: number; + rotateLeft: boolean; + rotateRight: boolean; + flipHorizontal: boolean; + flipVertical: boolean; + rotatePluginStrings: RotateStrings; +}; diff --git a/assets/lightGallery/plugins/rotate/lg-rotate.d.ts b/assets/lightGallery/plugins/rotate/lg-rotate.d.ts new file mode 100644 index 0000000..6d16a15 --- /dev/null +++ b/assets/lightGallery/plugins/rotate/lg-rotate.d.ts @@ -0,0 +1,24 @@ +import { LgQuery } from '../../lgQuery'; +import { LightGallery } from '../../lightgallery'; +import { RotateSettings } from './lg-rotate-settings'; +export default class Rotate { + core: LightGallery; + settings: RotateSettings; + rotateValuesList: { + [key: string]: any; + }; + private $LG; + constructor(instance: LightGallery, $LG: LgQuery); + buildTemplates(): void; + init(): void; + applyStyles(): void; + rotateLeft(): void; + rotateRight(): void; + getCurrentRotation(el: HTMLElement): number; + flipHorizontal(): void; + flipVertical(): void; + triggerEvents(event: string, detail: any): void; + isImageOrientationChanged(): boolean; + closeGallery(): void; + destroy(): void; +} diff --git a/assets/lightGallery/plugins/rotate/lg-rotate.es5.js b/assets/lightGallery/plugins/rotate/lg-rotate.es5.js new file mode 100644 index 0000000..cad4da6 --- /dev/null +++ b/assets/lightGallery/plugins/rotate/lg-rotate.es5.js @@ -0,0 +1,274 @@ +/*! + * lightgallery | 2.9.0 | October 1st 2025 + * http://www.lightgalleryjs.com/ + * Copyright (c) 2020 Sachin Neravath; + * @license GPLv3 + */ + +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ + +var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; + +/** + * List of lightGallery events + * All events should be documented here + * Below interfaces are used to build the website documentations + * */ +var lGEvents = { + afterAppendSlide: 'lgAfterAppendSlide', + init: 'lgInit', + hasVideo: 'lgHasVideo', + containerResize: 'lgContainerResize', + updateSlides: 'lgUpdateSlides', + afterAppendSubHtml: 'lgAfterAppendSubHtml', + beforeOpen: 'lgBeforeOpen', + afterOpen: 'lgAfterOpen', + slideItemLoad: 'lgSlideItemLoad', + beforeSlide: 'lgBeforeSlide', + afterSlide: 'lgAfterSlide', + posterClick: 'lgPosterClick', + dragStart: 'lgDragStart', + dragMove: 'lgDragMove', + dragEnd: 'lgDragEnd', + beforeNextSlide: 'lgBeforeNextSlide', + beforePrevSlide: 'lgBeforePrevSlide', + beforeClose: 'lgBeforeClose', + afterClose: 'lgAfterClose', + rotateLeft: 'lgRotateLeft', + rotateRight: 'lgRotateRight', + flipHorizontal: 'lgFlipHorizontal', + flipVertical: 'lgFlipVertical', + autoplay: 'lgAutoplay', + autoplayStart: 'lgAutoplayStart', + autoplayStop: 'lgAutoplayStop', +}; + +var rotateSettings = { + rotate: true, + rotateSpeed: 400, + rotateLeft: true, + rotateRight: true, + flipHorizontal: true, + flipVertical: true, + rotatePluginStrings: { + flipVertical: 'Flip vertical', + flipHorizontal: 'Flip horizontal', + rotateLeft: 'Rotate left', + rotateRight: 'Rotate right', + }, +}; + +var Rotate = /** @class */ (function () { + function Rotate(instance, $LG) { + // get lightGallery core plugin instance + this.core = instance; + this.$LG = $LG; + // extend module default settings with lightGallery core settings + this.settings = __assign(__assign({}, rotateSettings), this.core.settings); + return this; + } + Rotate.prototype.buildTemplates = function () { + var rotateIcons = ''; + if (this.settings.flipVertical) { + rotateIcons += ""; + } + if (this.settings.flipHorizontal) { + rotateIcons += ""; + } + if (this.settings.rotateLeft) { + rotateIcons += ""; + } + if (this.settings.rotateRight) { + rotateIcons += ""; + } + this.core.$toolbar.append(rotateIcons); + }; + Rotate.prototype.init = function () { + var _this = this; + if (!this.settings.rotate) { + return; + } + this.buildTemplates(); + // Save rotate config for each item to persist its rotate, flip values + // even after navigating to diferent slides + this.rotateValuesList = {}; + // event triggered after appending slide content + this.core.LGel.on(lGEvents.slideItemLoad + ".rotate", function (event) { + var index = event.detail.index; + var rotateEl = _this.core + .getSlideItem(index) + .find('.lg-img-rotate') + .get(); + if (!rotateEl) { + var imageWrap = _this.core + .getSlideItem(index) + .find('.lg-object') + .first(); + imageWrap.wrap('lg-img-rotate'); + //this.rotateValuesList[this.core.index] + _this.core + .getSlideItem(_this.core.index) + .find('.lg-img-rotate') + .css('transition-duration', _this.settings.rotateSpeed + 'ms'); + } + }); + this.core.outer + .find('#lg-rotate-left') + .first() + .on('click.lg', this.rotateLeft.bind(this)); + this.core.outer + .find('#lg-rotate-right') + .first() + .on('click.lg', this.rotateRight.bind(this)); + this.core.outer + .find('#lg-flip-hor') + .first() + .on('click.lg', this.flipHorizontal.bind(this)); + this.core.outer + .find('#lg-flip-ver') + .first() + .on('click.lg', this.flipVertical.bind(this)); + // Reset rotate on slide change + this.core.LGel.on(lGEvents.beforeSlide + ".rotate", function (event) { + if (!_this.rotateValuesList[event.detail.index]) { + _this.rotateValuesList[event.detail.index] = { + rotate: 0, + flipHorizontal: 1, + flipVertical: 1, + }; + } + }); + }; + Rotate.prototype.applyStyles = function () { + var $image = this.core + .getSlideItem(this.core.index) + .find('.lg-img-rotate') + .first(); + $image.css('transform', 'rotate(' + + this.rotateValuesList[this.core.index].rotate + + 'deg)' + + ' scale3d(' + + this.rotateValuesList[this.core.index].flipHorizontal + + ', ' + + this.rotateValuesList[this.core.index].flipVertical + + ', 1)'); + }; + Rotate.prototype.rotateLeft = function () { + this.rotateValuesList[this.core.index].rotate -= 90; + this.applyStyles(); + this.triggerEvents(lGEvents.rotateLeft, { + rotate: this.rotateValuesList[this.core.index].rotate, + }); + }; + Rotate.prototype.rotateRight = function () { + this.rotateValuesList[this.core.index].rotate += 90; + this.applyStyles(); + this.triggerEvents(lGEvents.rotateRight, { + rotate: this.rotateValuesList[this.core.index].rotate, + }); + }; + Rotate.prototype.getCurrentRotation = function (el) { + if (!el) { + return 0; + } + var st = this.$LG(el).style(); + var tm = st.getPropertyValue('-webkit-transform') || + st.getPropertyValue('-moz-transform') || + st.getPropertyValue('-ms-transform') || + st.getPropertyValue('-o-transform') || + st.getPropertyValue('transform') || + 'none'; + if (tm !== 'none') { + var values = tm.split('(')[1].split(')')[0].split(','); + if (values) { + var angle = Math.round(Math.atan2(values[1], values[0]) * (180 / Math.PI)); + return angle < 0 ? angle + 360 : angle; + } + } + return 0; + }; + Rotate.prototype.flipHorizontal = function () { + var rotateEl = this.core + .getSlideItem(this.core.index) + .find('.lg-img-rotate') + .first() + .get(); + var currentRotation = this.getCurrentRotation(rotateEl); + var rotateAxis = 'flipHorizontal'; + if (currentRotation === 90 || currentRotation === 270) { + rotateAxis = 'flipVertical'; + } + this.rotateValuesList[this.core.index][rotateAxis] *= -1; + this.applyStyles(); + this.triggerEvents(lGEvents.flipHorizontal, { + flipHorizontal: this.rotateValuesList[this.core.index][rotateAxis], + }); + }; + Rotate.prototype.flipVertical = function () { + var rotateEl = this.core + .getSlideItem(this.core.index) + .find('.lg-img-rotate') + .first() + .get(); + var currentRotation = this.getCurrentRotation(rotateEl); + var rotateAxis = 'flipVertical'; + if (currentRotation === 90 || currentRotation === 270) { + rotateAxis = 'flipHorizontal'; + } + this.rotateValuesList[this.core.index][rotateAxis] *= -1; + this.applyStyles(); + this.triggerEvents(lGEvents.flipVertical, { + flipVertical: this.rotateValuesList[this.core.index][rotateAxis], + }); + }; + Rotate.prototype.triggerEvents = function (event, detail) { + var _this = this; + setTimeout(function () { + _this.core.LGel.trigger(event, detail); + }, this.settings.rotateSpeed + 10); + }; + Rotate.prototype.isImageOrientationChanged = function () { + var rotateValue = this.rotateValuesList[this.core.index]; + var isRotated = Math.abs(rotateValue.rotate) % 360 !== 0; + var ifFlippedHor = rotateValue.flipHorizontal < 0; + var ifFlippedVer = rotateValue.flipVertical < 0; + return isRotated || ifFlippedHor || ifFlippedVer; + }; + Rotate.prototype.closeGallery = function () { + if (this.isImageOrientationChanged()) { + this.core.getSlideItem(this.core.index).css('opacity', 0); + } + this.rotateValuesList = {}; + }; + Rotate.prototype.destroy = function () { + // Unbind all events added by lightGallery rotate plugin + this.core.LGel.off('.lg.rotate'); + this.core.LGel.off('.rotate'); + }; + return Rotate; +}()); + +export default Rotate; +//# sourceMappingURL=lg-rotate.es5.js.map diff --git a/assets/lightGallery/plugins/rotate/lg-rotate.es5.js.map b/assets/lightGallery/plugins/rotate/lg-rotate.es5.js.map new file mode 100644 index 0000000..8729f5f --- /dev/null +++ b/assets/lightGallery/plugins/rotate/lg-rotate.es5.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lg-rotate.es5.js","sources":["../../../src/lg-events.ts","../../../src/plugins/rotate/lg-rotate-settings.ts","../../../src/plugins/rotate/lg-rotate.ts"],"sourcesContent":["import { LightGallery } from './lightgallery';\nimport { VideoSource } from './plugins/video/types';\n\n/**\n * List of lightGallery events\n * All events should be documented here\n * Below interfaces are used to build the website documentations\n * */\nexport const lGEvents: {\n [key: string]: string;\n} = {\n afterAppendSlide: 'lgAfterAppendSlide',\n init: 'lgInit',\n hasVideo: 'lgHasVideo',\n containerResize: 'lgContainerResize',\n updateSlides: 'lgUpdateSlides',\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\n beforeOpen: 'lgBeforeOpen',\n afterOpen: 'lgAfterOpen',\n slideItemLoad: 'lgSlideItemLoad',\n beforeSlide: 'lgBeforeSlide',\n afterSlide: 'lgAfterSlide',\n posterClick: 'lgPosterClick',\n dragStart: 'lgDragStart',\n dragMove: 'lgDragMove',\n dragEnd: 'lgDragEnd',\n beforeNextSlide: 'lgBeforeNextSlide',\n beforePrevSlide: 'lgBeforePrevSlide',\n beforeClose: 'lgBeforeClose',\n afterClose: 'lgAfterClose',\n rotateLeft: 'lgRotateLeft',\n rotateRight: 'lgRotateRight',\n flipHorizontal: 'lgFlipHorizontal',\n flipVertical: 'lgFlipVertical',\n autoplay: 'lgAutoplay',\n autoplayStart: 'lgAutoplayStart',\n autoplayStop: 'lgAutoplayStop',\n};\n\n// Follow the below format for the event documentation\n// @method is the method name when event is used with Angular/React components\n\n/**\n * Fired only once when lightGallery is initialized\n * @name lgInit\n * @method onInit\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action on lightGallery initialization.\n * // Init event returns the plugin instance that can be used to call any lightGalley public method\n * let pluginInstance = null;\n * lg.addEventListener('lgInit', (event) => {\n * pluginInstance = event.detail.instance;\n * });\n * lightGallery(lg);\n * @see
Methods\n */\nexport interface InitDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired when the slide content has been inserted into it's slide container.\n * @name lgAfterAppendSlide\n * @method onAfterAppendSlide\n */\nexport interface AfterAppendSlideEventDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired immediately before opening the gallery\n * @name lgBeforeOpen\n * @method onBeforeOpen\n */\nexport interface BeforeOpenDetail {}\n\n/**\n * Fired immediately after opening the gallery\n * @name lgAfterOpen\n * @method onAfterOpen\n */\nexport interface AfterOpenDetail {}\n\n/**\n * Fired once the media inside the slide has been completely loaded .\n * @name lgSlideItemLoad\n * @method onSlideItemLoad\n */\nexport interface SlideItemLoadDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * For the first slide, lightGallery adds some delay for displaying the loaded slide item.\n * This delay is required for the transition effect when the slide item is displayed\n * Respect the delay when you use this event\n */\n delay: number;\n\n // Will be true for the first slide\n isFirstSlide: boolean;\n}\n\n/**\n * Fired immediately before each slide transition.\n * @name lgBeforeSlide\n * @method onBeforeSlide\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action before each slide transition\n * lg.addEventListener('lgBeforeSlide', (event) => {\n * const { index, prevIndex } = event.detail;\n * alert(index, prevIndex);\n * });\n * lightGallery(lg);\n */\nexport interface BeforeSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired immediately after each slide transition.\n * @name lgAfterSlide\n * @method onAfterSlide\n */\nexport interface AfterSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired when the video poster is clicked.\n * @name lgPosterClick\n * @method onPosterClick\n */\nexport interface PosterClickDetail {}\n\n/**\n * Fired when the drag event to move to different slide starts.\n * @name lgDragStart\n * @method onDragStart\n */\nexport interface DragStartDetail {}\n\n/**\n * Fired periodically during the drag operation.\n * @name lgDragMove\n * @method onDragMove\n */\nexport interface DragMoveDetail {}\n\n/**\n * Fired when the user has finished the drag operation\n * @name lgDragEnd\n * @method onDragEnd\n */\nexport interface DragEndDetail {}\n\n/**\n * Fired immediately before the start of the close process.\n * @name lgBeforeClose\n * @method onBeforeClose\n */\nexport interface BeforeCloseDetail {}\n\n/**\n * Fired immediately once lightGallery is closed.\n * @name lgAfterClose\n * @method onAfterClose\n */\nexport interface AfterCloseDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired immediately before each \"next\" slide transition\n * @name lgBeforeNextSlide\n * @method onBeforeNextSlide\n */\nexport interface BeforeNextSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired immediately before each \"prev\" slide transition\n * @name lgBeforePrevSlide\n * @method onBeforePrevSlide\n */\nexport interface BeforePrevSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired when the sub-html content (ex : title/ description) has been appended into the slide.\n * @name lgAfterAppendSubHtml\n * @method onAfterAppendSubHtml\n */\nexport interface AfterAppendSubHtmlDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the lightGallery container has been resized.\n * @name lgContainerResize\n * @method onContainerResize\n */\nexport interface ContainerResizeDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when lightGallery detects video slide\n * @name lgHasVideo\n * @method onHasVideo\n */\nexport interface HasVideoDetail {\n /**\n * Index of the slide,\n */\n index: number;\n /**\n * Video source\n */\n src: string;\n /**\n * HTML5 video source if available\n *

\n HTML5 video source = source: {\n src: string;\n type: string;\n }[];\n attributes: HTMLVideoElement;\n *

\n */\n html5Video: VideoSource;\n /**\n * True if video has poster\n */\n hasPoster: boolean;\n}\n\n/**\n * Fired when the image is rotated in anticlockwise direction\n * @name lgRotateLeft\n * @method onRotateLeft\n */\nexport interface RotateLeftDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is rotated in clockwise direction\n * @name lgRotateRight\n * @method onRotateRight\n */\nexport interface RotateRightDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped horizontally\n * @name lgFlipHorizontal\n * @method onFlipHorizontal\n */\nexport interface FlipHorizontalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped vertically\n * @name lgFlipVertical\n * @method onFlipVertical\n */\nexport interface FlipVerticalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n","export interface RotateStrings {\n flipVertical: string;\n flipHorizontal: string;\n rotateLeft: string;\n rotateRight: string;\n}\n\nexport interface RotateSettings {\n /**\n * Enable/Disable rotate option\n */\n rotate: boolean;\n\n /**\n * Rotate speed in milliseconds\n */\n rotateSpeed: number;\n\n /**\n * Enable rotate left.\n */\n rotateLeft: boolean;\n\n /**\n * Enable rotate right.\n */\n rotateRight: boolean;\n\n /**\n * Enable flip horizontal.\n */\n flipHorizontal: boolean;\n\n /**\n * Enable flip vertical.\n */\n flipVertical: boolean;\n\n /**\n * Custom translation strings for aria-labels\n */\n rotatePluginStrings: RotateStrings;\n}\nexport const rotateSettings = {\n rotate: true,\n rotateSpeed: 400,\n rotateLeft: true,\n rotateRight: true,\n flipHorizontal: true,\n flipVertical: true,\n rotatePluginStrings: {\n flipVertical: 'Flip vertical',\n flipHorizontal: 'Flip horizontal',\n rotateLeft: 'Rotate left',\n rotateRight: 'Rotate right',\n } as RotateStrings,\n};\n","import { lGEvents } from '../../lg-events';\nimport { LgQuery } from '../../lgQuery';\nimport { LightGallery } from '../../lightgallery';\nimport { rotateSettings, RotateSettings } from './lg-rotate-settings';\n\nexport default class Rotate {\n core: LightGallery;\n settings: RotateSettings;\n rotateValuesList!: {\n [key: string]: any;\n };\n private $LG!: LgQuery;\n constructor(instance: LightGallery, $LG: LgQuery) {\n // get lightGallery core plugin instance\n this.core = instance;\n this.$LG = $LG;\n\n // extend module default settings with lightGallery core settings\n this.settings = {\n ...rotateSettings,\n ...this.core.settings,\n };\n\n return this;\n }\n buildTemplates(): void {\n let rotateIcons = '';\n if (this.settings.flipVertical) {\n rotateIcons += ``;\n }\n if (this.settings.flipHorizontal) {\n rotateIcons += ``;\n }\n if (this.settings.rotateLeft) {\n rotateIcons += ``;\n }\n if (this.settings.rotateRight) {\n rotateIcons += ``;\n }\n this.core.$toolbar.append(rotateIcons);\n }\n\n init(): void {\n if (!this.settings.rotate) {\n return;\n }\n this.buildTemplates();\n\n // Save rotate config for each item to persist its rotate, flip values\n // even after navigating to diferent slides\n this.rotateValuesList = {};\n\n // event triggered after appending slide content\n this.core.LGel.on(`${lGEvents.slideItemLoad}.rotate`, (event) => {\n const { index } = event.detail;\n\n const rotateEl = this.core\n .getSlideItem(index)\n .find('.lg-img-rotate')\n .get();\n if (!rotateEl) {\n const imageWrap = this.core\n .getSlideItem(index)\n .find('.lg-object')\n .first();\n\n imageWrap.wrap('lg-img-rotate');\n //this.rotateValuesList[this.core.index]\n this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-rotate')\n .css(\n 'transition-duration',\n this.settings.rotateSpeed + 'ms',\n );\n }\n });\n\n this.core.outer\n .find('#lg-rotate-left')\n .first()\n .on('click.lg', this.rotateLeft.bind(this));\n\n this.core.outer\n .find('#lg-rotate-right')\n .first()\n .on('click.lg', this.rotateRight.bind(this));\n\n this.core.outer\n .find('#lg-flip-hor')\n .first()\n .on('click.lg', this.flipHorizontal.bind(this));\n\n this.core.outer\n .find('#lg-flip-ver')\n .first()\n .on('click.lg', this.flipVertical.bind(this));\n\n // Reset rotate on slide change\n this.core.LGel.on(`${lGEvents.beforeSlide}.rotate`, (event) => {\n if (!this.rotateValuesList[event.detail.index]) {\n this.rotateValuesList[event.detail.index] = {\n rotate: 0,\n flipHorizontal: 1,\n flipVertical: 1,\n };\n }\n });\n }\n\n applyStyles(): void {\n const $image = this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-rotate')\n .first();\n\n $image.css(\n 'transform',\n 'rotate(' +\n this.rotateValuesList[this.core.index].rotate +\n 'deg)' +\n ' scale3d(' +\n this.rotateValuesList[this.core.index].flipHorizontal +\n ', ' +\n this.rotateValuesList[this.core.index].flipVertical +\n ', 1)',\n );\n }\n\n rotateLeft(): void {\n this.rotateValuesList[this.core.index].rotate -= 90;\n this.applyStyles();\n this.triggerEvents(lGEvents.rotateLeft, {\n rotate: this.rotateValuesList[this.core.index].rotate,\n });\n }\n\n rotateRight(): void {\n this.rotateValuesList[this.core.index].rotate += 90;\n this.applyStyles();\n this.triggerEvents(lGEvents.rotateRight, {\n rotate: this.rotateValuesList[this.core.index].rotate,\n });\n }\n\n getCurrentRotation(el: HTMLElement): number {\n if (!el) {\n return 0;\n }\n const st = this.$LG(el).style();\n const tm =\n st.getPropertyValue('-webkit-transform') ||\n st.getPropertyValue('-moz-transform') ||\n st.getPropertyValue('-ms-transform') ||\n st.getPropertyValue('-o-transform') ||\n st.getPropertyValue('transform') ||\n 'none';\n if (tm !== 'none') {\n const values = tm.split('(')[1].split(')')[0].split(',') as any;\n if (values) {\n const angle = Math.round(\n Math.atan2(values[1], values[0]) * (180 / Math.PI),\n );\n return angle < 0 ? angle + 360 : angle;\n }\n }\n return 0;\n }\n\n flipHorizontal(): void {\n const rotateEl = this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-rotate')\n .first()\n .get();\n const currentRotation = this.getCurrentRotation(rotateEl);\n let rotateAxis = 'flipHorizontal';\n if (currentRotation === 90 || currentRotation === 270) {\n rotateAxis = 'flipVertical';\n }\n this.rotateValuesList[this.core.index][rotateAxis] *= -1;\n this.applyStyles();\n this.triggerEvents(lGEvents.flipHorizontal, {\n flipHorizontal: this.rotateValuesList[this.core.index][rotateAxis],\n });\n }\n\n flipVertical(): void {\n const rotateEl = this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-rotate')\n .first()\n .get();\n const currentRotation = this.getCurrentRotation(rotateEl);\n let rotateAxis = 'flipVertical';\n if (currentRotation === 90 || currentRotation === 270) {\n rotateAxis = 'flipHorizontal';\n }\n this.rotateValuesList[this.core.index][rotateAxis] *= -1;\n\n this.applyStyles();\n\n this.triggerEvents(lGEvents.flipVertical, {\n flipVertical: this.rotateValuesList[this.core.index][rotateAxis],\n });\n }\n\n triggerEvents(event: string, detail: any): void {\n setTimeout(() => {\n this.core.LGel.trigger(event, detail);\n }, this.settings.rotateSpeed + 10);\n }\n\n isImageOrientationChanged(): boolean {\n const rotateValue = this.rotateValuesList[this.core.index];\n const isRotated = Math.abs(rotateValue.rotate) % 360 !== 0;\n const ifFlippedHor = rotateValue.flipHorizontal < 0;\n const ifFlippedVer = rotateValue.flipVertical < 0;\n return isRotated || ifFlippedHor || ifFlippedVer;\n }\n\n closeGallery(): void {\n if (this.isImageOrientationChanged()) {\n this.core.getSlideItem(this.core.index).css('opacity', 0);\n }\n this.rotateValuesList = {};\n }\n\n destroy(): void {\n // Unbind all events added by lightGallery rotate plugin\n this.core.LGel.off('.lg.rotate');\n this.core.LGel.off('.rotate');\n }\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/assets/lightGallery/plugins/rotate/lg-rotate.min.js b/assets/lightGallery/plugins/rotate/lg-rotate.min.js new file mode 100644 index 0000000..9b3d4a8 --- /dev/null +++ b/assets/lightGallery/plugins/rotate/lg-rotate.min.js @@ -0,0 +1,8 @@ +/** + * lightgallery | 2.9.0 | October 1st 2025 + * http://www.lightgalleryjs.com/ + * Copyright (c) 2020 Sachin Neravath; + * @license GPLv3 + */ + +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).lgRotate=e()}(this,(function(){"use strict";var t=function(){return(t=Object.assign||function(t){for(var e,i=1,o=arguments.length;i'),this.settings.flipHorizontal&&(t+=''),this.settings.rotateLeft&&(t+=''),this.settings.rotateRight&&(t+=''),this.core.$toolbar.append(t)},n.prototype.init=function(){var t=this;this.settings.rotate&&(this.buildTemplates(),this.rotateValuesList={},this.core.LGel.on(e+".rotate",(function(e){var i=e.detail.index;t.core.getSlideItem(i).find(".lg-img-rotate").get()||(t.core.getSlideItem(i).find(".lg-object").first().wrap("lg-img-rotate"),t.core.getSlideItem(t.core.index).find(".lg-img-rotate").css("transition-duration",t.settings.rotateSpeed+"ms"))})),this.core.outer.find("#lg-rotate-left").first().on("click.lg",this.rotateLeft.bind(this)),this.core.outer.find("#lg-rotate-right").first().on("click.lg",this.rotateRight.bind(this)),this.core.outer.find("#lg-flip-hor").first().on("click.lg",this.flipHorizontal.bind(this)),this.core.outer.find("#lg-flip-ver").first().on("click.lg",this.flipVertical.bind(this)),this.core.LGel.on(i+".rotate",(function(e){t.rotateValuesList[e.detail.index]||(t.rotateValuesList[e.detail.index]={rotate:0,flipHorizontal:1,flipVertical:1})})))},n.prototype.applyStyles=function(){this.core.getSlideItem(this.core.index).find(".lg-img-rotate").first().css("transform","rotate("+this.rotateValuesList[this.core.index].rotate+"deg) scale3d("+this.rotateValuesList[this.core.index].flipHorizontal+", "+this.rotateValuesList[this.core.index].flipVertical+", 1)")},n.prototype.rotateLeft=function(){this.rotateValuesList[this.core.index].rotate-=90,this.applyStyles(),this.triggerEvents(o,{rotate:this.rotateValuesList[this.core.index].rotate})},n.prototype.rotateRight=function(){this.rotateValuesList[this.core.index].rotate+=90,this.applyStyles(),this.triggerEvents(r,{rotate:this.rotateValuesList[this.core.index].rotate})},n.prototype.getCurrentRotation=function(t){if(!t)return 0;var e=this.$LG(t).style(),i=e.getPropertyValue("-webkit-transform")||e.getPropertyValue("-moz-transform")||e.getPropertyValue("-ms-transform")||e.getPropertyValue("-o-transform")||e.getPropertyValue("transform")||"none";if("none"!==i){var o=i.split("(")[1].split(")")[0].split(",");if(o){var r=Math.round(Math.atan2(o[1],o[0])*(180/Math.PI));return r<0?r+360:r}}return 0},n.prototype.flipHorizontal=function(){var t=this.core.getSlideItem(this.core.index).find(".lg-img-rotate").first().get(),e=this.getCurrentRotation(t),i="flipHorizontal";90!==e&&270!==e||(i="flipVertical"),this.rotateValuesList[this.core.index][i]*=-1,this.applyStyles(),this.triggerEvents(s,{flipHorizontal:this.rotateValuesList[this.core.index][i]})},n.prototype.flipVertical=function(){var t=this.core.getSlideItem(this.core.index).find(".lg-img-rotate").first().get(),e=this.getCurrentRotation(t),i="flipVertical";90!==e&&270!==e||(i="flipHorizontal"),this.rotateValuesList[this.core.index][i]*=-1,this.applyStyles(),this.triggerEvents(a,{flipVertical:this.rotateValuesList[this.core.index][i]})},n.prototype.triggerEvents=function(t,e){var i=this;setTimeout((function(){i.core.LGel.trigger(t,e)}),this.settings.rotateSpeed+10)},n.prototype.isImageOrientationChanged=function(){var t=this.rotateValuesList[this.core.index],e=Math.abs(t.rotate)%360!=0,i=t.flipHorizontal<0,o=t.flipVertical<0;return e||i||o},n.prototype.closeGallery=function(){this.isImageOrientationChanged()&&this.core.getSlideItem(this.core.index).css("opacity",0),this.rotateValuesList={}},n.prototype.destroy=function(){this.core.LGel.off(".lg.rotate"),this.core.LGel.off(".rotate")},n}()})); diff --git a/assets/lightGallery/plugins/rotate/lg-rotate.umd.js b/assets/lightGallery/plugins/rotate/lg-rotate.umd.js new file mode 100644 index 0000000..85508af --- /dev/null +++ b/assets/lightGallery/plugins/rotate/lg-rotate.umd.js @@ -0,0 +1,282 @@ +/*! + * lightgallery | 2.9.0 | October 1st 2025 + * http://www.lightgalleryjs.com/ + * Copyright (c) 2020 Sachin Neravath; + * @license GPLv3 + */ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lgRotate = factory()); +}(this, (function () { 'use strict'; + + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + ***************************************************************************** */ + + var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + + /** + * List of lightGallery events + * All events should be documented here + * Below interfaces are used to build the website documentations + * */ + var lGEvents = { + afterAppendSlide: 'lgAfterAppendSlide', + init: 'lgInit', + hasVideo: 'lgHasVideo', + containerResize: 'lgContainerResize', + updateSlides: 'lgUpdateSlides', + afterAppendSubHtml: 'lgAfterAppendSubHtml', + beforeOpen: 'lgBeforeOpen', + afterOpen: 'lgAfterOpen', + slideItemLoad: 'lgSlideItemLoad', + beforeSlide: 'lgBeforeSlide', + afterSlide: 'lgAfterSlide', + posterClick: 'lgPosterClick', + dragStart: 'lgDragStart', + dragMove: 'lgDragMove', + dragEnd: 'lgDragEnd', + beforeNextSlide: 'lgBeforeNextSlide', + beforePrevSlide: 'lgBeforePrevSlide', + beforeClose: 'lgBeforeClose', + afterClose: 'lgAfterClose', + rotateLeft: 'lgRotateLeft', + rotateRight: 'lgRotateRight', + flipHorizontal: 'lgFlipHorizontal', + flipVertical: 'lgFlipVertical', + autoplay: 'lgAutoplay', + autoplayStart: 'lgAutoplayStart', + autoplayStop: 'lgAutoplayStop', + }; + + var rotateSettings = { + rotate: true, + rotateSpeed: 400, + rotateLeft: true, + rotateRight: true, + flipHorizontal: true, + flipVertical: true, + rotatePluginStrings: { + flipVertical: 'Flip vertical', + flipHorizontal: 'Flip horizontal', + rotateLeft: 'Rotate left', + rotateRight: 'Rotate right', + }, + }; + + var Rotate = /** @class */ (function () { + function Rotate(instance, $LG) { + // get lightGallery core plugin instance + this.core = instance; + this.$LG = $LG; + // extend module default settings with lightGallery core settings + this.settings = __assign(__assign({}, rotateSettings), this.core.settings); + return this; + } + Rotate.prototype.buildTemplates = function () { + var rotateIcons = ''; + if (this.settings.flipVertical) { + rotateIcons += ""; + } + if (this.settings.flipHorizontal) { + rotateIcons += ""; + } + if (this.settings.rotateLeft) { + rotateIcons += ""; + } + if (this.settings.rotateRight) { + rotateIcons += ""; + } + this.core.$toolbar.append(rotateIcons); + }; + Rotate.prototype.init = function () { + var _this = this; + if (!this.settings.rotate) { + return; + } + this.buildTemplates(); + // Save rotate config for each item to persist its rotate, flip values + // even after navigating to diferent slides + this.rotateValuesList = {}; + // event triggered after appending slide content + this.core.LGel.on(lGEvents.slideItemLoad + ".rotate", function (event) { + var index = event.detail.index; + var rotateEl = _this.core + .getSlideItem(index) + .find('.lg-img-rotate') + .get(); + if (!rotateEl) { + var imageWrap = _this.core + .getSlideItem(index) + .find('.lg-object') + .first(); + imageWrap.wrap('lg-img-rotate'); + //this.rotateValuesList[this.core.index] + _this.core + .getSlideItem(_this.core.index) + .find('.lg-img-rotate') + .css('transition-duration', _this.settings.rotateSpeed + 'ms'); + } + }); + this.core.outer + .find('#lg-rotate-left') + .first() + .on('click.lg', this.rotateLeft.bind(this)); + this.core.outer + .find('#lg-rotate-right') + .first() + .on('click.lg', this.rotateRight.bind(this)); + this.core.outer + .find('#lg-flip-hor') + .first() + .on('click.lg', this.flipHorizontal.bind(this)); + this.core.outer + .find('#lg-flip-ver') + .first() + .on('click.lg', this.flipVertical.bind(this)); + // Reset rotate on slide change + this.core.LGel.on(lGEvents.beforeSlide + ".rotate", function (event) { + if (!_this.rotateValuesList[event.detail.index]) { + _this.rotateValuesList[event.detail.index] = { + rotate: 0, + flipHorizontal: 1, + flipVertical: 1, + }; + } + }); + }; + Rotate.prototype.applyStyles = function () { + var $image = this.core + .getSlideItem(this.core.index) + .find('.lg-img-rotate') + .first(); + $image.css('transform', 'rotate(' + + this.rotateValuesList[this.core.index].rotate + + 'deg)' + + ' scale3d(' + + this.rotateValuesList[this.core.index].flipHorizontal + + ', ' + + this.rotateValuesList[this.core.index].flipVertical + + ', 1)'); + }; + Rotate.prototype.rotateLeft = function () { + this.rotateValuesList[this.core.index].rotate -= 90; + this.applyStyles(); + this.triggerEvents(lGEvents.rotateLeft, { + rotate: this.rotateValuesList[this.core.index].rotate, + }); + }; + Rotate.prototype.rotateRight = function () { + this.rotateValuesList[this.core.index].rotate += 90; + this.applyStyles(); + this.triggerEvents(lGEvents.rotateRight, { + rotate: this.rotateValuesList[this.core.index].rotate, + }); + }; + Rotate.prototype.getCurrentRotation = function (el) { + if (!el) { + return 0; + } + var st = this.$LG(el).style(); + var tm = st.getPropertyValue('-webkit-transform') || + st.getPropertyValue('-moz-transform') || + st.getPropertyValue('-ms-transform') || + st.getPropertyValue('-o-transform') || + st.getPropertyValue('transform') || + 'none'; + if (tm !== 'none') { + var values = tm.split('(')[1].split(')')[0].split(','); + if (values) { + var angle = Math.round(Math.atan2(values[1], values[0]) * (180 / Math.PI)); + return angle < 0 ? angle + 360 : angle; + } + } + return 0; + }; + Rotate.prototype.flipHorizontal = function () { + var rotateEl = this.core + .getSlideItem(this.core.index) + .find('.lg-img-rotate') + .first() + .get(); + var currentRotation = this.getCurrentRotation(rotateEl); + var rotateAxis = 'flipHorizontal'; + if (currentRotation === 90 || currentRotation === 270) { + rotateAxis = 'flipVertical'; + } + this.rotateValuesList[this.core.index][rotateAxis] *= -1; + this.applyStyles(); + this.triggerEvents(lGEvents.flipHorizontal, { + flipHorizontal: this.rotateValuesList[this.core.index][rotateAxis], + }); + }; + Rotate.prototype.flipVertical = function () { + var rotateEl = this.core + .getSlideItem(this.core.index) + .find('.lg-img-rotate') + .first() + .get(); + var currentRotation = this.getCurrentRotation(rotateEl); + var rotateAxis = 'flipVertical'; + if (currentRotation === 90 || currentRotation === 270) { + rotateAxis = 'flipHorizontal'; + } + this.rotateValuesList[this.core.index][rotateAxis] *= -1; + this.applyStyles(); + this.triggerEvents(lGEvents.flipVertical, { + flipVertical: this.rotateValuesList[this.core.index][rotateAxis], + }); + }; + Rotate.prototype.triggerEvents = function (event, detail) { + var _this = this; + setTimeout(function () { + _this.core.LGel.trigger(event, detail); + }, this.settings.rotateSpeed + 10); + }; + Rotate.prototype.isImageOrientationChanged = function () { + var rotateValue = this.rotateValuesList[this.core.index]; + var isRotated = Math.abs(rotateValue.rotate) % 360 !== 0; + var ifFlippedHor = rotateValue.flipHorizontal < 0; + var ifFlippedVer = rotateValue.flipVertical < 0; + return isRotated || ifFlippedHor || ifFlippedVer; + }; + Rotate.prototype.closeGallery = function () { + if (this.isImageOrientationChanged()) { + this.core.getSlideItem(this.core.index).css('opacity', 0); + } + this.rotateValuesList = {}; + }; + Rotate.prototype.destroy = function () { + // Unbind all events added by lightGallery rotate plugin + this.core.LGel.off('.lg.rotate'); + this.core.LGel.off('.rotate'); + }; + return Rotate; + }()); + + return Rotate; + +}))); +//# sourceMappingURL=lg-rotate.umd.js.map diff --git a/assets/lightGallery/plugins/rotate/lg-rotate.umd.js.map b/assets/lightGallery/plugins/rotate/lg-rotate.umd.js.map new file mode 100644 index 0000000..71a09bd --- /dev/null +++ b/assets/lightGallery/plugins/rotate/lg-rotate.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lg-rotate.umd.js","sources":["../../../src/lg-events.ts","../../../src/plugins/rotate/lg-rotate-settings.ts","../../../src/plugins/rotate/lg-rotate.ts"],"sourcesContent":["import { LightGallery } from './lightgallery';\nimport { VideoSource } from './plugins/video/types';\n\n/**\n * List of lightGallery events\n * All events should be documented here\n * Below interfaces are used to build the website documentations\n * */\nexport const lGEvents: {\n [key: string]: string;\n} = {\n afterAppendSlide: 'lgAfterAppendSlide',\n init: 'lgInit',\n hasVideo: 'lgHasVideo',\n containerResize: 'lgContainerResize',\n updateSlides: 'lgUpdateSlides',\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\n beforeOpen: 'lgBeforeOpen',\n afterOpen: 'lgAfterOpen',\n slideItemLoad: 'lgSlideItemLoad',\n beforeSlide: 'lgBeforeSlide',\n afterSlide: 'lgAfterSlide',\n posterClick: 'lgPosterClick',\n dragStart: 'lgDragStart',\n dragMove: 'lgDragMove',\n dragEnd: 'lgDragEnd',\n beforeNextSlide: 'lgBeforeNextSlide',\n beforePrevSlide: 'lgBeforePrevSlide',\n beforeClose: 'lgBeforeClose',\n afterClose: 'lgAfterClose',\n rotateLeft: 'lgRotateLeft',\n rotateRight: 'lgRotateRight',\n flipHorizontal: 'lgFlipHorizontal',\n flipVertical: 'lgFlipVertical',\n autoplay: 'lgAutoplay',\n autoplayStart: 'lgAutoplayStart',\n autoplayStop: 'lgAutoplayStop',\n};\n\n// Follow the below format for the event documentation\n// @method is the method name when event is used with Angular/React components\n\n/**\n * Fired only once when lightGallery is initialized\n * @name lgInit\n * @method onInit\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action on lightGallery initialization.\n * // Init event returns the plugin instance that can be used to call any lightGalley public method\n * let pluginInstance = null;\n * lg.addEventListener('lgInit', (event) => {\n * pluginInstance = event.detail.instance;\n * });\n * lightGallery(lg);\n * @see
Methods\n */\nexport interface InitDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired when the slide content has been inserted into it's slide container.\n * @name lgAfterAppendSlide\n * @method onAfterAppendSlide\n */\nexport interface AfterAppendSlideEventDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired immediately before opening the gallery\n * @name lgBeforeOpen\n * @method onBeforeOpen\n */\nexport interface BeforeOpenDetail {}\n\n/**\n * Fired immediately after opening the gallery\n * @name lgAfterOpen\n * @method onAfterOpen\n */\nexport interface AfterOpenDetail {}\n\n/**\n * Fired once the media inside the slide has been completely loaded .\n * @name lgSlideItemLoad\n * @method onSlideItemLoad\n */\nexport interface SlideItemLoadDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * For the first slide, lightGallery adds some delay for displaying the loaded slide item.\n * This delay is required for the transition effect when the slide item is displayed\n * Respect the delay when you use this event\n */\n delay: number;\n\n // Will be true for the first slide\n isFirstSlide: boolean;\n}\n\n/**\n * Fired immediately before each slide transition.\n * @name lgBeforeSlide\n * @method onBeforeSlide\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action before each slide transition\n * lg.addEventListener('lgBeforeSlide', (event) => {\n * const { index, prevIndex } = event.detail;\n * alert(index, prevIndex);\n * });\n * lightGallery(lg);\n */\nexport interface BeforeSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired immediately after each slide transition.\n * @name lgAfterSlide\n * @method onAfterSlide\n */\nexport interface AfterSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired when the video poster is clicked.\n * @name lgPosterClick\n * @method onPosterClick\n */\nexport interface PosterClickDetail {}\n\n/**\n * Fired when the drag event to move to different slide starts.\n * @name lgDragStart\n * @method onDragStart\n */\nexport interface DragStartDetail {}\n\n/**\n * Fired periodically during the drag operation.\n * @name lgDragMove\n * @method onDragMove\n */\nexport interface DragMoveDetail {}\n\n/**\n * Fired when the user has finished the drag operation\n * @name lgDragEnd\n * @method onDragEnd\n */\nexport interface DragEndDetail {}\n\n/**\n * Fired immediately before the start of the close process.\n * @name lgBeforeClose\n * @method onBeforeClose\n */\nexport interface BeforeCloseDetail {}\n\n/**\n * Fired immediately once lightGallery is closed.\n * @name lgAfterClose\n * @method onAfterClose\n */\nexport interface AfterCloseDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired immediately before each \"next\" slide transition\n * @name lgBeforeNextSlide\n * @method onBeforeNextSlide\n */\nexport interface BeforeNextSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired immediately before each \"prev\" slide transition\n * @name lgBeforePrevSlide\n * @method onBeforePrevSlide\n */\nexport interface BeforePrevSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired when the sub-html content (ex : title/ description) has been appended into the slide.\n * @name lgAfterAppendSubHtml\n * @method onAfterAppendSubHtml\n */\nexport interface AfterAppendSubHtmlDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the lightGallery container has been resized.\n * @name lgContainerResize\n * @method onContainerResize\n */\nexport interface ContainerResizeDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when lightGallery detects video slide\n * @name lgHasVideo\n * @method onHasVideo\n */\nexport interface HasVideoDetail {\n /**\n * Index of the slide,\n */\n index: number;\n /**\n * Video source\n */\n src: string;\n /**\n * HTML5 video source if available\n *

\n HTML5 video source = source: {\n src: string;\n type: string;\n }[];\n attributes: HTMLVideoElement;\n *

\n */\n html5Video: VideoSource;\n /**\n * True if video has poster\n */\n hasPoster: boolean;\n}\n\n/**\n * Fired when the image is rotated in anticlockwise direction\n * @name lgRotateLeft\n * @method onRotateLeft\n */\nexport interface RotateLeftDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is rotated in clockwise direction\n * @name lgRotateRight\n * @method onRotateRight\n */\nexport interface RotateRightDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped horizontally\n * @name lgFlipHorizontal\n * @method onFlipHorizontal\n */\nexport interface FlipHorizontalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped vertically\n * @name lgFlipVertical\n * @method onFlipVertical\n */\nexport interface FlipVerticalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n","export interface RotateStrings {\n flipVertical: string;\n flipHorizontal: string;\n rotateLeft: string;\n rotateRight: string;\n}\n\nexport interface RotateSettings {\n /**\n * Enable/Disable rotate option\n */\n rotate: boolean;\n\n /**\n * Rotate speed in milliseconds\n */\n rotateSpeed: number;\n\n /**\n * Enable rotate left.\n */\n rotateLeft: boolean;\n\n /**\n * Enable rotate right.\n */\n rotateRight: boolean;\n\n /**\n * Enable flip horizontal.\n */\n flipHorizontal: boolean;\n\n /**\n * Enable flip vertical.\n */\n flipVertical: boolean;\n\n /**\n * Custom translation strings for aria-labels\n */\n rotatePluginStrings: RotateStrings;\n}\nexport const rotateSettings = {\n rotate: true,\n rotateSpeed: 400,\n rotateLeft: true,\n rotateRight: true,\n flipHorizontal: true,\n flipVertical: true,\n rotatePluginStrings: {\n flipVertical: 'Flip vertical',\n flipHorizontal: 'Flip horizontal',\n rotateLeft: 'Rotate left',\n rotateRight: 'Rotate right',\n } as RotateStrings,\n};\n","import { lGEvents } from '../../lg-events';\nimport { LgQuery } from '../../lgQuery';\nimport { LightGallery } from '../../lightgallery';\nimport { rotateSettings, RotateSettings } from './lg-rotate-settings';\n\nexport default class Rotate {\n core: LightGallery;\n settings: RotateSettings;\n rotateValuesList!: {\n [key: string]: any;\n };\n private $LG!: LgQuery;\n constructor(instance: LightGallery, $LG: LgQuery) {\n // get lightGallery core plugin instance\n this.core = instance;\n this.$LG = $LG;\n\n // extend module default settings with lightGallery core settings\n this.settings = {\n ...rotateSettings,\n ...this.core.settings,\n };\n\n return this;\n }\n buildTemplates(): void {\n let rotateIcons = '';\n if (this.settings.flipVertical) {\n rotateIcons += ``;\n }\n if (this.settings.flipHorizontal) {\n rotateIcons += ``;\n }\n if (this.settings.rotateLeft) {\n rotateIcons += ``;\n }\n if (this.settings.rotateRight) {\n rotateIcons += ``;\n }\n this.core.$toolbar.append(rotateIcons);\n }\n\n init(): void {\n if (!this.settings.rotate) {\n return;\n }\n this.buildTemplates();\n\n // Save rotate config for each item to persist its rotate, flip values\n // even after navigating to diferent slides\n this.rotateValuesList = {};\n\n // event triggered after appending slide content\n this.core.LGel.on(`${lGEvents.slideItemLoad}.rotate`, (event) => {\n const { index } = event.detail;\n\n const rotateEl = this.core\n .getSlideItem(index)\n .find('.lg-img-rotate')\n .get();\n if (!rotateEl) {\n const imageWrap = this.core\n .getSlideItem(index)\n .find('.lg-object')\n .first();\n\n imageWrap.wrap('lg-img-rotate');\n //this.rotateValuesList[this.core.index]\n this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-rotate')\n .css(\n 'transition-duration',\n this.settings.rotateSpeed + 'ms',\n );\n }\n });\n\n this.core.outer\n .find('#lg-rotate-left')\n .first()\n .on('click.lg', this.rotateLeft.bind(this));\n\n this.core.outer\n .find('#lg-rotate-right')\n .first()\n .on('click.lg', this.rotateRight.bind(this));\n\n this.core.outer\n .find('#lg-flip-hor')\n .first()\n .on('click.lg', this.flipHorizontal.bind(this));\n\n this.core.outer\n .find('#lg-flip-ver')\n .first()\n .on('click.lg', this.flipVertical.bind(this));\n\n // Reset rotate on slide change\n this.core.LGel.on(`${lGEvents.beforeSlide}.rotate`, (event) => {\n if (!this.rotateValuesList[event.detail.index]) {\n this.rotateValuesList[event.detail.index] = {\n rotate: 0,\n flipHorizontal: 1,\n flipVertical: 1,\n };\n }\n });\n }\n\n applyStyles(): void {\n const $image = this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-rotate')\n .first();\n\n $image.css(\n 'transform',\n 'rotate(' +\n this.rotateValuesList[this.core.index].rotate +\n 'deg)' +\n ' scale3d(' +\n this.rotateValuesList[this.core.index].flipHorizontal +\n ', ' +\n this.rotateValuesList[this.core.index].flipVertical +\n ', 1)',\n );\n }\n\n rotateLeft(): void {\n this.rotateValuesList[this.core.index].rotate -= 90;\n this.applyStyles();\n this.triggerEvents(lGEvents.rotateLeft, {\n rotate: this.rotateValuesList[this.core.index].rotate,\n });\n }\n\n rotateRight(): void {\n this.rotateValuesList[this.core.index].rotate += 90;\n this.applyStyles();\n this.triggerEvents(lGEvents.rotateRight, {\n rotate: this.rotateValuesList[this.core.index].rotate,\n });\n }\n\n getCurrentRotation(el: HTMLElement): number {\n if (!el) {\n return 0;\n }\n const st = this.$LG(el).style();\n const tm =\n st.getPropertyValue('-webkit-transform') ||\n st.getPropertyValue('-moz-transform') ||\n st.getPropertyValue('-ms-transform') ||\n st.getPropertyValue('-o-transform') ||\n st.getPropertyValue('transform') ||\n 'none';\n if (tm !== 'none') {\n const values = tm.split('(')[1].split(')')[0].split(',') as any;\n if (values) {\n const angle = Math.round(\n Math.atan2(values[1], values[0]) * (180 / Math.PI),\n );\n return angle < 0 ? angle + 360 : angle;\n }\n }\n return 0;\n }\n\n flipHorizontal(): void {\n const rotateEl = this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-rotate')\n .first()\n .get();\n const currentRotation = this.getCurrentRotation(rotateEl);\n let rotateAxis = 'flipHorizontal';\n if (currentRotation === 90 || currentRotation === 270) {\n rotateAxis = 'flipVertical';\n }\n this.rotateValuesList[this.core.index][rotateAxis] *= -1;\n this.applyStyles();\n this.triggerEvents(lGEvents.flipHorizontal, {\n flipHorizontal: this.rotateValuesList[this.core.index][rotateAxis],\n });\n }\n\n flipVertical(): void {\n const rotateEl = this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-rotate')\n .first()\n .get();\n const currentRotation = this.getCurrentRotation(rotateEl);\n let rotateAxis = 'flipVertical';\n if (currentRotation === 90 || currentRotation === 270) {\n rotateAxis = 'flipHorizontal';\n }\n this.rotateValuesList[this.core.index][rotateAxis] *= -1;\n\n this.applyStyles();\n\n this.triggerEvents(lGEvents.flipVertical, {\n flipVertical: this.rotateValuesList[this.core.index][rotateAxis],\n });\n }\n\n triggerEvents(event: string, detail: any): void {\n setTimeout(() => {\n this.core.LGel.trigger(event, detail);\n }, this.settings.rotateSpeed + 10);\n }\n\n isImageOrientationChanged(): boolean {\n const rotateValue = this.rotateValuesList[this.core.index];\n const isRotated = Math.abs(rotateValue.rotate) % 360 !== 0;\n const ifFlippedHor = rotateValue.flipHorizontal < 0;\n const ifFlippedVer = rotateValue.flipVertical < 0;\n return isRotated || ifFlippedHor || ifFlippedVer;\n }\n\n closeGallery(): void {\n if (this.isImageOrientationChanged()) {\n this.core.getSlideItem(this.core.index).css('opacity', 0);\n }\n this.rotateValuesList = {};\n }\n\n destroy(): void {\n // Unbind all events added by lightGallery rotate plugin\n this.core.LGel.off('.lg.rotate');\n this.core.LGel.off('.rotate');\n }\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/assets/lightGallery/plugins/rotate/package.json b/assets/lightGallery/plugins/rotate/package.json new file mode 100644 index 0000000..003056f --- /dev/null +++ b/assets/lightGallery/plugins/rotate/package.json @@ -0,0 +1,7 @@ +{ + "name": "lightgallery/plugins/rotate", + "private": true, + "main": "lg-rotate.umd.js", + "module": "lg-rotate.es5.js", + "typings": "lg-rotate.d.ts" +} \ No newline at end of file diff --git a/assets/lightGallery/plugins/share/lg-fb-share-utils.d.ts b/assets/lightGallery/plugins/share/lg-fb-share-utils.d.ts new file mode 100644 index 0000000..0eb2bf4 --- /dev/null +++ b/assets/lightGallery/plugins/share/lg-fb-share-utils.d.ts @@ -0,0 +1,2 @@ +import { GalleryItem } from '../../lg-utils'; +export declare function getFacebookShareLink(galleryItem: GalleryItem): string; diff --git a/assets/lightGallery/plugins/share/lg-pinterest-share-utils.d.ts b/assets/lightGallery/plugins/share/lg-pinterest-share-utils.d.ts new file mode 100644 index 0000000..4233ce4 --- /dev/null +++ b/assets/lightGallery/plugins/share/lg-pinterest-share-utils.d.ts @@ -0,0 +1,2 @@ +import { GalleryItem } from '../../lg-utils'; +export declare function getPinterestShareLink(galleryItem: GalleryItem): string; diff --git a/assets/lightGallery/plugins/share/lg-share-settings.d.ts b/assets/lightGallery/plugins/share/lg-share-settings.d.ts new file mode 100644 index 0000000..85f47e3 --- /dev/null +++ b/assets/lightGallery/plugins/share/lg-share-settings.d.ts @@ -0,0 +1,57 @@ +import { ShareOption } from './types'; +export interface ShareStrings { + share: string; +} +export interface ShareSettings { + /** + * Enable/Disable share options + */ + share: boolean; + /** + * Enable Facebook share. + */ + facebook: boolean; + /** + * Facebook dropdown text. + */ + facebookDropdownText: string; + /** + * Enable twitter share. + */ + twitter: boolean; + /** + * Twitter dropdown text + */ + twitterDropdownText: string; + /** + * Enable pinterest share. + */ + pinterest: boolean; + /** + * Pinterest dropdown text + + */ + pinterestDropdownText: string; + /** + * Array of additional share options + * + * This can be used to build additional share options. + *
Demo + */ + additionalShareOptions: ShareOption[]; + /** + * Custom translation strings for aria-labels + */ + sharePluginStrings: ShareStrings; +} +export declare const shareSettings: { + share: boolean; + facebook: boolean; + facebookDropdownText: string; + twitter: boolean; + twitterDropdownText: string; + pinterest: boolean; + pinterestDropdownText: string; + additionalShareOptions: never[]; + sharePluginStrings: ShareStrings; +}; diff --git a/assets/lightGallery/plugins/share/lg-share.d.ts b/assets/lightGallery/plugins/share/lg-share.d.ts new file mode 100644 index 0000000..a91d6ce --- /dev/null +++ b/assets/lightGallery/plugins/share/lg-share.d.ts @@ -0,0 +1,15 @@ +import { ShareSettings } from './lg-share-settings'; +import { LightGallery } from '../../lightgallery'; +export default class Share { + core: LightGallery; + settings: ShareSettings; + private shareOptions; + constructor(instance: LightGallery); + init(): void; + private getShareListHtml; + setLgShareMarkup(): void; + private onAfterSlide; + private getShareListItemHTML; + private getDefaultShareOptions; + destroy(): void; +} diff --git a/assets/lightGallery/plugins/share/lg-share.es5.js b/assets/lightGallery/plugins/share/lg-share.es5.js new file mode 100644 index 0000000..b895745 --- /dev/null +++ b/assets/lightGallery/plugins/share/lg-share.es5.js @@ -0,0 +1,219 @@ +/*! + * lightgallery | 2.9.0 | October 1st 2025 + * http://www.lightgalleryjs.com/ + * Copyright (c) 2020 Sachin Neravath; + * @license GPLv3 + */ + +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ + +var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; + +function __spreadArrays() { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; +} + +var shareSettings = { + share: true, + facebook: true, + facebookDropdownText: 'Facebook', + twitter: true, + twitterDropdownText: 'Twitter', + pinterest: true, + pinterestDropdownText: 'Pinterest', + additionalShareOptions: [], + sharePluginStrings: { share: 'Share' }, +}; + +function getFacebookShareLink(galleryItem) { + var facebookBaseUrl = '//www.facebook.com/sharer/sharer.php?u='; + return (facebookBaseUrl + + encodeURIComponent(galleryItem.facebookShareUrl || window.location.href)); +} + +function getTwitterShareLink(galleryItem) { + var twitterBaseUrl = '//twitter.com/intent/tweet?text='; + var url = encodeURIComponent(galleryItem.twitterShareUrl || window.location.href); + var text = galleryItem.tweetText; + return twitterBaseUrl + text + '&url=' + url; +} + +function getPinterestShareLink(galleryItem) { + var pinterestBaseUrl = 'http://www.pinterest.com/pin/create/button/?url='; + var description = galleryItem.pinterestText; + var media = encodeURIComponent(galleryItem.src); + var url = encodeURIComponent(galleryItem.pinterestShareUrl || window.location.href); + return (pinterestBaseUrl + + url + + '&media=' + + media + + '&description=' + + description); +} + +/** + * List of lightGallery events + * All events should be documented here + * Below interfaces are used to build the website documentations + * */ +var lGEvents = { + afterAppendSlide: 'lgAfterAppendSlide', + init: 'lgInit', + hasVideo: 'lgHasVideo', + containerResize: 'lgContainerResize', + updateSlides: 'lgUpdateSlides', + afterAppendSubHtml: 'lgAfterAppendSubHtml', + beforeOpen: 'lgBeforeOpen', + afterOpen: 'lgAfterOpen', + slideItemLoad: 'lgSlideItemLoad', + beforeSlide: 'lgBeforeSlide', + afterSlide: 'lgAfterSlide', + posterClick: 'lgPosterClick', + dragStart: 'lgDragStart', + dragMove: 'lgDragMove', + dragEnd: 'lgDragEnd', + beforeNextSlide: 'lgBeforeNextSlide', + beforePrevSlide: 'lgBeforePrevSlide', + beforeClose: 'lgBeforeClose', + afterClose: 'lgAfterClose', + rotateLeft: 'lgRotateLeft', + rotateRight: 'lgRotateRight', + flipHorizontal: 'lgFlipHorizontal', + flipVertical: 'lgFlipVertical', + autoplay: 'lgAutoplay', + autoplayStart: 'lgAutoplayStart', + autoplayStop: 'lgAutoplayStop', +}; + +var Share = /** @class */ (function () { + function Share(instance) { + this.shareOptions = []; + // get lightGallery core plugin instance + this.core = instance; + // extend module default settings with lightGallery core settings + this.settings = __assign(__assign({}, shareSettings), this.core.settings); + return this; + } + Share.prototype.init = function () { + if (!this.settings.share) { + return; + } + this.shareOptions = __spreadArrays(this.getDefaultShareOptions(), this.settings.additionalShareOptions); + this.setLgShareMarkup(); + this.core.outer + .find('.lg-share .lg-dropdown') + .append(this.getShareListHtml()); + this.core.LGel.on(lGEvents.afterSlide + ".share", this.onAfterSlide.bind(this)); + }; + Share.prototype.getShareListHtml = function () { + var shareHtml = ''; + this.shareOptions.forEach(function (shareOption) { + shareHtml += shareOption.dropdownHTML; + }); + return shareHtml; + }; + Share.prototype.setLgShareMarkup = function () { + var _this = this; + this.core.$toolbar.append(""); + this.core.outer.append('
'); + var $shareButton = this.core.outer.find('.lg-share'); + $shareButton.first().on('click.lg', function () { + _this.core.outer.toggleClass('lg-dropdown-active'); + if (_this.core.outer.hasClass('lg-dropdown-active')) { + _this.core.outer.attr('aria-expanded', true); + } + else { + _this.core.outer.attr('aria-expanded', false); + } + }); + this.core.outer + .find('.lg-dropdown-overlay') + .first() + .on('click.lg', function () { + _this.core.outer.removeClass('lg-dropdown-active'); + _this.core.outer.attr('aria-expanded', false); + }); + }; + Share.prototype.onAfterSlide = function (event) { + var _this = this; + var index = event.detail.index; + var currentItem = this.core.galleryItems[index]; + setTimeout(function () { + _this.shareOptions.forEach(function (shareOption) { + var selector = shareOption.selector; + _this.core.outer + .find(selector) + .attr('href', shareOption.generateLink(currentItem)); + }); + }, 100); + }; + Share.prototype.getShareListItemHTML = function (type, text) { + return "
  • " + text + "
  • "; + }; + Share.prototype.getDefaultShareOptions = function () { + return __spreadArrays((this.settings.facebook + ? [ + { + type: 'facebook', + generateLink: getFacebookShareLink, + dropdownHTML: this.getShareListItemHTML('facebook', this.settings.facebookDropdownText), + selector: '.lg-share-facebook', + }, + ] + : []), (this.settings.twitter + ? [ + { + type: 'twitter', + generateLink: getTwitterShareLink, + dropdownHTML: this.getShareListItemHTML('twitter', this.settings.twitterDropdownText), + selector: '.lg-share-twitter', + }, + ] + : []), (this.settings.pinterest + ? [ + { + type: 'pinterest', + generateLink: getPinterestShareLink, + dropdownHTML: this.getShareListItemHTML('pinterest', this.settings.pinterestDropdownText), + selector: '.lg-share-pinterest', + }, + ] + : [])); + }; + Share.prototype.destroy = function () { + this.core.outer.find('.lg-dropdown-overlay').remove(); + this.core.outer.find('.lg-share').remove(); + this.core.LGel.off('.lg.share'); + this.core.LGel.off('.share'); + }; + return Share; +}()); + +export default Share; +//# sourceMappingURL=lg-share.es5.js.map diff --git a/assets/lightGallery/plugins/share/lg-share.es5.js.map b/assets/lightGallery/plugins/share/lg-share.es5.js.map new file mode 100644 index 0000000..7c2fab8 --- /dev/null +++ b/assets/lightGallery/plugins/share/lg-share.es5.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lg-share.es5.js","sources":["../../../src/plugins/share/lg-share-settings.ts","../../../src/plugins/share/lg-fb-share-utils.ts","../../../src/plugins/share/lg-twitter-share-utils.ts","../../../src/plugins/share/lg-pinterest-share-utils.ts","../../../src/lg-events.ts","../../../src/plugins/share/lg-share.ts"],"sourcesContent":["import { ShareOption } from './types';\n\nexport interface ShareStrings {\n share: string;\n}\n\nexport interface ShareSettings {\n /**\n * Enable/Disable share options\n */\n share: boolean;\n\n /**\n * Enable Facebook share.\n */\n facebook: boolean;\n\n /**\n * Facebook dropdown text.\n */\n facebookDropdownText: string;\n\n /**\n * Enable twitter share.\n */\n twitter: boolean;\n\n /**\n * Twitter dropdown text\n */\n twitterDropdownText: string;\n\n /**\n * Enable pinterest share.\n */\n pinterest: boolean;\n\n /**\n * Pinterest dropdown text\n\n */\n pinterestDropdownText: string;\n\n /**\n * Array of additional share options\n *\n * This can be used to build additional share options.\n * Demo\n */\n additionalShareOptions: ShareOption[];\n\n /**\n * Custom translation strings for aria-labels\n */\n sharePluginStrings: ShareStrings;\n}\n\nexport const shareSettings = {\n share: true,\n facebook: true,\n facebookDropdownText: 'Facebook',\n twitter: true,\n twitterDropdownText: 'Twitter',\n pinterest: true,\n pinterestDropdownText: 'Pinterest',\n additionalShareOptions: [],\n sharePluginStrings: { share: 'Share' } as ShareStrings,\n};\n","import { GalleryItem } from '../../lg-utils';\n\nexport function getFacebookShareLink(galleryItem: GalleryItem): string {\n const facebookBaseUrl = '//www.facebook.com/sharer/sharer.php?u=';\n return (\n facebookBaseUrl +\n encodeURIComponent(galleryItem.facebookShareUrl || window.location.href)\n );\n}\n","import { GalleryItem } from '../../lg-utils';\n\nexport function getTwitterShareLink(galleryItem: GalleryItem): string {\n const twitterBaseUrl = '//twitter.com/intent/tweet?text=';\n const url = encodeURIComponent(\n galleryItem.twitterShareUrl || window.location.href,\n );\n const text = galleryItem.tweetText;\n return twitterBaseUrl + text + '&url=' + url;\n}\n","import { GalleryItem } from '../../lg-utils';\n\nexport function getPinterestShareLink(galleryItem: GalleryItem): string {\n const pinterestBaseUrl = 'http://www.pinterest.com/pin/create/button/?url=';\n const description = galleryItem.pinterestText;\n const media = encodeURIComponent(galleryItem.src as string);\n const url = encodeURIComponent(\n galleryItem.pinterestShareUrl || window.location.href,\n );\n return (\n pinterestBaseUrl +\n url +\n '&media=' +\n media +\n '&description=' +\n description\n );\n}\n","import { LightGallery } from './lightgallery';\nimport { VideoSource } from './plugins/video/types';\n\n/**\n * List of lightGallery events\n * All events should be documented here\n * Below interfaces are used to build the website documentations\n * */\nexport const lGEvents: {\n [key: string]: string;\n} = {\n afterAppendSlide: 'lgAfterAppendSlide',\n init: 'lgInit',\n hasVideo: 'lgHasVideo',\n containerResize: 'lgContainerResize',\n updateSlides: 'lgUpdateSlides',\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\n beforeOpen: 'lgBeforeOpen',\n afterOpen: 'lgAfterOpen',\n slideItemLoad: 'lgSlideItemLoad',\n beforeSlide: 'lgBeforeSlide',\n afterSlide: 'lgAfterSlide',\n posterClick: 'lgPosterClick',\n dragStart: 'lgDragStart',\n dragMove: 'lgDragMove',\n dragEnd: 'lgDragEnd',\n beforeNextSlide: 'lgBeforeNextSlide',\n beforePrevSlide: 'lgBeforePrevSlide',\n beforeClose: 'lgBeforeClose',\n afterClose: 'lgAfterClose',\n rotateLeft: 'lgRotateLeft',\n rotateRight: 'lgRotateRight',\n flipHorizontal: 'lgFlipHorizontal',\n flipVertical: 'lgFlipVertical',\n autoplay: 'lgAutoplay',\n autoplayStart: 'lgAutoplayStart',\n autoplayStop: 'lgAutoplayStop',\n};\n\n// Follow the below format for the event documentation\n// @method is the method name when event is used with Angular/React components\n\n/**\n * Fired only once when lightGallery is initialized\n * @name lgInit\n * @method onInit\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action on lightGallery initialization.\n * // Init event returns the plugin instance that can be used to call any lightGalley public method\n * let pluginInstance = null;\n * lg.addEventListener('lgInit', (event) => {\n * pluginInstance = event.detail.instance;\n * });\n * lightGallery(lg);\n * @see Methods\n */\nexport interface InitDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired when the slide content has been inserted into it's slide container.\n * @name lgAfterAppendSlide\n * @method onAfterAppendSlide\n */\nexport interface AfterAppendSlideEventDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired immediately before opening the gallery\n * @name lgBeforeOpen\n * @method onBeforeOpen\n */\nexport interface BeforeOpenDetail {}\n\n/**\n * Fired immediately after opening the gallery\n * @name lgAfterOpen\n * @method onAfterOpen\n */\nexport interface AfterOpenDetail {}\n\n/**\n * Fired once the media inside the slide has been completely loaded .\n * @name lgSlideItemLoad\n * @method onSlideItemLoad\n */\nexport interface SlideItemLoadDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * For the first slide, lightGallery adds some delay for displaying the loaded slide item.\n * This delay is required for the transition effect when the slide item is displayed\n * Respect the delay when you use this event\n */\n delay: number;\n\n // Will be true for the first slide\n isFirstSlide: boolean;\n}\n\n/**\n * Fired immediately before each slide transition.\n * @name lgBeforeSlide\n * @method onBeforeSlide\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action before each slide transition\n * lg.addEventListener('lgBeforeSlide', (event) => {\n * const { index, prevIndex } = event.detail;\n * alert(index, prevIndex);\n * });\n * lightGallery(lg);\n */\nexport interface BeforeSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired immediately after each slide transition.\n * @name lgAfterSlide\n * @method onAfterSlide\n */\nexport interface AfterSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired when the video poster is clicked.\n * @name lgPosterClick\n * @method onPosterClick\n */\nexport interface PosterClickDetail {}\n\n/**\n * Fired when the drag event to move to different slide starts.\n * @name lgDragStart\n * @method onDragStart\n */\nexport interface DragStartDetail {}\n\n/**\n * Fired periodically during the drag operation.\n * @name lgDragMove\n * @method onDragMove\n */\nexport interface DragMoveDetail {}\n\n/**\n * Fired when the user has finished the drag operation\n * @name lgDragEnd\n * @method onDragEnd\n */\nexport interface DragEndDetail {}\n\n/**\n * Fired immediately before the start of the close process.\n * @name lgBeforeClose\n * @method onBeforeClose\n */\nexport interface BeforeCloseDetail {}\n\n/**\n * Fired immediately once lightGallery is closed.\n * @name lgAfterClose\n * @method onAfterClose\n */\nexport interface AfterCloseDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired immediately before each \"next\" slide transition\n * @name lgBeforeNextSlide\n * @method onBeforeNextSlide\n */\nexport interface BeforeNextSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired immediately before each \"prev\" slide transition\n * @name lgBeforePrevSlide\n * @method onBeforePrevSlide\n */\nexport interface BeforePrevSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired when the sub-html content (ex : title/ description) has been appended into the slide.\n * @name lgAfterAppendSubHtml\n * @method onAfterAppendSubHtml\n */\nexport interface AfterAppendSubHtmlDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the lightGallery container has been resized.\n * @name lgContainerResize\n * @method onContainerResize\n */\nexport interface ContainerResizeDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when lightGallery detects video slide\n * @name lgHasVideo\n * @method onHasVideo\n */\nexport interface HasVideoDetail {\n /**\n * Index of the slide,\n */\n index: number;\n /**\n * Video source\n */\n src: string;\n /**\n * HTML5 video source if available\n *

    \n HTML5 video source = source: {\n src: string;\n type: string;\n }[];\n attributes: HTMLVideoElement;\n *

    \n */\n html5Video: VideoSource;\n /**\n * True if video has poster\n */\n hasPoster: boolean;\n}\n\n/**\n * Fired when the image is rotated in anticlockwise direction\n * @name lgRotateLeft\n * @method onRotateLeft\n */\nexport interface RotateLeftDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is rotated in clockwise direction\n * @name lgRotateRight\n * @method onRotateRight\n */\nexport interface RotateRightDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped horizontally\n * @name lgFlipHorizontal\n * @method onFlipHorizontal\n */\nexport interface FlipHorizontalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped vertically\n * @name lgFlipVertical\n * @method onFlipVertical\n */\nexport interface FlipVerticalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n","import { ShareSettings, shareSettings } from './lg-share-settings';\n\nimport { getFacebookShareLink } from './lg-fb-share-utils';\nimport { getTwitterShareLink } from './lg-twitter-share-utils';\nimport { getPinterestShareLink } from './lg-pinterest-share-utils';\nimport { LightGallery } from '../../lightgallery';\nimport { lGEvents } from '../../lg-events';\nimport { ShareOption } from './types';\n\ninterface DefaultShareOptions extends ShareOption {\n type: string;\n}\nexport default class Share {\n core: LightGallery;\n settings: ShareSettings;\n private shareOptions: ShareOption[] = [];\n constructor(instance: LightGallery) {\n // get lightGallery core plugin instance\n this.core = instance;\n\n // extend module default settings with lightGallery core settings\n this.settings = { ...shareSettings, ...this.core.settings };\n return this;\n }\n\n public init(): void {\n if (!this.settings.share) {\n return;\n }\n this.shareOptions = [\n ...this.getDefaultShareOptions(),\n ...this.settings.additionalShareOptions,\n ];\n this.setLgShareMarkup();\n this.core.outer\n .find('.lg-share .lg-dropdown')\n .append(this.getShareListHtml());\n\n this.core.LGel.on(\n `${lGEvents.afterSlide}.share`,\n this.onAfterSlide.bind(this),\n );\n }\n\n private getShareListHtml() {\n let shareHtml = '';\n this.shareOptions.forEach((shareOption) => {\n shareHtml += shareOption.dropdownHTML;\n });\n\n return shareHtml;\n }\n\n setLgShareMarkup(): void {\n this.core.$toolbar.append(\n ``,\n );\n\n this.core.outer.append('
    ');\n const $shareButton = this.core.outer.find('.lg-share');\n $shareButton.first().on('click.lg', () => {\n this.core.outer.toggleClass('lg-dropdown-active');\n if (this.core.outer.hasClass('lg-dropdown-active')) {\n this.core.outer.attr('aria-expanded', true);\n } else {\n this.core.outer.attr('aria-expanded', false);\n }\n });\n\n this.core.outer\n .find('.lg-dropdown-overlay')\n .first()\n .on('click.lg', () => {\n this.core.outer.removeClass('lg-dropdown-active');\n this.core.outer.attr('aria-expanded', false);\n });\n }\n\n private onAfterSlide(event: CustomEvent) {\n const { index } = event.detail;\n const currentItem = this.core.galleryItems[index];\n setTimeout(() => {\n this.shareOptions.forEach((shareOption) => {\n const selector = shareOption.selector;\n this.core.outer\n .find(selector)\n .attr('href', shareOption.generateLink(currentItem));\n });\n }, 100);\n }\n\n private getShareListItemHTML(type: string, text: string): string {\n return `
  • ${text}
  • `;\n }\n\n private getDefaultShareOptions(): DefaultShareOptions[] {\n return [\n ...(this.settings.facebook\n ? [\n {\n type: 'facebook',\n generateLink: getFacebookShareLink,\n dropdownHTML: this.getShareListItemHTML(\n 'facebook',\n this.settings.facebookDropdownText,\n ),\n selector: '.lg-share-facebook',\n },\n ]\n : []),\n ...(this.settings.twitter\n ? [\n {\n type: 'twitter',\n generateLink: getTwitterShareLink,\n dropdownHTML: this.getShareListItemHTML(\n 'twitter',\n this.settings.twitterDropdownText,\n ),\n selector: '.lg-share-twitter',\n },\n ]\n : []),\n ...(this.settings.pinterest\n ? [\n {\n type: 'pinterest',\n generateLink: getPinterestShareLink,\n dropdownHTML: this.getShareListItemHTML(\n 'pinterest',\n this.settings.pinterestDropdownText,\n ),\n selector: '.lg-share-pinterest',\n },\n ]\n : []),\n ];\n }\n\n public destroy(): void {\n this.core.outer.find('.lg-dropdown-overlay').remove();\n this.core.outer.find('.lg-share').remove();\n this.core.LGel.off('.lg.share');\n this.core.LGel.off('.share');\n }\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/assets/lightGallery/plugins/share/lg-share.min.js b/assets/lightGallery/plugins/share/lg-share.min.js new file mode 100644 index 0000000..e7b7c0b --- /dev/null +++ b/assets/lightGallery/plugins/share/lg-share.min.js @@ -0,0 +1,8 @@ +/** + * lightgallery | 2.9.0 | October 1st 2025 + * http://www.lightgalleryjs.com/ + * Copyright (c) 2020 Sachin Neravath; + * @license GPLv3 + */ + +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).lgShare=e()}(this,(function(){"use strict";var t=function(){return(t=Object.assign||function(t){for(var e,r=1,o=arguments.length;r

    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
    o128}cWOJ`$>gKpQJC{61m^G|mx&8_!S0 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