From e06b6e9bdd0d00d35601b5b23426913857b8ca9b Mon Sep 17 00:00:00 2001
From: Intel1 <25161862+Intel11@users.noreply.github.com>
Date: Wed, 4 Oct 2017 11:47:15 -0500
Subject: [PATCH 01/13] Actualizados
---
plugin.video.alfa/channels/cinetux.py | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/plugin.video.alfa/channels/cinetux.py b/plugin.video.alfa/channels/cinetux.py
index 116895a5..ff5c77cf 100644
--- a/plugin.video.alfa/channels/cinetux.py
+++ b/plugin.video.alfa/channels/cinetux.py
@@ -7,7 +7,7 @@ from core import tmdb
from core.item import Item
from platformcode import config, logger
-CHANNEL_HOST = "http://www.cinetux.net/"
+CHANNEL_HOST = "http://www.cinetux.io/"
# Configuracion del canal
__modo_grafico__ = config.get_setting('modo_grafico', 'cinetux')
@@ -36,7 +36,7 @@ def mainlist(item):
thumbnail="https://raw.githubusercontent.com/master-1970/resources/master/images/genres"
"/0/Directors%20Chair.png",
text_color=color1))
- itemlist.append(item.clone(action="destacadas", title=" Destacadas", url="http://www.cinetux.net/mas-vistos/",
+ itemlist.append(item.clone(action="destacadas", title=" Destacadas", url=CHANNEL_HOST + "mas-vistos/",
thumbnail="https://raw.githubusercontent.com/master-1970/resources/master/images/genres"
"/0/Favorites.png",
text_color=color1))
@@ -69,7 +69,7 @@ def configuracion(item):
def search(item, texto):
logger.info()
- item.url = "http://www.cinetux.net/?s="
+ item.url = CHANNEL_HOST + "?s="
texto = texto.replace(" ", "+")
item.url = item.url + texto
try:
@@ -147,7 +147,7 @@ def peliculas(item):
scrapedtitle += " [%s]" % quality
new_item = item.clone(action="findvideos", title=scrapedtitle, fulltitle=fulltitle,
url=scrapedurl, thumbnail=scrapedthumbnail,
- contentTitle=fulltitle, contentType="movie", quality=quality)
+ contentType="movie", quality=quality)
if year:
new_item.infoLabels['year'] = int(year)
itemlist.append(new_item)
@@ -177,11 +177,11 @@ def destacadas(item):
patron += '.*?src="([^"]+)'
matches = scrapertools.find_multiple_matches(bloque, patron)
for scrapedtitle, scrapedurl, scrapedthumbnail in matches:
- scrapedurl = "http://www.cinetux.net" + scrapedurl
+ scrapedurl = CHANNEL_HOST + scrapedurl
scrapedtitle = scrapedtitle.replace("Ver ", "")
new_item = item.clone(action="findvideos", title=scrapedtitle, fulltitle=scrapedtitle,
url=scrapedurl, thumbnail=scrapedthumbnail,
- contentTitle=scrapedtitle, contentType="movie")
+ contentType="movie")
itemlist.append(new_item)
# Extrae el paginador
@@ -274,7 +274,7 @@ def findvideos(item):
if item.extra != "library":
if config.get_videolibrary_support():
itemlist.append(Item(channel=item.channel, title="Añadir a la videoteca", text_color="green",
- action="add_pelicula_to_library", url=item.url
+ action="add_pelicula_to_library", url=item.url, fulltitle = item.fulltitle
))
else:
From 216bf5fa0c979a1c0f348330d59b6fbfa7fbb342 Mon Sep 17 00:00:00 2001
From: Intel1 <25161862+Intel11@users.noreply.github.com>
Date: Wed, 4 Oct 2017 11:47:53 -0500
Subject: [PATCH 02/13] Update allpeliculas.py
---
plugin.video.alfa/channels/allpeliculas.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/plugin.video.alfa/channels/allpeliculas.py b/plugin.video.alfa/channels/allpeliculas.py
index c67fca77..e1ea6e57 100644
--- a/plugin.video.alfa/channels/allpeliculas.py
+++ b/plugin.video.alfa/channels/allpeliculas.py
@@ -82,6 +82,7 @@ def findvideos(item):
if config.get_videolibrary_support():
itemlist.append(Item(channel=item.channel, title="Añadir a la videoteca", text_color="green",
action="add_pelicula_to_library", url=item.url, thumbnail = item.thumbnail,
+ fulltitle = item.fulltitle
))
return itemlist
From 440da15e4dae78ed06f48d17af5d0897a5baac7f Mon Sep 17 00:00:00 2001
From: Intel1 <25161862+Intel11@users.noreply.github.com>
Date: Wed, 4 Oct 2017 11:48:54 -0500
Subject: [PATCH 03/13] Update allcalidad.py
---
plugin.video.alfa/channels/allcalidad.py | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/plugin.video.alfa/channels/allcalidad.py b/plugin.video.alfa/channels/allcalidad.py
index ada9a02e..9d5f6a7e 100755
--- a/plugin.video.alfa/channels/allcalidad.py
+++ b/plugin.video.alfa/channels/allcalidad.py
@@ -94,8 +94,9 @@ def peliculas(item):
idioma = scrapertools.find_single_match(varios, '(?s)Idioma.*?kinopoisk">([^<]+)')
year = scrapertools.find_single_match(varios, 'Año.*?kinopoisk">([^<]+)')
year = scrapertools.find_single_match(year, '[0-9]{4}')
- mtitulo = titulo + " (" + idioma + ") (" + year + ")"
+ mtitulo = titulo + " (" + idioma + ")"
if year:
+ mtitulo += " (" + year + ")"
item.infoLabels['year'] = int(year)
itemlist.append(item.clone(channel = item.channel,
action = "findvideos",
@@ -107,9 +108,8 @@ def peliculas(item):
contentType="movie",
language = idioma
))
- tmdb.set_infoLabels(itemlist, True)
- url_pagina = scrapertools.find_single_match(data, 'next" href="([^"]+)')
tmdb.set_infoLabels_itemlist(itemlist, __modo_grafico__)
+ url_pagina = scrapertools.find_single_match(data, 'next" href="([^"]+)')
if url_pagina != "":
pagina = "Pagina: " + scrapertools.find_single_match(url_pagina, "page/([0-9]+)")
itemlist.append(Item(channel = item.channel, action = "peliculas", title = pagina, url = url_pagina))
@@ -138,7 +138,7 @@ def findvideos(item):
title = titulo,
url = url
))
- tmdb.set_infoLabels(itemlist, True)
+ tmdb.set_infoLabels(itemlist, __modo_grafico__)
itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % i.server.capitalize())
if itemlist:
itemlist.append(Item(channel = item.channel))
@@ -148,7 +148,8 @@ def findvideos(item):
if item.extra != "library":
if config.get_videolibrary_support():
itemlist.append(Item(channel=item.channel, title="Añadir a la videoteca", text_color="green",
- action="add_pelicula_to_library", url=item.url, thumbnail = item.thumbnail
+ action="add_pelicula_to_library", url=item.url, thumbnail = item.thumbnail,
+ fulltitle = item.fulltitle
))
return itemlist
From 87dc6f19a753ee2416d1b2ba48146f02bea725ef Mon Sep 17 00:00:00 2001
From: Intel1 <25161862+Intel11@users.noreply.github.com>
Date: Wed, 4 Oct 2017 11:51:16 -0500
Subject: [PATCH 04/13] Update cinetux.py
---
plugin.video.alfa/channels/cinetux.py | 9 +--------
1 file changed, 1 insertion(+), 8 deletions(-)
diff --git a/plugin.video.alfa/channels/cinetux.py b/plugin.video.alfa/channels/cinetux.py
index ff5c77cf..fcf41397 100644
--- a/plugin.video.alfa/channels/cinetux.py
+++ b/plugin.video.alfa/channels/cinetux.py
@@ -241,14 +241,7 @@ def findvideos(item):
data = httptools.downloadpage(item.url).data
year = scrapertools.find_single_match(item.title, "\(([0-9]+)")
- if year and item.extra != "library":
- item.infoLabels['year'] = int(year)
- # Ampliamos datos en tmdb
- if not item.infoLabels['plot']:
- try:
- tmdb.set_infoLabels(item, __modo_grafico__)
- except:
- pass
+ tmdb.set_infoLabels(item, __modo_grafico__)
if not item.infoLabels.get('plot'):
plot = scrapertools.find_single_match(data, '
(.*?)
')
From 921928234112c4bf024f90a4385a2436c9d9fbd3 Mon Sep 17 00:00:00 2001
From: Intel1 <25161862+Intel11@users.noreply.github.com>
Date: Wed, 4 Oct 2017 11:52:18 -0500
Subject: [PATCH 05/13] Update gvideo.py
---
plugin.video.alfa/servers/gvideo.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/plugin.video.alfa/servers/gvideo.py b/plugin.video.alfa/servers/gvideo.py
index 6e49c989..7ed9570c 100644
--- a/plugin.video.alfa/servers/gvideo.py
+++ b/plugin.video.alfa/servers/gvideo.py
@@ -18,6 +18,8 @@ def test_video_exists(page_url):
return False, "[gvideo] Se ha excedido el número de reproducciones permitidas"
if "No+tienes+permiso" in response.data:
return False, "[gvideo] No tienes permiso para acceder a este video"
+ if "Se ha producido un error" in response.data:
+ return False, "[gvideo] Se ha producido un error en el reproductor de google"
return True, ""
@@ -43,7 +45,6 @@ def get_video_url(page_url, user="", password="", video_password=""):
cookies += c.split(";", 1)[0] + "; "
data = response.data.decode('unicode-escape')
data = urllib.unquote_plus(urllib.unquote_plus(data))
- logger.info("Intel88 %s" %data)
headers_string = "|Cookie=" + cookies
url_streams = scrapertools.find_single_match(data, 'url_encoded_fmt_stream_map=(.*)')
streams = scrapertools.find_multiple_matches(url_streams,
From 1b0ebd3c0dde5c7da9f0754ad6583e8dc24cdba4 Mon Sep 17 00:00:00 2001
From: alfa_addon_10
Date: Wed, 4 Oct 2017 22:07:14 +0200
Subject: [PATCH 06/13] theme manager
---
plugin.video.alfa/addon.xml | 8 ++++----
plugin.video.alfa/channelselector.py | 16 +++++++---------
.../{general => themes}/default/banner_back.png | Bin
.../default/banner_channels.png | Bin
.../default/banner_channels_adult.png | Bin
.../default/banner_channels_all.png | Bin
.../default/banner_channels_anime.png | Bin
.../default/banner_channels_children.png | Bin
.../default/banner_channels_direct.png | Bin
.../default/banner_channels_documentary.png | Bin
.../default/banner_channels_latino.png | Bin
.../default/banner_channels_movie.png | Bin
.../default/banner_channels_movie_az.png | Bin
.../default/banner_channels_movie_hd.png | Bin
.../default/banner_channels_torrent.png | Bin
.../default/banner_channels_tvshow.png | Bin
.../default/banner_channels_tvshow_az.png | Bin
.../default/banner_channels_tvshow_hd.png | Bin
.../default/banner_channels_vos.png | Bin
.../default/banner_downloads.png | Bin
.../default/banner_error.png | Bin
.../default/banner_favorites.png | Bin
.../default/banner_folder.png | Bin
.../{general => themes}/default/banner_help.png | Bin
.../{general => themes}/default/banner_news.png | Bin
.../{general => themes}/default/banner_next.png | Bin
.../default/banner_nofolder.png | Bin
.../default/banner_search.png | Bin
.../default/banner_setting_0.png | Bin
.../default/banner_update.png | Bin
.../default/banner_videolibrary.png | Bin
.../default/banner_videolibrary_movie.png | Bin
.../default/banner_videolibrary_tvshow.png | Bin
.../{general => themes}/default/thumb_back.png | Bin
.../default/thumb_channels.png | Bin
.../default/thumb_channels_adult.png | Bin
.../default/thumb_channels_all.png | Bin
.../default/thumb_channels_anime.png | Bin
.../default/thumb_channels_children.png | Bin
.../default/thumb_channels_direct.png | Bin
.../default/thumb_channels_documentary.png | Bin
.../default/thumb_channels_horror.png | Bin
.../default/thumb_channels_latino.png | Bin
.../default/thumb_channels_movie.png | Bin
.../default/thumb_channels_movie_az.png | Bin
.../default/thumb_channels_movie_hd.png | Bin
.../default/thumb_channels_torrent.png | Bin
.../default/thumb_channels_tvshow.png | Bin
.../default/thumb_channels_tvshow_az.png | Bin
.../default/thumb_channels_tvshow_hd.png | Bin
.../default/thumb_channels_vos.png | Bin
.../default/thumb_downloads.png | Bin
.../{general => themes}/default/thumb_error.png | Bin
.../default/thumb_favorites.png | Bin
.../default/thumb_folder.png | Bin
.../{general => themes}/default/thumb_help.png | Bin
.../{general => themes}/default/thumb_news.png | Bin
.../{general => themes}/default/thumb_next.png | Bin
.../default/thumb_nofolder.png | Bin
.../default/thumb_search.png | Bin
.../default/thumb_setting_0.png | Bin
.../default/thumb_setting_1.png | Bin
.../default/thumb_setting_2.png | Bin
.../default/thumb_setting_3.png | Bin
.../default/thumb_setting_4.png | Bin
.../default/thumb_update.png | Bin
.../default/thumb_videolibrary.png | Bin
.../default/thumb_videolibrary_movie.png | Bin
.../default/thumb_videolibrary_tvshow.png | Bin
.../media/{general => themes}/ss/1.jpg | Bin
.../media/{general => themes}/ss/2.jpg | Bin
.../media/{general => themes}/ss/3.jpg | Bin
.../media/{general => themes}/ss/4.jpg | Bin
plugin.video.alfa/resources/settings.xml | 7 +++++--
74 files changed, 16 insertions(+), 15 deletions(-)
rename plugin.video.alfa/resources/media/{general => themes}/default/banner_back.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/banner_channels.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/banner_channels_adult.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/banner_channels_all.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/banner_channels_anime.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/banner_channels_children.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/banner_channels_direct.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/banner_channels_documentary.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/banner_channels_latino.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/banner_channels_movie.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/banner_channels_movie_az.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/banner_channels_movie_hd.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/banner_channels_torrent.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/banner_channels_tvshow.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/banner_channels_tvshow_az.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/banner_channels_tvshow_hd.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/banner_channels_vos.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/banner_downloads.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/banner_error.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/banner_favorites.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/banner_folder.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/banner_help.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/banner_news.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/banner_next.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/banner_nofolder.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/banner_search.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/banner_setting_0.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/banner_update.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/banner_videolibrary.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/banner_videolibrary_movie.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/banner_videolibrary_tvshow.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_back.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_channels.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_channels_adult.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_channels_all.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_channels_anime.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_channels_children.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_channels_direct.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_channels_documentary.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_channels_horror.png (100%)
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_channels_latino.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_channels_movie.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_channels_movie_az.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_channels_movie_hd.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_channels_torrent.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_channels_tvshow.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_channels_tvshow_az.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_channels_tvshow_hd.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_channels_vos.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_downloads.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_error.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_favorites.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_folder.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_help.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_news.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_next.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_nofolder.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_search.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_setting_0.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_setting_1.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_setting_2.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_setting_3.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_setting_4.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_update.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_videolibrary.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_videolibrary_movie.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/default/thumb_videolibrary_tvshow.png (100%)
mode change 100755 => 100644
rename plugin.video.alfa/resources/media/{general => themes}/ss/1.jpg (100%)
rename plugin.video.alfa/resources/media/{general => themes}/ss/2.jpg (100%)
rename plugin.video.alfa/resources/media/{general => themes}/ss/3.jpg (100%)
rename plugin.video.alfa/resources/media/{general => themes}/ss/4.jpg (100%)
diff --git a/plugin.video.alfa/addon.xml b/plugin.video.alfa/addon.xml
index 577e9bf4..10c222ec 100755
--- a/plugin.video.alfa/addon.xml
+++ b/plugin.video.alfa/addon.xml
@@ -12,10 +12,10 @@
icon.png
fanart.jpg
- resources/media/general/ss/1.jpg
- resources/media/general/ss/2.jpg
- resources/media/general/ss/3.jpg
- resources/media/general/ss/4.jpg
+ resources/media/themes/ss/1.jpg
+ resources/media/themes/ss/2.jpg
+ resources/media/themes/ss/3.jpg
+ resources/media/themes/ss/4.jpg
[B]Estos son los cambios para esta versión:[/B]
[COLOR green][B]Canales agregados y arreglos[/B][/COLOR]
diff --git a/plugin.video.alfa/channelselector.py b/plugin.video.alfa/channelselector.py
index 5ba3619a..0c056767 100644
--- a/plugin.video.alfa/channelselector.py
+++ b/plugin.video.alfa/channelselector.py
@@ -202,14 +202,12 @@ def filterchannels(category, view="thumb_"):
def get_thumb(thumb_name, view="thumb_"):
- path = os.path.join(config.get_runtime_path(), "resources", "media", "general")
+ icon_pack_name = config.get_setting('icon_set')
+ if icon_pack_name == "default":
+ resource_path = os.path.join(config.get_runtime_path(), "resources", "media", "themes")
+ else:
+ resource_path = "https://raw.githubusercontent.com/alfa-addon/media/master/themes/"
- # if config.get_setting("icons"): # TODO obtener de la configuración el pack de thumbs seleccionado
- # selected_icon = config.get_setting("icons")
- # else:
- # selected_icon = os.sep + "default"
+ media_path = os.path.join(resource_path, icon_pack_name)
- selected_icon = os.sep + "default"
- web_path = path + selected_icon + os.sep
-
- return os.path.join(web_path, view + thumb_name)
+ return os.path.join(media_path, view + thumb_name)
diff --git a/plugin.video.alfa/resources/media/general/default/banner_back.png b/plugin.video.alfa/resources/media/themes/default/banner_back.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/banner_back.png
rename to plugin.video.alfa/resources/media/themes/default/banner_back.png
diff --git a/plugin.video.alfa/resources/media/general/default/banner_channels.png b/plugin.video.alfa/resources/media/themes/default/banner_channels.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/banner_channels.png
rename to plugin.video.alfa/resources/media/themes/default/banner_channels.png
diff --git a/plugin.video.alfa/resources/media/general/default/banner_channels_adult.png b/plugin.video.alfa/resources/media/themes/default/banner_channels_adult.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/banner_channels_adult.png
rename to plugin.video.alfa/resources/media/themes/default/banner_channels_adult.png
diff --git a/plugin.video.alfa/resources/media/general/default/banner_channels_all.png b/plugin.video.alfa/resources/media/themes/default/banner_channels_all.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/banner_channels_all.png
rename to plugin.video.alfa/resources/media/themes/default/banner_channels_all.png
diff --git a/plugin.video.alfa/resources/media/general/default/banner_channels_anime.png b/plugin.video.alfa/resources/media/themes/default/banner_channels_anime.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/banner_channels_anime.png
rename to plugin.video.alfa/resources/media/themes/default/banner_channels_anime.png
diff --git a/plugin.video.alfa/resources/media/general/default/banner_channels_children.png b/plugin.video.alfa/resources/media/themes/default/banner_channels_children.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/banner_channels_children.png
rename to plugin.video.alfa/resources/media/themes/default/banner_channels_children.png
diff --git a/plugin.video.alfa/resources/media/general/default/banner_channels_direct.png b/plugin.video.alfa/resources/media/themes/default/banner_channels_direct.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/banner_channels_direct.png
rename to plugin.video.alfa/resources/media/themes/default/banner_channels_direct.png
diff --git a/plugin.video.alfa/resources/media/general/default/banner_channels_documentary.png b/plugin.video.alfa/resources/media/themes/default/banner_channels_documentary.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/banner_channels_documentary.png
rename to plugin.video.alfa/resources/media/themes/default/banner_channels_documentary.png
diff --git a/plugin.video.alfa/resources/media/general/default/banner_channels_latino.png b/plugin.video.alfa/resources/media/themes/default/banner_channels_latino.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/banner_channels_latino.png
rename to plugin.video.alfa/resources/media/themes/default/banner_channels_latino.png
diff --git a/plugin.video.alfa/resources/media/general/default/banner_channels_movie.png b/plugin.video.alfa/resources/media/themes/default/banner_channels_movie.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/banner_channels_movie.png
rename to plugin.video.alfa/resources/media/themes/default/banner_channels_movie.png
diff --git a/plugin.video.alfa/resources/media/general/default/banner_channels_movie_az.png b/plugin.video.alfa/resources/media/themes/default/banner_channels_movie_az.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/banner_channels_movie_az.png
rename to plugin.video.alfa/resources/media/themes/default/banner_channels_movie_az.png
diff --git a/plugin.video.alfa/resources/media/general/default/banner_channels_movie_hd.png b/plugin.video.alfa/resources/media/themes/default/banner_channels_movie_hd.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/banner_channels_movie_hd.png
rename to plugin.video.alfa/resources/media/themes/default/banner_channels_movie_hd.png
diff --git a/plugin.video.alfa/resources/media/general/default/banner_channels_torrent.png b/plugin.video.alfa/resources/media/themes/default/banner_channels_torrent.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/banner_channels_torrent.png
rename to plugin.video.alfa/resources/media/themes/default/banner_channels_torrent.png
diff --git a/plugin.video.alfa/resources/media/general/default/banner_channels_tvshow.png b/plugin.video.alfa/resources/media/themes/default/banner_channels_tvshow.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/banner_channels_tvshow.png
rename to plugin.video.alfa/resources/media/themes/default/banner_channels_tvshow.png
diff --git a/plugin.video.alfa/resources/media/general/default/banner_channels_tvshow_az.png b/plugin.video.alfa/resources/media/themes/default/banner_channels_tvshow_az.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/banner_channels_tvshow_az.png
rename to plugin.video.alfa/resources/media/themes/default/banner_channels_tvshow_az.png
diff --git a/plugin.video.alfa/resources/media/general/default/banner_channels_tvshow_hd.png b/plugin.video.alfa/resources/media/themes/default/banner_channels_tvshow_hd.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/banner_channels_tvshow_hd.png
rename to plugin.video.alfa/resources/media/themes/default/banner_channels_tvshow_hd.png
diff --git a/plugin.video.alfa/resources/media/general/default/banner_channels_vos.png b/plugin.video.alfa/resources/media/themes/default/banner_channels_vos.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/banner_channels_vos.png
rename to plugin.video.alfa/resources/media/themes/default/banner_channels_vos.png
diff --git a/plugin.video.alfa/resources/media/general/default/banner_downloads.png b/plugin.video.alfa/resources/media/themes/default/banner_downloads.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/banner_downloads.png
rename to plugin.video.alfa/resources/media/themes/default/banner_downloads.png
diff --git a/plugin.video.alfa/resources/media/general/default/banner_error.png b/plugin.video.alfa/resources/media/themes/default/banner_error.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/banner_error.png
rename to plugin.video.alfa/resources/media/themes/default/banner_error.png
diff --git a/plugin.video.alfa/resources/media/general/default/banner_favorites.png b/plugin.video.alfa/resources/media/themes/default/banner_favorites.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/banner_favorites.png
rename to plugin.video.alfa/resources/media/themes/default/banner_favorites.png
diff --git a/plugin.video.alfa/resources/media/general/default/banner_folder.png b/plugin.video.alfa/resources/media/themes/default/banner_folder.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/banner_folder.png
rename to plugin.video.alfa/resources/media/themes/default/banner_folder.png
diff --git a/plugin.video.alfa/resources/media/general/default/banner_help.png b/plugin.video.alfa/resources/media/themes/default/banner_help.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/banner_help.png
rename to plugin.video.alfa/resources/media/themes/default/banner_help.png
diff --git a/plugin.video.alfa/resources/media/general/default/banner_news.png b/plugin.video.alfa/resources/media/themes/default/banner_news.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/banner_news.png
rename to plugin.video.alfa/resources/media/themes/default/banner_news.png
diff --git a/plugin.video.alfa/resources/media/general/default/banner_next.png b/plugin.video.alfa/resources/media/themes/default/banner_next.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/banner_next.png
rename to plugin.video.alfa/resources/media/themes/default/banner_next.png
diff --git a/plugin.video.alfa/resources/media/general/default/banner_nofolder.png b/plugin.video.alfa/resources/media/themes/default/banner_nofolder.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/banner_nofolder.png
rename to plugin.video.alfa/resources/media/themes/default/banner_nofolder.png
diff --git a/plugin.video.alfa/resources/media/general/default/banner_search.png b/plugin.video.alfa/resources/media/themes/default/banner_search.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/banner_search.png
rename to plugin.video.alfa/resources/media/themes/default/banner_search.png
diff --git a/plugin.video.alfa/resources/media/general/default/banner_setting_0.png b/plugin.video.alfa/resources/media/themes/default/banner_setting_0.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/banner_setting_0.png
rename to plugin.video.alfa/resources/media/themes/default/banner_setting_0.png
diff --git a/plugin.video.alfa/resources/media/general/default/banner_update.png b/plugin.video.alfa/resources/media/themes/default/banner_update.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/banner_update.png
rename to plugin.video.alfa/resources/media/themes/default/banner_update.png
diff --git a/plugin.video.alfa/resources/media/general/default/banner_videolibrary.png b/plugin.video.alfa/resources/media/themes/default/banner_videolibrary.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/banner_videolibrary.png
rename to plugin.video.alfa/resources/media/themes/default/banner_videolibrary.png
diff --git a/plugin.video.alfa/resources/media/general/default/banner_videolibrary_movie.png b/plugin.video.alfa/resources/media/themes/default/banner_videolibrary_movie.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/banner_videolibrary_movie.png
rename to plugin.video.alfa/resources/media/themes/default/banner_videolibrary_movie.png
diff --git a/plugin.video.alfa/resources/media/general/default/banner_videolibrary_tvshow.png b/plugin.video.alfa/resources/media/themes/default/banner_videolibrary_tvshow.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/banner_videolibrary_tvshow.png
rename to plugin.video.alfa/resources/media/themes/default/banner_videolibrary_tvshow.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_back.png b/plugin.video.alfa/resources/media/themes/default/thumb_back.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_back.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_back.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_channels.png b/plugin.video.alfa/resources/media/themes/default/thumb_channels.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_channels.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_channels.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_channels_adult.png b/plugin.video.alfa/resources/media/themes/default/thumb_channels_adult.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_channels_adult.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_channels_adult.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_channels_all.png b/plugin.video.alfa/resources/media/themes/default/thumb_channels_all.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_channels_all.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_channels_all.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_channels_anime.png b/plugin.video.alfa/resources/media/themes/default/thumb_channels_anime.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_channels_anime.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_channels_anime.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_channels_children.png b/plugin.video.alfa/resources/media/themes/default/thumb_channels_children.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_channels_children.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_channels_children.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_channels_direct.png b/plugin.video.alfa/resources/media/themes/default/thumb_channels_direct.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_channels_direct.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_channels_direct.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_channels_documentary.png b/plugin.video.alfa/resources/media/themes/default/thumb_channels_documentary.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_channels_documentary.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_channels_documentary.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_channels_horror.png b/plugin.video.alfa/resources/media/themes/default/thumb_channels_horror.png
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_channels_horror.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_channels_horror.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_channels_latino.png b/plugin.video.alfa/resources/media/themes/default/thumb_channels_latino.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_channels_latino.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_channels_latino.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_channels_movie.png b/plugin.video.alfa/resources/media/themes/default/thumb_channels_movie.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_channels_movie.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_channels_movie.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_channels_movie_az.png b/plugin.video.alfa/resources/media/themes/default/thumb_channels_movie_az.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_channels_movie_az.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_channels_movie_az.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_channels_movie_hd.png b/plugin.video.alfa/resources/media/themes/default/thumb_channels_movie_hd.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_channels_movie_hd.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_channels_movie_hd.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_channels_torrent.png b/plugin.video.alfa/resources/media/themes/default/thumb_channels_torrent.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_channels_torrent.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_channels_torrent.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_channels_tvshow.png b/plugin.video.alfa/resources/media/themes/default/thumb_channels_tvshow.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_channels_tvshow.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_channels_tvshow.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_channels_tvshow_az.png b/plugin.video.alfa/resources/media/themes/default/thumb_channels_tvshow_az.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_channels_tvshow_az.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_channels_tvshow_az.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_channels_tvshow_hd.png b/plugin.video.alfa/resources/media/themes/default/thumb_channels_tvshow_hd.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_channels_tvshow_hd.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_channels_tvshow_hd.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_channels_vos.png b/plugin.video.alfa/resources/media/themes/default/thumb_channels_vos.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_channels_vos.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_channels_vos.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_downloads.png b/plugin.video.alfa/resources/media/themes/default/thumb_downloads.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_downloads.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_downloads.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_error.png b/plugin.video.alfa/resources/media/themes/default/thumb_error.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_error.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_error.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_favorites.png b/plugin.video.alfa/resources/media/themes/default/thumb_favorites.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_favorites.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_favorites.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_folder.png b/plugin.video.alfa/resources/media/themes/default/thumb_folder.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_folder.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_folder.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_help.png b/plugin.video.alfa/resources/media/themes/default/thumb_help.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_help.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_help.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_news.png b/plugin.video.alfa/resources/media/themes/default/thumb_news.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_news.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_news.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_next.png b/plugin.video.alfa/resources/media/themes/default/thumb_next.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_next.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_next.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_nofolder.png b/plugin.video.alfa/resources/media/themes/default/thumb_nofolder.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_nofolder.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_nofolder.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_search.png b/plugin.video.alfa/resources/media/themes/default/thumb_search.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_search.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_search.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_setting_0.png b/plugin.video.alfa/resources/media/themes/default/thumb_setting_0.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_setting_0.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_setting_0.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_setting_1.png b/plugin.video.alfa/resources/media/themes/default/thumb_setting_1.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_setting_1.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_setting_1.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_setting_2.png b/plugin.video.alfa/resources/media/themes/default/thumb_setting_2.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_setting_2.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_setting_2.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_setting_3.png b/plugin.video.alfa/resources/media/themes/default/thumb_setting_3.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_setting_3.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_setting_3.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_setting_4.png b/plugin.video.alfa/resources/media/themes/default/thumb_setting_4.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_setting_4.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_setting_4.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_update.png b/plugin.video.alfa/resources/media/themes/default/thumb_update.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_update.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_update.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_videolibrary.png b/plugin.video.alfa/resources/media/themes/default/thumb_videolibrary.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_videolibrary.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_videolibrary.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_videolibrary_movie.png b/plugin.video.alfa/resources/media/themes/default/thumb_videolibrary_movie.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_videolibrary_movie.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_videolibrary_movie.png
diff --git a/plugin.video.alfa/resources/media/general/default/thumb_videolibrary_tvshow.png b/plugin.video.alfa/resources/media/themes/default/thumb_videolibrary_tvshow.png
old mode 100755
new mode 100644
similarity index 100%
rename from plugin.video.alfa/resources/media/general/default/thumb_videolibrary_tvshow.png
rename to plugin.video.alfa/resources/media/themes/default/thumb_videolibrary_tvshow.png
diff --git a/plugin.video.alfa/resources/media/general/ss/1.jpg b/plugin.video.alfa/resources/media/themes/ss/1.jpg
similarity index 100%
rename from plugin.video.alfa/resources/media/general/ss/1.jpg
rename to plugin.video.alfa/resources/media/themes/ss/1.jpg
diff --git a/plugin.video.alfa/resources/media/general/ss/2.jpg b/plugin.video.alfa/resources/media/themes/ss/2.jpg
similarity index 100%
rename from plugin.video.alfa/resources/media/general/ss/2.jpg
rename to plugin.video.alfa/resources/media/themes/ss/2.jpg
diff --git a/plugin.video.alfa/resources/media/general/ss/3.jpg b/plugin.video.alfa/resources/media/themes/ss/3.jpg
similarity index 100%
rename from plugin.video.alfa/resources/media/general/ss/3.jpg
rename to plugin.video.alfa/resources/media/themes/ss/3.jpg
diff --git a/plugin.video.alfa/resources/media/general/ss/4.jpg b/plugin.video.alfa/resources/media/themes/ss/4.jpg
similarity index 100%
rename from plugin.video.alfa/resources/media/general/ss/4.jpg
rename to plugin.video.alfa/resources/media/themes/ss/4.jpg
diff --git a/plugin.video.alfa/resources/settings.xml b/plugin.video.alfa/resources/settings.xml
index 61ce12cd..a58e22df 100755
--- a/plugin.video.alfa/resources/settings.xml
+++ b/plugin.video.alfa/resources/settings.xml
@@ -38,13 +38,16 @@
-
+
+
+
-
+
+
From 44d3771ddeb26a302a1b799645b9ae6644460531 Mon Sep 17 00:00:00 2001
From: Intel1 <25161862+Intel11@users.noreply.github.com>
Date: Wed, 4 Oct 2017 15:19:37 -0500
Subject: [PATCH 07/13] Update flashx.py
---
plugin.video.alfa/servers/flashx.py | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/plugin.video.alfa/servers/flashx.py b/plugin.video.alfa/servers/flashx.py
index 69ad0430..2d6eed50 100644
--- a/plugin.video.alfa/servers/flashx.py
+++ b/plugin.video.alfa/servers/flashx.py
@@ -37,17 +37,18 @@ def get_video_url(page_url, premium=False, user="", password="", video_password=
flashx_id = scrapertools.find_single_match(data, 'name="id" value="([^"]+)"')
fname = scrapertools.find_single_match(data, 'name="fname" value="([^"]+)"')
hash_f = scrapertools.find_single_match(data, 'name="hash" value="([^"]+)"')
- post = 'op=download1&usr_login=&id=%s&fname=%s&referer=&hash=%s&imhuman=Proceed to the video' % (
- flashx_id, urllib.quote(fname), hash_f)
+ imhuman = scrapertools.find_single_match(data, "value='([^']+)' name='imhuman'")
+ post = 'op=download1&usr_login=&id=%s&fname=%s&referer=&hash=%s&imhuman=%s' % (
+ flashx_id, urllib.quote(fname), hash_f, imhuman)
wait_time = scrapertools.find_single_match(data, "(\d+)")
headers['Referer'] = "https://www.flashx.tv/"
headers['Accept'] = "*/*"
headers['Host'] = "www.flashx.tv"
- coding_url = 'https://www.flashx.tv/flashx.php?fxfx=5'
+ coding_url = 'https://www.flashx.tv/flashx.php?fxfx=7'
headers['X-Requested-With'] = 'XMLHttpRequest'
- httptools.downloadpage(coding_url, headers=headers, replace_headers=True)
+ httptools.downloadpage(coding_url, headers=headers)
try:
time.sleep(int(wait_time) + 1)
From 1e9c9666fc8960778908aef811cb6ba16bd52172 Mon Sep 17 00:00:00 2001
From: Intel1 <25161862+Intel11@users.noreply.github.com>
Date: Wed, 4 Oct 2017 16:04:58 -0500
Subject: [PATCH 08/13] Update flashx.py
---
plugin.video.alfa/servers/flashx.py | 1 -
1 file changed, 1 deletion(-)
diff --git a/plugin.video.alfa/servers/flashx.py b/plugin.video.alfa/servers/flashx.py
index 2d6eed50..c6074f61 100644
--- a/plugin.video.alfa/servers/flashx.py
+++ b/plugin.video.alfa/servers/flashx.py
@@ -1,6 +1,5 @@
# -*- coding: utf-8 -*-
-import base64
import os
import time
import urllib
From a30320fe00b1392c011442618d2def08ed24b923 Mon Sep 17 00:00:00 2001
From: Intel1 <25161862+Intel11@users.noreply.github.com>
Date: Wed, 4 Oct 2017 16:05:42 -0500
Subject: [PATCH 09/13] Update playmax.json
---
plugin.video.alfa/channels/playmax.json | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/plugin.video.alfa/channels/playmax.json b/plugin.video.alfa/channels/playmax.json
index 5717c5a3..e2fe734f 100755
--- a/plugin.video.alfa/channels/playmax.json
+++ b/plugin.video.alfa/channels/playmax.json
@@ -63,6 +63,14 @@
"enabled": true,
"visible": true
},
+ {
+ "id": "include_in_newest_infantiles",
+ "type": "bool",
+ "label": "Incluir en Novedades - Infantiles",
+ "default": false,
+ "enabled": true,
+ "visible": true
+ },
{
"id": "include_in_newest_series",
"type": "bool",
From 1dd0479b3ee7b031b1d9e0ec7087aeb88fa46516 Mon Sep 17 00:00:00 2001
From: Intel1 <25161862+Intel11@users.noreply.github.com>
Date: Wed, 4 Oct 2017 16:08:42 -0500
Subject: [PATCH 10/13] Update playmax.py
---
plugin.video.alfa/channels/playmax.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/plugin.video.alfa/channels/playmax.py b/plugin.video.alfa/channels/playmax.py
index 154bc1a6..3313fd46 100644
--- a/plugin.video.alfa/channels/playmax.py
+++ b/plugin.video.alfa/channels/playmax.py
@@ -211,7 +211,7 @@ def newest(categoria):
elif categoria == 'infantiles':
item.channel = "playmax"
item.extra = "newest"
- item.url = host + "/catalogo.php?tipo[]=2&genero[]=60&ad=2&ordenar=novedades&con_dis=on"
+ item.url = host + "/catalogo.php?tipo[]=2&generos[]=60&ad=2&ordenar=novedades&con_dis=on"
item.contentType = "movie"
itemlist = fichas(item)
From cba9039c4cf965f0740ec1c6f3b5a6d18577bf2a Mon Sep 17 00:00:00 2001
From: Alfa-Addon
Date: Wed, 4 Oct 2017 17:28:55 -0400
Subject: [PATCH 11/13] some fixes
---
plugin.video.alfa/channels/pedropolis.py | 2 +-
plugin.video.alfa/channels/pelisplanet.py | 106 ++++++----------------
2 files changed, 30 insertions(+), 78 deletions(-)
diff --git a/plugin.video.alfa/channels/pedropolis.py b/plugin.video.alfa/channels/pedropolis.py
index 6baa5edc..45cc0b15 100644
--- a/plugin.video.alfa/channels/pedropolis.py
+++ b/plugin.video.alfa/channels/pedropolis.py
@@ -203,7 +203,7 @@ def sub_search(item):
action=action, infoLabels={"year": year}, contentType=contentType,
thumbnail=scrapedthumbnail, text_color=color1, contentSerieName=scrapedtitle))
- tmdb.set_infoLabels_itemlist(itemlist, __modo_grafico__)
+ tmdb.set_infoLabels_itemlist(itemlist, __modo_grafico__)
paginacion = scrapertools.find_single_match(data, ' ')
if paginacion:
diff --git a/plugin.video.alfa/channels/pelisplanet.py b/plugin.video.alfa/channels/pelisplanet.py
index bca441ec..0795cc6b 100644
--- a/plugin.video.alfa/channels/pelisplanet.py
+++ b/plugin.video.alfa/channels/pelisplanet.py
@@ -37,6 +37,7 @@ if __perfil__ < 3:
else:
color1 = color2 = color3 = color4 = color5 = ""
+
def mainlist(item):
logger.info()
itemlist = []
@@ -178,22 +179,21 @@ def peliculas(item):
for scrapedurl, calidad, year, scrapedtitle, scrapedthumbnail in matches:
datas = httptools.downloadpage(scrapedurl).data
datas = re.sub(r"\n|\r|\t|\s{2}| ", "", datas)
- #logger.info(datas)
+ # logger.info(datas)
if '/ ' in scrapedtitle:
scrapedtitle = scrapedtitle.partition('/ ')[2]
contentTitle = scrapertools.find_single_match(datas, 'Titulo original: ([^<]+)')
contentTitle = scrapertools.decodeHtmlentities(contentTitle.strip())
rating = scrapertools.find_single_match(datas, 'alt="Puntaje MPA IMDb" />([^<]+) ')
- director = scrapertools.find_single_match(datas, '')
+ director = scrapertools.find_single_match(
+ datas, '')
title = "%s [COLOR yellow][%s][/COLOR]" % (scrapedtitle.strip(), calidad.upper())
new_item = Item(channel=item.channel, action="findvideos", title=title, plot='', contentType='movie',
- url=scrapedurl, contentQuality=calidad, thumbnail=scrapedthumbnail,
- contentTitle=contentTitle, infoLabels={"year": year, 'rating': rating, 'director': director},
- text_color=color3)
+ url=scrapedurl, contentQuality=calidad, thumbnail=scrapedthumbnail,
+ contentTitle=contentTitle, infoLabels={"year": year, 'rating': rating, 'director': director},
+ text_color=color3)
- # tmdb.set_infoLabels(itemlist, __modo_grafico__)
- # tmdb.set_infoLabels(itemlist, __modo_grafico__)
if year:
tmdb.set_infoLabels_item(new_item, __modo_grafico__)
itemlist.append(new_item)
@@ -202,8 +202,8 @@ def peliculas(item):
if paginacion:
itemlist.append(Item(channel=item.channel, action="peliculas",
- title="» Siguiente »", url=paginacion, plot="Página Siguiente",
- thumbnail='https://raw.githubusercontent.com/Inter95/tvguia/master/thumbnails/next.png'))
+ title="» Siguiente »", url=paginacion, plot="Página Siguiente",
+ thumbnail='https://raw.githubusercontent.com/Inter95/tvguia/master/thumbnails/next.png'))
for item in itemlist:
if item.infoLabels['plot'] == '':
@@ -250,80 +250,32 @@ def findvideos(item):
matches = re.compile(patron, re.DOTALL).findall(datas)
for scrapedurl, lang, servidores in matches:
- # doc_url = ''
- doc_id = ''
- video_urls = []
- if 'drive' in scrapedurl:
- doc_id = httptools.downloadpage(scrapedurl).data
- doc_id = scrapertools.find_single_match(doc_id, "docid=(\w+)")
- elif 'youtube' in scrapedurl:
- doc_id = scrapertools.find_single_match(scrapedurl, "docid=(\w+)")
- doc_url = "http://docs.google.com/get_video_info?docid=%s" % doc_id
- response = httptools.downloadpage(doc_url, cookies=False)
- cookies = ""
- cookie = response.headers["set-cookie"].split("HttpOnly, ")
- for c in cookie:
- cookies += c.split(";", 1)[0] + "; "
- data = response.data.decode('unicode-escape')
- data = urllib.unquote_plus(urllib.unquote_plus(data))
- headers_string = "|Cookie=" + cookies
- url_streams = scrapertools.find_single_match(data, 'url_encoded_fmt_stream_map=(.*)')
- streams = scrapertools.find_multiple_matches(url_streams,
- 'itag=(\d+)&url=(.*?)(?:;.*?quality=.*?(?:,|&)|&quality=.*?(?:,|&))')
- itags = {'18':'360p', '22':'720p', '34':'360p', '35':'480p', '37':'1080p', '43':'360p', '59':'480p'}
- for itag, video_url in streams:
- video_url += headers_string
- video_urls.append([video_url, itags[itag]])
-
- for video_item in video_urls:
- calidad = video_item[1]
- title = '%s [COLOR green](%s)[/COLOR] [COLOR green]([/COLOR][COLOR black]You[/COLOR][COLOR red]tube[/COLOR][COLOR green])[/COLOR]'%(item.contentTitle, calidad)
- url = video_item[0]
-
- itemlist.append(
- item.clone(channel=item.channel,
- action='play',
- title=title,
- url= url,
- thumbnail=item.thumbnail,
- quality = calidad,
- plot=item.plot,
- fanart=item.fanart,
- contentTitle=item.contentTitle,
- language=lang.replace('Español ', ''),
- server='directo',
- context = item.context
- ))
- itemlist.sort(key=lambda it: it.title, reverse=True)
- if 'pelispp.com' in scrapedurl or 'ultrapelis' in scrapedurl:
+ servidores = servidores.lower().strip()
+ if 'streamvips' or 'mediastream' or 'ultrastream' in servidores:
data = httptools.downloadpage(scrapedurl, headers=headers).data
- patronr = 'file: "([^"]+)",label:"([^"]+)",type'
+ patronr = "file:'([^']+)',label:'([^']+)',type"
matchesr = re.compile(patronr, re.DOTALL).findall(data)
for scrapedurl, label in matchesr:
- url = scrapedurl.replace('\\', '')
- quality = label.decode('cp1252').encode('utf8')
- title = item.contentTitle + ' (' + str(label) + ') ([COLOR blue]G[/COLOR][COLOR red]o[/COLOR][COLOR yellow]o[/COLOR][COLOR blue]g[/COLOR][COLOR green]l[/COLOR][COLOR red]e[/COLOR])'
- thumbnail = item.thumbnail
- fanart = item.fanart
- itemlist.append(item.clone(action="play", title=title, url=url, server='directo',
- thumbnail=thumbnail, fanart=fanart, extra='directo',
- quality=quality, language=lang.replace('Español ', '')))
+ title = 'Ver en: [COLOR yellowgreen][%s][/COLOR] [COLOR yellow][%s][/COLOR]' % (servidores.title(),
+ item.contentQuality.upper())
+
+ itemlist.append(item.clone(action="play", title=title, url=scrapedurl, server='directo',
+ thumbnail=item.thumbnail, fanart=item.fanart, extra='directo',
+ quality=item.contentQuality, language=lang.replace('Español ', '')))
+
itemlist.sort(key=lambda it: it.title, reverse=True)
- # if 'youtube' not in scrapedurl:
- servidores.lower()
- if 'drive' not in scrapedurl and 'pelispp.com' not in scrapedurl and 'youtube' not in scrapedurl and 'streamplus' not in servidores:
- quality = scrapertools.find_single_match(
- datas, '.*?class="magnet-download">([^<]+)p')
- title = "[COLOR green]%s[/COLOR] [COLOR yellow][%s][/COLOR] [COLOR yellow][%s][/COLOR]" % (
- item.contentTitle, quality.upper(), servidores.capitalize())
- url = scrapedurl.replace('\\', '')
- thumbnail = item.thumbnail
- server = servertools.get_server_from_url(url)
-
- itemlist.append(item.clone(action='play', title=title, url=url, quality=quality, language=lang.replace('Español ', ''),
- server=server, text_color=color3, thumbnail=thumbnail))
+ if 'drive' not in servidores and 'streamvips' not in servidores and 'mediastream' not in servidores:
+ if 'ultrastream' not in servidores:
+ server = servertools.get_server_from_url('scrapedurl')
+ quality = scrapertools.find_single_match(
+ datas, '
.*?class="magnet-download">([^<]+)p')
+ title = "Ver en: [COLOR yellowgreen][{}][/COLOR] [COLOR yellow][{}][/COLOR]".format(servidores.capitalize(),
+ quality.upper())
+ itemlist.append(item.clone(action='play', title=title, url='url', quality=item.quality,
+ server=server, language=lang.replace('Español ', ''),
+ text_color=color3, thumbnail=item.thumbnail))
if config.get_videolibrary_support() and len(itemlist) > 0:
itemlist.append(Item(channel=item.channel,
From ee2ac7bed045e838ab68dc9531c563cca92dc2b3 Mon Sep 17 00:00:00 2001
From: Alfa-Addon
Date: Wed, 4 Oct 2017 20:07:57 -0400
Subject: [PATCH 12/13] v2.2.0
---
plugin.video.alfa/addon.xml | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/plugin.video.alfa/addon.xml b/plugin.video.alfa/addon.xml
index 10c222ec..0ca720af 100755
--- a/plugin.video.alfa/addon.xml
+++ b/plugin.video.alfa/addon.xml
@@ -1,5 +1,5 @@
-
+
@@ -19,12 +19,11 @@
[B]Estos son los cambios para esta versión:[/B]
[COLOR green][B]Canales agregados y arreglos[/B][/COLOR]
- » repelis » allcalidad
- » cinetux » allpeliculas
- » hdfull » zonatorrent
- ¤ arreglos internos
-
- [COLOR green]Gracias a [COLOR yellow]prpeaprendiz[/COLOR] por su colaboración en esta versión[/COLOR]
+ » playmax » allcalidad
+ » cinetux » allpeliculas
+ » pedropolis » pelisplanet
+ » flashx » gvideo
+ ¤ selector de temas ¤ arreglos internos
Navega con Kodi por páginas web para ver sus videos de manera fácil.
Browse web pages using Kodi
From ba85809c1d35cb5f61cf2558ad7cd6c43dcfbc1b Mon Sep 17 00:00:00 2001
From: Alfa-Addon
Date: Wed, 4 Oct 2017 20:08:21 -0400
Subject: [PATCH 13/13] halloween version
---
plugin.video.alfa/fanart1.jpg | Bin 0 -> 856342 bytes
.../platformcode/platformtools.py | 4 ++--
2 files changed, 2 insertions(+), 2 deletions(-)
create mode 100644 plugin.video.alfa/fanart1.jpg
diff --git a/plugin.video.alfa/fanart1.jpg b/plugin.video.alfa/fanart1.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..90881b675640986df5ab675b101227a361cc5474
GIT binary patch
literal 856342
zcmbrlcT`hb_bwcg009Dq9;zWgM4ACYqzDEGG4$SB0s%r%X)2(22)#@1ARVPw5k;l<
z7CNFw0U;nZ1PiF=y*cmiyW{@x-T&^+8e?VewX!qj+;cwjnQP7cpSAzI1;C66Mg#y0
z3k!hA`~d#50WkRY?EmTb_a^^OH~9C*{}}}ELcl8Q(I6IH0Fajj#LM!ZVSoex00e@V
z!+`&NfWSaj01F#Cgo8N@|DV78-(&ywEI<(WKQ94L5DNeZ1HqUVPM+PHGHmh#0rOd_
zp|WZOMQbBIzziEIa1el>tjh~v=c;L=OsKJfbB#|i@oc`4#ep0oB6xkj-`9A3>AkBh>qyF?
zl~IAVI(>h^wb#_p-qubDD#VpbBC*ieh;kFvJ_8_5cu@y{r5IflH<5+FC-eJ=vf*fP
z>2NA9AKOeJ$pDumiX{UmX7E6IHI!|oc*rLmPELTa;gS=kG2{ez;1Co^r6;6|VX1UJ
z!gw)y2>SnP1UUK5jDjhv()@H5aT+h$>@w<8%m&Yr_JJWGblidx$@5#us1p`|^Y%*>
zpoaNBh>MDlId%l_=6$^^=3J@j_jk4LB4JE
zrc+>67EZ}q<>l%ndpCl;KV|X(9Jsiz=$z>un^>@sHFTbcs4*NE_C$<(S0G1Y#jwOo
z0DhD^8%^sZ4Z=eBC>!_RC98wq3u2vk>{y6{-d`a^F;I)Z_Uwp`*FSAnnU>tw%YD~j*R+bSL0
zB_QpZhs!Xz&8PqLu60gz54JX_$>86|3ik7mTknT1E<5e-`{u6@{eE
zU3eIv#RGQa;KvzuaPULHN?8W6$iQSI9+$tk82m3@5_RU5q75LwK1skcOl(jes}=;lq;SOfk$8
zEOChNubIHfo!tNJ;tpXiq1RM|IW2>@*!__FgK}kbE);na<;ZOV(_*vkvWPa{A1ayd{kerb8Uumm-m>uuGia@V-65!PJ1UQjt
zD>KZiv+;mOEj}2Mm8GZICBHl|v+Lq(P*t>OeO)6t0U|D>K5K^WuU2%bn)G(7v)q`e
zLOo-NlDuBf6_!5{FTWyrJ9GQVg56^0-PxHWAqtOmK*7wXA6h;XNcBCL8*f$mF8WAV
z-x3?XlJfJBhkX8m$MrX2QXNSosjBqK#`Eq^TzYgc0Ir?J_cg>qD9dyTzpxe}W|(z^
z#uE3%Rit7_Z?6QFIldOu&kX>;vUo$l0N@ZNmxoOsgSTZm$2bfD;01BRsaa}FFZY2%
zhbTs(2*2P5#aN~@1XQ8KF!+87q>v0EFj3=wT%j6o%AA@8Ay?zm{zV2lQzPWg_E5&_
z3#H@4^$uXelSf%*Nsk(J_%IqO_ziMQ4yU}0K*Xv-iQv5c$gGlKb0##-`%&Wxi1nYt
zW%NQ>II%b5C`h(wrvA>vOo@o*qdt1erVdN2RQ&2lXRCDC?WGdQ?)n_FppZZ3TI|{7
zgCpJ)nSHmvJ$pzU7)p+XP#;Kw4e#u<>XAr70gQC}e2~}BIjyoxYXA?~O(B*S127ht
z2&YvHJou#rL+C|UCk%3?($L93ieY?GEZ85Exs8hkvQgoWVLnM&7}FsR=7XInq^@@|
zp)k3cJL_M6xW-itMJFQxM5ZD@1b!LlzZjArip3{O`!Jznh#>ZVU~=!(=qr&ZC>kfC
z|9V^76d_>Py}l32UCFQ-O@gBeI~Uhqy^kE?
zbS#={C9dKJ7EF#lY#4p+0chz58itF1-f{i$eYW)3`TLUB=^}4sHxC!{(0dsvjE>G1
zOOJiXyxD|7pyrKzm`{9$p5@hGuNbZF2$-0n^4PhjY`
z!TkfH9AFuUsijE8ZZrTa2Zkdqy#z!00rBw=8V0rwBBVix^iH1%UTolc95+005J!t)
z%6W|~%@v6+L=(gi-{Xfm4ZY`DK{jM1yaEC%mV132l(+xd6HxuAcI*{#u
zd?8^PJ@kKx8i_X<@zOUwe3Pr1?+)vq;EChJ5*@FYe3TSMsj9*>+eqA?^Jg%O#jZEH
ze>a#HUs^na+uOef)2Y}ri7njS6l-w-kccpdu5*3Z2;WfXOJ%Kh!{1Syw(4J6bR@Pf
z+h5P)f-Ap4J=ecA1c)H6J%Hf`3Q78eSUzzmltfkGhYEtlRbu)_;thulA@D2QI6N*EiK7D$(=tR6
z1Z^fk=HCYlV4KE(2T{?PNa7${8b)uCi3EH;ATXZk7esm$-l&-AI|={Q%6}OIlNF)T
zuz|+~m_hNM13nJfiW4b7cxuLj5~U1SH`e(~JQR%vFbw0S)TSbi_ewu^z3+OCjkusK
z^I?|X!et?o#`yhX^1e~PJ>Pn^h$}jW*J!94k0L)E?wj8F6k_7J)r@s1c^eq%(E2Pg
z;#5r2Rg=t8oqc_{Ea)_u(S7!;CSTzTQDw|+VzlsXCJO>Qjg)Z^WRKMft0%zsW;jy>
zWAq38g}!4)5i1X$(7o{KU>*`FR?0vOC76_T4Op4rNQNNxRIK|
z$cw?jQ>i%a94t7QpTf-x#?gQ%7=}164MmS`wWIqf(_qLtKjmNBfc}dTgED6S
zAFo0&=@xqEjM*Da5{q86XKhgbfa+-B{4xcr7&xGww%
zZX0N=k>(y;S(}QmRQG@QKI(jn#G(!t`d+Tv??!ERzu3QBpSSP#$I!THE3a>xM`3weMwZrEwt|Rh2($=YwWGh-V~wJo_k<&YVn1wj&?|v$(N>3<
zaU765rK*RiKr9$g(WeBQ(qjvI4H<+(rJ^C3XnGqBl8q%6qDk>II5iqXm|?*{>3nQ3
zl|El?b-sZ5OV|1F&NP0XbTERX%Jx5)`d=2pMCP~&Q4F4*Xu4aqRvQhVnU#pqQ+%3I
zVbMvYS)MN3#ph?EN!lR)cr7xvSMKmt*s;#habxN+uEj;aS*tT%2S6pYUfOT5x=s0x
zQgmv)bl4bpu>Jdc%7*J{C+1^BX^-FH!DWkpg6HV(<*1E_@^^Fmoja8aSIl_)-a0;e
zUf;MLAF@&U&FbATP6VKBFSu1<{1#xu7Awj^+}z0_%AVS3*>L6vK`^?3w$115%bpy1
zvT>)ea$;tlVmF6J#tVsZK^1u8ka#+fjEg}iDk`(f?I_iVrjZaT)l4X=t8DA%o$FDEN2f4DVvwt?Ywdaa-gb}-wuDkGl|`qwfefP4c<`<*@{>0z1Hpq#q5^x+4yWhp
zRgdM&6c7JmIQBA5l-VeFuA2WX-|8r2kc7L0_T5{fvv)mMR6!`de
zZtcESJkhoRD-OuA%kwc7tc@6M4t*#R*e$N#$u{g)l&53~d61N)$iASLSfr}q94!px
zAS~&n3f2ZYcPZ6Dv)b6=4M(O?IEox;cO)Li&tsYlqClarwaN~#;a3l(Of19^4g~9^
z08vz00xvV6Ndo#q$1@Fll6V8m$RO@QC^Pk8(ttHJD1wkWKKE0u3zk)M%_nTc+Cp=ADy|FU5~IXe>R3PL{jymg-9(mDDh
zxPCq`5`=XQ?tOvnd3jdHw_fGK!fnQfj2otF7o6SdZK^db%uDwt7y9;7pJ~R7Khf%#
z9(+(pTa&=q7!ucPCOZz%UyAH37g+sh++2C<_TC%EiMQ?LIohL-Dqz%?M&LdUJ>mozx2gf-z(OiWi8d
zw>?}u2VXb|q_unYe_m%eWapO)fSGI_iVPf-G2+9l6cu$+XvLT|H#jwAYnTRzn?No2
zjPqjJ918_#{19H0KvDG>`~6t}U}xHZ*GHYM=H2!)gatgBYQS~#y2$>zT||771YlJl
zGBR}0L*A>kCyXgPHIWls$k{&NgqxuNfvE$7KCnNm>qk
zSonOqGk}-3gD?c-0kc$AM%T?`2?`1Evq|WfrEV=96`12}8xdL<=k~D~2cOlUcbsUS
ziC7sNEuny%m6^Z`kpmABrZISaD_0e)-b0z9VpFM3mL_3HF^1e`hF@pK|L>BeTVPyu
zqAI>~y?=Y#t0p@29*D=O-KSvsnCRURFc+VaceL}gfbrqRkBrjixqZz9PU6?m$EZKO
z+W&S4NqZm0@QWWKc<-j))jK>sjhfq2{{2k%;Blz+qRIBEduM&$b;*{*
z%<<*s3kBtl7bNQqhX>~|+F^zZ6j{Fu`
z8X0)Ym$Z_yV(lboG=3pl5_MmvTya?wfB+>*Dm%4d)op}@QWhQD?k}V%+%LQ0EwX>wzhazZ|z;(=+KjlutUv_HTB|PYyCE081E%k
zj=X*%F9e>%2NqJOt4mj*xLa=WvKTP!E(;-J>Q+q5@`rAsH;v*j%8+D!D5l+wnO+U~
zt%MaAjKCjIyUzzyh=_?Pj#_zw1!Oof+SXpW3JtLatMJdEev3)yKHDFA^KGi4WlQtb
zbB7zqJ73@Y<=djRsVg35AQy=_=^EeFX79!7U_J-jNUCtsu4Ze4eY|4i{2*i(he
zmi4_3t@}&DaDQ>dgw)^;Gp8(qi=$PdL#{{q`p>1q;rTCn!Hf9Rt7qqtKSQ&O5mi(!
zTPuOBs~pwUrX#h)IB0&_T2i;`!)OsV4oEDV)6@@hl_H3Fp1@c=$J56Z<~#o(QkLO%
z7VG=h1qS`~XPxF$XzmwiYCDbuZjk$ZEMb2xuAXu3-8PqsO0;NbDBV6|tmU~>jYT^a
z+*#g`a~k5cszvl0_~zWdOi`=dcw&AM33(>27}Aq!Niz_d>3b>z#lz_IV$E#^`{md(
zL)stvUwmz@G{m)tk#7LWM*!l1@+!)jj`gPL_dzlH|T;1LvrVc?`NUUxf?zlnhM
zxwA^gMOK*{yyziHat?ZkC7VqiH%JEZ%TW6X(M){
zA)6KP53KP{nn0y7%XW
zuN3-v#J|$fU61(w?A$A5_m90^XR#yZ-&R8B7B}u*2|d_8d9&hN?ynjZ9RBCcLnWnZ
zBhMb&b`ASJWo@WVS2Xb4ETdT5X)fQF-u>xi(3oVHubqUw**ytq`vCWzE5?XG&G`9b
zSFqzFEMRv+*cnpT4Cp|RAO8Snjhp-g!25X<0`^hc~q~8UVw+ss~~`JsnH|o
z=-3J)D6}^AtX^-8RV#YgZ_hhNT-tSE={%@>kg=yN4V>EYdovikx^nSeRqF+9+mafE
ztj*Y*852Y%3RkEP9Nh969G&1!hk*kJ@kU@YUDanWlP%Dd7lcm+GqWH_F?t?B;x5Ex
zEgxfC(%_-eTL3Pre)8yON{1d03Pxfzhzy>Qx$(o*?CS@APX5TwjyHhmg!Qn`kw9Ht
zhmr3>F|~CCTJFL_BSrpqUA$TcU;T=D{o?Y=D3x%h?5TH2zYea8YXxd0{hqz`$ikxY
zt+LC`#n$K7FPOWRl|Re)rW1Q@NWSpo%YUv2W
z!i@`R6s$uWLY0)oJ0GJj>rzD+U2peYvGCoWE#Z9J3bD(Tn$>LZDS)_0W{){%>bjNv
z<2mMb*5Z14^Ni@K`pq$V%U#ZoyXiKR1ZG~EA(#aO50qeufL>VKXlyKcejbPCU`MYb
z0r5#NHfT{N6y1+!DZvK9Rb@Esb@sd>#AO0LnuU53+G7PjA)uAxAa&v
zckezmDh#>O?MGjH9KyP8?-r-I)g94woKv~D9QKLJYJ0l&H)3gCq(x7sIPdW-(0i2Avf_4jk4dzL>;
z8$&oc_f)*f7M8runS32?^Q&u`QmYUV<;2P>qO^#vEC62(n>^o{b30S_RdN0ODGR;N
z{Q@T2*>UOZE7CjtR_GYqOcFp0f_H4@SJ(iy%@OB1C7&)919yU&Lf1lTGOji}%4LJK
zX{~6>{8Wv+v?{?V@IxZx*etZkW&6#m-_0)+u4no8X{sWTyIb%xRpHk<4MrqcFmS3S
zk_AY;iiV+wV_1cGcZYBzdRa{CWE*FuW7Px@06(;N$`+U$BkLIAGgFc_=*F^}#A_8o
zF|MnS;K|><-F4Ela@)Q4_`|6f?E0v~%k_^=4LVecD}CCb;$wK6N6As^1MzRoR+6ur
z@2B)VJFDgUSIFnN_l((`yC+vASIuv*o4OTfy1n!48k+n51%CR#vpznHKUd4M
z@F)J)_&2@K9qbELm#^DzY`zK3Et%+j9eGi(_Rhlp0+-cRe^i}wyK*XNBFIJIiWs(+QI<++N1(v2&CWva38^3!NHR^n
z#LdO`fzRHLG2Pg!%aou(hdfzryN`H?m#5dXOBL5{Xk*&%f%0!1-)`xi^f{@_pTj@D
z>r@`;paq7g0+Qg6fog9w4>cZ3C0*3xNGnF*he*>h^7sVjaTx#&L4;XSAX#kSBIYK8
z)+2H%g8teDT15}tP46#Y&2XmmJ+2l)l$FxZ&(
zr_=X+Gkg6}{!)*k0Z)Fjy&$yo&Utq#mE-2#ij1EGQO))Z-&jiTKkAa<-Ob8R6gY!w
z#@MHJwegQdtEk8lnXQUiTNf4oexdeSD6brAs^_7ORK~0Bms<}*wnOU9kGL4&B*aPH
zIkyE2)GBlJ!@f*^`x5aq@)ziij>=rowF!;9uMWm}>o6Rom=i#&cso+5*bS0V>5fOk
zvXIFBk?2CxqUfYi8VN=M#9#vl5d&OIude24tcZ!--sI-w3Js+5f&CmSFBndX!oha(
z1upVj?|%f$jxt_0pw9}8g)q8)c``3Oe6{8#xP_h;8M7V85-7ulJ3QJej(gv79AK%V>GvC#l
z9Bx($sx^~sc)Y9a!IW3!rGXdPHfkH4jG4d7L`E(|$)-3sPTEQ6pX9jm+nFT=!CCmE
z(vvy3`S|(c2_T+Dnm(Tb2N2_snKp$j>cB(rXxC^YY5;`5$E>=&Kard#&b6}8p9oh4PvVL&9V__Q<2CX_y#==m$y{+YUsWU?kDB<4Xl#{Kfi)Q
zF;!}oHdm`SlOw5ktfY!mR*Ko39BgZZh0%nfVi@yb)tApuEk`A#}QBZ4;F
z)q7_SwU-%E+GAqXwZ4#dFsNi%oV1|Yz$q5^!OO1E8m7U*V!1610ykvC5FW14tt5K}M-?6>ncU~0yjyfB3%=qSO?qT@u
z-JMuTZtXkgwf@AuxV$cMKgXtLspo9y^#Y69%H7S7uYm`f>>l&^I)^Fhry`1rlNs+$
z!%0WdMLKOPZI!c#cV|ice}Wzu+1`-
zI6OQGmBHYW<@OF2ekN74akg$0hMMk9h93U>d8ue#Ekv%X!FoQTM5fmyw0>dUzog-i
zg`C#bdY%k#5O&3uk2u_hBv}Ewn)#+wE7&6cI9!cWJt}=@DEO|*dG~!vB}sOCZNGvI
zh(IYqlVxKRAIO_QNzoP2o(6jCNvWKmcED%1kjB=V_h2KxSIX|5?hk!7+gZ8uM(47e%Ia}X
zJ=aHVwK`?5-Jd^Hd+%z@w(8xlYw`0x8TGgZMlp9s#t{`9>FQq_FWV~Sy=CZz9jI4W
z$PSVIY=x8W*2{<{>eu4<^?YiT-De?2aQo;DwKm(6uH-
zEJMTD6ox1DeBQ70HKGxoKOHHBCGkS2$2_roaIhQ{hK42B&F9!f+vOX}HFn)pB04SD
zoKuXHIwm~+q1bU>?a6wp`F(wr?eyDr*5Z=sWbXKg?LA-0gQR*X%C#=>6$osGZVx
z;j=!yck_=KtA0C-OLz5xKb|%|*DdQ#dc3(+|1^)CyPfzQy)V+5#+Yr
zIKrqt#{Ri}=&3}jVE_l4`1$p(?`kaox=S9H1GZ%Tz?GfDf;6nXPeRZOX%))w=))?h
z856IIRHP1bkyYHj_ply4$-4Qa{UlEOYG#tU@xpd|JH3pXduEPa2zCD#T05As&rJ+6b
zV?1LTZWKPKlxj0pcV(GPF99H|3#196!sj~}#dUcGvctum$M()ncTzbhNlB_;3*$Xf
z5n8{Bq#6xxO+n@Pu~e?$Vck4a$5*wEX5St6UV8n)sqfFq9Hh0{_4NH#-7`+cl+QEQ
zRI^qU%|bnJk84kjjT@C-@~e#bRw{4ukjM@=%(shiqsd%i#|
z&&V9h(vVl@?D?!_NcC`0xQ3NG(Lf5qC&4SkX4jR37>s6#hbmUv;V@Y<1^p>84>%UZ
zkWk*R>7)@MYvlgUl)qRx`;H>{af6(
zeCK=0xfjQR;-fT!k5P|b?eDBTU+$gS-P>3E=B8yc-r1nYsOwo!*E!y^nCknSU;L+R
z_3XvvZ)o=XQr_9I-OswOuzw$wo~qwh+WFh%`1{E(?%N!&ZNIHhSMxyB-S&-#85tN1
z4Dre(QARb~=(y2d31=&1J`CdN{_^!t$ITknnfv_ZnUNfCB$J5qd{R>#ZREfbv-kx(
zgb&HlXyh@|p~>wvr?|VmBcc+%f3n3mG~#P=WQf-J4U2|N+#Jt?$xbZT&8`j&){PAc
z0Hvi3H=RQ~gWB7pmtmgkqS_6e3pK4N)kTwh>v^n}`n^=q8hMsN@ozC*rqK`3v|2
zeVC9!%5F3_uDiwzj+R5&(!yA#OAkAmK2D}R!j
z#z7U^05C0yqT-o3|6~<2rO>7R)Q6s*eC?>W;MC4!@95H}&$TMAIvGX#2c{8(`o#~H
z7x#aSRg455M5;@2co<3KtDUTCZAiLq2;J;Z9@|$hOUSQ3=Srlx6nzWM
zr1kyzsbg9iKlsk4C;=!ha+nU{!Zl--CPy)a#QDc+Y(n(9mulfjAQI*8X>$X?soZh6H9N#```06
zXU3@dXWnBmT^>~AMZ>*^V>@4SquM)Tfr(?9FBE6)J~)sVfgIUP&sAj%2L-7h`-AQb
zOsDz8YIyZt`h3Auc}$jc137@w@*~d>Qmt7hXl8i?zVoce
z`<#P?xcBm7=D9V4T_StkF5>hk*SMgW&~!NnEU6+Ca!(X!8us3#2TROSIj~XypkzUR-$f+p4wcRpjU$*^MfTiYHz@!`rpH
ztL5%GE#O~Kb9Jnh$1nIVV-8op=YRchY|EGp+A*;imEI{m{&oA#tfT0qe7T^Xy^G%z
z>b3DP!|yE26sO4TnTF9;(a3H5Ove3-_l>-R3-B%(7sDUniQ>I`)zZxEeE=ZjErMP_
z7F>Vy#i6PI*agDk2XvTsk*$VpUPXd&)q}b)l8U=MXC8j~S|w36keA`e_RPkq*2g>-Pj;T~
z1zeg+i2*~z{O?H>Ws;A8g>rVqf)Ie2T_7bfRmjmhn%$v0U8mswm5QtDy?v|QkJr0*
zmG56v|CAP4BHSDS{4*7PqhvMhDC*3@*9rS50Vhd|nUk6~@4xrnI$cHFtiKexvm#k=
zHtpKqpEf@~Q%aJaJY$mcuIc*t#;Nz*-ZOJG^Pq2`i(K<>X-v(~S!i!}Dv6HXi{A4E
zvN^Y=NKo|JKqq0E6Fk38QpN0j0wu&`0vxV$Iz9#xrr~TsTtXD=}50kUxN*NAnl{2o(
z_eX9eYP?Y{i`5d85jcun87~jNJyZf5iTs)#DFzh+05TyYzPyIrXk`HwSA=}1a=vH3
zL86Q)?(5=$NW1UUYt$9+`L+mLw5pUIS2i3=T&pCBYa$HgCXm2J^OwPOe9u?P$~(W+b$Z_UIP?1B-tw5_th>1H#Sw+@`{w0$
zLP%#SzU%juNO@1(cM1#fxu>NAWz6MA9K0{j*-bl0pFYM$6j(Tg68*GB_Sr2ew19y@
zVPRp9&g7gp=8r7aKK^;wUa>6&$wsKcq*MlI1y{acR0RON5)Cav#4M~tcM+esYqLBn
ztMx-oHu-xnUHI#Yh3Beq7tZsv$t(GB)R4A3WyVs0tVWLZDRD?D9LeB1^|%ttmCVVf
zkaEaFF-AU~zi4PYH0}JD-{&|e(6m}qyR#zn$l*F-^nmio=Dl($55_8YvtJahAlmGg
z1!N5>EFz-zJagB+^h(iUCyyGYTbv&44fG?2%|xbEA5=Q2UmHkbF5i*X;}ZNL*&M0$
zeryT&WR?V_g=vb=NbT3h%Iex!xz`%q-_Gf_-^2Sp(5!xWugJORLsM>L*y&jPWyz_@
zkkgoFKdxhUf4>U*!@Z)_2#NS4sT;B3uyNmH-8u4nn1h(cQ5E|4FUBI1!7F$lWhZ^l
zYKxE95eZT`_IaZe8YS3cVsBVT5Aq|48j`Li3>8C2R$Bvg!UUe9R#q9<
zdNiOaQlSDU?AS2=JlW59B&fp%A~=DwYG-hK5&C9g*WG5lSX0o&>Lu@VF<(
z)oM&~K3psR%jIvWJWA->6v9c){JIkWthdOXS&ujF00TJ-p+|}b3qI!>8>C1M
z95G0J)=aMwB`6e9sEQkmhn_X_(-0Ee2?u&cM`QV3m&j<|m@k^~e6_ytKGFapc*XK2
zk#;k(M8f{{O-r3~Cf;9c7)Gr@vk~B9&`Q9r$aC-3rKpgvA9bVn3s(3m_3V(}7!?xh
zk#6O1N06>8qxIPn@<`C3*J~V@GaNn~DiW&l;dXF0^>)N^L80r=(C8T&ptK5=IF_
z{4%Phnx2cs->-ScG85!@&cLFWEq!S{Jx)9K9TTovENZ5SnJ_xa031FJIU{$6!!;
z*D^N+eok2;?N}spgR+op(McRhLWWtMXi__nG%i@#pUMpp{{)N&8*kOVkaGVZqdnlb|bzxF(0C>kvo8cme$
z?<2+~Bho|d4t_{ABK5#}oHQZ!cs%Y7+yEaxlSdxa2a7%|PSGcEumD)>sInz>y@dusvenc+PHbM&dft->irL~FHr
z#*|6_?nD9Ori`1!#DXOC+*v4tY8usJd1><5s(BX&{{&Y~HSfI(m!3cGRy6jSAM;#Q
zfJ^bc>Tr13Zj-?d=OI#6(D57BeRfU7IN^m}l)>~E7%zIzNAR0fuVX)FSc`)3yXN!v
zP+mum?Q5FB3dc=#Q>-ezV$)0TW&7iYqqICdBbuT?3_l73=Rkltl6jFxdtSl8M*Sma)PlpnxbU;qNEp7+6_u}Q}^Uj6k#yESpC8D
z(DYDJ{=?_u$3o%ZN3V{LpE0I`o1NCqUAhtJB5Y`-uZ)*NXoP0Xa{&P`jmJ`eN+U2v
zRovFGC=SQL+1x87)294TYf>{f_tCdo+FyzInA2_H61RNsSMGyjvsP2;o->nc7xp|%
zPiyW{eBL;H(sIrRrvlr$w6<#{)C=aacI`f{{MtRYJ8%ki+mEOio#TUR@pj1ijhByJ
zf(;rzI%6ZNyPj6pj@jk))7xm(jA^npid-RWg#yof0jK6v$M)XI)~QRa|4)
zZ!{^OumimVjsbR;aKaY)I>iw!(l8s+LoIP}%N7NbkhRRVHgq*bpNj=z>gYQE&>7{h
zX(bAmRIrezroXDyXs@D-T4;JuL)$H6#;zCClce{5*!S%RxOYdaw$6V21I=DCkw2vA
z*>D4R{b{Yzilh1S$&B9BEJpPY$=0hM%R?`mFP87oB3#25=OY7!#A{rZKn4H^P!Ma+
z#|e`{#P##R*&y(TuoOG*LjDV3q2@Q`zU&25Eq$LVp|~lFRCrwPjcl$iQQSGQJAUM6
zvR%-#bnxkqS#H)>aAdg71-7Z^K}H!={FD3Dvq6$s)$N7_%C{em?#;$R!bN<-5`=yA
zazJd2gbpR)^99wQkxqN#(_D?UP1pc|Fvy*+X3nrlPC%)O%ULGOWMbr@t!O#5{D!Mv
zYk_9x%>x=bNu?Mqi~ZQTm>FezeW8C9$L^gZ!MiFr?HYb$qQYHhCJqMYUCARC56!hz#h_%U{Z
zWoqVg8qvnFd6%x+?EGd-#!VWxzLwSIN68_`z$VCkmHmWBLQW6n}E;~xd~#s}kc
z3p*DFNoULQ2dcU^@2pgB(b9|I2vxN66L^@W)O@V8-pJS>G+XiIZLN+;{2&_~YC1?s
z<3u?mrzQ#uDrm`zpFFbm(6tb;P}{%cbq14ErC^@Vf?3XnMLH
zxw5ZIq2o(9qAqy}D98fH8wo0M=aSk{X-W9{uz<0@_`*0i2xh7`NA|yaZiV+;Nh{C{a(M?s)D
z5HuNGCyK@4@ur0U*|Vl!KOC7x^!AGzTsmv=w#arkQ@=yGF;Gk&j0XTgTs3^fg+vn!
z+WJfT#Lr6*IZvci+`dj5(J>m>^gs~ALK~9Jm>jw5F06G+mSa?+Xh-CA*lp!6mhV;>
zuMWJ+>xs|!bvT_=7cg2`=w!5PNZqoDYmV*ty`#%Y+da*nh4Q8(7SC5^IA|U1KD(iN
z^V+F-wGYotR*4v=eIkxz35RF!0+r>-)`4Pr@w#G;RVuGI#&E?Q=bqTTd
z;(}hO$QsC9C#+6LA=mqtPL4#0#QMHVb)7Ox@Qr8V>*
zc}%;?aILM4z9!Kk?A1=uprZ9EVn)LIg8^Q(i&1>*Y56h}{BQ~XUFsS%Fid1tc!yc$
zKT}8~itsgMhuAT0k0GOd=lJquBFaBch7ACb8hMNAPxd7AIHJ+ff`xd|ltP?IEOFgm
zS0|@e6~`*xB2KfrJ1QV3D8Q_+0(YdTS1&>8CZA}=pG>T76u#%onN)k?7v&O8vG(A8
z@{R5GBhMxnj7K0_V|K6v71(suAT1!pvG!d!O6!mBVj^Odkc`~kY2ONeQ#$iYxAS__
zLNsh5@0NX6lk#x9p8la*_AnHkWsijwS`%2gtr9U_2B}=3P@D#Ddvu
z5v`Xc1hiS-*%(9G%MR>vOrb%$zwRVnX#^W9))p2wSIF7H>747Vjx~H{HXU0|(0uR8
z;JgG!1>0XZ#0L`u6(uSf5n&i!__FTL_nCs|t$#7lvJ3FfQtK#RvFXr&qx~Y6Ko<6Ij=EDZ{
zj+R+6Yl68->qukIueUFk<(IK6TxqykRk&vmuQ;t);q`7%Fg8ATF?N3EHUk00&p{Lw89HlBaqp4_Hg)v!=W
z?cI@@S&^5GJ_*utr2K7UcXtru!Yvw0mU3%+U%}$;Kw~3)a3JGlWRTDYVJF`fmr)9<
zRBODtWL`-Iz1)wHCBD1*>2M@#O1qa0}HoRvV1GJp|6*cy5KJOJTbo9?~kmj(5u_D$5IWib+nXQgK%(@0%I`@;I1Yk^!e@pKTKg&k#M?
zkj$9$N__G@?5pYZ{paPk3|aG^b+ejrrxoHdr?_h0hH}G616i9I2QwGy+L!$!B|B&Y
zMVU9;WnZ#BluYBqH~GdnfVkll@%k)0kLKgXXp@Vo@o=a>;H}DPa%>!en#qd>k;mBC
z4S0BZSG(Ctgar67P(X4;?6&DCzr>Kln!y#1>O4A`s;YIxr0fEyY+_Z2UGC05wxJl5
z<^Hsvr&h#@fF<92CkDKqv0>rAxPC@&_XBH^-QD8BB~lnA=+T8TjHA%bgP&FjAA_9|
z^mDKfTX=)lB@P|9EGjlx|tNGd5VVGKD`fWo))Y{dUocvFox~QNLf=
zJ=f{`^h#dXjyhG{L7J2sf^RzuS7aLy1pr9TsL~vVqqU@)otrp!4e}wR>ddhjag3xc4)z=gZhkV*I&&&OF!b`;#mO~
z?aKwVBA?A<%?g9!SVxGQT;8+q_K|%%Vk1Lb1v-hMJXkF?y2|`$dNCHZ29vI4OPB(2
zr=`HPAPwhdxcJxt5qd-Q=F4->yehFbon5J(zY3!bgw_3e@HY(CLTAtLYla%`vNuF2
zCiXr)D%T8(^|stx-QN?9r0@IIl--m7UpMp*cZ72DDVlU_(l?o92~=k-j81Hu7XglU
zlwt`%u?s3D5c%1l+l#sT8CMmIbAPUEPyMLpZ1O#Ne(USWo&Nv?4?zpcf8lQ*URSx3
z_BdC&OWpdZ5$DTdP7yH?Nkz8tVz^S9OaR3%C~lZp1a0|{CC2h0Y`~Cn0Jq6Hxx4Co
zv~%ajl?(d&bFK0#%ylR(09##yq*A*Tb6P@=*|dR2=A9;xzs`}fo^kq%y}aV?R7wefLynYFHWklE
zmbl(sMhC`oLh}+ah)AFNgnb9z$?fZejHM6TPbUUt(t(PpUJYTrii7!}_@s@S@D>AR
zVhRSp)$oR?2w7SMC7n~?X~gnwXpu#^;z?@+{&i3(V;7};@=q9YY5m8oYiIHPq%LKf
zt&olGunL@inIUg_dX9tyTol4A+=DEK186fKInJLZJVCA^ZDay?ST9oswU%FTSo(RW
zbG607c|Tte~f
zlU3$>Wxc!zfL@mHfFlcEpGKnCTVN<~*fav)U1yyXy-+y;_<*v3iW
ztavS#+3t)srI8#9($?zD%cSpKA650!EKR`>;O@m+Fb3JMnZBt}7;Vo(u
zsq&WAGaQKqNw^1mK_U8#Cd7Fu7hd15&A>{_>oyc#9nyXEi2
zrn||18!o?Fs4s2kDO+19gyuF{$4kj;#=tLDV?f@OBo`q)P>LY!e^GSak8JMmAC8EK
z2n~W*ZA2(B8nY-4X%MqkV((D1RYFV0u{X71QzG`BMYXl}-c)xW(b8+LQ4_|Pq9*MxWy$Ju2#CiZDis~d??Q+4v&6E6rR-qhoHrXn
zzEHpTS4@s#0;m>*{C;tVrUgw?rzV~hr3@I^%Zeo6_3z{BdA8Lu90U`O{{iUZcNDfW
zVj%$%Ra0+og)c1yH){jsB#%~)tJ!%zjIeoZLMD~_zho!9{a@`ry4upIQ`Y?lQm<>pGqyz
z*9|}d#fx4OVa^8h*TiI+$34qDRfMhpWCAV^%b&vmx^anYFqGMlxI2t|ka
zm{_waxJzwJ99lt%IYvgTTV{QF9wPm9ou_ThbAguy5@
z#H~xS`VXU}h1qA)=?CckW`GWY_(fuZPy_U+%)DjOfqpGHng5cb0x@@8uZvP(q^EFt
zFeyn0;$TCY
zui{&znDtMI36-;J0(XT4>%Lj?mdXT`@q<(djr`Pg6b1T090g3n&a*^n{Q66*a4Ukl
zY~#lY6WDl_oNHs!7z@q>|F%G!!CwD^xUu1zRra^t6m&ryzg1ryB@lLa&DjG$W
z1q_NPDn{ffvE%X`JpFmH^agUh-pIABpL>f2mS*Pm$6#PdPTftMqA^bEbprubBiwc{
z5t&3WWu4513-Pr)ubzjM6BIK4HjvHIHjbj{Z@iVi3d$U46KYq|;<}VzmkmCMddHG49-!JOu}Kty)OXperR-kVq6N@0r6{
zJDkU|P{mY30#ag9Jcv|6s-^pEFk}4!H>X?jIMyWTLZvM)DwAtW#Y2on?AxJN&2bHK
zDK?MMIQKgUo>k=)->njT7h6-8ydgSZAZJ8qZpRR2d1}kv)vxH7iLKWEfNvSEN(gIK
z2qq$rG}1?N~jVeW#e8k?rt&wiUnX5
zJRW0@-Yd1=UNNh6vg9|Ew$eLl*3_&o{AK)MEuqK@35j();;c-wd}gkEp|O+^$~Q~v
zp%+%~&GuL<0DG5fpsc)AIC)~52rfWTF_?ju3C0V8Q6y|*KL-oCPuIe%QQAg#8c1;Z
z(EjK|bMdTq&ZM|MiP;9{x+(LqAi!!^F^V6Z=0UAp+`y(=KtevsE-+wVNYq@T!+^P-
zB_zNiaU9Jau-7sq&MI1)VPTUR8M^txIT}rbjYB7;{JNAvAq~dIeRJ+?8v%!6{it5
z9MbV>wOdohTD`quVOo<*Gx;Cpqd~`hcze5SXtm|T6X&d%Dk
z_WLv877l5~@AMnAI(_FHO-L#gM(y?-Ll=&@65=M2{rb>y-q?m+cr6*-dE9_SNn=0|
zHcq3O#3BKdE?NE8JFvgWrZROlDpQa&%I7|jf^b{WkN&9TtQ>@tiE|Gk=NKA;G8EC}
z{_$i#MK9(}SVqiJyKf#L3`K~yX@iB(qUz_~Pn92)v^gsVgg$gy#DGCFB9qNnzI@pd
zq=}l7N$_Db;kiP6^HR5Fkhd7i11ej2utSaqo4tcAf*xr&rL6BxB<|~p9!!54&_-%X
z&@=)Hr?MDoxRzaW{z5Itbg#tHQEOFl`>s=Ac0>J)f6p!3;m?AVx##wm$<`*y1PcnA
zjW0fUWfmba;x>d+qflGSv?3_w7v-_{jY4Qb~@;|gSU2{DoO)=K`mz`Q-
z?x%)UPRy^wN28o=gB?p0m*e0N2f?8PV~1Fc!AJ%egUoP`vdT|#2^o|yn9>X0`Y^yI
z)7G4R*Z9KeWo%p|e|dfLs)2hF9lTqoRJP>F?$p;h4}P52`Ra!Y`P~;YFYVY{cylrE
zO0f$XXdLcqydIx}%;_$Ea;%DaVFs7v5(ByHv;z@uLe31Vq7pyM@#}jebr%9rHnfj}
zvq>2sIVG$#pubA=nfCc&Yr}>7xZu;#!-?wPDWh501FAaq!
z(jN&?Qb+YQC@CouD_N%Izq*SzdI_7S9#B0|E05L&oHQTJzcUIhZaV=QcHjM@^2N?+
zRT&^TC(ZH*mAtdNRPu@Owz@UMK%jWFa^8YDp)spD?5@XZWFusT`NKNO5HipKtDXfG
zR8&$nSV|6}uGgM8`fJwKh=b3N@3l961Q)zD*bwfUD3IjGBNdP#P9o2klt<-6M>^Z;
zLZf`-0sRCfU?|M|0U`=ep$7~wZkOZYl{Z;cSX_Q?BA}vUFUV@BX%Q_SpJLs#e}L;t
z&of$a;Y=;mbQYf9bD~D?&Im~K5B~qFRKHb!qm+UUj+~91Y;ng6Uo-Z|xA{H*$OUl}QE61_ScRx`{(f+O)UN$n@t#fazok^W9hpRZ
zACvEW{{-&Qm(L!1?Ab4tnx&Gy&D*qzf8W!2jr44;r*5Ckwog~JYK1O+P{}9SzshGM=BbVKS+H~WvE|N2lapjQ0+h0AM{^m8
z{TsOkz%qaWW;0T^j-dxsAuhb_`OpTA0t-ngRyb$|Bz}0}sPsn7KqA@WL#_}`JZ#I09yc)t93U_nj$3dOt;J5{?&y|#BT>99i7g*&
zELk-&c`NdPqiI#syc)-wP^&kP!|+e+8g+pR(VSfFD@zylm$Mv2&&$};x1Zcd`?o1{
zlg5s?zxNC#V5sI)?7lBMA~ta#rg)lX{`le5dU&QE@!Ry5lm7vp-ZfbLL-*&s?RKo~
zzO$qJt_)zkLLdy(ZCpsq?#O`l+cg;IlBFsDsbjC{LJiB#Bwv?N1E^6$Z?|Qvk-2+
z(YgCppMtVFM(XZ|zB&GLChSJ#-^qngIdVGmY3`VlE6){N6WEkOS+`owZ+TzqB=x_^nxC_BY~tzy62OtN6|jqm%CLdYO_Li;K?;se4BkbC10$=U9tAsvn%BYm%Sc
zJ^OgDD?In^z8a^O`$=kw&gEQHNAYspVg>uSVw4&Y
zvR#veW{tt30z3$0JXqcvS1wBvSdxWY;?AvEg7O5iIoYi%Pq)@-M7$|{6TbDXvGkvy
zP^5NIZZ)5YPYM!{-@AP2(gueO0N!E-*QbRN*2PIA8$pX`bPJeJkU-aHf+3ZGsjy6(
zbkJLFc5XQ2Lr}UB^+AWcK|=mM-@I>QetI=`y?LH)6h=wGC(4a_+d>`Lfg&d*#mh~x
zdPh6d#D_Cd2wn!>R*YmTR1aauT>Ie}_>eP1FyQU`yXuI@z=}OyV*$
zA&l?oRhJ27e*L2G%2Rc%^d3xpGyMB$jLfv`M^J36UaVbuUNk3BH$b15+%(ITu2Ii*
zYx%!oo$}Q?W6OSEotvZo1IXUnFQ2)Xb9!z4Gq|hes8$d=Y2wQm0L0v6yGO;R=b-BkgRuXPy=Bg31{?Ak0cXr9X;af*@l^-fAow<3ek{NkKHWrH+BK+qQI(6r?
zainmAql}Glvin~|5%HhEkh3KtHvXbyFS-<(HW0tOU${yqxPiwxMqnX7ZF6|$C>`Xa
zjA-SuPJKN&zxkgx9^
zo`*bh4SAMAPxcx9%4bN
zj2l@7aVexq`E0z?Xd%j!dEhZzyhsrw=E_ZP{ff5JuDMpb<{O>PJP@QjpW8(vd+GpO_JIkk+-N_>xRPECgL7PY_i6
zUZ}lWx9&!p9(UzT{|6Wvg@JJ>4$N1@tab#KfRVUGD#wztk9+V)udcdVWzzgXXyrR+
zp)KD9u_&reCq%Jr`ZDEOoCs*;~ktlhZQU@|ERiS(>)|2*4w2Mf4Va(;S#>6v*$
zXZz`u*W9r|9r9Dat@ZrYZ}%_1lPC$F*iRsaBs65Je{X42xi37o
zW1Ac$=>;s;rFpX97Z|Hs(wTOI1=p*8T)SGSXT!yoA@0tBoy@IwDB$%@{@4;(z>+=Z
zXe??TeWYh!fC5@PEH4XD*LwHHJljg9%|EHTVj?=zuQILq8O
zSjcv&%q~18o3Fxfs0fEF>t;1z7Zt6^5U%RTaL?FT(pJ9Cmj6ax0y6&I>Z&36Y~9vb
z@WQpka^n)>FbWrQvub1@R-Sa)t%(8xJ&20Y3xOZr2g^ZoqpWx7<$lz4Hp&2~nFOJu
z^}`)<>gQPT^1>3VHN!@QpkS@uud=%a<chmBa+EfiEr2
z{<`5W&uRJLyIZ<|Yfew-iPO=DS&8(AL%qpnL-9Fl=r%4@EUD+BsK^C$<`NuABF&cEp~;NKukW>
zla-PR1lbA28gb`7=0Tfgcuc#sn#YyC=LFbR{;_&;E#|p=aCa7vVFXu$L2?hh9Fm6`-OZDm&~cU)*340q
zxV;R>lp7gfvA45xe)i3#*HL-;V}~}c&WEF^MOC1vc*V@g>)BcDD>hFTO1HG1Tb({|
zQ_oP|PIrFdIeH$uvo@bTBQxis5#o1XMXLwq?9DazhFlm{tFV(thodGV2OFfzRX|SF
z*eGF)8eu>Q_+W-(`U{C3$tw#1(avZ5>Hzf)KUy{q;6T$xKB$|r`*>wAW7(mB5Cgp>m(EVdY>V`?4dU(>Xcvrp!>R-1HT>
zsl@w28>G6Ih>TT%n)lz}dZTz&Ae?tq65OoepIEn+!oM8lU_tY>xXOm*O(gg{QDT4^
z@}`xWFU`J0^r%;UDp$R@_UOMC2hq%OICN!fra%%%4>vrq$Noy*uNzU1
zKDU^U_*k!{=kIY8A2L9u7Q5WNbMsBV0(j2ck%A5}g8C7|aJY#v3V`N!G(t*a>u#%L
zn$(+-+|uwNss#$t8K_P(a#KPYz0npG$D}ZdO4Fsuy?W+G5MM}v=o6o#uH`@#KMA08
zWp!m$JhCZq0fn+8+1mh_h`U4_g^LyKv%yM8%cDfcbGt{5ObZEB{b&~g5GZaM9$hf4
znVtwLx0k|Hc2&Kzqo~Qkwrb#6gq085gT8Ai*7`wkfAm(TA*uDWJ;n59wrm<0ii>x|
zpcX&yaa1iQQ(}Bt$;Ag2I6|F+m~0@SO6IUjk4Jhjm%n4&%^>}n=APnfL?y2*a1bjn
z^9S)^a2q!cH0Y)EIjkw
zekjXOvj$;ryuVFtq&+H0L_om!t9)BK2DzyZ1?>a}9IL9pVx#g37+$~^7y&wY!NGwP
z7e~_5MFE(#f25uTWg6_W(e^$=w*oXS423JC`h4&q@*YFnzW3$9wBi)fE9c5J10CfZ
zCp1k>{>$x$ej9UwOXG+4&0pS$n`F^@zdbVG;gDN#&o{MK6ONO(>2cE&x=l*8O#?$#
zVocG4`kpEc^qN?ZEyCB>2I068VXJ!}U0;T-ichjlKiSOsH)%Dcm|hOdJ9?6T;c2HT
z8j$a)du#fY*e_wn!M@+JM^gv#?!V9})D`#h>Y?Xim#OZD0s*HE`yZQL1*DT-)JEuj
z+CgS`Wc;jue&x=p1FAM9=a`i9(HMok$?WQCA{N@k{hEdyyled;96lD`WTQaIjS_n3
zEg_(fOu0CZl^+6$!n;j-br#As@V?k8;?@U*D9+pJa)~1>&HN6fJy1xSW}2S99f_a-
zg2OR-g&2TcW_%Pfpk0djNrRcR!b_F$xhz9a0C$tb&I`fB1B#;<=QF&M-&?=aMXH_Y
zzdK8lZ$7SlzJ2AcTgu%Rq0ZPdL%fh7|67J|#XVlQj`~^6O~w
zK&Uh8rsyh%7+d2bma*pXjg|G*&kl2kx9`Zo`0Kx|={%DNSq}JJQFr4OT51C!As!qE7Z`!K+PKwZW+xiTIYv^t#c>?^O=(
zB`cK_uyyVZsJh7(HYD8R6ALSv0D)tSgh9FmZUl;WY>coJ?uv=FoPi;~GWurDw?})6
zl5~5;JI`zWKAmwELpXb0b&b9Hr}Au%-RacRj^|_5npXb<*jB9^Oab3V(qru&U$d>c
zj4t5zRI8_C+cy@O!}wH0Q8kDWndoS7yi_v1&(6lQL3*Rc_#>kkTWex%#@C|j$DZlw
zq_vi>FMXy&BFxo(zPS1z)61NfYsNd9)m3rtdH;jA4+iX>WS{MPDH>hd;eL32wRB&g
z@!H`xv1UUBx$`W-z;1odso0!Nsf6Y`FQ>{JdgZ<2H)C%~!kvIJt1o>73msg-D_3)C
zChlc_xNnrtp;lLuQQN9*(_z{O%aA(-tq1khLKy_S?{To*ZyVge`tFk}lF#KMb)txrT5
za1=u1OoQ&5a5-W^U2$Flw6@WcR!uccn-&vVi}2gG&5|Ft#?n20?c5-HpPzO~*`LP$
zdm(Yf$S<^aOCfR_c0#MBP*;+hCC!bY65I16!L
zS(P`faHm#dxT(|F!bw#ngTxSfV5n2%s%UI{2%=|X{XSTtzh99(F%i|?w`E`*N*z?(I?d#{z^O#
z?e$d+Y5*yvf4Nfib7#}fQMP;v_%}4OBb0ld;GaGGbi!&=W5i
zt}>)cm~88-)A-@bTPw2~U6ov-C)Hxq=@;jdjgBZA`+#4J-U
z3E;k(*yu=aFMX2x`>PxM1}e_Yx?KA63zPPj?K78d&}2otu}1ipx!C&8^s#1RGkmywy|xjT{T_MxU@F6HTh6K3VC3iZqx+sWR+lj$T8`R}
z42Ac0t12~>*dZ>;?mZW5uUwjICY4sA?MlQSHA!X$8=gaE-RS?iT;H=aM!WFIto7;qbudZY
z45XT>fAdpmHCOXLQBH7ikMKwpU%yl+ozkHi))jKFEpxl1vH>Y9R#_>~#=4yM{HYF2
zzx}$LrQ}b?*Wdt1@wF^0t)defUA%6D))04_Oh3k>IsA70+JRNSCyjgXdwGR=(C%R+WgB(_8aw&|)6+^Pir6+!-^zOVXwBvI
z{Pel{jKDEVBr4t8H3U+b#)3k4dhD>kCM`DDR
za&P*##1II&g;)Y1cGAG-tjWbVxt=tSEpUZOaBxz*z>^0LMBiN(Y1QhAE{V*SiHQ09
zZY$PK01N;r*)?XV5tze(TQT9M2MI%Q0;1gZS3{g49&Aer`98!5e>x!=n|b-gzWQZj
zDA#DB{@DMP>tEMA)--5!IsUqS1AZfGl%Xtn#k|6&)#1wkqPtZmYvO1H~#j+!N3+~cPI+0
zydBERzNGZMb7lnlQWodsv9~|-H4eOy%E|G@*=I0T7-sJQmR4z2?^~JtfM@WTx9MdV
zOV-H_K%TRu+c&7EHYL%kCNgo65^hVL@kn}rZh`coC`FUFW6S52IzR`0m+7%4Yp7B(1&AU$|YvTUw(dHm!oVEaiZGa+VR
z?;BVj;BLkr{-`s(SZ+UOMUg(bSDO9#cksn_len48lK;Gz=9$rxE^#P*+Qz~uL$ug5
zCH7UC1nZ%SkV_>xsRobiJTRd{8?6%&Y`oH>|)ua38C!pUok+iyQ#_?GTo#-}3N1$ApIgQ0vLMuv+k*c}a5Ne-ed|NDv9
zEWp4r8i2j2(ig1p>PC7W!y4h~_ibUU`RI?3u$|1ifEtp!l_oXr-yN_DDaSDPwyWy)
zlklPyTe`p0>J#gk6S=^ceKXI4w;}(Eh`GTNJHzh(adYFl0+s(v{|H^{yO``qORc?H
ze)O!Jx+~_8)y#cIQNE7ct7cP(xhmT5z@$q>Dk5j!z81lM2bR;06Gw4kI^+AbxVQ;z^WGfyH
z**5Jf{Ijp6Z#TOu75w@9K=S0Y;-c#!*Ux?Dz-lLgCu`9-w~ytC*KFUUf2Mh8fk5E*
z_=2DIPoJ1jvtGGeE=>P=pkmrU0IrjC&{OHQ*^8^53i_`N6IyYKte2@29Z1{pFz-Q8ZUOU
z-dY)x@=z_Jag6chnQ0zutJ>w7bJua=u)Vk4U`Os#_iyBgUl;oyEk7MUiTjdJCHbyI
zDlbKn$#EP>`f&bAx!`2`32Ir`jRGj3xGX;{vY+?iCfeqDHZswrrR~sH{zoBi+m-q}26f||5
zxufJvks9SegFEhu96IEYe}8I+s144P8!ezBbffrR+^XzM7re1kRV=$>y2a)8%;d*M
zZPD!d!P1_`_M~Zx^>|59%esNI%hZEGO(#XSoEhnPw)dUr^BZJl{jJ*3GBbK48VIOs
z&Ys%NKVmhgJQee=+cJvtE~oH8M!$-y+$r|z^xKJZm&w(P&AK3mUe5^iHR2iFcH2p<
z;N|Bdk*KBwJwhJJ-2_Fj6JmAK;{m&~@KV;i`H#R|*`AON`n!#ziyg{J%~`}xG1{L0
z3-7!KRQUS>&5ds%&6C{+OINkI0)Gr$KHLedcCY+CeNU6M414mYkn#%oF|1uHvsW_U
zg|JwNZ<9<_S?42KEa&RODxHJd2MpdwyPCSjdMK^Nc)d<$m>ERZ!;pO@Q>}R7s0%oJxH4Owr{;^%4m=2_ReRvOH62b!RqvZtqs9;yV_->iRXanvzKq
zNLmyp&!C=V<_l4Snr#l#HoD}m)TV(I#op;HJMT2SlpF@LsQ(~(wa(CD+MYy+5m2w{
zC?YugEhNK>=A7+#uZvpq2{CoUo54H1278H
z)VBPm?iI_{vzxU4-iA7Me56W$^8vdKrG{l~Knm5QRGb86!)C&VSJb?Ie6iV?M*$SDP&O;s!+Jk@ex>YtNk~RbWGkJhS2-^XVuu4CRv5!hzbiOD2=1$qOf6F%W$c*U0AvhsdQ$FVk6q8VpNW+gw%s%2uA7Hl=HtmfoJsfNHm)Y+znX49*
zf7H38OCalI?A1~~ES6+aVT~)h9X*2lGKvDRc_X{Ou8N__m!CG=?;X)Rxf5x@j~Ps*
zPvK&q6zTW#C)%tkO22-mf5)WyJ*;Z=8=ehaDt}5w|3_c&`ZIt4r$`A
z7VZ9ixb$qL@DuMpU^MIU?i-!!W3Gwkr>`?UTq^JN{PO#IR}-UK4K5Q#_WHM?bZdz`
zG<-=J~(`uSy8I<@-Obc7)O4em~`J{&IF7uwZ%>%<~;x@ZJUFx
zyryyf`v&`UUs*{xo6u98^9z@Dq)ScZiH>s}{n(lpgdFPoOCfigE^K{gliaR#>#Eo_
z(L7Doz3DG|re}>-NqnxseGg}5?*Z4;R-zr+78d!BZ8~S<^cs_OGd*U8l=Ak9sb&p^
zo!UkAZSGOgv{&M$luMBO)VONQ6O1wPncHE|s(l
z0Ne1aYP-VB<-|Q@3iL-0NrF#`DO8E!$`%t67T#BsmXP_;T1U=$3(5v$V`sU*VK|RAz8~)HgzeHsptw-BvfndMh6dx
z+b-xZit}=2Untp5V7XYqRw1oC6>K{>uQj_eKt`VG=U
zZj{aT0`M$G2{5~@kF|z|$)xuV>dIa!WTV+@QWmTvhc=HHG>n7wMO9d&PCgR%LnEej$`*@(AmPWYEedAAKj
z_wD6^u3LYER)qL=ICPoYT~gg$`(ee?+#{t!JBWG8$1Fh#l*>dKv3S|Mm+HGET$c+)
zaPUGkY*|@Bt>6qhroCf61QL&i^^4=-Qtss~qfA|&sT4if)o4e_7=ZGPT36xoY4qjZp#snHWEof;LnD``Lkq^4s$OjKC9@i*&V
zSE}+u{Dp0nuir|$qP^!@r1cXaU>djo+miV*Nmx&;LAPZ59eN>I}d_unHCU?0WTC
zSMM1ITe%!hTaVxk7LwoIvC%WSrrQtz`V~l*v}l0T>O|}G68g17`%j8v;0uL@E|i89Ev&N*kB<@-GcITtD7)^$7Z!NXY|pYwI6Dom8!
zb4G>LAV{(Y1o-V>`&eg=(I~zrs1sL98A{-OYu40G9ZCMCQ2hRfiTiZCn
z=Ubhn`dZ8i6Zlo(+7;vOfB(FkH}~XVs>mhqCd)wN2TPt%uWO;Xm9W}FQ#n^gJtf!j
zhN{92JS!E5txW`wd3f}AEKqSHQ13%XE!XANrTny_q*T~E5Nv*1?deq*m`pp|{4erL
z-0W^j1>dT29_hb?c$3U1`uvWudBl-
zh&J;w`@#rPZl|OG@k1Y?UHeL
zyO^{h6r6%$)x-0`d=hcqX-Hxw+M8FZh(55&$|5&jf_JW30WIAb-BwH>u8p3x
zY$34?ZovzQ_{Tg#Er61-j`vE@dUaQ<=zf_}DUHWab$R2$@wL)pLC<-s{6D$tO#+3~
z5HDQ{w6cr7XTGhZ^UB{Uv;Y0)nsB4W_A}`fkmB&}qkE;VHGi1=Ki65xTJy$2_utQmMF1w80FY5mJbvt4=BWPysV_!uTvmaPc`8sy!b`a(aR8
zEaT3ht8w9yJtftaZc6M#MNs!f*`*#+Z@3ChZ(1ZTSvB6N3%6pkPLSdu65VX<0Dww8
zAYuJrp=_H>M#geucxDrk|yRlOnbmNN2WFNN#@oz^2KX+RA1^+(?|@GYcTP#YzMk
zv1T5mMu>cW?je+CzpdPKL-YAOee8Nx{o>kw)vwi;+&j|y<~AMaU&^yyY3gmZYs0?&
za-A%Ax6eq|;f`>A*7R^Eq?USbZ{j>+wwhs>;PqYQpso1(ZK6oz$h$mXK!m@R@CC%G}(OoxV;Sm|Kx
z(lb?jQ7`aC2H-JpO7MY`4!=qEvHo|&c@LkQZ91?WqGqb@R%cC#Ns1H@Hsqs`7CzZ2
zIdG*`_~C{i7Lyk5&5&ZCUV{{CATOvMXxV|`ljTTZIj&^tze
z0*6}CDT(>+?F4JCh6WiW!cn+>SgJ^^!9c?d(oG4o=AG8C46FVe0;zcl`O2y*sTr2>PyKM6N(RDL=h4lFR
zriuzq%-eK0slp&F24W{;WdiV4;6ZZ;B5Xz$(HSW{PUK#!d)bz*IAAJh>Nqn`y&ZDXuV1L15
z!|NCJ!=H>-P_l&ATHlXuU&|6J!`T@GZP^77VLY=&fEWPwB8
zO{SDE^{EmoN32>vGM6pM!JcO6=~t)Fd6*deO0GgJTid!y00fi1*Y@jGNUMfG&nms;
zYLbaO`t8P#*e(+k9vFsx>ND0S)xJd}dpq(++{)x&4DN%|yS;bSt7c0HIVZ1TBIZ<&e)|!5w
z$_-+xJt%1%Hdx}KUYRt17@4pVECrP=s0je&aWUpx58~pYQq$SxIalSEGX0{eIG}Y8
zf_Y!x-YhyfG5hyt^ZuR)d?)eG#jeoM87p9YW
zgf&99XCLeUo0bGn$@fHDH0UtK}XX+@R*=)l{c-+86Eg
zELOgowBO3|@-1}~lh>5zRHRr&5Oz(Xc5eWap4H{o7k*8>{}1aDr$mO<GB%~sRMeG}!NV3-s*u+lb8W#Ur%Oo87KWy9r67rm$0Z^dSdxX2AREgWL6tuaAOz1%3pQ2zMwtyikRzy~=m
zPs8O_{%a@EFi_)dqd#NxKIN}v3aC(*99b5WclMoyy4`%6Vv-%s)*i5n-s0)7yl
zZyg^MX-2m+XnOSPKITD)3iCjpxu~BX|HU=c{35m4??K&py;J%AUIl+VcZ~YdTzV)N
z;tcjxAtWWLL}yiqwBPIOkDVxIEwaX}66QPA(bMa?A1vx|NhvCY`~7~(#uCO#0J2P_
zkOb4}%L|&}LFuVv+DqkfFk#hf_7U`m~;P2@{j7dMeFG%xqEshV}v)dp_jJ$j6-J+oZ3-~muYwy+BuUw+7
zS3pZS-F}+hyKr)FT&)x0zazVZtquqoGj%F~e;5;;_*5Io5>2d<nR_6W5m}hDwmtC1G4b=7TmB_uMx3lDjhNX$l-W(O0Rg~`aLDt2;%GRlaeE+)zkl?tKE`S!mULx
z8qQuj`q$^D_OiZhsO3LBUiFC<#(w?NceMp=;y=V0&(G_s*Zt%19CT;R?%+5<>Yo3}
z#AlPG+#R0w#kqn@jyHxYXA9?x|!8!I~D_R8x#41#S-oP?5RjroIxFca|Y{~J%9rh3Y
z4h@(IK9=VIK^Q6l@ZQhx=uIUIiIO1*FwF?**%#u|1GA4!@#b;+$=8-dBWj0|3+w%6
zbm9+&=A5-lo~qA$*ZR^>$otLvus>Q^pw`!Pe?+A%X~}y#6j%E&Sf*Ba){rx86WtYY
zdFxo`j-&+t!d8g2Nn=_{v`gn~W|Mt0pon}cJwXEzMGwF{
z8Y>BbGsQ5d40{BV?}r0tM00{H02#>`IS(;ASe(6FL5hQ3w0)KoV)H}A@}-KoSZGk}
zc&wDEOq;t|%+s>YvDbeo=1MEoG6Wdw^NXe#b#ovs>F`k-GM3_K0hIlknDOO!2#wde#0<)1!
z6H7u4114WdZt5pQ6B0`6LWE}XbzxeSHJc&ef?%;F5X0II7%S3yUe#T#C$X@N(b;>+z2qw2E>RfKrOJNeATJ5=*rTVY)helrYZ61g_|a
z@x4e&tc%}x*3{1_7c{9WARw1LEBO!tVh|E>5A9-n1F-O~1Q(ER$=n^L(OD_IuQg(qs{t@#1v(
zYq{o8sgg|V)hBnAumB1tKAYbJ@f$gBf1`Fokc&;e`dW?q;
z040`D)3G6il@bG*%5DJB_P9sWcEeN^X~|3oXia+@b%F0_K@x%z!uF`i#x!GjotsOO
z^)koFOfu>`WmH=2)$~&D#n323R3~wgPBk8X!n0apsjP;CMzT=r`WGtr@h75r4PrH%
zQ?C`9G(U{|$j&v}yklc*L^FvjF+vIq6*jxDO(7MWELz!XFD$H#Az?7xqp!E<+;jc<
z{@`QF#OzJ`VvkfVo8jbLRGMh93J;RccX(<;s-n9cdF9e>F_QTGXJ1ZG?9!5ZRZq{u
z_`<16*YSp9i)rY#F=nxQcjx$--xuk#Im>HE@gw^=#vAF
z9Bxm5lMMxP%<*zB;kSuA}Q2H{J_@0z20w^uUp8$bpQA}k=jU=6)z7ZWyQfjqJ
z;MHL>T`(nE8}J1TW=MgvO>6AC=_o3V3U703}zvSafwPlSJ
z*|Q&W2vDrbF_`_TJUBX?>I-5$@cXoxCiUQ6@YyWB_aSGzREVZ>0rcfUlD(>C9u=cC
zmlBsQk(9k|V20_+0<*eu92vb}0EQllrmSM+wDcRxjE0t1NF$^6mvfA5o>ieQ+tdfi
zErPQhS)@wJU@DXdZe3zhtqwX~0K&Mny-c>J5oso}SXXCk00x2M>O_w&&_s;tvl-+%
zc!|@A2PRiLM~@~o2<}G0(2NJ!I9@HO(I&GD4Y3xjoq6%aF1-zh3Dh^9Tth4s(@VvP
z#sxb&ivqAbUEowUe&?L>SUj_#WV&w*^*Zhnj
zLq?ahXBoaA0Z3T=Akq(P8zVZne*7_ftR8K_EvSy1+Nb*2hknWR)_)E=9sfGMESh6JZ_w07+8C-8muJ_T9FAQdfJQckDMktP$Kt7Rp!xHbx=KkYe@q
zu!kgy5ljFw7R@9}E>m0xisc@?9GEyhJFz6=w3gmVlaixo=DMAWe$AvCCY8?Hs-d=)
zR8EPw7bQ9u2{Id%eS9)4`8t5snxnGQ*~vkj-K|!@)YKWsW3rafRNd?A=A18PKI5}|
z_pO5-V9R_+Yw?m?+P~g6?S5MHJqZSX9n4XoG%QLnp`OurO{Flm5VMF_4WBLX18`kC50POU^HSau&+8RP5V7ajWHg*{UwLtx5O(j5Ws2Ooo
z0dE19NAfea)!dLJ5vMjGKkpXGkqF__l3ok7Mk)3VMFQC$dX{2ZMoRd$M$1Qay7&u}&3L4TF&=R&Yd3U7d)CNQqQl6W?-?*$R&k*Ramy
zE6;`WWQ9y|-d1)F9rILl;(o)@oZnlid2Lo=i{%ftAeR<9ubRDnJ&X7RBUv?t+@r|^
zBG>ZN+gmB#qCaJkCyo7BlNh*3}{=ltgQ||W3pBy
zIV=4Z*Oq%JUu$Z&n#}=ca1bebxufu;M^!2~5DszZ#jOOI=bt-nv(!f(6+=dMs*;==
z+@Wm+@|;cTx?+pmlmeEK#A-XEehcAmY^%bOc-0|l!aONCgP|wI0(0Y(0;YYdd@43-
z^Ul!7;V3dq@6jPg9nFel9bm6Q#3zOK!JJ54LVStOqKt#y#>tEhiYvF+g%$eFzO~}?
zKrWgv(_+b)q&rU++L0xsQ`h<0(;!ILdoWpd32nC#(@^B=Dr-`SSW2B?0*Z7dTEe=Q
zT=oc>CjF0I<7-GtVUL5ABSsEdIDc&1%ld>?oNj^2+{Ig&B9BfPxuCXMXcs@Ft1%P3
z$YS4t#8;22U(=*A?k)TwS*O3>T!vpb`5HB3r`)-hl1$Z*=w)=r42hWxk
zU)_0?=xkcu=szAjj&`mt+P_V0`?7IB1KCR*TjTZQ7W|+kZX;m6b%hQr9<7Kq
z>S^On+#{IhqrD|i&psK{6~gph-Og%ia}aX7p-UWSu^k4tB<{l{vO@@9L!|&`6Y@bRA;5~%7u
zK1kGh30BD_f17dE2;z&uwbm!y*L3ph#Zbd_y$m#`n-*C2h+{3J*#cwTQ^$TGWS7!g
z>oBo3HNFl!L|Up`2rU*Zzx7WK9@an2UySvH_B(cJf^wP-E=m1Nbxx+l^=;OD4!#7f
zFs=YGz!ZxBbtgziL-f4_f%F}lFqvq5tE2f|XIhQBklo-zhVGT;2`5t_eU5#!zuF3*
zy(RnK(W|@=M;){|ndS?l1}C$AaVVYShoHG}i)2M$wxHv}!h6B}drsBH+1fiZlAV0d
zD)??oS?vgY8;NP2*O_vBIuCg(MJ~kz0Jx186-DBpac_~7!q$W6+C#*P3
zI!bf#Db&ZuA5AVYYh10ouNqltV!cR;9(g8}$-*Xk7eCQ0IR>^MJ=(g=4fp8ir2z;~
zn{Chan~MZ&nTNtDXkPB?M2|j%6qaWqR3WRj_D(5AZdP~ZkZwx+t?tKA5auGWK$fV!
zTZb%Rsq#X~U8jBe7|(7`!u*bV(J^}m+z!>v&O8ttBHkf@w$pjMWi>ytA@bV?S*Z-+
z%AW`F>J5{ZZ@tvZCN;AitQ#-x2Jo@>qgJb%_dCq<;k>Kt%g3P?wBdA-sew8>Zi
z`?`_u7x7#Yazx
z>e!6Snn{aTGi6py+*b`j{#aK=>#7{$Op_0ZW1J`bL7IRGM;)x!RelwI^Fapy#M|ar
zI(ff|c(t$>nxD1eRO^UY+>N9r+?^V7J^6~1iU#Ow;*$VM-Z4
zi9p&RL#l$@4u{HSRHi!}C7i6mT{8o0QaVFp)Qe*&K{t=+=DBiJ(F28Ble0rmjc`Zy
zCAJ)h?3OoSw5RMj%1uJo=b_
z*(udgsl1+&7*EANNi3DXsq`v4U1DgO{wgf#5oTwm0A%y(;GHXLQ|c2L%+qB^!aF}<
z2c{&OiAI!_csoKoLD73bCOn
zSA9R9ikkDEb9W7#8bFC{QT|tsZ6fQ3#xS%!V-kv%7enl6UqDYrn_N()SZ`R46Z2XR
z2P!5o9GKT?^3kB|y1BD}kxhgJhspJXsPh-f$wM*Gh(nS@4;>b2q2n1lLM|1qnA{?p
z6k@+RlOb}jump1G4rQDTqS4+~3AK?aGLaRvxcZQXDf_6aFcmLvuZ?bxFYK%GU*r9u
zi>xO^8a1VZ(4!*@u^HL}x;`O`I4Q@%Frl(QUE<`s#kcLJ?^KUWb?JTw;EsVOBdP
zzALIqt9C_SCaF~j@#mT}1<3?eV>FWhHqJ7pJa1(?_7YI@#=#%?PjTICANhpDbT#g=
z%Sj2Xg9n>=>G^q0)zS2Hkprr;8y$)Zu_@}TQY|p7f%JVShZ=ZeS2Ku>+47G%xlT`l
zdvvtcUcIgSQ`|Ih7wQj-(vr(nCRUSK4@jKf63SlLyew(hTL_T*w0R|RO70=?^Kub%
z%tXOwZ0->s4^#`YffQYq91l%QmzS1vJJpGhu9~s<0CMlf6-f*bz_gwq0_G#`#!pWbDp+*
z%T=;~2_qvCNdSd?pUl1a7A8ed-SE3?d=G=Lf!Gpg-{3;7AZ-LPc;$7hS4MlixmofK
zsy;$YKqn}9Zh}sT^~j*M8APCj98q!^tV0`n>|pEYFewFdoxQn~J=4g{+OKO5x&}-
zRy1wmZDV5PMYX=E2JI-6(NoCx>s~#jR*46FEFUXz^E(1sq$$qA2+nPUyEK!{>23F6
zq061xXoda)nb$dLO4`NT7oPh%8h6)d+CGO!tND+N;OXdwSw`YdmL|pS4W$sZW)`Ky
zDA(QmIbwcSd)4(;g1f}Z5$;(wJ%wcLhVPn$VIJ#~oavLNb|vm}epTAjqKDduhjO{q
zC-RWV7&2Ny;zod6H@^pT(EL;b;1UkRw1xE
zSe-~(s#0q!lBAEdXum9ERC%Q>E6__BWbl}vGa;|n@#0S}+EJ9&W
z0TpB}BPgY*C9*2SOr75xSZHqmAApP3<-rBh_nTUAOuWklO(Gy&P@_4!;O6S7V4<`K*B%@M1hs@YW7_J
z?*50g9M>QuwwF`gm_!rM<=s#opTTELuF0PPw5bg5aH|^$j3`QkPG(ESW3-y=_osYybFt7zr6rN*OA7F*=>R1OpK@SlR?TmxOXM
z>Re5d1o}t{F2%%A2`f$9WOP;}RU-}QL;H7G9eZvo`->0Lq0jDw$jUoKS+0F}{6u0y
z*SMVgrD4s)7;$Z;W<{pk)FdB+HidaaPL37dwqlJ%$6Gy4w~wz-hVxjHj?(B&52Lk_
zLokHvG^X-pcFSwM^s-#aYmpJ=5<9ny3Wa4$D6oV&iJY5SmBB80i{P`;aii98WJi}2
zErC;CnNHn}y4&2ea$c*Ha2*Goe1@SJgLu7O4hijoR^>gQPS1UP|VQaNv)
zYL7`nvqSPVq4#Y_XTg=qaw+QP(?)}K$rv!VlpX7#wMpUzy<*-Qm^Tc*KzqU~;0QtxF*Af3l0eJrAS_;)lAgnB&+8^m3n^Ep)f9ObJ&Bvmr>P-e
zP$OpS1WDGhG|~Itnw@)cJXo=PP_^#;m^K%|1tWlqm8%}R^5z4T$YMdc1_O1GB6^8=
zsL1kM5$`WC&Lji~w%U}*3X*p)^`j7VNebgYQK|&(I$;>ZqS|imomS1DQHe>;pb-7Y
zXH#nu))us!8G%RuXG~>tYlEkk%d(GykDa{MuwDH9to=Q^=c92H<+)j%1im74r7Iyq
z^@0aSWydw!{bj1rSiTq{;VBz89vOL2kRUmi(Hg?rro{?JMNcvmXi};nie$~Vmqt*P
zjjaft)2P~$I3`Y!7^DxBxFwTDvH}%pli8KaU|IC?9L!Y6bbK#%AeFyj1SC-jh_jd2
z%eRO}OQ|loj{G!
z$Thpvgl4g_{!1^P^c^e!|tM9RXSl?CFW*P%^aZGZf!L?VW~Fm
z0!(}nLAOPAR;fo}Me}lm1HCF4X|l!?l%+YsU7d!94fvWE(=gqJ8lcHB(|y32jc-Jz
zxN1e&kmyaXl<$GHlQmhl>eA#TPh^B=Dq9rFK~y1i9q|g0nq=
zpn}MNyjd@b#xP4E1A})!dLdOMU}>v5v-(|;VYmAuLr_tf
zPjKut8-plEsvE3I-4AEA__f&>Js-Vo-xTlLUwkA>AL7RuR!hyNRH8MrJ
znbBonihhW8Z15$VI$n%TlemmnnV4T^V=I
zEv-nB8ycZj0+B5C=?FyvoKM43wk)}i$r6+9&}1v{2C^+6cA`KkuiM@;h>g!ulei(B
z%Vk~2$?9udy
zUcbLAxeN;!2@&$=s={~)&^Z(p3%#3d|NZEq3wybeL1lzcfFmgtp@eltL)DBlvW);s
zORR_`Q?HYDL5mz)%v8!+@^SDcfRqR7jOrbLYF93@Xrkg=qn!Q2iaQ39G8XAMWScb&
zg^3N;s-dKAgV7lNHgJN3J4lAvC2pfGC$VO+s2Cvu46!1+K)@sKx=OJU6
zdv&bGR(+BhoXuQ@DFuqW_T8npO!I-Rt&S-sd*~dOLak1hVX|p9ZW?ZbTvb2sA^h#E
z3!`~lJ0_-vc_^{qVX8bwujYkVHVNt0o~*W3)fLCng}x8E+VH6*9(PSTDjHI%Y*UD`
zT*prb&b0Q>koW3_(ZXm)*aD#tJ?ju$go>5Vh(D9JO&0@HWad(=j3fk=(=pv;lR@pE
z*uV=!b~(IU0SR<`A27A3sR}7C8K<%##pPtTdN(JW;q+67Yy!X@OBq4|xY#-jpGt1#
z%9U8scCyb{!BT3j@Frjv10;Mv_sU{j
zvcha{zlCl?o$xTZCdIO_pk{bs`B0!E
zU45im#rceK94AxL+Tfk`QalvICR{_cB8^Bza*5JeGdSXnV@Pj}s)w|H*%t|T6n4ee
zdVd}4Zf0j%>`JxuV}?KjP1Ot!tu714|b#%CiI8e-W$|kb5`{zkHVa_K^vm4Q7H97+6#6
z?vb{{=Xqqq@>Gjp8?N?>)LaH!?u6nDi^y29*{a!mOC2jIH)~#9u}r>U$9h*DciD`u
zlUkN!c`!8VhL)My@wJc#O)ZMjJHRahQLbvtNJC_7MC=BynnAGihm9Se5J2tMg;G5t
zMj-k~LSDXw%86n397m@DD}2^0L$`4WKW^^$^o&)CStj1(rsYP5i(Ao|u6+3ts*{Em6*D&D@Q|@7W)w1b@h9#{12TxR12G$Ho?K#?%lU8Ff)+
z8>KEy4JLzvPGr4}jF+CgLdb7!_V=6Ae*j1S3n^@A6mS0GksXfO9U%8^$!Oe2Zh_V!
zBVif})HhP4B8-e8Qkmtr2h?~p4D}n9#LhM6w1Eo8btLg(=aUWJ@-7;5k(eIg!2k;p
zV@4(vi5K2d&lTU~$dtpBd`K)aeoXz|=$^`;yUIL*H`V_=*+#~kuv1oeM;jgCo745c=*3e5X`HZo89XT}h#_gk#lr{{vUIim
zY&DMqRKNZBi+>{kIcfkQ{vseECive6;0^&HfQXoegqE9>n(hugP@Ic_M?wkA$SbKR
z#l#0uHX!3yVOF*Kw*ep{z;{?BAw2j8`0LSMcAFN}`8jLIV5wd*{ehVPypiiD0b{N7J}$f5=jei%dlF&FXuujK-Y-+6C6Rm`@#zN2GpEe^;J
zG75?Vpbee}Iyba!v82iEX>p*lNESoQP@|<@{dV2-VDi
z<5c%AU)Fx