From 394c78529f94fd48098f8afc826cccd73552acb3 Mon Sep 17 00:00:00 2001 From: Dan Garner Date: Mon, 16 Oct 2023 08:30:15 +0100 Subject: [PATCH] XMR.NET (#36) * .NET Core XMR container * Feature parity with PHP XMR * Slightly different environment variables and log format --- .github/workflows/build.yaml | 7 + .gitignore | 212 +++++++++++++++++++- Dockerfile | 54 +++-- Program.cs | 42 ++++ Properties/launchSettings.json | 11 ++ README.md | 40 +--- Worker.cs | 350 +++++++++++++++++++++++++++++++++ ZmqMessage.cs | 48 +++++ ZmqSettings.cs | 32 +++ appsettings.json | 24 +++ bin/upstart/xmr.conf | 10 - bin/xmr.phar | Bin 707129 -> 0 bytes box.json | 16 -- build.sh | 5 - composer.json | 33 ---- composer.lock | 312 ----------------------------- docker-compose.yml | 9 - entrypoint.sh | 14 -- index.php | 246 ----------------------- xibo-xmr.csproj | 18 ++ xibo-xmr.sln | 25 +++ 21 files changed, 798 insertions(+), 710 deletions(-) create mode 100644 Program.cs create mode 100644 Properties/launchSettings.json create mode 100644 Worker.cs create mode 100644 ZmqMessage.cs create mode 100644 ZmqSettings.cs create mode 100644 appsettings.json delete mode 100644 bin/upstart/xmr.conf delete mode 100755 bin/xmr.phar delete mode 100644 box.json delete mode 100755 build.sh delete mode 100644 composer.json delete mode 100644 composer.lock delete mode 100644 docker-compose.yml delete mode 100755 entrypoint.sh delete mode 100644 index.php create mode 100644 xibo-xmr.csproj create mode 100644 xibo-xmr.sln diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index c09d0e4..cba8674 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -5,6 +5,7 @@ on: branches: - master - develop + - dotnet release: types: [ published ] @@ -38,6 +39,12 @@ jobs: docker build . -t ghcr.io/xibosignage/xibo-xmr:develop docker push ghcr.io/xibosignage/xibo-xmr:develop + - name: Build Develop + if: github.ref == 'refs/heads/dotnet' + run: | + docker build . -t ghcr.io/xibosignage/xibo-xmr:dotnet + docker push ghcr.io/xibosignage/xibo-xmr:dotnet + - name: Build Release if: github.event_name == 'release' run: | diff --git a/.gitignore b/.gitignore index 64e2bcd..6123a27 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,211 @@ -vendor/ -.idea/ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +build/ +bld/ +[Bb]in/ +[Oo]bj/ + +# Visual Studio 2015 cache/options directory +.vs/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# DNX +project.lock.json +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config + +# Windows Azure Build Output +csx/ +*.build.csdef + +# Windows Store app package directory +AppPackages/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# VS code +.vscode + +# Ignore config file for local testing. config.json \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 4b51c36..c1ac1c6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,38 +1,34 @@ -FROM composer:1.6 as composer -COPY . /app -RUN composer install --no-interaction --no-dev --ignore-platform-reqs --optimize-autoloader +FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build-env +WORKDIR /App -FROM php:8.1-cli -MAINTAINER Xibo Signage Ltd +# Copy everything +COPY . ./ -ENV XMR_DEBUG false -ENV XMR_QUEUE_POLL 5 -ENV XMR_QUEUE_SIZE 10 -ENV XMR_IPV6RESPSUPPORT false -ENV XMR_IPV6PUBSUPPORT false +# Restore as distinct layers +RUN dotnet restore -RUN apt-get update && apt-get install -y libzmq3-dev git \ - && rm -rf /var/lib/apt/lists/* +# Build and publish a release +RUN dotnet publish -c Release -o out -RUN git clone https://github.com/zeromq/php-zmq.git \ - && cd php-zmq \ - && phpize && ./configure \ - && make \ - && make install \ - && cd .. \ - && rm -fr php-zmq +# Build runtime image +FROM mcr.microsoft.com/dotnet/aspnet:7.0 -RUN docker-php-ext-enable zmq +LABEL org.opencontainers.image.source=https://github.com/xibosignage/xibo-xmr +LABEL org.opencontainers.image.description="Xibo Message Relay - XMR" +LABEL org.opencontainers.image.licenses=AGPL-3.0-or-later +LABEL org.opencontainers.image.authors="support@xibosignage.com" -EXPOSE 9505 50001 - -COPY ./entrypoint.sh /entrypoint.sh -COPY . /opt/xmr -COPY --from=composer /app/vendor /opt/xmr/vendor +WORKDIR /App +COPY --from=build-env /App/out . -RUN chown -R nobody /opt/xmr && chmod 755 /entrypoint.sh +# Define some environment variables +ENV Logging__LogLevel__Default "Information" +ENV Zmq__listenOn "tcp://*:50001" +ENV Zmq__pubOn__0 "tcp://*:9505" +ENV Zmq__ipv6RespSupport false +ENV Zmq__ipv6PubSupport false -# Start XMR -USER nobody +# Expose the ports +EXPOSE 9505 50001 -CMD ["/entrypoint.sh"] \ No newline at end of file +ENTRYPOINT ["dotnet", "xibo-xmr.dll"] \ No newline at end of file diff --git a/Program.cs b/Program.cs new file mode 100644 index 0000000..bb2b311 --- /dev/null +++ b/Program.cs @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2023 Xibo Signage Ltd + * + * Xibo - Digital Signage - https://xibosignage.com + * + * This file is part of Xibo. + * + * Xibo is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * Xibo is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Xibo. If not, see . + */ +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using xibo_xmr; + +IHost host = Host.CreateDefaultBuilder(args) + .ConfigureAppConfiguration((hostingContext, config) => + { + config.AddCommandLine(args); + config.AddJsonFile($"appsettings.json", optional: false, reloadOnChange: true); + config.AddEnvironmentVariables(); + }) + .ConfigureServices((hostContext, services) => + { + services.Configure(hostContext.Configuration.GetSection("Zmq")); + services.AddHostedService(); + }) + .UseWindowsService() + .UseSystemd() + .Build(); + +host.Run(); diff --git a/Properties/launchSettings.json b/Properties/launchSettings.json new file mode 100644 index 0000000..aba8007 --- /dev/null +++ b/Properties/launchSettings.json @@ -0,0 +1,11 @@ +{ + "profiles": { + "xibo_xmr": { + "commandName": "Project", + "dotnetRunMessages": true, + "environmentVariables": { + "DOTNET_ENVIRONMENT": "Development" + } + } + } +} diff --git a/README.md b/README.md index 67712b9..a7449d4 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,17 @@ # Introduction -Xibo - Digital Signage - http://www.xibo.org.uk -Copyright (C) 2006-2022 Xibo Signage Ltd and Contributors. -This is the Xibo Message Relay (XMR) repository. +Xibo - Digital Signage - https://xibosignage.com +Copyright (C) 2006-2023 Xibo Signage Ltd and Contributors. -XMR is a php application built on ReactPHP which acts as a ZeroMQ message exchange between the Xibo CMS and connected Xibo Players. It doesn't do anything beyond forward messages from the CMS to a pub/sub socket. +This is the Xibo Message Relay (XMR) repository. -It is packaged into a PHAR file which is included in the [Xibo CMS](https://github.com/xibosignage/xibo-cms) release files. +XMR is an application which acts as a ZeroMQ message exchange between the Xibo CMS and connected Xibo Players. It forwards messages from the CMS to a pub/sub socket according to their QOS (quality of service) priority. **If you are here for anything other than software development purposes, it is unlikely you are in the right place. XMR is shipped with the Xibo CMS installation and you would usually install it from there.** - - ## Installation -XMR can be run using Docker and Compose, for example: + +XMR can be run using Docker and Docker Compose, for example: ```yaml version: "3" @@ -27,23 +25,6 @@ services: ``` - -You may also build this library from source code: - -1. Clone this repository -2. Run `./build.sh` -3. Run `docker-compose up --build` - - - -You may also reference this code in your own projects via Composer: - -```bash -composer require xibosignage/xibo-xmr -``` - - - ### Ports XMR requires a listen address and a publish address and therefore needs 2 ports. The listen address is used for communication with the CMS (incoming comms) and the publish address is used for outgoing messages. @@ -59,9 +40,6 @@ ports: ``` - - - ## Licence Xibo is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version. @@ -69,9 +47,3 @@ Xibo is free software: you can redistribute it and/or modify it under the terms Xibo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with Xibo. If not, see . - - - -#### 3rd Party - -We use BOX to package the PHAR file - see https://github.com/box-project/box2 \ No newline at end of file diff --git a/Worker.cs b/Worker.cs new file mode 100644 index 0000000..5e19f71 --- /dev/null +++ b/Worker.cs @@ -0,0 +1,350 @@ +/* + * Copyright (C) 2023 Xibo Signage Ltd + * + * Xibo - Digital Signage - https://xibosignage.com + * + * This file is part of Xibo. + * + * Xibo is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * Xibo is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Xibo. If not, see . + */ +using System.Collections.Concurrent; +using System.Text; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; +using NetMQ; +using NetMQ.Sockets; +using Newtonsoft.Json; + +namespace xibo_xmr; + +public class Worker : BackgroundService +{ + private readonly ILogger _logger; + private readonly ZmqSettings _settings; + + private readonly ConcurrentQueue _queueQos1; + private readonly ConcurrentQueue _queueQos2; + private readonly ConcurrentQueue _queueQos3; + private readonly ConcurrentQueue _queueQos4; + private readonly ConcurrentQueue _queueQos5; + private readonly ConcurrentQueue _queueQos6; + private readonly ConcurrentQueue _queueQos7; + private readonly ConcurrentQueue _queueQos8; + private readonly ConcurrentQueue _queueQos9; + private readonly ConcurrentQueue _queueQos10; + + private int _sentCount = 0; + + public Worker(ILogger logger, IOptions settings) + { + _logger = logger; + _settings = settings.Value; + _queueQos1 = new(); + _queueQos2 = new(); + _queueQos3 = new(); + _queueQos4 = new(); + _queueQos5 = new(); + _queueQos6 = new(); + _queueQos7 = new(); + _queueQos8 = new(); + _queueQos9 = new(); + _queueQos10 = new(); + } + + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); + + if (string.IsNullOrEmpty(_settings.listenOn)) + { + throw new Exception("Missing listenOn"); + } + + _logger.LogDebug("Worker will listen on {listenOn}", _settings.listenOn); + + if (_settings.pubOn.Count <= 0) + { + throw new Exception("Missing pubOn"); + } + + // 3 responsibilities + // ------- + // 1. Set up a Responder (REP) socket listening on `listenOn` which takes + // messages arriving from the CMS and adds them to the queue with the right QoS + // 2. Set up a Publisher (PUB) socket bound to `pubOn` which processes the queue + // 3. Set up a periodic timer which sends a heartbeat message (H) every 30 seconds + // ------- + using var runtime = new NetMQRuntime(); + runtime.Run(stoppingToken, ResponderAsync(stoppingToken), PublisherAsync(stoppingToken)); + + // Delay before we start again + await Task.Delay(1000, stoppingToken); + } + + async Task ResponderAsync(CancellationToken stoppingToken) + { + // Track service stats. + Dictionary stats = NewStats(); + + using var responseSocket = new ResponseSocket(_settings.listenOn); + + if (!_settings.ipv6RespSupport) + { + responseSocket.Options.IPv4Only = true; + } + + while (!stoppingToken.IsCancellationRequested) + { + var (message, _) = await responseSocket.ReceiveFrameStringAsync(stoppingToken); + + _logger.LogInformation("{message}", message); + + // Are we a request for stats? + if (message.Equals("stats")) + { + string json = GetJsonStats(GetCurrentQueueSize(), _sentCount, stats); + responseSocket.SendFrame(json); + _logger.LogDebug("{json}", json); + + // Reset stats. + stats = NewStats(); + Interlocked.Exchange(ref _sentCount, 0); + } + else + { + // Decode the message + try + { + ZmqMessage? zmqMessage = JsonConvert.DeserializeObject(message) ?? throw new Exception("Empty"); + + // Validate + if (string.IsNullOrEmpty(zmqMessage.channel)) + { + throw new Exception("Empty Channel"); + } + if (string.IsNullOrEmpty(zmqMessage.key)) + { + throw new Exception("Empty Key"); + } + if (string.IsNullOrEmpty(zmqMessage.message)) + { + throw new Exception("Empty Message"); + } + + // Set the QOS if none provided + zmqMessage.qos ??= 10; + + // Stats + stats["total"]++; + stats["" + zmqMessage.qos]++; + stats["peak"] = Math.Max(stats["peak"], GetCurrentQueueSize() + 1); + + // Add to the queue + _logger.LogDebug("Queuing"); + + if (zmqMessage.qos == 1) { + _queueQos1.Enqueue(zmqMessage); + } else if (zmqMessage.qos == 2) { + _queueQos2.Enqueue(zmqMessage); + } else if (zmqMessage.qos == 3) { + _queueQos3.Enqueue(zmqMessage); + } else if (zmqMessage.qos == 4) { + _queueQos4.Enqueue(zmqMessage); + } else if (zmqMessage.qos == 5) { + _queueQos5.Enqueue(zmqMessage); + } else if (zmqMessage.qos == 6) { + _queueQos6.Enqueue(zmqMessage); + } else if (zmqMessage.qos == 7) { + _queueQos7.Enqueue(zmqMessage); + } else if (zmqMessage.qos == 8) { + _queueQos8.Enqueue(zmqMessage); + } else if (zmqMessage.qos == 9) { + _queueQos9.Enqueue(zmqMessage); + } else { + _queueQos10.Enqueue(zmqMessage); + } + + // Reply + responseSocket.SendFrame("false"); + } + catch (Exception e) + { + _logger.LogError("Bad message: {e}", e.Message); + } + } + } + } + + async Task PublisherAsync(CancellationToken stoppingToken) + { + _logger.LogInformation("Queue polling every {poll} seconds.", _settings.queuePoll ?? 10); + + using var publisherSocket = new PublisherSocket(); + + if (!_settings.ipv6PubSupport) + { + publisherSocket.Options.IPv4Only = true; + } + + foreach (string pub in _settings.pubOn) + { + _logger.LogInformation("Bind to {pub} for publish", pub); + publisherSocket.Bind(pub); + } + + // Track the poll count + int pollingTime = (_settings.queuePoll ?? 10) * 1000; + int heartbeatDue = 20000; + + while (!stoppingToken.IsCancellationRequested) + { + if (heartbeatDue >= 30000) + { + heartbeatDue = 0; + + _logger.LogDebug("Heartbeat..."); + publisherSocket.SendMultipartMessage(ZmqMessage.Heartbeat()); + } + + int currentQueueSize = GetCurrentQueueSize(); + if (currentQueueSize > 0) + { + _logger.LogInformation("Queue Poll - work to be done, queue size: {size}", currentQueueSize); + + // Send up to X messages + int messagesToSend = _settings.queueSize ?? 10; + + ProcessQueue(publisherSocket, _queueQos10, ref messagesToSend); + ProcessQueue(publisherSocket, _queueQos9, ref messagesToSend); + ProcessQueue(publisherSocket, _queueQos8, ref messagesToSend); + ProcessQueue(publisherSocket, _queueQos7, ref messagesToSend); + ProcessQueue(publisherSocket, _queueQos6, ref messagesToSend); + ProcessQueue(publisherSocket, _queueQos5, ref messagesToSend); + ProcessQueue(publisherSocket, _queueQos4, ref messagesToSend); + ProcessQueue(publisherSocket, _queueQos3, ref messagesToSend); + ProcessQueue(publisherSocket, _queueQos2, ref messagesToSend); + ProcessQueue(publisherSocket, _queueQos1, ref messagesToSend); + } + + heartbeatDue += pollingTime; + + await Task.Delay(pollingTime, stoppingToken); + } + } + + private void ProcessQueue(PublisherSocket publisherSocket, ConcurrentQueue queue, ref int messagesToSend) + { + try { + while (messagesToSend > 0) + { + bool result = queue.TryDequeue(out ZmqMessage message); + if (result && message != null) + { + _logger.LogDebug("Sending message, qos {qos}", message.qos); + publisherSocket.SendMultipartMessage(message.AsNetMqMessage()); + + messagesToSend--; + + // increment sent stat + Interlocked.Increment(ref _sentCount); + } else { + break; + } + } + } + catch (Exception e) + { + _logger.LogError("Process Queue: failed {e}", e.Message); + } + } + + private static Dictionary NewStats() + { + return new() + { + { "total", 0}, + { "peak", 0 }, + { "1", 0 }, + { "2", 0 }, + { "3", 0 }, + { "4", 0 }, + { "5", 0 }, + { "6", 0 }, + { "7", 0 }, + { "8", 0 }, + { "9", 0 }, + { "10", 0 } + }; + } + + private int GetCurrentQueueSize() + { + return _queueQos1.Count + + _queueQos2.Count + + _queueQos3.Count + + _queueQos4.Count + + _queueQos5.Count + + _queueQos6.Count + + _queueQos7.Count + + _queueQos8.Count + + _queueQos9.Count + + _queueQos10.Count; + } + + private static string GetJsonStats(int queueSize, int sentCount, Dictionary stats) + { + // Go through each and add a JSON string. + StringBuilder sb = new(); + using StringWriter sw = new(sb); + using JsonWriter writer = new JsonTextWriter(sw); + writer.Formatting = Formatting.None; + writer.WriteStartObject(); + writer.WritePropertyName("currentQueueSize"); + writer.WriteValue(queueSize); + writer.WritePropertyName("peakQueueSize"); + writer.WriteValue(stats["peak"]); + writer.WritePropertyName("messageCounters"); + + writer.WriteStartObject(); + writer.WritePropertyName("total"); + writer.WriteValue(stats["total"]); + writer.WritePropertyName("sent"); + writer.WriteValue(sentCount); + writer.WritePropertyName("qos1"); + writer.WriteValue(stats["1"]); + writer.WritePropertyName("qos2"); + writer.WriteValue(stats["2"]); + writer.WritePropertyName("qos3"); + writer.WriteValue(stats["3"]); + writer.WritePropertyName("qos4"); + writer.WriteValue(stats["4"]); + writer.WritePropertyName("qos5"); + writer.WriteValue(stats["5"]); + writer.WritePropertyName("qos6"); + writer.WriteValue(stats["6"]); + writer.WritePropertyName("qos7"); + writer.WriteValue(stats["7"]); + writer.WritePropertyName("qos8"); + writer.WriteValue(stats["8"]); + writer.WritePropertyName("qos9"); + writer.WriteValue(stats["9"]); + writer.WritePropertyName("qos10"); + writer.WriteValue(stats["10"]); + writer.WriteEndObject(); + + writer.WriteEndObject(); + return sb.ToString(); + } +} diff --git a/ZmqMessage.cs b/ZmqMessage.cs new file mode 100644 index 0000000..44f94ee --- /dev/null +++ b/ZmqMessage.cs @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2023 Xibo Signage Ltd + * + * Xibo - Digital Signage - https://xibosignage.com + * + * This file is part of Xibo. + * + * Xibo is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * Xibo is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Xibo. If not, see . + */ +using NetMQ; + +namespace xibo_xmr; +public class ZmqMessage +{ + public string? channel { get; set; } + public string? key {get; set; } + public string? message {get; set; } + public int? qos {get; set; } + + public NetMQMessage AsNetMqMessage() + { + NetMQMessage netMQFrames = new(3); + netMQFrames.Append(channel); + netMQFrames.Append(key); + netMQFrames.Append(message); + return netMQFrames; + } + + public static NetMQMessage Heartbeat() + { + NetMQMessage netMQFrames = new(3); + netMQFrames.Append("H"); + netMQFrames.Append(""); + netMQFrames.Append(""); + return netMQFrames; + } +} diff --git a/ZmqSettings.cs b/ZmqSettings.cs new file mode 100644 index 0000000..30ccf68 --- /dev/null +++ b/ZmqSettings.cs @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2023 Xibo Signage Ltd + * + * Xibo - Digital Signage - https://xibosignage.com + * + * This file is part of Xibo. + * + * Xibo is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * Xibo is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Xibo. If not, see . + */ +namespace xibo_xmr; +public class ZmqSettings +{ + public string listenOn { get; set; } + public List pubOn { get; set; } + public int? queuePoll { get; set; } + public int? queueSize {get; set; } + public bool ipv6RespSupport { get; set; } + public bool ipv6PubSupport { get; set; } + + public bool XMR_DEBUG {get; set; } +} diff --git a/appsettings.json b/appsettings.json new file mode 100644 index 0000000..7f695e0 --- /dev/null +++ b/appsettings.json @@ -0,0 +1,24 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Debug", + "Microsoft.Hosting.Lifetime": "Information" + }, + "Console": { + "FormatterName": "simple", + "FormatterOptions": { + "SingleLine": true, + "TimestampFormat": "HH:mm:ss ", + "UseUtcTimestamp": true + } + } + }, + "Zmq": { + "listenOn": "tcp://*:50001", + "pubOn": ["tcp://*:9505"], + "queuePoll": 5, + "queueSize": 10, + "ipv6RespSupport": false, + "ipv6PubSupport": false + } +} diff --git a/bin/upstart/xmr.conf b/bin/upstart/xmr.conf deleted file mode 100644 index e5b1f22..0000000 --- a/bin/upstart/xmr.conf +++ /dev/null @@ -1,10 +0,0 @@ -description "XMR Message Relay" - -start on runlevel [3] -stop on runlevel [!2345] - -respawn - -script - su -c "/usr/bin/php /opt/xmr/xmr.phar" -s /bin/sh nobody -end script \ No newline at end of file diff --git a/bin/xmr.phar b/bin/xmr.phar deleted file mode 100755 index 3aca90eec3327c4e05181e962e6ac2dd400b9b52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 707129 zcmeFa3v{K~RUT;EVBp%#%fYb+2mdXXEmd2utGBA!)vZ!VU7}TzT2ghnsp={Id+&dx z>$&^b_$cl`q9*(G@L5bU&L!ux!lfS+`Mq%C~okVu~B?J5qH}4i38W$ zL|m=Jt%-$&rD8l&TF4jj(~}LnJ9_?NF4s)n(Wx|(Xq2Czqq8@kn#8*@*y3SQyfa~t zj*?ot1^A882ZLUzm68`7oZGjru59k#UfsU7v$46hJ9hqJ^yH;SbI)9S*~>okvX{N= zbMgPD;D7!3bUZdUR@b)n);|3AUiPwQpZwVppNk)O*FXABd+RgtitnKGn7+j4o9F&& z&As#nymZPK{|~?;d_HT}^Z(K{eXVPHH>s8C%_&YuwH}u^o<|0e{ZC!e_I!S1{+VOf{`G^}8!aY3Ron3yef%>XaqZqbsGURl zcB9ptW6zJn{@|ZF7$bvVRBC8kttLXd zp9Hd`H=h@N^OwKEwSIh1>kZfXxun^u)N8_-mA|D>_3e7=15Q@!L)oB^0aO33?H%L<6k|7!NHe$I^!(xcLCBI?C0 z7~LuurrnGywf5AtPPJW0|0arWd!0h&^CLHYaNj|m8xHd2dZ#ALU3-PXP4*2EafTuu($Yn4wN$~@w8TefLkw2Ys&_VNI zh@3(v(0>OBAPeyMp&$Ni4|GVBg&te=T9SqSyb*-Ym%rxAKj~0D+w2`RDzMK70$UmO zXJK}TEuYgLyIXPa2CAlj&-O$fIp(kY428ny*RMQzwcyI^#|QooqP}Z{ z;`7xXD3u)G)nNf&OPa+_vl3S`;J@nAbfkQ~vh#k=#zW(My;8~m{&^!gpMQD&cmL4g zy)iuANA>3MP7>d_-ii;BOee1~;_&%n|Kj_ea-BRqY$rRd=4Soi8m6GTix0t(4e^aEnQj^1@cG*B{^f6VBN&?gPgmL*(tM9iET13vx*Oi>7@9ONM9q4u zp~95u;tw8G((w6b-`IGI!~LmYsedhzDRweIwm)y`p3i^((=Yd4_|SB@krXmWf8bS$ zG@sA>^bhVir0;h=>&=X%{!E)sK5r$nUazg)A5D5$J`8W-`t}uv|H|1qSg$va;x^RW z)Oxi8U0m`Xkm~O?^T_8{-FtV@0Y4*gJgh1ITZTBVhL}>8`26V`zxtm02ETgPtRE#i zS9g3r#Qu}UGkjkBlGwWlmxm<{Q~`pb)?o(vhhQv35#Txb>xaMQkU!(hdRS9WC)KiP z8vh~DUqYD84*2}~eDyb72Tu)){$4Sz#?1`u&oOPx=Xd>=AN}_Z_RyrcQK^>7NN8lB z|ES3npWpKvV_w$}jX4N^P(9ATe%$mJpZ7lTif?k5Um2DvTjcy|udhd2X{kLW(~0`g77$l{e-b3pa1taebZMu>=_-M!7cExrZy|JEX_Y`c=P$l?>zG# z?;G+LwcwmOtw26}y+P*ly}PSkLk_KB;M^S4uUyUm|Aes$pI)nhttK9^s5&o4P}7tRK5H)$p9c3h|?8CCrQ zrmFe; zK0o;M*LiL_!h-^8FeE!Z?eE8cOtjex zx!kPZL&}f2nR-Taeh>L;W2 z0PenJtN6V0&)(yg0@jDa*OWT-odMrR0#Z^EO`|xUfA)X<Xh@(M8wF@*wDq5xw&wFSKlMF6;j=beFIVctHj*I7uYcX0~8TA_Mw~`lPWSpMUGex4z8vFr=VgImYr{{YoLA_m7xw&gYx2{_Nj%kcXrQ zr+K;@~ulfziCN78z zATJogd|v+Q%S#U7A+-oX5TwrnxUV;X z>RJwobFUZj?Ix0Z7Qgln-{^22k~j9^qXt(O1C;-br6u_M@IU^sZ*Y)@MA;zTXvU3( zM(3AIH}Uz%-~WuO4)9aM2_aIQy)OJ)Ms*7Lyz!l{_qt<9hQ8b>mop6gFD)wL^Wq~{ zz2X?seu-H``u#A=9iL{<`F!Q#=YET$$dJL)wMwgnIrQtRYcCd)hFkCZiBD0=@cBm{ zdEtGok0Gg!>XypEVSBsL3Rq>=n2^uk`&X0R*Z$(+W;E;UOi5N}Gr5~oSFmb%7pA{n zgTI1mwgX8T{n^V+T=9JFGw=SY8`1L*)N5~F84L0?)+wLg@KZUfgzoo8_=Zd$ToDE$yRA-!BR*(u zDWAXH`3)b4E)6I7tDRtc*FW;l9i~J2qgRqr2j;sdDl(w&fkiNU zzWk%#?Dg`HCVU->Td=kP;O7i5pI`I)-}^HT?;$6yTUGp?x#xWT(9gc&e{^6c&PHM; z-qgjoc0)}ApP%_N-|h=f=gtObuX2Doo?yI3Rz1Y$d*4#>gnV@h&y`woTEhkDwO3v6 zuG4z@I?P%vVdc+M@Y{>@!jjfhA*mG)kK!gPoR5$kny6x>gtgTZ^_o_{{iQJ@pWpR~ zKkm0|9KcQc>g^#psjA_ji zoxio$fGA=lANoIQE+3!Ik8gdsgM9g95)6i%@lswiy!rglJ3sXwIOxmw3!OB+Z5||_ zKlE+y`gR9&Bn9d#S{v24UB(LPZ7I}e>u)uV<@1$){DWWMTEC%B>#p+iuYXFVna@iv zeBm#(G7ENzKDD?;}hT0q{9m{kOLqfYFlxWGlQshF1xK&p&_lm;6l!;>7X0;_mPGRBg=X zN1yq7tFCe2YvR>nd+JM%-Z7OpmC{D`Y@&f|HvXwrCyrRXjN;HXbQsw}p5 zQ=_-%D5tOrRvm4_n@g&tHD;>wnZC z73iD3NUcMzQHM$pud{LS`TKwIp1$9DtBik|lC$kxRzV^@CpX1=2f!fzSwYQ-YNo_v=_h0!gza8Z? zYJ-bp_T8-2t)zs{|88@`PyK0R5^86}?BAIJAmrM?mOU6HZUii6L zulxgk##Xl}RIG539AbXJ{}IKk+>4vp@}u*H3ZFmo_E-I29}0Jaax1`TU=$(JCWZNY z`dfbAFH1u5-FUiza8+!I|D;fUz?PBu{MXS({Jx7|vim~0(m6UhCMfdqC($KQ;q&VL z>kr&`f|{?sKoku>OAg%m&r@)GZoJ}_ciI98>joE4+WY1Iz^KgU>z*C;p-EsK`h)Qh zZdj_H&kx@CZJ*RQfy7-yB6S|OiQ+R~c^e;Dzb`Oi`k95j^(!3BpfAJF^-*5olI2ZsLOG1;w*)g*6`K^Ea&fW zSzlk<-Hx7K+gjUQ*^G9sUxpJOnIoTz`v2H2ooIGE$}dM-2$GKqNi&+6o?gu5qSboi zxXCbBRr z8trrn=rr22jsZT7${78)AYM(%ZI2W}v|P*4gd?iA4?)E{*r?p%2BjjLk!~hn7F0AHkQRIeWEm#|<{C|K3}~=@%CH@o2_VI` zjTHcnJ$H!JYoVzD=WBtWsC@L`7meABG!GI^d=4yh6jjOu37%>lo*xHL?E+&cCa43! z;5yABIjsc7YDUGl79AuIDEuc4bN4VM_%mqAcY=9$%*W;+Wdzy9rZZwkAT{vny`0d| zrU=47JUu3NYV~`9BH@<6c891P#=oGi&dL?|q*Y2sOB=D1llTh#wBed77l{gMR6B3kJQXnjxcm+aRdV`uoY$$X1?}H}zblhDx?Zo$HGb0xStp)%nTmmM4*=Lll58 zFIys0Mx`^wF&65b_GE4!J<}}oS6ybxNMopZObJvhX0w70O)1G>s;GeH*FtMGC~=Yd zF)0|pEOzRf%!zIz4hRFTCNbBb@m34NNyQV~l!EfA{!G@(>zj-jYS%$<(UW8!A!Q3C znot6*L3g*V(*>!p%;tX4HjBR@&r5FxZ1=7fYOom50u*H^IwD3emFTMMb0=?l@*92Xi8? z!Bp#vRmk-UZrlVuoeF!$a4?MugHDawA9GAb)nv%G*V2&nexnR zqi{IwY^nohe;>vzXbv(haN*3}8{9Bbl_@F`IttCi!{R)`nS_oN;WY2Xvp7^yu|k^w z4-#BQw*wloLSIQe9I9}@2=pwqFR7%{tE+lYTl5bFY+v_qe{J{LUbM1xC0gCyy0Wpq zvAwlNCvkc*x&lQEM~pp6`w=0Z8G;cE1QZ0H*Zt6E-Q1rlp9*i)S)mbV>=wL&B*x&p zZNl;ue41)}&ukznfxw*TFY9gQoVQ6a1~1^Wf(mKXVU`K%s&&VspF}(AGKJVvWBWcu z)r*^H69RL7d$E6bVtFS{W8iCmy!CNENAZcNQn3)kyDtral zsu9t{1)8f;1xla;3ecNC5P|&kmx@!Yc<y<2n9+IZ=as;u@#eSqFRb9=tmydaOeZbBgYKyL==(ge8@yx%OP_QM}zG|qC#^e zgoB8gP{)RNU?fHiryNXRwSqpR36a;|MhYTQ_1cJZ9KIzyvl5LIS@sUGV@ps`cqV~0 z5rh*=msf8#*+LryFVJ%!07qqC3tSQz+PD!Pz>fFQ87>;w1UvwWiCYD0ruM_^ST6N| zppojGYKewYyn5&wOnV!wi(xuPr-DCm)|ELHn4B_wYjIRQN_ZM-YbbD3SUs zJd$EZjIEhgsNbUof=V)x+72oRP!=9K%Agbu<_zPOagq_>y;M7}l+p*@9?yB7n_rK~ zU;)mV>rl7AwRX;cGm2&pR8beznFQmt=t{xM(Lx;KE(T(Ep|JQ0UQ}> zEPf_nq8jPo5Qf6j)O;$;E+f?%{1OCiEvP`^!}l7;@Fp}SSNuUv^;R9RDwK!wHLw~$lO-d@r2ENZ_n=sfnuUsn^ud`T z_zP@yx6-01&y|yy=~r#dSituTDF?UtzEgICNksoXCdjohN$T0iAOsH*Tr?m^f*c8> zS*RpXoFXRDJ!TAx*}!MeAL$^hf$#vJ00;U*B^R_g1xv3}B5ZJlz!12pVs=Rj#q?P?kom$O$h>LufRHMWs*pi)Fc(6}N)gAU?^dK!&rQt%EVfi96!~#yS(Zq9eS>KCzgC*jL7rtnE6#6#Ye$ccU4_a0HSl7 zx&#=Jyq*hQr`i}RoL7$@++G85AVsQJNv4p?R0#?xd-|p5*CWK`RW)aE)XO-+)ruTE z3jeOA0?9O82E~OiVoTEKkbDY`UdfGgVKHJcGC)ByaupS}N<0O`twJdJYPB|)5-%9Z za${H~Mma52JW|{DqL$3DDiye=^%}Dx)IW~%iWcFKRrKZD7!nJRCcFuYBDoU2-^~>W zUDL(?F&di%7{$oF<_@!f%cH8WnxqmNZ@pWs_+F#Opc-(WoGenY2&O| z>U?8V>!73+$c#gzd*_i^C-vLBI%K-c!nFv;qk$C2_0^$vd5Wv}EH<0^B@mP;ruxzO zBelW_=X6REx&(u0T23aq#C>C$)z9(hSL*Ff!IMVxzau@BSSJ7Cvoe@{%ax4hoH@l| zvlveW$Lhc@irXR_Tnw;S76>_3C?lvvj;?(#LH1gR3?L~EWG{_jsPv%CQUmD)q#s>{ z%QHOW-F_JsJ%Uz_N!wHF^p`TVxW zC0DB=mqQq7phX2jrAHhC0o+j;706IJoi<`3ofVfpi-AZQLz0m0Z!n!zu>@{HexT@aR-c|)jd8KY^45?@jAe(99hoh1RRQ_tga@2?#jH( zC1P<_`hbhzNeVR6$v{jfGygnN^>mXN@r(;$CtIK9+=VSzi_rMYYqyA_Vw^Yzn+YqZ@_zw=RFcQN;0=5)AS^#{sIAIYBVPo~$C` zXbNoMy&Q|y6eURsFhK^hIOf1;b#%m(OBB>wJQgtUZV0VZ&r#3gU9n<*=7cxI?i_Y} zUOj^(gXWY`TjJXj;!y_y3MLLS6H)?ViEo?Gi-&QwJZ^~u`ABmR2t2qJ<4^&~AU!fR z89E4YSSd(q17w%9l0_1X4}dr0G$;ar=!XGC;s*}SX<0%Wyo^+*=CKYd4K+b%DZIKW z+(x=-5J&jR^2G|yRy<-HKo1|(7I{YvG>i;*1he9jrX-G6C#qmDawa>YXirkvJT4Sn z00`-i8RA0uMdn~6;LlIz$Xc>Afy6pj@LE`c5(H-_nI_?q8X;V#+8?!`e3u0REffYI z>$U=GHL)rvvmA|SgiRC2EoSG^$)hO+iy+}wO5hhmFfBnxj|sVGIyF?a#X~vTlEwtF zWh^TdDUE`p5X3$z>q)3Yv5pi!a#z3ri@TDslwb&Pe?ITb-;Ir(ZBC=rIB*X?V)eLG zZ;-seeP$X--=da8HhC{sC?L`R3Bf`mn+OU^JW8I(vmbB+vdJ9)FLDSZ1R27X7BOiOQ9ynR71)prwQ1Nxn$gQA%_Q8VVzF$4uJMFT83QWe zF?J|axadt}+&M5)$x6nIJrF;NUNr+~c&6+joMknI90rmrsLe)U2S-9DO}PUmOAMI{ z96)rCI8<(KveLLveR7O6sZqNELv(Y%1%9T2)b_*072iZ?C<#E|jZj@e;sm^_#I%tC z3#De%O--bD0uJ=l6q%TtgfGf@BaNPOg)6I?P-E)ud8(!~Q3K{LfFoUPiyIi^iazux z979ch$f}VV7rz|K#dqje5)Z;s>7dr2pPH_<8VLC7ofiECB-n#A7Cy1%B62or$+5-< z*2ilnCc7@??qC}>XN*~HiY#;olW@#U*wQA#=L}a+r288Z6iDSXK z6lO$SaZ^Ey#08jQLX?$C$zTM?>zMAifXEf`A^s$JT+Zzx2_Wlq#F~V(l?IVA3|yKA z<|`JXF6a=fO-sg=K*a;=D%g!wc`#x{noobHJx$3P*iLaI#LiF<$PiLX0DaKFIyo|H zNGH2QAtqInET)L?utJe&B5Xcnwrg&wS>0wbpB|ClhwIE^cIya2G8>z?2pnrDZxUew z4T-s7`^4-81hGtl6aYw4EaY0JA`-}rxd_g>%=P0~TjoNs2{}tA6#i3c$S!b1QH1Qz zzDc$k`yvR&NwBnTf2I_28>s{grO3E~GRst3HNpM|I1g}DWU8YGIiLIJi|J>StKrA5 zgF0e_Jf@Nn3=rmq@}Tb;tpv=XbCrYhpxp{M-Bo&-vb4@p56Y7#G!-!s85tnCBR0_D zdDT#Ko}3R$xKz!EMl2EzGI8mE1ith8AgquG<`R*y!_aU=0`&#tf~W0h6%2(_^o@-w z1K=L^pKwIFKCdbO6P3y%1uii4ZlsF>1q75uS@@a4bjTR0_K^IcF_jw)>5tA>@+Fb* zxPUF$lnS2@uCi(2}->18u5lt|%&#vnir+KqnxM!WHgfo%MNSEKWW^P zO+!iOo4{*F-4vIJ#BuV)hLn?xqa*q~3jv7XLLuNTHU-n|(mLP~D0jF*$fLua`0V^R z14d|luu&Y{tyfX#sv~M)jOl%p?SZU+{^fBh@wISgmLY2xJ^5)!5+_z>N{dD_2OM5-@fa8xlggt}n9a0vX8F z26J~(E7vo9BnTZ8HzF@F7%#d3;6S;8tQqe?W?j}kebUJT65d$|Z7S}Wm@sp?j>%C6 zy~~5^;w{crkc5^wbvjbhL@mbdrmkAioN(U!KtpIz0H}pPtcb<+M0V84;z=f5=9bC2 zI#XSjQbhR)dReCl^n&tfr6yIqSDBq~9F>|l1_*m#JHZJ28;ePY$4H|=$*OPA7Wo`Y z^V7i_eRvcrm|BN~Vh(^*;Svyi2Uf1Uh_^%zN~i_oqQCE7nO@o!VY-lN#F-Pea7CZV zm2Rq{(<0T>wEt%vbF4}Yi=K#oFe_NI9FJtTfqHwe!wA;itLHI9$AgTe!Zi)^{8WDFSyJjHm=j52`LHQakXoWHH}?Jn zV=ASmJ`#Eqv4(~qsRw8L9B5a-*SwSvJe)eQL+XavgbDHPh5Sfnz=ZfR%zg-lKAbBp zCjVfrFwaaXVX8o*dJ$Em$iU!32}glHYI~2crH`xMRro<*Zb3m_H!sI~HQk)2k)l)@ zc;TUakT_CD!cr8hdpHMipcQE;%ja)J2J%5BmQwR7PB8ECoFL<5Mq^p5$U zq4Iu`1qSpFUCetXz6(6=F51&dtHY<5ScKtNIin!R1;8b&xQ2?s@cOZmjD{gG5`n7j zeIY7*Rb)(}F)bQaqrr$y$ew0%j?W7W(QT&ekjU~21tM;o+%)qY*k8h9s=kf?1xyhN zm`)Z*r@6x#{5}^@gtF9%CGB%hs(nCRtTjs2u0ZKGQjicwwFhB_ct$ozEabu^1Ca(c z*JPkBEV$$*Xo8-D@@+VFE(#46YDq9`pt2>4blti|PS*VgvS#6bahsCq5p2M>1Sr1yHTD3H>bhGHfZ9zoE@@ zU^MJuXeFrIL8es~ue7W~ETAhG^-JD(A8Qy=vjzSr+O`pp9aI2gLj|)65;IKogMC3P z??4p+ryRTknot2d??KcKD3%#4$~WtsLL2J>2pEuyNLL*Y{?w~?!8Fjl<@hd8!BmUq zfj|rWty5|=T`Uz;EOj9H(x4lbBYZ)^p7CfTL#Rw$b*_Dk>@27Y&@_W!FUBy!Vqj7^ zx`cmOPgt|e=nL`ybFLi;D)<+@J*)2mAjxtYzjDJK2Bx#u=hYmNxu~$#>C`F0N;7nx zSTtH*+--PxBM>XXT2r0wLZ6cUQ`0OJv9B=aRB`SIG_9DIOw3BRGwb zbvv3v*bq%6zq|6F>w$=+a)aNnZdz)MlQ)VuI}AJpKcIsTn^v(N-ARs>ysG$A3u-@R zrA3EZ;gBQ|v^L5mWibV?fZa{Eat8hx~bR-Q$*s!LKHCpNF+(w1?E_i zRI0?)%hRPzY%*e)pIr|k=M-4x!rg5$e{fA`Vt|n>qGh9Uu@x>*1`5tMv?!O|(Miu` zs&eStky$kK4XLY+o)N&-e&FYJ7^$@+*+4qSY7VWEIwOg)?nOlc85;^IT!Xv zs=3PQz{YvkjwFR9ZY1pv_Xq=T@k?_WK~rHyV_7|7>CG&Lh`QiP0$(iHqwrJ;juVta z_Lf>1nKAEuh$^W>xNOY8 zYv+Xt_wincKSTyX8JSod(x3 zv^K)lends2V&fK%Fv@f&HcOtb1QrM(3N=F>&&_Z)PX_2Fn1rRSEhns z9CQwJeyp?&iVA0@L&V9DE`H3#CF(+^zEKP%){3)}Zkkv5@xccMc(+oATDLStvm<4I zh&e&ZcD=~zM$R>DPg+$M7kNv7s4>G>=J!NdP^~a;Q@iM z?gwufPJv7vRDj!y2!BS;KLF)qtGCAVU`khCti~mE|3P{ZNdaKOGuuhoi^Z+f+(8=|0B4?fd*IlVZ=~?uj!D<<5n+C?DZR&-gMg;vxruYqdO|3*hBnpE=B<($>^XJ%^oDlYV9U- z{gKd~iAb>4WaP6ou^nBjS2q&c07?`!BbW==B$$0{ks-0+Hp?Cmtw|L%Aroy2W|DB@ zsI(RX5+)OE3r?ErQ{5Wi!KyY1!h_|mfPh@-hgi5Ob$W(oP255@T{!e3-hrrE`;(2YrfZ=--W7&qh0fRy8O2HZJNb*>bWkWNZMJ z81Y=z41;n~gTZ0FsD7`eXh3)%%0SZMcdJSsdbq=pO%YAiUqpPFKY&K zL4)O#B9xA-9YYKV5r}jVN$TS?2H*>_d`LM(hEwys!8#v_p{_~Vn@q`8z0GN)qpoKU zfKC?0)4aKLn{eJWyXw#+avV(`1O;!>Q+5fM;|!iOW0c~=h>|G-6x#_GJJ{Hsae|`A z@S*CEbn)Yg6(mVC>B=ua9a;0@hun^+PK4ha4GDAMy<{c4TJlRg`FTlTQdzi2 zA5$8kzF=33JUfxFrKyLqvx#}3ph1v+)+IMrcLO+F-Pbq+{I5sni0%WMWynJvD4$_7 zc`(I#MLJHDl>$x7(1sV40a^Gb1j)6IUNd; z!ka9jRwQI~T-*UQmGmB64uivxgF*R=F7MaLjp0m?IYpcu!f8jyqoIrti45rpi!H1- z@2aY6BADUuxW8MlfN~~8ZWUEt;~R9D}fq}-zQ>B!tu@MES(ugHR{E(1vixvT8)4VMIz{8*?tx^(fxlJ9^$oX70Zz2%Z4C0ao z0T(4|#W_Cc(3~?p5J`t?c?1{@!FOpg+9!f2^nn$XkDjN82DBhj47+W|2yi#IE$e7m z&on^DqJq6qe#;P3_HKu1l1&&}9Ad|~7-G!J(xLuT&&a+J%tP3l=Dm=~<*E(}f+{7A zGo@ZGyUU7%<^b&6H1XuD@IC92hZP&5N@Vl75wz8_6$%o=3=0!mG0axuFr&8en)*mL z9a{hrf^2%YYU7>ucBNLbF1(}`$VaI}?>#m16Lr*_a-ILDYU{3m*}(qv@|4)hg@ zFc?XVo0%?dY!qq7MT7z;6K?^&z_NB{fdoocq+JXDA}!_*^_Jns5@76|)kTc{`8MNco2E zK*WNhk)ATrtX4O~Mqo*n()Z0;e661hraIsNwWU^^`40GHawZ+4T0IGlhdFuu06$C! z%2EXssi70@?@}5B-V7t1Wu$uk54BAG!!fw)7}pas-8if=2+ z&3dX1T;1#jQ)M{wE6iY}G*Iaa28toc);CI9^Qd1bQwsG7ZX`j(9&yUFU?#hV+36|rLB?27wfOi_zd>9GSeX3|swSPcpc!ZL zBE<95KCu8QM~~qBaBe}^=Rx^Y7IgEdSY-y!ZZ6SXj=L%PM8^!A-J^FAe`vV zh|?V6%+($Ep1@vGhI%BdEI0&i3-%16Rwi36O$~1GHZ@P55DL7Zt3I~PP;wm{iCIt!mFfV1AvhEbv!Ar^$##|GaV*o0^lssu)D&sfvEDS*(d~nYOld|5>&dbwAecXQaG>h?EDpNZ z3hqdYR~(9%c-h9LhDXJ}&AsBLlo324Z%Nw0Z@|z*ZSh?3dK1#fQ`8*RE*Yp>p;o%z zgriM00?#HSI}a`7;t=#(=Hna;kFu)iN%jwO*o6Y?uB>RO3i&BPQx;{dmt3A>Xsxck z`;;aLnNvMH56Mqwq6M}D4~Ru@@{EPo+!C&9?Wuf_10WE(QfJHo#xwqaY-^fV&R)mo zmLVO_@o05(2;IuGFdjYm{wT@96CEWUoDe!nPWHtVN+JPMYnrLggs4R0ygWJiKrDz@ z#`G{3lvo*=!Ful07n0hmN6{UKSVdr9cZ@qIGmtSQ8fUyEx50tJYAL%?1+vtTk}`E9 zLaYNPj0uz4gg<@&vt4giOFUJ}Yn=%_Ge;3~j)c=J-RwGm2kBhMHhoGvKyxll(8aA* zDOV8}$6vIZo=S0oOQOAl>4oG27(-~Vp?X`-QB@_v%?jRJu>=ZdM`i}8N&?!&(jz%o zHtza|LK8iRbIIELYuxQGL#*jV*@Ab=)*xiPn)ie_IEFFw`ed|^5` zaF1LY?GJ@V%)l#L6glZ>)`qi_Ga_`Jss;xz$~=!~n$LrBGYHgTsr=#IY@XPP4`i#F zq6enyKiZygIi3wSvx_gGgwIwvfrCT$mB*-HHsF6DB`BrIpg=dO<5FNoVL8=d0OylD zX&nI#Bn%P!IR-b>_gLoR%tM&XhHBPD*N`pMs-m8X5tW)8B}tO`^OgPSX0Akp3mR6? z2yA69Mv0qz7$zW($O>H{^*DVNT``vAXi)mz&BDBE50b@o8c7uADH=(k zZfXoHVTP0tsI^n}bzZ4ppGHJJvY}5s@=Q0gxPuGnKuKoCR%ra;Jfiru5I{#qi4RkU zmWG0Iw4^=h60)djUp@3x{V#OJnYEBhHx4=ihb?6jAUKZ4rJ|)8L?@*TFeubg>H%d7 zvt8D6WEDTr`r<_y02zr-L7{){@*%ZwR!Rkaz1Vmu!Z4|WeMNO&hYAC4p(~gX3=`+0 z$U2%>59He^eBhZhsKTo`n`qT-B(Bm&Sj~ks61(9KB&(=S^$m&X>NvBeJ9MUui8ksH zZek~Hf$^v?AJ!=}a8XT7HJ@q?U#n_g%Do<9RXlDkhGlKHVupTQsU$v0Bc%{9rQE8z zvRoqfCn);R3E333vNBya=u`Muo-@n~@VKkvM?z4j%qL_#VGip`7i-ch9Ki}V4$u>m zg1gpWkmPC#pNnyB4rdd~%RoPBVRWM1)Ea_pa%Lt-Bdgz<)eJ%gnN%!MflOMtL7z~K zrFsT(o{B&WdDdpj;vVs@;ALjZQH5dv=X`}!pF*0S*Put#wVxuJ4JDOja>RM1q1G@M zMl)bf^@5NC2ns3%8H@-FPl6QaK|=jfM$;{xU|F}RkLh=6|Fq;p%wQuvrU1A@d&3?w zr&4G+6rqb|pykGS$lRZ0tOqugnNeMuTAMUd2w@A+G#SGHO6e?i+9h69lc;=Xo;YM; z%_smBIy71K=~no1I%%&~00T)X*DVyJl1CERVw zga8}M7Dp-XAr<;4Brl?1S8iLtq_G3PQ(irJq9MgeoZfKkoJlFMCvKQK$&<;Z3}aBS zkfPS88RWyPq+_eGUrmArb*maPOE_t@iQOl>VM-M2mgPBx$x_BncWMAfr1e;64v4zV zhWZNKx>6l@HCQBLDhw|ZaIQBlgcj787410h*q!hU^jXmDGo z86@KPGBQE*3-K!Wx63*~5pa%Zhp+cefm__83 zB&0i!Oa*5vXlCYx;U*FB;U@8O=^sN7=_>@RFeeznI#|M|ikwa)X^AnHOH?RaPeL5^ zb&*lv;YTieB!QL-Y_%hDWFWHuh?SiqrI?UP6xWWHj|%><4RC0=QAfxsN8~%Q6~K|0 zO-jGwMJdlv$!7)76Eg5kRv3ax*tZCvf=G%Nh1+@-M$F?dw_VgpB2%?x+cY=aAtCkJ zMV{`K#>9hfz;V(`lQ~>DLLmjEWl z38a!*rNO{7h(m^XXNig&lj0)|FpFIX;NlF{9ZHwh6JkL*lgaiLd9Xa{81}L*U+Qga zLU>&vBY`skl^tj5O_>`91RMGoWdX!fV;SMS?)J7TNB0tTZ>A+f`;FjaC5@-V^^p@?cR0c^&zwV43Uy$6V5OP^#E^1re(nr7gk+y{=R+^EJ!K zqg)sO`!UG?&HI<%&GMA2j@l2H6ehU_ixLJ3c5*=ktg<^eMpmXo_+={yRW2dvnujnu z-jG>yn!=R6&#+3Z2y_8N18ENS5+1NdXVBa=Oglll8518%5`p|Q9jp3UT9K0CiG@|l z8?{haab+aP&7MvI)l4{2Z#O|vF=YQam3`q`sy?^$D=+Q?C)!ppUC&LFGy%HZ0XH6D zlbJvR4SC~Qa4``9i&8%IavoFctXu&7xQ+;l@9`Xh5FE}|1reB2uuGOe3!KJ>vlX0( zORX;~nNdZfX(Fptt90YA#Z_-2W4RU!iKGkY4EP;9aaDpaRFvBdM6$5y_zWcCS`xE9 z^v=N@9o+duCUI}nI=tKy$itRnR-M*$@f=+wrgvdft!7;t1d2G|WV`w4X*vA7n%j|N zj+>-t1gKJ2xcSB>mXSZF7iF#(vVBhK1RJg3C#R&6P2Ni_AlTTsPnPHre5em)WJrL! zp`v?y*MouM3k=B;^cgP7ts}{x_nCSsInxQp35e78QQsQQPZwd0$#bVNln$ITUp%bS z$P-V8IhPhwG~MpG44Uv{Jepk8)#>zzx*Bpno#3Ar(H9IDmLqu_tqO5juAg=!GeJAc zRj7mnMu+J|a#nqR_JA`tZI_YMXNix^N$}+jG9`YXK{bj`M1aEJ330lVG6LO^#$}$& zTM$jKDGcVEetT2zN0F6PvRF{F3%>9*;=$3`%!;|n3mVt3Mc}S7f)1Q^Oj}OZxKuK` zs?5YcRaMQA0~3fZheer$CQ&wr51kPbRfIV1@rrFw06U=d4cnri>hJ2>?pn057j11v zH&%9cSGM+_kJh($qy4LE(a!Gn)4MCz#-sgh`Frhc`)gbK(GD&)+t}YN6&0*T^Wzo@a@_zaN5~j+uH*IfW2`I7_Z^Wjjh$q>sNrwcyt*Mwzl_i z$1z5R*Y>x^bEJU1>!1@Ez`wS(yLuIrTDiQjxdD3dj<@xV{VjAMv|CZkSFdlb?B;f^ z@9u2xt${KG2>NY+;JX`p&qNr35%$^ZD;^N23;JJM*;-v=Uu8|$1F%mEn( zSM5Ew_WYhqo{^1oPFZ&4@-_)`8SJ_tT#G3nmB{l~R<5l)y|x!{29e3xJ=o*X-p<%FA4}Js#Y$~a?_ApjXEj}fjNMS%uk>)51S)|g93P$)jASS{a8L8*t;lbcQdU$SnRzzW zL#Wbo8=GMunb^T9p$C(00?~*HwqNVLEkObMq~1^!_b*iK)IvSqnidJggQkVyVqnvr zI2q%}mGhP?ej^DOgn@EOx%$io3Hx)zD#?}F#VYJK7pAzq>P5M!1J`N72P>d>kQbWE z@!jf-z&$J?qX}f35cbR51&*1|!eJk`sec-pblVK+nF8amjv72*PuJno+`Jh~c896x zG`kNM=8l-IAMmBj^MLCx)3;$ZY0Oq6tk{>L!hOx9)R~%YBFAvgxh5_1R%n#%Qeb#d z^rAsMl>*DGm|MYj zJV}x3Iub-M%CXhiN?Wg_cEPWCMfAVq7(9A8DByxCZFkcXHLP@UX;5>5=#|}bw8F#t zR;h?lv~gUv-rt@&v+y0UawiA~zB**sgbk_hZ^dN}jTrmZvLeHm;Zf<1UOBNf*z6(0 z;qi3-(0uGY5dTYvV)Y0rdX9vR9cu%GXg%7_!n7N z)Cfspgk9T~5MYQicHG(ETyQDVMHQ+<(Gy(nkoIUHURf}Htow0molJZj6>xVLR%S{` z%sH1MvJgPg^`5*W8@E;+M$y>n`RECrk$4F`2ne)LckB}R%yJpVS%MQIMmOCTgw1*; z8NFGosOc#Igb)3UTRdVMd8)6^gs5;Pujv(F{Q{4`qerzO5^8DC6wNyB-*oG~SXkun z#xPgnRBGhJ3{_XaW%QSvPC$p0r`>iN)Lme$OVk?1>LOVP7iLwDNM=cp^V(=goac5? z@@?GY4Z+cMBA1DG><0V=-);vCs%((|6{Y^y9`myZRypF+sm%~UmVz~sR=LzQvXIMd z&4h@}Sn4L}BZcg(@aHI~3ovY4|$MpL*HEQ5o}i>SfH-A^JZjTqq*G94AYBorMB zCphMoV9#YQH6tpCQYL8zB}Lu&92%V(we)~?-rOoTZ#WLYkh!^u33zH*QeEMrIO#y@ zL}5Ci{N?JKb$r{EcbD>TDtwA1U?c^%m5goz>LPHPkf6`wqiKtAN*K77dzA6|$ew@} zopeXJ7CNhBCl8Z&w7^(pLOR4{8+qCby?IC$bPfJT9hjuwwS-=~(6q85uBIpr7R8G-$_pdo-z%E=ef!`7_E3c7{{mNXpF--*Zd6>PB>?EYjDt3ug>&NKI z($$)dlkn1b5B?Hv*h6I><4Z_vMRFgog;%dV#2<`+(# zR#s$rl(tj}WZbGA5-p@fwFD~S^fa#u2Q6}^3d9pnHVzw)=B6Hh{Lx(WIFisVo~EXs znZ{)-Z>tor(1ro=Fzn5CiSNm~^2G!~<^#BhRsYIF6bRvqXiO=b?A-C~L^FyFq#T=x zC9p~Vih!m;yAR_bxIHZ6fsB>FBV`ArgU)0;1WK>1=o#^lWqx@q$I)@7-T2gy+j-rYW=u4iDz6=z?4|LtwV`JJHXHjTr z``G#D&5?(3-oMNSQ&YOiB~3sVJ(`Z0U0d7|uc!;4_QmEJL17g9<0XA?5$>J@GHV>g znj6$uiu*M14#pIY1h4=HJ7&6QFfxERBj<&N7zd7((0nef8kBvtUccik4QISu!Ll@H z_Gs=L4nhzo`K{5|4vu=eaKY|=8!N-cgPL!BYcx7~K6)~`ef!GB?(N&r1sDox()WF$ zaL#&oYviF%Mx#^u>Ezo{SErLLGek6QCoh6oTVvMn{P}L`ZRi~sE6oEOSz2qSbR50L z{o{zsN2AHe^^4AAbf_<3%mPP2;zKD3M5rsT+8C5#)^HCI9YDQR8sCPQy-jBe{iT>? zM#qudM(P}#;!sx*3YEiiD7_VAtRWH_Vq~jYQK9g|Ns|Fc-&Gt6Z@h8TIsk8Ttq3o~zamHX&?P5aiaix?Hz*YqNfUizzN#xUzQn z`qLmr0v^%HI`MTx1zSjKIrej-B2_ zZ}kS}d>5I3_N_JO>h>l+y0wl!Q6qWbf{N3a@(;D0x@P?C@#u@MJxdnkUD7z0A#SK) z*}1yYbrc;vDQ)r8T^y}_3++~|8Ifdr_XaEn-*g`vtra~qyJhXh1oHr^DOf?CeunFP z?_lmo3|b&$Q*2uxNMoR}9K#!+;Y&klS@#o{paS-!?HIbbaA9wI^_jK(+eoXk6G6$h zo4ABRfRdB#d>3k&9E7Ed9fy$y=nw#YPjvxhmb6nKmB!tLU0}AS)hDoBFkZk8 z>U-i+*OyS#Z$+7LCpCZss(dG6JvJ&`V|svwFpJT}7FbE1jh(v-v={rk*Vlw^34=f9 zf`I}>Qf0f*9^-FJ1HFM{PQN^5?W!xQQjjSHI3?AnEzln)DoF2}_`_`c-4h7&CUw8r^@oRdW%KZ9HpSfQJV(>x{ ze#8DAA=dzPV+;_9t~PDp+#=|+c54lXpd3RUZz>D1%h5&>-+7kCLbP`D)=Sa!c<{Bs zT;-ksDYV23L307ot|Js2?QSYxad%(;Z{AUFE?)mBkCGrb4x0!jO$~3~K^VapE%o*pB5WGr&Ce`0V^-`~mjf#^EbLGQ< zv2)OCOzKm~AN1j4X@R#yXsOa6%SiEl(< zjkYLH@Z!HL3xzMDyA>oGnLWTx6O<~qRU(lf`ciZ4_?r94jOga5HAzMC1xzxMW;Iwb z8@qhhiy#4tNrc8x>N-!-b;V~&c&bDgSn+#t+J^YtA$3s*uhs~Q$ZNN+Y;Wz~SlQSg z*e}c~Yy?LwwCSabLtkd{Bo=q*zJy#X7_>i$cW`Bs^wO2OS(3 z{BTftCOLipG>m^94l37F>6{%Ma6h<^ZYNEyEJGSXeP-V)Ad>@nS;KMsHJ`12c6*O; zAq1eeqn@dPN4B<*rj#106Lr9`SoPNYbR@vFXT{;%(OP1n%Y|{26Rm_!g+PM;6&g`J)#EU(8G$o6xxkTAezLVhQ_-4)~=#+Fx>{XYVno z^5Wi~%GgbnbhAwKl_>bI4DMIso)-qHIl>Nqx@Z^t`4SdB+bFyk8)V!f`j=g%Tli6{ zVweieQnkl1k#y-mRJ$5W3g={(l>@U81m3Hc-5p*n(`wa`;OCo}$%Q}1xsA<{Lq1Jk z6@h2^{8)3KqHiSY#=IfcBw>o+B^qY}WW6zQ2`kY%rXTiMe>IjS>r($5sYmaepX?#0 zskv@%IYWPpb3-ym$Y0AQ1861G`;<^Il9G~g+)wNyM1>h>Jrq*?Cqtj;hCeA3NPA&p zptG&V$_2_<$d@e|>#=Gb%utsr98m3C3}WH@$S%fXk5-R0b}lw!i0sa}g8a_Z=QJ{% zWB$u0!mlRs_%82ek+Ap^@Q{9xY7XQKLEX1Gqtog#FErp|=PJ-)(-$K=(V2{#5ja11 z%Uk*mK$L6+Q_*jR`nDim1tbdY^ihqFgzSv)Wz5PBQkBRmoaQyNO78e}quv-ID(UU7 zOUd`~Ax=<)Y1sI1m0%wwAfm)yah0Yo3UI)dYZ zA{n5!lq|rix3B=fGfrp$t}uCxB3AANglu{4)}FqK6#;(<(duDB*cWqtQP-^x!j?=;PEPe* z;$;EK*ex-Yl9;$vsofUY9J_@Tg4=s5I~yn;p|FmP;$VCvWk#_yTq+#!H(WfOltvln zONtrnAf_)tZA&E0*S0sw;ro~()}6RhrMRI+Hr2v_RBCtYyedG1fCM-~y$@@Mc^u&Z zmU>4hDIOVuOFsepi`wOjl{T(XyqJ4Q1{99Sg6`Wa!(ZFIIeK~fZCEgn+WBj!DZjmX zbq$LMyQ6R?-}z1*iBMv!fC8QK(YdoU#412QLz@XK%Wz79DQba19F0%m44#EMOGwM)@W+rDRaW*d& z2dU6(L$0_qZXjfNtaNd$>52Kt1xc}>P)f?WY*jlNoeW09#I`LFcN!?8z=}T`!{E`I z33{H1Huv{%TCmhhDQVy@Rm&5q+@gtznaPf;aq@-Mpb^Rk;Ewz#ur7V z*jQ&o+6HrjrDZMy>j1{&3%vO zJm;%IZbQ#jwKRlUMm%vhCo5Jtk~BAJmG;bRaeh9I=L^$|rTN*Vcxf4@NK6-#Bq{8)21}>_(OZlU0aI)g#(Wg(}|-`j#Uulsi^-33?Tk z1}!CEx{S*T&7Hm737Bp^=0x65LD*^?#SOc*l+`^jFMvTX{DD>DM-XjU0q^PbR?rtG zD{Tptg$tvks!5@v&QwO`tyZh66Nz51I(~dquGfySP7Ds?p%D;!vsRPFck-$979yE# zk5=hV+8&2293_lVM1T2lQo-`18m@bBf}N6rQq59g;*uLx&v0S5aUvbh7HPr5LES18 z9AUZ5_BdJvF>P`%DQa+MZDkk5ip4vqiE82Y>kPf=bhfXzk_|l?aR)8ObfwlPyg}av zS;4M~TrB6xZV4(x*h|hXeFtLELsoX_=Ym>P&NH%W)($Jx5>^+Yv7TmJzvq$KG6*?; z9;yLbkN_=9IIXZP%YpImyMl@)K`SlAFS?1IA`rdm1xt=vnd%DJ0h?F+R;vY&%%v~= zWKN~csFP6zMo?w$UO*s)$ zn5V!hxGFYU$F(;=aR>E#wPFP#^F&!bd8(!SJc(h7#&HeKrgb8ypoEOf8rYUqqQjg_ zpsGNs(HpJi6#k!>7V4e#?K!?ZmDAw|qspn507Vi>p~sU}n1pwU1kcfP!Ap(Q)5<{b2s`k_<`_z^|OU+xP7^o(L>smMAR1C0Nnc5i(ep}Gd`n7?1AI%u7P z>4!i8HzWGI`NGL$NJxa~hcySo5Fyj48@F;UJ@g*NfnE$$DlnGd#_@0$+q%KqbVN@L z;@cB377@D!6C1GT88CItVBL8UHMdM+_uI(`bI4~9Grl%Jux!Og6awt^K$Himg}71d z?1*pPk7Aa=xfFy|4Ww$-Ye-7!!t_NWofDiIa}+szQoUp^SQmP%g-cn$oj~#w zvxXzp#?mGjt`vPrQ`Li1A?IjlCoXx7hu6|Js%~B~B^WS}dB9yf)E^zVyGpbKL10(! z;{Nl3q2n<_M3tY)TqYPHveqq+&%O<2Z{FsZEodJV6?vOy^e6C+^e>!|i4wd1uyt?* zYXb~=$f(=F8p2K}q7~+jxNT3goffuV;<=xPseFsC(3fG(NO@6a zP{5~9-6`CG$n$)vBXbL|JbKPG&~S?`DMLCL#8KSn8h|#=GQ8oRLb5i#sg0UfhS_KR z^#>Mx{2--^6l6bjViMu-?@mf|eeH~Z>J6tTTw^3H+^^<(iMp`j8pWEQ;HMX^Z>lus zOPWpU)hBL)45L_<0&#B)gIVwQbGtm(K4LpCK((aXN##h2M58UG;#Iuj{=(!jctHfj zjiAV%>Pd&}i9jXPQiyQ-`I9=hAzR2-^3OSaTed0^BHUGn!&704n=iam*#OCJuzd@S z_koCxtyxEkvxL(CS;>t7c0mviC+!jtbU@J!yP*K1avyPYy^uV>AvkT!hQ@_MV$7%Y zYu-seo_ow%bu$~yn`__w9fxL2)1_g&+hU&llgkfc>K`@S;(e9yZ9Zxggz zS;!p1Dd88I=r>J#Zp>WbXdwlCbYrZ4pPCN{zo8=>p$*vyX{jJx~hBu+YG&%!W+SSpKF@3fqy z4^L+z9ZXVRemV=l(-`Y4FnWiQ9qK@&<%=_`>bX$=WK^|JLOo1v?SbCE!k+Rla9q9I zE`kGEvG#=RYqxHVDp`B6LA`i0WL*LtD|ULG?4%vqxYE^)K$AiTJ}Y z0Z1J=>mE|a3@_GiX$AdM*mRoIpCt5r#rVI=eE4+HAX#VAtPu1H$qC?!2%_E)DaIP`G0A= zCsV6etWOZ>aJ)i@Gu!M_!z-oh<48L-s&SE~ktb5fN&F8vkYZG%BI5cy#qg$K6qj_u zsWbo{&RMM=qCuy3oaGxP)akFG8OmhmE*0#)+?inv=Xxt;x;4c>xH9xJbHQ0WH%H8& z7{TkxA$_!z7aod><~U`bhvo+N)PE|!3Y^u?uX=FqqNg*E3;HH${(nO&$r{=I@Nf<7 z0HNE*L5?`J8OMwdE*fACO44kSV#IN1V!gX_P!d3#%Pw(szd3}iyPjDq8|wnx&6}o{ zvc1z=$$p~BtylHn_zZU#H8ZJF9LJUXHq?Gvi@`!KJ)s~|Q{fsoIrZeid4mH8Kw8;X z{d1~VUFae}_lS*@eFr{hm^RsET-K18ZPnjWlH+2P&|-}&+J(SS6Rhh=+a5Jlo14wsjIvUz+mAxY8o`Hvr?)^UQrmGRO@4IBE zzF!O?_@3_7k~VU#4$9}tJe(iAMY?H;h?U6Lrk|8%PYxi#soYa(t@a!08J8e3R2ww1 zm7Ud&c|?>LNQMXw4lHG94hmnUFun;LpA0`is@5b*?&y*`Sy)0OHA^_(s-_iBw^LXu9nzq&xZDf%D)4j_T|9<@ z;f}A|9Kau{KcK%PU>dOUkV0Xd8Ax%z?Bg_?Uo#+A$jMg%@yir07#W95-gdpBGF2-I z)DzMrEL5nov{A&Ae4#sZeGD9=oiUkXGOIkY#gvmT2Ivl!bt;wClqa)v{FQJ#{H{C% ztCKHWIHB~RyI&rNA)lR(-U3_Fzjc5{KVPqdJGa_ngBsuL?(&5oj^udG-jG_G%oX4x z6V>YmT(7yg8k!x?s)0JbiyqO*Fir5DBqsW?4JhI{&a;W+o^*X=Ae%e@=?ATlvRFoa zBRw%)O&-Jz6%|R7C$J8XU|Z7Wl&Wo&6-dTr?m%4ur2|F2+Xzj8QM0g*-^krkD$I+X zX)F9~eAceND)S;}zCpJY5SfumX)k(Z9D1{kg?87XTLR59)K}OvoFoo1z&~V2Kauu5 zN1@;MvgtZ-P+D_sk#?7Us^FO(rL7YHl`6NMCnp=&vyi@f2FzZF{*yTqWI!@8`q-gG z#dyYv=%%Xl^<|zWNQvoi;7FPq<-g+`WwOEYCY-;U%1*rtfkt6dFx{_*lfwDpkMM!Y zlzTnnByq<@28V1R+i92xr3UpY>>LPnYErvdPY$+(vf~@-mbh|>w9TXv1qr0XO1n#= z$|(79mvtZo9L>mNDW?1;%_axN#-U;~cGG(U%UEkKqC%O@pGgobp={d-g%&5q$7a7S8Ziw+{!t5=`9mSG3wJh7J|6mZQ<2(YsVFT4Fo+08T@%#e5=!tqO~ z5saUtJp07SgrSP&r0L>72KUu9;_ev)J$G?Z3@`42s=%HP@wHT>{Ebv{tfnbx(gHs= zef_x^oJJ+wcl^EV(yPUGWs{ETF$;Zg{GKzw*tI1Jy-A<2gd39GWm~vs1IIqt2`BV! z)yjqOYLBHcbm%hpV!(_=u;NeW;YSF+cf0FAd+c=pwV(5(gy|i(C5{8TM@q|NC>Q%h z-L6*JDrV z(}v&!n1VL;`pXy~&sYK*k8u7gE)m+^eIA<>anZ~Qe&vy)>?v?tv}%JMnl$by_{eBg zO;cpnsH9+|SH+*h*?`2)15UY=e2uHiu!BSot<}Xkgv;$6IYtI!X<};`&JI=(I-Z_t z5`uBBkODZ1kROoFU6~yvgw_*x`aiG+4 zF1+@-812Y7bT2TBzB3WRG0~9b{gLL|so4tK_I{fEB>gK;_FhmRhPpop7+bX*fOnI~ zz2%5Bh&HFtqmO)%N?nuKms*1H&LzNmWv?XJZ@1=hQb7&f5nlaPx8f1D9<^I!A zYcPdQ9$&a_;uc3hJtAtpCK8$97Ac-#EIzz27mm9|HVxZ9?wq{WP0!o*N&7-6 z$8#rg!8It|o72a;_Mhi+IE+O+euP#?AMmal9P)qz50J<~dPS}<;hu@Z7#n%yb{H02 z;8-{uaF1*6c}9p-V!%yr9P7t|-*x!%qd?eN3zLKgZUK_;|OPUqAa006gGCRb9%TW9}xb=^q<$jA6FG-WM zIq@9F4K=ubhfnTL!q#~`u6P`A1wrFV5_|{?Vz)2J?qFU9jVZ3;uI&al0Dvk4@37My z#OMXI!L5TvB4LkvhjrY_7Q9PJm$4Mf6Ov2Btb~L0>eA!edFm%V;p^!=a6Epi!YeOY z7jn6Md}S9G`ulE>=EhZDvZg1|o*;qi4=_pgm0n9I=bQ*T%Z(LKKz=wF9o;nC#F%^}m>PJa^iyV7xXI7nkCuf%RS7Hn7G6S8&y2aGB}eRbG~gu5v5aanmfW zsKuR@-Pe=yR!euEC@&J_pjJ0mHgI*WyAIUdgqh>DqjGI5=y7!ofO#P(T0|>y+bU^- zOHB87@h30d-No&pc8Ml0(jE8rimvZ&UmMTa?V@-EK+q1iy7JCey{0oWBY1^>^S)6B z5I4nQ32N(U+@!menLf;>JMkht^yPK~aUQcY15bWQw5*4zFS%P&n%~{Y~sir#GvoMz*3nV z@R?DChfBgO0}Af^L`QQh4jF9ZDHr=LqaSI>VYuh!MzUwt1OsdF_Ov0DFZ{zmTPps zot;5d2HMN@)*80EJ@H3|8ksg3wj;9uJG_@*I2D;`d2+Yz+{nHj-m0D;*=MYw8J@D& z9-yO*?bG_$*nSZ3tu?p)x!$QF+=YETwZlGb9tedYdiJkAP=`B*4Pyik@AN_UY4iX{ z?C|olzRa6pAbafrIttFzJZ+4@s}HBcRUFBWYyq6LA-YZ*JpdB>OmX0h&eQsJ?*(1; zcT#B48=|-v(rwQu&ak)4f&n?c)6ldbucyVztnV-qW z<@sbOSzMZn^K;33aejGzi6Gm@4Qo}c6q<4Km>)_hE6zb;f?7akLnj`4%-6uz$c?DS zpu0ZM&h$_~KJ80^+2#4!^33ea!c2Ll zP%h_}^ULMp(oBA7HZCp4#X^3zTwa(dF5f2wkR4~{U7bgn~bJL6Y znd0oya=w80|2~-j>F++HIEgKKNx~`|Qse}gNb_U=-;j-7B6z+yI)=_Ew5Cc)(wJas z|8$&(rkXYRE`&yW)_OYnYr1;a&dZQdTD+Ud@(N|?~4vS19&hxgjVnb zj)2AJqcG*uzGRpyFP2M-OS22bh4Sp|OrbEdJUctTu$;^oRTHa`=W^9%9Z-0bx9-1JISjIvb3 zwJbB`<;CUvd@)}v%oPd{uG#!jyf9myFF%OV88DUyrwt21CU7~0oM3YrZJ=Z(7kWq| zpZ29pv79f?B#XtF>DjorFh8Bl&d)%*6c-lfFU%L_mzL+I<7sH$@?yS-Xm5HB_hx`X4~1LY7#^G& zZIne$v~e&J3$sq+6MAprc{t~RVbQ33+Mgz+c)q*<|80357lV|_%Vls0;(l1~(n7ox z&&0(txaj^<05IELg0drd2$bRdd#6zZTDFguE1&kK2vkNfnVC)?AoGRt{Nmyg#0P;- zvb0#9i{s^KSfoNpvJCfYpi_#-2p*Ucgm)SpmM7;YXL`j&KkiEjD2b)>`WedWU0JRD9kPzY`mf!;j&iQ3HM} z$C*s%uAkEcM*`v=(<`6$B~Dyi&X*Ak6%)im<-+1(p@c}WluzjQ7Z;}yKF0BEB96{| zDUd$I=^oO9(<)P>azdPlTuL9uL_Y0Ho%#9l+{{9Lc?t3I+(N0C&m$mODlW#0^UJd^ zJNbCAn9MFc6iG@eZ5{?as@Of)KGm@&UkLIUQIb#l(qnOUxiCAQAgEbf#w}e%IwG?( ziv_s$i%ScO1%!%8xwLfu1~}vv_z*gX2c-wWj^C`2a=s5hU01C|N>=(Z6L#7n*QyH& z1)u;F3UzP4f9Kw6@50MXz=VMRu{h`t-wej1;R)~0n&EuD15LG#3VB*Y1vHP|;o;{n zV(zSUZ};}s)_QQQ+*<|9tlsUz2nK^tkX!;P;!%7wM&2=idbUb-Uds3kJ5u|f_x5jp z{@KBuUhgK?mplD__ufGl;`I(xRai2IhZo(YS;01qQz80p2p@}!*T>pfwA1e?^I*yOU%4na*AC~(=91@w!7jRzoxpQz2%yMvh4W8;%c<B)5=NH%G17_-Dxg_kE|9bZJCs*3KsFkNhvf00Vc>D8v{r%ql;b(M} ztYUWyw1W-N&wF=!pC9&b-#dU$=`uvEAtwywV{wCPE6yZt84QKUpLa9Yq4QGCLGNDg z?!h5$6TQ27yVt*c>o%B-ob@?u;njQh4)5UR+qKUxL(tU6^6}Ww%RQHIt_^(U!@FCQ zS^CrJGDn^kiD&ijHXPFj`?tDly?Zwg`gd2M*WUa5&aM4})gHG!?)G|X_qvy%ywTTw zHa_Ubqxo12dFx{aO6vO?L`iw$c>m_DTl;r!!zjM}*_|$xm^)DCur&nJ=MEOD-YT}p zdfm&=;spGU#X+p5&p<<6ttT2FTBwF)p*07e9jvY1ym<@y+r3pt+MC$Yfuou>^5>u3 z?%)3W*5PNp{@u%1job(>h6x=e6>Hd;xVd)k-tBw0_HQ2E?cTy>dH-`n9j$%_N7`rIE@%T%_2LV0 zZ3q{@#1cZ;T0_|M+F)P^v24tV8Hcy|cmB9ne0}j3E#)<8d-n&8XVWn3FYNZz+L@bh zhpI%~g=-__XLgsVJ11trYW<#u>ba{<-Rpzy@Z0|M2PCB*jV+I!yW{kn?SK7VTXAQP zVoW{%(4!*kYkMvx*8K5 zw$RlAAxQ&ySv1Ud`YSxo$wk|YXEQxi>6vOU@lwT8<8uIkEGw2<;7R{Y6ur(nQZ-Ul zDCL9vOQ<}a&(B*CYKy#t`$?2d2v|A$ksE&l%t+d2H=EAU!45-mld!{>n`g|xZjx4l zg&Pn*fhs;ZL@t5FMAnlm7{A9XH(}8D1=GgP?bY}vyu##IeFU|$op2}%f-00VJ|}pH zSs%R_^pKySt*)O`1NK#Sh|A;?igCh&jk@V@Z7)AKkwcdyAe4w3umlm^(&Ocl;1y%< zIY^`?t~qF+cRCoxY4Z3q@F;&RAh!k(SCVmjeLhau$s>HrykUK+fSF@(^=4Cvl#YlX zhvm>^^zyOpB1de|j@QRIcsk(9+LwGCi}rZFhIc$5%{=T7Ul@g6GJ1&8DOghPSV8=^R5zl<)27?1!|10*Lra_eQ_v9rE#F{pnpoQ z$71KD3e@T<&$7qjm1p~}GA|3#r68w_k*iDiIj4Y1h2cM+Xd)w@Lj-zehOS%Emuv<@ za$~X?KVic7%dHe1>%Ltm(W#K|Z#vOcp`o?E*Yv-{5T-D7!~^-?jtH{TM}Iq7$U6>e z)Zd>ZUb*vS|Lw>jxc~lklo0j#k3>G}2J zo%Bc~Oyq}=Z^aApf{3?uK#x-XSjD%aq>IO|EABtS_wfoRSxwWZd#C&|2MfU4R7NTN zp7W5E7sk~ecl4O7Eq^NKJ_ge6+b7*=w+7``Fz^SjU*mq8{&+kZFLq#sz0$I{K1?!q zPvtH#$y0~COt?E9?ck0Ne=`HpE*~6KC*Aj=QX%o&TjnBvKRT-rS%7WcmFj!AOwlg# ztXR|Vz!5wBE^auL+DdguwTMd|tbJt8Ln1yta96Hi+2!3t6GWe&x@69SipkuJD^M4A zH};SU?bY6sjh9GKjazu0M4BTN9?9G;`Aqd@6F)z>N+V{DrIoeQz1OSdyVsE}S<*^( z9^+!5;0@sn@}qMcTu+#GTo@!d_>vq`zF#>l9|6fmifL#YTGzdsyaDf}32USAbPk|O z(2pjqcv>@6IO#Zb!M1b`Z$|e-T5@jfvXgk+XD<201rkgyY4fqt#q3xdZkrK1#E%Ic4B5Y8E9g2910=y$!pJ&E*Hj$8} zr>ca$YZS-PlExrq%C6nccsfyDqlFH-;fzAy`Pl{nH?&=_FDXtrHVIn zmq!!?Bpc=@eG-0!Z>?C!;g+etoQ1?qVVrHk5AtuekVKf~)>u9l0nH}(LwS7_WGk?omq%KLyF79YIN08a}nvkP`lyB5ZM|p3~n+&n34^5-Ntfb{U zh;#K5r!kZuhdFzT>z!|Gz+)}-;ar`%inXkVa}3ng-NjPpzRy2gR|9xq~{Z}7OC~)B}UN$5eEOb^Vdckhv)Pl8+>IntU zGgDEFMR|gv0vCinY9V9-oY`3@dckg8BEWJ_?yWTr&qX2CI>TZn@S);9jlZ2bSOx`` zU>&ytA&RR{ABf8%M{1d#C$oF%H!#z-m>t~*^01T0aCVoLX3iH{A04maI^Yt^Un7@f z6uIqEGB~0>WeS77uLhD`yyD!H(Um8`2T_7UoeS;G9{2{HN`A;@CkpSYGLxk2AV}O% z9@A?2(fIRDj^xf>cXy#(^z2dUM$#Y8Gu^a*vv~_QL`$x>fX!qOG;nn|_%`gnt=e(9 zxZBI_X^0$z$+&8F5ntxW(5c5}iIlp=D|_lM%g8AWWn3(c*peh}&3%)CxR>Ibqt1&I zgKE!~AHcya)Q)`mnCGL>c)*U{^cSx`(%E*tY_oZuXB*rD`i;FHm>Qy)n7wN+bx&H{m=e*RBOx%F5nQ-Nb$1G49btzV0{u%^@xwMplT%vEZ)A zq+rvy@^ZB?<^>Aly^rDUzWnax-sbb|y=Ra9$XyjXr`J00ylI886$!WwuQp`EBegQ> zY_|1vI3AtoY~!Xk*=ueNgKqbc(#-ox=Qwf|SZ25G+&pLf)c<$B$^i~1ixa0+CXk)5kUI?r{W11R z`|rRMot>4vSV(Fn>R_!Fd>y#~HTVM($%lB)&p&RK?`=Zd%xp#Kp zSFqzzbcl>SRE0&Jwi|nLo?**+e9tXKiMY%~v3m|2VB|;}{(7m}MTE#}oajL6xC6uz zfA}9O*A{-EP{jXzAy+Yy5xQ4rH{Du)sD;ri+kWM$#3hSRwf#%G9o&~*zFiBuG6^A> z-xVtq@IewQxN>3wz%p3bjK6e}A=WT!ySvv`K3#ga@XLT=kK3*AH@wC534T0?nwGY* zfnBi^G4gKbR(;=l7MR3N+Q?eH5pg(>5+HM6iYp{LYd;F!_Opk%v?p2|6w*e(R*EtH zlAeUzvR0+5y#KbYw2_&8;V!szOl@txdYoPO9;Q2db7NH=vI?y$!EiJ_k?S%d#$au7 z<@*|I_%~pVm{bA}_!1GZ7*y21v|Sl>hr@qZbuchQ>4leywghOe@_1-Hae_7v&yJ5x z!f`RjuNvIOOoSR7eXfknZ64G&h=%>Mt!QQ#lRk=^AbXf$IdcKR<*_#^-%FHkEY%?bp$AyLq^>6gk=MsN@>S z1d@E`&q^}CHhKK{&BH~k^dHu)-}z+;-&VNnW6>{vjR>i>0+orVKdCKxZW72zGW`C8 z%fL#uhT!Q<4HtHWZZZlO3OrWaLSd|1j4gJBZ?zV_off|B3kS;JN`eTLo+wdw!t*F@ zE1f~Zch=nmVn&P(uZr;Z~X$r>ax+9Yd5>QPei$40IWw0mgX>+WRN$* z^HievaBm=^Hl37s$>NWRQ@qu60Cp#cc-|Me9Nt4iyk`;a#ENL+fkGe!!<;V$wBWFlp;&!ITU`0{;gT~6%4}Z) zZ90BmnAQca2Z-xNT`&IG*Er&LaAb1>5s}d?MOXp7AD6>(#IteWdd>=LrrghN57 zJ&Uq_sSao_VWIa&3gLFj+YcBF-xiRPYTSK>m~>=+hy3eAs$d<@l_(3OT4n6NoQT3gXMv|xKp7BeShX3d!Nw?hJs=rXW2aZIOLVg`~9REe?>Xe>}ibdcryp`MPwMadL#NhcuE^Yy|aPy9movjXWKjI%(`OtaPY3bXH<=^L}Hi)0l~&ZjLyS!zs+iD=9e& zmWPxL^I1TPY6eiNs8tCXfSI3n-u>}Y$Z%1$=6h(emL0ZW%C7*ae4(u4nHi+1!64SY zfO1paukL&Sb7WzV3ojP-?O^e&Erp^#QMvcd6jRkdrE>m9s^y(`vD&dPKozQQ@1m(< zH-Y~7%S~C_vNY7WrysUyBt|u`BOaH4{m`1V6m);0O$(OE-!A}9)U;@$1x~Wj12h=v z!)z4#7_v9cR4Ketb0){W1Kox^Ylwl1W(`p|Jh&B;Bpj0(y+dx{JaZ@xvI$)s_$?dD z4aM1m$sLMIf*4Ve5m+#o!hr>o2D0F1{0HyiDQ!jV(oCD)Ahv%9!+%qc4)9 zujpGpiRI@vU7WP&aRWDiWYB&p&r3Kkt0`;C^)-tn?`#Eidg{uYO#7h%bC_z@;6*!&^AjQUg`|xw&We_eQWNF)PN%2T z5t|5;tD0)YPDx%JNhc)*qKR#4n2py*qIp{KHqyCdO@2~D)}J(<9IST>Ha9D&HokOH zkcli)$x|peooSM@K$A9EwPl`=M<5ZFTBRfdnhdq-AL9^dD|MhHZp1xHH)P@|b0DP% zPKV@qU*{%(7Al1b5#;DS>lxSNB7l(kyb~u7hVkB5h6xEefFrws)DEe0ue%sEmL7QwszY=oTs z*yam(xEbL=xWWs|K$0b_&>m42^;bV$d-!ws3T5>jb&n<4CF8DAg#TY_j(u7wu1vM304o}8s6Y0$Zz{a!CeQ=psweDF}z zB~!)~S}5d=vsG{fOS4e*#eEacZ|6TBxP8?U8$|j@v!(o4jBh4#64~V~=Fm^B@6n!6 zCD5DMnkpM+)7Afc0KW(G79gv@KD?LjtCM~gxdxy~GU+R$9BI0Q1`)G`xZfP3E9o^!r^A zPr-u9x?*aKOjfep{#f#|q1~dajk?Y&9}Qj~y_7gIA@tpo?z_b`EJ$t&c&fWpr#2E^ z41IdWYXt3;Q?1O)gf`>8B*#bH=OBnWJ4I6crU5Y!O!+g=V8VVU7xN zd3X2EMY+5PyRcymZ;;HL)oh0Y8Vr-~W!pC3S3C_H>4rPmy=&*!ocBbH=a6bWYae;f z5K+aRXN#zdNQzvnC6Xei`QP~Zf_!}u9(8>GPr;w((&khHhKDwD=|D0Vo7HS2^3QK8 zydw!vVJ>A-zAY_qb1Vz4{gMw_)&s5^zY;BThNIO{gRqjQ?t;#ftTFk5TU(!^#fGB^ z3l4v^HYG9U5p>uHI8Se(r^3?4?Ing!KPWD6h^|_$uCdH?)KKDlYamClEsZNI0#1r#66q3U&XlI|RPVI{GD5yGcG*wDS<%v1TSm{RLHq z+)n_-dySfR={a@p((@+myC@F)j#GfJGac1tMP?=_f`x_k{+I0vX0!K~aEWIEt=bMA zn{qnb+S-rtubauQTgfjNr0EO@*tx~vTW%a^5mSv4*~1SoGtQF9eps!+>vpq6GnfOr zGmx7sD2Z^4_zCcZDU2}HF7WO@`1#70KR@{L;m`N+|1ZBpFg|zA5P_3#@`P!sX$0li zoAOh^#+zn~&(9w?sXpByGN#EbQwWq{m;8vpcX6eT07-EOoYyr@q#tEy7Gb-yx_qy@ z{MSdz|8sfe#*d~fg%)ZE(f;&b=WQ!VOTTyQ?cC7l^$HQM4C$|9fekluoa_P)>fAT86L3TD@+_Ne1)nx`DN8^?DmNqs zu;~oN!VNHb91ZVr3u132A|+k(W4Z|;>AEm9VtTa+PNIjO6h(E{jF!@WgV<<)S}&If zs7y8U1NOuOv0~C7r}V(7fTmanpowR{Sh;_4c`nBotosiyaXTQJv z0LMQq{4P$h8(^Eqv+SBS*4N6lJvDGkmZvn|Qfpe&WF7X5jTvyp2EHO??6}VxmcjZE zK)Abrk(1Dn@=dr9>T_E{eI8V+UsTJ>^-v!X4ugt!9+^w6M5mrI5XVEQgMPzAkOTv# zGQNnOYS)}d8xQx)#;>8OFP-+megs^{Vg%-XGh@vJnho*;yf|p~ZFIVY`{ZAYd$R9u_L^uy531!`P&cR~;VbN&4qPDk%5Sg^`Sq4{ z+Hk?v!EwJkuAL+|U8#K-CQQnCxCfIhoP_P;8lEWggQpUN6hPn%kbD~GVG>cT^G7`3oR55}h7{j@_&|@fC?j*dAtR5mN zBvvlKxzmx0+y@76Y>3I>O8c4jy~Rb(jinHsS43CTwq5Yq<*@s8r6_*zGLCFHmcMW4lL&2%P$+ECvODlU=_kiGuu;7OL0HsGYd zg+U8A6pn3}dOcpy=QSff^@T=T1)7c!T`Zo1*nqhdAV=$Sz$FX%JUkLZ=PI2WxS8Bi z=q2MD_MP`DlfV};<1>+K;5&NGTbr9e1Jd2BFwvSyHhtHy>K%2NvnEKbNqLd#HY`s2 z#Wks0TL6-{FIg@2+sovbs1J*{3Bwk=*ZVCjQ}vG1LQOqq@+)*bb9EZ_$5`Gyd$p}q z!1KbsUz*&}?yy2RG+2;$16M`s4a{CacSFgT$X!Yt2`ab<-_pbuU9gqnc&h`>$pu}f zOmRW4DUsNfXeCbwDGhIKn9HbgKy5yunTnB5V$?>Y3`9?hf%pqY-HDwrb1E9m$Bec} z%*g~0mT3J}kK-C03-tvrE{I6+c>NQZWNDNoH5o9z9hPwg!edWF%#x9WXH?2 zFn=)n#fO@0?{zP<=f5X22p3N}VgeMFdh{zZEYl(1ULX#uJH=&H=9h*^M0fXq2eaWU zQiw{hu;B%qyPP`0Xn{#idDr2Z1)Bu~7-&gnF`dfyP?q4waMgHyZC%$gLeElucTRWE})6AA7Lx_6kUIfaxP1^+f7w9spLzUl*K zv$F@^>U6D%(ULJ-0KKkW5E%EFxr0~hw$MfGsFH8JCJOnc&;o>z`gt12ubK4fxF(*{ zsWRJ9h{Y4Sy6lNTZ}TvweQ%=|e?Pdmjzt$1X0616Fi|7!1kD5_WkTSJId=QY&(CSJ-V2i9ufX z&8u8u%9wNgVODTnhN-!E(V?I?64{DPwbW>&Sa)X|drdqNV=ra>Rs<5<79?g^n4x?m zRKb?{vDUMeiaJJMRITbOmnJTm-*gtUz8dB(?JaJBc4ACD@w+-@1QrY}#z+H#Cfj%ikts#N}|@2`3U2PVXJReI?=1;Yx{y)S%|`IG?sVUxEJ);@0f|Q&wJ+L z-KpH4wD42^J*Fw>3t=n)Kb!^I3n^|1?y!}5D053$bm_LQ=JPGpP}$PB0zN-7(_LF1 z4)MC5gEj-VAnD0;boyfW4KKs~fti||!9`9GKUa=_qBdfS#GO}LqH~#LRHgcm-)Q5u zmOdi8I|vrtm)J`k;`o?a&bNoZHQ|!0^%)|*yE^iCw@NZ7b6E*a;Bx&mx)%c*l1_U9o8*}&MlfHl(Z6Xmi#R#L> ztV5-qEmVp;yFt84`Ov3>F{-3WBzG`Ft$??T)0Q6$CQk;F|BxFda4k_iI?^?VAvnrh zU$^}Jp#y?d!ij@V_4ph$tR(>LN1LssLZP6|$sFZb#}d*BE``|{l4xqiz-{Kav~^J_ zNN0fLOt5sAY?q&+U8Aq`->7pZRiyjWYt2tJ_@UC zrt+^zM#OQT*W1*LceGo-+36L*|4=K)C8dD{ifWmmICoT>>h({i=e!x63IVMq)6BL-g1P#h8v zWqo|jWPv%9K{Uu~DJZi8pIKg3XH`2FjldM$H+oD|X4``u617Q7OF9$13Tlj_}PjUFHnUB%KFtXjV2?A|F zn2Po5@#$5KQDM>_8n$X=^UmYd4_P@TvtYpCf6 zkr8|h%MQEnll|k5NQjcYhO!a84&&x*288jKZ=ItF1%HXiU;*JQa`l(REZd z9?%HP=vbU8zkbiBRaX$1k{#s@^)x!}DC}zF_^D+GYFazzKR6c#X>4^ZaJ<0;L8W;lt7hxBXMXd+@=vIKG3ZV5U>X3Pm38>;h^w46(oI%p7R z+*$+#au#Jgl`285h}W30^Muh2EU=2cWGSiEyj*WR~`ztlOm@RZ0WK;t(7 zH!Wu2!tT%%iaAFVd7x5s*4&eHBxJl5Nl-UlY%LbYTT`XghZKBEY47P+0t0YVm%#*V zC$wra=62^GXY(;M_o<|m3a~J$k91?3=PN>cGtl=x4roVysS`dTkENPpJ5-qi&PH}P z7ivS7AyTEbQsB55R)#PMDQR&W$#n5YkXT5m+FJV~XViIQic@+nRMfzh_@c&97qHY` zVgC6(_vz2%I_FOgj^XOByX{X-kL5)9B$^zVer_Djee4le(;Q5(j}VcAT?~MHsqUR- ztkxupDtV%pSa+~zQhN+UJ3YVlE~G1}y$Z=z>{ZK+)FN6E$d#;JzgVaAjyZ8^eDJOf zSuV}&2=st3i~H5hT(Cu3Gj@f`qw#CpwKAM;ygTTh(%4z-JmY0LK*<}}+*Nm4;YcPP zOy7>84V#ICV|Vj;T&ce20cxK3W-3}-bBer{<7i4NoqpIl)o7UP0F8!7X3Gto+HRwC zHAL~1>QBggd(wR`xo)MGZ2QOOGheFS9u08TdxSBa4E~B;5}ahKj_}VhzE6)v0F!5} z@%(H$I^k8=-Q(l;O&da*Kq$g)s>;NdPxzwIypbH;PbCBu?D^d{P>3G;ZF6icWixF8 z!}4iG(6qIg*{HLcoCnNoTc_OQl>p{EZPG1)J2BwQ0O5?CT9{)186U>eq6r_YXFma8 zz4<^XxgKQJLN3 z8ay$IJ|?@*p$|>B)!!XpNdjdocK+pGs3OQ1=*bB$e*QVUXk$T$7aY59IMio?cAS&C zh;;#7bg9{sc5x0M9SH?FSe73+kfVjP(N|zt%nq@$QGNop>%Ux08D=1_P$hxN@9pzw zeHt7nj*!YZu3^(XXzjYM8C4+iL4D62&zH}Btw|ZwT%<&*^WfdI5AikKoqk0 zAJbYf7g}P3LH&ey|Ix&InG!)APkpA(8tSb-xi|1&Dml%Qa2rldNcXLz5j639dLqU5 z>FD*~AX0ae9$felPh?l8BTdVWi@Ko9hQ_HJV-IWkKHl%CaiR?%RBNL_;Np9qyZusd z5loL?0T-e1bKxRXE8qftY-r(OkIQZ*`WUk)Jq!`Jpne^+@c^ytXEg&Pj`9lAOag4W zSgNsunEe|zBwcSG(6Jyp9JGhK>c(BWsW{-?tJ( z2$v%E;5NOY1{$`-S;L8&sC0q}mI+u6-=ZlZR@&f=sp}(L-)_h;+GmktX^E3KN~fCU z+_-SuKjda$jQ$!vkn9hq9-=$kifack7v>3VmO?madfV-rnB`-ZDmV|^$?4;kQ`2K) z?X5xHd{SD*8D&S}B#Pd~7t0So4h}`~R9i2Vmp8QvZWO*Xw-zcX-ejY$OlYA{2wBYm z5JX25j9zOLGbH(HQ%hB9$#D#xKqgL zL-C+#Y2S#!W>0hA3lgvKfq`oTTb%c5vbh*rL#PNwjCpS#ZQs}hLfWZLG z$60F4DkYWN{B2NZit~{V0?Z$YdD*ClHQ+EBPcPa+=%&!Z_mSRMZvkSpkQ5+bi#-Wt zh2^*g7iFyk4Q-DWYg#RsN`cHAjkFFRa$p@`tLpNxGkXLvUJ4@!IBgpNBpXJ69m19o zgqF@VJ7EO+?Natt#7?s9632focd`#|K4iApcCJ36cH!YhJt_|QSs+TJ}MhO;z zLu}aBK$o6aeCI3{wW&oFCAsecR?-g|ZdfysOa`S8w6zs=Iis>OAyruPI zgqvxcvt3xc4nI=qCpCmX*m}YrlMQ z|KaJ;=_jAa*%l;H?6;;rPXk~esQP0$4qu>Xr@CE;2Nb-T!wWl?*&PsB>kUkx&E*rC z%|~OQ7`2Us(%qqQv38y+*NLg_i%&jkx-?)VOx1i6POPcw#ml{of5qx<2NC?kr`vdF zCj!F54Lr0fLH)yTS<>$O3=dh-E>`vrpY!1zMTb7z+J3d?Am|`cv-ocBkpSaw>`AKX ztNW#zPuU%lx))j%prI3#UP(11i!Z#B5io?d_|5@(-?dw#^BHOD;d>ZPUYu@Cd0V|| zn;13E;;WNgP{qjn(nHvRalxnCC}tX1eYCNR2?F({_`HYc+{vjt94;eNYo@qghGkVDBL_vl` z>x9l8gVze26`&O(bs@1Qqv!GVajjCm1sBx|wtEANGll0KPE>K<_3Qv!C=PC@p9X2s z-qHJl6nzVUE_ZzWdJdC$%$!}X2Ad@mjGL>!n_R74L!}*FuW-GJMoBUPZ*;g`{ceJJ z^L;~6bbG#d>}M2me@l(0e(!}DbJ&o@M=_T=2Tl8S_y7^MjW)E9+V805@Tf%^RfG$> z1!_d88ignWX_6bS50-S6;zL3T%W~oz$<4_sG(qI7^P}1KP zh+=R!I9Loib(j{#JEzzbE?+2$XQ6Fn#8956_LV%-zYMmRu}Kc`?-?|aDi>Mv-ilv- z5I5P5sJLVsa@5L9m5{(6^OIa|3^wp!HZ+?eOGSZpTnlGFxwCwnU}bg+;IjZAT8#XM@qB6p`-2Hu(t@q`xy5snvSFuM>2ok+F6S z#w!4lr2R$+_cDRBu4=)~1S1_%f^s*Uzv)cTJBuK}PDc^=N3Et=xsdFPmxL@n&B&iq4aa(LPnT=wj zNr}A8=F#v?7*R2XDFKK+o!X+70QBv=%U&7189<_R@L2-IT++d{A8o~?jYAph^;O>= zOh!XdV%_dworweaek2p8%ouYq$CznCg6)Wc@|l$?$=s(kzTM7i5C=8hotJ4T-{zC_ z2oK2c8&vOf8lq$YDQdEjY~&-EHTI|f1Y`H~-83cYaZ4$+ReMieG-6oGNsq7tip3~5 zLz*nvh2cmpU3!766=LG;jr*s^*u`3eLmYa(_xUBuR630@g?nev^NY0Wd{)a3oS~4k zJ(vVoJ^I`+J;-G%!uDj4PcmN!n*3*1 zGQY4`BVqUsOg+Znk?9G6JgLOfwoa&vF043|E;gp%$qJp?D-0q*IVhdEhKhvk7THMN zD7EA+u-GA=`Ms=-IfjE{jrbq*paedh%5t~x+Q-2VSO;U6Q^pBetLIcO{S$h`ojO5`yk%+4X1 ze`g~4+c^>40(t}1er?E~&k6YjDEi_ERxxvVQN2*T;YD!?1?CHS!z%ta3hSM@)X%ru zWvhO&X;NNM|GR`Pgq#svUE8#p*~(OB=SSNaDdQA+QHz#ha}(GSAHE1LV@k8K^mP@>KHso;GXp6P;WF{P7wagvYeJf@1x0Py? zX=`&Df{)Ueo*YVXiO#xa4tAt7V}k*mkBqk{IePqqTtnw8sl(eZgE0QS5aZ9Z>!4NB zGD*TZqc(T44(idJsrlJfHT0-gnY1RT;E>_KKPc6x&enR3q=e-jwysFtZ?DSTJbo^!b7M*uh(GRe(I2tVXP5g5SX zBS?TKq%5L@Na+snE*wzEwNgTu1|mNV3oFt7j&HL*`4~=H0z!9iGITkE&!WDFEH_K| z&Iw-Z7_Qy(Meczu>@R(==R)5C5~=-{FI@OGdo6Ay#yzyKe*{(-NMN96ZM}H4z4vJAF{UIr1tQO%Y{-jcdy_AS zHoBMH@x)z)(ICbr$fqc3C z0UB_;15cDgjNT&?H=IS?*$9=E*Vku~R+zV6>Uc89AdJo;;w;9F=Zn5vh$FgZKuJ!= zi6pTrbZnp)y;7OuzBUTJ6vCuKmNdcA94#qV2YShPn)D(GiCi8h z%}ONsqf#_;9L81Aol1NffaEW>NV5|MPLb+ieI2>BC)-G<;Jd*fB?A-t$X63KV4W-n zB2Q;3?aoS<3dd4sf&7c4@U2uAaI3eVP5UP~fYy%YRB}{`Yi&>zxxR`wqB;l_0v*fW zUIPhJk{&P4h3jkFZiBT#XUql|?>puK$3~|Tm0GXdD;6rsAwkEwH&dafN1j?Bcrli3 zccvT)ExNBa&ksthBFqI#Al}R9UoNSzhR)UfCF4O3a|Sdzk|gsrC?oy9oOO>cYZ?+w zZ7w_@Ys;k)f(A?!XX3)Hhyv|<4+2D?8VK);{>e(x%@`ckdfzi`nEHE16g4G8k{%pKt zJm1^ecm=3-I^FT>H=QJKb#l}{KK>yZgNYcR{BZF4Y~1(nV*iL0im-w{T}^JmU^4@m z)Ogn^Q@t&uy+r1Ns}tcQYw2xrVR)uS#hW(~A3LlhS~xlwhofacrz|=eavGM0 z5DfWj&efYkfh~-Sop^!6{XU4Lyz*82Y*CjGd83#WSak_q>}-9v@$@NEJ#M^u^mu#o zhmCq()0uF&0wJ`yY1#^MuE^j%E-sx=at$!KRHe}SHJ}c=1fDIgH3o2b*+CvcR*dy^ z-x76&CzUfd#GBIjJI(A|NHVQ$sLo$DVTe@aD}M0ccsf?SFYI`B~k%7@&n| zr~_(w#O8!Ef$Phg$r0 z%&fFBO_T8Cnm3OQ!$qly{E_c$P#A4pf(wrQV%XLsR<{|gMxlB2W_O=#zS?-a{Q~l7 zYvbjkSC8;jRw(EywfpJ}&e|f_Y?$ei*!Oo@{aiO*zc!4=%slNLP1Q7 z_f>_biJY0`>M7e^^=)5og8Z(xBL6|+O5)*XkADB+6&(Xxn=hWbXPYqBvuCe1o^Cwa z+Hg*&GvN` z-VS=xBcuK7)lr|<2bJGV#DB--Bj*@E{cmhjO!~U7Ksy8QCDvY2r} z_-mC0^Gpp8;$zXuDZurWEe!#aao216dTmT_3ExE z#-=o6%#1OACrE8Vj-oum&eP538?Cs}8gn4W3eJZeE1WlbQS{ibfS)@h{N#I#(8#wy zUyt5&2geL!Z1N6~PLhaDQe|yU)0ql{TcD8I(o8ATxFpA`V%iw1Eq2&db@Rc$P`OHRP5Bij`dy#La4k0K&S7l#Z=PlJmbG+qriH96+E{!IhbOSr|?1W2IKJPW=9b>O- zMVa-Bl>@Eje%}~SQiWbVic51&iYU-?X~ujtO7b_SC-UbDgLj2v@jq-V|8QgQ_T@bE zobxe=;h{v2WiotWFgzT2?uYT&`(`{kc?pda@mz~y!&PD@2Zkmk_}F2s4;%VQg4t#J zT-)6pKiu6Nu3USlq|)%45?-2Wp%h!(*mVFV$OwC_F?Sg~+(f2?>=CXvoQJ!B$Am42 zM>XFvL?%mb4Uc4nYPnneTp{r4v@#NNs%pDv${TamBO*~wy2BpL>M}^2s4F#5<&BC) zb)*Ty3%&m2U_3ZQyx#;Fq(L=1*ll@G?Q~8Dr+pDx9UvNMHnL~YYQWfNk`^j^Kp1K* zL&4;yUEl$mMkp^~a{umhxH%6iYqHlLj{yuckOz7u#Z4+@gbaTW%rQx_!oF*=Z3bm| z9#Q8ENWxoFXp`_klZdo1H81CQbu+Fd=nyL~02=7rKon3M-F}q&B=UNM}akrow zav@Gf`*sHva2&+Kda~!!{$%f5C+y}qL|@n z@Oa$U=s7PS;Npxgu13tzxcneQ0EJQ1glgVk+gQLJGIK^4kJ%%3&nc#&87)gs>nDeD zMt9qR*rb~_`D{JZCa*j%7|VA?uk*H?PxqxUsUb3BQ0ILyR~ke05D&qq6GfUiRdNGQ zFdVTx6h6#PA%x928Kq&+kt*GgM&m*MO+RfR5Rfv{%Pwpu#$qRpEI;7Uv@=8>H`X3d zBVkPA=8M>l(Z0ojE6BjQLE_SGusEQ?OWqB~SdGERU7e?KMT@i)`4EaebX*@h1VtAw zV(dkN+zH*Nn*u53xNQW`fMc#If%1A4VE{lK>sgNs9L!6D?H%p<$C#iUx%ndA@Q%0Q zaN(irKgUq6@`rLTf#DuEOg6V2p)QCJhQ#{VuI9QC@xY{e*_|HM2?y*5U-zcIjwvHR zIvq^m=IMMrdKV*iQVGHI$5b;tJQ28|0hyaOxG%91Q>wy+nG*dqPp#wOqBzFAOFZ-i ziw>G!f9O;`Syzk>cr678;ti^!TXu*GCvjOTf?06~B*KP{k;{m`U?Z*oITa#l`|C|Z zq1ppAK~UH{qoK!2Q(Re%7(XSLiPb=Yv zD@aEpM^}2){(Fx6N-`<{@E(D6qqi~EBFZY@FR33*FtOsVgb(V@WC{F$ov9D99&u9m zDUAoG>nUtF4J58uVl+-gsV!or3COvT`+zu&K>(4Q4SOq%4g29Oh{kNH8MW}8NI4Gy zYH`~lCL&42wW2#oq*RVTp~1K(^0J>TuyNGf232?i2-n_+xv8l&L?>HLg@}clYW_lz ztFz=9+ui<=q>Y(y9&2vqZyD{bc%stDEb5(CKHo5Wa=c25v2pk=8(&IE#^U zcmWM1BL(VowD<(AJ2ObhD&EPdhDSo8YGdUXX)K8KZ*LDZJ0T&<&eJ^_kGt( z$C$|xbHGG>gRPP-y!SKP%giPwwFuN1Robm`OsEG`B22ZWFGTAQG~R7cp7@A27CU4T z8mW7y@I$z@xJ*-JO{Lt2B}0LgaE1#Q3KS6MdZ07TrqX%1+DJ@_e~^AjF8nxbMeZwV zb1{Q1KN!TW=Sc9SNxm*Y#(Bvk6T3G#8XV^GsU)*3L0Klrju{S;JwtF>_QWC=^QSmG zb=t*IZdgc%8kn`~-b-F>&Vzq5LB)igJ5bm_BOYw}Pnk?8SFd2DWz==m*qF4|+%@-2O= zI%ib+^Dk~|`%WK@-mQLd8=aWjz$stB)1@@zpL44YIXT4V>ds`E!lnTvRz8ym@kS7Y zb>y|XE^cZ>7sL%;uO3P%3C5$s!+dxd6DBI1_FdCyu*^w}qv=fB_A^$K$XP!01=3C{ zh>yU+6(cV4{AkSXy@==_N0~INk}Vk`TiFBHAm~}*Vt++>R zyrKRHN0c_v?xz_gA4kQonfr%u3gC`itRT!~D!mZSACcQJ2qL5j?mz7hU+V^o${Q6R z%RE;sl%s7eRm(1CAqkv(vJln2UvQj9uMv0}dX3n`MoXz?Ag^d}=YqY7%rEIK_fmrz zPGFG26K@t9o3gs0#|5s%r?UMR&vsf9q#Yo}68r!DKTg>bjt))uG^r?oO7Y3*gG8kF+U@l1^LJYnT$>q&jlh zD)b|*guzB60u-^IT_!Dl`RK{stIcn}+m71(rFwfLdpl-Ex$#Cta;cZfmzIM0U}Lx_ zou6)TR_pCg(ixCM|I{EfKxiD#COECfOC5{|GEXkt5ZBT9M>$#Oq7r0FH06c~ zFnW+O0Xq@v#FQN>g|k&i?w~gXYMn&kqgb#wbbBkd!j7sG5|M605FKOUUO?Xw%E=* z-u8<xYxwfPFF}+y{ez>Cr_Bhn5~!P%-93CeM&`Xmh@B^Jvx9MdX*1HxItNyRzoq8E|4{b+)mAAMH0d-~2?J_aHd>KC7!z|7tZFGdz@e`LHjc z9mS4G>FT2zTw<#dv)MdKpRLM)5PYx#z+X@P;@;FodfGks2_b*gRgB_bdILqTrX%)^ zS6BIRrP`33|J7j1!4KeT?j9dk-Rg97{GR#3+VODi?gVfkVd;ze4>6mcd~)N{Pq1IH zjo3I1O2A)aHUuz-GC|KqL&ORp@IuG6g2F7nc(7Fc9_Ic4p#ZO654yuqb^kwB_U-#u z*ahgV?Drp7>2EMHiQ|Ayia?0d_mUQ~!gfuCZ77@#>toU1`#DE+wNXd_9ZwByp zvfk6p#~aVLHrTNQPE3z*;`S|^^T^E(8NYwVgqOH)>IkI)zn(orN4-Abz46H>LnN@7 zUj zz=M?7EbSM~Vi$03O40K)AH%Q*JiPWUJ-&gIn%yl-=8JYKt-F=8I3^$2X@k%@ z?{vVL<8J3i?9l*v*bGprb+O@Zn;FiI^D1gR2Z0ZB{1}cJ!rR&%R*zPyt%IYt{a$|z zz8dM%i9Px1HB|Ux95^}oC*d!886Dp}g@|A#cgJ*_!~a0c-=zBPHL}lihqy70QUSll z$iOH|!w_p1&@dQQ6pV^6C_VYEE|4s1Vk>9exZ!vOniB=N!VVG5n1CZ3iLUy?(b?-G?F;>g zV(R!&N`nvYJ3iE*Wx7#`8wv6+DoXj)h8c1A(QDyv-K~a3=ZRnw>kxgN9->n7)^s-A z-o0OMPg)D=A4jQOD~aT)q4gOTi4?>D8^*<}TtGP9I;U|;*ZktYAHA*yy=r;5|L<<+ ziKt-LW}0ecg#RH=;v5j57ny9TiRq`KoGa>{frR5As=mb~p;jwTCna$*DQPiLY5ki5 zN<2WG*e^u{{})keVxjwryD74j?v;-qflci>8xH<*20g5Y`1t|u(V)cj+D|TTw+1Ir z+MoTO|4o5?e{%BG+x|XO8phtN^hE7*()Ig6Z%(<&SnwK{xsG%;z^;`LMO`9kl*8Ep z&ML!&r{2BKb0JFl#~~6Vef7m80gkKk069aM5Xb$#U#;c5F+IXzNeRT*-5es2f6#k0 zetpK{0UPfQ`jUEcQLG*S3yCL?oSaRj)jkZNA<>E~gJb-fzC}1Rj1jJQw{FIMHwYL{ z`KE)gF|Uxk?hhF$(FbS--i>Lt`}R{BOza(0vTKo^KRg0`)GX; z$1aX=oV0fb5}M40fzmZ0_ejBew+eMxiN(+4Z{kc2O2#&tQx{MACy+I~plc5s)<5l? z@tj?QjyUND_0!9u-DlE*|GmB*+gMA?R9ad3&sfoXHQKL!PlI(BnS9n1;P{?k_%^XB z!&L;MGV9BPTFfJVORa2S|2-m9AWVu#3_%&)V;N4g9xtekuGdQ#N9m)l+2o?Oj0!<` zIbF`%R@P~lHI*;E<*2gbdu`)V?X3TTi~RS~!7;5=^JW+o($#N9Q)hx1mjkI)_ke0Y zo#R;IUv9lxzJ<_W#9o+LwaI|p(_{E3Ce??-(FmIw>Rf?OhIxCdL!6M8@WCnOb*Fk`^SAEjQ(edZ*_~2i^)I?asL}}M&-36!YD6} zy|~ev{`Y#l7V+`T0NyX>FQ_wl-1S1}D^`>%_~Ur$i4HO6h?^o)34DVmr|T6iE3V9e z4ZjzT4Lt$G+jzgeu61mYb;h26ZS7-;FM?Zb9wM%GN_yamr0zNyh$t*$xFgXC?k=EG z=*S4-7ss?94KmE<~4QqMQQiRE1Dw&9CZoa8!Cu;ps7n9+a|BXO0tI^V?9$<)y!SoK>*nxZy~qq$+}4#Z|6f}A_FTPP-5x~sR8eV z$KAnJweBKu4`PB7`v`m9u2ak-DI6l3k`-sXmm^u7Pdb=$bLL4U^o7k zXfvLGaG)*2i`&xO6s3yH55SfP-(YxVC+_)#pJ>ed$?jkQkoP4;xaj|QFgfTR<0e=p zEtf|uG}@;XIn z#vdN^;ga8VtezVstTwxw~vNzI_{%24ld|S?1-ammtLh&izqH|>ke5p4(gY&sEESXh(A21n}}C0*>nv1 zrT$7JcMu`5-uIj8cAiZqFgcc7us4Y0N=&&DOQh$J&0v^%>U2-9uEh| zED>2ErX+37>vQ>gTOw{<@z%kqYI%F+c5wKZ!z25fu^f!$*!S18;qomuoTD8V{$vg! z{Mq{M5$LaFx8*sgu6i-WHYP|f+JiZd!jJyEM*rJ>3wN6@L1X;K-EVn4pwj4)r+}?7 z|ChAY;#(2~e(U(pZb-T^bbwx<}&*{k?pc!+W6L9`(m+s2?Lh$Jyiu2z3$vjQL~!tqUz-_a9`o!5e|yVn~9(Z7`-95U0JDM2X)n{#hUCA1-tNS ze9FyK_6HF7syG}M6y-Fu`2wSy>kIxYAP3n58T<5cYoai{+m&9J{4_WfgR0L1YS-RyO? z!i-(KLR5sm^|>%S4;`bS`92>T3amDGlQc9TgkZFVRd94>owYz=5mAb-jthXn%^wC_ zHaC%}9kpE;L2+cd{MfSf_wrc%qv#)uz_QP$)zNgyyut`}Tp9MKH;^O(H~ik{54|A8 zjx~Z~m-oR2i2pk1GZjHp|Ivh&*`1YJE1zAjBrs?1>qn3Ou#HQ_Hug5Z#bpm0dyigy zyJg!&5|@Zzx_%F0!2|JV_`Y(nuDoiQ;$^6fR{M_-*&SE*}V}8e>1)++`jQ!U}rs72XZvIwE?s>x6F*Cn}4vpg?$yq+c9p zX>ZTJT^Nwvqx~d1nPJ>Dm~0aQ;ldZ=Eer`wJ3(jQfl~*yY&z8MTr4_Uz@_Mj8I;Aj zaQ_fd796R%y<8F+bf_}$Hdj+wpC9(>oTP%fq+0;0m6^z<(LJgyfkFn?t_6M7J#~Mb z6ScZoE)!z^U5)ff)Gt%8zHM`U13HjReLR$Er! zr$dF1$M5h#V17o9JhcXrlrnZU!U#2a1D>Z7JnfJzcBmK4YF)|{Th}+utt+drqXO&^ zD?u))lt@Uuxm{0L4ek2(Db&Q2={K-ZOE^)Lf$+wHudYaC!@HKd}!;*O0-BuMZYliy*-HRT6v7h4Y&j1qR_RfgJj zehMtQ6HIdV+`1Kzv2%TN2K^8Hb$d)KWMKf+;SAW3&zlP3)yC@_w0<*zd#`|@c zFcJ_P`oNAOQVk0{F%mVTM<5IEQ-)Mqf=rCtZ?=yvfMAb+xT6Fp+Uz=gza~bq@VhvS zDjN5f2FXGSp+3%Ko!|MgS;z9ZNJQdB>4*{pm-xp@=MB3W$#W-{^4Zdvgx^9!qh$95 zPK_e5KoA#uXLA zaz=IF3ot!skE-FvLu8Q(W5;t J6j65u7keNYfR#GE96hdGkrM!FN=Tf9<&FxPbx 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›W1= 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 Y)Bpav$zT1)|L_-o@fTlz_28@j4>4mDDgXcg diff --git a/box.json b/box.json deleted file mode 100644 index ef090be..0000000 --- a/box.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "chmod": "0755", - "files": [ - "LICENSE" - ], - "finder": [ - { - "name": "*.php", - "exclude": ["tests"], - "in": "vendor" - } - ], - "main": "index.php", - "output": "bin/xmr.phar", - "stub": true -} \ No newline at end of file diff --git a/build.sh b/build.sh deleted file mode 100755 index 72ff0bc..0000000 --- a/build.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -docker run --rm --name xmr-build \ - -v "$PWD":/usr/src/myapp \ - -w /usr/src/myapp composer \ - /bin/bash -c "echo 'phar.readonly = Off' > /usr/local/etc/php/php.ini; curl -LSs https://github.com/box-project/box/releases/download/4.2.0/box.phar -o box.phar; php box.phar compile; rm box.phar" diff --git a/composer.json b/composer.json deleted file mode 100644 index 347b9b9..0000000 --- a/composer.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "xibosignage/xibo-xmr", - "description": "Xibo Message Relay", - "keywords": [ - "xibo", - "digital signage", - "spring signage" - ], - "homepage": "https://xibosignage.com", - "license": "AGPL-3.0-or-later", - "authors": [ - { - "name": "Xibo Signage Ltd", - "homepage": "https://xibosignage.com" - }, - { - "name": "Xibo Contributors", - "homepage": "https://github.com/xibosignage/xibo/tree/master/contributors" - } - ], - "bin": ["bin/xmr.phar"], - "config": { - "platform": { - "php": "8.1", - "ext-zmq": "1" - } - }, - "require": { - "php": ">=8.1", - "monolog/monolog": "^1.17", - "react/zmq": "^0.4.0" - } -} diff --git a/composer.lock b/composer.lock deleted file mode 100644 index c3fe608..0000000 --- a/composer.lock +++ /dev/null @@ -1,312 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "be10c4aceb6ae6e6de027b6f5dfc5028", - "packages": [ - { - "name": "evenement/evenement", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/igorw/evenement.git", - "reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/igorw/evenement/zipball/531bfb9d15f8aa57454f5f0285b18bec903b8fb7", - "reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7", - "shasum": "" - }, - "require": { - "php": ">=7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "autoload": { - "psr-0": { - "Evenement": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - } - ], - "description": "Événement is a very simple event dispatching library for PHP", - "keywords": [ - "event-dispatcher", - "event-emitter" - ], - "time": "2017-07-23T21:35:13+00:00" - }, - { - "name": "monolog/monolog", - "version": "1.27.0", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "52ebd235c1f7e0d5e1b16464b695a28335f8e44a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/52ebd235c1f7e0d5e1b16464b695a28335f8e44a", - "reference": "52ebd235c1f7e0d5e1b16464b695a28335f8e44a", - "shasum": "" - }, - "require": { - "php": ">=5.3.0", - "psr/log": "~1.0" - }, - "provide": { - "psr/log-implementation": "1.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "graylog2/gelf-php": "~1.0", - "php-amqplib/php-amqplib": "~2.4", - "php-console/php-console": "^3.1.3", - "phpstan/phpstan": "^0.12.59", - "phpunit/phpunit": "~4.5", - "ruflin/elastica": ">=0.90 <3.0", - "sentry/sentry": "^0.13", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "suggest": { - "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", - "doctrine/couchdb": "Allow sending log messages to a CouchDB server", - "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-mongo": "Allow sending log messages to a MongoDB server", - "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", - "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server", - "sentry/sentry": "Allow sending log messages to a Sentry server" - }, - "type": "library", - "autoload": { - "psr-4": { - "Monolog\\": "src/Monolog" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "http://github.com/Seldaek/monolog", - "keywords": [ - "log", - "logging", - "psr-3" - ], - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2022-03-13T20:29:46+00:00" - }, - { - "name": "psr/log", - "version": "1.1.4", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "time": "2021-05-03T11:20:27+00:00" - }, - { - "name": "react/event-loop", - "version": "v1.2.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/event-loop.git", - "reference": "be6dee480fc4692cec0504e65eb486e3be1aa6f2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/event-loop/zipball/be6dee480fc4692cec0504e65eb486e3be1aa6f2", - "reference": "be6dee480fc4692cec0504e65eb486e3be1aa6f2", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35" - }, - "suggest": { - "ext-event": "~1.0 for ExtEventLoop", - "ext-pcntl": "For signal handling support when using the StreamSelectLoop", - "ext-uv": "* for ExtUvLoop" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\EventLoop\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", - "keywords": [ - "asynchronous", - "event-loop" - ], - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2021-07-11T12:31:24+00:00" - }, - { - "name": "react/zmq", - "version": "v0.4.0", - "source": { - "type": "git", - "url": "https://github.com/friends-of-reactphp/zmq.git", - "reference": "13dec0bd2397adcc5d6aa54c8d7f0982fba66f39" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/friends-of-reactphp/zmq/zipball/13dec0bd2397adcc5d6aa54c8d7f0982fba66f39", - "reference": "13dec0bd2397adcc5d6aa54c8d7f0982fba66f39", - "shasum": "" - }, - "require": { - "evenement/evenement": "^3.0 || ^2.0", - "ext-zmq": "*", - "php": ">=5.4.0", - "react/event-loop": "^1.0 || ^0.5 || ^0.4" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "~4.8.35 || ~5.7 || ~6.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\ZMQ\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "ZeroMQ bindings for React.", - "keywords": [ - "zeromq", - "zmq" - ], - "time": "2018-05-18T15:27:55+00:00" - } - ], - "packages-dev": [], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": false, - "prefer-lowest": false, - "platform": { - "php": ">=8.1" - }, - "platform-dev": [], - "platform-overrides": { - "php": "8.1", - "ext-zmq": "1" - }, - "plugin-api-version": "1.1.0" -} diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 29589cc..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,9 +0,0 @@ -version: "3" - -services: - xmr: - build: . - environment: - XMR_DEBUG: "true" - volumes: - - ./:/opt/xmr \ No newline at end of file diff --git a/entrypoint.sh b/entrypoint.sh deleted file mode 100755 index 039ab5a..0000000 --- a/entrypoint.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -# Write config.json -echo '{' > /opt/xmr/config.json -echo ' "listenOn": "tcp://*:50001",' >> /opt/xmr/config.json -echo ' "pubOn": ["tcp://*:9505"],' >> /opt/xmr/config.json -echo ' "queuePoll": '$XMR_QUEUE_POLL',' >> /opt/xmr/config.json -echo ' "queueSize": '$XMR_QUEUE_SIZE',' >> /opt/xmr/config.json -echo ' "debug": '$XMR_DEBUG',' >> /opt/xmr/config.json -echo ' "ipv6RespSupport": '$XMR_IPV6RESPSUPPORT',' >> /opt/xmr/config.json -echo ' "ipv6PubSupport": '$XMR_IPV6PUBSUPPORT >> /opt/xmr/config.json -echo '}' >> /opt/xmr/config.json - -/usr/local/bin/php /opt/xmr/index.php \ No newline at end of file diff --git a/index.php b/index.php deleted file mode 100644 index 3303339..0000000 --- a/index.php +++ /dev/null @@ -1,246 +0,0 @@ -#!/usr/bin/env php -. - * -sequenceDiagram -Player->> CMS: Register -Note right of Player: Register contains the XMR Channel -CMS->> XMR: PlayerAction -XMR->> CMS: ACK -XMR-->> Player: PlayerAction - * - */ -require 'vendor/autoload.php'; - -function exception_error_handler($severity, $message, $file, $line) { - if (!(error_reporting() & $severity)) { - // This error code is not included in error_reporting - return; - } - throw new ErrorException($message, 0, $severity, $file, $line); -} -set_error_handler("exception_error_handler"); - -// Decide where to look for the config file -$dirname = (Phar::running(false) == '') ? __DIR__ : dirname(Phar::running(false)); -$config = $dirname . '/config.json'; - -if (!file_exists($config)) - throw new InvalidArgumentException('Missing ' . $config . ' file, please create one in ' . $dirname); - -$configString = file_get_contents($config); -$config = json_decode($configString); - -if ($config === null) - throw new InvalidArgumentException('Cannot decode config file ' . json_last_error_msg() . ' config string is [' . $configString . ']'); - -if ($config->debug) - $logLevel = \Monolog\Logger::DEBUG; -else - $logLevel = \Monolog\Logger::WARNING; - -// Queue settings -$queuePoll = (property_exists($config, 'queuePoll')) ? $config->queuePoll : 5; -$queueSize = (property_exists($config, 'queueSize')) ? $config->queueSize : 10; - -// Set up logging to file -$log = new \Monolog\Logger('xmr'); -$log->pushHandler(new \Monolog\Handler\StreamHandler(STDOUT, $logLevel)); -$log->info(sprintf('Starting up - listening for CMS on %s.', $config->listenOn)); - -try { - $loop = \React\EventLoop\Factory::create(); - - /** - * ZMQ context wraps the PHP implementation. - * @var \ZMQContext $context - */ - $context = new React\ZMQ\Context($loop); - - // Reply socket for requests from CMS - $responder = $context->getSocket(ZMQ::SOCKET_REP); - $responder->bind($config->listenOn); - - // Set RESP socket options - if (isset($config->ipv6RespSupport) && $config->ipv6RespSupport === true) { - $log->debug('RESP MQ Setting socket option for IPv6 to TRUE'); - $responder->setSockOpt(\ZMQ::SOCKOPT_IPV6, true); - } - - // Pub socket for messages to Players (subs) - $publisher = $context->getSocket(ZMQ::SOCKET_PUB); - - // Set PUB socket options - if (isset($config->ipv6PubSupport) && $config->ipv6PubSupport === true) { - $log->debug('Pub MQ Setting socket option for IPv6 to TRUE'); - $publisher->setSockOpt(\ZMQ::SOCKOPT_IPV6, true); - } - - foreach ($config->pubOn as $pubOn) { - $log->info(sprintf('Bind to %s for Publish.', $pubOn)); - $publisher->bind($pubOn); - } - - // Create an in memory message queue. - $messageStatsEmpty = [ - 'peakQueueSize' => 0, - 'messageCounters' => [ - 'total' => 0, - 'sent' => 0, - 'qos1' => 0, - 'qos2' => 0, - 'qos3' => 0, - 'qos4' => 0, - 'qos5' => 0, - 'qos6' => 0, - 'qos7' => 0, - 'qos8' => 0, - 'qos9' => 0, - 'qos10' => 0, - ] - ]; - $messageStats = $messageStatsEmpty; - $messageQueue = []; - - // REP - $responder->on('error', function ($e) use ($log) { - $log->error($e->getMessage()); - }); - - $responder->on('message', function ($msg) use ($log, $responder, $publisher, &$messageQueue, &$messageStats, $messageStatsEmpty) { - - try { - // Log incoming message - $log->info($msg); - - if ($msg === 'stats') { - // Add the current queue size - $messageStats['currentQueueSize'] = count($messageQueue); - - // Send response - $responder->send(json_encode($messageStats), \ZMQ::MODE_DONTWAIT); - - // Reset the stats - $messageStats = $messageStatsEmpty; - } else { - // Parse the message and expect a "channel" element - $msg = json_decode($msg); - - if (!isset($msg->channel)) { - throw new InvalidArgumentException('Missing Channel'); - } - - if (!isset($msg->key)) { - throw new InvalidArgumentException('Missing Key'); - } - - if (!isset($msg->message)) { - throw new InvalidArgumentException('Missing Message'); - } - - // Respond to this message - $responder->send(true, \ZMQ::MODE_DONTWAIT); - - // Make sure QOS is set - if (!isset($msg->qos)) { - // Default to the highest priority for messages missing a QOS - $msg->qos = 10; - } - - // Add to stats - $messageStats['messageCounters']['total']++; - $messageStats['messageCounters']['qos' . $msg->qos]++; - - // Decide whether we should queue the message or send it immediately. - if ($msg->qos != 10) { - // Queue for the periodic poll to send - $log->debug('Queuing'); - $messageQueue[] = $msg; - - // Record peak queue - $currentQueueSize = count($messageQueue); - if ($currentQueueSize > $messageStats['peakQueueSize']) { - $messageStats['peakQueueSize'] = $currentQueueSize; - } - } else { - // Send Immediately - $log->debug('Sending Immediately'); - $messageStats['messageCounters']['sent']++; - $publisher->sendmulti([$msg->channel, $msg->key, $msg->message], \ZMQ::MODE_DONTWAIT); - } - } - } catch (InvalidArgumentException $e) { - // Return false - $responder->send(false, \ZMQ::MODE_DONTWAIT); - - $log->error($e->getMessage()); - } - }); - - // Queue Processor - $log->debug('Adding a queue processor for every ' . $queuePoll . ' seconds'); - $loop->addPeriodicTimer($queuePoll, function() use ($log, $publisher, &$messageQueue, $queueSize, &$messageStats) { - // Is there work to be done - if (count($messageQueue) > 0) { - $log->debug('Queue Poll - work to be done.'); - - // Order the message queue according to QOS - usort($messageQueue, function($a, $b) { - return ($a->qos === $b->qos) ? 0 : (($a->qos < $b->qos) ? -1 : 1); - }); - - $log->debug('Queue Poll - message queue sorted'); - - // Send up to X messages. - for ($i = 0; $i < $queueSize; $i++) { - if ($i > count($messageQueue)) { - $log->debug('Queue Poll - queue size reached'); - break; - } - - // Pop an element - $msg = array_pop($messageQueue); - - // Send - $log->debug('Sending ' . $i); - - $messageStats['messageCounters']['sent']++; - $publisher->sendmulti([$msg->channel, $msg->key, $msg->message], \ZMQ::MODE_DONTWAIT); - - $log->debug('Popped ' . $i . ' from the queue, new queue size ' . count($messageQueue)); - } - } - }); - - // Periodic updater - $loop->addPeriodicTimer(30, function() use ($log, $publisher) { - $log->debug('Heartbeat...'); - $publisher->sendmulti(["H", "", ""], \ZMQ::MODE_DONTWAIT); - }); - - // Run the react event loop - $loop->run(); -} catch (Exception $e) { - $log->error($e->getMessage()); - $log->error($e->getTraceAsString()); -} - -// This ends - causing Docker to restart if we're in a container. \ No newline at end of file diff --git a/xibo-xmr.csproj b/xibo-xmr.csproj new file mode 100644 index 0000000..3dc1b75 --- /dev/null +++ b/xibo-xmr.csproj @@ -0,0 +1,18 @@ + + + + net7.0 + enable + enable + dotnet-xibo_xmr-0d45332a-a45b-4834-bf51-730efddb6b0f + xibo_xmr + + + + + + + + + + diff --git a/xibo-xmr.sln b/xibo-xmr.sln new file mode 100644 index 0000000..3f0f992 --- /dev/null +++ b/xibo-xmr.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.002.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "xibo-xmr", "xibo-xmr.csproj", "{08F489D8-A0A7-4C34-8C6A-244B0D56C018}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {08F489D8-A0A7-4C34-8C6A-244B0D56C018}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {08F489D8-A0A7-4C34-8C6A-244B0D56C018}.Debug|Any CPU.Build.0 = Debug|Any CPU + {08F489D8-A0A7-4C34-8C6A-244B0D56C018}.Release|Any CPU.ActiveCfg = Release|Any CPU + {08F489D8-A0A7-4C34-8C6A-244B0D56C018}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {C578348F-4B77-4823-BCB9-DA4DFAFE15E1} + EndGlobalSection +EndGlobal