client

Clone or download

Added app icon

Modified Files

package com.stream_pi.client.window;
package com.stream_pi.client.window;
import com.stream_pi.client.connection.ClientListener;
import com.stream_pi.client.connection.ClientListener;
import com.stream_pi.client.io.Config;
import com.stream_pi.client.io.Config;
import com.stream_pi.client.info.ClientInfo;
import com.stream_pi.client.info.ClientInfo;
import java.io.File;
import java.io.File;
import java.util.logging.Logger;
import java.util.logging.Logger;
import com.stream_pi.client.Main;
import com.stream_pi.client.Main;
import com.stream_pi.client.profile.ClientProfiles;
import com.stream_pi.client.profile.ClientProfiles;
import com.stream_pi.client.window.dashboard.DashboardBase;
import com.stream_pi.client.window.dashboard.DashboardBase;
import com.stream_pi.client.window.firsttimeuse.FirstTimeUse;
import com.stream_pi.client.window.firsttimeuse.FirstTimeUse;
import com.stream_pi.client.window.settings.SettingsBase;
import com.stream_pi.client.window.settings.SettingsBase;
import com.stream_pi.theme_api.Theme;
import com.stream_pi.theme_api.Theme;
import com.stream_pi.theme_api.Themes;
import com.stream_pi.theme_api.Themes;
import com.stream_pi.util.alert.StreamPiAlert;
import com.stream_pi.util.alert.StreamPiAlert;
import com.stream_pi.util.combobox.StreamPiComboBox;
import com.stream_pi.util.combobox.StreamPiComboBox;
import com.stream_pi.util.exception.MinorException;
import com.stream_pi.util.exception.MinorException;
import com.stream_pi.util.exception.SevereException;
import com.stream_pi.util.exception.SevereException;
import com.stream_pi.util.iohelper.IOHelper;
import com.stream_pi.util.iohelper.IOHelper;
import com.stream_pi.util.loggerhelper.StreamPiLogFallbackHandler;
import com.stream_pi.util.loggerhelper.StreamPiLogFallbackHandler;
import com.stream_pi.util.loggerhelper.StreamPiLogFileHandler;
import com.stream_pi.util.loggerhelper.StreamPiLogFileHandler;
import com.stream_pi.util.platform.Platform;
import com.stream_pi.util.platform.Platform;
import javafx.application.HostServices;
import javafx.application.HostServices;
import javafx.geometry.Insets;
import javafx.geometry.Insets;
import javafx.scene.CacheHint;
import javafx.scene.CacheHint;
import javafx.scene.Cursor;
import javafx.scene.Cursor;
import javafx.scene.image.Image;
import javafx.scene.input.KeyCombination;
import javafx.scene.input.KeyCombination;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.StackPane;
import javafx.scene.text.Font;
import javafx.scene.text.Font;
import javafx.stage.Stage;
import javafx.stage.Stage;
public abstract class Base extends StackPane implements ExceptionAndAlertHandler, ClientListener {
public abstract class Base extends StackPane implements ExceptionAndAlertHandler, ClientListener {
private Config config;
private Config config;
private ClientProfiles clientProfiles;
private ClientProfiles clientProfiles;
private ClientInfo clientInfo;
private ClientInfo clientInfo;
private Stage stage;
private Stage stage;
public Stage getStage()
public Stage getStage()
{
{
return stage;
return stage;
}
}
public Logger getLogger()
public Logger getLogger()
{
{
return logger;
return logger;
}
}
private DashboardBase dashboardBase;
private DashboardBase dashboardBase;
private SettingsBase settingsBase;
private SettingsBase settingsBase;
private FirstTimeUse firstTimeUse;
private FirstTimeUse firstTimeUse;
public FirstTimeUse getFirstTimeUse() {
public FirstTimeUse getFirstTimeUse() {
return firstTimeUse;
return firstTimeUse;
}
}
private StackPane alertStackPane;
private StackPane alertStackPane;
@Override
@Override
public ClientProfiles getClientProfiles() {
public ClientProfiles getClientProfiles() {
return clientProfiles;
return clientProfiles;
}
}
public void setClientProfiles(ClientProfiles clientProfiles) {
public void setClientProfiles(ClientProfiles clientProfiles) {
this.clientProfiles = clientProfiles;
this.clientProfiles = clientProfiles;
}
}
private Logger logger = null;
private Logger logger = null;
private StreamPiLogFileHandler logFileHandler = null;
private StreamPiLogFileHandler logFileHandler = null;
private StreamPiLogFallbackHandler logFallbackHandler = null;
private StreamPiLogFallbackHandler logFallbackHandler = null;
@Override
@Override
public void initLogger()
public void initLogger()
{
{
try
try
{
{
if(logger != null || logFileHandler != null)
if(logger != null || logFileHandler != null)
return;
return;
closeLogger();
closeLogger();
logger = Logger.getLogger("");
logger = Logger.getLogger("");
if(new File(ClientInfo.getInstance().getPrePath()).getAbsoluteFile().getParentFile().canWrite())
if(new File(ClientInfo.getInstance().getPrePath()).getAbsoluteFile().getParentFile().canWrite())
{
{
String path = ClientInfo.getInstance().getPrePath()+"../streampi.log";
String path = ClientInfo.getInstance().getPrePath()+"../streampi.log";
if(ClientInfo.getInstance().getPlatformType() == Platform.ANDROID)
if(ClientInfo.getInstance().getPlatformType() == Platform.ANDROID)
path = ClientInfo.getInstance().getPrePath()+"streampi.log";
path = ClientInfo.getInstance().getPrePath()+"streampi.log";
logFileHandler = new StreamPiLogFileHandler(path);
logFileHandler = new StreamPiLogFileHandler(path);
logger.addHandler(logFileHandler);
logger.addHandler(logFileHandler);
}
}
else
else
{
{
logFallbackHandler = new StreamPiLogFallbackHandler();
logFallbackHandler = new StreamPiLogFallbackHandler();
logger.addHandler(logFallbackHandler);
logger.addHandler(logFallbackHandler);
}
}
}
}
catch(Exception e)
catch(Exception e)
{
{
e.printStackTrace();
e.printStackTrace();
logFallbackHandler = new StreamPiLogFallbackHandler();
logFallbackHandler = new StreamPiLogFallbackHandler();
logger.addHandler(logFallbackHandler);
logger.addHandler(logFallbackHandler);
}
}
}
}
public void closeLogger()
public void closeLogger()
{
{
if(logFileHandler != null)
if(logFileHandler != null)
logFileHandler.close();
logFileHandler.close();
else if(logFallbackHandler != null)
else if(logFallbackHandler != null)
logFallbackHandler.close();
logFallbackHandler.close();
}
}
private HostServices hostServices;
private HostServices hostServices;
public void setHostServices(HostServices hostServices)
public void setHostServices(HostServices hostServices)
{
{
this.hostServices = hostServices;
this.hostServices = hostServices;
}
}
public HostServices getHostServices()
public HostServices getHostServices()
{
{
return hostServices;
return hostServices;
}
}
public void initBase() throws SevereException
public void initBase() throws SevereException
{
{
stage = (Stage) getScene().getWindow();
stage = (Stage) getScene().getWindow();
getStage().getIcons().add(new Image(Main.class.getResourceAsStream("app_icon.png")));
clientInfo = ClientInfo.getInstance();
clientInfo = ClientInfo.getInstance();
dashboardBase = new DashboardBase(this, this);
dashboardBase = new DashboardBase(this, this);
dashboardBase.prefWidthProperty().bind(widthProperty());
dashboardBase.prefWidthProperty().bind(widthProperty());
dashboardBase.prefHeightProperty().bind(heightProperty());
dashboardBase.prefHeightProperty().bind(heightProperty());
settingsBase = new SettingsBase(this, this, getHostServices());
settingsBase = new SettingsBase(this, this, getHostServices());
alertStackPane = new StackPane();
alertStackPane = new StackPane();
alertStackPane.setPadding(new Insets(10));
alertStackPane.setPadding(new Insets(10));
alertStackPane.setVisible(false);
alertStackPane.setVisible(false);
StreamPiAlert.setParent(alertStackPane);
StreamPiAlert.setParent(alertStackPane);
StreamPiComboBox.setParent(alertStackPane);
StreamPiComboBox.setParent(alertStackPane);
firstTimeUse = new FirstTimeUse(this, this);
firstTimeUse = new FirstTimeUse(this, this);
getChildren().clear();
getChildren().clear();
getChildren().addAll(alertStackPane);
getChildren().addAll(alertStackPane);
initLogger();
initLogger();
checkPrePathDirectory();
checkPrePathDirectory();
getChildren().addAll(settingsBase, dashboardBase);
getChildren().addAll(settingsBase, dashboardBase);
setStyle(null);
setStyle(null);
config = Config.getInstance();
config = Config.getInstance();
if(config.isFirstTimeUse())
if(config.isFirstTimeUse())
{
{
clearStylesheets();
clearStylesheets();
applyDefaultStylesheet();
applyDefaultStylesheet();
applyDefaultIconsStylesheet();
applyDefaultIconsStylesheet();
getChildren().add(firstTimeUse);
getChildren().add(firstTimeUse);
firstTimeUse.toFront();
firstTimeUse.toFront();
}
}
else
else
{
{
dashboardBase.toFront();
dashboardBase.toFront();
}
}
initThemes();
initThemes();
}
}
private void checkPrePathDirectory() throws SevereException
private void checkPrePathDirectory() throws SevereException
{
{
try
try
{
{
File filex = new File(ClientInfo.getInstance().getPrePath());
File filex = new File(ClientInfo.getInstance().getPrePath());
if(filex.getAbsoluteFile().getParentFile().canWrite())
if(filex.getAbsoluteFile().getParentFile().canWrite())
{
{
if(!filex.exists())
if(!filex.exists())
{
{
filex.mkdirs();
filex.mkdirs();
IOHelper.unzip(Main.class.getResourceAsStream("Default.obj"), ClientInfo.getInstance().getPrePath());
IOHelper.unzip(Main.class.getResourceAsStream("Default.obj"), ClientInfo.getInstance().getPrePath());
}
}
}
}
else
else
{
{
if(getClientInfo().getPlatformType() != Platform.ANDROID)
if(getClientInfo().getPlatformType() != Platform.ANDROID)
{
{
setPrefSize(300,300);
setPrefSize(300,300);
}
}
clearStylesheets();
clearStylesheets();
applyDefaultStylesheet();
applyDefaultStylesheet();
applyDefaultIconsStylesheet();
applyDefaultIconsStylesheet();
getStage().show();
getStage().show();
throw new SevereException("No storage permission. Give it!");
throw new SevereException("No storage permission. Give it!");
}
}
}
}
catch (Exception e)
catch (Exception e)
{
{
e.printStackTrace();
e.printStackTrace();
throw new SevereException(e.getMessage());
throw new SevereException(e.getMessage());
}
}
}
}
public void setupFlags()
public void setupFlags()
{
{
//Full Screen
//Full Screen
if(getConfig().isFullscreen())
if(getConfig().isFullscreen())
{
{
getStage().setFullScreenExitKeyCombination(KeyCombination.NO_MATCH);
getStage().setFullScreenExitKeyCombination(KeyCombination.NO_MATCH);
getStage().setFullScreen(true);
getStage().setFullScreen(true);
}
}
else
else
{
{
getStage().setFullScreenExitKeyCombination(KeyCombination.keyCombination("Esc"));
getStage().setFullScreenExitKeyCombination(KeyCombination.keyCombination("Esc"));
getStage().setFullScreen(false);
getStage().setFullScreen(false);
}
}
//Cursor
//Cursor
if(getConfig().isShowCursor())
if(getConfig().isShowCursor())
{
{
setCursor(Cursor.DEFAULT);
setCursor(Cursor.DEFAULT);
}
}
else
else
{
{
setCursor(Cursor.NONE);
setCursor(Cursor.NONE);
}
}
}
}
public SettingsBase getSettingsPane() {
public SettingsBase getSettingsPane() {
return settingsBase;
return settingsBase;
}
}
public DashboardBase getDashboardPane() {
public DashboardBase getDashboardPane() {
return dashboardBase;
return dashboardBase;
}
}
public void renderRootDefaultProfile()
public void renderRootDefaultProfile()
{
{
getDashboardPane().renderProfile(getClientProfiles().getProfileFromID(
getDashboardPane().renderProfile(getClientProfiles().getProfileFromID(
getConfig().getStartupProfileID()
getConfig().getStartupProfileID()
), true);
), true);
}
}
public void clearStylesheets()
public void clearStylesheets()
{
{
getStylesheets().clear();
getStylesheets().clear();
}
}
public void applyDefaultStylesheet()
public void applyDefaultStylesheet()
{
{
Font.loadFont(Main.class.getResourceAsStream("Roboto.ttf"), 13);
Font.loadFont(Main.class.getResourceAsStream("Roboto.ttf"), 13);
getStylesheets().add(Main.class.getResource("style.css").toExternalForm());
getStylesheets().add(Main.class.getResource("style.css").toExternalForm());
}
}
public void applyDefaultIconsStylesheet()
public void applyDefaultIconsStylesheet()
{
{
Font.loadFont(Main.class.getResourceAsStream("Roboto.ttf"), 13);
Font.loadFont(Main.class.getResourceAsStream("Roboto.ttf"), 13);
getStylesheets().add(Main.class.getResource("default_icons.css").toExternalForm());
getStylesheets().add(Main.class.getResource("default_icons.css").toExternalForm());
}
}
public Config getConfig()
public Config getConfig()
{
{
return config;
return config;
}
}
public ClientInfo getClientInfo()
public ClientInfo getClientInfo()
{
{
return clientInfo;
return clientInfo;
}
}
private Theme currentTheme;
private Theme currentTheme;
@Override
@Override
public Theme getCurrentTheme()
public Theme getCurrentTheme()
{
{
return currentTheme;
return currentTheme;
}
}
public void applyTheme(Theme t)
public void applyTheme(Theme t)
{
{
logger.info("Applying theme '"+t.getFullName()+"' ...");
logger.info("Applying theme '"+t.getFullName()+"' ...");
if(t.getFonts() != null)
if(t.getFonts() != null)
{
{
for(String fontFile : t.getFonts())
for(String fontFile : t.getFonts())
{
{
Font.loadFont(fontFile.replace("%20",""), 13);
Font.loadFont(fontFile.replace("%20",""), 13);
}
}
}
}
currentTheme = t;
currentTheme = t;
clearStylesheets();
clearStylesheets();
applyDefaultStylesheet();
applyDefaultStylesheet();
getStylesheets().addAll(t.getStylesheets());
getStylesheets().addAll(t.getStylesheets());
applyDefaultIconsStylesheet();
applyDefaultIconsStylesheet();
logger.info("... Done!");
logger.info("... Done!");
}
}
Themes themes;
Themes themes;
public void initThemes() throws SevereException
public void initThemes() throws SevereException
{
{
logger.info("Loading themes ...");
logger.info("Loading themes ...");
themes = new Themes(getConfig().getThemesPath(), getConfig().getCurrentThemeFullName(), clientInfo.getMinThemeSupportVersion());
themes = new Themes(getConfig().getThemesPath(), getConfig().getCurrentThemeFullName(), clientInfo.getMinThemeSupportVersion());
if(themes.getErrors().size()>0)
if(themes.getErrors().size()>0)
{
{
StringBuilder themeErrors = new StringBuilder();
StringBuilder themeErrors = new StringBuilder();
for(MinorException eachException : themes.getErrors())
for(MinorException eachException : themes.getErrors())
{
{
themeErrors.append("\n * ").append(eachException.getShortMessage());
themeErrors.append("\n * ").append(eachException.getShortMessage());
}
}
if(themes.getIsBadThemeTheCurrentOne())
if(themes.getIsBadThemeTheCurrentOne())
{
{
themeErrors.append("\n\nReverted to default theme! (").append(getConfig().getDefaultCurrentThemeFullName()).append(")");
themeErrors.append("\n\nReverted to default theme! (").append(getConfig().getDefaultCurrentThemeFullName()).append(")");
getConfig().setCurrentThemeFullName(getConfig().getDefaultCurrentThemeFullName());
getConfig().setCurrentThemeFullName(getConfig().getDefaultCurrentThemeFullName());
getConfig().save();
getConfig().save();
}
}
handleMinorException(new MinorException("Theme Loading issues", themeErrors.toString()));
handleMinorException(new MinorException("Theme Loading issues", themeErrors.toString()));
}
}
logger.info("... Done!");
logger.info("... Done!");
}
}
@Override
@Override
public Themes getThemes() {
public Themes getThemes() {
return themes;
return themes;
}
}
public void applyDefaultTheme()
public void applyDefaultTheme()
{
{
logger.info("Applying default theme ...");
logger.info("Applying default theme ...");
boolean foundTheme = false;
boolean foundTheme = false;
for(Theme t: themes.getThemeList())
for(Theme t: themes.getThemeList())
{
{
if(t.getFullName().equals(config.getCurrentThemeFullName()))
if(t.getFullName().equals(config.getCurrentThemeFullName()))
{
{
foundTheme = true;
foundTheme = true;
applyTheme(t);
applyTheme(t);
break;
break;
}
}
}
}
if(foundTheme)
if(foundTheme)
{
{
logger.info("... Done!");
logger.info("... Done!");
}
}
else
else
{
{
logger.info("Theme not found. reverting to light theme ...");
logger.info("Theme not found. reverting to light theme ...");
try {
try {
Config.getInstance().setCurrentThemeFullName("com.StreamPi.DefaultLight");
Config.getInstance().setCurrentThemeFullName("com.StreamPi.DefaultLight");
Config.getInstance().save();
Config.getInstance().save();
applyDefaultTheme();
applyDefaultTheme();
}
}
catch (SevereException e)
catch (SevereException e)
{
{
handleSevereException(e);
handleSevereException(e);
}
}
}
}
}
}
@Override
@Override
public String getDefaultThemeFullName()
public String getDefaultThemeFullName()
{
{
return config.getCurrentThemeFullName();
return config.getCurrentThemeFullName();
}
}
}
}
PNG

IHDR6 pHYs Ǡ)TiTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c145 79.163499, 2018/08/13-16:40:22 "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/" xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/" xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#" xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/" xmlns:pdf="http://ns.adobe.com/pdf/1.3/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" dc:format="image/png" xmp:CreatorTool="Adobe Illustrator CC 23.0 (Windows)" xmp:CreateDate="2019-10-18T14:36:20+06:30" xmp:ModifyDate="2019-10-18T22:05:36+05:30" xmp:MetadataDate="2019-10-18T22:05:36+05:30" xmpMM:RenditionClass="proof:pdf" xmpMM:OriginalDocumentID="uuid:65E6390686CF11DBA6E2D887CEACB407" xmpMM:DocumentID="xmp.did:306edead-1d05-3042-bac5-a5d3ebf7522e" xmpMM:InstanceID="xmp.iid:4b327390-4cb5-da43-bc99-b6dac7b4c586" illustrator:StartupProfile="Web" illustrator:Type="Document" xmpTPg:NPages="1" xmpTPg:HasVisibleTransparency="False" xmpTPg:HasVisibleOverprint="False" pdf:Producer="Adobe PDF library 15.00" photoshop:ColorMode="3" photoshop:ICCProfile="sRGB IEC61966-2.1"> <dc:title> <rdf:Alt> <rdf:li xml:lang="x-default">stream</rdf:li> </rdf:Alt> </dc:title> <xmpMM:DerivedFrom stRef:instanceID="uuid:d0d8f097-7ee2-4877-9c93-7672cba56082" stRef:documentID="xmp.did:306edead-1d05-3042-bac5-a5d3ebf7522e" stRef:originalDocumentID="uuid:65E6390686CF11DBA6E2D887CEACB407" stRef:renditionClass="proof:pdf"/> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:306edead-1d05-3042-bac5-a5d3ebf7522e" stEvt:when="2019-10-18T14:36:18+05:30" stEvt:softwareAgent="Adobe Illustrator CC 23.0 (Windows)" stEvt:changed="/"/> <rdf:li stEvt:action="converted" stEvt:parameters="from application/pdf to application/vnd.adobe.photoshop"/> <rdf:li stEvt:action="derived" stEvt:parameters="converted from application/vnd.adobe.photoshop to image/png"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:4b327390-4cb5-da43-bc99-b6dac7b4c586" stEvt:when="2019-10-18T22:05:36+05:30" stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> <xmpTPg:MaxPageSize stDim:w="306.130000" stDim:h="306.130000" stDim:unit="Pixels"/> <xmpTPg:PlateNames> <rdf:Seq> <rdf:li>Cyan</rdf:li> <rdf:li>Magenta</rdf:li> <rdf:li>Yellow</rdf:li> <rdf:li>Black</rdf:li> </rdf:Seq> </xmpTPg:PlateNames> <xmpTPg:SwatchGroups> <rdf:Seq> <rdf:li> <rdf:Description xmpG:groupName="Default Swatch Group" xmpG:groupType="0"> <xmpG:Colorants> <rdf:Seq> <rdf:li xmpG:swatchName="White" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="255" xmpG:green="255" xmpG:blue="255"/> <rdf:li xmpG:swatchName="Black" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="0" xmpG:green="0" xmpG:blue="0"/> <rdf:li xmpG:swatchName="RGB Red" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="255" xmpG:green="0" xmpG:blue="0"/> <rdf:li xmpG:swatchName="RGB Yellow" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="255" xmpG:green="255" xmpG:blue="0"/> <rdf:li xmpG:swatchName="RGB Green" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="0" xmpG:green="255" xmpG:blue="0"/> <rdf:li xmpG:swatchName="RGB Cyan" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="0" xmpG:green="255" xmpG:blue="255"/> <rdf:li xmpG:swatchName="RGB Blue" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="0" xmpG:green="0" xmpG:blue="255"/> <rdf:li xmpG:swatchName="RGB Magenta" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="255" xmpG:green="0" xmpG:blue="255"/> <rdf:li xmpG:swatchName="R=193 G=39 B=45" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="193" xmpG:green="39" xmpG:blue="45"/> <rdf:li xmpG:swatchName="R=237 G=28 B=36" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="237" xmpG:green="28" xmpG:blue="36"/> <rdf:li xmpG:swatchName="R=241 G=90 B=36" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="241" xmpG:green="90" xmpG:blue="36"/> <rdf:li xmpG:swatchName="R=247 G=147 B=30" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="247" xmpG:green="147" xmpG:blue="30"/> <rdf:li xmpG:swatchName="R=251 G=176 B=59" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="251" xmpG:green="176" xmpG:blue="59"/> <rdf:li xmpG:swatchName="R=252 G=238 B=33" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="252" xmpG:green="238" xmpG:blue="33"/> <rdf:li xmpG:swatchName="R=217 G=224 B=33" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="217" xmpG:green="224" xmpG:blue="33"/> <rdf:li xmpG:swatchName="R=140 G=198 B=63" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="140" xmpG:green="198" xmpG:blue="63"/> <rdf:li xmpG:swatchName="R=57 G=181 B=74" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="57" xmpG:green="181" xmpG:blue="74"/> <rdf:li xmpG:swatchName="R=0 G=146 B=69" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="0" xmpG:green="146" xmpG:blue="69"/> <rdf:li xmpG:swatchName="R=0 G=104 B=55" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="0" xmpG:green="104" xmpG:blue="55"/> <rdf:li xmpG:swatchName="R=34 G=181 B=115" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="34" xmpG:green="181" xmpG:blue="115"/> <rdf:li xmpG:swatchName="R=0 G=169 B=157" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="0" xmpG:green="169" xmpG:blue="157"/> <rdf:li xmpG:swatchName="R=41 G=171 B=226" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="41" xmpG:green="171" xmpG:blue="226"/> <rdf:li xmpG:swatchName="R=0 G=113 B=188" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="0" xmpG:green="113" xmpG:blue="188"/> <rdf:li xmpG:swatchName="R=46 G=49 B=146" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="46" xmpG:green="49" xmpG:blue="146"/> <rdf:li xmpG:swatchName="R=27 G=20 B=100" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="27" xmpG:green="20" xmpG:blue="100"/> <rdf:li xmpG:swatchName="R=102 G=45 B=145" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="102" xmpG:green="45" xmpG:blue="145"/> <rdf:li xmpG:swatchName="R=147 G=39 B=143" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="147" xmpG:green="39" xmpG:blue="143"/> <rdf:li xmpG:swatchName="R=158 G=0 B=93" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="158" xmpG:green="0" xmpG:blue="93"/> <rdf:li xmpG:swatchName="R=212 G=20 B=90" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="212" xmpG:green="20" xmpG:blue="90"/> <rdf:li xmpG:swatchName="R=237 G=30 B=121" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="237" xmpG:green="30" xmpG:blue="121"/> <rdf:li xmpG:swatchName="R=199 G=178 B=153" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="199" xmpG:green="178" xmpG:blue="153"/> <rdf:li xmpG:swatchName="R=153 G=134 B=117" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="153" xmpG:green="134" xmpG:blue="117"/> <rdf:li xmpG:swatchName="R=115 G=99 B=87" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="115" xmpG:green="99" xmpG:blue="87"/> <rdf:li xmpG:swatchName="R=83 G=71 B=65" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="83" xmpG:green="71" xmpG:blue="65"/> <rdf:li xmpG:swatchName="R=198 G=156 B=109" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="198" xmpG:green="156" xmpG:blue="109"/> <rdf:li xmpG:swatchName="R=166 G=124 B=82" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="166" xmpG:green="124" xmpG:blue="82"/> <rdf:li xmpG:swatchName="R=140 G=98 B=57" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="140" xmpG:green="98" xmpG:blue="57"/> <rdf:li xmpG:swatchName="R=117 G=76 B=36" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="117" xmpG:green="76" xmpG:blue="36"/> <rdf:li xmpG:swatchName="R=96 G=56 B=19" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="96" xmpG:green="56" xmpG:blue="19"/> <rdf:li xmpG:swatchName="R=66 G=33 B=11" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="66" xmpG:green="33" xmpG:blue="11"/> </rdf:Seq> </xmpG:Colorants> </rdf:Description> </rdf:li> <rdf:li> <rdf:Description xmpG:groupName="Grays" xmpG:groupType="1"> <xmpG:Colorants> <rdf:Seq> <rdf:li xmpG:swatchName="R=0 G=0 B=0" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="0" xmpG:green="0" xmpG:blue="0"/> <rdf:li xmpG:swatchName="R=26 G=26 B=26" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="26" xmpG:green="26" xmpG:blue="26"/> <rdf:li xmpG:swatchName="R=51 G=51 B=51" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="51" xmpG:green="51" xmpG:blue="51"/> <rdf:li xmpG:swatchName="R=77 G=77 B=77" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="77" xmpG:green="77" xmpG:blue="77"/> <rdf:li xmpG:swatchName="R=102 G=102 B=102" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="102" xmpG:green="102" xmpG:blue="102"/> <rdf:li xmpG:swatchName="R=128 G=128 B=128" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="128" xmpG:green="128" xmpG:blue="128"/> <rdf:li xmpG:swatchName="R=153 G=153 B=153" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="153" xmpG:green="153" xmpG:blue="153"/> <rdf:li xmpG:swatchName="R=179 G=179 B=179" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="179" xmpG:green="179" xmpG:blue="179"/> <rdf:li xmpG:swatchName="R=204 G=204 B=204" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="204" xmpG:green="204" xmpG:blue="204"/> <rdf:li xmpG:swatchName="R=230 G=230 B=230" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="230" xmpG:green="230" xmpG:blue="230"/> <rdf:li xmpG:swatchName="R=242 G=242 B=242" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="242" xmpG:green="242" xmpG:blue="242"/> </rdf:Seq> </xmpG:Colorants> </rdf:Description> </rdf:li> <rdf:li> <rdf:Description xmpG:groupName="Web Color Group" xmpG:groupType="1"> <xmpG:Colorants> <rdf:Seq> <rdf:li xmpG:swatchName="R=63 G=169 B=245" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="63" xmpG:green="169" xmpG:blue="245"/> <rdf:li xmpG:swatchName="R=122 G=201 B=67" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="122" xmpG:green="201" xmpG:blue="67"/> <rdf:li xmpG:swatchName="R=255 G=147 B=30" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="255" xmpG:green="147" xmpG:blue="30"/> <rdf:li xmpG:swatchName="R=255 G=29 B=37" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="255" xmpG:green="29" xmpG:blue="37"/> <rdf:li xmpG:swatchName="R=255 G=123 B=172" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="255" xmpG:green="123" xmpG:blue="172"/> <rdf:li xmpG:swatchName="R=189 G=204 B=212" xmpG:mode="RGB" xmpG:type="PROCESS" xmpG:red="189" xmpG:green="204" xmpG:blue="212"/> </rdf:Seq> </xmpG:Colorants> </rdf:Description> </rdf:li> </rdf:Seq> </xmpTPg:SwatchGroups> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>BN&<QIDATxwxǿ3{!BBj)QbEE^]DQ]AQ({oI $nݐe&G9sx Ks+(/^+(/^+(/^+(/^+(/^+(/^+(/^DQb.<Zyrv(vCz=`,>f7j.f`T}@m/l jl 8K0roX ?He.0
@>(͖>?ynѪ<,_1^A # /(X QbuWx;ް"4M+x 5VFd k7r;"R-xZo|2||eԴRC ;6D%=;7<8+$yjv8 |3PSA|l57ˬ_onoO oO%2C&=uk6! Um=.4Kma^ea5Rw
V_K\/R($&o-C!:
Ӫ%fLKjG纃u[!16]4
$)ES5¾_qbkdje9X(7 0@'r7" sU5?AOG>ЁaC kQ3)BM::+5m^y(x}jp סPhu,*JjPS+竐YnEzw$Ҏc9F=
Ƅa'q93sf[48Tu< JTt]:xqL׾P~(?fHN(#qD ,-B>C$\>W`-`5uCLGN_ER%=5W96[/?py(4:UefTq̶ýooFI^5.T@̄/z,A1a~UͿd73P^TF;,bn># }^/?O:@4GTŁaO/)˰z%Dp̶ҙ
17~?YS7"3vM 㯁oZ=܋*NPUw8gWj %y(ɭAQ y0 ӈbW3~qOg\p|}~A<#X K
߄ #Yq(0xAY8F1]>"<4d^m? $ZDCPA:ije
 |w,6}nCQق8 !:M1 g\c#۞_sExa\Z=:KB@(>wb97l^}PeBPZgJS]nAͷ!:} orpc슅azIőq - 9upݤqv)z5&`&&iX ֧[7}GJ V Q>6'55Կ|b뇁1Hjz! qž5no\ "_Ÿ~< [=sۡU{FڔH?^e8 :@MwvCSbapH tECzaҋm329Y Y6
~i!e P:_kDЦ/|xۿ~
_nMŀ_f5^; \cz;",F٦(/A2G䁷) K{?\五LxF}Hr~v&3bk;abOZ-_ͫ-(&5\8Qި\p+t`gMzFe/ͼf'9l8<$ {5c .!313B,=qLj|O(u
G][Pgsޗ@k%- 4jx "슳#`0mquSw-ZKn~|g1V|D5cJqj*6w`vw?}? ~_=G`TJ2W!t2L1,m[py\EIiM59OX&oKP‘ML@`tt qtpfwA\ԃ~B[-$sqj[1N,AIn5z л#%5Kt_n٩vOr[P_?-G^m5_4Zdž!qxC q"DAѡfp+0h+GUyU{FNA8C /EHNW9?NH$&_{gI%$Z)C@rz//y8kol(z
3 ȦB?{[b?vOGgv`ߚڥAzcشHˈ mGU
~6ű4c`k ~ ۾˩-G i\Ŷ3<FY,b`5 ^T83ط&v#æERb3|Kg*] 2i `:CD0''/ 'o}X9:gXru=n-qAlc-7QO;V]FYAÎ-ե j)ζ݋tŨ[)?,Lmر<>, õob!,~,FN<ܰ>S;sy^zI0`ByVQbspb[e`ΞޏD=}mX ÂmpUU8j>?5!_^qFx=d!H[oD6-
A7=3Vo jqn/6l!]Pհ18ָfpirDQv5~sJkÐɑ.MK2%_{knuCSzgeOq>b4Esx?ґz
Bҏc9ȿdDQv5. pôHlG;9+k5siMc./mnh0t2W~q\)QAO 3{Jol[' 8~΅CvZV^voy2GhۏR{;Fe;W_W}1,{d( +85|>'w"yS(`798+j$Ɛ"UQk{1ETpfፅK>u-1}q#ъ'II۪yL:gp꟬Y?06Q*+ϼPI{sHuM֐?jPk9(||5~j$zq랪A; DKԽ6Bc0\;>-v+ط&v4Bcިz`W4^E>ĕa x/AA@+8w.FY|+-EP6z\?5
+cLR4a痑\Y@4ȫ={9*7cOy8WQ1A:hKIsvԎSIAAEΡ[FMW1Eh1C
zbY ~cB1hR}NNL$-{@3u$_ESnAHn̄KWWR* GZAām-EPPhLy##^^1a+Z '
݆Rf]pqvش($s|QUe7Xt4% WT
oM>vkM_|H܌og^70`7 Z~TQlƶrp򝮃0VnlabnFA v/>$Au
gڸ|v^(S*vaV# #ʷ2uΡ/Xɳ|d8;~ʫ7 k?ÂJJv;M$(M{?~om񳇩úEY6j1(tTwɈ>Ȭ7$/[NI^I%Wpְ6zL|6VZ,æ/ĩG}~K~8nG=7JsEʳj#G#(R`<T+)G7v7lM #v̙ag-QP,c]Zb- Ù%Xe' jt |4(w<"
·AE/{1a~_G:̄LSGJl kЌ}ۃlɭŨ,AT;<VL6h[oC'yg.(&oGef Hxj 'f:۞iͽV ^v[=ݷW EXVFy6_; >x!-Cع<I8qCb˒ȇ_]o_Nw$&w&YLj5NNc%BB/Ϯ.R5z Mx̂,~cϓﬦ;d7:v Qe tA[y@ oJu{NNMt\8Ucpv_݅WF)x',Ĥ6r;]t9w9[Ѓ]J9tT!bWr@)6.Ne?-x4k9`0-lQm9qSlȕ' G7e׵Ox[ꠄ-j#F(_eos+Sv0˰~ץH>MMP3h#\9_=};sRrҫT*OU8tKjLUNn+7/9:_؀OSk 0@xk=b:"aZiоOKk|7-ʢ棜h9g&W$e5(6!;͈*G|D%.=rFO{;eDk\3un
jͩ/"Da9,tݽ*C58CLYg++N'(0  ???j#EDiրɯ/H`Q.UELjTk(+^ ͙DbpwgU>
={__,1rz˜d/8boy4Rx|0OIy5Z ?D%]%ع"Wʢ4iV\<o8e& $ C:̄b3rQiDfr%.帓p vB-(PgaaQᅧb3Nm/ͅ az9s=Â8""7VvasaP]T)J!̔+(q|~`z IN=VV*vY*KW_oQj)))R ѣC䋘>pXnFRlZrERx%?aޗE@? t> TQ_-+eǏϯܦMp7$2(\ X-r9TԈk^#yj<HFY$00 m߾q=,~[P曩~}oDSO=eWLDDC,˺=<y߰WP 0 Ӈ*++
hƍ-2-e@~4 RJJS1Y9s-#~x% i Fp`YX]jjjhnO`N
9z'HDk?%&+ԥKK
1z\kR*^zIRdddS"Qye-^|EYbrq
oRxe/~#F?{lETWTMWP$1i4ZtbN\sSf!$ͫpKwVCKф jwL2VUm^Շ4qQO:P#8> CSl-eJJUW
6t@ZV5!u҅6lؠnBF5޿eWDچ زܹsiĉI]ԥKZlUWWQlذ+pi׮]TZZJsΥ %eWP|hM<zc˫h?M66nH)"%ٺu+u]d0D*,־'04bZz5zϧiӦk36ߔC%8 Y/.]ɓ';l6cعs'9s!==娬VEHHbbbйsgCu]^lF~~>JJJPVV߁Nz 6m–-[g:u
&m2;vDq7b̘1q|</zr?5^N󐺨jMHPxZ àUVXnQmI0Dd;v 'N3gp9\xEEEXt ]tAbb"ѽ{wh4\Rfdgg#;;`F۶mՊ?qE6#+^A.?CR:ڴiݻwm۶JI4'Oƍ_a׮](--M 0}||puaذa3f uǸl :)))r @ xHQJA3ӹsd>qٳy7p!}qь3?CFFnZJy% [W%رC ;Kvv6͟?\& !yi֬Y<9v ZwL%;C}ɓC2d~w^ϒ%K䤻b .!h S;W4`M#hϞ=7,'wK7P  0 9rD˗ akǏ/j Ο?/u9gP T*$ɽޫ=Quu5{#˲j饗^(F*O?4IP T$ZzG^zeU077W(B5ZFAd3 CzF`6ijtNh.5zh4*>Դ$ֈB-XPOCB+;//){)--M<=z<-vB-XP!b@aPtԺufWX ?W"=z9MȂTyO?&M++W(hpR=};S)"l娩V8 _5k(\hQSuuzxٚrA)b8˅ȦIII~n{1٢2"\egسW% "ԳgOYLDoXJxGd[nۏALU}(Qۂ8_Vd>fϞ--%K੧G wE=$ߪr~ms?Ƽy$߭[7SYql/w# .|~߾}R{܁8EUWX(!%NOO daHсDVVxZlE4ڼJL
[R"˲ԺukQSS#'WB‰ڼvɅZXX(0x bs
И1cDʉ/FUWUnVUU .ĵk׺kXx(AEDDȍs+D J55
*BT
RSS *44T jڼ.VXӧO{yKiz@uu5~aw}1su6-) R4nCWI˲
ڵ_~''z|8AUw8vm1q;0 PEEYf (Q>S(n
,b7
.,"o֥FŲl=_6}zǻ*y*[ؖ%jڼ;\18EwY˲Xf ƌ#t/^NCuu5틉'wވBee%Ο?;wbʕDMMghZh4L0ÇG;v k֬={:lٲcǎd_
u@實Zd|YYWhٲe.(--y摿?tZ-i4SNY^{5qڼ[ Q/2EqԱcG ?gggӣ>J Ð`Pںu←G088}Wrem\6H7|PtfeYz$hʔ)Gtl/=h"Iʉ\ԭR3a޽d狣GV˭iȐ!߿вe$_bz饗Hӑ^wשS'IS]]M ۺ9
0dqqIr՛z Ç%hܸq4i$<sNIN~~~R?#MP#ٳ%[ڵZ-]ӗC;pĶm(11.1,KӧO .IP!v59ؐ]j(:JN?L,Rqqg8l6Ӳe(22ҭ@2Lޡw.Z\;W<y%")CDSΝ%/RzWH׻%ǫ]cEUmc,ˢm۶6m׮]+^1DEEI777
>7oqmb-܂^zI]Do
A_劂8_tk*}M;pmG{qq 6j{HJJBRRzڃ+V`Νٳ'(m~~Z -x
W70 CJ\8_jUWSN: 7 ƌSa={ٲeOj8kvYJQCeee'u KM]J,K DD[lqqTS~8 ͛7;LC^h׮]󫬬fϞW_}%9DDwyԄPqF-+ݻw'\\|ot㐃B!ĉ<x0&OK.N?̙;²,v%7t<$ڂ(ƾ}ʊСC#rϨjh~ŪUСCOll,{ٳ28%Wa߾}!Cdڂj-^}H:$ڤdœ9s˗K8w}HEEufwMNz$ۤT(v(t:ڶm+9Rш 78Cvv6n 8 ap= 55f͂`Ph2*~^x)-&9b-($Jf4[ic7;:@vv}}}ٳ8q"Wiii 2ES j  rD-lDzzfD ?]qqq駟}vkN\AK#eEU 5%33SٌJ+ر#~WI:t(=nIRMŲȆH
;@mAJ#??_VropK.aĉ6lN8!XbDa.RȑDR^^^bɑd)MSj;wD޽ϢZ3d222ˊ j %Gj4=f18}^~e?^t8j(((@aaJXj JXK;'h"ѵNt
Aɱ ȰI!-BH֭[%Gj4:l16Rʤ=}vo@Dشidavo"22R}ϟ}ƵkJ%
AIWVVuIP{PX`hC=zbsXOƉ'H
OM `ҥ"khӧO}k&Dz,E@Mo
AUZMD 6̙3# 
,CZZZ 1|D`aaԕbɒ%R[_EUqՁkA⊉s犎LB>}pa,Z-//ǿo<쳒8Ieh"J%6:T
x7Ns~ѣGEӦMѴ4 BBBtR߿_+WcǎH[CD(//۠Hйx\oQMx)4[4 #<T<Cksᦛnwމ\%!!A3gDII<\m#$!sdr);}^{M~Iv]QQAgVWzzz4H:؜l^Շ7&X2eYt)ХK-(FC!!!tR>׮]Kqqqbccbs.O`؛8Cuu5&NAOM%w.\m݆q!++Kvu[X}:8L6 .]me>D0Dg4Lۯ_?:Wb۸Љ޽{СCXx1BCCEa41o<t7n},_:OmC)7B 7J:|mԩN
{&_MM ټaAM˗Ch4
ZrnÆ PSZ|;#ŶzP3CeBrX &IirGsitr0*8JJHHU˲OPQQg"--^Wyrh9LtdxLoJ-r-L$!8~m
!K}M>]+L3fLFEGtoC*++7pI]v>___q $Dt 1?%F"֨sQRRM&sѻvڹtjk^xiJJJu6a00g8[^#apMu#99YOs4?ƍCffw "7uBmIxFfEbo:rkпUrz_8p JJJp!SU*̙3]v@;!j
C qzݱcǤ<-O{G ˲Ab1%@۷/O[]vŜ9s`2$SZ!7[Uf$5ۓ"X"KFi{<??_S5 ͙3iZGH~FCRSSiܸqnYEYf+5A +s֭[Д)STt~Aih]ҠA}$;GeY0`_tIj<sAIzҞ={T7NGtqAij͛IӤI$]wB\"ŋKS] dYbcc]RK? 8]F~m%VK(55U3<yW7iӆ˨Qcj
=zȽ{
*uֹx0rHMCj^O^}U͵z=yg+,^XPH]W-bXL`H FpM=,X ڤ$>|%fz=L&:wQFs D^^N8kעZuAqu!&&D,ڵ ۶m˲S
aЪU+ Z  oP=_&FC#QLJ t:2 kFC>>>HӑKT),Y"|&O,ua&eUmރ ~[Tf,+jaرc16,uޝfಉ"J
~-BKNNȎ{s ۶m\.OgQiR
Hpj*vf0 x_{V^-)*?KQ5<ch.]x~*a(<<
Q=GD6mCB_~U6T
k׮UǏgѨj>\sf.˲7en7x #HO=Um^ՇKc̥*HhرPh eYݻ7?k0M1ڼФID&QQQ%$$xS20B.\x+,"Um^ՇK'Hcхz
TN;w 2 R>fF$ͫp%2 5hej$o=#'޻웏cTyU.RK*5kָ/]s
~^~xKص'j>\`~iI?x%0򸠠bbbر8FUWh(ak׮TRR"W^O>DRޚf;v9mHFUW򑴶ƏO555
~Æ !FC_}<%"z饗Iڽe52`ƌ}9rDKfX믿$%'|R+LivҀԲwjdR',,8p ݡstIyHD_
Sb8WA;@-{&"OT֯}'دACL&=SJ|]T]wE/5}5deDB6l]rEa_ZX%___Yuz
4j,Pʾm"(_ кuk?%INNM:9;9RЩ"HNN+&EoӰm/4AP@P/3D٩ƍ)!!P:DEEw}'9_'???>8f(0QVhJYP+F~ae`4ߧ An~̙3LR^pGk֬nݺH^ͫpa(RXB YfI
^ClSO˗%{uu5-Yw﮴R֊ͫpup2$$$%P|@[Vø}אziL:tY8@u@) @,F$/RSSC֭׮WsM\ahذa|rهl޼"""H/g)hi+%4UA@,KPXTVu]'tK=ztKWF!C… )33SL&5k,ơLK٪i>\}b2**V^-TTT_;aIBcY},R>}駟UVQqqb?rի6*?PYL6Iͥ` gMDl6cԩl+8~8#++ ())i䇝a!44ر#ѩS' \s 鬪;#s炈 m
xx]Դ^CY)E@ϗBee}\ڵkW`ǖ2t m N+.*k!66/^,ڻOScÆ 4`zp,eu
v
Jm7UI/<yR {v yyypBѣZ5R2Yc)+C*|sCc<t_&eھD۶mq"6OGJF .D^^qA<x{7yN{5h *X@^Ca8P/*kdKYh,_I'͐x쨘h(<<\61ԫW/WOǜB^A)F(P߈hn
!%C-A <(Q2ed'1j1sLEdPaaWP0@*TJ~1n6'$@OPxҐWP#gU,Pe~˗idȚYԣqfrBKPqa
ŋK.L_|Z `&6Û~0BJJJ 6Z8իWS޽ Puђg_+EUWMx![Faݛ,YBEEE )33,X@۷'?[{胫KVc7 4a/ܹsTYYIw9skG*:MEMoK7*E_aPxx8z쉮]}GXXL&򐕕3gٳPSSj/* OV:W{%7 ~UX)u=X_tҾ$%`#?T
s p @g5REMUMR !4s1WP}w'B>.^dm):&ckx|;!>-BLjrTN
w'T~=y4}>^1)wjX,ikj^AJ$u#XƒWPM$#i5M4xWP͉~0A=qYi%oքPP!D  ~E{LXb)mj^A]?G'x2d8`?;ЌWP-_b{<^醴5yxiix'vxQxQxQxQxQxQy֎IENDB`