diff --git a/plugin.video.alfa/channels/inkapelis.py b/plugin.video.alfa/channels/inkapelis.py index f967d593..1172655f 100644 --- a/plugin.video.alfa/channels/inkapelis.py +++ b/plugin.video.alfa/channels/inkapelis.py @@ -28,6 +28,8 @@ list_language = IDIOMAS.values() list_quality = ['Cam', 'TSHQ', 'Dvdrip', 'Blurayrip', 'HD Rip 320p', 'hd rip 320p', 'HD Real 720p', 'Full HD 1080p'] list_servers = ['openload', 'gamovideo', 'streamplay', 'streamango', 'vidoza'] +host = 'https://www.inkapelis.to/' + def mainlist(item): logger.info() @@ -35,28 +37,28 @@ def mainlist(item): autoplay.init(item.channel, list_servers, list_quality) itemlist = [] - itemlist.append(Item(channel=item.channel, title="Novedades", action="entradas", url="http://www.inkapelis.com/", + itemlist.append(Item(channel=item.channel, title="Novedades", action="entradas", url=host, extra="Novedades", text_color=color1, thumbnail=get_thumb('newest', auto=True))) #itemlist.append(Item(channel=item.channel, title="Estrenos", action="entradas", url="http://www.inkapelis.com/genero/estrenos/", # text_color=color1, thumbnail=get_thumb('premieres', auto=True))) itemlist.append(Item(channel=item.channel, title="Castellano", action="entradas", - url="https://www.inkapelis.com/?anio=&genero=&calidad=&idioma=Castellano&s=", + url=host+"?anio=&genero=&calidad=&idioma=Castellano&s=", extra="Buscar", text_color=color1, thumbnail=get_thumb('espanolas', auto=True))) itemlist.append(Item(channel=item.channel, title="Latino", action="entradas", - url="https://www.inkapelis.com/?anio=&genero=&calidad=&idioma=Latino&s=", + url=host+"?anio=&genero=&calidad=&idioma=Latino&s=", extra="Buscar", text_color=color1, thumbnail=get_thumb('latino', auto=True))) itemlist.append(Item(channel=item.channel, title="VOSE", action="entradas", - url="https://www.inkapelis.com/?anio=&genero=&calidad=&idioma=Subtitulada&s=", + url=host+"?anio=&genero=&calidad=&idioma=Subtitulada&s=", extra="Buscar", text_color=color1, thumbnail=get_thumb('newest', auto=True))) - itemlist.append(Item(channel=item.channel, title="Géneros", action="generos", url="http://www.inkapelis.com/", text_color=color1, + itemlist.append(Item(channel=item.channel, title="Géneros", action="generos", url=host, text_color=color1, thumbnail=get_thumb('genres', auto=True),)) - itemlist.append(Item(channel=item.channel, title="Buscar...", action="search", url="http://www.inkapelis.com/?s=", text_color=color1)) + itemlist.append(Item(channel=item.channel, title="Buscar...", action="search", url=host+"?s=", text_color=color1)) itemlist.append(Item(channel=item.channel, action="", title="")) itemlist.append( - Item(channel=item.channel, action="filtro", title="Filtrar películas", url="http://www.inkapelis.com/?s=", text_color=color1)) + Item(channel=item.channel, action="filtro", title="Filtrar películas", url=host+"?s=", text_color=color1)) # Filtros personalizados para peliculas for i in range(1, 4): filtros = config.get_setting("pers_peliculas" + str(i), item.channel) @@ -65,7 +67,7 @@ def mainlist(item): new_item = item.clone() new_item.values = filtros itemlist.append( - new_item.clone(action="filtro", title=title, url="http://www.inkapelis.com/?s=", text_color=color2)) + new_item.clone(action="filtro", title=title, url=host+"?s=", text_color=color2)) itemlist.append(Item(channel=item.channel, action="configuracion", title="Configurar canal...", text_color="gold", folder=False)) autoplay.show_option(item.channel, itemlist) @@ -86,21 +88,21 @@ def newest(categoria): item = Item() try: if categoria == "peliculas": - item.url = "http://www.inkapelis.com/" + item.url = host item.action = "entradas" item.extra = "Novedades" if categoria == "terror": - item.url = "https://www.inkapelis.com/genero/terror/" + item.url = host+"genero/terror/" item.action = "entradas" if categoria == "castellano": - item.url = "https://www.inkapelis.com/?anio=&genero=&calidad=&idioma=Castellano&s=" + item.url = host+"?anio=&genero=&calidad=&idioma=Castellano&s=" item.extra = "Buscar" item.action = "entradas" if categoria == "latino": - item.url = "https://www.inkapelis.com/?anio=&genero=&calidad=&idioma=Latino&s=" + item.url = host+"?anio=&genero=&calidad=&idioma=Latino&s=" item.extra = "Buscar" item.action = "entradas" itemlist = entradas(item) @@ -122,7 +124,7 @@ def search(item, texto): logger.info() itemlist = [] item.extra = "Buscar" - item.url = "http://www.inkapelis.com/?s=%s" % texto + item.url = host+"?s=%s" % texto try: return entradas(item) @@ -254,7 +256,7 @@ def filtrado(item, values): item.valores = "Filtro: " + ", ".join(sorted(strings)) item.strings = "" - item.url = "http://www.inkapelis.com/?anio=%s&genero=%s&calidad=%s&idioma=%s&s=%s" % \ + item.url = host+"?anio=%s&genero=%s&calidad=%s&idioma=%s&s=%s" % \ (year, genero, calidad, idioma, texto) item.extra = "Buscar" @@ -292,7 +294,7 @@ def entradas(item): else: # Extrae las entradas if item.extra == "Novedades": - data2 = data.split("

Últimas Películas Agregadas y Actualizadas

", 1)[1] + data2 = data.split("

Últimas Películas Agregadas y Actualizadas

", 1)[1] entradas = scrapertools.find_multiple_matches(data2, '
(.*?)
') else: diff --git a/plugin.video.alfa/channels/tvmoviedb.json b/plugin.video.alfa/channels/tvmoviedb.json index e82411cb..4f07d4dc 100755 --- a/plugin.video.alfa/channels/tvmoviedb.json +++ b/plugin.video.alfa/channels/tvmoviedb.json @@ -15,7 +15,7 @@ "id": "tmdb", "type": "list", "label": "@70418", - "default": 3, + "default": 4, "enabled": true, "visible": true, "lvalues": [ @@ -52,7 +52,7 @@ "type": "list", "label": "@70427", "color": "0xFFE0F04B", - "default": 3, + "default": 4, "enabled": true, "visible": true, "lvalues": [ diff --git a/plugin.video.alfa/lib/alfaresolver.py b/plugin.video.alfa/lib/alfaresolver.py index 34e59d85..6c2703c9 100644 --- a/plugin.video.alfa/lib/alfaresolver.py +++ b/plugin.video.alfa/lib/alfaresolver.py @@ -1 +1 @@ -import base64; exec(base64.b64decode('aW1wb3J0IG1hcnNoYWwKZXhlYyhtYXJzaGFsLmxvYWRzKGJhc2U2NC5iNjRkZWNvZGUoJ1l3QUFBQUFBQUFBQUdRQUFBRUFBQUFCejRRQUFBR1FBQUdRQkFHd0FBRm9BQUdRQUFHUUJBR3dCQUZvQkFHUUFBR1FCQUd3Q0FGb0NBR1FBQUdRQkFHd0RBRm9EQUdRQUFHUUNBR3dFQUcwRkFGb0ZBRzBHQUZvR0FBRmtBd0JsQndCbUFRQmtCQUNFQUFDREFBQlpXZ2dBWkFVQWhBQUFXZ2tBWkFZQWhBQUFXZ29BWkFjQWhBQUFXZ3NBWkFnQWhBQUFXZ3dBWkFrQWhBQUFXZzBBWndBQVpBb0FaQXNBWkF3QVpBMEFaQTRBWkE4QVpCQUFaQkVBWkJJQVpCTUFaQTRBWkJRQVpBNEFaQXNBWkJVQVpCWUFaQklBWkJjQVpCZ0FaQmtBWkE0QVpCY0FaQm9BWkJzQVp4Z0Fad0lBV2c0QVpBRUFVeWdjQUFBQWFmLy8vLzlPS0FJQUFBQjBCZ0FBQUd4dloyZGxjblFHQUFBQVkyOXVabWxuZEFZQUFBQnNiREV4YkRGakFBQUFBQUFBQUFBQ0FBQUFRZ0FBQUhNdkFBQUFaUUFBV2dFQVpBQUFoQUFBV2dJQVpBRUFoQUFBV2dNQVpBSUFaQU1BaEFFQVdnUUFaQVFBaEFBQVdnVUFVbE1vQlFBQUFHTUNBQUFBQndBQUFBVUFBQUJEQUFBQWM4VURBQUI4QVFCOEFBQmZBQUJrQVFCOEFBQmZBUUJuQUFCOEFBQmZBZ0I4QUFCcUF3Q0RBQUJjQWdCOEFBQmZCQUI4QUFCZkJRQjhBQUJxQkFCeXdRTjBCZ0JxQndCa0FnQjhBQUJxQVFBV2d3RUFhZ2dBZkFBQWFnQUFnd0VBZlFJQWVOUUFkQWtBZkFJQWd3RUFSRjNHQUZ3Q0FIMERBSDBFQUh3RUFHUURBQmxrQXdBZ1pBUUFhd0lBY3A0QWZBQUFhZ29BZkFRQVpBTUFHWU1CQUc0SEFId0VBR1FEQUJsOUJRQjhBQUJxQ3dCMERBQjhCQUJrQlFBWlpBWUFnd0lBZkFVQWd3SUFmUVlBWkFjQWZBWUFhd2NBY3ZvQWZBQUFhZ0FBYWcwQWZBUUFaQWdBR1dRSEFId0dBQmRrQndBWGd3SUFmQUFBWHdBQWNXc0FaQWtBZkFZQWF3Y0FjaTBCZkFBQWFnQUFhZzBBZkFRQVpBZ0FHV1FKQUh3R0FCZGtDUUFYZ3dJQWZBQUFYd0FBY1dzQVpBQUFVM0ZyQUZkMEJnQnFCd0JrQ2dCOEFBQnFBUUFXZ3dFQWFnZ0FmQUFBYWdBQWd3RUFmUUlBZU5RQWRBa0FmQUlBZ3dFQVJGM0dBRndDQUgwREFIMEVBSHdFQUdRREFCbGtBd0FnWkFRQWF3SUFjcGNCZkFBQWFnb0FmQVFBWkFNQUdZTUJBRzRIQUh3RUFHUURBQmw5QlFCOEFBQnFDd0IwREFCOEJBQmtCUUFaWkFZQWd3SUFmQVVBZ3dJQWZRWUFaQWNBZkFZQWF3Y0Fjdk1CZkFBQWFnQUFhZzBBZkFRQVpBZ0FHV1FMQUh3R0FCZGtDd0FYZ3dJQWZBQUFYd0FBY1dRQlpBa0FmQVlBYXdjQWNpWUNmQUFBYWdBQWFnMEFmQVFBWkFnQUdXUU1BSHdHQUJka0RBQVhnd0lBZkFBQVh3QUFjV1FCWkFBQVUzRmtBVmQwQmdCcUJ3QmtEUUI4QUFCcUFRQVdnd0VBYWdnQWZBQUFhZ0FBZ3dFQWZRSUFlS01BZEFrQWZBSUFnd0VBUkYyVkFGd0NBSDBEQUgwRUFId0FBR29MQUhRTUFId0VBR1FGQUJsa0JnQ0RBZ0JrQVFDREFnQjlCZ0JrQndCOEJnQnJCd0J5dXdKOEFBQnFBQUJxRFFCOEJBQmtDQUFaWkFjQWZBWUFGMlFIQUJlREFnQjhBQUJmQUFCeFhRSmtDUUI4QmdCckJ3Qnk3Z0o4QUFCcUFBQnFEUUI4QkFCa0NBQVpaQWtBZkFZQUYyUUpBQmVEQWdCOEFBQmZBQUJ4WFFKa0FBQlRjVjBDVjNRR0FHb0hBR1FPQUh3QUFHb0JBQmFEQVFCcUNBQjhBQUJxQUFDREFRQjlBZ0I0cGdCMENRQjhBZ0NEQVFCRVhaVUFYQUlBZlFNQWZRUUFmQUFBYWdzQWRBd0FmQVFBWkFVQUdXUUdBSU1DQUdRQkFJTUNBSDBHQUdRSEFId0dBR3NIQUhLREEzd0FBR29BQUdvTkFId0VBR1FJQUJsa0N3QjhCZ0FYWkFzQUY0TUNBSHdBQUY4QUFIRWxBMlFKQUh3R0FHc0hBSEsyQTN3QUFHb0FBR29OQUh3RUFHUUlBQmxrREFCOEJnQVhaQXdBRjRNQ0FId0FBRjhBQUhFbEEyUUFBRk54SlFOWGJnQUFaQUFBVXlnUEFBQUFUblFBQUFBQWN4NEFBQUFvSlhOY0tDY29XMTRuWFNvcEp5eGNjeW9uS0Z0ZUoxMHFLU2RjS1NscEFnQUFBSE1DQUFBQVhIaHBBUUFBQUdrUUFBQUFkQUVBQUFBbmFRQUFBQUIwQVFBQUFDSnpJZ0FBQUNnbGMxd29YRnduS0M0cVB5bGNYQ2NzWEhNcVhGd25LQzRxUHlsY1hDZGNLU2x6QWdBQUFGd25jd0lBQUFCY0luTVJBQUFBS0NWelhDZ25LRnRlSjEwcUtTZGNLU2x6RXdBQUFDZ2xjMXdvWEZ3bktDNHFQeWxjWENkY0tTa29EZ0FBQUhRRUFBQUFaR0YwWVhRSEFBQUFablZ1WTJsdmJuUUZBQUFBYkdsemRHRjBCZ0FBQUd3eGJHd3hNWFFHQUFBQWJERnNNVEV4ZEFNQUFBQnRjMmQwQWdBQUFISmxkQWNBQUFCamIyMXdhV3hsZEFjQUFBQm1hVzVrWVd4c2RBa0FBQUJsYm5WdFpYSmhkR1YwQlFBQUFIVnVhR1Y0ZEFZQUFBQnNNV3d4TVd4MEF3QUFBR2x1ZEhRSEFBQUFjbVZ3YkdGalpTZ0hBQUFBZEFRQUFBQnpaV3htVWdZQUFBQjBCZ0FBQUd4c01URXhNWFFCQUFBQWFYUUZBQUFBYldGMFkyaDBBUUFBQUhoMEJRQUFBSFpoYkc5eUtBQUFBQUFvQUFBQUFITUlBQUFBUEhOMGNtbHVaejUwQ0FBQUFGOWZhVzVwZEY5ZktRQUFBSE5PQUFBQUFBRUpBZ2tCQ1FJWUF3a0NJZ0VaQVRFQkh3SU1BU2NCREFFbkF3Z0RJZ0VaQVRFQkh3SU1BU2NCREFFbkF3Z0RJZ0VaQVI4Q0RBRW5BUXdCSndNSUF5SUJHUUVmQWd3Qkp3RU1BU2NEWXdFQUFBQUhBQUFBQlFBQUFFTUFBQUJ6QUFJQUFIUUFBR29CQUdRQkFId0FBR29DQUlNQ0FIMEJBSHdCQUhNbEFIUURBR1FDQUdZQ0FGTjhBUUJxQkFCa0F3Q0RBUUI5QWdCOEFRQnFCQUJrQkFDREFRQnFCUUJrQlFDREFRQjhBQUJmQmdCNE53QjBCd0I4QUFCcUJnQ0RBUUJFWFNZQVhBSUFmUU1BZlFRQWZBUUFhZ2dBZ3dBQVpBTUFaQVlBSVh3QUFHb0dBSHdEQUR4eFh3QlhmQUFBYWdZQVpBY0FHV1FFQUNCa0NBQnJBZ0J5MlFCNE5nQjBCd0I4QUFCcUJnQ0RBUUJFWFNJQVhBSUFmUU1BZlFRQWZBQUFhZ2tBZkFRQWd3RUFmQUFBYWdZQWZBTUFQSEd3QUZkdUFBQjhBQUJxQWdCcUNnQjhBUUJxQkFCa0J3Q0RBUUJrQWdDREFnQjhBQUJmQWdCMEFBQnFBUUJrQ1FCOEFnQVdmQUFBYWdJQVpBb0FkQUFBYWdzQWd3SUJmUUVBZkFFQWN5d0JkQU1BWkFJQVpnSUFVM1FNQUh3QkFHb0VBR1FEQUlNQkFHUUhBSU1DQUgwRkFId0FBR29DQUdvS0FId0JBR29FQUdRSEFJTUJBR1FDQUlNQ0FId0FBRjhDQUhnd0FIUU5BSHdGQUlNQkFFUmRJZ0I5QmdCOEFBQnFCZ0JxRGdCOEFBQnFCZ0JxRHdCa0J3Q0RBUUNEQVFBQmNYSUJWM1FBQUdvQkFHUUxBSHdBQUdvQ0FJTUNBSDBCQUh3QkFITzlBWFFEQUdRQ0FHWUNBRk44QVFCcUJBQmtBd0NEQVFCcUNBQ0RBQUI4QUFCZkVBQjhBQUJxQWdCcUNnQjhBUUJxQkFCa0J3Q0RBUUJrQWdDREFnQjhBQUJmQWdCMEVRQmtBZ0JtQWdCVEtBd0FBQUJPY3hvQUFBQjJZWElnS0Z4M0tpbGNjeW85WEhNcVhGc29MaW8vS1Z4ZE8xSURBQUFBYVFFQUFBQnBBZ0FBQUhRQkFBQUFMR24vLy8vL2FRQUFBQUJ6QWdBQUFGeDRjeVVBQUFCY0tHWjFibU4wYVc5dVhDZ3VLajk5WENnbGN5eGNjeW9vVzE1Y0tWMHFLVndwWENrN2RBVUFBQUJtYkdGbmMzTnVBQUFBZG1GeUlDaGNkeW9wWEhNcVBWeHpLbVoxYm1OMGFXOXVYSE1xWENoY2N5cGJYaXhkS2l4Y2N5cGJYbHdwWFNwY0tWeHpLbHg3TGlvL1hIMWNjeXBsYkhObFhIdGNjeXBjZHlwY2N5bzlYSE1xWEhjcU8xeHpLbHg5WEhNcWNtVjBkWEp1SUZ4M0tqdGNjeXBjZlRzb0VnQUFBRklNQUFBQWRBWUFBQUJ6WldGeVkyaFNCZ0FBQUhRRkFBQUFSbUZzYzJWMEJRQUFBR2R5YjNWd2RBVUFBQUJ6Y0d4cGRGSUlBQUFBVWc4QUFBQjBCUUFBQUhOMGNtbHdVaEFBQUFCU0V3QUFBSFFHQUFBQVJFOVVRVXhNVWhJQUFBQjBCUUFBQUhKaGJtZGxkQVlBQUFCaGNIQmxibVIwQXdBQUFIQnZjRklIQUFBQWRBUUFBQUJVY25WbEtBY0FBQUJTRkFBQUFIUUJBQUFBYlhRR0FBQUFibTl0WW5KbFVoWUFBQUIwQVFBQUFIWjBCZ0FBQUc1MWJXVnliMUlZQUFBQUtBQUFBQUFvQUFBQUFITUlBQUFBUEhOMGNtbHVaejVTQ1FBQUFHd0FBQUJ6TUFBQUFBQUVGUUVHQUFvQ0R3RWJBUndBSGdJWEFSd0FIUUloQmlJQkJnQUtBaGdDSVFJVEFDQUZGUUVHQUFvQ0dBSWhBbElEQUFBQVl3TUFBQUFMQUFBQUNBQUFBRU1BQUFCenZBRUFBSFFBQUh3QUFHb0JBSHdCQUJtREFRQjlBd0IwQWdCcUF3QjhBd0NEQVFCOUF3QmtBUUI5QkFCNFJBQjBCQUIwQlFCOEF3Q0RBUUNEQVFCRVhUQUFmUVVBZkFRQVpBSUFaQU1BZEFZQWRBY0FmQU1BZkFVQUdZTUJBSU1CQUdRRUFCOFhaQVVBSHhjM2ZRUUFjVHNBVjNRSUFIUUpBR29LQUh3RUFJTUJBR1FHQUlNQ0FIMERBSHdDQUdRQkFHc0NBSEtYQUh3REFGTjBCQUJrQndDREFRQjlCZ0JrQ0FCOUJ3QmtBUUI5Q0FCNFlBQjBCQUJrQndDREFRQkVYVklBZlFVQWZBY0FmQVlBZkFVQUdSZDBCd0I4QWdCOEJRQjBCUUI4QWdDREFRQVdHWU1CQUJka0J3QVdmUWNBZkFZQWZBVUFHWDBKQUh3R0FId0hBQmw4QmdCOEJRQThmQWtBZkFZQWZBY0FQSEc4QUZka0NBQjlDZ0JrQ0FCOUJ3QjRqZ0IwQkFCMEJRQjhBd0NEQVFDREFRQkVYWG9BZlFVQWZBb0FaQWtBRjJRSEFCWjlDZ0I4QndCOEJnQjhDZ0FaRjJRSEFCWjlCd0I4QmdCOENnQVpmUWtBZkFZQWZBY0FHWHdHQUh3S0FEeDhDUUI4QmdCOEJ3QThmQWdBZEFzQWRBY0FmQU1BZkFVQUdZTUJBSHdHQUh3R0FId0tBQmw4QmdCOEJ3QVpGMlFIQUJZWlFZTUJBRGQ5Q0FCeE1RRlhmQWdBYWd3QVpBWUFnd0VBVXlnS0FBQUFUbElEQUFBQWRBRUFBQUFsZEFJQUFBQXdNR2tDQUFBQWFmNy8vLzkwQkFBQUFIVjBaamhwQUFFQUFHa0FBQUFBYVFFQUFBQW9EUUFBQUhRREFBQUFjM1J5VWdnQUFBQjBCZ0FBQUdKaGMyVTJOSFFKQUFBQVlqWTBaR1ZqYjJSbFVpTUFBQUIwQXdBQUFHeGxiblFEQUFBQWFHVjRkQU1BQUFCdmNtUjBCd0FBQUhWdWFXTnZaR1YwQmdBQUFIVnliR3hwWW5RSEFBQUFkVzV4ZFc5MFpYUUdBQUFBZFc1cFkyaHlkQVlBQUFCbGJtTnZaR1VvQ3dBQUFGSVVBQUFBZEFNQUFBQnVkVzEwQVFBQUFITjBBUUFBQUhKU0dBQUFBSFFCQUFBQWVYUUJBQUFBZEhRQkFBQUFkWFFCQUFBQWQxSXBBQUFBZEFFQUFBQkJLQUFBQUFBb0FBQUFBSE1JQUFBQVBITjBjbWx1Wno1U0VRQUFBSmdBQUFCek5BQUFBQUFCRXdJUEFnWUJHUUV1QWhnQkRBQUVBZ3dCQmdBR0FSTUJLZ0VLQVE0QkRnSUdBQVlCR1FFT0FSSUJDZ0VPQVFvQk5nSmpBZ0FBQUFJQUFBQUVBQUFBUXdBQUFITVdBQUFBZEFBQWFnRUFaQUVBWkFJQWhBQUFmQUVBZ3dNQVV5Z0RBQUFBVG5NVEFBQUFYRng0VzJFdFpqQXRPVjFiWVMxbU1DMDVYV01CQUFBQUFRQUFBQUlBQUFCVEFBQUFjeGNBQUFCOEFBQnFBQUNEQUFCa0FRQWZhZ0VBWkFJQWd3RUFVeWdEQUFBQVRta0NBQUFBVWpJQUFBQW9BZ0FBQUZJZkFBQUFkQVlBQUFCa1pXTnZaR1VvQVFBQUFGSW5BQUFBS0FBQUFBQW9BQUFBQUhNSUFBQUFQSE4wY21sdVp6NTBDQUFBQUR4c1lXMWlaR0UrdXdBQUFITUFBQUFBS0FJQUFBQlNEQUFBQUhRREFBQUFjM1ZpS0FJQUFBQlNGQUFBQUhRREFBQUFkSGgwS0FBQUFBQW9BQUFBQUhNSUFBQUFQSE4wY21sdVp6NVNFQUFBQUxvQUFBQnpBZ0FBQUFBQktBWUFBQUIwQ0FBQUFGOWZibUZ0WlY5ZmRBb0FBQUJmWDIxdlpIVnNaVjlmVWhvQUFBQlNDUUFBQUZJUkFBQUFVaEFBQUFBb0FBQUFBQ2dBQUFBQUtBQUFBQUJ6Q0FBQUFEeHpkSEpwYm1jK1VnSUFBQUFuQUFBQWN3Z0FBQUFHQWdsRENTd01JbU1BQUFBQUF3QUFBQUlBQUFCREFBQUFjMklBQUFCa0FRQmtBQUJzQUFCOUFBQjBBUUJxQWdDREFBQnpIQUIwQXdCVGZBQUFhZ1FBZ3dBQWFnVUFaQUlBZ3dFQWZRRUFkQVlBYWdjQVpBTUFHWDBDQUh3QkFHUUVBR3NEQUhOV0FId0NBR1FGQUdzREFISmFBSFFJQUZOMEF3QlRaQUFBVXlnR0FBQUFUbW4vLy8vL2RBWUFBQUJoZFhSb2IzSnBBQUFBQUhNS0FBQUFRV3htWVNCQlpHUnZibk1iQUFBQWNHeDFaMmx1T2k4dmNHeDFaMmx1TG5acFpHVnZMbUZzWm1FdktBa0FBQUIwQ1FBQUFIaGliV05oWkdSdmJsSUJBQUFBZEFjQUFBQnBjMTk0WW0xalVpWUFBQUIwQlFBQUFFRmtaRzl1ZEF3QUFBQm5aWFJCWkdSdmJrbHVabTkwQXdBQUFITjVjM1FFQUFBQVlYSm5kbEllQUFBQUtBTUFBQUJTU0FBQUFGSkhBQUFBZEFvQUFBQmhaR1J2Ymw5dVlXMWxLQUFBQUFBb0FBQUFBSE1JQUFBQVBITjBjbWx1Wno1MEJBQUFBR055WVdIREFBQUFjeEFBQUFBQUFRd0NEQUVFQWhVQkRRSVlBUVFDWXdFQUFBQUdBQUFBQkFBQUFFTUFBQUJ6cHdBQUFHUUJBR1FBQUd3QUFIMEJBR1FCQUdRQUFHd0JBSDBDQUhRQ0FId0FBSU1CQUdRQ0FHc0VBSEtqQUhRREFJTUFBSE9qQUh3QkFHb0VBR1FDQUhRQ0FId0FBSU1CQUlNQ0FIMERBSFFGQUh3QUFJTUJBSDBFQUh3RUFId0RBQmw5QlFCNEtnQjhCQUI4QXdBWmZBVUFhd0lBY28wQWZBRUFhZ1lBZkFJQWFnY0Fnd0VBZkFRQWZBTUFQSEZrQUZka0F3QnFDQUI4QkFDREFRQjlBQUJ4b3dCdUFBQjhBQUJUS0FRQUFBQk9hZi8vLy85cEFBQUFBRklEQUFBQUtBa0FBQUIwQmdBQUFISmhibVJ2YlhRR0FBQUFjM1J5YVc1blVqRUFBQUJTVHdBQUFIUUhBQUFBY21GdVpHbHVkSFFFQUFBQWJHbHpkSFFHQUFBQVkyaHZhV05sZEFjQUFBQnNaWFIwWlhKemRBUUFBQUJxYjJsdUtBWUFBQUIwQXdBQUFIVnliRkpRQUFBQVVsRUFBQUIwQmdBQUFHTm9ZVzVuWlhRSUFBQUFkR1Z0Y0Y5MWNteDBBd0FBQUc5c1pDZ0FBQUFBS0FBQUFBQnpDQUFBQUR4emRISnBibWMrZEFJQUFBQmhkdElBQUFCekZnQUFBQUFCREFFTUFoSUJDUUVZQVF3QkNnRVRBUm9CRlFGakFBQUFBQVFBQUFBSUFBQUFRd0FBQUhON0FBQUFaQUVBZEFBQWF3Y0FjaEFBZEFFQVUyUUNBR1FBQUd3Q0FIMEFBSHdBQUdvREFHUURBSU1CQUgwQkFIaEpBSFFFQUVSZFFRQjlBZ0I4QVFCMEJRQnFCZ0JrQkFCcUJ3Qm5BQUI4QWdCRVhSSUFmUU1BZEFnQWZBTUFnd0VBWGdJQWNVNEFnd0VBZ3dFQWF3SUFjaklBZEFrQVUzRXlBRmQwQVFCVEtBVUFBQUJPY3c4QUFBQmhiR1poY21WemIyeDJaWEl1Y0hscC8vLy8vM01VQUFBQVEyOXVkR0ZwYm1WeUxsQnNkV2RwYms1aGJXVlNBd0FBQUNnS0FBQUFkQWdBQUFCZlgyWnBiR1ZmWDFJZUFBQUFkQVFBQUFCNFltMWpkQXdBQUFCblpYUkpibVp2VEdGaVpXeDBBZ0FBQUd3eFVpOEFBQUJTTUFBQUFGSldBQUFBZEFNQUFBQmphSEpTSmdBQUFDZ0VBQUFBVWwwQUFBQjBBUUFBQUdGU0dBQUFBRkk4QUFBQUtBQUFBQUFvQUFBQUFITUlBQUFBUEhOMGNtbHVaejUwQmdBQUFHd3hNVEZzTWVJQUFBQnpFQUFBQUFBQkRBQUVBUXdCRHdFTkFUY0FDQUZqQVFBQUFBUUFBQUFEQUFBQVF3QUFBSFBNQUFBQWRBQUFhZ0VBWkFFQWd3RUFhZ0lBZkFBQWd3RUFmUUVBZEFNQWZBRUFnd0VBWkFJQWF3UUFjbHNBZEFRQWZBRUFaQUlBR1dRQ0FCbGtBd0NEQWdCOUFnQjBCQUI4QVFCa0FnQVpaQVFBR1dRREFJTUNBSDBEQUc1bkFIUUFBR29CQUdRRkFJTUJBR29DQUh3QUFJTUJBSDBCQUhRREFId0JBSU1CQUdRQ0FHc0VBSEsyQUhRRUFId0JBR1FDQUJsa0FnQVpaQVlBZ3dJQWZRSUFkQVFBZkFFQVpBSUFHV1FFQUJsa0JnQ0RBZ0I5QXdCdURBQmtBZ0I5QWdCa0FnQjlBd0I4QWdCOEF3Qm1BZ0JUS0FjQUFBQk9jeWNBQUFBd2VDaGJNQzA1WVMxbVFTMUdYU3NwWEhNcUxGeHpLakI0S0Zzd0xUbGhMV1pCTFVaZEt5bHBBQUFBQUdrUUFBQUFhUUVBQUFCekZBQUFBRnh6S2loY1pDc3BYSE1xTEZ4ektpaGNaQ3NwYVFvQUFBQW9CUUFBQUZJTUFBQUFVZzBBQUFCU0RnQUFBRkl4QUFBQVVoSUFBQUFvQkFBQUFGSkVBQUFBVWhVQUFBQjBCUUFBQUdSbGMyUmxVamtBQUFBb0FBQUFBQ2dBQUFBQWN3Z0FBQUE4YzNSeWFXNW5QblFHQUFBQWJERXhNVEV4N1FBQUFITVdBQUFBQUFFWUFSSUJGd0VhQWhnQkVnRVhBUm9DQmdFR0FXTUNBQUFBRHdBQUFBWUFBQUJEQUFBQWMxTUNBQUIwQUFDREFBQnpEUUI4QUFCVGRBRUFhZ0lBWkFFQWd3RUFhZ01BZkFFQWd3RUFmUUlBZkFJQWN6d0FkQVFBYWdVQWZBRUFnd0VBQVh3QUFGTjBCZ0I4QWdCa0FnQVpnd0VBZlFNQWZBTUFhZ2NBYzJZQWRBUUFhZ1VBZkFFQWd3RUFBWHdBQUZOMEFRQnFBZ0JrQXdCMEFRQnFDQUNEQWdCcUF3QjhBQUNEQVFCa0FnQVpmUVFBZkFRQVpBQUFaQUFBWkFRQWhRTUFHWDBGQUhRQkFHb0pBR1FGQUdRR0FId0RBR29LQUlNREFId0RBRjhLQUhnMUFHUUhBR1FJQUdRSkFHUUtBR1FMQUdjRkFFUmRIZ0I5QmdCOEF3QnFDZ0JxQ3dCOEJnQmtEQUNEQWdCOEF3QmZDZ0J4ekFCWGRBRUFhZ0lBWkEwQWd3RUFhZ01BZkFNQWFnb0Fnd0VBZlFJQWZBSUFjaWdCZEF3QWZBSUFaQUlBR1lNQkFGd0NBSDBIQUgwSUFHNUdBSFFCQUdvQ0FHUU9BSU1CQUdvREFId0RBR29LQUlNQkFIMENBSHdDQUhKaUFYUU1BSHdDQUdRQ0FCbURBUUJjQWdCOUJ3QjlDQUJ1REFCa0FnQjlCd0JrQWdCOUNBQjhCd0JrQWdCckFnQnloQUY4QlFCOENBQWZiaE1BZkFVQWZBY0FJSHdGQUh3SEFId0lBQmNmRjMwSkFIUU5BSHdKQUlNQkFIMEtBSFFCQUdvQ0FHUVBBSU1CQUdvREFId0RBR29LQUlNQkFIMENBSHdDQUhJM0FuaHRBSHdDQUVSZFlnQmNCQUI5Q3dCOURBQjlEUUI5RGdCOERRQmtFQUJyQWdCeXpnRjhDd0I4RGdCckFnQnl6Z0Y4Q2dCMERnQjhEQUNEQVFBWmZBb0FkQTRBZkFzQWd3RUFHUUo4Q2dCMERnQjhDd0NEQVFBOGZBb0FkQTRBZkF3QWd3RUFQSEhPQVhIT0FWZHVBQUIwQVFCcUNRQjhCQUJrRVFCcUR3QjhDZ0NEQVFCOEFBQ0RBd0JUS0JJQUFBQk9jeWdBQUFBb2RtRnlJRngzSzF4ektqMWNjeXBjV3k0cVAxeGRPMXdvWm5WdVkzUnBiMjVjS0M0cVB5a0thUUFBQUFCekRRQUFBRnN3TFRsaExYcGRlelF3TEgxcC8vLy8vM01JQUFBQVhITXFYQ3RjY3lwMEFRQUFBQ3R6Q1FBQUFITndiQ2NySjJsalpYTUpBQUFBY3ljckozQnNhV05sY3drQUFBQnpjQ2NySjJ4cFkyVnpDUUFBQUhOd2JHa25LeWRqWlhNSkFBQUFjM0JzYVdNbkt5ZGxkQVlBQUFCemNHeHBZMlZ6RXdBQUFGd3VjM0JzYVdObFhDZ29XMTRwWFNzcFhDbHpGd0FBQUZ4YkozTndiR2xqWlNkY1hWd29LRnRlS1YwcktWd3BjMHdBQUFCY2R5dGNXeWhjWkNzcFhGMWNjeW85WEhNcVhIY3JYQzV6Y0d4cFkyVmNjeXBjS0NoY1pDc3BYSE1xTEZ4ektpaGNaQ3NwWEhNcUxGeHpLbHgzSzF4YktGeGtLeWxjWFZ4ektsd3BkQUVBQUFBeFVnTUFBQUFvRUFBQUFGSmlBQUFBVWd3QUFBQlNEUUFBQUZJT0FBQUFVZ0FBQUFCMEJBQUFBR2x1Wm05U0FnQUFBRklLQUFBQWRBb0FBQUJKUjA1UFVrVkRRVk5GVWtNQUFBQlNCZ0FBQUZJVEFBQUFVbVFBQUFCU1V3QUFBRklTQUFBQVVsWUFBQUFvRHdBQUFGSlhBQUFBVWdZQUFBQlNGUUFBQUhRREFBQUFibVYwZEFZQUFBQnNNVEV4TVd4MEJnQUFBR3d4TVd4c2JIUURBQUFBY21Wd1VtTUFBQUJTT1FBQUFGSVlBQUFBVWpzQUFBQjBBd0FBQUhWdWIzUURBQUFBWkc5emRBTUFBQUIwWVcxMEF3QUFBR1pwYmlnQUFBQUFLQUFBQUFCekNBQUFBRHh6ZEhKcGJtYytkQkFBQUFCa1pXTnZaR1ZmZG1sa1pXOWZkWEpzL1FBQUFITStBQUFBQUFNSkFBUUVHQUVHQVEwQkJBSVFBUWtCRFFFRUNDSUJFd01iQXh3QkhBTWJBUVlCR1FJYkFRWUJHUUlHQUFZQkxBUU1BaHNCQmdFWkFSZ0JQd05wWXdBQUFHbEhBQUFBYVhnQUFBQnBNUUFBQUdsYUFBQUFhVElBQUFCcGJBQUFBR2wxQUFBQWFVd0FBQUJwYmdBQUFHbHdBQUFBYVZZQUFBQnBkZ0FBQUdsdEFBQUFhVVlBQUFCcGN3QUFBR2xGQUFBQWFUMEFBQUFvRHdBQUFGSU1BQUFBVWt3QUFBQlNMd0FBQUZJMUFBQUFkQXdBQUFCd2JHRjBabTl5YldOdlpHVlNBQUFBQUZJQkFBQUFkQVlBQUFCdlltcGxZM1JTQWdBQUFGSlBBQUFBVWxzQUFBQlNZZ0FBQUZKa0FBQUFVbklBQUFCU1h3QUFBQ2dBQUFBQUtBQUFBQUFvQUFBQUFITUlBQUFBUEhOMGNtbHVaejUwQ0FBQUFEeHRiMlIxYkdVK0F3QUFBSE1RQUFBQU1BRVdJeGFjQ1E4SkVBa0xDUkFKUFE9PScpKSk=')) \ No newline at end of file +import base64; exec(base64.b64decode('aW1wb3J0IG1hcnNoYWwKZXhlYyhtYXJzaGFsLmxvYWRzKGJhc2U2NC5iNjRkZWNvZGUoJ1l3QUFBQUFBQUFBQUdRQUFBRUFBQUFCekhnRUFBR1FBQUdRQkFHd0FBRm9BQUdRQUFHUUJBR3dCQUZvQkFHUUFBR1FCQUd3Q0FGb0NBR1FBQUdRQkFHd0RBRm9EQUdRQUFHUUJBR3dFQUZvRUFHUUFBR1FCQUd3RkFGb0ZBR1FBQUdRQ0FHd0dBRzBIQUZvSEFBRmtBQUJrQXdCc0JnQnRDQUJhQ0FBQlpBUUFXZ2tBWkFVQVdnb0FaQVlBV2dzQVpBY0FaUXdBWmdFQVpBZ0FoQUFBZ3dBQVdWb05BR1FKQUlRQUFGb09BR1FLQUlRQUFGb1BBR1FMQUlRQUFGb1FBR1FNQUlRQUFGb1JBR1FOQUlRQUFGb1NBR1FPQUlRQUFGb1RBR2NBQUdRUEFHUVFBR1FSQUdRU0FHUVRBR1FVQUdRVkFHUVdBR1FYQUdRWUFHUVRBR1FaQUdRVEFHUVFBR1FhQUdRYkFHUVhBR1FjQUdRZEFHUWVBR1FUQUdRY0FHUWZBR1FnQUdjWUFHY0NBRm9VQUdRQkFGTW9JUUFBQUduLy8vLy9UaWdCQUFBQWRBWUFBQUJqYjI1bWFXY29BUUFBQUhRR0FBQUFiRzluWjJWeWFRd0FBQUJwQkFBQUFHbmpCd0FBZEFZQUFBQnNiREV4Ykd4akFBQUFBQUFBQUFBQ0FBQUFRZ0FBQUhNdkFBQUFaUUFBV2dFQVpBQUFoQUFBV2dJQVpBRUFoQUFBV2dNQVpBSUFaQU1BaEFFQVdnUUFaQVFBaEFBQVdnVUFVbE1vQlFBQUFHTUNBQUFBQndBQUFBVUFBQUJEQUFBQWM4VURBQUI4QVFCOEFBQmZBQUJrQVFCOEFBQmZBUUJuQUFCOEFBQmZBZ0I4QUFCcUF3Q0RBQUJjQWdCOEFBQmZCQUI4QUFCZkJRQjhBQUJxQkFCeXdRTjBCZ0JxQndCa0FnQjhBQUJxQVFBV2d3RUFhZ2dBZkFBQWFnQUFnd0VBZlFJQWVOUUFkQWtBZkFJQWd3RUFSRjNHQUZ3Q0FIMERBSDBFQUh3RUFHUURBQmxrQXdBZ1pBUUFhd0lBY3A0QWZBQUFhZ29BZkFRQVpBTUFHWU1CQUc0SEFId0VBR1FEQUJsOUJRQjhBQUJxQ3dCMERBQjhCQUJrQlFBWlpBWUFnd0lBZkFVQWd3SUFmUVlBWkFjQWZBWUFhd2NBY3ZvQWZBQUFhZ0FBYWcwQWZBUUFaQWdBR1dRSEFId0dBQmRrQndBWGd3SUFmQUFBWHdBQWNXc0FaQWtBZkFZQWF3Y0FjaTBCZkFBQWFnQUFhZzBBZkFRQVpBZ0FHV1FKQUh3R0FCZGtDUUFYZ3dJQWZBQUFYd0FBY1dzQVpBQUFVM0ZyQUZkMEJnQnFCd0JrQ2dCOEFBQnFBUUFXZ3dFQWFnZ0FmQUFBYWdBQWd3RUFmUUlBZU5RQWRBa0FmQUlBZ3dFQVJGM0dBRndDQUgwREFIMEVBSHdFQUdRREFCbGtBd0FnWkFRQWF3SUFjcGNCZkFBQWFnb0FmQVFBWkFNQUdZTUJBRzRIQUh3RUFHUURBQmw5QlFCOEFBQnFDd0IwREFCOEJBQmtCUUFaWkFZQWd3SUFmQVVBZ3dJQWZRWUFaQWNBZkFZQWF3Y0Fjdk1CZkFBQWFnQUFhZzBBZkFRQVpBZ0FHV1FMQUh3R0FCZGtDd0FYZ3dJQWZBQUFYd0FBY1dRQlpBa0FmQVlBYXdjQWNpWUNmQUFBYWdBQWFnMEFmQVFBWkFnQUdXUU1BSHdHQUJka0RBQVhnd0lBZkFBQVh3QUFjV1FCWkFBQVUzRmtBVmQwQmdCcUJ3QmtEUUI4QUFCcUFRQVdnd0VBYWdnQWZBQUFhZ0FBZ3dFQWZRSUFlS01BZEFrQWZBSUFnd0VBUkYyVkFGd0NBSDBEQUgwRUFId0FBR29MQUhRTUFId0VBR1FGQUJsa0JnQ0RBZ0JrQVFDREFnQjlCZ0JrQndCOEJnQnJCd0J5dXdKOEFBQnFBQUJxRFFCOEJBQmtDQUFaWkFjQWZBWUFGMlFIQUJlREFnQjhBQUJmQUFCeFhRSmtDUUI4QmdCckJ3Qnk3Z0o4QUFCcUFBQnFEUUI4QkFCa0NBQVpaQWtBZkFZQUYyUUpBQmVEQWdCOEFBQmZBQUJ4WFFKa0FBQlRjVjBDVjNRR0FHb0hBR1FPQUh3QUFHb0JBQmFEQVFCcUNBQjhBQUJxQUFDREFRQjlBZ0I0cGdCMENRQjhBZ0NEQVFCRVhaVUFYQUlBZlFNQWZRUUFmQUFBYWdzQWRBd0FmQVFBWkFVQUdXUUdBSU1DQUdRQkFJTUNBSDBHQUdRSEFId0dBR3NIQUhLREEzd0FBR29BQUdvTkFId0VBR1FJQUJsa0N3QjhCZ0FYWkFzQUY0TUNBSHdBQUY4QUFIRWxBMlFKQUh3R0FHc0hBSEsyQTN3QUFHb0FBR29OQUh3RUFHUUlBQmxrREFCOEJnQVhaQXdBRjRNQ0FId0FBRjhBQUhFbEEyUUFBRk54SlFOWGJnQUFaQUFBVXlnUEFBQUFUblFBQUFBQWN4NEFBQUFvSlhOY0tDY29XMTRuWFNvcEp5eGNjeW9uS0Z0ZUoxMHFLU2RjS1NscEFnQUFBSE1DQUFBQVhIaHBBUUFBQUdrUUFBQUFkQUVBQUFBbmFRQUFBQUIwQVFBQUFDSnpJZ0FBQUNnbGMxd29YRnduS0M0cVB5bGNYQ2NzWEhNcVhGd25LQzRxUHlsY1hDZGNLU2x6QWdBQUFGd25jd0lBQUFCY0luTVJBQUFBS0NWelhDZ25LRnRlSjEwcUtTZGNLU2x6RXdBQUFDZ2xjMXdvWEZ3bktDNHFQeWxjWENkY0tTa29EZ0FBQUhRRUFBQUFaR0YwWVhRSEFBQUFablZ1WTJsdmJuUUZBQUFBYkdsemRHRjBCZ0FBQUd3eE1URnNiSFFHQUFBQWJERXhiREV4ZEFNQUFBQnRjMmQwQWdBQUFISmxkQWNBQUFCamIyMXdhV3hsZEFjQUFBQm1hVzVrWVd4c2RBa0FBQUJsYm5WdFpYSmhkR1YwQlFBQUFIVnVhR1Y0ZEFZQUFBQnNiR3d4Ykd4MEF3QUFBR2x1ZEhRSEFBQUFjbVZ3YkdGalpTZ0hBQUFBZEFRQUFBQnpaV3htVWdZQUFBQjBCZ0FBQUd3eE1URXhNWFFCQUFBQWFYUUZBQUFBYldGMFkyaDBBUUFBQUhoMEJRQUFBSFpoYkc5eUtBQUFBQUFvQUFBQUFITUlBQUFBUEhOMGNtbHVaejUwQ0FBQUFGOWZhVzVwZEY5Zk1nQUFBSE5PQUFBQUFBRUpBZ2tCQ1FJWUF3a0NJZ0VaQVRFQkh3SU1BU2NCREFFbkF3Z0RJZ0VaQVRFQkh3SU1BU2NCREFFbkF3Z0RJZ0VaQVI4Q0RBRW5BUXdCSndNSUF5SUJHUUVmQWd3Qkp3RU1BU2NEWXdFQUFBQUhBQUFBQlFBQUFFTUFBQUJ6QUFJQUFIUUFBR29CQUdRQkFId0FBR29DQUlNQ0FIMEJBSHdCQUhNbEFIUURBR1FDQUdZQ0FGTjhBUUJxQkFCa0F3Q0RBUUI5QWdCOEFRQnFCQUJrQkFDREFRQnFCUUJrQlFDREFRQjhBQUJmQmdCNE53QjBCd0I4QUFCcUJnQ0RBUUJFWFNZQVhBSUFmUU1BZlFRQWZBUUFhZ2dBZ3dBQVpBTUFaQVlBSVh3QUFHb0dBSHdEQUR4eFh3QlhmQUFBYWdZQVpBY0FHV1FFQUNCa0NBQnJBZ0J5MlFCNE5nQjBCd0I4QUFCcUJnQ0RBUUJFWFNJQVhBSUFmUU1BZlFRQWZBQUFhZ2tBZkFRQWd3RUFmQUFBYWdZQWZBTUFQSEd3QUZkdUFBQjhBQUJxQWdCcUNnQjhBUUJxQkFCa0J3Q0RBUUJrQWdDREFnQjhBQUJmQWdCMEFBQnFBUUJrQ1FCOEFnQVdmQUFBYWdJQVpBb0FkQUFBYWdzQWd3SUJmUUVBZkFFQWN5d0JkQU1BWkFJQVpnSUFVM1FNQUh3QkFHb0VBR1FEQUlNQkFHUUhBSU1DQUgwRkFId0FBR29DQUdvS0FId0JBR29FQUdRSEFJTUJBR1FDQUlNQ0FId0FBRjhDQUhnd0FIUU5BSHdGQUlNQkFFUmRJZ0I5QmdCOEFBQnFCZ0JxRGdCOEFBQnFCZ0JxRHdCa0J3Q0RBUUNEQVFBQmNYSUJWM1FBQUdvQkFHUUxBSHdBQUdvQ0FJTUNBSDBCQUh3QkFITzlBWFFEQUdRQ0FHWUNBRk44QVFCcUJBQmtBd0NEQVFCcUNBQ0RBQUI4QUFCZkVBQjhBQUJxQWdCcUNnQjhBUUJxQkFCa0J3Q0RBUUJrQWdDREFnQjhBQUJmQWdCMEVRQmtBZ0JtQWdCVEtBd0FBQUJPY3hvQUFBQjJZWElnS0Z4M0tpbGNjeW85WEhNcVhGc29MaW8vS1Z4ZE8xSURBQUFBYVFFQUFBQnBBZ0FBQUhRQkFBQUFMR24vLy8vL2FRQUFBQUJ6QWdBQUFGeDRjeVVBQUFCY0tHWjFibU4wYVc5dVhDZ3VLajk5WENnbGN5eGNjeW9vVzE1Y0tWMHFLVndwWENrN2RBVUFBQUJtYkdGbmMzTnVBQUFBZG1GeUlDaGNkeW9wWEhNcVBWeHpLbVoxYm1OMGFXOXVYSE1xWENoY2N5cGJYaXhkS2l4Y2N5cGJYbHdwWFNwY0tWeHpLbHg3TGlvL1hIMWNjeXBsYkhObFhIdGNjeXBjZHlwY2N5bzlYSE1xWEhjcU8xeHpLbHg5WEhNcWNtVjBkWEp1SUZ4M0tqdGNjeXBjZlRzb0VnQUFBRklNQUFBQWRBWUFBQUJ6WldGeVkyaFNCZ0FBQUhRRkFBQUFSbUZzYzJWMEJRQUFBR2R5YjNWd2RBVUFBQUJ6Y0d4cGRGSUlBQUFBVWc4QUFBQjBCUUFBQUhOMGNtbHdVaEFBQUFCU0V3QUFBSFFHQUFBQVJFOVVRVXhNVWhJQUFBQjBCUUFBQUhKaGJtZGxkQVlBQUFCaGNIQmxibVIwQXdBQUFIQnZjRklIQUFBQWRBUUFBQUJVY25WbEtBY0FBQUJTRkFBQUFIUUJBQUFBYlhRR0FBQUFibTl0WW5KbFVoWUFBQUIwQVFBQUFIWjBCZ0FBQUc1MWJXVnliMUlZQUFBQUtBQUFBQUFvQUFBQUFITUlBQUFBUEhOMGNtbHVaejVTQ1FBQUFIVUFBQUJ6TUFBQUFBQUVGUUVHQUFvQ0R3RWJBUndBSGdJWEFSd0FIUUloQmlJQkJnQUtBaGdDSVFJVEFDQUZGUUVHQUFvQ0dBSWhBbElEQUFBQVl3TUFBQUFMQUFBQUNBQUFBRU1BQUFCenZBRUFBSFFBQUh3QUFHb0JBSHdCQUJtREFRQjlBd0IwQWdCcUF3QjhBd0NEQVFCOUF3QmtBUUI5QkFCNFJBQjBCQUIwQlFCOEF3Q0RBUUNEQVFCRVhUQUFmUVVBZkFRQVpBSUFaQU1BZEFZQWRBY0FmQU1BZkFVQUdZTUJBSU1CQUdRRUFCOFhaQVVBSHhjM2ZRUUFjVHNBVjNRSUFIUUpBR29LQUh3RUFJTUJBR1FHQUlNQ0FIMERBSHdDQUdRQkFHc0NBSEtYQUh3REFGTjBCQUJrQndDREFRQjlCZ0JrQ0FCOUJ3QmtBUUI5Q0FCNFlBQjBCQUJrQndDREFRQkVYVklBZlFVQWZBY0FmQVlBZkFVQUdSZDBCd0I4QWdCOEJRQjBCUUI4QWdDREFRQVdHWU1CQUJka0J3QVdmUWNBZkFZQWZBVUFHWDBKQUh3R0FId0hBQmw4QmdCOEJRQThmQWtBZkFZQWZBY0FQSEc4QUZka0NBQjlDZ0JrQ0FCOUJ3QjRqZ0IwQkFCMEJRQjhBd0NEQVFDREFRQkVYWG9BZlFVQWZBb0FaQWtBRjJRSEFCWjlDZ0I4QndCOEJnQjhDZ0FaRjJRSEFCWjlCd0I4QmdCOENnQVpmUWtBZkFZQWZBY0FHWHdHQUh3S0FEeDhDUUI4QmdCOEJ3QThmQWdBZEFzQWRBY0FmQU1BZkFVQUdZTUJBSHdHQUh3R0FId0tBQmw4QmdCOEJ3QVpGMlFIQUJZWlFZTUJBRGQ5Q0FCeE1RRlhmQWdBYWd3QVpBWUFnd0VBVXlnS0FBQUFUbElEQUFBQWRBRUFBQUFsZEFJQUFBQXdNR2tDQUFBQWFmNy8vLzkwQkFBQUFIVjBaamhwQUFFQUFHa0FBQUFBYVFFQUFBQW9EUUFBQUhRREFBQUFjM1J5VWdnQUFBQjBCZ0FBQUdKaGMyVTJOSFFKQUFBQVlqWTBaR1ZqYjJSbFVpTUFBQUIwQXdBQUFHeGxiblFEQUFBQWFHVjRkQU1BQUFCdmNtUjBCd0FBQUhWdWFXTnZaR1YwQmdBQUFIVnliR3hwWW5RSEFBQUFkVzV4ZFc5MFpYUUdBQUFBZFc1cFkyaHlkQVlBQUFCbGJtTnZaR1VvQ3dBQUFGSVVBQUFBZEFNQUFBQnVkVzEwQVFBQUFITjBBUUFBQUhKU0dBQUFBSFFCQUFBQWVYUUJBQUFBZEhRQkFBQUFkWFFCQUFBQWQxSXBBQUFBZEFFQUFBQkJLQUFBQUFBb0FBQUFBSE1JQUFBQVBITjBjbWx1Wno1U0VRQUFBS0VBQUFCek5BQUFBQUFCRXdJUEFnWUJHUUV1QWhnQkRBQUVBZ3dCQmdBR0FSTUJLZ0VLQVE0QkRnSUdBQVlCR1FFT0FSSUJDZ0VPQVFvQk5nSmpBZ0FBQUFJQUFBQUVBQUFBUXdBQUFITVdBQUFBZEFBQWFnRUFaQUVBWkFJQWhBQUFmQUVBZ3dNQVV5Z0RBQUFBVG5NVEFBQUFYRng0VzJFdFpqQXRPVjFiWVMxbU1DMDVYV01CQUFBQUFRQUFBQUlBQUFCVEFBQUFjeGNBQUFCOEFBQnFBQUNEQUFCa0FRQWZhZ0VBWkFJQWd3RUFVeWdEQUFBQVRta0NBQUFBVWpJQUFBQW9BZ0FBQUZJZkFBQUFkQVlBQUFCa1pXTnZaR1VvQVFBQUFGSW5BQUFBS0FBQUFBQW9BQUFBQUhNSUFBQUFQSE4wY21sdVp6NTBDQUFBQUR4c1lXMWlaR0UreEFBQUFITUFBQUFBS0FJQUFBQlNEQUFBQUhRREFBQUFjM1ZpS0FJQUFBQlNGQUFBQUhRREFBQUFkSGgwS0FBQUFBQW9BQUFBQUhNSUFBQUFQSE4wY21sdVp6NVNFQUFBQU1NQUFBQnpBZ0FBQUFBQktBWUFBQUIwQ0FBQUFGOWZibUZ0WlY5ZmRBb0FBQUJmWDIxdlpIVnNaVjlmVWhvQUFBQlNDUUFBQUZJUkFBQUFVaEFBQUFBb0FBQUFBQ2dBQUFBQUtBQUFBQUJ6Q0FBQUFEeHpkSEpwYm1jK1VnSUFBQUF3QUFBQWN3Z0FBQUFHQWdsRENTd01JbU1BQUFBQUF3QUFBQUlBQUFCREFBQUFjMFlBQUFCa0FRQmtBQUJzQUFCOUFBQjhBQUJxQVFDREFBQnFBZ0JrQWdDREFRQjlBUUIwQXdCcUJBQmtBd0FaZlFJQWZBRUFaQVFBYXdNQWNqNEFkQVVBVTNRR0FGTmtBQUJUS0FVQUFBQk9hZi8vLy85MEJnQUFBR0YxZEdodmNta0FBQUFBY3dvQUFBQkJiR1poSUVGa1pHOXVLQWNBQUFCMENRQUFBSGhpYldOaFpHUnZiblFGQUFBQVFXUmtiMjUwREFBQUFHZGxkRUZrWkc5dVNXNW1iM1FEQUFBQWMzbHpkQVFBQUFCaGNtZDJVaDRBQUFCU0pnQUFBQ2dEQUFBQVVrZ0FBQUJTUndBQUFIUUtBQUFBWVdSa2IyNWZibUZ0WlNnQUFBQUFLQUFBQUFCekNBQUFBRHh6ZEhKcGJtYytkQWNBQUFCMWNHUmhkR1ZrekFBQUFITU1BQUFBQUFJTUFSVUJEUUlNQVFRQ1l3QUFBQUFMQUFBQUJRQUFBRU1BQUFCekx3RUFBR1FCQUdRQUFHd0FBSDBBQUdRQkFHUUFBR3dCQUgwQkFHUUJBR1FBQUd3Q0FIMENBSFFEQUgwREFIUUVBR29FQUdvRkFJTUFBSDBFQUh3QkFHb0dBSHdDQUdvSEFHUUNBR1FEQUlNQUFXb0lBR1FFQUlNQkFJTUJBSDBGQUhRSkFHb0tBR29MQUh3RkFHUUZBR1FHQUlNREFIMEdBR1FIQUhRTUFId0dBSU1CQUdvTkFJTUFBR3NIQUhJckFYd0VBR29PQUhRT0FHc0ZBSElyQVh3RUFHb1BBSFFQQUdzRkFISXJBWHdFQUdvUUFIUVFBR3NGQUhJckFYd0RBQXh5S3dGa0NBQjlCd0JrQ1FCa0VBQVhaQXdBRjJRUkFCZGtEUUFYZlFnQWVFZ0FkQkVBZkFBQWFoSUFmQVlBWkE0QVpBOEFnd0VCZ3dFQVJGMG9BRndDQUgwSkFIMEtBSFFUQUdvVUFHb1ZBSHdLQUdvV0FId0hBSHdJQUlNQ0FJTUJBQUZ4K1FCWGNTc0JiZ0FBWkFBQVV5Z1NBQUFBVG1uLy8vLy9kQUlBQUFCcFpITVJBQUFBY0d4MVoybHVMblpwWkdWdkxtRnNabUYwQkFBQUFGQmhkR2gwREFBQUFIQnNZWFJtYjNKdFkyOWtaWE1RQUFBQWNHeGhkR1p2Y20xMGIyOXNjeTV3ZVhNbEFBQUFabkp2YlNCc2FXSXVZV3htWVhKbGMyOXNkbVZ5SUdsdGNHOXlkQ0JuWlhSZmFXNW1iM01uQUFBQUl5QnpaU0J2WW5ScFpXNWxJR3hoSUdsdVptOXliV0ZqYWNPemJpQmtaV3dnZG1sa1pXOHVjeWdBQUFBaklITmxJRzlpZEdsbGJtVWdiR0VnYVc1bWIzSnRZV05wdzdOdUlHUmxiQ0IyYVdSbGJ5NEtkQUVBQUFBZ2FRUUFBQUJ6SmdBQUFHWnliMjBnYkdsaUxtRnNabUZ5WlhOdmJIWmxjaUJwYlhCdmNuUWdaMlYwWDJsdVptOEtjeHNBQUFCdFpXUnBZWFZ5YkQxblpYUmZhVzVtYnlodFpXUnBZWFZ5YkNsMEJ3QUFBR2x1Y0d4aFkyVnBBUUFBQUhNRUFBQUFJQ0FnSUhNRUFBQUFJQ0FnSUNnWEFBQUFkQWtBQUFCbWFXeGxhVzV3ZFhSMEJBQUFBSGhpYldOU1NBQUFBRkllQUFBQWRBZ0FBQUJrWVhSbGRHbHRaWFFEQUFBQWJtOTNkQTBBQUFCMGNtRnVjMnhoZEdWUVlYUm9Va2tBQUFCU1NnQUFBSFFDQUFBQWIzTjBCQUFBQUhCaGRHaDBCQUFBQUdwdmFXNTBCQUFBQUc5d1pXNTBCQUFBQUhKbFlXUjBBd0FBQUdSaGVYUUZBQUFBYlc5dWRHaDBCQUFBQUhsbFlYSlNEd0FBQUhRRkFBQUFhVzV3ZFhSU1N3QUFBSFFHQUFBQWMzUmtiM1YwZEFVQUFBQjNjbWwwWlZJVEFBQUFLQXNBQUFCU1ZBQUFBRkpWQUFBQVVrZ0FBQUIwQndBQUFIQmhkR05vWldSMEJBQUFBR1JoZEdWMENnQUFBR0ZrWkc5dVgzQmhkR2gwQ1FBQUFHWnBiR1ZmY0dGMGFIUUpBQUFBY21WaGJGOTBaWGgwZEFnQUFBQnVaWGRmZEdWNGRGSVdBQUFBZEFRQUFBQnNhVzVsS0FBQUFBQW9BQUFBQUhNSUFBQUFQSE4wY21sdVp6NTBDZ0FBQUhWd1pHRjBaVjl1YjNmWEFBQUFjeDRBQUFBQUFRd0JEQUVNQVFZQkR3RWtBUmdCR0FFMEFRWUJEd0VIQVNnQkpnRmpBUUFBQUFjQUFBQUVBQUFBUXdBQUFIUExBQUFBWkFFQVpBQUFiQUFBZlFFQVpBRUFaQUFBYkFFQWZRSUFkQUlBYWdJQWFnTUFnd0FBZlFNQWZBTUFhZ1FBZEFRQWF3VUFjc2NBZkFNQWFnVUFkQVVBYXdVQWNzY0FkQVlBZkFBQWd3RUFaQUlBYXdRQWNzY0FmQUVBYWdjQVpBSUFkQVlBZkFBQWd3RUFnd0lBZlFRQWRBZ0FmQUFBZ3dFQWZRVUFmQVVBZkFRQUdYMEdBSGdxQUh3RkFId0VBQmw4QmdCckFnQnlzUUI4QVFCcUNRQjhBZ0JxQ2dDREFRQjhCUUI4QkFBOGNZZ0FWMlFEQUdvTEFId0ZBSU1CQUgwQUFISEhBRzRBQUh3QUFGTW9CQUFBQUU1cC8vLy8vMmtBQUFBQVVnTUFBQUFvREFBQUFIUUdBQUFBY21GdVpHOXRkQVlBQUFCemRISnBibWRTVmdBQUFGSlhBQUFBVWw4QUFBQlNZQUFBQUZJeEFBQUFkQWNBQUFCeVlXNWthVzUwZEFRQUFBQnNhWE4wZEFZQUFBQmphRzlwWTJWMEJ3QUFBR3hsZEhSbGNuTlNXd0FBQUNnSEFBQUFkQU1BQUFCMWNteFNiQUFBQUZKdEFBQUFVbVVBQUFCMEJnQUFBR05vWVc1blpYUUlBQUFBZEdWdGNGOTFjbXgwQXdBQUFHOXNaQ2dBQUFBQUtBQUFBQUJ6Q0FBQUFEeHpkSEpwYm1jK2RBZ0FBQUJuWlhSZmFXNW1iK2tBQUFCekdBQUFBQUFCREFFTUFROEJIZ0VTQVJnQkRBRUtBUk1CR2dFVkFXTUFBQUFBQkFBQUFBZ0FBQUJEQUFBQWMzc0FBQUJrQVFCMEFBQnJCd0J5RUFCMEFRQlRaQUlBWkFBQWJBSUFmUUFBZkFBQWFnTUFaQU1BZ3dFQWZRRUFlRWtBZEFRQVJGMUJBSDBDQUh3QkFIUUZBR29HQUdRRUFHb0hBR2NBQUh3Q0FFUmRFZ0I5QXdCMENBQjhBd0NEQVFCZUFnQnhUZ0NEQVFDREFRQnJBZ0J5TWdCMENRQlRjVElBVjNRQkFGTW9CUUFBQUU1ekR3QUFBR0ZzWm1GeVpYTnZiSFpsY2k1d2VXbi8vLy8vY3hRQUFBQkRiMjUwWVdsdVpYSXVVR3gxWjJsdVRtRnRaVklEQUFBQUtBb0FBQUIwQ0FBQUFGOWZabWxzWlY5ZlVoNEFBQUJTVlFBQUFIUU1BQUFBWjJWMFNXNW1iMHhoWW1Wc2RBSUFBQUJzTVZJdkFBQUFVakFBQUFCU1d3QUFBSFFEQUFBQVkyaHlVaVlBQUFBb0JBQUFBRkpWQUFBQWRBRUFBQUJoVWhnQUFBQlNQQUFBQUNnQUFBQUFLQUFBQUFCekNBQUFBRHh6ZEhKcGJtYytkQVlBQUFCc2JERXhNV3o1QUFBQWN4QUFBQUFBQVF3QUJBRU1BUThCRFFFM0FBZ0JZd0VBQUFBRUFBQUFBd0FBQUVNQUFBQnp6QUFBQUhRQUFHb0JBR1FCQUlNQkFHb0NBSHdBQUlNQkFIMEJBSFFEQUh3QkFJTUJBR1FDQUdzRUFISmJBSFFFQUh3QkFHUUNBQmxrQWdBWlpBTUFnd0lBZlFJQWRBUUFmQUVBWkFJQUdXUUVBQmxrQXdDREFnQjlBd0J1WndCMEFBQnFBUUJrQlFDREFRQnFBZ0I4QUFDREFRQjlBUUIwQXdCOEFRQ0RBUUJrQWdCckJBQnl0Z0IwQkFCOEFRQmtBZ0FaWkFJQUdXUUdBSU1DQUgwQ0FIUUVBSHdCQUdRQ0FCbGtCQUFaWkFZQWd3SUFmUU1BYmd3QVpBSUFmUUlBWkFJQWZRTUFmQUlBZkFNQVpnSUFVeWdIQUFBQVRuTW5BQUFBTUhnb1d6QXRPV0V0WmtFdFJsMHJLVnh6S2l4Y2N5b3dlQ2hiTUMwNVlTMW1RUzFHWFNzcGFRQUFBQUJwRUFBQUFHa0JBQUFBY3hRQUFBQmNjeW9vWEdRcktWeHpLaXhjY3lvb1hHUXJLV2tLQUFBQUtBVUFBQUJTREFBQUFGSU5BQUFBVWc0QUFBQlNNUUFBQUZJU0FBQUFLQVFBQUFCU1JBQUFBRklWQUFBQWRBVUFBQUJrWlhOa1pWSTVBQUFBS0FBQUFBQW9BQUFBQUhNSUFBQUFQSE4wY21sdVp6NTBCZ0FBQUd4c2JHd3hNUVFCQUFCekZnQUFBQUFCR0FFU0FSY0JHZ0lZQVJJQkZ3RWFBZ1lCQmdGakFnQUFBQThBQUFBR0FBQUFRd0FBQUhOakFnQUFkQUFBZ3dBQWN3MEFmQUFBVTNRQkFHb0NBR1FCQUlNQkFHb0RBSHdCQUlNQkFIMENBSHdDQUhNOEFIUUVBR29GQUh3QkFJTUJBQUY4QUFCVGRBWUFmQUlBWkFJQUdZTUJBSDBEQUh3REFHb0hBSE5tQUhRRUFHb0ZBSHdCQUlNQkFBRjhBQUJUZEFRQWFnVUFmQU1BYWdnQWd3RUFBWFFCQUdvQ0FHUURBSFFCQUdvSkFJTUNBR29EQUh3QUFJTUJBR1FDQUJsOUJBQjhCQUJrQUFCa0FBQmtCQUNGQXdBWmZRVUFkQUVBYWdvQVpBVUFaQVlBZkFNQWFnZ0Fnd01BZkFNQVh3Z0FlRFVBWkFjQVpBZ0FaQWtBWkFvQVpBc0Fad1VBUkYwZUFIMEdBSHdEQUdvSUFHb0xBSHdHQUdRTUFJTUNBSHdEQUY4SUFISGNBRmQwQVFCcUFnQmtEUUNEQVFCcUF3QjhBd0JxQ0FDREFRQjlBZ0I4QWdCeU9BRjBEQUI4QWdCa0FnQVpnd0VBWEFJQWZRY0FmUWdBYmtZQWRBRUFhZ0lBWkE0QWd3RUFhZ01BZkFNQWFnZ0Fnd0VBZlFJQWZBSUFjbklCZEF3QWZBSUFaQUlBR1lNQkFGd0NBSDBIQUgwSUFHNE1BR1FDQUgwSEFHUUNBSDBJQUh3SEFHUUNBR3NDQUhLVUFYd0ZBSHdJQUI5dUV3QjhCUUI4QndBZ2ZBVUFmQWNBZkFnQUZ4OFhmUWtBZEEwQWZBa0Fnd0VBZlFvQWRBRUFhZ0lBWkE4QWd3RUFhZ01BZkFNQWFnZ0Fnd0VBZlFJQWZBSUFja2NDZUcwQWZBSUFSRjFpQUZ3RUFIMExBSDBNQUgwTkFIME9BSHdOQUdRUUFHc0NBSExlQVh3TEFId09BR3NDQUhMZUFYd0tBSFFPQUh3TUFJTUJBQmw4Q2dCMERnQjhDd0NEQVFBWkFud0tBSFFPQUh3TEFJTUJBRHg4Q2dCMERnQjhEQUNEQVFBOGNkNEJjZDRCVjI0QUFIUUJBR29LQUh3RUFHUVJBR29QQUh3S0FJTUJBSHdBQUlNREFGTW9FZ0FBQUU1ektBQUFBQ2gyWVhJZ1hIY3JYSE1xUFZ4ektseGJMaW8vWEYwN1hDaG1kVzVqZEdsdmJsd29MaW8vS1FwcEFBQUFBSE1OQUFBQVd6QXRPV0V0ZWwxN05EQXNmV24vLy8vL2N3Z0FBQUJjY3lwY0sxeHpLblFCQUFBQUszTUpBQUFBYzNCc0p5c25hV05sY3drQUFBQnpKeXNuY0d4cFkyVnpDUUFBQUhOd0p5c25iR2xqWlhNSkFBQUFjM0JzYVNjckoyTmxjd2tBQUFCemNHeHBZeWNySjJWMEJnQUFBSE53YkdsalpYTVRBQUFBWEM1emNHeHBZMlZjS0NoYlhpbGRLeWxjS1hNWEFBQUFYRnNuYzNCc2FXTmxKMXhkWENnb1cxNHBYU3NwWENselRBQUFBRngzSzF4YktGeGtLeWxjWFZ4ektqMWNjeXBjZHl0Y0xuTndiR2xqWlZ4ektsd29LRnhrS3lsY2N5b3NYSE1xS0Z4a0t5bGNjeW9zWEhNcVhIY3JYRnNvWEdRcktWeGRYSE1xWENsMEFRQUFBREZTQXdBQUFDZ1FBQUFBVW53QUFBQlNEQUFBQUZJTkFBQUFVZzRBQUFCU0FRQUFBSFFFQUFBQWFXNW1iMUlDQUFBQVVnb0FBQUJTQmdBQUFIUUtBQUFBU1VkT1QxSkZRMEZUUlZKREFBQUFVaE1BQUFCU2ZnQUFBRkp2QUFBQVVoSUFBQUJTV3dBQUFDZ1BBQUFBVW5JQUFBQlNCZ0FBQUZJVkFBQUFkQU1BQUFCdVpYUjBCZ0FBQUd4c2JHd3hiSFFHQUFBQWJERnNiREZzZEFNQUFBQnlaWEJTZlFBQUFGSTVBQUFBVWhnQUFBQlNPd0FBQUhRREFBQUFkVzV2ZEFNQUFBQmtiM04wQXdBQUFIUmhiWFFEQUFBQVptbHVLQUFBQUFBb0FBQUFBSE1JQUFBQVBITjBjbWx1Wno1MEVBQUFBR1JsWTI5a1pWOTJhV1JsYjE5MWNtd1VBUUFBYzBBQUFBQUFBd2tBQkFRWUFRWUJEUUVFQWhBQkNRRU5BUVFCRUFjaUFSTURHd01jQVJ3REd3RUdBUmtDR3dFR0FSa0NCZ0FHQVN3RURBSWJBUVlCR1FFWUFUOERhV01BQUFCcFJ3QUFBR2w0QUFBQWFURUFBQUJwV2dBQUFHa3lBQUFBYVd3QUFBQnBkUUFBQUdsTUFBQUFhVzRBQUFCcGNBQUFBR2xXQUFBQWFYWUFBQUJwYlFBQUFHbEdBQUFBYVhNQUFBQnBSUUFBQUdrOUFBQUFLQlVBQUFCU0RBQUFBRkpaQUFBQVVrc0FBQUJTTHdBQUFGSTFBQUFBVWxZQUFBQlNVUUFBQUZJQUFBQUFVZ0VBQUFCU1hnQUFBRkpmQUFBQVVtQUFBQUIwQmdBQUFHOWlhbVZqZEZJQ0FBQUFVazRBQUFCU2F3QUFBRkoyQUFBQVVud0FBQUJTZmdBQUFGS01BQUFBVW5rQUFBQW9BQUFBQUNnQUFBQUFLQUFBQUFCekNBQUFBRHh6ZEhKcGJtYytkQWdBQUFBOGJXOWtkV3hsUGdNQUFBQnpKQUFBQUF3QkRBRU1BUXdCREFFTUFSQUJFQUlHQVFZQkJpSVduQWtMQ1JJSkVBa0xDUkFKUFE9PScpKSk=')) \ No newline at end of file diff --git a/plugin.video.alfa/resources/media/servers/server_movshare.png b/plugin.video.alfa/resources/media/servers/server_movshare.png deleted file mode 100755 index 4838828a..00000000 Binary files a/plugin.video.alfa/resources/media/servers/server_movshare.png and /dev/null differ diff --git a/plugin.video.alfa/resources/media/servers/server_nowvideo.png b/plugin.video.alfa/resources/media/servers/server_nowvideo.png deleted file mode 100755 index d994b971..00000000 Binary files a/plugin.video.alfa/resources/media/servers/server_nowvideo.png and /dev/null differ diff --git a/plugin.video.alfa/resources/media/servers/server_vidspot.png b/plugin.video.alfa/resources/media/servers/server_vidspot.png deleted file mode 100755 index ec598b87..00000000 Binary files a/plugin.video.alfa/resources/media/servers/server_vidspot.png and /dev/null differ diff --git a/plugin.video.alfa/servers/mp4upload.py b/plugin.video.alfa/servers/mp4upload.py index 83134cb1..a99f864a 100644 --- a/plugin.video.alfa/servers/mp4upload.py +++ b/plugin.video.alfa/servers/mp4upload.py @@ -7,25 +7,24 @@ from core import scrapertools from lib import jsunpack from platformcode import logger +def test_video_exists(page_url): + data = httptools.downloadpage(page_url).data + if data == "File was deleted" or data == '': + return False, "[mp4upload] El video ha sido borrado" + def get_video_url(page_url, premium=False, user="", password="", video_password=""): logger.info("(page_url='%s')" % page_url) - data = re.sub(r"\n|\r|\t|\s{2}", "", httptools.downloadpage(page_url).data) - match = scrapertools.find_single_match(data, "") data = jsunpack.unpack(match) data = data.replace("\\'", "'") - media_url = scrapertools.find_single_match(data, '{type:"video/mp4",src:"([^"]+)"}') if not media_url: media_url = scrapertools.find_single_match(data, '"file":"([^"]+)') logger.info("media_url=" + media_url) - video_urls = list() video_urls.append([scrapertools.get_filename_from_url(media_url)[-4:] + " [mp4upload]", media_url]) - for video_url in video_urls: logger.info("%s - %s" % (video_url[0], video_url[1])) - return video_urls diff --git a/plugin.video.alfa/servers/powvideo.json b/plugin.video.alfa/servers/powvideo.json index b7670faf..901bd15f 100755 --- a/plugin.video.alfa/servers/powvideo.json +++ b/plugin.video.alfa/servers/powvideo.json @@ -4,8 +4,8 @@ "ignore_urls": [], "patterns": [ { - "pattern": "powvideo.(?:net|xyz|cc)/(?:embed-|iframe-|preview-|)([a-z0-9]+)", - "url": "http://powvideo.net/iframe-\\1-954x562.html" + "pattern": "(?:powvideo|povw1deo).(?:net|xyz|com)/(?:embed-|iframe-|preview-|)([a-z0-9]+)", + "url": "http://powvideo.net/iframe-\\1-1536x701.html" } ] }, diff --git a/plugin.video.alfa/servers/powvideo.py b/plugin.video.alfa/servers/powvideo.py index 7d32954b..6375f4d3 100644 --- a/plugin.video.alfa/servers/powvideo.py +++ b/plugin.video.alfa/servers/powvideo.py @@ -14,6 +14,9 @@ headers = [['User-Agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/2 def test_video_exists(page_url): referer = page_url.replace('iframe', 'preview') + + httptools.downloadpage(referer) + data = httptools.downloadpage(page_url, headers={'referer': referer}).data if data == "File was deleted" or data == '': return False, "[powvideo] El video ha sido borrado" diff --git a/plugin.video.alfa/videolibrary_service.py b/plugin.video.alfa/videolibrary_service.py index e0163325..f9d31d16 100644 --- a/plugin.video.alfa/videolibrary_service.py +++ b/plugin.video.alfa/videolibrary_service.py @@ -12,6 +12,7 @@ from channels import videolibrary from lib import generictools + def update(path, p_dialog, i, t, serie, overwrite): logger.info("Actualizando " + path) insertados_total = 0 @@ -96,7 +97,6 @@ def update(path, p_dialog, i, t, serie, overwrite): def check_for_update(overwrite=True): logger.info("Actualizando series...") - p_dialog = None serie_actualizada = False update_when_finished = False @@ -284,7 +284,9 @@ def start(thread=True): def monitor_update(): update_setting = config.get_setting("update", "videolibrary") + # "Actualizar "Una sola vez al dia" o "al inicar Kodi y al menos una vez al dia" + if update_setting == 2 or update_setting == 3: hoy = datetime.date.today() last_check = config.get_setting("updatelibrary_last_check", "videolibrary") @@ -310,9 +312,14 @@ if __name__ == "__main__": import xbmc import time + # modo adulto: # sistema actual 0: Nunca, 1:Siempre, 2:Solo hasta que se reinicie Kodi # si es == 2 lo desactivamos. + if config.get_platform(True)['num_version'] >= 17.0: + from lib.alfaresolver import updated, update_now + if not updated(): + update_now() if config.get_setting("adult_mode") == 2: config.set_setting("adult_mode", 0) @@ -321,6 +328,7 @@ if __name__ == "__main__": if wait > 0: xbmc.sleep(wait) + # Verificar quick-fixes al abrirse Kodi, y dejarlo corriendo como Thread from platformcode import updater updater.check_addon_init()