[PATCH 4/4] doc: rename "Wayland" to "publican"
Peter Hutterer
peter.hutterer at who-t.net
Mon Apr 1 18:09:02 PDT 2013
This directory was called Wayland during my early tries with publican where
the source layout was different and it needed to be set to the same name as
the publican output directory. This reason doesn't exist anymore, so re-name
it to publican to make it more obvious what's hiding in here.
Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---
configure.ac | 2 +-
doc/Makefile.am | 2 +-
doc/Wayland/.gitignore | 3 -
doc/Wayland/Makefile.am | 134 ------
doc/Wayland/doxygen-to-publican.xsl | 166 --------
doc/Wayland/protocol-interfaces-to-docbook.xsl | 56 ---
doc/Wayland/protocol-to-docbook.xsl | 136 ------
doc/Wayland/publican.cfg | 8 -
doc/Wayland/sources/Architecture.xml | 330 ---------------
doc/Wayland/sources/Author_Group.xml | 16 -
doc/Wayland/sources/Book_Info.xml | 48 ---
doc/Wayland/sources/Compositors.xml | 158 -------
doc/Wayland/sources/Foreword.xml | 29 --
doc/Wayland/sources/Introduction.xml | 116 ------
doc/Wayland/sources/Library.xml | 32 --
doc/Wayland/sources/Preface.xml | 20 -
doc/Wayland/sources/Protocol.xml | 456 ---------------------
doc/Wayland/sources/Wayland.ent | 4 -
doc/Wayland/sources/Wayland.xml | 16 -
doc/Wayland/sources/images/icon.svg | 19 -
.../sources/images/wayland-architecture.png | Bin 29162 -> 0 bytes
doc/Wayland/sources/images/wayland.png | Bin 5649 -> 0 bytes
doc/Wayland/sources/images/x-architecture.png | Bin 37306 -> 0 bytes
doc/publican/.gitignore | 3 +
doc/publican/Makefile.am | 134 ++++++
doc/publican/doxygen-to-publican.xsl | 166 ++++++++
doc/publican/protocol-interfaces-to-docbook.xsl | 56 +++
doc/publican/protocol-to-docbook.xsl | 136 ++++++
doc/publican/publican.cfg | 8 +
doc/publican/sources/Architecture.xml | 330 +++++++++++++++
doc/publican/sources/Author_Group.xml | 16 +
doc/publican/sources/Book_Info.xml | 48 +++
doc/publican/sources/Compositors.xml | 158 +++++++
doc/publican/sources/Foreword.xml | 29 ++
doc/publican/sources/Introduction.xml | 116 ++++++
doc/publican/sources/Library.xml | 32 ++
doc/publican/sources/Preface.xml | 20 +
doc/publican/sources/Protocol.xml | 456 +++++++++++++++++++++
doc/publican/sources/Wayland.ent | 4 +
doc/publican/sources/Wayland.xml | 16 +
doc/publican/sources/images/icon.svg | 19 +
.../sources/images/wayland-architecture.png | Bin 0 -> 29162 bytes
doc/publican/sources/images/wayland.png | Bin 0 -> 5649 bytes
doc/publican/sources/images/x-architecture.png | Bin 0 -> 37306 bytes
44 files changed, 1749 insertions(+), 1749 deletions(-)
delete mode 100644 doc/Wayland/.gitignore
delete mode 100644 doc/Wayland/Makefile.am
delete mode 100644 doc/Wayland/doxygen-to-publican.xsl
delete mode 100644 doc/Wayland/protocol-interfaces-to-docbook.xsl
delete mode 100644 doc/Wayland/protocol-to-docbook.xsl
delete mode 100644 doc/Wayland/publican.cfg
delete mode 100644 doc/Wayland/sources/Architecture.xml
delete mode 100644 doc/Wayland/sources/Author_Group.xml
delete mode 100644 doc/Wayland/sources/Book_Info.xml
delete mode 100644 doc/Wayland/sources/Compositors.xml
delete mode 100644 doc/Wayland/sources/Foreword.xml
delete mode 100644 doc/Wayland/sources/Introduction.xml
delete mode 100644 doc/Wayland/sources/Library.xml
delete mode 100644 doc/Wayland/sources/Preface.xml
delete mode 100644 doc/Wayland/sources/Protocol.xml
delete mode 100644 doc/Wayland/sources/Wayland.ent
delete mode 100644 doc/Wayland/sources/Wayland.xml
delete mode 100644 doc/Wayland/sources/images/icon.svg
delete mode 100644 doc/Wayland/sources/images/wayland-architecture.png
delete mode 100644 doc/Wayland/sources/images/wayland.png
delete mode 100644 doc/Wayland/sources/images/x-architecture.png
create mode 100644 doc/publican/.gitignore
create mode 100644 doc/publican/Makefile.am
create mode 100644 doc/publican/doxygen-to-publican.xsl
create mode 100644 doc/publican/protocol-interfaces-to-docbook.xsl
create mode 100644 doc/publican/protocol-to-docbook.xsl
create mode 100644 doc/publican/publican.cfg
create mode 100644 doc/publican/sources/Architecture.xml
create mode 100644 doc/publican/sources/Author_Group.xml
create mode 100644 doc/publican/sources/Book_Info.xml
create mode 100644 doc/publican/sources/Compositors.xml
create mode 100644 doc/publican/sources/Foreword.xml
create mode 100644 doc/publican/sources/Introduction.xml
create mode 100644 doc/publican/sources/Library.xml
create mode 100644 doc/publican/sources/Preface.xml
create mode 100644 doc/publican/sources/Protocol.xml
create mode 100644 doc/publican/sources/Wayland.ent
create mode 100644 doc/publican/sources/Wayland.xml
create mode 100644 doc/publican/sources/images/icon.svg
create mode 100644 doc/publican/sources/images/wayland-architecture.png
create mode 100644 doc/publican/sources/images/wayland.png
create mode 100644 doc/publican/sources/images/x-architecture.png
diff --git a/configure.ac b/configure.ac
index 9596f41..db0855e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -121,7 +121,7 @@ AC_CONFIG_FILES([Makefile
cursor/wayland-cursor.pc
cursor/wayland-cursor-uninstalled.pc
doc/Makefile
- doc/Wayland/Makefile
+ doc/publican/Makefile
doc/doxygen/Makefile
doc/man/Makefile
src/Makefile
diff --git a/doc/Makefile.am b/doc/Makefile.am
index b437de8..1efd3e2 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -1 +1 @@
-SUBDIRS = doxygen Wayland man
+SUBDIRS = doxygen publican man
diff --git a/doc/Wayland/.gitignore b/doc/Wayland/.gitignore
deleted file mode 100644
index c1656e7..0000000
--- a/doc/Wayland/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-Wayland
-en-US/
-publican-copy.cfg
diff --git a/doc/Wayland/Makefile.am b/doc/Wayland/Makefile.am
deleted file mode 100644
index 5b66825..0000000
--- a/doc/Wayland/Makefile.am
+++ /dev/null
@@ -1,134 +0,0 @@
-# Documentation is built with publican
-# https://fedorahosted.org/publican/
-# Publican takes docbook-style input files and compiles them to various
-# output formats.
-#
-# How this build works:
-# * the main target is Wayland, documentation ends up in $(builddir)/Wayland/
-# * hand-written chapters are located in sources
-# Publican does not take a source path, so to support out-of-tree builds
-# these are copied to $(builddir)/en-US which is the actual directory
-# Publican uses.
-# * ProtocolSpec.xml is generated from $(top_srcdir)/protocol/wayland.xml,
-# changed into docbook via XSLT and saved in $(builddir)/en-US/
-# * ProtocolInterfaces.xml, same as above, uses a different XSLT
-# * WaylandClientAPI.xml is generated from the doxygen output and saved in
-# $(builddir)/en-US
-# * WaylandServerAPI.xml is generated from the doxygen output and saved in
-# $(builddir)/en-US
-# * run Publican on en-US
-publican_sources = \
- $(srcdir)/sources/Wayland.ent \
- $(srcdir)/sources/Wayland.xml \
- $(srcdir)/sources/Book_Info.xml \
- $(srcdir)/sources/Author_Group.xml \
- $(srcdir)/sources/Foreword.xml \
- $(srcdir)/sources/Preface.xml \
- $(srcdir)/sources/Introduction.xml \
- $(srcdir)/sources/Architecture.xml \
- $(srcdir)/sources/Protocol.xml \
- $(srcdir)/sources/Library.xml \
- $(srcdir)/sources/Compositors.xml \
- $(srcdir)/sources/images/icon.svg \
- $(srcdir)/sources/images/wayland-architecture.png \
- $(srcdir)/sources/images/wayland.png \
- $(srcdir)/sources/images/x-architecture.png
-
-if HAVE_PUBLICAN
-if HAVE_XSLTPROC
-noinst_DATA = Wayland $(publican_targets)
-pubdir = $(docdir)/Wayland/en-US
-
-publican_targets = $(publican_sources:$(srcdir)/sources%=$(builddir)/en-US%) \
- en-US/ProtocolSpec.xml en-US/ProtocolInterfaces.xml \
- en-US/WaylandClientAPI.xml en-US/WaylandServerAPI.xml
-
-# The Protocol.xml is purely generated and required before running publican
-en-US/ProtocolSpec.xml: $(top_srcdir)/protocol/wayland.xml $(srcdir)/protocol-to-docbook.xsl
- $(AM_V_GEN)$(MKDIR_P) en-US/images
- $(AM_V_GEN)$(XSLTPROC) $(srcdir)/protocol-to-docbook.xsl \
- $(top_srcdir)/protocol/wayland.xml > en-US/ProtocolSpec.xml
-
-en-US/ProtocolInterfaces.xml: $(top_srcdir)/protocol/wayland.xml $(srcdir)/protocol-interfaces-to-docbook.xsl
- $(AM_V_GEN)$(MKDIR_P) en-US/images
- $(AM_V_GEN)$(XSLTPROC) $(srcdir)/protocol-interfaces-to-docbook.xsl \
- $(top_srcdir)/protocol/wayland.xml > en-US/ProtocolInterfaces.xml
-
-combine_xml: server client
-
-# * we don't want wayland-{server|client}_8h.xml to avoid duplicating output methods,
-# move it out of the way first.
-# * use doxygen's combine.xslt to merge the xml files into one single file
-# * move wayland-<foo>_8h.xml back to its original location
-server client:
- $(AM_V_GEN)mv $(top_builddir)/doc/doxygen/xml/$@/wayland-$@_8h.xml \
- $(top_builddir)/doc/doxygen/xml/
- $(AM_V_GEN)$(XSLTPROC) $(top_builddir)/doc/doxygen/xml/$@/combine.xslt \
- $(top_builddir)/doc/doxygen/xml/$@/index.xml > \
- $(top_builddir)/doc/doxygen/xml/$@/$@API.xml
- $(AM_V_GEN)mv $(top_builddir)/doc/doxygen/xml/wayland-$@_8h.xml \
- $(top_builddir)/doc/doxygen/xml/$@
-
-# WaylandClientAPI.xml:
-# merge doxygen xml files into one single file (see combine_xml), then transform the combined XML file into docbook format
-en-US/WaylandClientAPI.xml: combine_xml $(top_builddir)/doc/doxygen/xml/client/index.xml $(srcdir)/doxygen-to-publican.xsl
- $(AM_V_GEN)$(XSLTPROC) --stringparam which Client $(srcdir)/doxygen-to-publican.xsl \
- $(top_builddir)/doc/doxygen/xml/client/clientAPI.xml > en-US/WaylandClientAPI.xml
-
-# WaylandServerAPI.xml: see WaylandClientAPI.xml
-en-US/WaylandServerAPI.xml: combine_xml $(top_builddir)/doc/doxygen/xml/client/index.xml $(srcdir)/doxygen-to-publican.xsl
- $(AM_V_GEN)$(XSLTPROC) --stringparam which Server $(srcdir)/doxygen-to-publican.xsl \
- $(top_builddir)/doc/doxygen/xml/server/serverAPI.xml > en-US/WaylandServerAPI.xml
-
-# Copy the sources source files into en-US destination
-# This is required for out-of-source-tree build as publican does not allow us
-# to specify the location of the source code.
-$(builddir)/en-US/%: $(srcdir)/sources/% en-US/ProtocolSpec.xml en-US/ProtocolInterfaces.xml en-US/WaylandClientAPI.xml $(publican_sources)
- $(AM_V_GEN)cp -f $< $@
- $(AM_V_GEN)chmod a+w $@
-
-# Run publican for the builddir on the generated (or copied) source
-# The output formats are generated in the Wayland sub directory. Also, we need
-# to use a tmp publican.cfg cause 'publican rename' modifies the original.
-Wayland: $(publican_targets)
- $(AM_V_GEN)cp -f $(srcdir)/publican.cfg $(builddir)/publican-copy.cfg
- $(AM_V_GEN)$(PUBLICAN) rename --name Wayland \
- --version "$(WAYLAND_VERSION_MAJOR).$(WAYLAND_VERSION_MINOR)" \
- --config $(builddir)/publican-copy.cfg
- $(AM_V_GEN)$(PUBLICAN) build --quiet --lang en-US --format html,pdf \
- --config $(builddir)/publican-copy.cfg
- @touch Wayland
-
-CLEANFILES = en-US/ProtocolSpec.xml en-US/ProtocolInterfaces.xml en-US/WaylandClientAPI.xml $(publican_targets)
-
-clean-local:
- $(AM_V_at)rm -fr $(builddir)/en-US
- $(AM_V_at)rm -fr $(builddir)/Wayland
- $(AM_V_at)rm -fr $(builddir)/publican-copy.cfg
-
-install-data-local:
- test -z "$(pubdir)/html/Common_Content/css" || $(mkdir_p) "$(DESTDIR)$(pubdir)/html/Common_Content/css"
- test -z "$(pubdir)/html/Common_Content/images" || $(mkdir_p) "$(DESTDIR)$(pubdir)/html/Common_Content/images"
- test -z "$(pubdir)/html/images" || $(mkdir_p) "$(DESTDIR)$(pubdir)/html/images"
- test -z "$(pubdir)/pdf" || $(mkdir_p) "$(DESTDIR)$(pubdir)/pdf"
- test -z "$(pubdir)/xml/Common_Content/css" || $(mkdir_p) "$(DESTDIR)$(pubdir)/xml/Common_Content/css"
- test -z "$(pubdir)/xml/Common_Content/images" || $(mkdir_p) "$(DESTDIR)$(pubdir)/xml/Common_Content/images"
- test -z "$(pubdir)/xml/images" || $(mkdir_p) "$(DESTDIR)$(pubdir)/xml/images"
- list=`find $(builddir)/Wayland/en-US -type f -not -path '$(builddir)/Wayland/en-US/xml_tmp*'`; \
- for p in $$list; do \
- echo " $(INSTALL_DATA) '$$p' '$(DESTDIR)$(docdir)/$$p'"; \
- $(INSTALL_DATA) "$$p" "$(DESTDIR)$(docdir)/$$p"; \
- done;
-
-uninstall-local:
- @if test -n $(DESTDIR)$(docdir); then \
- if test -d $(DESTDIR)$(docdir); then \
- echo " rm -fr $(DESTDIR)$(docdir)/Wayland;"; \
- rm -fr $(DESTDIR)$(docdir)/Wayland; \
- fi; \
- fi;
-
-endif
-endif
-
-EXTRA_DIST = $(publican_sources) publican.cfg protocol-to-docbook.xsl protocol-interfaces-to-docbook.xsl doxygen-to-publican.xsl
diff --git a/doc/Wayland/doxygen-to-publican.xsl b/doc/Wayland/doxygen-to-publican.xsl
deleted file mode 100644
index 2bd677e..0000000
--- a/doc/Wayland/doxygen-to-publican.xsl
+++ /dev/null
@@ -1,166 +0,0 @@
-<?xml version="1.0" ?>
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-<xsl:output method="xml" encoding="UTF-8" indent="yes" />
-<xsl:param name="which" />
-
-<xsl:template match="/">
- <!-- insert docbook's DOCTYPE blurb -->
- <xsl:text disable-output-escaping = "yes"><![CDATA[
-<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
- <!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent">
-%BOOK_ENTITIES;
-]>
-]]></xsl:text>
-
- <section id="sect-Library-$which">
- <xsl:attribute name="id">sect-Library-<xsl:value-of select="$which"/></xsl:attribute>
- <title><xsl:value-of select="$which"/> API</title>
- <para>Following is the Wayland library classes for the <xsl:value-of select="$which"/>
- (<emphasis>libwayland-<xsl:value-of select="translate($which, 'SC', 'sc')"/></emphasis>).
- Note that most of the procedures are related with IPC, which is the main responsibility of
- the library.
- </para>
-
- <xsl:if test="/doxygen/compounddef[@kind='class']">
- <para>
- <variablelist>
- <xsl:apply-templates select="/doxygen/compounddef" />
- </variablelist>
- </para>
- </xsl:if>
-
- <para>Methods for the respective classes.</para>
-
- <para>
- <variablelist>
- <xsl:apply-templates select="/doxygen/compounddef/sectiondef/memberdef" />
- </variablelist>
- </para>
- </section>
-</xsl:template>
-
-<xsl:template match="parameteritem">
- <varlistentry>
- <term>
- <xsl:value-of select="parameternamelist/parametername"/>
- </term>
- <listitem>
- <para>
- <xsl:value-of select="parameterdescription/para"/>
- </para>
- </listitem>
- </varlistentry>
-</xsl:template>
-
-<xsl:template match="parameterlist">
- <xsl:if test="parameteritem">
- <variablelist>
- <xsl:apply-templates select="parameteritem" />
- </variablelist>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="ref">
- <emphasis><xsl:value-of select="." /></emphasis>
-</xsl:template>
-
-<xsl:template match="simplesect[@kind='return']">
- <variablelist>
- <varlistentry>
- <term>Returns:</term>
- <listitem>
- <para>
- <xsl:value-of select="." />
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
-</xsl:template>
-
-<xsl:template match="simplesect[@kind='see']">
- <itemizedlist>
- <listitem>
- <para>
- See also:
- <xsl:for-each select="para/ref">
- <emphasis><xsl:value-of select="."/><xsl:text> </xsl:text></emphasis>
- </xsl:for-each>
- </para>
- </listitem>
- </itemizedlist>
-</xsl:template>
-
-<xsl:template match="simplesect[@kind='since']">
- <itemizedlist>
- <listitem>
- <para>
- Since: <xsl:value-of select="para"/>
- </para>
- </listitem>
- </itemizedlist>
-</xsl:template>
-
-<xsl:template match="simplesect[@kind='note']">
- <emphasis>Note: <xsl:value-of select="."/></emphasis>
-</xsl:template>
-
-<xsl:template match="programlisting">
- <programlisting><xsl:value-of select="."/></programlisting>
-</xsl:template>
-
-<!-- this opens a para for each detaileddescription/para. I could not find a
- way to extract the right text for the description from the
- source otherwise. Downside: we can't use para for return value, "see
- also", etc. because they're already inside a para. So they're lists.
-
- It also means we don't control the order of when something is added to
- the output, it matches the input file
- -->
-<xsl:template match="detaileddescription/para">
- <para><xsl:apply-templates /></para>
-</xsl:template>
-
-<xsl:template match="detaileddescription">
- <xsl:apply-templates select="para" />
-</xsl:template>
-
-<!-- methods -->
-<xsl:template match="memberdef" >
- <xsl:if test="@kind = 'function' and @static = 'no'">
- <varlistentry>
- <term>
- <xsl:value-of select="name"/>
- - <xsl:value-of select="briefdescription" />
- </term>
- <listitem>
- <para>
- <synopsis>
- <xsl:value-of select="definition"/><xsl:value-of select="argsstring"/>
- </synopsis>
- </para>
- <xsl:apply-templates select="detaileddescription" />
- </listitem>
- </varlistentry>
- </xsl:if>
-</xsl:template>
-
-<!-- classes -->
-<xsl:template match="compounddef" >
- <xsl:if test="@kind = 'class' ">
- <varlistentry>
- <term>
- <xsl:value-of select="compoundname" />
- <xsl:if test="briefdescription">
- - <xsl:value-of select="briefdescription" />
- </xsl:if>
- </term>
-
- <listitem>
- <xsl:for-each select="detaileddescription/para">
- <para><xsl:value-of select="." /></para>
- </xsl:for-each>
- </listitem>
- </varlistentry>
- </xsl:if>
-</xsl:template>
-</xsl:stylesheet>
diff --git a/doc/Wayland/protocol-interfaces-to-docbook.xsl b/doc/Wayland/protocol-interfaces-to-docbook.xsl
deleted file mode 100644
index ad6bdda..0000000
--- a/doc/Wayland/protocol-interfaces-to-docbook.xsl
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" ?>
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
-<xsl:output method="xml" encoding="UTF-8" indent="yes" />
-
-<xsl:template match="/">
- <!-- insert docbook's DOCTYPE blurb -->
- <xsl:text disable-output-escaping = "yes"><![CDATA[
-<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
- <!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent">
-%BOOK_ENTITIES;
-]>
-]]></xsl:text>
-
- <section id="sect-Protocol-Interfaces">
- <title>Interfaces</title>
- <para>
- The protocol includes several interfaces which are used for
- interacting with the server. Each interface provides requests,
- events, and errors (which are really just special events) as described
- above. Specific compositor implementations may have their own
- interfaces provided as extensions, but there are several which are
- always expected to be present.
- </para>
-
- <para>
- Core interfaces:
- <variablelist>
- <xsl:apply-templates select="protocol/interface" />
- </variablelist>
- </para>
- </section>
-</xsl:template>
-
-<!-- Interfaces summary -->
-<xsl:template match="interface" >
-<varlistentry>
- <xsl:attribute name="id">protocol-summary-<xsl:value-of select="name()"/>-<xsl:value-of select="@name" />
- </xsl:attribute>
- <term>
- <xsl:value-of select="@name" />
- <xsl:if test="description/@summary">
- - <xsl:value-of select="description/@summary" />
- </xsl:if>
- </term>
- <listitem>
- <para>
- <xsl:value-of select="description"/>
- </para>
- </listitem>
- </varlistentry>
-
-</xsl:template>
-
-</xsl:stylesheet>
-<!-- vim: set expandtab shiftwidth=2: -->
diff --git a/doc/Wayland/protocol-to-docbook.xsl b/doc/Wayland/protocol-to-docbook.xsl
deleted file mode 100644
index 939ba40..0000000
--- a/doc/Wayland/protocol-to-docbook.xsl
+++ /dev/null
@@ -1,136 +0,0 @@
-<?xml version="1.0" ?>
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
-<xsl:output method="xml" encoding="UTF-8" indent="yes" />
-
-<xsl:template match="/">
- <!-- insert docbook's DOCTYPE blurb -->
- <xsl:text disable-output-escaping = "yes"><![CDATA[
-<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
- <!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent">
-%BOOK_ENTITIES;
-]>
-]]></xsl:text>
-
- <appendix id="appe-Wayland-Protocol">
- <title>Wayland Protocol Specification</title>
- <xsl:apply-templates select="protocol/copyright" />
-
- <xsl:apply-templates select="protocol/interface" />
- </appendix>
-</xsl:template>
-
-<!-- Break text blocks separated by two new lines into paragraphs -->
-<xsl:template name="break">
- <xsl:param name="text" />
- <xsl:param name="linebreak" select="'
'" />
- <xsl:choose>
- <xsl:when test="contains($text,$linebreak)">
- <para>
- <xsl:value-of select="substring-before($text,$linebreak)" />
- </para>
- <xsl:call-template name="break">
- <xsl:with-param name="text" select="substring-after($text,$linebreak)" />
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <para><xsl:value-of select="$text" /></para>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<!-- Copyright blurb -->
-<xsl:template match="copyright">
- <para>
- <literallayout>
- <xsl:value-of select="." disable-output-escaping="yes"/>
- </literallayout>
- </para>
-</xsl:template>
-
-<!-- Interface descriptions -->
-<xsl:template match="interface" >
- <section>
- <xsl:attribute name="id">protocol-spec-<xsl:value-of select="name()"/>-<xsl:value-of select="@name" />
- </xsl:attribute>
- <title>
- <xsl:value-of select="@name" />
- <!-- only show summary if it exists -->
- <xsl:if test="description/@summary">
- - <xsl:value-of select="description/@summary" />
- </xsl:if>
- </title>
- <xsl:call-template name="break">
- <xsl:with-param name="text" select="description" />
- </xsl:call-template>
- <xsl:if test="request">
- <section>
- <title>Requests provided by <xsl:value-of select="@name" /></title>
- <xsl:apply-templates select="request" />
- </section>
- </xsl:if>
- <xsl:if test="event">
- <section>
- <title>Events provided by <xsl:value-of select="@name" /></title>
- <xsl:apply-templates select="event" />
- </section>
- </xsl:if>
- <xsl:if test="enum">
- <section>
- <title>Enums provided by <xsl:value-of select="@name" /></title>
- <xsl:apply-templates select="enum" />
- </section>
- </xsl:if>
- </section>
-</xsl:template>
-
-<!-- table contents for request/event arguments or enum values -->
-<xsl:template match="arg|entry">
- <varlistentry>
- <term><xsl:value-of select="@name"/></term>
- <listitem>
- <xsl:if test="name() = 'arg'" >
- <para>Type: <xsl:value-of select="@type"/></para>
- </xsl:if>
- <xsl:if test="name() = 'entry'" >
- <para>Value: <xsl:value-of select="@value"/></para>
- </xsl:if>
- <xsl:if test="@summary" >
- <para>
- <xsl:value-of select="@summary"/>
- </para>
- </xsl:if>
- </listitem>
- </varlistentry>
-</xsl:template>
-
-<!-- Request/event list -->
-<xsl:template match="request|event|enum">
- <section>
- <xsl:attribute name="id">protocol-spec-interface-<xsl:value-of select="../@name"/>-<xsl:value-of select="name()"/>-<xsl:value-of select="@name"/></xsl:attribute>
- <title>
- <xsl:value-of select="../@name"/>::<xsl:value-of select="@name" />
- <xsl:if test="description/@summary">
- - <xsl:value-of select="description/@summary" />
- </xsl:if>
- </title>
- <xsl:call-template name="break">
- <xsl:with-param name="text" select="description" />
- </xsl:call-template>
- <xsl:if test="arg">
- <variablelist>
- <title><xsl:value-of select="../@name"/>::<xsl:value-of select="@name" /> arguments</title>
- <xsl:apply-templates select="arg"/>
- </variablelist>
- </xsl:if>
- <xsl:if test="entry">
- <variablelist>
- <title><xsl:value-of select="../@name"/>::<xsl:value-of select="@name" /> values</title>
- <xsl:apply-templates select="entry"/>
- </variablelist>
- </xsl:if>
- </section>
-</xsl:template>
-</xsl:stylesheet>
-
-<!-- vim: set expandtab shiftwidth=2: -->
diff --git a/doc/Wayland/publican.cfg b/doc/Wayland/publican.cfg
deleted file mode 100644
index d950584..0000000
--- a/doc/Wayland/publican.cfg
+++ /dev/null
@@ -1,8 +0,0 @@
-# Config::Simple 4.59
-# Fri Feb 24 09:36:50 2012
-
-xml_lang: "en-US"
-type: Book
-brand: common
-tmp_dir: Wayland
-toc_section_depth: 1
diff --git a/doc/Wayland/sources/Architecture.xml b/doc/Wayland/sources/Architecture.xml
deleted file mode 100644
index 5b9300f..0000000
--- a/doc/Wayland/sources/Architecture.xml
+++ /dev/null
@@ -1,330 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent">
-%BOOK_ENTITIES;
-]>
-<chapter id="chap-Wayland-Architecture">
- <title>Wayland Architecture</title>
- <section id="sect-Wayland-Architecture-wayland_architecture">
- <title>X vs. Wayland Architecture</title>
- <para>
- A good way to understand the Wayland architecture
- and how it is different from X is to follow an event
- from the input device to the point where the change
- it affects appears on screen.
- </para>
- <para>
- This is where we are now with X:
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/x-architecture.png" format="PNG" />
- </imageobject>
- <textobject>
- <phrase>
- X architecture diagram
- </phrase>
- </textobject>
- </mediaobject>
- <para>
- <orderedlist>
- <listitem>
- <para>
- The kernel gets an event from an input
- device and sends it to X through the evdev
- input driver. The kernel does all the hard
- work here by driving the device and
- translating the different device specific
- event protocols to the linux evdev input
- event standard.
- </para>
- </listitem>
- <listitem>
- <para>
- The X server determines which window the
- event affects and sends it to the clients
- that have selected for the event in question
- on that window. The X server doesn't
- actually know how to do this right, since
- the window location on screen is controlled
- by the compositor and may be transformed in
- a number of ways that the X server doesn't
- understand (scaled down, rotated, wobbling,
- etc).
- </para>
- </listitem>
- <listitem>
- <para>
- The client looks at the event and decides
- what to do. Often the UI will have to change
- in response to the event - perhaps a check
- box was clicked or the pointer entered a
- button that must be highlighted. Thus the
- client sends a rendering request back to the
- X server.
- </para>
- </listitem>
- <listitem>
- <para>
- When the X server receives the rendering
- request, it sends it to the driver to let it
- program the hardware to do the rendering.
- The X server also calculates the bounding
- region of the rendering, and sends that to
- the compositor as a damage event.
- </para>
- </listitem>
- <listitem>
- <para>
- The damage event tells the compositor that
- something changed in the window and that it
- has to recomposite the part of the screen
- where that window is visible. The compositor
- is responsible for rendering the entire
- screen contents based on its scenegraph and
- the contents of the X windows. Yet, it has
- to go through the X server to render this.
- </para>
- </listitem>
- <listitem>
- <para>
- The X server receives the rendering requests
- from the compositor and either copies the
- compositor back buffer to the front buffer
- or does a pageflip. In the general case, the
- X server has to do this step so it can
- account for overlapping windows, which may
- require clipping and determine whether or
- not it can page flip. However, for a
- compositor, which is always fullscreen, this
- is another unnecessary context switch.
- </para>
- </listitem>
- </orderedlist>
- </para>
- <para>
- As suggested above, there are a few problems with this
- approach. The X server doesn't have the information to
- decide which window should receive the event, nor can it
- transform the screen coordinates to window local
- coordinates. And even though X has handed responsibility for
- the final painting of the screen to the compositing manager,
- X still controls the front buffer and modesetting. Most of
- the complexity that the X server used to handle is now
- available in the kernel or self contained libraries (KMS,
- evdev, mesa, fontconfig, freetype, cairo, Qt etc). In
- general, the X server is now just a middle man that
- introduces an extra step between applications and the
- compositor and an extra step between the compositor and the
- hardware.
- </para>
- <para>
- In Wayland the compositor is the display server. We transfer
- the control of KMS and evdev to the compositor. The Wayland
- protocol lets the compositor send the input events directly
- to the clients and lets the client send the damage event
- directly to the compositor:
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/wayland-architecture.png" format="PNG" />
- </imageobject>
- <textobject>
- <phrase>
- Wayland architecture diagram
- </phrase>
- </textobject>
- </mediaobject>
- <para>
- <orderedlist>
- <listitem>
- <para>
- The kernel gets an event and sends
- it to the compositor. This
- is similar to the X case, which is
- great, since we get to reuse all the
- input drivers in the kernel.
- </para>
- </listitem>
- <listitem>
- <para>
- The compositor looks through its
- scenegraph to determine which window
- should receive the event. The
- scenegraph corresponds to what's on
- screen and the compositor
- understands the transformations that
- it may have applied to the elements
- in the scenegraph. Thus, the
- compositor can pick the right window
- and transform the screen coordinates
- to window local coordinates, by
- applying the inverse
- transformations. The types of
- transformation that can be applied
- to a window is only restricted to
- what the compositor can do, as long
- as it can compute the inverse
- transformation for the input events.
- </para>
- </listitem>
- <listitem>
- <para>
- As in the X case, when the client
- receives the event, it updates the
- UI in response. But in the Wayland
- case, the rendering happens in the
- client, and the client just sends a
- request to the compositor to
- indicate the region that was
- updated.
- </para>
- </listitem>
- <listitem>
- <para>
- The compositor collects damage
- requests from its clients and then
- recomposites the screen. The
- compositor can then directly issue
- an ioctl to schedule a pageflip with
- KMS.
- </para>
- </listitem>
-
-
- </orderedlist>
- </para>
- </section>
- <section id="sect-Wayland-Architecture-wayland_rendering">
- <title>Wayland Rendering</title>
- <para>
- One of the details I left out in the above overview
- is how clients actually render under Wayland. By
- removing the X server from the picture we also
- removed the mechanism by which X clients typically
- render. But there's another mechanism that we're
- already using with DRI2 under X: direct rendering.
- With direct rendering, the client and the server
- share a video memory buffer. The client links to a
- rendering library such as OpenGL that knows how to
- program the hardware and renders directly into the
- buffer. The compositor in turn can take the buffer
- and use it as a texture when it composites the
- desktop. After the initial setup, the client only
- needs to tell the compositor which buffer to use and
- when and where it has rendered new content into it.
- </para>
-
- <para>
- This leaves an application with two ways to update its window contents:
- </para>
- <para>
- <orderedlist>
- <listitem>
- <para>
- Render the new content into a new buffer and tell the compositor
- to use that instead of the old buffer. The application can
- allocate a new buffer every time it needs to update the window
- contents or it can keep two (or more) buffers around and cycle
- between them. The buffer management is entirely under
- application control.
- </para>
- </listitem>
- <listitem>
- <para>
- Render the new content into the buffer that it previously
- told the compositor to to use. While it's possible to just
- render directly into the buffer shared with the compositor,
- this might race with the compositor. What can happen is that
- repainting the window contents could be interrupted by the
- compositor repainting the desktop. If the application gets
- interrupted just after clearing the window but before
- rendering the contents, the compositor will texture from a
- blank buffer. The result is that the application window will
- flicker between a blank window or half-rendered content. The
- traditional way to avoid this is to render the new content
- into a back buffer and then copy from there into the
- compositor surface. The back buffer can be allocated on the
- fly and just big enough to hold the new content, or the
- application can keep a buffer around. Again, this is under
- application control.
- </para>
- </listitem>
- </orderedlist>
- </para>
- <para>
- In either case, the application must tell the compositor
- which area of the surface holds new contents. When the
- application renders directly to the shared buffer, the
- compositor needs to be noticed that there is new content.
- But also when exchanging buffers, the compositor doesn't
- assume anything changed, and needs a request from the
- application before it will repaint the desktop. The idea
- that even if an application passes a new buffer to the
- compositor, only a small part of the buffer may be
- different, like a blinking cursor or a spinner.
- </para>
- </section>
- <section id="sect-Wayland-Architecture-wayland_hw_enabling">
- <title>Hardware Enabling for Wayland</title>
- <para>
- Typically, hardware enabling includes modesetting/display
- and EGL/GLES2. On top of that Wayland needs a way to share
- buffers efficiently between processes. There are two sides
- to that, the client side and the server side.
- </para>
- <para>
- On the client side we've defined a Wayland EGL platform. In
- the EGL model, that consists of the native types
- (EGLNativeDisplayType, EGLNativeWindowType and
- EGLNativePixmapType) and a way to create those types. In
- other words, it's the glue code that binds the EGL stack and
- its buffer sharing mechanism to the generic Wayland API. The
- EGL stack is expected to provide an implementation of the
- Wayland EGL platform. The full API is in the wayland-egl.h
- header. The open source implementation in the mesa EGL stack
- is in wayland-egl.c and platform_wayland.c.
- </para>
- <para>
- Under the hood, the EGL stack is expected to define a
- vendor-specific protocol extension that lets the client side
- EGL stack communicate buffer details with the compositor in
- order to share buffers. The point of the wayland-egl.h API
- is to abstract that away and just let the client create an
- EGLSurface for a Wayland surface and start rendering. The
- open source stack uses the drm Wayland extension, which lets
- the client discover the drm device to use and authenticate
- and then share drm (GEM) buffers with the compositor.
- </para>
- <para>
- The server side of Wayland is the compositor and core UX for
- the vertical, typically integrating task switcher, app
- launcher, lock screen in one monolithic application. The
- server runs on top of a modesetting API (kernel modesetting,
- OpenWF Display or similar) and composites the final UI using
- a mix of EGL/GLES2 compositor and hardware overlays if
- available. Enabling modesetting, EGL/GLES2 and overlays is
- something that should be part of standard hardware bringup.
- The extra requirement for Wayland enabling is the
- EGL_WL_bind_wayland_display extension that lets the
- compositor create an EGLImage from a generic Wayland shared
- buffer. It's similar to the EGL_KHR_image_pixmap extension
- to create an EGLImage from an X pixmap.
- </para>
- <para>
- The extension has a setup step where you have to bind the
- EGL display to a Wayland display. Then as the compositor
- receives generic Wayland buffers from the clients (typically
- when the client calls eglSwapBuffers), it will be able to
- pass the struct wl_buffer pointer to eglCreateImageKHR as
- the EGLClientBuffer argument and with EGL_WAYLAND_BUFFER_WL
- as the target. This will create an EGLImage, which can then
- be used by the compositor as a texture or passed to the
- modesetting code to use as an overlay plane. Again, this is
- implemented by the vendor specific protocol extension, which
- on the server side will receive the driver specific details
- about the shared buffer and turn that into an EGL image when
- the user calls eglCreateImageKHR.
- </para>
- </section>
-</chapter>
diff --git a/doc/Wayland/sources/Author_Group.xml b/doc/Wayland/sources/Author_Group.xml
deleted file mode 100644
index 2bdde62..0000000
--- a/doc/Wayland/sources/Author_Group.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent">
-%BOOK_ENTITIES;
-]>
-<authorgroup>
- <author>
- <firstname>Kristian</firstname>
- <surname>Høgsberg</surname>
- <affiliation>
- <orgname>Intel Corporation</orgname>
- </affiliation>
- <email>krh at bitplanet.net</email>
- </author>
-</authorgroup>
-
diff --git a/doc/Wayland/sources/Book_Info.xml b/doc/Wayland/sources/Book_Info.xml
deleted file mode 100644
index 87798e7..0000000
--- a/doc/Wayland/sources/Book_Info.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE bookinfo PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent">
-%BOOK_ENTITIES;
-]>
-<bookinfo id="book-Wayland-Wayland">
- <title>Wayland</title>
- <subtitle>The Wayland display server</subtitle>
- <productname>Documentation</productname>
- <productnumber>0.1</productnumber>
- <edition>1</edition>
- <pubsnumber>0</pubsnumber>
- <abstract>
- <para>
- Wayland is a protocol for a compositor to talk to
- its clients as well as a C library implementation of
- that protocol. The compositor can be a standalone
- display server running on Linux kernel modesetting
- and evdev input devices, an X application, or a
- Wayland client itself. The clients can be
- traditional applications, X servers (rootless or
- fullscreen) or other display servers.
- </para>
- </abstract>
- <corpauthor>
- <inlinemediaobject>
- <imageobject>
- <imagedata fileref="images/wayland.png" format="PNG" />
- </imageobject>
- <textobject>
- <phrase>
- Wayland logo
- </phrase>
- </textobject>
- </inlinemediaobject>
- </corpauthor>
-
- <legalnotice lang="en-US">
- <para>
- Copyright <trademark class="copyright"></trademark> &YEAR; &HOLDER; This
- material may only be distributed subject to the terms and conditions set
- forth in the GNU Free Documentation License (GFDL), V1.2 or later (the
- latest version is presently available at <ulink url="http://www.gnu.org/licenses/fdl.txt">http://www.gnu.org/licenses/fdl.txt</ulink>).
- </para>
- </legalnotice>
-
- <xi:include href="Author_Group.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
-</bookinfo>
diff --git a/doc/Wayland/sources/Compositors.xml b/doc/Wayland/sources/Compositors.xml
deleted file mode 100644
index e2bfa44..0000000
--- a/doc/Wayland/sources/Compositors.xml
+++ /dev/null
@@ -1,158 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Compositors">
- <title>Types of Compositors</title>
-
- <para>
- Different types of compositors may exist on different systems. For
- instance, a <emphasis>system compositor</emphasis> can be used for booting
- the system, handling multiple user switching, a possible console
- terminal emulator and so forth. A different compositor, a <emphasis>session
- compositor</emphasis>, would provide the actual desktop environment. There
- are many ways for different types of compositors to co-exist.
- </para>
- <para>
- In this section, we introduce three types of Wayland compositors relying on
- <emphasis>libwayland-server</emphasis>.
- </para>
-
- <section id="sect-Compositors-System-Compositor">
- <title>System Compositor</title>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- ties in with graphical boot
- </para>
- </listitem>
- <listitem>
- <para>
- hosts different types of session compositors
- </para>
- </listitem>
- <listitem>
- <para>
- lets us switch between multiple sessions (fast user switching,
- secure/personal desktop switching)
- </para>
- </listitem>
- <listitem>
- <para>
- multiseat
- </para>
- </listitem>
- <listitem>
- <para>
- linux implementation using libudev, egl, kms, evdev, cairo
- </para>
- </listitem>
- <listitem>
- <para>
- for fullscreen clients, the system compositor can reprogram the
- video scanout address to source from the client provided buffer.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
- <section id="sect-Compositors-Session-Compositor">
- <title>Session Compositor</title>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- nested under the system compositor. nesting is feasible because
- protocol is async, roundtrip would break nesting
- </para>
- </listitem>
- <listitem>
- <para>
- gnome-shell
- </para>
- </listitem>
- <listitem>
- <para>
- moblin
- </para>
- </listitem>
- <listitem>
- <para>
- compiz?
- </para>
- </listitem>
- <listitem>
- <para>
- kde compositor?
- </para>
- </listitem>
- <listitem>
- <para>
- text mode using vte
- </para>
- </listitem>
- <listitem>
- <para>
- rdp session
- </para>
- </listitem>
- <listitem>
- <para>
- Weston with X11 or Wayland backend is a session compositor nested
- in another session compositor.
- </para>
- </listitem>
- <listitem>
- <para>
- fullscreen X session under Wayland
- </para>
- </listitem>
- <listitem>
- <para>
- can run without system compositor, on the hw where it makes
- sense
- </para>
- </listitem>
- <listitem>
- <para>
- root window-less X server, bridging X windows into a Wayland
- session compositor
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
- <section id="sect-Compositors-Embedding-Compositor">
- <title>Embedding Compositor</title>
- <para>
- X11 lets clients embed windows from other clients, or lets client copy
- pixmap contents rendered by another client into their window. This is
- often used for applets in a panel, browser plugins and similar.
- Wayland doesn't directly allow this, but clients can communicate GEM
- buffer names out-of-band, for example, using d-bus or as command line
- arguments when the panel launches the applet. Another option is to
- use a nested Wayland instance. For this, the Wayland server will have
- to be a library that the host application links to. The host
- application will then pass the Wayland server socket name to the
- embedded application, and will need to implement the Wayland
- compositor interface. The host application composites the client
- surfaces as part of it's window, that is, in the web page or in the
- panel. The benefit of nesting the Wayland server is that it provides
- the requests the embedded client needs to inform the host about buffer
- updates and a mechanism for forwarding input events from the host
- application.
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- firefox embedding flash by being a special purpose compositor to
- the plugin
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
-</section>
diff --git a/doc/Wayland/sources/Foreword.xml b/doc/Wayland/sources/Foreword.xml
deleted file mode 100644
index eeb16cc..0000000
--- a/doc/Wayland/sources/Foreword.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
-"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent">
-%BOOK_ENTITIES;
-]>
-
-<preface>
- <title>Preface</title>
-
- <para>
- This document concerns the (i) Wayland architecture, (ii) Wayland model of
- operation and (iii) its library API. Wayland protocol specification is shown
- also in the Appendix. The document here is aimed at Wayland developers and
- who is looking for information how to program with it, but it is not meant
- primarily for applications developers.
- </para>
- <para>
- There have been many contributors to this document and, while this is the
- first edition only, many errors are expected to be found. We appreciate
- corrections.
- </para>
- <literallayout>
-Yours,
-
- the Wayland open-source community
- November 2012
- </literallayout>
-</preface>
diff --git a/doc/Wayland/sources/Introduction.xml b/doc/Wayland/sources/Introduction.xml
deleted file mode 100644
index b3b89e7..0000000
--- a/doc/Wayland/sources/Introduction.xml
+++ /dev/null
@@ -1,116 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent">
-%BOOK_ENTITIES;
-]>
-<chapter id="chap-Introduction">
- <title>Introduction</title>
- <section id="sect-Motivation">
- <title>Motivation</title>
- <para>
- Most of Linux and Unix-based systems rely on the X Window System (or
- simply <emphasis>X</emphasis>) as the low-level protocol for building
- bitmap graphics interfaces. On these systems, the X stack has grown to
- encompass functionality arguably belonging in client libraries,
- helper libraries, or the host operating system kernel. Support for
- things like PCI resource management, display configuration management,
- direct rendering, and memory management has been integrated into the X
- stack, imposing limitations like limited support for standalone
- applications, duplication in other projects (e.g. the Linux fb layer
- or the DirectFB project), and high levels of complexity for systems
- combining multiple elements (for example radeon memory map handling
- between the fb driver and X driver, or VT switching).
- </para>
- <para>
- Moreover, X has grown to incorporate modern features like offscreen
- rendering and scene composition, but subject to the limitations of the
- X architecture. For example, the X implementation of composition adds
- additional context switches and makes things like input redirection
- difficult.
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/x-architecture.png" format="PNG" />
- </imageobject>
- <textobject>
- <phrase>
- X architecture diagram
- </phrase>
- </textobject>
- </mediaobject>
- <para>
- The diagram above illustrates the central role of the X server and
- compositor in operations, and the steps required to get contents on to
- the screen.
- </para>
- <para>
- Over time, X developers came to understand the shortcomings of this
- approach and worked to split things up. Over the past several years,
- a lot of functionality has moved out of the X server and into
- client-side libraries or kernel drivers. One of the first components
- to move out was font rendering, with freetype and fontconfig providing
- an alternative to the core X fonts. Direct rendering OpenGL as a
- graphics driver in a client side library went through some iterations,
- ending up as DRI2, which abstracted most of the direct rendering
- buffer management from client code. Then cairo came along and provided
- a modern 2D rendering library independent of X, and compositing
- managers took over control of the rendering of the desktop as toolkits
- like GTK+ and Qt moved away from using X APIs for rendering. Recently,
- memory and display management have moved to the Linux kernel, further
- reducing the scope of X and its driver stack. The end result is a
- highly modular graphics stack.
- </para>
-
- </section>
-
- <section id="sect-Compositing-manager-display-server">
- <title>The compositing manager as the display server</title>
- <para>
- Wayland is a new display server and compositing protocol, and Weston
- is the implementation of this protocol which builds on top of all the
- components above. We are trying to distill out the functionality in
- the X server that is still used by the modern Linux desktop. This
- turns out to be not a whole lot. Applications can allocate their own
- off-screen buffers and render their window contents directly, using
- hardware accelerated libraries like libGL, or high quality software
- implementations like those found in Cairo. In the end, what’s needed
- is a way to present the resulting window surface for display, and a
- way to receive and arbitrate input among multiple clients. This is
- what Wayland provides, by piecing together the components already in
- the eco-system in a slightly different way.
- </para>
- <para>
- X will always be relevant, in the same way Fortran compilers and VRML
- browsers are, but it’s time that we think about moving it out of the
- critical path and provide it as an optional component for legacy
- applications.
- </para>
- <para>
- Overall, the philosophy of Wayland is to provide clients with a way to
- manage windows and how their contents is displayed. Rendering is left
- to clients, and system wide memory management interfaces are used to
- pass buffer handles between clients and the compositing manager.
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/wayland-architecture.png" format="PNG" />
- </imageobject>
- <textobject>
- <phrase>
- Wayland architecture diagram
- </phrase>
- </textobject>
- </mediaobject>
- <para>
- The figure above illustrates how Wayland clients interact with a
- Wayland server. Note that window management and composition are
- handled entirely in the server, significantly reducing complexity
- while marginally improving performance through reduced context
- switching. The resulting system is easier to build and extend than a
- similar X system, because often changes need only be made in one
- place. Or in the case of protocol extensions, two (rather than 3 or 4
- in the X case where window management and/or composition handling may
- also need to be updated).
- </para>
- </section>
-</chapter>
diff --git a/doc/Wayland/sources/Library.xml b/doc/Wayland/sources/Library.xml
deleted file mode 100644
index 8cfb3f0..0000000
--- a/doc/Wayland/sources/Library.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent">
-%BOOK_ENTITIES;
-]>
-<chapter id="chap-Library">
- <title>Wayland Library</title>
-
- <para>
- The open-source reference implementation of Wayland protocol is split in two
- C libraries, <emphasis>libwayland-server</emphasis> and
- <emphasis>libwayland-client</emphasis>. Their main
- responsibility is to handle the Inter-process communication
- (<emphasis>IPC</emphasis>) with each other, therefore guaranteeing the
- protocol objects marshaling and messages synchronization.
- </para>
-
- <para>
- This Chapter describes in detail each library's methods and their helpers,
- aiming implementors who can use for building Wayland clients and servers;
- respectively at <xref linkend="sect-Library-Client"/> and
- <xref linkend="sect-Library-Server"/>. The last
- <xref linkend="sect-Compositors"/>, gives an example how
- <emphasis>libwayland-server</emphasis> can be used for building different
- types of compositors.
- </para>
-
- <xi:include href="WaylandClientAPI.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
- <xi:include href="WaylandServerAPI.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
- <xi:include href="Compositors.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-</chapter>
diff --git a/doc/Wayland/sources/Preface.xml b/doc/Wayland/sources/Preface.xml
deleted file mode 100644
index 61720a9..0000000
--- a/doc/Wayland/sources/Preface.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
-"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent">
-%BOOK_ENTITIES;
-]>
-
-<preface>
- <title>Acknowledgments</title>
-
- <para>
- TODO: Kristian has to fill up this with one or two paragraphs and a small
- "thank you": http://en.wikipedia.org/wiki/Preface
- </para>
- <literallayout>
-Best,
-
- Kristian Høgsberg
- </literallayout>
-</preface>
diff --git a/doc/Wayland/sources/Protocol.xml b/doc/Wayland/sources/Protocol.xml
deleted file mode 100644
index 827b84a..0000000
--- a/doc/Wayland/sources/Protocol.xml
+++ /dev/null
@@ -1,456 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent">
-%BOOK_ENTITIES;
-]>
-<chapter id="chap-Protocol">
- <title>Wayland Protocol and Model of Operation</title>
- <section id="sect-Protocol-Basic-Principles">
- <title>Basic Principles</title>
- <para>
- The Wayland protocol is an asynchronous object oriented protocol. All
- requests are method invocations on some object. The request include
- an object id that uniquely identifies an object on the server. Each
- object implements an interface and the requests include an opcode that
- identifies which method in the interface to invoke.
- </para>
- <para>
- The server sends back events to the client, each event is emitted from
- an object. Events can be error conditions. The event includes the
- object id and the event opcode, from which the client can determine
- the type of event. Events are generated both in response to requests
- (in which case the request and the event constitutes a round trip) or
- spontaneously when the server state changes.
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- State is broadcast on connect, events are sent
- out when state changes. Clients must listen for
- these changes and cache the state.
- There is no need (or mechanism) to query server state.
- </para>
- </listitem>
- <listitem>
- <para>
- The server will broadcast the presence of a number of global objects,
- which in turn will broadcast their current state.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
- <section id="sect-Protocol-Code-Generation">
- <title>Code Generation</title>
- <para>
- The interfaces, requests and events are defined in
- <filename>protocol/wayland.xml</filename>.
- This xml is used to generate the function prototypes that can be used by
- clients and compositors.
- </para>
- <para>
- The protocol entry points are generated as inline functions which just
- wrap the <function>wl_proxy_*</function> functions. The inline functions aren't
- part of the library ABI and language bindings should generate their
- own stubs for the protocol entry points from the xml.
- </para>
- </section>
- <section id="sect-Protocol-Wire-Format">
- <title>Wire Format</title>
- <para>
- The protocol is sent over a UNIX domain stream socket, where the endpoint
- usually is named <systemitem class="service">wayland-0</systemitem>
- (although it can be changed via <emphasis>WAYLAND_DISPLAY</emphasis>
- in the environment). The protocol is message-based. A
- message sent by a client to the server is called request. A message
- from the server to a client is called event. Every message is
- structured as 32-bit words, values are represented in the host's
- byte-order.
- </para>
- <para>
- The message header has 2 words in it:
- <itemizedlist>
- <listitem>
- <para>
- The first word is the sender's object id (32-bit).
- </para>
- </listitem>
- <listitem>
- <para>
- The second has 2 parts of 16-bit. The upper 16-bits are the message
- size in bytes, starting at the header (i.e. it has a minimum value of 8).The lower is the request/event opcode.
- </para>
- </listitem>
- </itemizedlist>
- The payload describes the request/event arguments. Every argument is always
- aligned to 32-bits. Where padding is required, the value of padding bytes is
- undefined. There is no prefix that describes the type, but it is
- inferred implicitly from the xml specification.
- </para>
- <para>
-
- The representation of argument types are as follows:
- <variablelist>
- <varlistentry>
- <term>int</term>
- <term>uint</term>
- <listitem>
- <para>
- The value is the 32-bit value of the signed/unsigned
- int.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>fixed</term>
- <listitem>
- <para>
- Signed 24.8 decimal numbers. It is a signed decimal type which
- offers a sign bit, 23 bits of integer precision and 8 bits of
- decimal precision. This is exposed as an opaque struct with
- conversion helpers to and from double and int on the C API side.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>string</term>
- <listitem>
- <para>
- Starts with an unsigned 32-bit length, followed by the
- string contents, including terminating null byte, then padding
- to a 32-bit boundary.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>object</term>
- <listitem>
- <para>
- 32-bit object ID.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>new_id</term>
- <listitem>
- <para>
- The 32-bit object ID. On requests, the client
- decides the ID. The only events with <type>new_id</type> are
- advertisements of globals, and the server will use IDs below
- 0x10000.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>array</term>
- <listitem>
- <para>
- Starts with 32-bit array size in bytes, followed by the array
- contents verbatim, and finally padding to a 32-bit boundary.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>fd</term>
- <listitem>
- <para>
- The file descriptor is not stored in the message buffer, but in
- the ancillary data of the UNIX domain socket message (msg_control).
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </para>
- </section>
- <xi:include href="ProtocolInterfaces.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
- <section id="sect-Protocol-Connect-Time">
- <title>Connect Time</title>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- no fixed format connect block, the server emits a bunch of
- events at connect time
- </para>
- </listitem>
- <listitem>
- <para>
- presence events for global objects: output, compositor, input
- devices
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
- <section id="sect-Protocol-Security-and-Authentication">
- <title>Security and Authentication</title>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- mostly about access to underlying buffers, need new drm auth
- mechanism (the grant-to ioctl idea), need to check the cmd stream?
- </para>
- </listitem>
- <listitem>
- <para>
- getting the server socket depends on the compositor type, could
- be a system wide name, through fd passing on the session dbus.
- or the client is forked by the compositor and the fd is
- already opened.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
- <section id="sect-Protocol-Creating-Objects">
- <title>Creating Objects</title>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- client allocates object ID, uses range protocol
- </para>
- </listitem>
- <listitem>
- <para>
- server tracks how many IDs are left in current range, sends
- new range when client is about to run out.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
- <section id="sect-Protocol-Compositor">
- <title>Compositor</title>
- <para>
- The compositor is a global object, advertised at connect time.
- </para>
- <para>
- See <xref linkend="protocol-spec-interface-wl_compositor"/> for the
- protocol description.
- </para>
- </section>
- <section id="sect-Protocol-Surface">
- <title>Surface</title>
- <para>
- Created by the client.
- </para>
- <para>
- See <xref linkend="protocol-spec-interface-wl_surface"/> for the protocol
- description.
- </para>
- <para>
- Needs a way to set input region, opaque region.
- </para>
- </section>
- <section id="sect-Protocol-Input">
- <title>Input</title>
- <para>
- Represents a group of input devices, including mice, keyboards. Has a
- keyboard and pointer focus. Global object. Pointer events are
- delivered in both screen coordinates and surface local coordinates.
- </para>
- <para>
- See <xref linkend="protocol-spec-interface-wl_seat"/> for the
- protocol description.
- </para>
- <para>
- Talk about:
-
- <itemizedlist>
- <listitem>
- <para>
- keyboard map, change events
- </para>
- </listitem>
- <listitem>
- <para>
- xkb on Wayland
- </para>
- </listitem>
- <listitem>
- <para>
- multi pointer Wayland
- </para>
- </listitem>
- </itemizedlist>
- </para>
- <para>
- A surface can change the pointer image when the surface is the pointer
- focus of the input device. Wayland doesn't automatically change the
- pointer image when a pointer enters a surface, but expects the
- application to set the cursor it wants in response the pointer
- focus and motion events. The rationale is that a client has to manage
- changing pointer images for UI elements within the surface in response
- to motion events anyway, so we'll make that the only mechanism for
- setting changing the pointer image. If the server receives a request
- to set the pointer image after the surface loses pointer focus, the
- request is ignored. To the client this will look like it successfully
- set the pointer image.
- </para>
- <para>
- The compositor will revert the pointer image back to a default image
- when no surface has the pointer focus for that device. Clients can
- revert the pointer image back to the default image by setting a NULL
- image.
- </para>
- <para>
- What if the pointer moves from one window which has set a special
- pointer image to a surface that doesn't set an image in response to
- the motion event? The new surface will be stuck with the special
- pointer image. We can't just revert the pointer image on leaving a
- surface, since if we immediately enter a surface that sets a different
- image, the image will flicker. Broken app, I suppose.
- </para>
- </section>
- <section id="sect-Protocol-Output">
- <title>Output</title>
- <para>
- A output is a global object, advertised at connect time or as they
- come and go.
- </para>
- <para>
- See <xref linkend="protocol-spec-interface-wl_output"/> for the protocol
- description.
- </para>
- <para>
- </para>
- <itemizedlist>
- <listitem>
- <para>
- laid out in a big (compositor) coordinate system
- </para>
- </listitem>
- <listitem>
- <para>
- basically xrandr over Wayland
- </para>
- </listitem>
- <listitem>
- <para>
- geometry needs position in compositor coordinate system
- </para>
- </listitem>
- <listitem>
- <para>
- events to advertise available modes, requests to move and change
- modes
- </para>
- </listitem>
- </itemizedlist>
- </section>
- <section id="sect-Protocol-data-sharing">
- <title>Data sharing between client (selection and drag and drop)</title>
- <para>
- The Wayland 1.0 protocol provides its clients a mechanism for sharing
- data that allows the implementation of selection and drag and drop.
- The client providing the data creates a wl_data_source object and the
- clients obtaining the data will see it as wl_data_offer object. This
- interface allows the clients to agree on a mutually supported mime type
- and transfer the data through an fd that is passed through the protocol.
- </para>
- <para>
- The next section explains the negotiation between data source and data
- offer objects. <xref linkend="sect-Protocol-data-sharing-devices"/>
- explains how these objects are created and passed to different client
- using the wl_data_device interface, that implements selection and drag
- and drop support.
- </para>
- <para>
- See <xref linkend="protocol-spec-interface-wl_data_offer"/>,
- <xref linkend="protocol-spec-interface-wl_data_source"/>,
- <xref linkend="protocol-spec-interface-wl_data_device"/> and
- <xref linkend="protocol-spec-interface-wl_data_device_manager"/> for
- protocol descriptions.
- </para>
- <para>
- MIME is defined in RFC's 2045-2049. A
- <ulink url="ftp://ftp.isi.edu/in-notes/iana/assignments/media-types/">
- registry of MIME types</ulink> is maintained by the Internet Assigned
- Numbers Authority (IANA).
- </para>
- <section>
- <title>Data negotiation</title>
- <para>
- A client providing data to other clients will create a wl_data_source
- object and advertise the mime types for the formats it supports for
- that data through the <function>wl_data_source.offer</function>
- request. On the receiving end, the data offer object will generate one
- <function>wl_data_offer.offer</function> event for each supported mime
- type.
- </para>
- <para>
- The actual data transfer happens when the receiving client sends a
- <function>wl_data_offer.receive</function> request. This request takes
- a mime type and an fd as arguments. This request will generate a
- <function>wl_data_source.send</function> event on the sending client
- with the same arguments, and the latter client is expected to write its
- data to the given fd using the chosen mime type.
- </para>
- </section>
- <section id="sect-Protocol-data-sharing-devices">
- <title>Data devices</title>
- <para>
- Data devices glue data sources and offers together. A data device is
- associated with a wl_seat and is obtained by the clients using the
- wl_data_device_manager factory object, which is also responsible for
- creating data sources.
- </para>
- <para>
- Clients are informed of new data offers through the
- <function>wl_data_device.data_offer</function> event. After this
- event is generated the data offer will advertise the available mime
- types. New data offers are introduced prior to their use for
- selection or drag and drop.
- </para>
- <section>
- <title>Selection</title>
- <para>
- Each data device has a selection data source. Clients create a data
- source object using the device manager and may set it as the
- current selection for a given data device. Whenever the current
- selection changes, the client with keyboard focus receives a
- <function>wl_data_device.selection</function> event. This event is
- also generated on a client immediately before it receives keyboard
- focus.
- </para>
- <para>
- The data offer is introduced with
- <function>wl_data_device.data_offer</function> event before the
- selection event.
- </para>
- </section>
- <section>
- <title>Drag and Drop</title>
- <para>
- A drag and drop operation is started using the
- <function>wl_data_device.start_drag</function> request. This
- requests causes a pointer grab that will generate enter, motion and
- leave events on the data device. A data source is supplied as
- argument to start_drag, and data offers associated with it are
- supplied to clients surfaces under the pointer in the
- <function>wl_data_device.enter</function> event. The data offer
- is introduced to the client prior to the enter event with the
- <function>wl_data_device.data_offer</function> event.
- </para>
- <para>
- Clients are expected to provide feedback to the data sending client
- by calling the <function>wl_data_offer.accept</function> request with
- a mime type it accepts. If none of the advertised mime types is
- supported by the receiving client, it should supply NULL to the
- accept request. The accept request causes the sending client to
- receive a <function>wl_data_source.target</function> event with the
- chosen mime type.
- </para>
- <para>
- When the drag ends, the receiving client receives a
- <function>wl_data_device.drop</function> event at which it is expect
- to trasnfer the data using the
- <function>wl_data_offer.receive</function> request.
- </para>
- </section>
- </section>
- </section>
-</chapter>
diff --git a/doc/Wayland/sources/Wayland.ent b/doc/Wayland/sources/Wayland.ent
deleted file mode 100644
index da18a95..0000000
--- a/doc/Wayland/sources/Wayland.ent
+++ /dev/null
@@ -1,4 +0,0 @@
-<!ENTITY PRODUCT "Documentation">
-<!ENTITY BOOKID "Wayland">
-<!ENTITY YEAR "2012">
-<!ENTITY HOLDER "Kristian Høgsberg, Intel Corporation">
diff --git a/doc/Wayland/sources/Wayland.xml b/doc/Wayland/sources/Wayland.xml
deleted file mode 100644
index 845634b..0000000
--- a/doc/Wayland/sources/Wayland.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent">
-%BOOK_ENTITIES;
-]>
-<book>
- <xi:include href="Book_Info.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Foreword.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Introduction.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Architecture.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Protocol.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Library.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="ProtocolSpec.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
-</book>
-
diff --git a/doc/Wayland/sources/images/icon.svg b/doc/Wayland/sources/images/icon.svg
deleted file mode 100644
index b2f16d0..0000000
--- a/doc/Wayland/sources/images/icon.svg
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.0" width="32" height="32" id="svg3017">
- <defs id="defs3019">
- <linearGradient id="linearGradient2381">
- <stop id="stop2383" style="stop-color:#ffffff;stop-opacity:1" offset="0"/>
- <stop id="stop2385" style="stop-color:#ffffff;stop-opacity:0" offset="1"/>
- </linearGradient>
- <linearGradient x1="296.4996" y1="188.81061" x2="317.32471" y2="209.69398" id="linearGradient2371" xlink:href="#linearGradient2381" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)"/>
- </defs>
- <g transform="matrix(0.437808,-0.437808,0.437808,0.437808,-220.8237,43.55311)" id="g5089">
- <path d="m 8.4382985,-6.28125 c -0.6073916,0 -4.3132985,5.94886271 -4.3132985,8.25 l 0,26.71875 c 0,0.846384 0.5818159,1.125 1.15625,1.125 l 25.5625,0 c 0.632342,0 1.125001,-0.492658 1.125,-1.125 l 0,-5.21875 0.28125,0 c 0.49684,0 0.906249,-0.409411 0.90625,-0.90625 l 0,-27.9375 c 0,-0.4968398 -0.40941,-0.90625 -0.90625,-0.90625 l -23.8117015,0 z" transform="translate(282.8327,227.1903)" id="path5091" style="fill:#5c5c4f;stroke:#000000;stroke-width:3.23021388;stroke-miterlimit:4;stroke-dasharray:none"/>
- <rect width="27.85074" height="29.369793" rx="1.1414107" ry="1.1414107" x="286.96509" y="227.63805" id="rect5093" style="fill:#032c87"/>
- <path d="m 288.43262,225.43675 25.2418,0 0,29.3698 -26.37615,0.0241 1.13435,-29.39394 z" id="rect5095" style="fill:#ffffff"/>
- <path d="m 302.44536,251.73726 c 1.38691,7.85917 -0.69311,11.28365 -0.69311,11.28365 2.24384,-1.60762 3.96426,-3.47694 4.90522,-5.736 0.96708,2.19264 1.83294,4.42866 4.27443,5.98941 0,0 -1.59504,-7.2004 -1.71143,-11.53706 l -6.77511,0 z" id="path5097" style="fill:#a70000;fill-opacity:1;stroke-width:2"/>
- <rect width="25.241802" height="29.736675" rx="0.89682275" ry="0.89682275" x="290.73544" y="220.92249" id="rect5099" style="fill:#809cc9"/>
- <path d="m 576.47347,725.93939 6.37084,0.41502 0.4069,29.51809 c -1.89202,-1.31785 -6.85427,-3.7608 -8.26232,-1.68101 l 0,-26.76752 c 0,-0.82246 0.66212,-1.48458 1.48458,-1.48458 z" transform="matrix(0.499065,-0.866565,0,1,0,0)" id="rect5101" style="fill:#4573b3;fill-opacity:1"/>
- <path d="m 293.2599,221.89363 20.73918,0 c 0.45101,0 0.8141,0.3631 0.8141,0.81411 0.21547,6.32836 -19.36824,21.7635 -22.36739,17.59717 l 0,-17.59717 c 0,-0.45101 0.3631,-0.81411 0.81411,-0.81411 z" id="path5103" style="opacity:0.65536726;fill:url(#linearGradient2371);fill-opacity:1"/>
- </g>
-</svg>
diff --git a/doc/Wayland/sources/images/wayland-architecture.png b/doc/Wayland/sources/images/wayland-architecture.png
deleted file mode 100644
index 4f92e0fb93825a68095b75d499bac00e968419e5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 29162
zcma%iWmJ at 3)GrOfPy#Y^cZ1SMN(+c|BOu*f14DyIhe(&wrF6`Iq@$oHB{eii$H36<
z<Nx0G!~J$yYZhysInUW=pR?n4b|mWQs1Xy=5 at KLr5NoKb=wo1D$^)M>0zBY}RwC~L
z at DImVNyC5u_zNSjPXN9@@KQJR#lU#z_wR$b^qMIMcu3>-%*5}d=WD+}TOS9Ez`#I3
zXAf6jJ6kUYK~EpY`~z893=C!r4HZR$pn|=^z;_f=7xBwPT8F*HFQluOd09({$_R{9
znoGEO(S~H#v)2i at d&E?@R6K-66?IWqypNJ76+;et3HE#<A_~3<&AGMYKj(D!UEUfK
zn_D06b>z&~9e3a2u77gLsho}9g>4D_qd;6Dt;chpO#|}YVs4_DU6s1S(`L17Os+MI
zt144^1Ort@)<WqbbrjO8OdW*T@!mj>;fRXe-ed7$q+n^Hb=+SpS<- at s?$Mw)9DA;#
z$48tyS57@|MLLuZR&z_gVlrXn4vsQLv!t6oIODXur}9(=rBhhki2l}q8!N1t(Ao>L
zOU6U#G-is2=E;=pDGAXoankrSXHNzkh3!A$2*-g?_C3TRDyljYLds7tA-G?MzA#6#
zB!bnuATmp;-~qO7v_lnP!bsq&9*`(FBSE`_Zzn_*cx9dG-s8|I`G^Kont`XytZbOt
z&JuUCMg;>+5qAhfK7c_Q8XU;xAUfMo`N{q7da;qP$mwJ8Q5$t7QRrsH?#8kBAenT^
z)(k#d7 at l%R1?I%yJc06^*Wh7X5Us5+C5GU+8=)}!gIHNbLTO;}(JW&;SOrX;Y at pJY
z1c~FXqA0<j^j~62cwnWEWDj$`+6b%Yg!B*#$LO%IGZy#TBow&VSCt)$50KHurYTh5
zMYH%&>WKj?DV38wgwELrcPQ5f(b*8ZReJa16fZje-Qmj&GRcbUej5Vn(?ZRMldJ9u
zWuM&Sk}t`5b7SW-xr<Pl<trU=_m&_-3$u{Wbui^~>`EV at i{B$@{`4N*1T{GqeSLlm
z$%QP9ivj5};xwR@)h_g+C at 9A>5+O6dpg6diy5W_|MQG-+ at u(q6u at P}9LaO{W$-_Kf
z0x|uCq8wTAXN(JCI<k_KvhrrR;r3`;;%L9I$?M6UJPt>aV)^?Y9V8Z+B-HH_JaM|=
zpb^oPlTW@$%M|4$roDsYu*K_VzY#f68AGe?Z&`9W1R>8RZ8nu8!yb23Jul*OV7~Bq
zd6(v6h!{~r>*tYvgd-(vmRSy6QzUPC%@`>lQJntB-cV%S=5e!_enZeh(aruh?E{O(
zgY&e?{N9!~((Q2)uqgT5Hy`yr*pG{fQI9qo94{cgA7$;@D+vx}QIGWZ9)3OjV`#Je
z{YQhy<1_wMv}0kI#}`icP4*FD^~YeNofi6-<8pyGE@<rvS;uBzI$}FrR&dCKh_TL5
z7!vhz*g|f!q<pD^Z3H{AK}6O*#vZ{#PkOfUnvN_xt}L7khzNOtAJ^i~_{T0U$2fXM
zt+EL2)?4U2Mf}o!4OYfNc5NBA_Jm30)KN|BM+M9+7k7h57@!UA>u-+wFQAB9RAW10
zgAbx6Hso8-3l`sx#J(Q`8~p0>nw!((hYN0`epG(_sG^wAzXqp0{QMO<5c_czW}#VZ
zK=1rHJP<a9@>t?f`q3d?Fee-6x&4a?xh=Bo9hWe0h*<A>)DU+yg)GS2NT+jc|4R1n
zSzo)S;013QH3KhcIJ3O$hGu{Kg<`B|KjH%wUM*?N`wPgTINFvmONcnPfT|;TdXm_(
z>EWY#av3v;nA3S&rYp2p61|WNon~(2a!yi$kQv)Oo#mhP8-8)O_??I`M?4?W!Vra?
zUwqmfsaVeqUWdxGpC=W|i-mW!Fvww1R27`QXZwJWAE1;8nS4&7Qf?-^+E7rmx+VXm
zVor4QZny-#^_n66sqUAn{iA-l(!}N6OnZyHpfsU~L!F~dn<@kGtx#<1N8b0SCqa8`
zG`vR})u|4kzeDEOGjbcG9Va}qp~Ba at 0)Mq;MCtEL4^ab$`vObB-0M%ScaKJVwlAW>
zilBp at zjQhvRS6mLRA1rqfnViNAD4-I+-7i!u0g80h`T$A@|EMhqiz4Cna#$tB79LI
zxq!Hf!#{?}Xez%lPKYOjV=4bWs7UPR&t{I_wRrxuc!JbUJ%`&O+!pFNo_;PIjAlO{
zUrv(bGsDoi at +5q!4i_eP=ak3SLDD^5u1M3~G2dtCuh~(26A$*K1NU=<e3nmD{Qeq7
z%i*gi6fqI4y-wmn|Ge$r1)t;uNu{D<&%dv?>PAGSei+bNTe<mFf~cOGxO8}6fi58k
zNENeD&^>nAswbPMM}+s|N=X#h;zer7tl!_L&-PL4^gT-v`1?h!x71Mi68cV($SR-v
zm357zMNkM*`U=LrwDjv1dG<kcP}GMoxtK>@nELZ+K&P%Nh at v=chPok&u50XDtMUV}
zQ*&fu5?U%MJC8#N>E|r=$>yAu+x(%9$GU(_h}pSM|M0boQQUJo-#fcD7lK~tf#3^`
z+%ZP%iRIOBm at C~ep|M-c1SEzITg5VTi%!aF=E)fcX|xdH;JM^yPr)^Z{X6{fj|l2c
zhiJI}4XQD@@Ukz$%3RXRM0PrNc#9Giul7~0>oaz8gaL%C;M!|^%<F4?Y2dT)OUGXN
z>?k~ur86}0nl)_k&p`V`NaKU`_y%W7 at R8^O>QTXrsu30X^up!cJxKxbQ}=mPzz=^|
zP$pmn-o>w at T&M=G!@@Ie7Rw+<4IQO653{GX`z#GdeqryN)8CLve?GhO4Rp)<w9rEZ
z9l1{WfP4Q;utFsnW0QaUu1H_FBwjY+V!mLjVOel30HghU^!85}k1;Pg^!aYm%!k$>
zmwxaMu_ocAJq?c5py%f^Ta8)XVwLtSrA^CRChfcn-p=ZqTQ(zBQbvtr<`a$^oIw#S
zvJsBz<E~hpOvE(^+R3>$zI~)##*KReTcLvMJ-KneIbCFAvEE)wt%au`6_MUBn$wMK
zzOp`g1ZA^DH<kE7+5^fXNU*WzSg;Q4bja??z1q*$?8#Z5#H#rYXPc)WqXJ~EhX`Vc
zMHc|iv0TlDCh)@le(#?k7U!A#LE-ASM$&0D^2 at ZvDCMmyg0@@1A|!{Ob6hB;-GqCX
z?(=42R-0}Wk1{@#yTV at E6ZOc{g~AC}p(%7Hs2O at E1gh3D7@9CW3`9148<1KmJd|A0
zXssk#H5Y70g?mO2>qfAak%1iXCa4{qzpK3*x(>Z136|UKnAsgooxvBK6Gjt*Pouvn
zZH+L-OB-Utth!?8Q(a974ic8XKKH3Jl?p2KkN%xUoh>J$D83(apAy#>!=axO+%;b-
zu6#_SLhz)hd}~D}?(%RLj>75A9XC0Ferd>a<Hk^VeseQ&+trqCSH1dUSV$mb#7LBT
zKkHg*^s4Vz%ofSlGFY~JDf-mlQ--!j1yznnZxJaz(;@Bb%fZ979Z^n`7I4_ at o3J^)
ztOv50U{HPOp&r^LCE+{qA~N}d=qK~(UkniM0s>c$HP2Y30v>-!bTPfwI;%Fv7Ymhz
z*)<Ip0W1AqT`N<W)&U2Zb|^y87wOboxDR0Y%c0Kd?to#r+r8z@&Zb!u{J2S9cQC6T
z<35aa{1of$1vDs(86jVAENAVrYZVpNtRwe=lV<pi8|$yOpGAb#oor!jtqNL`D&Dja
z$4Y*iAUpr}g&&dcDd&tQQR4xLK+gp1J%!A%?_ix~a31st_?4o8S|I)L`)20rtEUlR
zBezj+FBqgY84kOu<S_HvSv~XdLiE4&Tnp6AVZFRhgL!reANpdq`fHXWi9T+{+vq~P
z at y_lS!4?+xHxfNv`BTwiatQahlxzo?=91uWDM2fWZgGYJrqwTMcJmD^cY`W7cNQee
zH at p+r0*oGW3SEVBUoR8wSCp1Ko|nx1x{XI>3!Sv>{PoMLy!Gb+L0%4LNVk23<*tP}
zKWZT4SE7KN2r_tQeli;c at 7yULEd@dmpnNjOt?otUbx)}L!r7}M+zsXn5A at d2^vp^-
z{*QBZ$>yA7m~?28-81(I(wQFN2w~9JKfw%K at Z40|F=}(o_*9_p6`<uQH9EKPoDbx#
zld<)MD+qr~v5nW##vxVVVRFV$#T%l@*615uzetOC{mIQw#jls0MV!SKL}jHZ at HpO#
z<%nYJhLfAdm*;t{y(tZb_e)+-2A$vq-wp9Qg}<SfaJ$GcZ8eSK8Shb^USvr2Vl54N
z0rqZRn7HW6M1^&qI|}(ee)(rFq__^>kH|6a=R^czaH`9FH9YPFX0Ps1M*Hn|-~uV~
zj1zjX6qS4}^$G`?E86oILmHHWih6!ErcYX_LQrcMsmqwfz!)r2!qp at FqR3c~%X{kt
zk=QCbztKl|9BNyT%+)Z5Wge(ih^j at fI<(USrE8NsM{6jF8a8rksXS`Pa1gO$f-dQX
z<Swk|#y6yk{0Uu3PbA$cGU8^-Wa+c~HSBNC<XhqAf_q2;?Ox9Do+V#aT68(-^!US)
zsXva2`4lMwzU_W<(e;|h;<oMr1t6|l at WmeycE%T}>tVOSOSpsK<HS}6J#9aBsDrJ#
zRFJ4}NAc*n#(`Tld$y|<Vo?*wbLyaVGxBMj`jaKsKc5?9a~d*D|JX!<^r{Pfn at Yg1
zJ{jL}v7-N~T%Pb-;C>W;sC$y`>QEl`(dY-eLT;C`*73Wqc&6NzkH5>Pq!~$Wg|0EC
zdv^jJ=UJ_T_E|xugGk_n*wF6yS3>!)-;qTRxsh*$R_2%2{{$RTo9oo!KHpVbZfHRa
zM&z`<<RiDeZ>tSDaJXgeR=Wz!WuVbb&S2`O++FX>;pVg}-1#^v2y)a&@eCyk%jvdn
zM&46%yy;(NtJv*xYSm_Eki#?NTMthKjlG at x<$WCZIKXM*s@<#XP;i;Khz;ICx`CkQ
zxo4oVJ)*8LIa+=}ex!#Dia{(z`@pc>1>WF|wAOv+qf^X!FX<(+b5+~(hGz9Si;ZK?
zTLS#b0aBT}QFZc(gZ%~ar)l1`K?KFW0zSu*+Lv(~4dAc7;LJNx%zzZ at r$4qK;z{%H
zyl0sW$LK at T42N<)VBDs#&IjRUFkkC}5>;uNXw)Y`pi<wz3UipN!cC6n&wBBqiJWX+
z_PiC20e)s#QXP!?m9Mb>RWvln%KXrWI=cT^TSmiopB;7<;&*rpWR5ar<0D2r0>Tv-
zG{@p_GU?dJ!$>>e5 at iDz+m4wbGA+XNh6@a_HTQ)6v~_yyzSMT|xF6na?crcuHc%WE
zJh#G?T4IT&>@6F_E)qlPHwaIez#fZq=-;i2>{x4N1Zv at vOcQ3>gLikqYvH=Z_~K8R
zXpdT#6(exxx>R;vwp^w8OUGQCzMl~v9?!Zga`e41!+bhXTEDk!{Su|y<)Ka!fF+<l
z!>O#EvBEU at SGq(&Rs7n!4~I5^a<_MHC8upKBSA1Oi=ATIAx21QOc1gYBH=}@SAyqp
z!4y?nBrx97O2t;Q)e(n{iIv+Ra(`9*m7!u6;C6tFQ7Ss`!)`>R7F158ol|oGCGIwl
zV#*Itc?AEE7Bx-$36^7I(lS7!pYl<C#&ZPV35}DoUeFMMql2F_^!q)xaBzdf!nMb;
z7s6K5twg0z at I9wD{)7{6zdSL|7uyojovWWgbgvSU_b3?e?5li6Y2jM0>{Dy^mPiGz
zv?y&NucoMK<pa3FY-`PtdykHWnT>12*zx(GOBK7YRrdrIAD at X8VE;23gmAmCPG7xB
zf3tA+-WZJ`zW<{kRzaw)Cvk`vx2O<KR+2~F7p3g<AbAqyS3>M1AY8~kOLQ~D50(%M
zO+c0B9dN*;ayTrlm7%XijwHRXcCH*Knk#L{uVy4HU6B+>3Q>dL5}8%<X*?H<DUFhn
zs_(n~ca0n;NBN&7^PW0V$d8+T9cIWd;n7cFeB*9lr)(gVFxa~A|3n@#uHRW>_P5kI
z!~bj*g&sU9shYmJP~SDstjAmWX(mtI3<a*sn-xii`o!qxuKSyJ8)fW at 7t1!nIGi;a
z2#SQi>bb+ulQ3R`fZM!2VGr6g#}G{OW?|1~YWP$Pobe7z2%=!PF8y}PQ5bwzY(NHc
zDJq{|b(EC{A`2p`)K8tk6B9P-X8MXZE*SXk^C at 9=jrf%YFD72DUDALwG<g%Od6*TL
zYZACurD*?+)CWdRrj=xRy!toA7%&Cne}oEvsaZP?OKJWM@&N{wtz1gcmAys(H_P7s
z+c@<83B6?kDFwLFz?S`$j;T%IG$%`2Kax}RW<bF;+=K_kBp83BuUUynjopsnh?Spa
zukW9&ZwlwOiJ1;*&EKa5Rjc#*g^C>qyj--W7ECJEufY_i>tF~Xsw!#qC~JLc>1v5h
z{)OMBP5-Y)W!Be9>FEA6{Ay+hek8%mY<zoaGE+fqQq5{{I6V@(9wlYAt6{dwzbtCD
zi!$3)i)>RMwJ9K1h-L}XFP#rf*iN(_ECNXI3*&9qwiay$*OUIhbc#vl^T6N4@^q?~
z;Hm6l-oZJ*j#G63=p<D{p&8hvSKBE9yLu-u>=;%~kNEYN$Y;MO$RL%Fk17p9>rv9F
z3U`%R?@L-Aw0j7z=NfFEGb*)pbUy!&5XcMnC~Da}5X--HI{Wi<EA+iO$%fhJJ7%+8
z0eCmOK7H0kxPtc|JJ837mZWu4(TI+p`}?@sKg|wL!(X`GR!)cXPAum`O^f8iM=n({
z!r4Ce+o)^&<7U*CA9v5Y*-C;__B|$MCJ#?#4aSaw2)q0ClTo)r?vKgSA?5nKFL?}2
zU3=M-%t3Kktl5K&><4eGD~ha at ZB)}P-m_4!^o5nT-pwDjPAOo+6N>xONcAh{i4Jr_
z_He!iKjMr>ys(!QB6}05m9BE^$vm*A%;Vo{-AOxIk<f25ieJqRskCgEnOl9NF%yXG
zrCB2Jd0Iwp_x9;ev*na;gxCw~S;zdD&KPy12Jt}PM~63IS$v||tfBHGm2OpnLGsC9
zOG?5FDtO<(rfBZMRd~G^5bZX1CZ+R{X`fCPwHsENi)-?#(yYG+JtbK#AG6-qWc{tr
za;eXf1{NZ5RP}MxUbj;TPJz~r1cTy!Xv97sO~b(KAD$lIcy;{CjLA?_jxbqIv-OAB
zq3StHAWHV;5(~T<4B--8x(Mjlrvp_dlf#66nlTw at GO!HLSl6S}G^=&s+?Bsu&32cw
z^-<6i1%?vgCUUf)YcCFbjpr#wL2aw}&kEu=Vc}J3ntX3Z{$nHd3<PVXK}0=@(&lpn
zOQnG`k^{+#d{vKPrT!xh*3U3_2>bA&Do~__QHb^P^ho5LX0>aY;1Mm7)P_;i_7`Cu
z)d9gboIfu05~_b1`qREvWT2mYIW@;A*fMf3+ttm|r-<~GOMR2ZA)ODkhN@|kVMq5f
z=xf~60ES_<ZNE-dD}MZyO_P32Q^ZZL7r>3;Yd@~;7eJJbKpSfPch#0c)Ejwj279L9
zjl{{_eF6r(;LIK*T{yhD!=}eK>#%49;(4OgtdM;2^qPF*{+p84r=YsQf8yX*5rdv<
z3&$~0K6 at SZpW>@(CKShWbTsjEV7w7tbrfc2P`zPw6!9w4uW_RMD-O&Jh?ytPkHHrH
z_QqiH7W=A11d0|E$DP5ud!rx=TU9?>rxKj*rq at Vb!ZO)@)%%l8xe~K5vIwp*%DDPh
zJ*dIpO7Sr}({-Aq?k=<y{un7U>EBoW`C|rJ07aj_Qicv@{lw2jGkhy*KxZSIan_?$
zP%i==D6QN2IeL0Q3>Ojot&LPhzMO0&sVvL7%x-rNm47HDWwr)M<b%-Eu+aQ{$!<F7
z4_*<Y<WIt|j7){fkLg(|N%1%gPJGcX38wt}{2R?OsB%<~lx1cye$QEmI4)|G2mV;}
zw~DAi=K|q}_vmN7!|i?gytHFKzpyE1V+~{KV!!76ljdT9b)y<5&0_*JppbVQo^dDL
z78<OT{<0AQ3^T-k&8G2_IL at F_gf(&tCq!&&(DOmYKuceKwoAP++x&tBktdZnO^u}R
z11AR0mq0|iL{>N*lx at djR+G5=id{_=!Tnn<8y+n2>N^4Q42b*+vy*K^Hje7eabD?b
z-nh*##j3oL5+j__#nmy=G)z=lEKM)<P|GNw1I6tXBv`v7WIdE8^^N>grgxaC at aXvD
z&i?goV#jB9VRn4#jM6Tth>99?;cHVPatS^ZJ4vzDO;_Iqxha-^Gz%42GmaOhnh!Dr
zeOaz|VX!K)lU`cG8XQK9r+n~Pb-L$61zG?*0Bir>k0l>~ogu3BT_d!AG;brk{+&22
zYSnSR4G+R1y$11x_71k}=9g-+5lI7YJNdCHXX{EGp9;rw2SJKJ9`a=K4W9VyN^bz^
zeaouQXz&O|o8#~#L22<NR7V8l at rUM87<g~{OvCW_njx{Dy51X>q4Lq3A>pft%ZLrP
z`fp8*<4^9_WWvSV1X<G|RLzTjji&brCH7-zh>%+_Um=MI2PYszoZ+K2)9GjjasEwh
zK#e|cN6)2MAA}ma_3aFe?wU1|FI|%q(G!#Qksj*iOt>$X!Z(<LbpIS&D2-pxTJRl)
z--oUT45e#UQ-1qhJg1&3LaVJjIFY1(+n43lJy5w at g6KU7y9HM<*iUG-U)#<X^&l+K
zWNx!0x~S;*M(=quWe at FZ3dSo8i1j1%?IZ_s^FX+Q`gh{;QbmGE51v&%&W6?(-&^IU
z_1c;t5XMam0Re>1qAyk-rp^n^sZ^!KyN;(zGkr9as2l!q6S9tP8Ld_;i28-E&soDT
z3ZGZSzB?J at mOO-z_f2w?n45Qel;{bNS%5tF>`4LyhS6JIn+&Bhp{g&pe-rZNBo^&o
z+AfL*ZP9_BJhA>rrR6Z;Nz(HBBZKhbM%PD-d1xOzQ*egCUz0LA;JM8-D|xFc_TW(A
z&Y00;!-H?PTtQN5l!em7%`4v<k;gAiZuWA7uQ02O1spq{%dA8+4tQ$$_E9H`kapVH
z^=Oz*OtkG2tB1kHJ!a}#$8nx24hr#j_k6ZtT-2V}HDcnn;Li17Og}?$hR=nP<<!SB
zgtC2_Ax?3fZPD7hJaj^%+~zYE`AA}w)ogChkLJ%D)<`;b1%j704Bm<GHyvUAuEU`y
zj!ZoW{OBHW&J<;szp)heWz(|Bx42tes-g}ZjK<U0q#%BZrK6`g<T5>DC|%62w(L<W
zBu1U|&fk^j<6}ZAkKvm=6y}XEX+tPUjRnbuP#ov&dT^!I%6rElx?{()$5j!;1-^j?
z0rxlUS*`))1e#X%4Dq%U6-%qs3U8NQ=~fe!uCyMVZ0U27HHNXcFCKS=buwKkjMq;i
zuEEEa2m2Ey7#~R at TjWYTn4Dn~Voh5LOKtdTQ;A;dU~UdOn^+}+#rf9f+o<C3j}{l-
zm^%pp6c2429aQgpvl6qrel^}{&I!XhKI78giaz|(tle?#E_obMHAly5jn~=`qZ=_A
zywrICC!Ro at x`$SfEUS4?Sf~P~-NDp<p~1wp7sCX@;xJ&b89wv!^q$MQ%}TbS?QNyZ
ze6u0ar&c_)muC66Zw3~V`ti-kY$>kAoatXlAMLyT{Ilq1t}QcDYoN=mqGpWOLL?p+
z=GI^S)K3lxn(`m+%7&@*Imrve#63aY{6e05Dt(4+(u*6{!;vWuJ%R2^F}u4jJ(!uZ
zNhL4c^QqCkbDPI*2T@=W4{ke)a!PpO8Z;76x5wj6*{<?$pGO7_tsuizy4#@QiqReM
z6LAbai}Bbu9pB6`>ph|Eu(<uu_51A>5<MU<5wL&9RopAzeXdam#N->fHj1bO*)LjD
zp9SB(ceGu<n491;*B=&B9PA6**-K at OjkZ?fO}&IBU+*jSz}n07?$zLSn$?PCyZ2>!
z5x<X^F1k4vuZ!4x3T4Y?nzMs+?>2zQlI0H)JWJj!KBh+dU5`tu`@6uMw&x6g!yA=o
zI{wmMZbe+sN%FxDb{IlePK(zs>shW&onu#;`@GgJ_1ay|FCb<FxlcJ~jx|(~BF`f=
zK2=^z`o2qUgeD-}8{yr{17gKW_XkTtJn-{guld^5jfFqhOJH{E0J0VNdni)ubEh}5
zNm~{3GY|kiWm_ at fw75;aakB6y=?RfBIIbX at G<$824`Z=Q-fE>%Jlk5^(Su3fTuB#9
zn^?)b=eei0gQR(XbL|R>c*iC8AahIU0>85U at -W83Q!^C6U5;4GY-8Q!{agw>$W`ts
zCc`KoFdGqg(i0J&Mc!<)aWiu5aUkf=2RkrnB@{j<=YFZ5<5V~M?)Da1r0aa63+;|&
z(n%N6MBsV7PH?VCqK+N8-lTkblyIdGe79-bzdI^T!nCkU^^}Yy)HyPUN#=aO^WI+G
zaodsA;QQ_u^XT3I{2ygcdt}&~+ViN*1A- at 9_2lli)CTyh;qto<VEf;<Rx8+-b at -ON
zWgUlPve(W?=@eJ=nPTG+^yaYVO8&BL+MQ_0e_V)10K(XZJKoHXKvi*@?YhJ5Gd}O`
zCjY9R<&NGa0g`LEt-WeCygATKlur)P<0a~3wh{Y`Qm6M}mzYK#<5ruWhbQ04gyE<@
zN8A-nuR17hTUiUIxHfOV%B at oUH$EUY=%z9b^5iSEf_fVbAu}h1A6=!lCky1UFcx*=
zGhMcp1C|?n>cNM%G^geCp0Z3yI6E(`!W-zLzY7+Jyh0jcW+Q?R<L`Sxxdw;lQ3)?!
zus=lPzNorqv#HasiJSgYnJOSI$vFR0+cP&{NR=i+s=hhMiG;yiBk(&9wOh}G?ScF%
z&o^@xJN0Yqy~idDNDm+>x)&65VNOmG&$RgkM(0o<WODHstR}Yd3v^6B6Es|y;_zDN
zlY6Rm2 at b8AY_ri(S8ZsEs at uusiyvlPaTwqK;>x!Nhnw`VRA`|izFx8GF4Ehqa=({s
z6SUx1D>e&d3 at VoSghWJH7<)unmzVwCpZ2fp0l;DJua-LNbZ?kb!t#vzyINNaYVjIs
z)vW)m1>hY at QCNfASz5*G)K|K0XXVq__mCp1Q&)bHZUo1QPCl<U!PBJ5oq?EfYtfV7
zn|Sz4Nr@^p2N8cW<tOr2eAJ0`CPn>qgDv!=l<fzEjNgPOLZXIaEs+Y5aN+a#B`33j
z?6|_Jv3TxNWftA#ukHBV{_TN0&szzlbS@)Y;#WEi8<~qLrVoPEOPhjo{nl6xX*?nq
zuQwPeFNp46aOU1>j`xBB=aS`lgaDbrJZR$A3SPbKjGMly(*G+~v72wOioe<_wTizq
zmXZRwJS;dC{Akg1+_#+Dzs5AC@<r`J`B3L%A(te213{UPF@(H29dr!?&H?5gYCnm2
zvb at o{M6u#(q&wYx8OjJ4)}aZ3ues-hzxym+`(4C{%$t8;e_YLGPI>G2tz2U+W672F
zf}jAbl-p}kU`L)OBEMo at f|r&$rE|H;RuZfKHw#eACqV4~wP2dRo#S<)_1mP$Ti>rz
zK;Cib;*0F%M&CL=&HXX;)6wqQE$y)6d>#rWrZAz!-!Ew$n7Bz}fz0M{=N+`$;@;!i
zrC9}~5bvii%$9dHb#o7`ZWrYewP5#)yFXR)^@n<is!5q*Gj&I=$(`!Na=^#fZu3?I
zbzGW6MXl4m>5J?d62~jMoo@?R*MjP4lP*?MKP`E#Q|4ty7p#Tr7}sg1HLQM%Z2_ at M
z(9S at 8b&qwzk`rvo*n~odzmG-~mLj!dl8N>2|I{BLGLHT-`c?bQwdQQ|mwuzYr?l_)
zfjI4&z63ilSU;{t&e`>Zdm>xo`-NAxHt5RQ*Kutqy`lk>38gHHJAAj;^uWhYWt?dX
zwL;-jw2KTfUUS?mSfA}>itC|yZ`p3iKBA_Y6qzl!QmFBbG)0antoXE-Y3qyH<vc%=
zD5(X<h_{$e91h}JhL=&E>B^L4J1?l$v?$_U#;;fCsDXy8fBO_<f$|G-zdZT&c6CbU
zn!*Z9-LsI=EBbTeQOZbO9&W@&xs}-F)`q!Fq=V at b_xW)LTjkkg3`RUWEag+~d_BoE
zNcRO|`7V=zWLy#{sN1P<9V{ec&M8AeANMJK^qqBnrajg_=YP|o9eL9$9hfiZA!Mnx
zr4^3q?C)(~=x88XxNhJtk at Erz$`NU1lj&}wG=A(qK5U_s*qJ2^DSBXi&${Y&K_&XL
z#lJo16O2E-HEAUzLRm20y?do|g4vGoF-+r8cDoz%t7bQBAS?N;i%D{Cyyab{%a>0Q
zV_2x`rEJ&kx at c`yhNrB((9Zi&^j?~ksP+op6W*^nrKWF?SXxCg at -7m7nSue#$>`uq
zOf+c+89A>p5UMcH?8RTG&I&PgEhNR4GmhGm^-mq=LM&;edDGsHk;Gq34eg at u1wA8C
z;lwpx61r{S2vNoj8P2H^>2F{`8K#qmu+IZ6uB&4|Pc9;b!_QfI2hD-RnYJ5R$Ky=K
zdKjw~Mc8=I1HR{8kkxMMycE0=c+Z(BB=#sq2!at1kw+F1RKZVv>60QG#$yV?v*ujg
z#ZwlfhW7e*1bv2LEgID#EfG794i^P3PPSkUBO~jbCn49HibFzLJ6<{I)O!4gD_VHl
zewANDw!VKl_e8sM{UZ4+2qoo}$LEi`;`D)^50gfV at N?@o+ZEo%t(hLkx#3-(+Y(1n
zKa8%_h+~JbIHb%k|ISJvU6ytV#K=sgBFuQDz$vxamwx@^rp*9v)%*#FKHg*eRj}J4
zc0FB^9M at D%BBi5{cl at I{E~jaaY*dIL0^ho^-LEjn7gal!s?5B3hYb_V_St_wO5LU@
zwKLv0&sp?*jUccXs8o0}F0r4*!O8VIOM1Rwn?dZ9qrL64E0@{*=CU#93^9#}QU9*_
z;|fQz*LmEAh)-fH$mhFe|IAhFNknsaV_o%vuimh<?<LcM>)- at FqNPD;c+=%iTOmT$
z0?l2iis^{){PT2rs5^}drI+O(ik&7tMg4P{KsPcvbWlqSe9~_wwvt{b1pNXxeBoxt
z{e$45r*%<qD$@Xz&pcpU+v4UY0X`WsVuL)LZ3_p3bt!Wzoa(9BGWk4WQ~hkym3)Ll
zn^kakgu#s0dRC!zo=E0uJY~jj!mGKNFBHrXE$>yE-<B$vR~mrdi1{4Jk at YtPoiur6
ze<PT%;x{im*cTvw1&R|65^|0Z%hu11TvDJYA(^~2C)S=eyQfi{lE-!>J3NFEd<P{=
zhvewHw0*q8ICef&>{?Qfdyf+X9^?t8nf=w>{lz9BlA~fbB6IxorKaJrHth}eXS_#j
zS}#9f6M`$Vu3qv`87)~%EG_+nx8^uJJG}$pc6EK;aPJ}V2ZO2yB-L9O82`nKiWA~z
z^jzf>TyGnuLt3UolBchD>ivD~W%mUte-mj|TVR>uJ3Q7S at +vo{P4*;PNeSB%vYg<O
zCU*wKMGXrgsnl7IUur(Vdy3mIZ6^Prb*V9nw>rzEJnQd=ESKsmUc!>rq7)n+Nt)4%
zVTSp(dt3-d7X=e-5aV`b7GVpXoV6 at LOef1%GG2TVt(0W1Q&;fnIN-YE(%4tG$XlD?
z%o9PTxRt-{Rfg^r at NTKGYP0ocu$<~InC+sBc`LhOf9`Q3MG-AnZYzOrMc~rRC)!mz
zArD at CV$tlmee!vm)L52hgs(WM{aIXC3m*D@<4A)A0;hue)VF5h*YbNkJ)%D17REr+
zS3L-;$dblaaP6g=)4C1<yQe&ByMN~FOW{<XiuuT^SD$zELvxrn*F(8sGS)BA_C}{$
zCLi{=y<2kJX9a(jI|?K<gyYQsb|u5_ux-+w95z2%Wa&=r^?tgm*RkM`q26D}ezKel
z2-6o-D?F<-NZUt4o83dHMFpw%2iMlf4pEm0u9`E~k#E$0#sXC(- at Z+P80h{)#m~L5
zy<gdD+ at B>nj3sNGO(Q$wvYbGLv#bp1@)$mJBK+oM^~>yV#_XQF1Z^~NoTh8~HYj#w
z4;zf@*T!G#0p5y>8R-j+Jk8cmKQvUI;Um+Ps at 8WHj^<Kja@=kBW|2uDRbayBn1IqB
z;^2MDvJ#x+cbj<s<^d3>SGK7fx1(s$ufaa4l*bF(yf}v`NM;f)vsk at 0xEOb-k5GN>
zT5S9^7TvZZjlGS-Za7e3a)J_Sa(jEDdc|c<s#5>e>qThQdg8E25BKA0K1D;~2U?t7
zbU;Q$!ILu at ZHR?s?~E$TlBRi=U~e0$;wrb?II39k3PRWBK2JXB6d10U)AJdp!M{@6
z`*@z!(j}TH^;(-amUal;I&a%TJjJJ({6&80TVCWyn(!XZIGZJms!l;PVVQ(kea}Wu
zv+%(UfdL-llo>uD<)5UZ-jWw^jU0zU^36+@(pD?H9wOQLEZzgn%AF93ADA6<myW_1
z*5A_=ibzU>Ak57mU0428O%1A4naWX>J~aW28Tm~kVVXft4m}H=Y_?bL^=tTqiMjDX
z(`NYQVP1qy%mu^l^F?p=I6GMiPEW at u6mV_QT%UZ{1rn0BqeuO}-i at WXSuv@XF>_(K
zavRhlzstL-gGHea6o at 8K^%Yx%Y%;)^y52IiqzIXZ&{i4<*^9SHdX-OKO(|@Jo at 2CQ
ze^9X*u7&&OIBaz97BGFDo=<c4Bn{aMNcHPY^}8j|qsqGpW-!@xq0 at lp`VK~ScglQr
zozM6{tf{Xad<u$JnmSRvc^D%%Iz8?R<*nG|Q=dU7$w~1<<?&YPDCabP{%zI>s4`X#
z%W5x^$wuH;`g)Xmk?#m*=;!J7nE5^jQ;zgK524w%TZ;}<Oq6~Nj;NxTm8%^4dw0yV
zQbJ6QFh*}3Zm{Lk0;Nv6uI3B)PyN{9%bgUe)~_Bk=<8IbhO2$1KR03-BBj5*2mH^>
zyR)HrFP*8~Ly4s%qXrjbRl3HLE6OU!<S{CL=fgD=j3-3ed+X#~>phJ$Es16EKcj*S
zZS72_KaCEmVNa;2|JKu7#OT3(JY{xG)ZLHEkEp?P!}>GdcB=&$H`J6OhrQWoCG1b@
zU=M4biC2WbV8)g#YxQ`zhY8Ztl*8%4IZHM`%l1J1Xe>2R8GJgw-{;!>FsfO#|4qR4
z1Z`A8ptmIF3u at +c9@KR$OkAHTB>iTrNvyB=<iwJCYYr&Gdl&7dC8OoaFs%|V-{$VA
z5 at 4s&%lCI|UxZ-0I;-n(<4Igo)rwRcAB0&xE{>hUd5~1WwXm|akH{1r$|+1eTb}j4
zJj;yOP5HI<GUgwZQiLRZ;z?K=0=22&Do24P2ztgt^&LrAt?6&m$mOpHnLCi$%rGBM
z+h)&3O94*Fss5VzKCC{nJ1wl6>hrXtbG^J5huC|jHuw8Pm5`J>l^8D}y`&>7F|f}^
zyp_gVzekJtOqJ}MJVO)xYY!Tx%<gMit;$-*{kamfK-hwSxv>3AH)-anrnE?Eq={>}
z?N0FKZ_LaF?wmwD6u2|mB|Om(fOxO+u?xNnB}(_*l0ya}-Hp$0Y3T>fZ)C-K?rjH!
zszp|Fb=~Hlro{C3{cNeL^7J_g`-z9~5mQ2~yO)yn;RLCDeI7ZCeK^57C=7!h|7xU6
zq#mWD;#K at oGml0!uu5@#)tGfcKQ3k{!5R$sV2qs<k`{ix0vwH%Be3X?yI0A7__htW
zTGFiJg^R59?FNOytZ-ehbBF%TqiA1nEL~}^W%AinubICV#A at +jK7RmwOhhr?Hp4<*
zX4krhTaRLAfA_^)v-(xDOFPCYzgNoOsn}}nI{5fa@(Mf;un>%2#68ty$0L6_6SI(y
zO^f5RK{QgxVFXR?*T(EHPySw5tNQP)>n#0`!!?Uos>JMzitLzHZ_yl5{}Kw4UY!o6
zZ(q%Bn#1{RD)ejALGuFK2Ka4%+88uca<ti7t64OFM5UB9v!Y^gf?;$~Ys4*76(0R>
zHUFr^uf78XYrF;MHM`4D%!P(#JD3W*ngaYY2WuE<XV#Hyc7h*NOhF_W&GAI_W?|)}
z4G$TAy!z)L;zTzweIBY>R2(j5yDZF$bpZSjhYcc#oI5$^_DXax{Ww%(sk{E34!Wt1
z16FqGSh>ve at XW9qoZxVqzr#XP1aao<yVU1mr(&e?RlXl?*=OgRtarB=6xtD4-4Z0l
zv=l)6rCbY$XCrTr*VD|KcudWY&{X!3&3}+eITH55Vz6zWN4 at EnNoa(r`o#q$a@?e?
zFvj4S=<iN|lE}Y9FTR$=DR3~I#%*>p0P<2n4}<<>{`o})mS}5(9^Ygz0;{!~Kc7&K
zI{PSqNb*1Wxdr8bUvnNg>n+Uw!BhQj#LpF5q`@o7<Dve{l>=4w&R_1$ZZe5gn0syR
z*XkWqK at gLqSN{njH7>vw_B#SuXHz5X!)C6d9Wiy}uPb1*hL<Z;?41a#0uaNqARH$w
z3yS!*Vq7CuOk?6XZ{RoZ#6L-<2KL1Yl#I#P&d>LuAOBwl45GkQnKgEuUg**xwuBEX
zh?WiVb3>#=(CcL#-L%;Rb{v)vZ>7sf*DcP6hfQn)(m=T?Ml$*t`Fxu(78^8P0Kr>i
ze93*p-ozLrLE_HEn;mIMK5aYLhyiT#m2Bc3cf#df?erD5=yhn3evN0{ysjSaY7si`
zLFzx9$pSzF_QS9<Ohk+3NLP40%EAVG1h{B3V4T7NrTp3 at hluLUtLV2evZ<yWq4Gr-
z=PaEOFCR_(P<~(&7-J}<WeJGQzaf$C^Ydw~futrmh7!~Jp_5i57!3xRmf+oUiUiFf
zyNaUX%<eCKp_yPdNb?$p4faDQ$EH&~Of9ORuR1F!_(DdpYFkQ`7xDxuXXg5U$;P<P
ztEGR=%r(vNhZKD4px}O%Tt3cD=8<SE$L{&&zZAc++k6q8HilIzKi{UtNbB at Gv^#P>
zTYvx6A_Pm1{D;cZO=D6M>Q1S+Am9woL5f|^y&uRlwld<{W3XlESLcK at vo--i_&S2!
z>No#KU_^#Loo(<S6%j3eN5+yd)&C$25Z5ciSdM^sfWi~3!@zMtBtj$Q-t{P6``yKI
z&1#A at Tjhd;ptr?b&lTL0w{p(_)yD>sx5}LI|EyqW!8dRU&eL!%o&6DPiARz%I7v3L
zu!@lc>w+eC8EmlH4X1odq&ak4v%1!95mMl#d{f~6e)v?&CmB7I+nq+Hb at 3lHCb$}0
zuhL+w=PNbF0vRj>{(_bCjYEQ%>dk6``#fDb96!gwlz7!X4mXQU2aDcr;oVUce%*|j
zEA^hpAUPZ4c+0_t%KJ}XZR=7Le at LG(57lXXpvZ8&M<dN49|o{yv8S0#a)3&bbBS5u
ziDL>4R^OVe7`4wNU;Gm}4h+B%5QN2PLk4BHtEaCByhwkT^Y{nU&8OlPX;fx(utA1T
z|IMRCf1nywWOnRi;VSoF?(#UvQNUdBOMQaihk0`a?u7ewjYRkP{IrhH3*cOp{++8+
ztV)ESlM4NB1s+38?&zKKM+5-9M~%!pT-I;Z*35RF!RO&(n$<1GO)N<r<UcEmwwz>P
zSdru~oPoA|ZDfQ(AfiPuC6gu<%XyS`Fe-*zURfNN0o>+3p%RtS_sY~L&!oMvbt$%@
zhrR-kw(A!atX at ATj72QWuxqu+enmmaVT1MrqGB|;aD4Rvjs)f5PVUuVtSxbPvEb}0
z^?&R$7ZotIV at a6h_`j%|pD{bcx57Tq*UV1vzkV_B_6bDwhL8-vLzMGvTv+9ifdYt{
zhxim$&w3`zSAPUNPEfy*b(VJp^b!u}Wit&9z2a*dyQJw5u7?MIttt(EnzS?FvZ8MO
z1f at iD+Pq=G1TKK^*|uKlZF~zCQ=?_ccSjFfj;`V)KktisBrLm3#H5w})A0Ug_iKFn
zn|(t-S_fO)>rt<5*pC!2M=!{CV&Z{gwE>QUgb_m=o5?Jv^3}q*UI|Is9;WW%(G6fn
zfZzoOCLpJHS6B>CnOAdd(;>ty2S@$v%cpd0XrPLMHCX0bkToW2-hJLn!uhrc{36_<
zPyDqS$@vi^PN0gB4ol-E{#vq(x^T~ThLV{K!1*fx1O<zfGDzM6PWH8(m)UM5+zr`f
z(z+w6^RCG&@O1%U9qL;o9U%c=>j);6mUkm_;L0K%kjGwm`ZWg0^ZwY5r2!qQj>Ff4
z%)k)Pd|NISDHf at D&XjoE^HgPhaVy#{;)|^M6B7y6n1cz{J}08WL_2rG>?fb5LnMv_
zM2|DvVgw+X)x7E$FWDftAi&uI>OpH7WI at zqH+$y9Y{_FN7U$lj$X;Y^u3!h82mmuQ
z06Qq~FgUo$!E|e|YR(fX$G-etUhRe?-rGaM209%Q|K=S05CfPi*?pc3+L$&p at glXS
zuJvhB at -4@FohN(IaxmP0+FgYGA791hX>;F9V*8kgKkI9 at ro0ICAj?4qpMWI*3<3q#
zoUul6eHa3WY+^vD*{+m&2Fm{AZUA*NuH5zY)54RHGy?E39|n5pu9h~MQyw#9q=ccJ
zAh6I{!sY{4V{>UFAVx at Gf@A%qw~FS!pwgPvA;CG?pd at V5qGzitrCGcnKg<u$zVj+u
zh^!hb91Y%e<8}OKsp~FZSU7}>AnUl>*B%Xx!DePixKjZcX#$8T%(lr9b&x)Q{17qQ
zcd94FK8-y8>GH*4fE?xl=hPLnQ~tNtm|xoVSK!oe6GV%PN^`Xod+t{5@)O9Su;mgK
z05GD)p2IzCEGWxi-!RR1D>c=sArfP`TOYG(Fbd*!P98Y{GN%AwISdPu0#FaQ^7ST0
zEc92o0W5#LeSRMI(nC8nMJi4Ou(6m!6t^3k_Sf^-9y5U264bFtb at g3R!K~mDKn~+Y
z%SakvXZQdGkt0dOI4yE8{a*HCkUqn1vK)uyU*#104{R`<;Tw=QU}XEZtZbeh0T{}`
z0?1%`sXkmkA5Gnwq2R{TPACG%G5@@GCMI7sot>vM{d5jROikc@#rzHw^SGa|L3*Jy
z9}wn800_kbw2`LcVaMPG?hhiUw*6 at YE5)Qfb)^AKiOdH?{zE|S$pLuqVC;VP4-irC
z=WN1G7=o;-6HJ|U6Xf;Z$#!jmA7ZjWcmSs+glWBcfVJ&TNq^k^@LfY|3VUZKiw2<b
zA!o`bGhMA1A#{2}u_0v|MXMjPcvJWO0vk-(pJ1J2JAV$b$2{XvX~Os;_7o5DuY at Z^
z1y41;1Q^&g&K72jJp$Eee*BG0K5JTfNgRALrWc!r@}<Un9!XoI_5_~2??TijzVQhr
z^g$OP<ZS5f+&2+%D1-J8+>;?N59qI#vpum;m&ZNm8z3fHv_lKsI=}FzvD8INjfA#?
zq7CzHzmQ0NqDk(NAi>*AU4*~3A!@=zW1{2yGWFzODz3{PS?EO#h-?U2rul0u$EK%p
zT0C?Go?820PHB05bg91C*xFg7!GmGO%i2E0?<I+)OzuF0o3m}q9zUKW#3k8ihsfA}
z%iIDwKFXfxbxHoN!Wl{$93KwT>p%5+RDXfnGOG6}EwYU%z2VcUgN3MVS8t+1T+Q>i
zD<Fxxpq at PZqpSD~`-!IK)>>??4|}as-?)JJ!;s7GG=Xlot-Re%C0h23y5;IC at Q^0k
z?u*M>ic*INpyx=PkDhI9p;Y+CgCHgo^|-$@j-eS?fXn1mCdSHPqaYW#l_jiQvsiR_
z7 at wMLGq8GK|GK{z!Ll3Vw6*M~cn)jS30zi{Fo8K!U!i|S9 at eAGzlL3N9Ib@wNe07c
zzW=LDc{!%{0R1vc5`c+8>7_|no~-@&t6ystQQIgt+%|WMujy=RRR)i&Xfdec$Qmnk
zn2w8*D*C67_4 at aT{m6wqIAyO`>XuETPB=boFYa)E!4Fwpjv)AIwSIeD>WbWfh)9UN
zufr7Nv=mBiXGv5)x$EN)qp9IfQ^X=*f~VBGnxYO_#XV#OQhJ-*<QDE|V@|q*vbij;
zOutiTp;KIgj>0>0l;cT0Igh+}`aN>Uwa3B8^Z04RT at Dsk7zPR|Wnaa3EY402pjcOX
z&Op!)mZcApvZp+Ia%tg8NTlt%cGg2*&wWhI{$~#!&2y{)7kjR2SD>9uuh=jwq7e at l
z)Jt>l{DXzxWjUpA3drB3hgjn=0C0**NAG^dl#bBo{q|gfIgwYHJw5cLn~LF+`4Wk9
zDq!{`MwFukW>f|)Sj%*|MSG*y6+0$SPVo=a9w4<uANml#UJ$l}G_xzCu!cwGK at kD_
z at nRnFt>!?eIzi=7NA!s4?<EyQ6=L_t8q2$0 at Hu^&179oem&tUiQh6VK+uTnoZ%h@`
zCco!00*grj8G=mk*zFtU%kz#F!0%uWudFdF=SSI9Ma!RPUt-5a09}#skVTc*mj$)z
zGp~u50OYF{*F_Y>v-BFQUzDxzauNl!qCWKe_Rg9=ZEi7s)jh5sqX1*!p(oov?QbsS
z(h~uCLqUul3GJAP0D_tI(g2!C!C_9yaWxE{Y^#7Bbz-An*aCQo?#GW+0ckn|aKBhA
zauO&{wmB+y?IBK(P`xSBT?Cp+g>m41p=<66gnE2He<}#mi!WYl5&*ha;A1g%)~QiF
zUZC8Y0=Q9p)c;2WD-AE}Z9DlfV9L)#E at soJ{*}iHgY}8oAV3{1hX_!_2G)Q0|NSMd
z;?*+Cc37_LIb(ABlTtA>ar0%q^_qKPKVYjcxB3DV{h^x at xI&+NnJE9h59|z&XWp0P
zk$`--Zi^de)_&Ki$2cN-Dp<_@&6-Et^AC-u7Kj9ZQIdsn8eO?{vF at Q*xtGqR6~W(X
z7wTXvyB)HJzoorsqFGFZSB>F2KOPc>KHbP8!phC-)JyTNS-0|t+d{oYmAC|7xIG51
z0+0?%XD-9*Z{o=Uxl{!Gi|+fHA7A~&t%^%A(jIwYgMNPWbw!8g8TW+E^)lUA;d1?s
zsU3&PSdm(I+_Ru}tv$m at 5EAei82k)oa~m+*Y%DvP>7u-RT4Fw5;NL6$0BC;MD#8l)
z9b*?kk)qG=t4tpheRtrWWD(QqI<mgSir|m_-i>tnFgw|TxiC-XVn`Bp(Db0mi^?Kg
z(9azkC=hVHa(H0CPvou>^YLoq;CS2|(-VRV6Np`-9e2Y61dY*g-MyRT9B?g|KvyjF
z at L15&d9Pk&!9{QJeU6aJM<c!JIzMOZ?EF^lqo8G}z)<|-Hy;!)Cy%yZKwl(z!_%z+
zu1Dx$P=m#zr|)@J15lkn6GhXaZc5zTo0Sz;rS9=OqEbZf5)6@@;d*UbB>NQ2xYSJ-
z68JUv0ATvWf_&^)zCUz%Y!_(pMLi<l^@POEH7eZxm6|9%qOg#sBw<L0@#UmTFBOB>
z4hX+Pl-)!Ymnh*h7r&&pf{NBQq at t#q9S;7LOXzsuG%jQA4#QW*n*6co(RfR=AP3EX
zcT6_FKkxZlF1`3W+rx*ROdWDnK@;+HTn_wb_~b-;_LpE;9>1Hbzevb-*|_P-uA`wg
zs1e&L&hk2XM&wKk=zLU_$LQu9SUI%W6g~z6rEOfQTe3jI-S%lRfpxL3Eh1=E>IGw<
z6&~QdaQT$G at s#%fKZ}J<xxNf^E<El{5s(`(f+BF~4zJH?(91)UQv&P92bzzfG38bY
zWi}2!J{^bX{CwQ;Gjj}G=!rGI*8_pbRGB|Pw_f at LXo2sm{8|y$>_qj}462Ky)Sojw
z?shYyW}5Aow1Y_+_OYnGj;5-P7_lB<FzIUYX_x+QEkJI=XQ9;848g#y>D3LRTINP$
ze(W!J15-O=t(+o;zzSI<%QpC2LP-a1s8|Jcj0Mxs`||9IPnScKRx&=R$QrrFeNk(H
z1-g=wBdR0df9mI!{}pNI=5Aq!#4K4^SwPz8sT&_yeF&9t^3 at -o2`ylm$;iuITw)s;
z?8Xf``n$In8js&dGH<U;DPjlVQ7Z9<-7_7Yl7D`mUGk!S?_Y(Fl-r_!T at auGar>+_
zMGn#2xL1;ObA->sMZq(Tf<?3Ku(8?Mm$yBKZwoO)Nfh>Zf83tkSnmpHRqS at z;=3)d
zVBzX>C4lkEf$q=7k5qAgsVe&byR4$C)Az)@=VJ5QYv_c#nep(;zyrj6E4VD497fqs
zbAgZ+6f4UuF8l<T>}HO-*=>Q``K!LIk%4li5L{KBJST1=mAil#+rUWgHYjx>I{ZjZ
zc6vtUc*QUH+8SwD4kpAWQBI9-5t`!3z}wJLELF0i3uGd&Qkx>|U*`LJ*@iygH|^9&
zanMxSdDuTuZ$6b^T?XKY|Mnmc0_3IdESGK8!k6z!NPD=j953P{<fH6f+P46*6r9EX
zXyF6VpG5o)=Z^`@qdu9|xk=lo!y=d~{ZR{n^_sNsib!6Q<dvM;wS`;oebLPnHDQX4
zqr--kpjhe!aWjBN36JmBAg8^%=Pm|k0W0)();F8@*30<+Q`}odMfHC1qcqYDLwAY9
z07^GV3J6L`w+u)(3?R}aLw86?cOxa8f-=%Wr!aKG|9pS{`|iHFukM?(*34PYIeYEr
z*?WI>p88}ZNNWX^q)UoNTA)- at RmU14sP`Xtk at X=_=Sr at 7Co&cRIYo07CL8p<qz!sZ
z_o<{9wdUXO`S at w3Hk^)#ek4%GYWdaG;w!~)fRBA7H3JZfb;pyxbOmR{a-P)AA37;H
zCNBMW9~stHD>nZYLJ^l}ys4KvC3r;=Vq4zScK4#=QSmkh#S%trZ-8LmzY+e6a^H at A
z>N7wK2WDjad!rb8T}=Gr;34-$(G-s|zsK<Ss<G5K|KtZv%I5VzW%drEG>cV;@7v<+
z$_a_;wbLPXH;pcb>3 at yd)x$%n(QcBd+!C7iH?Gn^O~~Uuei+L~76i&=sTk{oeUAJ0
z1ZFUB?BxN$<XvSN(nOV%K}Hwq@=cSboh=NX9GEF;q*W(<I!!oRJ6}{9j;5MetPY_X
zImx?l>ul at ro&cK2`LIicVLL<#<V0>$sPk at DgJ~{n3hTdKhXT!S2lrND9{#fN%JC!D
zTPa#G`Uf2!2ET#;%?b`ss&s2R9McLoIVQv=?Ox;$A>=K(yGN?nd$A^WfF`??ZQt1u
zjs^Dh7bxHzlO{Fxxolt-n8e7i9>EOZ?2xtgo&5D;?G_ at S59hFs9{R!OVq2+dRA4?;
zX+mZ)V)j!g>2kpZub`vA(OY{XesL$-zM&VMs^IDaT=tl;v+$Q_{G*umI?8h^K<n>b
z>Gq2xJ&-MaD9LKyZy6iyZdH2GsyYqP-_<OMmcWbwao at ukdw0_NE*d`Z*~Ksd#SzQ;
z7g(L}wGTt}L~CJnwdNG}-tQd6x^Rqr<28IF=kygv^B^+?CP at g$1qx6QP<SLGhmngQ
zaqb&FUTX<LT)Td+7@~IZ(>2_8pBy1&>ir7h`lnbYtQdiRLG5DGIiX_hbr^;P9~JNV
zuE1U%&CKzR$pjn61aOL$O%;}WZ^=l0=n=#rsVyV+E@{^L%%0RlJO<I6ugkO*^r`Vb
zng5(3rZUapx(lKI^bb`ZBeKCxKoO4>8s6$MVp!i)6#z)I{i@^&CG~$W<bVI33V_zb
zGLQlweC{X`8KC_H2EdvB*AL)C%E!|sJ$t@*r6Qb|<lrw9PQA2KAqM+>pG;<P-Q)AY
z$_03j>QBb8wRtUe#Tn*qM|)s2f{k5&S68UA1Nh5ONe(H4j5cv3PzkiMIZM-z^U}&W
zi#b4}MFeM>rt*sI-ONuzmVozT3b)*(FN^eSqR1sr{q3P-ox;*9l%<3TvB_VyW*=i)
z*u(EFCA--Wx!y&Kn4}zg{dYwb2V>1rq>Zx-NkT-`%z{|w$q at zSK%k*F<2FM7`qn$5
z<rqJEvd+QRXWeg}@ouR8?}EJm8!He&qT`Hs9VUqE<MrLCb9yV|BVQ2Jz~=gEwZa?@
z9T{^y#c|PcRxSTGRe!Orn#zM&bFalx7n at 7i@JOk3mi!ti%P9Kod$P=R9>xoh4B4w=
znEChR#Sl+VMD4lv5AK3(#$EK3vA!&`-s}OvjM+}<Y=1%gy_CC`PhB)Cw`%bfEh=TV
zlmu+3ItOHEc|arU=jX9m%%}!ebYIKnnx3n_+k?zBB&<G&nvIH7@$?#^Za=bKic_xv
z_<~!6-r-%cNA3 at xmyJI@?XK0j3gf-gFWEwkt9{VlxwX9h&neS8#;UXeZqb{%k2X<D
zY3z&`-6G*j;9iYyZ!mf_0P}5>E0lM{*~Zcbs6S-4e%IS~xKy8kT=EdsaN1)Mw)^&3
zdK<C$D!b4K8AB-Ei>MBLwu!8=Qv1v=F3y2y9$iG+Rm26lqgl20>z4w1BiUYm4tZI`
z*1)Q#4d%svQ!=*R2&^;_00Rdw{^q60q;>Xc&g0s2j{J(D2-$HCkxR3c*%=1!dQjbO
zv%Y&j7K6fYVLbc4 at gzR0L3a?)b+jVn at r2#i=@7qle=oR&_A9>IQ|vgDzoyBe-|MEs
zQT4_++uy at P-v?4_+|9qt_+`X>E5iB22$-<ZS)Dw7&UpK(m4Mm&a|R7*l2}aFltd$b
zckYmK6p}(U)H}Q<mw&4cz@)`Xt>}Ed?>c*B52d*Jy#I*R?puip8j>dG{d$LCg`{;k
z6F9- at _QSmlB)IENZJxpHPjmlV>WLxdeFaTFE5BOe&m#{>zby5Md<=M!!1q=Ec{s;V
z>zmESy(+0m%0w^5;dP^>i2r2#rN&V;{gm!7``HK1o}eU)We`cmEi;>Vdu1q_owGme
zUdl25{+}c?sQ-f(9NN}R+dTGQdY*eF<YN~Z!1t|mWQRO<XDGV#c96+H=CyQaUc`=5
zDYGbWjMD)dKb5oj_r?aOrgtio47$^7-IC`rk(Z3Hy<o#u&UwCmBf9tE;pVtZ(VW^f
z&4VWehOxzZoU{`&r-IcIOO?NqvEG%;#o;8j+(yKK-QxPhT(>c9yZ(|=H8f_S|F81q
z!>`#+!%f*4;}seCT(iJxV|`Dpm4tnYwdIcd7S2})pbfcssrTgi=m**)<X~c_AbBam
z-%tH9v6JgRWDwJep3L<;NFqUyy~`%=;oXt*a=Ba1#DThhvHGx-AEY+f-^miWxxIK5
zeHE~%1fwlh$=rMa{*nNMoo#od#Y!krt3QeY(qXE-Tt3|bnY>b`OmclmoQM<thjRz=
zW<Sy##dv|)rQU_JYpZ;s_u%Lc*u`k%Oe^VK7SMQ*oZy6~r)H!Q98p7HTq>j};2ai<
zEiP)6Flk`&0<=Z_skK5M;pi3E5uFe0SDrqTrn7_meFxwlVhoP>W at WIe_VinX?WnK(
zXoIVt45_NO1=e`DK5)Y*4gU7<jP`OEW?zXMKKry`*oGnaZ(1G*gEv`zqpR42`8B*(
zphm|ymO^RG&!JO(6DkA at m!Pqu<D&si+ZDxU&PaaPcGo0 at oZ`H7pgSWg6i4HI9xtTL
zSF>&HnNpWS at 7VQ^o#d-x%M652^+5D+ox=^&u|LLA1{03rvhj?O_^}O{%+%RZHBNr+
zj`1p_eGg4l?t8LF2zEEB=dJA6BXSzM)<*xxbDL_l*}X$^#|UltsdMt>7XSfbY+L6Q
z)Aarz_g(Yx*L+--6%~qSGF7P at k<1<QXXps*n$xbv>4b0jSL+~8odn75jDvRF%Et|W
zN-!(;IOngtkWXv=G7YD`IX}pG*K^-I!B>1E#NImvUN3uuvlI%WQtzSRs??#P$zjmu
zM{=1ezI|JhM?euDSLl+AXL at 1D&lPQn%@ZA(pU=W#Laa!x=$B at Cc{QY_!NI00C?qyw
z-8CgNHIkj}eyV<F^REkT`hny(aM)+}N6OfG&cG$Yzk!Ms`YKj>bI;*eV*c&Y>PgGj
zYO>zD!CK2?f~#rEZHbiBHD(HKmnHGAUn^ADYO~NChFux)orMP0^NaD3vr1aI3LSy6
z8+HNqn0^AP(SO|TY;7+&F|gE_L<x=#!UP>?qxkRlnEoWlh)=y>P*e}Cd*x$R7J`{O
zJ7*%`?Yrq7WI%b?jh}}L(hRGgp at ZJr-UMB|9+4Tx`B?nfh~;g`yV}*W7_PIREBat(
z$}NowSP<|w(NKSE<##opM9&{f%_c7Y>_Lx4E~_c@?0!qNZ*1AVG}x4~;Q at V&zwZBN
z*^WK?Budr|GvokBY%&SGqb*gC2$H{?K7rkmj*`%hXB<qwI5U4!gqnjA0v)kb3MKLO
z!nobvwgwjqAls!MO}80KP_%-$0^_!3Hy?D?Lo>}jyBqrg)%cE23oH#>)%3g+#!zEI
zb!Y_8cp;G&^7_Fh$li4EWC)|wdif$7v=Q9|^S<2Da+#}wWgAyn3T&~jWV_ILw5pGP
zI^Y9;u1m^a<!XBh$NMaUg8JHoe=(suBDddq^zW)aJ87qN<ao5eYg^whZiBpT_nXee
zj28&zsPmN!<{F|%i)~@FPX~;}52u{1H#olh922AWte(nRzJVg2(%^Svd7Bqzb$Tla
zJsX7kyvJ#zj2 at qyNvG?j#~JX at A9>8mU3EA4vsqrl{QG&n;_vecff=Cm;hoQe3WTfB
zomZ&Duz49I{Uu_dA6OP$st<vx%#h8lKmq(}+Ks#hNujfcp_DXeXR1Y14>nQ1|LQPf
zq+Ix;fv{%Ucc at sgvz^Zs?X|}%$+N_Jx$QltkL(r;pjNjpoAkN<TH6qEFsuf2o%la~
z!nAiVu1{rV(k|A#b=quZ2}dv;waI9Hf6c&26d#YF3 at HdKzFaLb6nN7A+exM=rg}P5
zy+^8Hh{N86i@%3w(-8UjHiz>D!b_|8LxvO1rHd;~jYB3F&*$j!zI1oTQ|5yP@(=%}
z*u!laez<T2-qSw07&u_TKK%!ZEpO_K8Evy_o|)f!-$1`cvG!*QV_2tjEbNw4yl8o`
zU**x&_0 at m-A-<A3JS(<%a}BK=pU63jVKZgaH+_B1FRh!a%yxTi{q{<TRw;-+`R{Ze
z7UmlUTv~E3v at n8_xYUvoQt!svkU}oC@`CMBE;Y5n|9eGeh_=J;#P|9aC;2s>3o|Y=
zZ=Jf}4~&9+#lAuRZE~{Wgx3GZYYpON5rP^`ii&r5V)P}g?1n-T%qRYx3v*O2;MFKh
z?|Vq5S?`(tWdxVnlHqX^O3m9d9v|UTUD8BPQ#>Ti%kIy1gf2fJB+;aUME}npgLWb)
ztNy$SZ~M|W|F<B9i2F%Smo&PmC&4u4zctrLhK2L at q!Hf8z4|x@=t+-V5W4A!QFtLr
zM~HG4W#Y54n}G!89 at 82n>w(NS$h8(1<X5;_GTJ6M;MLZwu`CsD0zb7a8^VW|l at 3x+
zfgYpRd)ZwuTIXWMxV!oXVxuPAKvEVnb#!W^!jhk87C?;^u+tRjB7KMY<Bs}q0nPui
zzx)C at tO!=xvd?{-hG2qSpS8-z at keHwNuJC<0G;G<a2<Ky`@p}{ug2WRG}F7rX{Dkj
z>8C&|nZA{9LANod>qFrhB{ouk_}8b8?Whu6siX+lEA4W{?ZB<s{Etq~=WK!z2|Xd9
zsRytB*}gwL&we1v3tWJZM1^POQC%NOBJdF+HN`0B5=0JqxHRTlxGpCd+U-Rx?WBo;
zk2)wp$6~TA*aZHU{uP|G at hG9l`43%`u*k9-->@k at Oe1um&QzeF>;*lQvEqFa338Kn
z#X;@eB_sZd>3LT1ll^g{bw6J|t+d1_ggGiYGcWD>kTRdlMTkLvp34Yh(wVoVLjP1p
z)v|%V^4ag7HRj_IEA~-+B#4&?@_<XLngKRJ2dL>rLj-c(E?B%Lu!p0j2qUx2pR9v>
zhkI=sTVNM+IGrkp*Mbg98Y^?7A at F2grjs&xm;B5qczww33Waq<AOXdWHI#)4-4m6J
z2<M{%be`1yGFOjCQ*1&xiz8z9j|bL4iyw;})mKyvEa}r0wq&}(?KJ!ALlOk-)2fMe
z`nv4P{Pv&^EHMpdKlkJ4uw!#x<=xSgat at kn6oRc#_jqZip_96ur~CI-{02XYFN^OC
zJ=7m)K5V=tT|xWs6|D_&GEeX7GcF%9iPV1V1-aAJQrp{AJq$vmq9VZ at 6Gk1_J+9f&
zDwErx)d%q>dKs_}jZ<1UHWD-5 at 8$unsr6i=7{ixwJ8|#xHbj-Wbc=s}&dfU{np@~s
zNh(i;8^I!nLdZhYJ1Gk{317;vXaA9HhqJ&i;ht&ec_`jKRZ1iD4p24GieJP0E%#KS
zv#!~5rg(4N;xqF|<1@|pTur=bYEj}IVYt9zI;YFQ!Jv at b_>JF4qez$#;NrRHp$~zq
z;!liJU?&{)lt(82Ed~w`>7>q6b7JXp7(U#S2!%BSHGbpWnNb2v3V0buWfM=LAx2f_
z9PCSHEL#-ODe$oWZm>aRN1eFadKe$t?9bE4%Wk+6wa;R5(!LHGe(T0ip3sT{itS9S
zG-i0;t-Y*1IKpO-`_}#CfB(}J#im}~4GiM-=n3Dd+XIw+tDXCVriW_hSH({KYnNY4
z`%Jg+gjz at AeN-G(uoLk7THyJ=d>BP1K<<Tbc^C=Y^9nVg at RwO1pvDxfux6b9OhA}b
z#~X$#6C%1O3+VtoMoI$t$Ba<Oj{x{e5wyC>ln*d{qHFG(_3H_(k?5<C=E3w0KmsaT
ztM3SrygJvis!RYWmFc+m1WSmfuWUPn`8gY+M*qY at rZHo2aR$>lWYP1n1iL*b1cr?K
z1rp%&=;vsfry^k~AQw72$$GYrtU>OrJpzO8&@<6EnIZL+XwZ7Sv}SxIR-o<*r28A>
zo&>gK*3tQnUEgWrUj#%G20<bT6LWPvII>rr`)^$7@}IkWkdq1qmvn(`1qG<0<_=Kf
zLOuku52lO6fqC)vPm&1Y?qTFs8UzRea}j|hqdSu?R+<=(M6GnYc2zl)8&+ at 7;+y7j
zldwm)6E;K at 5;<I?;GQDeaL+jKKnRJf76KJP5BV2TYc&(h6I?LN)d;DQf|=34NPx!@
zTWPSHb0Djmnjvf(=(Tgz&2uXR=ct3UR+9-Q%y}3K)K-}TK0jDu(Y#QJw$41w&>hex
zs+!39;)twAfKepsvUvIENDXO-in#Epx?n6A>zaJHb}l~N<w<n2pFmpzdGIOrBY_5*
zX3Jc4)SBxKN>*i49ZeaUX#6Y{2wT|O#M{EO#x9l`#Tdt<agO2D;5o(uYAFk(4wRqK
z<mEps_EF^|I&p46<g}dG5RieJRuC7-z;!kHEi>b-MhvkbBuJK})dDPiWFo6?70W+(
zMzQu1!FkGjF#yt~1fiW@*0kXZfcEz7V=4!9 at P-=!ZLoG>+GB5}5!Jb`qW6EP&O?7{
zn1j+acQeoYdJxf`@9wa-?~V^LiKmc#m{wt;N|2&1!)dI&?Tw-ya$P`KMOik6KM2en
zfUG`Y7#TwDA`T at O{{~kMknZYBO3$d&fVWxAKR0<<R?@(z0WLr5_RR?=r+>C=Mw<SN
z92-kfV%4Yv{TeN at X;1u_C}!((fa)I4<&5Fod$RbA<dObjKeU>NquM#BLsbsm;Y9CE
z4NBVf+DQ^%^)?F$YbA at K$jr%M at Czo=2b%#>HcS?{0VIw2kJ_VE?Dy>D6SdSOtYjrM
zvjH`!&4<{ObQ!!b)c;mu3BG+~j0IDnw4j->a-`EA1n>J!3xNKHdMxmO*V~UcHUsZk
zx~b{#-Uq+&{hA1$lGpjRoo0L}YwL>gWPO^TFvD4mt%ky`5YN9gg^E`!T|cO(VF2-F
z`7V?b2gXdT&B6r)ivtNp!Zt*UEn9yw6ul(o at x6V)CgA`b8BohF0COOfKBB)v8%6DA
zdXVIik6$Iwc-Haytk%jcPNv316j=r?`Dj{Q?7~XgOOUX(lrnrr&Exy{f=$Q)s`{nr
zQVU^+z<;V<4bks^Tp<wKdT;KBV0`LP!Ly!bt%;R&8(0w at OrDH5C}yiZc*MlVIP#$5
zY=M*nd>*HYPkFUDWyj3@>s=aKKgeB5P`|;Zs1S27JyRtUoi1lzkfzM4Y9fs$@Nvip
zrPHaZ3oKKeQ7#%UM3Ipem>Kl2>Ug5%YK+#{G{<*-+(ABa!b7-pD041m&Zx6%`T42U
zOJ$_qZ*IZq=EfL?32b_TYY&OFwaC!5%pn~8YBP=aNh6Uq7<CZD>z66=Nfrh>p4!8C
zOzk1-sbCK5p#Pe<nWaETk649c_JDK=Ro#6B-p3IE$5ZVd6VH}e=+)pCC2u7pr`QJw
z{O-yV%M|NV{T%ciil3?C^U=ooxyRI1xE2N7P#Xn^pwZ35TTXNGq<b~#E91|D#Ap0Q
zM+j43It0V at A0z+3TqRC0%?&&A+`=D~+3n}%CEyad;Xvierh}@cgE;V3ELe*bXZiuJ
z at A`fz`giQzJ1X%hGOI-B?=<=$?$ji*dzk>K#N;$~SvzwDgb?wyf^DD&HYMt6qLN at h
zIe?T%HyC?bDS*=c_jwTks17WwzI%};Qub9QR9k{K#l<uNwA3Mo*>INf at 6j8g1Ye=Q
zEvgUN+r;3YSqkdN^0)xXZRWtBi9~s9yx`us1;d-?;;H~%#JJ9q<_+dhS@`Mo^NXz!
z#9eTLyW1l>I(flw)o795G~vTvKqU+4c-OQYw5z-O{{WXz)*}Kui^Mvy(%(<Z1djk_
z4_0&iEg>PeV9v;-9*lMWX5|<aFFR-Uml?aaeI9Vv03xHH_MAXu at chz9OArtV=6n%B
zbOrrD9wq>;;$m2hTdA~%Y2Bq;_Pb`QCl+1sJm{_^2LOnfoB00W>oKbk at g$%{&kb~R
z)<q|+RB+XK088#$RVq+0VOlJUEHyXAxkn8s<Q4!6JyX^4<xgmON)`Z25L&+(-vbL1
z!8KEgddX1qK|6LL>?|emql20>fZfTt9?zrkzT*Do_j$p|?P_wRRTTS|B7UPNz|9T%
z-+j@!1tpd9nIX_wFx>AyQ`wEe at LFxP1!<&ZAq&`LytxH#72I(Ft8og`167 at HW<18O
z4N*- at 0HaBWFI4=buo?#;R%H)lsX5qpMB{aFGMX>R>Tk24Ay$g4GVCi$aT+T at zd*Xe
z9ib`X*YHQc_NYmxa;hr<q_?hXg|snb*avkCxxq-`o_5T5s&OuKr8xj46i%1VbIoJh
zs9K3cl^`gC;TxiiD5b2J#IJm+IOnH_wN9en4zG)4K9Wj2d{rvv5Q|URu1hUan9w at G
z_|KG!Bj~I&f@&_<SOGYJGO4it>POZrT3K}dgz13pea!O<Y?_Z<ZNSEtQVXD86Yo~A
z_J}F4$_zjlFq+Y{e0kXn0e~buP0)&Oh^{z->Hv){z213RK|2>1+#L at C0XM~URMx$Q
zT(Nus#!lPTz=%Os+vw_*O at a4MaCE(!JFFDC^}M?~{OMKCWmkZA*1zv{Qt)*#><NA=
zQI1tdS3a$&mfo<Esdhiv7)=GmYuWOZ^i7`#n>`US`WLXz-<W?)8+3nkSZMX{pR#MN
zmVV-|x%debfSC-h5?vqW-8?WkK))-7b4SM#UdpPyd4HluOec-@@H(Ukxgw%n2s&Is
zCxG<n#C@=|J*}S{e>iwoE#<_rM{&9=(uq(u7ew+&XYnhU{JGZ&!*>TGpSje-b@~iX
zB^q0CE+bxe&F=}Pi;oJaswOmri%@x64WxQ}auf at BZX@E$%iUeulhyNZeOTUUtb#3x
zD?z>ePH<dgxW=}Rno)Mc1LWno9r*IOFH7;XdF<BdAmiJvdo0sjZ?VNI`i-Wd`#vUg
ziLqgUghUIqAwTAq-F+J2ZTQ!O_8U#fhd`1po5XVBPr{X^x<!F~V*h=`o_{j$iHL&q
zp=_ytw9eggAZ~CCiGlB*YTzIU5wwCD7Y2O!6Dxfx;ou$@1hl4jGkhyZe&f+)S3uI8
zcF89Z9*v6)X-+N~@eI%DxV&#TZuAqlq9#(>;y(yxxIR2w$}UPYTl>jA5=)d1CAjWB
za_cCg>=+fveRARN at ID@Cbe?!^aNi-~ha2qBlV+W+>+TNAG_zpsKbO<HS5tdU6x=|g
zFm`Lo!!3Czg`(U?<D>lIPzDi~i&ppo$xL11rl~b;>ukZ&--z}DOU;*;oxjqE2$-W>
zx7DeqBWlo1kx39tu=x3o=Few#e&5pXC^wY$2~!N?N3wDExOg*DSNN)*0#G>Lzuy?s
zD%bns>OB at b6P2<y(=70 at 6<&@T+Yn6a?w0==8Wx5>i{~>2p;ohW|0z$h(G-nl$EuB;
z_aIRbDtyX=Z=G&ATpu0{W9K#xV8ZKM%~+OmfQE(Qh4`7qXeVQ=>pgi)mH|#UVY at Fc
zlVL68B}Mhy$pE`KQjj<U2Xw0mCh1By&vpfwKd at GYF7urmVfC<*S&R}*cQV{xl?)Hj
zNn*6f at Sgd`P=>vQE8qngjZv_g=LBubg=Qj`=nZ97)bn~Fx}i at Aj4$YK*Is-;KcW at b
zp`un@@kSXfmTQWhZf9<E#!YMdC6|iQK-ph=;&Ng*-4P0RI92p6>ho0m4b*-Lg?vfJ
zZ+3h+Zt#plt$XGNy34%F^|e2jDZVK!ov?K9aa!N;fxOsICJG9P!hhcg*t&$rm?J3!
zPif<xItjWfaUQ$vf;O$PsfzvZRsN(uAL=XlC-}|!CJ%X=rrm~S>|uM9TLVKHf6)ku
ziG1asloxJ_H;fZ>9Cmh0vB6_P%0Uo1wx}%KY$^6J_s6Z$`9a`S1ITRPMPU;^^h+;)
z<jI92HlA5<U|#R7xB0Q1jv(YW!8Dr`|CENRxkHkLnqr6U1piIcM;&j;`DQ%vWpuNN
zwC!zjs!18C+Y^0{<bT)vKQUOrpQ0UW&Xu|+@$%Fh0GAaxhwd_}+FRDB2>wp(<IQhy
z&f at Vg<!+~#O%f~PmXgHjl0yc^3FyU>+mWk9iilQAYWT9<eTR5z5%*`d8D#$Ymu34S
z=osn)5l?<WsPFZqE{Vm=Zl$LFpNG*UH^YF`BZuP(D)pK9uje0c;Wele2crp!ziNrM
zlICX|olU7S=c1q!HW0*JUO at o$-Your(e=IZwHHq1JO=N++ at fy%4^uAxOLglm`xFoQ
z-<51TraoB7IO+{~O&EIjIGpc8-Rsi>JD at xo8LTqePvRo0Gj8SRL5l4P|MB8>Z2M(}
zh<s^>#ek9MnkcvCLYdy=<UjA+^i`fbMkna;RI<ZV*W^h1JT0Ol&%H(}H{hK9oRJ{Q
zi!RVCi(^J4lVRpc%smmGFUS44M$n5}&*MNG>2w@)zHvvW|5g9Xr$olDC^Z3mi$l(n
zrpF0m1yd^EE|-0HFwT|jW5|alO@<l=rEB-~U$zY9ht?plT<+PQoCbKJLLpS9aX#yw
z{K`m{O|LSnxn-=`>t*_l;$$2VqTZdUimmgm>6|K@)c*8Rg8u-LZS<j8cV{$B;$A$e
zr<L2~1ijX`R5C9?xo4efZJBwxJmemwk&!E$f(hB#ZOZlyp7^&@;Z|QEfoOUNI9$4F
z<3~fK77O;=%wBi1$nC~mKRdqghEEh52Mb0Xe10U-)Xd-d$DY1;d8-IhBVf%l%XLtm
z0BO!s&jf?L?Z_gL1jPp^;QroB?#EdMREVghY-ea$O93J6(~qac^Icl_0zHhh<_iH)
zY!WTww=_f-NhK#FJc-I%xh^*f$a~HV<)|*pMZVS@%(jPi)-z{*Q4`Y!^~JsxEw!*L
znO8l#-k*0~mT{kXR83^>la12OvQ?E?OpGg8+VQ8@*G7i$GlVVjC6ZhbP85Z&2L_ry
zjt;{m128__<QZSB at T|=y7B;B13r}$pML^mk->yCwBRd;mE`}0q^iIT(1xfIDBaHOd
z5IPW(SiNyFsr@{B=B*-a@&bb;ST+fNbIgkOTuQ|6j2o~q!yx)t(W|3~7Q3F{C;5Iz
z{>mRDf at g(YO6Ia!(Vjj_ebq*EAUZlkL12M^*q-tSjg2-JGBZs1Z9*5%;*niUUAR!I
z_j&afZ`+>FDfK^Puj|oKUz_qQw%A!~O5yIN-}5>q2yDE{znbwPWgq+>Mc+S|xb30%
z5ynW3?oVsLQh^-|r^$ST&6fO{kF)4KL;eA^Hk9I%Vql3tP4I}i2uqjK+cGHmp{GQ{
z9*&d`>2m}&D2N1tj5qDx*j(@BP17=Bgz_4YBGiZ6Mv7R3@;CFV7pwmchZFRh8}W&i
zes{<>|I;L~idXy-tz8k_sb3KI*-0xzoO77v{hE-n*HI$WI2d{Zho|uZL6#r78$RGH
zK%KQ$O<S06PM#ccS+eytP!4JlWFj)+iuTfUqbXA4lE5N;T2p=TBghQAotvx)b^ZPe
zE4Lc{8Vo3TczguRBwvw=3(7!#fUh(a#<C;d7PEQ7SXV1(jk$trQ?O|0Ceg`F9a%W(
z#Jr4NaNn%iymqJXox(<L*6jXx?ZfQ1gO at o!%hq<UI*;2DFMddw6rLKr-^AuO-L<dL
zVag6D^eFW1RL8G<$PpAY?0$Vz?e1yk<MTPdLhq)#749*T)jY$_UQ?savwK%|o)!4`
z4WD7N*;$a^ah`iI^@81UG+xJIuU+4plGV>2OVT&yJdIu)pG<J`5eeU$UNb*8XtzEe
zQjO6eacc+?ZkL<L?n+4Mql`W9uLeC_sSjME%b24!{AhPSpO?c7$;{I+7cOVV`fFh>
zfR_CT`aPy(Yq`ANo8A3~c2k|!$yVjX{oOhuzjrF=C;T2z7mTT at WS7nAZb8tU)S0~Y
zPZju<=O?|T4Hg?-8KrcQ_~_(3&mTN1M6h<Wl`SU*hwo^ACwKO|dQ+e0O&@h$P8t&Q
z(v0PX1g`d~r;^>$?<Rc(#@aYvLC%GWUTG|ss_qz68h~(D$PYS>ObKW at z4^;*%ECs%
zA}Q9A|1q0y(NNt|LZ(rRe>yo}p!?sl>Ff6X at BgO!VqO*E33w}QKEyqsE7$FZ<@a{I
zdcQIieB at P%(KLYfQl_{ESdC?{2LksHqPyD#r?sRBe|7clpZ*~xb9 at k{%)dmY$rLvT
zqQ;Nn)W7B_>Adnh3?~&xip~2uUAT3L+1gm;n0F`Y#vJ+a%vw=|ba^Uu*ni|$=Pf6t
zUvrXN%F8UoSQ}>QVjAmzuzp&Uz9fzW-MGUL9|@<UF`u6~-P-le6%KVDeb4v1n<m%C
zEVB`t5c7DkmHx<|dP!vKX at wq<E-2RR1$Fs^=c}pw;@n5OumIVZ(v(#^b+)SY`p4^U
zMlk%qpYk<puuyneYAmVpdN`g9M&KD?E5h_|JCDyQ(HI+QyJGTWtvDx!uJNPu3rTVC
z83Y$Lc>3FV_tJb5lFZGH^$aG|YOA{)c%pa*5c-SF1iyAe_C}|L@!9Oq=H#^7*l4%)
z9GZ$y-R(&&q=pTIZT|<wbhvrfw-<Rm(c3l}$QVY;m<I0$?PcNZb~44t6F*EQ8HI(|
zi&t=!D}q(ajvkpb%uwF at jcTO-3mQ{FQgilunhdzGy4q=Fd_VblCvdGal2mE(2AZ$u
zoXqVvXS?jZa4bo^`D~X!G4!Nlce+4f<Ec#TvCiS|d)aJS$3(+sEJAviWy!DdqIcCO
zCPwNsiedEv&g>pe>}}o+X=*2-n!Ik(6rYY!M`YA%(7G1v;#Y1xU}}8q(Ic+ at mt)Tk
z3i at 3vDMY&pin?PNzP26n=O#aAHha_~FdzE#tMy(BoGw^g#0_;90p~<-v6_85!V&P#
zD2mR0M-hHCwxHqgK5_eaKaLdju~}2cjL!+LW{Fk&)$!N2_GV|}JCtA;i%0Js=}QJt
zHj?{=3BmlCS`Onyitu|LKk+wJqqPVT)iAXh7EfBpyXd{GF`VPK{=4fc-n;uwBbwnE
zXg<?cux!Vt59Qfxr}EMOen_VI*i*>#w?pROciN$-iwabG=F}w)Z4)=Z%d$uU5S1cw
zic!BRCjWIO7GJRR*I{uZ84H$gKxV42hz;=4{(rfuwr;};x#~_A-WjwJPC64*(fU;l
zegH&4er!kP^IiB-?xVr^M(!i=N-keZ%@ID_gWKg}E*Sbe;D(IO%ydEvhypZLuHp(&
z+6InC;s7Dgwm=BcZs}NeDL$asM+J8=K^Lh at P{ec4%9O5{TK3yBT^&Nm+BWCfe8T1v
zpwM%qy8aaXWCYA+v8V^A`i7|Uk)0e2U~ZS?n_mg5T|_05VM-O|H+k9(q(GjODhKBy
zdxA7{mhgJhpUaT0diNQSl&Ty+E>9uP7+v}?r|ZN3pf+&|xHS(n$T6C02kC%r^5^=&
zdIb4)5&|3tJ3`)K<E9+9gp8C<^qF$sjC}obbWnl!+x!h8<_mhp5rj7o(|bU8F3x#-
z;tmawX0;et_;w7 at CgTvDE`)AB at H~>cR~ZmaI-%wqg<$f8UgbgS)AQ~)0=l%vy%!{-
z6sslzs$wR;v>ZjukZ5>KK|$A!0)7O=25&(#RM|ZFWgHDkN)uYDI9|u0M?|A4c6%`7
z3i0lO`0dH+i_h`iszpAJd(+(&iuM&EJq?Wg%Byl65{NYY{MW_brdET9#qq!JN>~8M
zyz!OeD#82siGZb6Ze+h;>xsN*4aGYyp2Tfd=TR%km()l5DL2`ylmXtV$p%{nprsEQ
zO$KkH7#RKN89<y15tkEZ>iYKo?a1fJP{bm;wlsk>1FDl&6!dV7)n)AIr{vKwI*|!k
zXN_umx<&U}<UW<l6drQ0OWDloO8T!i at wN>A#9w=Wy(>@@KD;Q|DKQFQ>=HWd+0n1<
ztMyVh)2inJ$A+TK#z>$LuxQ?YkXJC>-HA%H&MlSy&1j)q9gH-fL$UeFIJfBpweuxC
z<s(N4m`!a{xW3zw6N>47r7XQ2Qc?d(n)qAC3;Ef*a6D at OhdVA)EIIQoUDYo!NHH~>
zU;>Jc?;}t9N at niGMk$bfQ&XERiE at mHkGT3Va{D(=Z at 78+`%H4|Pn at 9<L`0JyF=>?h
z2kV-HLyp8N{c2)5ZNnzM)}RRv0M25`iwnm<mxVM_|JDDQhp4>&Piisp+NNy;#*NT`
zQCU$}{l!kKjCW%+^FPGi*g_3{Za&_yo*{llHwli?sEw>^zpM=6Cw<9!PKCww!3gV>
z*Rh0AR+IL_>9`-uUW~B8w`V|9c#5P3lMUTQJqFdw^E1{p;2x=FeM?yGRA?s9`r`Me
zq1&tY*_%bd;(9GzR4&+9Gdwk?p7%Xkd*kTib-UQK*>KeDgZ7y^wAlx6b-B{E6Hw^)
z&<`JKi(u!^gnF=E+Q=6C<3^4<t=PxCexRwB at _ELwL@Nf at 9#Q;#9C3NWF0)WOg1I$g
z9*t-BiWI%=-XdL?=L{S-Ya;=1UD~o48{t%QyIf-x at c#~XfPF4oB?1EJ$`kx)$?Bm~
zj5svrH4%ce<_QhOhHdsKn``W(#p?1`4O^GXQ!zNt4GXvRBY&NAg1FMKbQu!g{t8Cb
zeAGLt_#l-|7cln3W_E-q7~gSzq8-%y%%HGdL2G_k1;dx}ZacRKCvq^ro2BYWVP*d=
z5jGz`brkJY`X9NoA)&Ia37%~9TeFBWWp-4*OPy9n(at+2;{Zw^ssG9`lvC#GK0i at x
z=)#|TjgJNmB(FZDL4J!dKekuA|8f;ED%}3vz2NbWc2gmnl=BMnE#dV<djkLCEotO;
z!{zVWX@}Q`go5Mv`AKjc(ztR8_9#)F(b8V3gg#Fz^Nm*^3Bzc#-&KSO%NY8%h+k1N
z7^Zc4nHfXLA={odCCb<KCt#aR at L1Z&t!vgF)X+`5*Bh0CwN7b at zH1)#Sn8&q6P<^X
zoAaKC(fLg^#!o5-XCw)yFddDQ3;*s9*;Uni6%ebCh$F~*Q^m$ey}jCFP-8>xb;(G6
zrv95`j=p1H+#P0_ghq$<e63;e8-0Et5ccp6mNJduI!u0%+d7C%>REpB(7#z3OZ595
z7hAf6#AgXY9Svim!#bKeVgf=`{aof1a29fQR3FSdlhpqOPB8P9QGLGp6ma1Tc$wR4
z623d*(YQV|KzP>Ja78QAq4}*fyxl(pQiwH3S1Ex-piE&MwPmBhaQiY0*x<j&`9N83
z^ANZWIeWb1mnrF#EHdG#np&8}C`t`VJJ&az^m%OKh$+qCe^E3y6nX((BGY)(r!t5-
z8YS*$Q0&R5fooaT?%z!Pzp)sw{8$^x$=NgJabr<(`|Q3|=Kq&?1;T?LQJ1icpKaz3
zw->UJtACx>(6ScsXXPxrDQ2NA0l5$Y-)*2O!+M8Vj`BA3 at NIHy9kv10sR(WQm#OOU
e(@NvhCnhon!FXy(V&J=sD5^@Diq-PwpZ^aZ+}n%*
diff --git a/doc/Wayland/sources/images/wayland.png b/doc/Wayland/sources/images/wayland.png
deleted file mode 100644
index c9937928ce9584a660ee10f7092eed2033f6eab8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 5649
zcmbVQWl$6jum_G3j_#I21j(bNB at QGcJmOG5QsQVhQo0W007a!+=|3QNgw#nRNJt&s
za5U1*<9&S}-_GprY|Zb>Z)ayV&OlF-f{c|64-bz*>$&>Ndylx+FQmlxc5$pH`Q8zF
zt7;jM-pe~uJLG-*z~i}@Hy$4GtN&GetAJm&_emBX2+RlS{?^CO+RGl#&(BZ9$qnvp
zYwck#;_l^;xu?L2hsThprLJP+pS7DEkjB`R-J`51!48lBPI~li;sIFc2@|^M4&xtd
zFaOuD?OY&6JIOPWW}JemY|3yMn=3Ix#n~K>@NfOJ+%C}S=LUgFNWDtIq#fXaU at GsE
zTf=?w{Si%LzmtK3^&5qus{!4%@o}k}-LlHd at v0De*cS+~D?L6F!P$u&cS1tRt91IC
z3wwP=5RWtK$MI33-n`s|5~t at HW0H^lH$x*u(TB{4u~UDcCSFj)&0;v3{QoO^1^&dF
zi+8fa2ZX%^nV9M`@d^FyNS~1eS_v5dby2rM#4&)#WhKDMpfkbNiqdDyDbC^b at dhVo
z+HIHxqmgG04M}9rDag=xv#4$*0;W2bD<Iw~Vu6th0lom>NSLeAQ3kQgxRHpd50X_y
za>boUG?BbWjJN at K&gem#%(iv1<AiSl&<Wo_!oDdQ5bH-E<!JrspK_fCEe`!8Lr{-0
z<C)``hx_{nLVGI7!QsW>sd2DB8Ar<GhGt)QEE)b1(ws0ZhAc`gnzyB6ZCIh<ufui1
z75)o|RpY6SYCqyy!KNw$ll2*Go~&|U25{d|n0NH^T`D=(wCWqnvG|A2J0;&*vFe2V
z!HlzWMzmwO);zCcO-CE7DT=-mj;1Z~q>j?uosqNC(l0VEG6}E{m6m?zTxa9l^a?8s
z=fUrghI9$0l)gK9IW4&U+ at f*o1ulNO>R31`B4uu9vm`dd?`w@|(E`j-5Ku00i(|vg
zsSBlN$m3(9j?~OafM105l0BU(uJ*g7FrlCr+J5R6y-XNjUU=d(nZQEU`wtS4w<{0j
z-8!x9RNQEQN)(5Q_(CPOf|BnDjCJU$K8|x;>eIJvZ~%BjB5H~;&awDi!-nLD@(#Ka
z3};gzd6+jC#TPb%gc*y-W<>^-8{s7YeEaEps)gX}9&8>82TxQ<Iaab39?riP)29BT
zZ81iA09Z7|7$kw(k>q(T8kV1S6mTv^qMrUnfO<fZJhP&uhR at Tvr<CXF>ozg=W`bd(
z1)=VcA4?ow_J~zGE8f!moeeN5D69+leQkji9$t=w<??b=wI40L^_R@%yB|3Uzk?{e
z-~%}u8B73bUD~FuZ=`?Uj+u5yQJTIA+m3_1FASwpy9aSp%^zjn=AR>|z at I-d?6pfI
zl71R8Gld6F44<%I6+ys`fYnH(6o=>j95w>yqD=$m<SQ78LPT%ZPhEgdxL>4_h0pdC
z$gnA;0=7#mr1U|%rUEQI>K4(Cj6NO_4)IG1(MubSKeIH76!0W0!*{>~y>+^UzFiiy
zo1Ze!X(c+;-Ea<U5+vnG$a5ehkPgMRI7*&31^-&~A;k7d>+7L0v?+HM#Ow!6vY7u;
zQ`}@~5Z20L|MH@&^wLrILnt at uPRy=Pp~RYdvLs4-fkwPEu(~Lt8~x*pUb5bTAAQ0l
z$$yXoI~)u6l*@X$5G?t(WwK69Z;Z37w8#_x0C^Zd7ouH1o>rwuo^ofQpxYG6H;}0K
zf=k~}9{*dwYegmPB2PIRCF2`z7BIu1gGxuBFvQb-1~F{Nbc?X-V*#4w_@=e+zdHX2
z=_PnvZWrdnPSi|>Otqa+`ZkKsf1P+K>$dt-*YWtVic00?u1kf%A8E5Oo2a2A_M#8(
z)9wVH`d2vBI<w>*D2Vm{4Fw&ihVpVfDpv+(Q$hD)S8hRXeJM$ZwFV?jG9e>Z?}}XN
z`u^;jj0x$q0gCw8ou&&s0zWmgfcvAS{kpPNzm%^HDF%uqn3HO7Vb6drKk28-$NPur
z*ga8x85OsY>1Y?8hl;mHcY0E&{_ygbiC3ki4~cIx+lqY$lilNo27~fk#Mt?d{C0D!
zF!apglk#)bwN^8Tlyk><YLJ&i!L0&U6xB!|?TsUm*^RYZO4_PPej%j^V|<*eS<O*i
zIg8Jgy~9RazW&L~aH*A}M9pfy_=OC3$z<Q>WZP=)ffYguzcvmw)2#PT{_6#gZv=r4
zT6LT9gx#BLHD}gej_rh;417-i^in^0MXHOX2jc`@*Yt8ixiIf4?RzHg%5>fKgd?x^
z;(nGCdGdOc!CBj0c;s6at1lP{M~_4F+yqX4d{Nyj^m2;L;dbDx2-a^{VqYG^-S|OX
z7>zPV4Cqm!lpq|922Ven5F5$A&Zap0ue-M`MW=qFZ6|S_Y5W(>c*dn5=BiTW3WpCk
zW+9fC58E92Rca63Pz;O?HsLdC1h at BdJa80@jlZkADx%JhJmURIZp&Irt>-j<?izwm
z9BeU$&El>;ayvf9oPc6PsS^n-KeZ*}h%<Yo3>94rOH1#BvRj?V!@JI}-<FX11tf|l
zurr6&R&XnQ{y at I=*SLA-)Rj?{sz<a%3}tIz_G)B`@IUQZNZb!&%zW4UW?)1?C=Dm=
zXf9M)Mvy5cxL at 8P=o`4R!Q0I!mEI0T<(GHq1)ts-S|zDI(i4;1LVdcm^oc*cphjTR
zy(+~SsvZYj%~(J5X%xC3-_LMn?ZWWR^J;;5gV5*Jh?QuzsQ~b)T-s^cIWRkEpAxq1
z#(#lUcJEb<qojSdD=@__8n=}aru(9WNO{FfS$dIKL;Cm$y&@(LcqPq#W4GMkF+gQK
zbE2mf;{mRL at M*<-8M62Oql)u(JydbfEmXFV&6iVg7C^@B<lXaB!m^eNr++DPm(3yC
zZJrtEa^Pgs`#3TqckG*CHs!K0V2C&5)r)B9H7AVvDtk>9i=<}SB`~&|-=X>-f;3Wu
z&3$I+qjxt4qU@|P?5kcyYRO09-_$s!>LSjQsCwuOPOz&1CS$K(%*hr~H`|CBe9vb7
ze7Mi-o(yrYf_Vu-*N|@+U_heLtD)_rS<q4)kJ^o#vguR7GNwgKC=<a{NM&AhUctIN
zt2r%8>$8FCM=6Tb-E(*;dk;(~!>m7|>96B6P{ZUNOvcl}Ao>W&HX^>bY3^w2{c!Mw
z5`Qzbuap1&Z|N4i6ZnngTAt<U{UMjO9EDrLNC>j^7I?06<+r at h$2=msigh=S&mD6}
z1*xMd%r63#C#v$g&ITuoH4xtH#e?{dDh5S-BnjoR at l%>dvDU}oAL8pi-qNYN%eHPF
z9b$S}2mwVZZ9JWP@?1c+NR76CsxX#_3+ at dbpDT=(Q9zO^pBx~5+C9MoWhlkO7-AZt
zz&uo4J3j9~#P_R#OD%}O=q5MKuunKXB#~bE3TP^*=CN at Y5G7DH{see6b!sU(&zvm(
zAmgLy-yrbq+t5 at taZ$N(KCSV;V_~4a0doQN9=mF}{7ccp$$AIQ19)-bM{^vTXvD+>
zzH`VLeHOoSG8b8EzMqr5i3rdH_hqb-wpQX-8o-x>ca*<Vz9foWMV_TGz96x!>keIW
z`O5&sahvZ at B5Yad59v1+L#Z}pI7>J}AIVd7TZ$?WM&`YQdcR+FP{}%&@tMirQa8QG
zs1(#E*BrY}w?bfA!^HT#i+hVX{0h?^JZMiI<qq|&R(Ph%_Io-|1!()~UBmb^-NzDi
zd8eJ%aK!r1u^zyNxlm3TVbiW3xnX!ffo91otB-thL|s=PV3d at +DWMCbYGyuly|7N0
zJooN|42L$GTk4gx5=Wc`uB6-Wm6hu|)u)J#&~OQx>15V-#Q&=9>)M~_rCHH$TcyX)
zkdZgzZOxyBwiv}=<5&kie$7<rX$sASKD at h~_AG|6L3c-HQ5WHNdh^)r?8%;K&%CjP
z3`>W at UG-fHG2fO6kHiK8w|7(LPd<s#wAGt7zAmdditc~UWfatM`__K8m)sH>o6D0k
zSlye8Do?@U_WRdrS5hCHgSZYz3&DFDBluA6@?03aT-BgH*N9+ZOob0)sNde|aKi8;
zJxgT}E#>|bmcI_Ud9~!rqF>&#TpVIM&PRNhloGd;Y(%*$#_9?$Gq)<l?*boDVDCUa
zV>n?G@#u{yF0R_=d)FU>ph;4$$4c(a%Lm;_a9w!ZrR?5uEuFEOLp1hMyNRucP2RAU
z<ad{qvvBzDNodk!rJmv!-CJGRq)X<=<___qybcQK50B*y*Hm9k{uhm63Tn&r0UzLu
z<PXx|kkOs49L=3n<_Rq%nZfnzMjt#PCH385PL<|gdPa?<pMOv0y=@F)&DP;thQob1
zb(`m|vML#|S5Y^9|20L`w=e;U;u|eQFB#)YRgHi8xI3s7h8o&C&Xo!aKAvTz_-2bF
z(iW#1zPjCM_4ltDa}JW_D&$`H)GwHGs_i&a6_O)gCuRI5X!tt1t^y~o8nq at HP<+i?
zb4_%%uM<jTLECCX7qZ?`r|B!MkaHs%7f02CoiGYsM**7V7zfL2S9`0zZo7m{ukATa
z3*?#GJbvOQp3s0*MCCTZlm#~)d7<fy7Y4&kQs*DTqRYN{QH^o-F{f+JZz`Z=4&Yw<
zbN-Z{epjfRbWC_ah+1A$lYO>idkralLn2H|HIFG=M2^9%!ZO~tCmixd(O>4Vsh`wK
zKYB{>^6HRu2k`dmOP_iq<img?$@e+_P|F*3Sr^D$;-F at UylQKamCAcn^6zh6j<ptA
zy?W`bXjgetLm~63HR|$Vri`2o{tOg?f(hfMJf7!;GPY*|zBw;#Y)$?y=4v!hKP9$4
z$n}p6ybxG0Qr1kQ1)02uDqHjvsYOgwMN}CZL(l*lgi4{Rx5afbsRVetYQz8#pU_G`
z9JB-4Ogh5^gnydfC2wkaFn{&+QkH_NuUM+46E@{;zLZ6f)<U*k!T8u9xEU~5ATk=j
z>ul=yXYljHoPljw?j*k$yfE{6N{+o@#f(_5K%;`zr`7Z%u)h&{`pGZhSyLQdi_BzZ
zCFA!Rz1;NbM`fAYmqx*8^wP>+P}N at O$gRJLNJ1mA9 at dcyQPCnj>%}{Yc-DZ$t>js{
zar;@4JPL+1S4Xj}^7rA=L!7F-+%%G|?InMofM~p=(yRF{ZGU`0I`zjS`2^8$W=Z<e
zN!1mX<shWS-J?aF|B$iAVtLQn6LaNd{``5PK13nw>@><qv++iBoU{e6eqF`}jej}7
z$xyW^wKuc$7IPNgGc%Rvy%{O7WWI7yVj1Sw%aMr{i|@R4kazA{o&`T}epp56#B=H2
zPD+*gHKnP9W*ZPSHLR>DthDNE#`)W5l>2S-1BhST+GR-fk^SF4*lnw2SFe7pRV?TD
z=0kBYk~?bLM~dzIhg<fh7e8SZoWxCBF;$$@oMC*s#}3RTVjW4AudYOZIpixL1%f^F
z!FKAwz<;1q%|Bk>k2#})jVG3LJ|AvGmk5$ucM$Yum*i+V)b4d at m;Nw~OZ<DvhFCR0
z4fEl<8}gX&9OUiyPlTr7sMsDg)Y5UF4Y=mYTgoA%woKZ3F?n$37G}?-{8)vjR2nB*
z&!ktkJI)c$Yp0iL8!TknsnL7E7nI1<*G^sKzif at 4jvVs73uw|-cq79~{qyTXKIhJ|
zUqkaHV#_3_;%@0>SQfghG at q&<p}6~1-)C*J%s$mV_gAXO0TDdg7SmFq9p@$byf|<M
z`1MD``dp~Axmah9sNc4^BFNRi0XnAnDsx|jLY3<E>OI3hV_d`ELz`Y=BM=44KfSD~
z&II$i={J3bYXH8t at B@GPxLL;W4#sitRw&^Fp+Mp|5icvqyW4T at +kzV$ak1~noAR2F
z?zZm^EBjf>f9Im;v2$ll7z7zya|1p3l0}CG3ZRXm#kuHqeI?z((6ws{j4hjlj1Yu}
zdT>W15*_|fjh(vb$%JFZ6x37AFh8K_70EziBJ24vL3Ya~N#WT7L)%r<H9M&^3;%ZN
zcJ#b#pZfi2b(O(ME{4W8?B|@*N!g%5r)B at z_KFTEejF3C$q)^7#2qqSXG*~r#;4x9
z5sJjk`{`fr<9K{$Kb!w{RofN`rL_6y!$C at WjLjS*{*KgQD2MI at 6(&K%<=J~k>s~-R
z0~!5i&o16v3&92=*Z&iraUd%E9h<b*>fqDL$eA?n;N-K at g5X&k(q6D6%FPl!wfU!3
zXd`6xX3~JZXKPH>?lr2RO`DL(*#9_`<bX-O$f*{`UFHG~J(zW)MqhZNHyaK&x at 3P%
z5egya-|!yqd}R7wMiYcRm)MzT24pgp4cW)k(t~Nrp|?vT4zMYrtTnrt6V-)@SQ<E$
zDlF8y>gr8Q(h%*aqxcWwXW6ae+?8WGf&2S6YSk!mA_h#ly3m5JHtNcZfCf%}->=t-
z7PP)8^-`SvZQ5~oru9vu-LJHTwH4URW-JTNMKbh8Kd&mmqk(gHkcB8-v&sA->1p3v
zkbD0Y at jx_oub{irTeoF}sbFOzmjlx$&d4Kr{GLob_eaVB9I at pRv#T6_Qj8Ui77C)x
zIIcwbe*2Gr)qD@}$BX~PKLJB)fU1FT<erB*5fWyPaSFQ|H$?1r#P)RbIB;ep&EC<v
zH0eRP89c;U>UQa}74E7c7%-daLaz8m!2Y>KF7{CzVD>%sgG}00kY4zmn5%&o+2W_a
zox#3xTh<-2A#+fnMf^odP)N7;V3epca1 at 585M61{uK24VlQJ3&zaWs#+LrkNm-67H
z(HX7K0L}3UggGUs39TJ8@)(F(jjgr+Fgwdxc<d)tos49NsQr=`1R(;W*cTr!iUhu<
zKk#r;zaFBZ9pPFR%GqO*ig8N7zXgazr|vc5&FXe;#Uz(2KDmc|3Rr4meW#o?-(#{!
z3^G~VWi%#rf6nv%Jhm8+3YfFX-)B@(yH*};dToHCkdopY1&19`yRosJZfyBZ0M78L
z{AFXKwf1SHI7fuuL{po2l`nGU6ZsRtX6ev>6Xyl*A$mzfh%2ALN>nY|M5Bo+)P+ui
zKOh<YF0+LmhZwGiq5fggksQGr1k(y%d9ma|n(8V6nMj6qZBfN2?k$j&a2~bl0AG<|
z0`)nem4E?|-;K~shu4PaMtTuoWj4H7z4r)cIHcK7_dKZW!j7!nR&nI}gk%h;6ZJrW
ze^Ua_k$5XbNsPN*Q&E=kHD%Sh%!hsa#~~Juf73e5#(<Q^&HuO~egDtPuv0i5w*WH3
z at LRn*-bX)U9_;EudV2D&ELE#35;Z*kmxaJcj4bFAGJ+I#Z%M>#dA^$oR1wfbX?E#^
z#cN_$NN2pRO}g{}ZAQI3-GDIYYGNx=>~!TEcKt{VwlcPa!G5*v;jVb*j_)fHKK^VV
zM~>hro1yI<aSWb#X7gtP9vZ4`PIXt at gSU$c|2$Z1);9?se)3qnqiXSiS>)1LJiLG3
O;%Pzj)GJl3BK`-1qQLwB
diff --git a/doc/Wayland/sources/images/x-architecture.png b/doc/Wayland/sources/images/x-architecture.png
deleted file mode 100644
index 098205b57a973311c22c914073fe53414f4c0a35..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 37306
zcmXt91z3~c_aEKO=ny2NL8T<6Cnb$E3>9e{B|W86N at _HMG)N;c0S8ET!^qLy`Jdn4
z^XGZkp6z|_J?B05+;h+8e9j_XYpIeDG7tg)01}Xzk}d#%2?PKzZt!u at -}ovxQJ~+j
zAqpUUeDt3mzHK=AGl8qx8wdbE>HY5?1Bc=(8Tw0lcV%ODJ(qXxUe+Jq0=&Gu1V1=C
zK)}|nZv|aGzR%c~W&i*l0YFMG^}S)c3tp-Ee at 5ZUmWjZ}FJJ1wnS{+L9v6!Ek{A*H
z_>p4)$A34+<YEbd12$j~Er*UM`p56|^<Q&<z8NpEdYsSUc+O;|K{on#$8V&iYjy_>
zFL;GT7bYgOl!OsUKL{I`s_?3w4P)4m)nb_xNebxYgW#<21Grrdrgv6!w6=#KqO0eP
zuC+!)v1?4w7w96~Q+`Yz1wIxbqr;uYn}4aYQ7Fv{KDGgch<q>T*dsK<bxb<f*Vt{t
z8svDaT_{5V{`mIawVVzCvU#H2H1xHVMQoph`05YZU8#=$rmik^-2n^%913NCdcy4(
zHwp1^V_D%MGj>Vm*wG?UI?JAb#ZJn|k7F2guR`X8_9EyKV{VOjdFMyrui$^>8Toa1
zxG*)a5rF*O9!s8~Zrl8ha-0 at 2{uHz<`*#>~3Grm3==sj#{dIMgzu|b|onv_7e2WV-
z;bI#Lnt~QV-}m-3CZWLg`GG@=c#~Sbyj&jOpbFcyi&}0Q4fE}6ef`D>sCp2~G(~-=
zmF(eDS26l4j=kR05dB7OsQ*}2C=WwtkW-H_1&qhpgBu8}5O5V7W>x26V8>tq46;3z
zE0U(gdcEw4X`$)MP`JsYqOz~<ONrngTuF>1oMQGSHqL!b^|UxG_CEjZ`?WFsWu`-s
zD$uN+i1K^tDlz)B<a4FyV$D6}WMGBRtjZ*1<nb`2H;m9rYnF-!5 at tmZQv600d0ESC
z-M=ypLn|8<#5V1z+T;fRqu*#cmZe6&lX;G<q4V!G`VCCEL5_Dm*N)XkZ&8c;u~C6c
z#Lv8xFLx1~C-06XA3c6NmK7`_`o{HpUWW&kv-*49!k*g{!Um(+#3#>u|H+z@{h$p`
zoz>?=Kd9uP at GyJbOsdT&eq$Wr6xUuvQherERuB)tIjW1ge47v0jghIF9>$~92Y6p3
z6Y=z?{VbI*XRadpwNNZwf77C()jKtvNik$6^_=5x*I)G1Nx|p;6HuWK!>@e>VK1~3
z#T(S{rF`3wK&Z!B{=?PK7aXbkR<}B^q(=CUvm7tXoI0g|aEjQNcke at L0<uaRTBs%(
z`K?}D&6mCKM>)VT?VN)_LVZ?4%<P|BE=_=xnB6wm5*heGyCaE|B2|VqeX9Dk<q-k#
z9cHup=eq{;Lx(9j0;-~pmvf!Xh6sC&5eH1itaA<x&@}rVLF(?U3?pe9HJ4^cpfg4h
zi}4LaH5M9ZNpgbf+`{|KB6(kW*d=w?lW{nha at ehuD$Y9F at Oi@Mv%u6BsEpP3NumJl
zKd$&>9niT6n0_=97NfghY=O-r)1^P=b9?O4SsYvhe;$P))4T2NdstE`%>dGJ4sM#=
znbz=Ib!p<Z<qFfkB1l{|B(27JYTzg9PJ>(3I>GQNruU^Los7k5y#;PS_74yO7zej+
zMJD~ey4Byh-jv#$Cz_Ocx|c?$2V=nC`z}MEN4Yx$B6#8Ve%e9ZTx8R~scp<+`b>NC
zT=AsPb!ux^qHjA^2b??ScDOi&WMXO{BmTuwD2=t69po0*+4m4abso}mf{bt2X1xg@
zb1}o2b4p!+MT=}zB@^md4ivkV?*ydth$(7)HdOBn&tCrgi}rTbtNr&Iugz}Sv%!EU
z>oz!)cE`T!SiMsn!&%~G!;5bw3fW`t-b{bzGYgb%k-`@<E5APyx1_CKQUlY0BQ2?R
z=`xDjze5So>t<Wz&*%U00O(F+)4pFdGn-C++Q#&5 at Uy^Vh#qN=>^YU<@)wuWRS4<C
znzfslDPz_zj;PB6c+yr?Ct}#`PkQ#rj)eD#-sK9nrt{=B;K7*ce6x^`o9Jc@@6xeg
z@{{`#0HF~yB{w3Fj)<uZSgp#;U00x`k-o^PKmhvFh`d@`kW&r&m=3e1&-FIa3uG|B
z8posqaIj0K-ou!Z&83yVXTJ-+^47*@VNPU0rk2Cq2D97ss{Z4r3YHmTE+Yy9-Gh~q
z#f?{QB%JUy9(+eC_ht<mAhQDFBg;p*u3LA*4%~L5be<Q&pRPX-HJuZ9Z`f$Q<~8@$
zHZcFY+hh`^yHL(;ijJROUh%5Lj(9OYd-t*km<#c>Gwjp$Myb1A at Kx=FHt(7)P^4_h
z9(@Y?9h<=+>jWmWIg~HYytGf^qS0>4&u(uNFROWVezY+VX8rhdb>Y{9zx#9NBI3|e
z*0J{0dn<F!53R(0*H~uWLM^uxyPw4T-1P<``itb?g74vC=I(FvRwJ*MHegc7Im_i>
z##)+!(X(y`O3%MmcW<(r?S6Zkzu>%HWzeIv(dK<O6ry?4nIgASU5gSbziV>wCzXQb
zp=May0q1jEH%AD~&<AM%S!=H9bcw^7Rifx}^p~9O`s<rla&Z$!rUEr~{bX%Wmw*tt
zhra=`AUe4>DHe?4qk*^4y?-M699lbnr))3L4$p=qLZ;6FGRq=Pg#j%lP?!A6<M-wt
zKFs4={8DHT;dL6OKVM)F+a~I4pAsi)^(vP{5Zu`ReEnhP%zAaA?(j4 at u9o!eoz``o
zz|@$)<6&Uz!bb^Cu!bV7FKzofP50hv5ZHV9PWghFPcwtSUvMgT1<4Fif5IyZt&0tE
zV4VuKiP)&xG8xYQ)#l(zDtoU*)LSpjR>{g|Aa`G(Uao4He6FEUEM at fz=SFGXd*ySl
zrx-%J;@bNRGn=Ft=_~^}K9Hf+c)}~t$^i>(3_!b)Xt!~|hsz<IsDOZ)I_o{V^^FY6
z)wD{Hb at uqZIL)cg&wM*LFFHZuor4)2f1POj2DcjE+JT$Die7e4F}-&S4aoJ)g>2Zr
zz0t&~b<;ZYUrwuWCvb<yG-v8qS}vvC`9<^K7)j at u1}E?P(2Ko!+<LXPUBi0j)*a&z
zI4Czc-pz^_zda*)VU+p$jd2msgJ>;94w9WOvi_v{26s?OBQEw%R8#8A;9}O5?iLmx
z?VYp#<sBHozxgSGi`t=r*mAzm$&Xg>xoKXL;Fo|;j7;Ex9?i5Hd;N*{QU8X?ZpN%p
zJ+h`B0sSZ4OD7qoVrWmv&O0I{8TJ#mt7m+^08HP-jPVLpk?IV6m_$XhSV970Nu6l!
z%)bA%1*?$Y<RDUKISqfz)Dq15hwf{(T|#M8&Syvp`-Ac;#+~96pBX$fzFm!_EnRdn
z_gTwx3Zymk=c$z)Y&KtItx3sBtn3}@M9z4f(amihHJddbZM$y#9<C34cBV}>*3mdH
zHPI*(kkh at sc%@)^@41Ejo*9#|ybXC_?$b^a1{J(GZ}a<I$=X%}OiXV!a0#gEL>zYE
zxWbivC|7#;kTs^y35F1VolgIF&GvV20TYXMhOkU*oB9(x0*7v|q5>-7&6nS4>{80y
zRUd6%D|}j(F_?QqyI86oxo09^{3tmFFQ2_8#?bP#B1l5|Dt7<-e*H`y=ubhh>-;0{
zLytTEL`0RNx(w?6n)?vGGmGQ8Ona>zINZ9>{(k2m?w18sX`!b3pY>9mbZ=?Tw#Bj6
zTUQsQ36WPnH}4NOc1(1ww>@VR50 at L#vF8IyCK(r=0~T+I+gM3Zi#SH-eS+^+Rc4n~
z>Xr{j!<s+8p8HTLQD<(r!-hWo5`FBtUxPK=)TE8%ZpbwSxwON~hl1zwAbX0q_5w=v
z?}jE;)Q4Z~IS#gTFNgPu<{FpFv>dXg9<|i7-=Dn{khlZq8BS at Z>6~1&-xCnGPzY{e
zwaZ}FSOgy&OjbZ^HsHPDMy*6x-Y52SKIH-PWd!|x*1s+NFEsAoi+$hg%NDK1Yitp6
zcP?VBtTHpO2^;_$#AN<-J7u|+u;(ZKBzRCfId{!`CXynF%KrfNhduN9-Cl&COZL{)
zX(Ab|jc8-Ub9zy8Vc7KN25d8NZ<iZa-FgXi{>0yqw5VF;D}L7mcu^aIH~2a8K37$z
z6HBz4PMp3%O3TRA&^aG8!ob&w_1<Ch at Xk&^p?tio_w&KM$#c^~BSDfVjjJE?PcvkU
zjB2kRAZX|KnSXB%6KW>W)!X~MvfJ)t at NzBWVpC-A&y^#`?au8k;s<DbWP2yOzXD&%
zl6iJ}b+^f9ew?l*=W`2(hnd at Nn||ocI*UU`Qc0XtU7w7WV1=&&YurrfxkDVEDRcX=
z+kmCZ65;iI&Bl-mlfm-Ct!lu@^TN@$WLtk1b=Bc}MdK|$#l3U5{#rih*5&C~#xVZQ
zM{SjK2lG^|^0;o3JB661<!Gc~xCB;kw>7hv-Z&M{TwbvFB)QLO^uP)U9y$W(%E6&{
zC#;paH--i{B}Q_E1MT<eh3)T#VqBQOuMA$ku+MTo`5aTM#f({LnKn16d}i~LXUrkc
zf|7TrOlVAZhe=63oF(6qs%RS$KxYn#_K=!fq|H%eyaWi`KIgKuyv3$nC}p)AX*lO-
z@#kyYpxX=ic-1+JdOKFPEjMVtw|vK#(;YJFxLu-pW|WBVvGwc6zWaqS8*!YocXC|~
zxNBIItz2+fx+OlBP$&91Wk&yQXr#IPuRu?t&zhXYnVZlyNw-DOndXE8%vq+%UaBYc
z<3CsUbc}`E1|$1T&sd?qht at s&Yn)znPrn;1c~P_PQhIZx_ipo7$~sMRMR{Q&TXMRx
zQ!J{#&nXt6?={soi}Ud;ImeQu6g+XZXs|=ocBO3jqz1$*PxUR%d6Y_%tgT}1(JHsY
z=lOSUS{3teaD}bpG;K;u%Udm++AO-2SDo8px#mRgTHko!_(MLT`exZq(HnJKqG;%#
zxjswKv@!J;M2gwPP5fuY5(s5E=Kr{R_j{`h%a7q~mlb`@^w~M)HUvk8zW#yEh?lm1
zx3Ciz%qvAueSf6<JOj^R%!htq>ek6 at Ptz&k^-LD6l at -~hao at SBhd?@~IO`ZvZ9%(t
z(BQ7d_Z|toib26DKAvt?v}em0X-iFbtetGi*awCMKD_aW`?ThKO?0}HvY}aOpK1Sb
zeE-_PO;FnA$a2ZX{4P0f`k{r6DoiOcGSPWbBVYnp5?gxp<*a#4Th+ef=<nN^?geXb
z<As6uyHw{=em^2>N|X9wL0`GM+yh<G1}O;**wd#`gyJN|C4;DM;UQ7cM7i~(X(Yo1
zwcJ)3nv{Iwer>a at tPR;EH<>v%WnL;?Us|r+CMd=nVO5o~gQ?%k;XC<0(DxP1?vvd{
zvVY|a#lAV_#z8iIkDJ7nq~qoWIk*%CYd(5h^B=qcaTH%VFr3EJ%Us{-#l10XINENu
z!7!=4nrqx$aj6$$s*VbfzI at Y&WRZDcL`5MZ*FF(36Qh&(%xC-K&K)qFTwrjGE=rBB
z!9)qUdaxSh5UC}w-iqLd4~C`XC9CO*AXUmQ_Z#yJGpE*I7PIL-$L^b6PUqnH=kihI
z8v|2dSJSK<)fNlJ3T~mSKvuyv?Zk-tDZ~kT``NVt>h?m~lqxT-eJrn^K<|`pVNa-o
zh8r#^V)3f}G$B141NPL|)JyJ)RQgPAAy$MWbRpuy_G-gFLpj+j9r>M`H=+#uRW1GJ
zz}5rln_ at jQ-8;aoi<Wfr%#MVC<>bDztXRhE$(n<@%)q6b8ZHsH#(jzM<F?cLl6;8h
zjB}?qqSXEFs4CFi*2TMSA~FMa`t1jjo>F<5hVj&=XD0t)w`y)+yY_hBuNM`7v={pY
zo6R)yzFdAc8O~|8rEjPN05a<Uf7Csqs9E7D<Qq%AY3Y{=!QDltkt{kX$Fl6wE#sM^
z8+%mWUxvu-bTKHz_cwHI>!^uBZU@*qkkRqV$^Go at Qu$fv<aYfM-Joi_MaEsjL{xA6
zlHEw9#}Ytgu~f58B`z#NulClrrjGU|yC>-z3fe^dBQTohjdl?_8Mj|u6Wy?S2v57-
zl2>tDk^=$vJ*>iNi>xCjr)+Io(P&x2iNRV~t}p=m^4T6J3Hs|FZnZy0byC-<82 at Q1
z&X(&{`!=PS#xzglhX#-uIt(Oc+2<V5Z<y41HT-9?6BT-T{E+>%MLHD-jp3Dp$Cdnl
zqwWT|A3yu&Vo_uG;md>adbn+xzL;+xKOVxW9KVv*<EC&*Fk)p5Aj)9L7yq?*mB2z0
zxEW)MN(s>p`ZbCk=kX!f5XPvN at _sB!K1~w)k_W9?vqN@}cHoaC$WV*s+`ZA_$umz%
zvp0S5N0^Lww^7m4244y{MKKp~c7Hn6NI-&^7)ml=Z*4KF#Dzuoijzvn+8og7px8>c
zo50T5ZF;>FLhG|61e|5;xdD*r>G`4m-daOOH1emV?{DF#6E6BR7#fOeskC8}0zPi8
z=q{o`)fb_VCJ5@;Tl>3;-f4$E<(nDD>ircLY0YVVB>vN<&+F*v62JcyTbKeHZKcne
zr<`N|HB_;{t;Y<|`ozV#UTcc%9x>54ni{`mHhED~B-ZCJtK`DD-)y)yMNEw at IFZ_}
z{T_d3r9t|<xTmKZuDGT3hq^ddXE_I?uF?h&!{Qyydd1^?@9(r=xi!?jec``n at _X39
z`upUtm-gi$*XFojn&jlNc at 7`_C-LNwm|n#*qCbNeyDt`A^k<NvmPi=y8DCs{?qdy|
z+1hX78i*CA`4Sz?{a6a)2Gg=gCeudLlalGvpU>HhMneU8qvP~dh`&bzJVbK2IL)S}
zC=<Psl7z_UTYR(BMg4?}nVwtl{1v6y6~5n5B8_Jzq-c?8R(|1?O6WgOt*MfQD+Y+g
zUBuWZlFD5fMG;>5o`0^RI5RH>$Xp#wJ-2JsxP_F409Y}xf;@V9zSwrv=V|tS{CSwY
zM0i2&`kJ=}G;A&;zA_en(sVw3yHe(X?bkl+8!l=XdcbILGT#uCSswK+zSPwT+8UGz
zC6)KhVSe5In2e-nsYaB|xEg47i>T(8JaMw{y-^Ry#?M~RZKtCul+U<BPV`w91$N2)
zNwX{OI<R}zM2LLz^eNYQd^8B8=`r9RBpReiB%RWAD at Gd2Jf5mK<rKqmHE6DB)HIY)
zbl}R+q}*<pr;^t_&7b?klb#-Lp5m at VcR3x41f^{&Q)^e~L1DdlwD4}wbi16U&;8(h
zG_d_PZ#|2NZ2omN-5jwM2{J0b!Zu2W?C?$W7}ZnVAu%&VQiXD2WOP5ebVw>q>MnE{
zP3gLpEPQexc`N!>WwDxcj-c&cIj#(97<qB`{>!T;ZGiL0YmQW11B8&3p2dkTKrS=j
zUX!&$Q{y3nZ|A0U>2~`Y=H<F}0QciSZZQy;;fIQ7fZ@{JF7~{|@C*lX<NfkP+}SEY
z;QE70SH#Wl0W7OxPOF)3KE!)#cPFH#{8>2lKUJg(yY{f8lUFb5BUuEB#klZ9xq$%s
zG)<LQ-0S#*te39>Zke?hb<b|(xCg)%S#O<Un3$@G9NXi?`kH=-KUc4m)G{l~Eebs6
zd^~B_o5X)`Hw%9OAM=oDpecvGVSg&q_J&?h)?S;J_w5>ul?Rgj)sLDbKj>q at FIy8d
z+~@=1 at q4$_XALhosA`}u;oG)rqnn``;8!!Uo4lP;k^zAZj>#RVu!&54fUPYry(H@<
zF%waXM*Kx>;~tLPB(>)OZfSjGNyV)|p=insL^OaPos1Yq3kO}^<4%Z|)5}T}ahsv_
z77PBmvu;`*6d^L$o%%Cj!FMk at 8qXQmxv)b3%aP0-+Yr+bclPy?5~sEQ#keKl!oO|q
zIy*qzA<fA0Q@}k+?ikYGL6_ljOQ5$Y_7+z!$mKXD`O(V<DAN}f>l>gq-}Qr?#+Q{=
z7d%G{vu~<&rp3ZsWKBZI_qK$G8h(19!SJcuXPPPCS(KdY5^Bk4>}s==<3I^{!n$yi
z{m?Ua(au%$M?@8 at u}BJd2dLbj$OnGYr%SBKGd6e<1cb^d*?v>ICr~cnQEtPr)kxbS
zkfu`TLG3n{qi+iP2;!a1HQ!wsCsyZ;<{@0XF at Op{{ans!3p!Gzlhk#q*=JeAwd&F3
zlcP<7+Yp*~RA;?hbg$wUZQhoPKFom#xnet9V at 3yXq@p%5f?T03qV2zVakKSvOj*ev
z&co0j^{`tm956BfWb0Jjl2g>i3}{)sZzMT at d@6CEGJRw8?AJb+V5s<U^w<lZf1;U^
z6?NnFg#yvGD3mzGW*Nv|Huzqb*B$=}AyVjwzBq!N%Bb))b#?YthzQTgq6>DJdX_0`
z{24TYo${ijP~>esQ$l1Rd_H&u4cj!DeK6Yroi^chvcl}45{RVok7~T>U;BAT(29U8
zwUNuIhU`;#ZINuTB5zC05+aR_c=LGOs?dszdml6aUQi58;!UF^eX1#77l(|@$!2sj
zP0{HE%0Lek at H<aP)?f}qwSNrJPo=(38<`wCok&PQftu$iiOu=*SF!=4inhw+Il={g
z0ncZr^lB#ozlyzRqi}uX>Y%|k702TA9c}FCSIYZbln~uz*xX;q3pu2SJ8(_Y3jdHN
z-O6tl=G!mXU=Ksrhd$Ti%qBjVvnEe=Y6Z|GHheTLPSt+et5*gJf$TdXpCIWdijVFw
zQS<chcBoe-q&uo7(JjVBBSMnyl0TSys=U*%;DZM7U$){@4E|*K`RN2g)O;^o3tq_n
zl;_&a^mIXw&x+|VIa~wV*>$iLqXh}ec*O3~ErJJr6>`x=KaADLj;Q+I9Gt~=Y4Y;~
z`W`#|X^;v=SN5tmb-^njtEG^v7k!dme8R7lR3uQOSo at GcCwBHp!|9~NK+Haj3j`g+
z9~nWnO0W0rZ*HN at i(w8QFRG$OL*79QEvk6830ZMGZ-4~-0wq26EeR7DjEubewKU0T
zlr<?LDPa*_$`&l*h7B1k2h{%lXLHl0GW{TDs7ADi^CH>`&cIX8KX)a87D}XL%T23L
zBIsU;zYqE0Psn~d`%}5>COSRBmJ2 at 2Us$a+#17nY(GeiYGJSn6pqmS{t6H}j>o6~z
z|J*$i;!JN9wb at W<5MZIyhE<r$tr*RN*E%eBqTP+w-zp*VR+uYry-HU^#z%v_xTm4e
z#se9a-iCykQg{<N;Vlwq0#q at -(E4l-jZ8U2gEg?m7`>kaA9_WLl&g)UrvA6yn3|ao
zbreOu=ygRY*XKzceHWZXT;sR7r~##@$><NmEf*P>=0Q?m(pDBv*m$aOlAbQbMfK=k
zD%vYYXf&Q!$rcg&aZ$J<Kl_dfc%FnmipJBhL5I3KHMD~4&;x(@%l~$W2v1mnjs0n(
zM!y?hl<WzJS5}oslvZ8o9<w4k;Me>0kavSk--mr7g-%kxh$s*FE-^WIdl<po@|_Tq
z|8^%ogP$&iLTae9NNt>?I}_*+ADm%?hg?4DX(r^C1ZrMkNJiS{R#Az!^5YVgw~><L
z_m1c8zPWrJZs&zTC5f!{ch+c^L$fzl#7Eq~z+3 at 1M2lC+)?|Em+tVs#b4(pe2utn-
zig!uI3A&hrKXM)hsStIQY36X$P at KZ^<_spk2=QUe^$M6)_D6K({I1kjLIC*w&<k%9
ziKN|X2Vv*bKq>-HZ+bU5Z6L!+;GxY`6f{$*;5c(O2L77jlgQ9f43GWd%{jcHtL2Ph
zhQ*s3+K5QvG%fBK!am+LU}F!IMBNkUD>cMfJYr8Kz#VK-nP4=PM9t=cR2i*Meh9Hb
zrBlp8au*ju7$jzRPD?2IS%t`Yzaj7Ovq<GQ?{}I?Z8&18573)w$%gmtxyI{}_=8Pa
zgH8D(XmA3LWq+DqpNe??s1=H*h+kt9`%A=!>1H4my`SqHzq89(=Jm=iD%sXTDx^%7
z171`mL-xs at yS*X13p`_}N(paa>`p~cOC9)&pAH2cV0Rn@(U=8(lXnFF)s-yQFWYR5
zyFuM0lx!chMEJ-n)hqHXc;RZ{h~bz-^aOl+o%(c)@sc<A&>FMa3$RE at 0eVy~^0pY3
z5Q%^jigYt$@H0;+biGn~7v3Yzew-D4t3P%32=V+m=&TUnIw*?U3^rv&bd|vB<>VXW
zS6ZI`IPQ5*i%g+gEiCPj%;EE4T(gJ&9jOG4to2jJ at xV9j+e0yg;^TXZ2YFd;@>I)K
z_cbw^uN#ODRWPe#cud#7>6c;qQ5wCbNLzv305y3n!ug!-dCiP+SP!*x%>UMioYn9X
z(GX?h_vdzy;IQEAqrs at d?cmB3qc>0R*RH+Xx%|Doa>jBI5#Ff1IPwmSQ`WCq1i=rK
zn!K-!LQFH!$>AY}>+^4~lbQ?RvG4)7xPGHz-b7Kta;qhMIZrcRE?ZevM=ExbvM$9{
zBwZA5DgDc0E;LC;0o-RtIv^kA6j*p`w7TQ&<H_c9lxLmW{&c0A#oteB#F9d#1Lmy$
znWJJpA at Yne{D!m2d0ef?UBB@=lp6{e at v1Mh-XZi;3z_5Dix}5)sTEhIG!@UtZJ=pS
z`?p*sA6m&bxO<Z$Y2XY5U0Nz3J3%z3dzokg_N4$>i&BV`;9dlO>_vdOl~cmP^`)ND
z?mJzujiED0neo7X?nQQ*|NIq4VpUgVhX8 at Jda?6Ns-Gw>uFmqgx-Waw2<_$5;6ojS
zBQLliPc%qLk`tJG at XE&jD9+^VgT_{i+EPS4x7a#5{=Qxo)9_^{I$0Eoo4g>_VsC>~
z&{zGJG=%>I@#cX)B&t<Z<Xxg!S1(>ytJyJO<y_7~eSK3sjaYf3`-DwRjA0UEO1{zO
zToi8;^_3DzN}t>p<aLw-VA<!-HFUO!Vc*U<XhzAr9|faH%u6XiAlkPG{)iWrC4+V2
zyI%dlw<@>$P-mPOXV}81x6rHKn766E(z?WA92Q(J%WkM`t?`+^IJ_IbR%&aOpli at F
z#1u;);MqHC0iG;i**zSOEqED(?KLQhSKn1H8x7K^Po~rS|6YJ5PT=DpV9SLQWw;b@
zT5zM$ZA<g2)>eE*Dw=SLeSpCGzzA^uc*Y>oX=HV&l2am7<ZU^6H7oPFjg9#77?qX)
zo)OQSqt8LUn1w&;u%Ge_EkCh(arpW(c$bWrHlCG=sWbJbp&>{a-}?C>Z7)-?AI|h|
zNh7lbo;p#88*O~LO_hrYmhS;$?i|ER_2RTkuzCB|5)KA+i6egee8tOtkc%2$Jts85
zZ&JprKB+eS$MjlHC3WvB{WN8r!*UwQFpUu*;OQ<{3FP>yAKr5Te-i0JRG|0YeQ$Zq
zR+A9>WG(axYR9Q440sXyvEpYio!<FhkzzXBvXxd#PUv*yYd_GR|B=Kh at W>FB=hwcC
z+&-GV>?KbA)4U-f1bpb({jCIhouKX>g96#|yJqMPgY8m(LhwB!UEE at 7Mv@a0Smi?q
zrZn>W_oOcl>8m_2mo4L1#wrRb1^0=@H99Anzkd02kdad)>rBSh4|4s16*Q#0_6xgP
z81Xt3q|8y=92o&urJkZuYr2;co8ddnPHu&I!UaGiNSH(Ld3#kk8JIA~%+mE9&vC8Q
zB~5<U2%1S1?(kFC`Dx1)z29rat)=knGY7c`ox=}lIA?ek#B9;8T%-5x%ELK<2x|Ez
z&o at k=_qz+>?QakG;4_0wqWM&8B!f9cRvpyFrC3Zq!Fxkg&{Ebf#m}t23=Ze}I<IP`
zVGI#}X^;)m0b8SMO~bf`mIPuZ%%sz#=>n(RS7+KeD9);L-ot at RqJX{IU;hZk!CY6j
z?D-Ab<JDG6tZ4%Ca<x$mcnbTmQ^zVD_{mrSd+=e##XW6p1^a%%in$d-GtTIv#7MC|
zc!aq8W4zM3FoDVPt509DzvzW+65XpxPM$B_^22<KxI`xWU+=9xbNMnx8oYWAMQ}Er
zi-Bp%yb1ztCntuhk?)0dN60RL-fYDfdF62|9Ns^>&}HtQ8ocbF34?yO!PW?8=sca*
zt&Qtp?BV9z;hNO&&Bsf3{95D9fJxTCu(8n1ZWMDNA8_Wy#tXXJvVfLXrkgd4j*aOR
zve69xNIj?MDLE*Hct<Wh8f-7Pk<GI-yNB+H^#^Ey$VamAtOn=ZQM&kxHyfM&&!<As
zkxOD+%x)mm$)8T|5$9!_px6Ue{psQ_Y#ZA5efxAIEci~}LR<nvAO|Lg4(zULK;b)=
zX?FpM{P*WamA-krxf0&0m$!zEhxiK$TcZT$^Gt(#I6xyf7^V2j at GQ<B>FN4=xk{08
zU{=$AmyDli-Xh3NCA?>fAPyWIk>sme&D3iaa!*|Kyh;_bI;w-P?{^IMcDIon;X#1G
zS=~$R4|j?+T>lt(jy~BKbW_3%nn9m)hoV`D^=~D2S2E3=Mh%^#>XSnEjlCuXS5vir
z<XmoTy;t?nXwdr%d<nMM8_E<>2gjzpK5HV-L-SnAZBxiZRx1mVgI;cpVw3LxI+>TN
z`uFJ)bpdjE5nE)^Kn1lj{YgpGa5>qIrnLq}^2vEO?WV{2T#ivnw~CUAvgxBREbVUk
zU#U!u%+l91(&u8QO$rS!1DNsd#qO?gR5wc$>YW31j3faaBWE{R>nRn1x8MqMzub*f
z0 at qW6!xg-!fW0MOxM;URUx*-K;Ju8*q0Pd^)ghO}sT{g{qS;>WLx$iXa%MQ!1oicq
z%UHqp(Q|Ggx{F4CWGL14Lk$p}Hqf3Pn2olY)#Dm=pu;84kDr>n3iu~27cP0U&LkkK
z at LxfunUM0ldmzcECKj@M$epokiIg=U|6o?!lu=9WNkb~I^Q>B(+n-Ia;G#WrVdyhR
z at 65fgy?(?e_8?#k7-ni2MAkmhm0Ji*ZGYb>i|UZFw2$e2QEHdxvE*>wgeCad3(r6%
z at WQ#OKf&h}Zq7j#5to`NXLaniihFniTkzD5- at 5=(KpRcG at scndn5NP(F|r2&pFq1F
zTkso^?f at o%ap_cClPZE?&o`R<q>cC${$_GhEyd2hYd(~#WAWFGDp1Dgp$xLSiizNr
zaC563&~=Uei~OPr4!;+aq0&XA_(V4W&--c1G2WD$jP11fcD(EE at U`4A{5zPjjk=h_
z_1rT_)`xjoEeGx^L|k_;;hKG2lbEQNO{ka=M(`KF9C!g)cqW)qUChQxh4~SGDBQXQ
z#co`P(lko~0`HfrEV}1yBJ2dP>{ufens?r!dn00{ypf*?aNw`Xmz!5lSNm8iWClsN
z`BPs5Zova3N_mB$W^Y%la(J2}Qwp3$q+A?#I#V(EcF+MunBfxp^1XuMJc;85tn_=L
zV&~yrrEr-^?nY(c28+XBOUY-%+r&+;W;z%Dia1|))6;Or?|WjHC}fIU>9%Z%!y>ik
zmdVLQMNNt9eL{C&HsutnH%G8A&$3%A#v*OJ5EV-|UCq~zOZR{UOi3mQS?IJ2W`5qK
zEcCKCL&&5+5<=r{U&Kv=D_7L|sDA0mjrTx098HeZriHlV-|baiUv76-?W8r^A3wDJ
zxNdZNoGL|zZmnpepYX6R()?|&JEI8JWiHZUU_bCTveH8~a&)^5mIqlt7KM7<qD4gc
zc9PM{E8qQtSH_T?9o{Nm`Qw-67rjp~_uh at e?YF}aJpW~x?Z4?uy;I#Ke4DFr?cL%-
z*FU6Zulll0s;+*En<QP0cpV;j%{uNRvYxJW{}gbzzoK!bb-rH`ffum_Ur at 22)T~}q
zrIPT1HFS5g<uA$Uh<0%}s?B`FT}gd{_b0GdiZ(LrV=C_<Ni=k%FD$fOZZD-^9=--7
z3S#wUWNi#M*$+R2=80IBG+uQBt#>&Z*VH76Rjm>Hc#AiN^4iF?=B$jkAM!Oqu5sc0
z8Xx(=8UqY#zfg|B<k+o&kK&sNDXuV_YCXIukH((5$euQt#l7}i0%+Z)1hftOG|;Se
z_I?$o^KK_+ at 62swyo8D~q$+^h|8^~`BZj~vU*|*H_<alIByB3me9EE3FU(Bn?|)IS
zSb2sU7>^1P_?O;928vf at Lj<E}H2>_Oi9YW&G-)w7M&oBKZ6&q$QBux+O6FN#XS0+G
z;lkudT&1^?krK`OHoIeyw<?~i{7?7gPLGZn>MZhJe{-~$AUQ4N5W>)gUbGRIsJfZr
zTl;i$p5ZN0#~;gBf;Il~7r(9qK%fg$kq`LSOFj?5E41TN?eI at tTiwf>>2U#z-gz`!
z0dhVgzg}*yLThTB(WmRBYGC8hmhzn05N-LV>1`#6t&Llu)fe8XG7M7SZ=T&{dpP%Z
zl^(KgCDNa-J8qh$@~Dfkg3jSN%~`2rC^J0wx{-f*Y&<7W9^ab5M;Bblu at co|i{!}(
zEgb&-cG0gj&3%$-+EY=&dMQ1-VddD>-#u$1z1!X3F=J_E!BkM?sG-q|SXONHgYP5-
zJ~*4Q<lhz;o0*G*j`vIjW{ucs8(_o^6=lk4jAtR{gF#fzL5VJ*cS7TQe;XuTn!0uu
zf4te8q_w*8&+Qwja+A9}P&|rF{0xOtu?1UFvY_m&Fb{42B>^;@36Z=*7{9y^5}V(g
z(&YStIM<*J)Ri2!SseaN02!-CJAZCG%_h~cXlmf}r9VA!!I-g}^s#eTl+TXNKw8Zy
z2jUKBQi^WFsUKyLCJ$(~jLX|_s5_q}IVn at jqY_|saOx3_+wo^xikqB>Zu8xcGxYHH
z4EZ%Qe7;fsZPFlNNTtJNb%nX;Ys-Zx#zK%o0u#E<MyJWUPaZ!5ihUdXMw)w6n6LBa
zdg}r4Exv6+a|&GY0^_hWoO<8!WylSKago(3=Vtd(o!6fvdY at hQa?&FX$|!W_*QHMq
zmkM9q<l4J5pT$s<&z_GT3v~ngeIK4w+2dQEG}=sdNj3=0wtA9KT=Dc)quWs5tG;^7
z7M$I3VVQgL6J+jrYKhcA&6}_vn=63%%YK`^t2en(p0nh3O0K^y)wl&3Jv#7LttBw1
zY_t(n2}A<bpG1SQodVGvF;<obcQ!O<C&$!>Sgs}tM-IAh2ytQ8pBd-f;3tb<5rkPV
z#97pewoHC3HO~t4=QE4SP?Jldk}E|TnHdJtK8$bNcYg$jp*yL~m?7WyAVtA}$r+z*
z?Gsm#mj8&{>JX=NtVkgXfAJ5l;6oAN&$f&P3ttS2vy+f?6B8rrzv%#o#E9~qYBC?j
zEdh}~rSWK#H2dwwkRmN*%@~n-U0q<Ka{<8fKA`$Q%4|?%iFFDY6v*hJBLbDkc0K2>
zzLh*$6vx!U-WP;B72II-VKw|GFpIy~c-$X83YR5_6~S)3JWj>#eocRct=6m>#N+Q)
zcXG{L^}^L$<A|n6?yxM}c;Tyvavnz_VUefX;KBjyrb|+MMDijLvQL7VpSc?63noY8
z&<1kW<FK>q1!V+52b(rPF?s{faOgUdDkL}W#N8wayhVZ!oivW@*I=f!)1-XE&kKJf
zndwr9#xY>Pa9XgLh}{A8;j#@(!t;_|{wzY%7dbIihSAo4>zYW7X*M&Fbjb;AJ-tcw
zs2;V&Zcyt5Bi0<&)P_ucGl{&muIP`9z!)A6&SZTFR4f{>$I`~{DX&>jT&eu4DHv0H
zGE&k~OtDPCmJQ#>?wL%4Ydp6G1&2o~3o%GdNT%#QghjW+vAh?3XMGX`v56EVr=w6%
zI}MRFiP$AEW1DOpO3l-K`me6XeYyZLqWH8RIW;cXPy-p1LRGj8X70jv2+29=Rk6G<
z<0Mc&?T>*9sS#X4AWNeFoGJ#NE!|P+YfPKt!yBbdFA_8#rIDI&?r7siOMk_?^k}4H
z at i+Cm<Q3{u?1=>&x<0zZkOVbe7^Dy21;C5y at kY&4!m~H`@*Z9;v6<ueZNh$49%r_P
zn-SgO!ZJFmys$F74}NtWJsVe2Qo$s{NRdD#G((i$t}!}3e4>~!>yurRoW7N4T>rEg
zSZ;ACDz<e((wmM6W7R7I=X*yu*GZyGFz$j%l{lgvd=aS%Pa+C1%|*OlDut at HyI@P4
znvameO*UsPd*Qj8a<0j^dEMeQGVCv?FC*5B_y%zebIG}1o-!}`;?Nb at 5;s=g549eB
zXeGk7Iya+}VZmKY>Te;ml64iP at BJld;(mKgXXT2|wiPv}jr}f{`$x2ha-n`gWE=lw
zT#ts;TM9{#5<1==D6a{+|H7)}WeVDCoSEB9JNF at C!*>;OwR1n0rC>jP=K9#xV#S~D
z=~JTCxa9_=ZXSvQzdG!OHbAH9WTuPO10$EF=^=#uP;-lAQszr^m&eK~dF`ge2z8%i
z1NH3vjSody*1!ETPwlTuQ7&A@&YrCwpry1ibsYC<U1v1pms%TvV|wS|1%MAjYW=Wv
zrV;xtaG8n)@98mKm3Xti{-j`ws>5w)fR0zWWgpG3TZpn;yZTh)djs+>Jw3 at H2u6Hq
zCWY{m{jce#Sm_vFDABo2Vt$@B at 2~=bb;l<GQo-#?-i-6{PQj7|$GzVZN#3D`4CH7*
z at 1Mls*{>LbO$G@}L_ZwECrB>&kE$cbRhND{ux`D&^L at PCAS!ps(aKq;{LF3=yMBRO
zi+7&$+$|N0NnJ%NnlI-<7Ryn-11Ejt=n%aX^V@|GsqFfMAmwLP)puMlh|F-uUrG5&
zJN4XV&f#D9AKk<cD>oAgI7l!Nm?>P+v44A>SUH>~sn0a!%r-$Aw$n^Jwy+-`geX26
zZenin5Uq7c?m0~mrkPHQo at av0Ck8br;&=YboPDs$gG&G9bctcQYP<-{9VKpAnq`<2
zWve+g@)1SxR(*$No<x&3_T52kVC<5mkPhd~jJyzPo(mLv_VDy+W;9c{1 at j%qT-)V|
z>?LkiAeuUE*A70Yd1ACXN>IpY9!r<K1^)w2w_PijK$kYAFwY-d8KCQjTkuSF%0A5!
zM5--%HQCtP^Sz858xN;okRr?mtY<+oN^89)9gd%!!L|ay!t_p%1 at V-Fp;4^Os2d;-
zUFj<o3uOl_pWKJc4O;hG%wNbXWjUjz3Bn-Yw=lVreYvzo5xc2L(Vm`9wzl?|U}AY~
zwLcy%YEC|wrI;z)=;+O*t(>i|#DWo9aZi9UlehFM%GLBjQx3Dr?IuRPiwt&m@|t{f
zXCBY0zF!1HN!yI`Y?FF3e03Y#L%U#9Px#mPo8BHVyWcw_a4L8aob~xvrPZixtETU0
z{4jihblz>>VQ_3 at XgT|I2QI5(Lbo#~CU~a}4(KC&kphnZ8Cc9cJ at 6mG;+~5)>(IwR
zFWG{-?j0piOs-sqU&C*c#w8G`-i^AOA9r95Skc&|)bS~qkkWkr2ZxjDaQB#Wt5%Yh
z$L#Mnp5Yzbxgu}KJ6>LO6_cUnPd24$Vw4IbEc*G(!0y_=+-CJ6`Xqrxt+RQ(Ws&!c
zmVsBE+%<FIb30zelNP9|MaY4U8`9G~@N)joy(E8du`OX>%cyVQi)QmFw&1VEKI^bK
zJg1B$WsZlzZ1h?sE9qi91U9b{o|;cHxo0<u<tuSWpayZyahjugqWusTix&zvR%I*-
zYPC{ONCi=|!myFjzS_sKj~lJ5Shw84u8LwyD3}A at EvX|ny9 at WzCiab1m(N)}KGMOi
zx(Q%O)FM^@ZG0f7BzlQh-Yi7Kb5VTik!)bUwvl?RbUk%$hMJEYY$_U#`s3Lro*OPr
zY!)iEBq<Q;T}K%&lnH6Tpp`<g0715LEoI6i1BUX6UmRobu+@%f=4|Tas-8x%EW{>5
z1i!RJY<^oq+xRl+l_m~={Uh^i>j5Qd9x~VzFxccg*u)8gFvB3eQYb;}HUJl<Y2?~c
zC>^>ciPwm6>4g!S@>#6IK2i+v^vEH~dEM3=@`xP*1=;E9#^PdXhmj{#xE;bB*pIFM
z<#;x_x*(jO at D|*%sQsG#P>UW>3>i^37N7MiE%uKE;Tol)ubo44giig at wf*oPzlVz9
zZi7vM95NR4_Ovn^=;k-+VXnfaB;td+Z=2h{MM1HvupLs{;X+qLDy7ax5RRQT9z~P6
z(mf}8X+%!~`>3H(b7ap4_5@{tz`GD~uDpRNT#iqyYMc~Jc&*cpuImG(Tw=)r3lJG*
z5oS%Rz5#hFZ+vUJj#V?#7G8E2j(>YY<y;}T)nR0E*_YO?1q_XO(l1cBUcf9Y8vNCv
zb%3~5&tc|pv6Arg-&SVXwC|w@#iHvh*_^;Pglv9c=Phcr+pP)Vek5iDW(=7xgpcgB
z_f1)IK*~+!`b=>aN*Au?+WpCp3WDbKBl$CR>==>nzY`+o&9EGIT7~q>J2~x^Kja;d
z_i0FdT)GZ=YFd1_*noXcGEWB-;9j at Op>owimo34RHXvnE1$>trRa2rm6A>y2(#<W{
z+;?*DH>iXm?_aKB`MGg%<zIbV9g<U&60D8Iq3RehBAjrvBy$p`wN}ew at -GoRQSeoG
z%wQ8u2we at dCOOjQcu`!jl9`nf$j7~Id)i*ioR8*j-sr~v3L6H8bOT-cG3+|O*APm)
zQ#6<XJ~KiWu>oQE{xX!mJm)2+Xq<Sxn!+{I?3utCKlzJ$bn4z2-?d!ed~%Cm_>_qU
zTZWl7kb}jn_NtR3Unr{<Y2)n^uyu{9RnVYvY4bUKVwy#`-h9(vdoO(5 at lgq*n+e+w
zcm6{w-$yDSvtUTM{&+XWCdGDN0>h)`M^&t at 0U82lF(N$GwBM!q$BFxZHX0OZVV<Y+
z*b868X8IbAfJsB~qtBq-3izN!gb$C;&S54&taUUGK%Mv4i at 8e7r&sr7cn|*Rx5+3N
z!~tkOkIS({v+(w}Z#!O<2zdfSr{ok+g8WdY!!er28m$&j at S%VY?<yLauVRwkSt1#c
zo^!apCcajJCUzO6H1MS(jUu~G$Pn_5_XM$S^uiiSSz4~dU=8SWl#cWu)+DwM&>p^7
z*e`1*wYo|q>Wno)digB)(WfrEVGx=imZ~D at t<c at Y-3_Pt%m8LUYiUESaLLd})(H1q
zs(rm0+4Fu=?)tZ6gGnyJ32-c<MMxrDEN{dU8cMzhV)w3X_M|^d3MW>#L5o~|qf3!Z
z1Wg_>M1;8W2vaWL@~BnYVSPPt(;ZG^C3%W=DHq~ht<R;@n<b0acE>i+A0DB30}%c)
zH_{Nft8i8hKm(vnF*UE8z+8lYTfJ_zH_PSo;6oeA-<goUoKotBs2*`pv~@Hnj1zd&
zjBT9N;W?wEB#SGEC+Ick!M`@m$s7BRttq41(A7sbG30TlC76A0#J9tRp|fH{Dz&jL
zMLv1QfnCbLvz7~WTJK9DsO886WsSF6nf~+fy|`z?d$rvO`1`Oqashr>b){oTe{eL9
z!Z-b{gQutF#xI?P%Q at I<hMm4fL-scnV$EOWf!q1Whh8b8f34DT!5q{X)TfAlvKq at e
zaXXJs+?`+vX5c`Zltv*n$fCtP@}kXvt(zwP0_qUNmkD7el=LL{5Ov?wkRGX=i5ZQx
z4|;OH3^#;Vvs3zx+Mt0IC$P7XAyx4O>R<@x9y_!^*puhSZs7+$;Dq;qX+C#K1tD91
ztW+DsS+aH?MMH7*Wd9P8x?%-V##F%98;MQf_CA=KIJ=dI=+Qu`S&5^}*o0p20o~?r
zFi0v3Z2;FN^9iqS)d6_0<kx;+4T`D)c1dx}!1xZiJoaN!6JehiNQJ-okkGTepkB7%
zv`>f+!bNg<c`K{X9Yy at H)z|~r9JU0mgrXAHALb=GJ!$@8HMP?`4}#$#-*$UKJqe;z
z?0Hzn^q(?jVX;sNk`Fiea>LYg)LzIR5+__p8DvG{DkC^D3jLJLBy=P&%T1`V?F(1x
zss_kDQX$T=%LIeUCVcEsy<E%1z)0e&FN*k}GIk~$$55L08<43;kwR=^-S`~x4kjcf
z692&ecjXh>cyZ`&_#@OjVF*jRS{*JIg1jiVO#f7cs=RcSbQk6jA~w=2(v0qvAA_R<
zOv_Es!SIIu2MMgy&`EDPe~h|<&kqMPZZBND#v28kF<Ncz=do?jI)3E at 5=5orXA+ at f
z*izN-YE+MYj!;!QWZx1k2Y)?NU&#Y=faj<HQv!c8oaHP!8RGm5X@}IONTc*ZTh{Go
zL7s3HKo+Ay1MEui3CA1I$kyCn4Es~9JHqb6KQqR<=o at CibgqVPZ40X|1->T*#^0<)
zJ4N$2f77Ry$A3BO93tg=K&JMA0c*r-D&_n0fa>ta#m2lo(RY_`G47}~KcDMG%(=l;
zs4s0~z#7;5#ZSJHcVukZ|3(*OzlE?^Dj{+W?(bj_Q(B)}c1l%Uof*u#2I<v;Eq-JZ
zc?Zf3*JIE_g(_KH$yNzg9V7B*C?T at r1<*J&iEv73%>oHT8luc<o^O0De3Is%bq`Wr
zKRa$;qvr-L-t0jI!moTz?B-U*kYSBrM)0dIoIo6EgK0|uY`4{t`}>DeJVWJ+u|Cap
z9G5FDU at 7LRvaL#%+vrD{Lr;8b<9 at drj5$nyC0nh2wBUb7MF%6c-<SFkK?#a0dUGC0
zG!SuSfT-!fK+44xx{idq#JAjojp)38M33VE7_YtZ&rZx}I~n6!3!1>c9WAn^jy|uz
zlf`n5_*T}Z3<Lf7Aq_5A=SQEp%j>DDi;-L=wEr~(DWDzpCBF3&S0R(yCVlgvxQy_A
zMPGbJsNkEFsL7xl+Sc`a4s>skK!blo`?r-RkG?qjb_F;!ixj$}9WQHaI6ngQU8FJG
zPpj5!4`#{}BUz9GJTw~r%FoJ~rk}H55Ga3B*o8g{F&YUQb(LhJ`6@&TpQHUQfxN@`
zc`n^%t9EJqvW?Z#-c#NuDsJv$j-iY0Cc1O1BbrTNm??k0>Klk-|KOJwLnKM6^NxBv
zJ_K$7o$g~6?}qy%rvzdosg0RrcnvX_zBlN)@%pUaw7TKA4>Duy;xf_Sy?OfIC|zoW
zR6Hi4U1Y1=lNibHo=*5f(9Yi+yJzU%W=?EY+Zv+dmeUABI$wSU<YWWpKxT$z#>aku
zpctdmL%WgMn{hs*GqU7)q}XFDs56|6C&u!Lo0)GL?_opuEq$jS;oC>Ey0?>bU{YKJ
z7OIO5J!}Q-eWdRJ0??B&Ix}>1-p3R~ms-*gOoSX2$&r at eRP~qM2PrS(ge_?m!oR;s
zf$YDw5<)(qNTXNP0Bdxj!xsfU+igVKDkHMhQt0~!SV%p&+_UdTL~OAId5<}3&!Eng
zqU?punLm0bNZ^ks=o$VSXAM$5YNWqRIE at tR#!LYesR%KV=$P>VIduxQT3s+;_{5}a
zYjYV`D6_{%*;DqqXU8$`qd$0~m8BdJX$M31S}$bu(h+rVy4pZxMQS5m9bP`*UC??^
zDLB%LMrSW3^IRA)-jxu^PO0Ec)`%rAYt}rxs=7d~jYIlz&`EFeC=s3DP};prE7M0m
zpM1klXF|5yco%8Z{D$4Y&=&i#a@$d~2uUI*@DEDk^p8+^-at_hp-r1>3I3Y at K^VkY
z*^1y5`1^{n)d%EHKP*YqH(VBgg|blBGej!G8(ke+1$=a|b|h~=6RqZqycf#sA_<|b
zz?2f<#3U1tg)*aDZ*_^7lqM!*i;iMjBe7Gzl4WNXK at Wfa8ofP=*x;{`i$A6-a+KEm
zksb_&WS=DxA~m5p>`&Q3uQ;}_-RpKD|B3a%49hov*1f?vL^oE2mK&^qk9mq~$kpl;
zt`0SaK{C+cXP!4P67;ESlaM&hS}-EQ-c1Xuf`o0&cL=0fi(VD>V?U-7v|LBD++y+$
zAvoZ)qk4}>rY*dMv?a_r<T-XZwD?nf at gjA&F9*&4_X1o>6kc(>eRO^CqLPYrunDnw
zG-5fz at rMq)ZHx8^BDQ%PX{>pmhYEk~0{{&Z#MG>J8`nKx<C0UjGFLja=zJzX5^0M}
zr at PjLkvN7jvx*{Y(Mj&g6s<93qhLsNHddSb4OLRJpRc|?%>a#)E|iP<WF+9RB)Z{^
z02cP&{k`b*rL8;M$2&b=JkaZ@&VTg)VA_P4)_etXKZ-3_5vPb)eXhLQa#23K_mfW%
zU+-hgD$JB-;oKWXO4dHQH-Qt#`6&31!<Ecc-95&GO$IX>+Yj0uW6A_l7OB*Q;r4UI
zDZ$Ycq}=-f=%T0JI9;NEI`6CQ2sl6Tn*u2>`w8>`vo&uF at SS(bVJJ$hIGl2TDyUBZ
zf9x3FgS3iqIKQjHQyf7}fF7iTZ~b%_Z at SwzPzf5=PD>Z(+?iDJJqTvun$JEEOZ`C?
z0~UMlD89}Bmu!%7#c;J5FY2NL|9l5hCLmx#$0w4?i$&U9E**+Ata&mf27&mLJR13m
zBD#AD85;9A!UO;RW9}=wqWZpg=?+1<L2{&q?i8hkA*4YDkdW?XL_iSf6r at 8MX`}|x
zp&RKKq(NZlhIjqG^?QHATMO1=-Fxmnz0cmC{n-a;qy(~y^*wFtPq&e($oq#5(`S)C
zCFP--{@;oUPP5T(VNAk&>x8!*+ld3tgc5eyCTPN*x64{EFk8~aFEf0J$IjcL66vl!
zBLD#g|MtT&wRJ35vc9O`=le%?7*Y8G2bct+)gOZ5mi@;obb!Rl+|-zY%2L43iFHxC
z;{u4hqdrgPTN|U!3I!4CgGn*u6iSz9vb(hH7kgB0+kr65Y|mk!UNbr~2<)7cHi{F+
z*mHy!EdT at eqbkp0yJIYmN1A?0^~bOpSYZ2w7J<kn=C=2IAf<h~#6}7LfEr>;p}YQ)
z%@2AeD*6I5J at S#=o143lR%h5#SiQ>n at 0P7Mu{<vU317EKKK6tWbB{R}unFOGbTm*j
zD|ncf&0=Se5PkHO@|VV?!CXw-7nj;He0~!z^OWu3Q=l~><JcA$YC_gn1xvG$^JVH?
zvGG8dY_?|=p at _vY&>R?IJx9Ntht0SKhy7RJ3T?-)^FMC|R6R#TF`1M<N)rZ)%>8Gl
z=w4UjEUPptrg6jlUZQ!1VG;@&nwdO{H|C%Om~U`x`@vmn4<<o^{gBM6y|6Rb-7_1<
z%6dTm%L0qU4DYqvbzD8>{FM-}(}`u@`58?>e{q)<VRRIG`p0ksR(VbIeRCK0dqMH6
zL+_C@^lQxEXX|_Hn?T=P)AU8qfcU@|J?JHB`Oqkgl^LtaYozfh+{pc_Ca7*- at 7q%#
zE)n$jB<R?k355xy3A&E7YK_NbrGM;OQ_~!xf%2Bwvnb&;V+iCeu&7x|iBWV|2UfiA
zjn=4sO4){{;wi)?B^QL}_8RZCMR1pZqwqZzN}diOdJceb!07c%;66gK0?tnn4p|}(
zJRLr*_KB>%GC5|O05!~0P(_LiI;A=4IlIHzGJ_)Xx0_{EikAC7fDtypYQX`5s3fz@
zvp6m6tE-XYwXZ-v&mKbBsUE!QwmJ^qQT19p`aM216FMeOD*MbPh%FgVv;bFySQBqG
z7|D(Vyni`-5>cW{fZnL`WmMC0qb%cXQjB at nDxfi8SL=V28ngmB_E at t$ZwkdTn7G)O
zIYhxg)DKWrm=sDa(c9B%hj(=N#KJ`OI9^)ZA=w_rWwWVlbJu_$gmFt~UYu|p6z}O`
zj?_jPlC{eAU(rG}IW$0Y)gkr*;k_Lf8VE)+0H+Rx(3!IQH`R@>5sH_In-Or-qaS)_
z{vP at nS0W}C9!g1%frjq_1D&UYCmhD4 at WP{=s*Nd9m+sf+xoUj|G)=T+H9M&@YH#%=
zLcWR0WKS1-BrP00FuJc2tMpAQn6S2}0G*Ka7L9 at A^mv&$8UCmzjPLOW`erKlUtR(R
zQVb^Q#LCYa9P4bzyGK7xyk)_=XaUT%oV9I~c63mJVPK^B-=m1;9ZpORgPSvYNHOQ7
zwx(kxT^4tPGc!D0g7XLsdIj~?I#$SMiJkonm}k)1FatmKkw$9`WjsI+JA1NtyKv${
z5BblR0|^N5Ffazld6mg76!g;yT5w5X^F9=~=YOq<DUhcnSq!AdB~ef)sk>M%{2O<3
zx5h5!oIFzWaz1<1dt)Hrc%9uj>11(jQ5`#9O~uRa5s%SX{@_MA-H*EwT<u3!<}Cik
z`Ce$XU;2!8Z^@9P%?n at F!gQfS=I|=G==8kt>v&C`VvMmOHUhs20g_XT;F%4Ni1kC4
zDp{OLG?Vw%p|4YB04|o3vxTGL`|QDu-8f#mH0aX^-`#C2q>Iyj?`oVDPw~6)A~tnD
zLZ~^3*NeC?Wm{Yw+4nbuQIK`EGC at Q(j>r>I%BMZsWJv1fg*!bTdRpjrmcj8ZtEw+X
z+=)EJ`j0;AKO=K}T`3L2HRFHv at MzzMIx$y&y{Xt5t(MGKeHqN3{*+AOBZCP~yPl;y
zZl at wuik>>p3kL|9?V`)Y(>@~D4u5)uJDyMLW4sFtJ8VjkGF0`aRbe#0QIo6+487N<
zc&NgK{d>My9AMq33VkDJncq2}D^9`q;3<WcN*o`J>4>(W)Vi=B_1n*9Vo{M1R?`$>
z;%T+-A$|Nkfa_(~%PLRlx{D&I*)!>{;l0^JZlAKmTw9GO2K)%i&7w`6m|m)VIQq3+
zbGYLrUmBjTL`#DC$)z()9>e*SQ3-E*`%{sfAd}%x-0NTN*1d8*Q|;ND)APR&8A9+^
zed^z~Or1`?7q!LMFzL~Kjn=O;04~J|>wq(n6NV at htEm*BGO+S+-N+!tbz(Y{Jk}JD
z#=(7LoUrBA!zR(%s8*>!OQlL2$D_KI7Q)jO`p?sm-V3X7=|<-Z<l7UVsc|Z^deEM#
zlm(Sd#3&K}E=J)4E+4(pj3H`bf4$t%wuM1b_w%N~v{2sft;6dTIbUodnXL7c!{P5E
zd^`^qpn;s3Xba|%hPLb&gNU$ReL!DQWAG)~6towD%j{EQd*9-UvHpH9&oRzFw5Kgn
z=JvT)<oWf8K*^&n&GMA_QA)lpo9hCNGRxP5jC<?*p`{Lt_7M6IbKV)t%V#5&-(`Qo
zA{Epf8Qj6JJtOC3;=p8NGsjp7e)|#eR3(u!o$`{>!IW`l8&4L=^q;giy}HGVb)t;=
z>`N$@{rLq5B}4qh^q7n31Q$gSeLnc(lOg4Y-fYZRjPK~*B;Qu)zy5%`>;Li#?3>>Z
zjty}>KKs0K>s)kPnOjV+eh<_FEe%uI4Y|FZ;#jdgZck-dxjnoYE_!l%=``B!*P*K=
zA&kM54rH+4yae6GolsZ7Rv#ms<JqYq`Z44ycMv?k4RxDu&xtOEuc<>U3Ho_Z{fB}f
zG+r+FeOt}+C~T&ar%aP&ZiR;ao8bK;8d4#q65P)^U;C!f{Ai5AdlzGSe{P+kX at Rnl
z;JZY0pJvv%d}x4pj#^JlmS5n}ugWFeq<+hu5;L){meY&_mwZ8TsK2P6Mvs7sZf^N1
zmmalPpCP``)>y8PE_*1Nu?GJ>l*G$@z!$!+9F3Gs-CmN|^LX;ou6+LrPVY8IDClY%
znbn3_f0PmJ7kjUxLKh$14b8#W#2~v=(*>FShNXvHEl;22#hzd;6~^|qgdIK8QSy~&
zrC2gQGp at J8j3Qw!w6krg^*s146e)+T*Kx*_-pLPr%=T->6PZT+dN9XGo%82dZGe!x
zET+NJB3Hc|g4w25{PFEXoQp<&M|=x-)G~PVz6xeR_~nM6{+Jn3oe5XJ<zuZe>x>4Q
z%c&|HUvm(?PAhzG^d8Mjv0#aLnmW&;7Yf2SWaF4g1?`?=q$k^BPLD-rFgIC`LW!7!
zDgCnX0#};<N(^igS4bpy#ZHOL*3rw|=#6*^{V?4xaB1vQ=SE}tjIr0O?BM}Yi%PzF
zBddAKy(T8zF5k8mN#UY|?lvc3)Pb#C1WzpNo%?==7M|1BGK_jN at i-=p`1L?=t<QIM
z1x0d#uw^)dOo?HO^{ZC)&~Qn6rTm!q0l2T<P=bQ*^Qm}K at P%NVwf#^3hgY+$0?^EG
z#vA0Myhq62OuoDT6^FSG?13adraNd|HR at 4`mK#y#xbTwhed-?NZ~}3;glgJQ9tYYs
zXwv~~ZZKbw`0^NRBt#o|3cFk+u5rN$is?-ma at U|_I$jQqx#dd%Y5xi9_Zu?KJRAeS
z7Qdm5z5)xfoe3A6Dka21xnWrS!sfxz1#wtl4PLMrwr;VEe!u=w56$*(xx4GQV8JUF
zzx%WwpN6?a6<R?L)tR>RtMSpb_s$YE$v<;nFv4a|nDaq-Gl^X=$S++P6f4tY-@|i8
zJu(-j$w!yCc*{nN=-2USCV0{p%ERhzhV&U=PTzRh93l<|Mi;tSX(k#`+NS+*2)<4s
z+fX)MV at 2QH^yXfal+9+%yL(c2b$D0=6)}=td<uU<s?HiK`n)mWP!vd!DGrNN0M(AS
zxtWju0gI#6NHIo2BCO=bx?f3XB*(a&WHiGnvPqtZZ&ruZY{KC=W9>PU<L?po%BYF0
zu}Xfk2}<iHmCi16&yDIxd=A3*Mj{{_KaNGD!%AAeyg9&vYO2^co}H<#HWLHC*L?xJ
z$*`U2`S3XGOj9O3Dx**OJq92;BF=GbTrJR#LFhc2advobk2<<w+_Rh7NkuH{SV>&T
z@&`J<VUsqN$-7caag5+Fr>aJIs*n_aBp8|q)>l{gNUY#VzV8l5=!bUVjCe~C6^AJ+
zV3O}IGc at x)Lu5$9=))>1hdbG8!6lDTVyNuK^Wq;L1V&{_gpRRIr+0KxKsL?E_Li}=
z2&DBh$LkAsKtlTf2DJp^d%zhHFG4e$8N!bMZ+bz8hz`r>!y0`^#wc4>Xguv!Ut~X}
z&clz0(SG%A<Q}i|-X7nA(wN^%3XS<N=|nHgsd9KWz&e)aBgIELq^#)a(wnL!5;H<g
zQAGdiCPkH at z)F2qY0UVt5;c{}?evc^BEhH(h&Jx(Z&D+NsxOqt&h)Sn_>lr>!}LAc
zTdoNcjE#;@l^H1 at 88F=cv;O;+X$36ml9eK3-8(Gpk&p5sBf)ko5cUIED|fN at -1Vgw
z?2=#ba;2*EGrVVt*nqu+1sTvUQ`MW<L2EZ*6E3`m#yY%bC(MFndHCI8<oWw44K~kf
z<L0IG>~2;gYX+X0dn&4wt6r^EkiI=O2P1y63QG^5ryDt4YzW#|*ZVRjK9j!y&HtWG
zi$Q(e at j_F_*6jsELlQSqf)N;RFdkPm=9tNJiYX$@Bvk(^30N*Np!N1>NZi+LFEooR
zm=78vg9eFyxG(z&To3%fsFoKH0j?*xTED4gA@<{&aUll=4HaLPm{-Z7^_EiJ^<Ayp
zlBt0 at k1Z~|BlM3K5X}Xe*fs{w9%dIX<=+d#gFd8O81nSmYeYZ>@F&AeW5EVhjSkcE
zk(n>yY==!xI+_9EE_4^8C#*Re-<*dsmXlJwOzBP47u+E%i~imoOI*3eX?{{?ef6?;
z69=TlF&RZq1YJ4)N})Mt{ZLC3Iu$x}L9?TWK1Y8!S4l|r38x&bezgmfP5PuF)WYP0
zJE+)0Et#M=CSjdI;)cnn6F-hA%EZ8GH`vX`wDifKw9|eFRMQpt7|8$~5_H-R=(>5J
z7k(Y<fTMY4A=_&b*rF3Y3<H-OXFn7M-Pk><*zW?xI6(6C$vpNx*81^ft0wMc`F10@
zUY`)XSsM^=+UJC7zCtQmRfFxQAhV9>La1+yLX(A$A)O1(Ri7HliqO<%S|kJ4v>hZJ
zEl9PiNx5diBOA%>C%3US8m3EPFh1*Z8 at zwJl$@h;$?%e|yIfY(!OUOy8|Uv#I04)w
zkch at PHuFOzz6YlpV?v~+Y%n!Vw*TrkRqHCP`@i2NJo)K7Pu~^qz1|6U2z;qiU$?q6
zp2p;y9sRQGM}b-dL`C&(_Yst3*!5Jg{L at xrYr5X|XLMR1*COLoQIVSOaq1iw($w~H
zMozx0<_vnC^V4b<%Ym+EmzS4-$+kH?pN7aVRCwA_=#mObo~wT|8oGc$&{Xg0#YKxV
zm3Yh*q@#FJU;Wnw8Gl(`V_eTyVPKtaL_regkNC1W5d*THjK5WotyCR!zZtxN<o{IM
zO<7U=a=cKc=OXPr;9B}t=^3%g2h~?*?kaDSIko7Dii<_T2oW)a$hT=R;1BfAKY#s7
zJ&WVf5<^r1+~3A&ZK<v+(xrPxx4grb%h?5M{enB%8Ve=3j6tI6l>Euw at J5heyd>@=
zVn<N_DCIK_^8=2py3(Z781E$cYX`B&Pq at 3aK9;ggoWE at byXpSQbN*t|_{AveAyPaQ
zKRtg127^E9>FJ4Mn$A?2Hm}`XtO%S(O+0xX`=Q3L%4B$becc3+VWOaQ=+BpzFAlR;
zxJI8*blNwussh^)*G~J+xA`7MzOoD!z3TcBI8;=B`1<D$QPgFln{udw0R;5f9zsU)
zS^q1ZCwnV}DakZ)#e8^kbZ#Q#Q)3h3*!xpZLK$2eIz;8PZwU9D$9VfGI(jbP_VTD|
zROV#J<&A}+6_BqvDtnQlt*XlHTE&MuRXcs3&TZrrj30ie9}$}>aDlcE3tpI*m=OD;
zMN`@61cgFpWbQB50{e=K1cufFEuoi%J$aw0{u=74182-wk&;Sv8T))b+8W}MhJ?>w
zBWEXPXQ(FQie#Np`h!1hS8pyn%gxBCnGV`S2PH9f(yMCZL1gH&V5@==MFAC7_r8H9
zCMIdXT}0N9$%zRF5PODsEU)L8X=-XpIyqliHT%D`?Kk;3iqY2L?ovPPB8+(3IPLNg
z=vmt5&)-Gm<U$s@!*QFtP(KLsv()~8lf%eZ7jhvg32|jQAoWj-(&t#UfamDA*y6qs
z&malm;^(jSaddQK%xeOd#EGNt*jMpk{tWo2_shfy`U(7PdfsSV8sU4@<=kE>0ge4O
z{l|P$hFHQTRt+PmvQce%UKx?We(3N5Xf=5P#pB1Gc&h3e8aIb^U``$m4%@B!yBlAd
z?KB;AN?@m?K<4PAef}yUS!#KwZp087QOqF{R3DBwCDqH=GyzSM0&OpD)$>@?;W1#h
zS2Qk8fv88k2b3BQ<@2aGDMlD1;zgT$3Is${8S$c|$H`K$AM2|rac2P0K$?e?Q1Oo!
zra&DaBBmUimmOStjg?C{p}Y~SFQph$A*;oFl<Jh=n<V5&`szh-U5il})`yP~YyED2
z-!Gn at 5(_reOeQ`r{c^LqLW~-D>GrdR;JG8+(Dkc(ZH_-*KE5n-n<!E$V=IA3`gzfK
zeWz@~HEQ-$Wu}>GL#+W+i;MsTLL^1rul_TM(5;Z!EcT0D9DCeqo#&4U4BG$GdHP*a
zm4SrMWpF1$RJ)dFGOlHVBp#cHy`TIHchK5s_l6n^Jln`=HhT5sHVOCeibqxSW!OHv
zuEcxRb5CVTrdY1Q9xaeWspe+laTjPK|J99BD84!+h;NdS#H7TOvVd9+*2bl%4$7Xx
zDEag*Q^RW2(WnK7swM(6%GSMtE>*I{nREq%5cUf$Wfk5iR-P^(ieN|MN)+|CCrMFI
z4|RP;5O%j0>Qc3Yi^V&6ca at uTS~ZVBYJr*VEs#A^n4;HE4D|ot{A0e><CZ^UnXkth
z;<9h67WmZ=>Gj4JU9LRni)bRJORlkVm~ZiX>ZUgXURSBUjx9se#{@3zDaUR#qvT=C
zA*fU&kE{tRO~kVH4<WB1lp5?;D|7HrA9KB_oe#z14B<^T$1H5l(l7=6Pz0tEQ*1wJ
z4o6`5^S<2!AGcjB51|MuhYm-gX7!>)8O~`X;D*Mt5DY)`671W+>^ojXpZS9_C1f87
zj2Zsr&-0E8_kQNFknB>3)tiJ#F)Qra0h6pQk5#g|JR|jTFIez7*U&w+4|9sG at t$Eg
zXCv!3zQusV*h8KC`VeW6 at 6Y)UA9&Yp0+F>uwfyGf<*&RrJAV|kRzQ9|>u^Nf^0lrk
zn*`!r_6838pwUZ;jeZ`S$ELF!Sia*s=Sv{r*hAw<p~~s>PUlf?-)9<LHq}3mc)#&z
zQ&lHYRT!8~xPJTuJGQl2)0Vtzf0Pr#%tQ;SG6UV_JkTJtQw=LdncSs5qb2}+Wbufc
z*93ETue-t*d*z_dy~RU at L57Ih7f7q*X{Ryh{*^JdKL{Lek^z>93%xYZKm8dt`lvRB
zDBwPgTnNTu+T;#R?Vw4P{@9FB_K*cm$6+!-4!*nKwc~bZBoQ57CK_-IuT&tHa$h4x
zg_f0*W5&viX+v^Y(hFPRnVgim*7lZ}?=JVOxBZ07d|i<HW;H$3^?4 at PmsW3A5np5E
zT%F)dhia5bcTq(Vf5vp}%?RZJjO=bND@?Vtsl6hd0{V$qDWy0b=e?jWEp*EPBo;X9
z`5{3x;>6E8F at m+zH$6hT_#>(1QwM7nd7>jA5yL<(`wl=K5(_ZZ)EBe3H$zOJwYxb@
zzh|pIky7l6gB>n};&t8=rd1~&B$aq0r=A~YBxSxRV}VL6U+eN)j${6T+MbW+KERJZ
z3ElZW3$-^Az5_co4Yb6In&z9RWHyTAy+Hbf7_+ZY&VON_EJ&{mUrB>6QtC99%bYL9
z34M{Gaaz5(s<mpQ;H)rVG7)`evCrOVb<X^*S+>@rUXz$#PrU at k*Pb7$SDx~6<$P at X
z^x6LIvk&p%>lFUCKSVul5R8HwZLy>7#ut@*^beKk7jFF~Ja#kXtX@(o7EUZr#RqT9
z>xHr>6$xsG&4 at zzqKKufhD49Wd5NTSgc;bp^6WeayxLXnyKizxR^$>xR`LtSt^+bT
z1oLo*Xx5A}K<)SRUuo51!IUso_?d#U&2+RP!u>54C+1{TBQ7JM5Elu_)LXyCTR$%c
z{4V+2hr8P*tZH`+p~ShePwRpCD&eus%yKxkH-j6$CyOf1DkN!}c?>Y*LiIy_THc#A
zsi_UO3~#*YmL^s8o+WCQXOo|fCrM^L%ED~#B$Vzkt%fg=NMH1fl_Imc>Xu(si?n;0
zBCXw-ZwY3!!it_4A7VPBqP%?-kg(6V at d^=y81l<+_D#q7vfPS|{r;HKh9+L!p|`Bc
z_#N1Bo3pL$CwE2C=R~-a{&?yOpS$SWJHOfmZ_n`DNGPe8f(lfF7&IBNOIL_ihQnvN
zB3JL$J8vwK-xma^Ty`xSKQMF&L@;j-rcaEo>9jIT)vy`|-`I8E+=iO6-F0Y8t7TWw
zDIK1VRRW9m%`GoS*^PG+RjToWy5aqWqrC++|33edmBDnF#&?`}aY>Z{9#g`tFNuxb
zoWnojPhO9kNCte>c^>C>?fqWL0Q2zBIo^zE4AUBFI~>)OHYgX6gEMn6xT+N^gvjs=
zdj+e3DNfI0XCBBiwvf at -#<otI+!SKIeqO27#-5MXQe=96A?(U=+HP8sn=^;;+=4T=
z>zC8&c=LMw+>W6U7~Am`etUeyQmqTUX1lS;3*UqEUVaP0 at SFtL&*pZP7h9MCeHX*=
zp*?Gdeesu)jL3OUjKiCr%(~pY8?_6qjbqdvTg!uY=8ngX#N|PBY`mH_?7+7>Mhg<{
zb1UfYyl at UrIoy!MmFJO1_T1+9?u*eJrvyb2Z=-MJ@~l{LC2{y)hJ+xP_pJs}-n%Xy
zGYa3~N~}@PNK34Vi9Rj1><q0VD!`^a^l*RWz<7P+>NnLUv6Qxi+JM4xT~GMcxE=MA
zzH^s~B<$arM*q-Cj^UpC{_VD2Rz!t>^K74mxkb%#;I3v7-{53?-~BI^*=Yj%)9#>$
zB6fm%pM!Lwn|k?r7fUv#oOTO2vrGUi4b}xwjRcV(ZeI#{=T=v-m(iRz$hhpEBALr;
zHv4onf7Q9!j>cY8EwfqjhT>$<>we?a{4VU2yg&Z<xE<|HW1 at i0!;_**BQ4M^E%e}-
zqn(+3l{t+)z0<yoRm(p&x(U1~>9nsALHmZ?v=e;iv1W3$GAf(Qp1(c*JOnS;oUw{t
z<9PYX=c=0Kg!A?=2YzEzPno8fX6Kh%zo69dwD`sf=|`&|6=HOKw`4jP|L|DY>d%Yr
z<QNsFI=LnTW!fh`o6e{^8HeM;WvRRSSDgtNgK6)K1^N`c6W*6va<!DnXkKGHe|Y)b
zC5ZCP8~(KS1 at 3$qAzcjHmklo2H}g-vfs?rJ8qKO-)v(WC8aJEUMTfCl-iO<dN?=QU
zAqsxp?>kL;QXi6jeLlYB<v{6Ct{n-e*gnxma(BumIFWK3@;TE#;Pv(L<)b5C`;&C^
zYq(!XFn(4pG)a<tsJAeo65_(aB~e}=tBZlwe?N|JcYNZYedi&jd8t4(0?K3wu7fS!
z&<$DQ`&xjsLT%Lt(r5b5iby?1gm&77gS?Q!XMvJkb#D;&e;OB%4P at jRy~(S~PuB?@
zwnF?4->6wvGYIg3VRDOTn9RvDa+{9P*hQiG_y8P%6w3>5^r-=taG<ObhF6-WL*B;j
z5DbYTZk?;X7}$3|uU*2O5ZDq2F6(QJEyM8JjjV)nfzp#7))ZgDrw)<PtFS%3Sh at so
zK1#O9H&D{;E5zbFc`hs`NxyQIy(%1LBJwmP@$SuZeyi7)p-bAF8*V6MReHB;<Hzay
zA1j5*ujemnoogBdm)&v}I}a1GUxCuW`FN#U@@a=rn`cFFs&*X<gR_aQ_enF9e*=4i
zztl%Gi<Es(a{o3#JaPa0vVURBtPm2Xl3aJTZzjnsP2+ODr~Fo5FXXSQjQk!HILF@?
zD0^NyTO&vT*xW5Zc;{s>N=waeAbsR}eCyyUwX3DIUC*^T1iX*yXRk9|WOo5O?Ob6E
z7Fzb*8cfnLn=r8Jz6|Z>XiDvND&!o at n~A8wwvgG4TFdzTKQ2J-8R~*vqD*`Grr=BS
z_HPO#ol}*oaRZ$~ST3=GqeIZ!swJ1$R;mogSO*tx9V47MV#A at 4F8cL$U9Bq_91jO^
zHPA#Q!v`#NkW at 3#t&!!c*A>rUxPjLP@`)JI=ZaMW#?3qapJQQo>pw=4^l$6s?wX38
zc<5ku<H8K9SomUAZaMHj#UILMbdgtwm~}FfFJRwiM-2$Mew-{`dguGta at yS5yj2o)
zmpafNX2=zB#0N>NG*G at uxQt~^b7%Lo*gr8O`l`!wvmexS7?CcQJed3fXQWbKkAFC%
zjRcFy274lkfjb}Vij60erHVv2-KOK=OK#EJ*?PdSj9e&Rx<jM;H^Hj|I5R3SU9IbQ
z;%ws2<Gx{Pd!@urA at Bi~D&qQt^340v-e6x7r%(l|qus~IZ at Rr*Z65ngxBJjDLrGVi
zCzoQy>P7LACe5-av9otWMcn)QhIlEw3J6$KR6NcyXPYryXOT at 0iCO^5ov7k@&7g1Y
zgVXLj=nlF4B{%QzPG=v|;#V2_NrHkM at y@7&<KmmkGRKN}rYPv=x5wRpqgvdVn|>4(
zFi$#xon*<VopvH^nFbl}+;Q%{tyjc(VZbA>XNa{n`2FrF*7e?Re$+n88WaC6Te|Se
zwRfl0 at vOnZ%boUB+0D)%t!CKIU+OEMqEOm(4zXX4kY_9x#zpg+?oRvQL!J|(OSR?T
zXC29VrIsVEkky;S)4NMty%K%IzVKjKK6 at 7*Pr at BRTXDNue>8=}0bkt#Gjwx~9Cn^{
zCEDTD7K=$gWtvnLtTy2+bE#%8CvpkX4!N?+w7HN9u6ZJ=h4^Mmg<tW=2|^Y@!US7g
zF4NiaNilr4l2+8ru-+^DWW6u=gnx(1-i<O_%8Y;1GSfTIQg3aUo!g&3MFN+61a{f^
zXa?6hP+8M8GX$r*i`SFxx6D+QV335~cj2HQJ|Zv<&KUv2!fmQC^yHUqK(X&tB|f<+
zJA>%6+BEnr%Z2yzX*x;kSY!KGS{u!@+(PU=f&$$di^kK>!nt>eUBMz{d|O!<njB|p
z^+L&L1ioUhmp-^4(+>CFmDxE~mlk^3 at n>4O#HarIOBRNAOIKt=q1XqlN+v2z2Z>+<
z>GO?!QJbx<E=93#*9R45{C=+zCcQLODCn+YZat@~a1P_rY^+ZoY#gWk->e_ at qEfC=
zqx3=_*X!kN0_G>qJOXxQX;sfQJ9aWpnOqxT>bBv&mX}Vy1yTEwsXaiIomfqO(|-OC
z_xUlSK3)+#U6$WD>-Z|-ymdR5NKB$yljNI9>vbQ7Z6+gji1PH_Hc<n52`m2l(6f}`
z<zQ|b$IIC=q1od$e at GOkz~_L_F+<l>^eGq>y=jY7M}G%Pz2@;#Bk?Ci)al3Z6^6Ew
zb at Co&B#$t>RZ8Yg!*iZXwwL&D_3t3=$KHNm$iC~;M<}fS6rVlWK0+>tR6Qx4-m=xB
zSP}pDGx|dQpPmz18Ho^Yw{5lPGVPQ(phsiA<7A!(!dShf$1|G7-*^{8i?fsB`s@#V
zLz1e~NJCPY54T*BoP(cy)A-p_`r6Ej3js$iBST(&SBN}KEK#<^hUcRPYy^K3tt4BX
zEiePsC4CK*9yQDR{6M~j$k>C;gyF`51pox5ccKyYwzHscu!_37!g7G@)LCHQ!FiL-
z;9iE%hHBF3$wt78p%BVrD at 3x-4_RIrpNWEHH@jqiqs*(lZBzWC{Wk099LhCeDsmT!
z{FDfO<$8xV8pHyv6bh{gK5lDxhd{uw-)!>7eg9pw;4=e*uhC)1Ap((gR^BLQ{xih&
z4)a9uyoesT7qWJW3Zu-DtgPYYNeqJo(Tx1l^crdLJ9|!kLld$;Yc^tiPL`CntpllP
z7^0T)IdX@$6>~cm&8H!&&I?&5mml99d&6$O8xhO|iNC^$G2~8`+x(F$(4^vod0|?f
zFiT`Z;|&0i$1l0tOVDl-4gwxhDd#a1pVvRj9oRs2;1=(M{-&}IO>TH}-^SV at w03}*
zgd`253s}nfrt!_pfo6*_{}|N}3r$GUE22F4lDmE_{6q<eg1B(}?AMH)8=P<jJf#ul
zCrghSE8tq0cA2svUx=o2x*(v4>(HF8E5ho)=lrCH>0o?%X at hA+lX}s$`#6Sl%oKB6
zcCwv$kngwLUB=MH8#I}l{9E&L=A>j-s~r_{8>zRBblEow2wJ8r-+pU%ToR2}Gv?`=
z2mW93_$YPPt6#0>)?0}BotMO3G`bKK)+7m}1X?D4qni8FH1cus^FV9p+?*a=U&^@u
z(_-n(@F=AdGnh!lQ at y48+ZW$ugC at 7CC7yOX{I-l2^AM@?PY-I9 at ejVV{%9 at Frlz9J
z^H(j*RXgz^JNz6@`uamf-|jp?NHA5kpMKJoZt{jcn?+KbbKqoil at 1R7P>POaXikHn
z_Pq&td}4A at BM{@c0>^zyESu}zee!<6JYCIuUf4C6e|})2_=lZGOhb}(m;ByVtA%KW
zM{WbW^CZ~|)`T+5T->NS9IyDo&V1i=m>OQeW!D!t(?Z2wIuO8J=1 at 2Mo_-^cO<dcF
zjgJi2Cn~syIVmBzp_vEb2ay^~X}iV4Q3EH4UbT0xtJt*<V at Ym1D0v!++0=thsN1iq
z%tG!C;G)b-E$T at hi=IF>gqqJe6#sOfmIaJIN&_HE<6p(i at SC4Bnbow^Pnl1h7AL&+
z1VpuBtj?GjgCbR2u1uaTUvhQ?Y>joon$N0m(I(adXP$bzM;`js1*v&=J$3sOl3M5h
z=R;&XJa3?ZE{h;!9AkIvVjXt&uQUF1+%Q{Z`nG+C3nHtO;w1lg+w<EtaK)z#eA-YS
zeAsR3I1ZmGByNf7LHMpVX=0~YLyM%>3!^ro#KfL|-m6GS-%XZ(nNY-5KT9J~(U`4{
z^;HpltSD_UR6Rjg at cstxJlwb`r6Fk9Bj3!TRz0ckWc2-<fcnOW0?ug|cJg|=g|{oA
zO<iU3 at uHSc&yy40n!S-!hqY4i<k5 at vRLFR}Bes8MZVpVEzyC5L34f=C_2ilZ?NA=e
zRi1^?dvq_Qvnq5c4uAn_(u)*c-`FMHR?dN<$B4JO|MbI5UpN}11vfg=UCMH6e$O+K
zcsBda`i4}oV)d9*sy#Po73<^zRCbt~MBuvkxZS3 at t3yramnlRH*xnMm`l-ego!6Jd
zj(t%ap558B@)|sQ9cmLR#--)iK7W(bFjh#<V|Zw1(8~g%iN4<6`CobT^>;tfIXOOs
zLAZXyQuXRXhdi14(WVP~Iq)5IlnwP4zrT2%b at Q1oxl7}L{K!(le($DxYeSmbnu<ag
z(H<X!YktsiFZ;;Kfr|?Bm66jczvdgN*|$}U7WUnnk>P|fwp-ioSC+%0UOhd%*|{a#
zU3nRyq9cX9C%!*J)+JKZ`xaWh_4KYw=hd3xK_DB*fqsHa|KcTPU4SEO<K>&hIboCj
z#fM7`e_6n;dn@#Z!5iG_u&o+1o-)MMo^_d3t9$9`OqyoG56G+Yl){e+PBCV4dNBZR
zg)`o~NjE8){3t2=)c#3$l2E+Q!2|&b1A&aXY{GHzM&FvRD_Lblplz3|YS%`@m(|1_
zkDpD}$qnr({ODZ2Bjolu#2yNhT8t#E(RMHm=f0z7ILFdr%U}~>NwEpbf>?zW($M8i
zovNA%wt7 at IhVc#z;&`#I0K6o>Pdmi&m5=Dtcka8vA3hQ<?vnKbdxwFovRH{no@^3=
zZWUXG8-&4*-c#AQ7yfpJ2-V1EZd0|SD?zrY_`XS>!n at l9q;E3;<pD6}%EqkrkMCta
z at KT5o^1N+C%RCw<$=n&o_rrHHb at B$4LCDnqVbO(^jlE&xh>YmI&n#~+X3!n_rY3!1
z-64eWW!w{WtbgZ8iIqg?wIb60McqDFRV_t$xvvYpH&jWE!o>{#5~sA0rp;rZ4zQF|
z?IHO9lwFnp1PFizKv?sEXcF*3N$Fob|HHV8QwZ??VdMbXO%6nXfEOTkkushCZv>Dr
zP4A$k5GXx}_q<p!r92ZU!;5Dx#nb_P2-n8diQU<<P-zPXBDuX{|2^dUe-HWoJ at ona
z5Dy4!zxWqC1qfJF(dXQ?D?5TI1PaM9sJUGr<SMC|93yzW1k^IHP9r$8!xHn&zYmBj
zH(UddB<gDD-;1Bh1+ss=9{oydZ)Pg((HUT+x`h0DiJ|H#g;#tV1jx}<Sb<VjZ6?|`
z1J&?H`{1HJPQK>e at Fu!k++itzZ`o6Sh|xX_pDx2|2LFo?&z!K&f6>O({o5aS+YXd8
z=xah32<N0+O|^f6&MeLN+@)%c;IUj-RbY19vxr#>Bz|f52ey|ihpmutYu at N{ys&SE
zPX{AYdqr at mF!8mclD=p#MH)Z+hzr(fBgkGL<Ba!`0#UO0CfajJF+S5j0;2d^*(Azk
zN+{B?$Y)su^ANI-Xdi61!pYY*TYxv$3z_Ytu8iPoTg~cP|30uAO`DMY$BUx%oM)cl
z at cq`fVpchD^_<zJ1~)KrKN9U%*x$vQl!TB<3#abRcT&sU^<?_7Em3=_d;Fd>_(yq2
zLkm}(+U!%}I=o_8cg at pxPr)H#ALqa5(gnWv6d(&&7iuBZuShs*`kcD at gMZ}b;~f&F
zPg}~POcoEE1 at dxPVT7s;QQ0Kyj{Sk5=*P`E<r3fEjO_ESLMvqBD>1)fL`cmEWH!9G
zGaDW87_}qImwy&GVynI-Yy?Tu8UBnBe}UGrfjwwB=s7z}TOUTkK7Xc-OMbTQI)*;x
zBX3~FfWgl?es7s4?VVThSY{K1^v+9}%)h+xXUz^K4U(YZ-{15SN!*)St at Y|Kt2QOx
z>>v^aNzx^CmBH}<wnQnWZioyg`lUQFpj2769BmqnI?+BIXF<Ufl$~I|g078I@>tP8
z{G}7yR_cHh{fi>$wCoW76aJRl#1Awrt&g at f3K+}rRj||>xKta&(W2o&r9HZ!coK|4
z*z_C+MILZP1Nr`Q at _nm3#yagj{HP}d`uLLayMFA6`+g-CZ&vAOB>OXsP{fG$KJ4>{
zj31RYv<vR=cSvYIu)kARsq270%fpX8cemt=`TH|Mo-?)TSsPvpUOW$JHl`Vt7rG<*
zQ3S1eKh_7Zn|{1!z4u?NhPQasr!Fed<&6H^N1=b^&>Rexy9DdtOg0vmTkul$`Nr45
z&nW|hgl%vHG2<QZ%(i74G0HJk?*t&AmM3r=WT1_8x9k0+il=g~{xeWKSiw7wM5nVh
zN35E3C3_}%OD>Q?c9*!I+dxL*!gjGDS-a-sSB!<;{BIMf>*F-bds;-POk7I$l6t{!
zpQ1mS2#cxbBp`JOhEFjh4saJM!sv4aMc)#&hygfF{bL$vRq*hR5nC#lbJ-+|2<g!p
zf at KY`E9Xd}038-L38n<qn=5Dmd&Z{o{f|A#ywbr9$2EN!K+o|2`YqELi%x>^8QHOD
zEk?`ajzS7#zyS#A4vAq9e<3OO>ejYIMavkR3NTYwy?}2v*tJ0Vc3ER-G3}ot^)uV%
z{`*4h|9){63%>43)NpCO!9#)Ek_R_HJO6z{aku)f9`XbpXVAqx=~q0n4KEfz7R5hV
z^c`DgjGqcVxVJ5tCb}ft07TNt$s<7jKK`$D7;)%al8mZkr!-?&Jl&Nk5ZxEa1gWrQ
zoSqdpt#&VDs%7cGTh-|ojdPWby2=wkB8z93HlR+PIXFc?K#oB04<i$^0mw}9kV+^(
z?EBPUFDsco1>~qE6HxXs*kCXCXyZbj$>NBp{P*}dAU>keN46GoAEO`Oy>`&~(f=o#
z7LYCI8O9IDe*fvk|H at Jhy;87*#u|PY!Uf6__~HInmh4~IT=e3wWkB}(|5{Q`<5V>X
z{)%TCdqoUTaymwKjAB6PgJ&Q&lCi~oA7)P}Cg2F-axT-EyP}a;p(z}`xVm7e<Lq0~
z#w|#Jtp1zt5iSMMytYXgg at H?RAQwu)t!r>&LS;S$^6N7vC5ZcQYN8chMG^&>(!%n2
zat3s=e0Bnue^W$;B0NjsvC}?I=^9VD8UG9=yiEaU at 13ti?jVgG-8PyC#sKTn(R-&V
zbIOq|;M4?~A?Z&lInW7AaEuU8QcjTGPt0r-2q?P7`jZ*q#y+Qts30`M53-HT1Tc0^
zv(cIq2(S#^8aus2t3m7W=1ah6BiuglXywO0i~9sl#|&lBm}#z^KL0koY+uD_Tg7N!
z<&4u3wigSwq=A-4O5qfz04$l*Cs0k|BK$jTr~Rkey?QCFX4TDM!Z1BxMMvxWoum<F
zXd!M{G-(rxa)u_XTR$4>Hp!xhp-F)d00GjCca6YtBadW-YSIEd{bQy8+>)g8cZg<^
zj)pM%O_jMrtmG2SNfCHc8anhGI^+W#O6}bLkJQr}CIFjJCJTqCU)e)+iD;n%^iY at c
z``St	v_quP7qOI+oTdR;{nsg&Ai6<04XQe*2G4n>hO8gyW^(O0|P;!rB1Krej6`
z{Q&bC%{z=v)plygOo0#@t4(dF9s!VpetjVGMXyM(9n8fTc^(%lpkU`tgf&eIJ)WvL
zbguHFYw4xY6E1?i$mN3dsL~z=0clAp17V?meNTE7Ugi<hahoYj&)Xm+k%)Ic^HL!9
z05AexWqfv(c(JSFv_JB;$r*bHEu?9BIW207JDi=@(!|M?TeW?BWW&Q8Qxh`)*eRJ;
zb5Y<;xx9kLa~R9TLv-v)3lJT#3%k)kU+B0Q6Tm3ehdF4d9Ia-l`{fAa1OKB`7-41;
zOS`rIrfZr;uh*oFq6|7VzfhO>bb7w0Xq07}HjbK%511TNcr%<HpnG at KJ8EOx54#dg
z&lmQ2y{<YfOCgAs0IUz}t^EOeOs^wGcRHvP>#sCA+xc5UB!<&IKx$V2I7geft_6ut
zoc8shLsxJwsHT(C{_<Ey(pO;&BLW$vdqnw^q6r;=HFc8yTRvn6V5gaaVxj}X+B!rz
zfNVD$83oLuhkKDcTA`djTr1&~ji!n2<jq at 0S1xG0g01kx7vRIZ;hV5FK)v(^{r$r-
z)*kj+1oNEQjai)s8<_ER|K1n+4b#^bgYmcnXon_Fht1Rcb<@>#(<8Oh+CvQ=#bJae
zLIzU{QeeE6KH#EmMN8$BK;lc{9i0BX%Ix0?3%7FLz$L7}sh|;Z0oa at OB4ymyQfOT^
z->Y&jf@;8a<={<U=+FWp<35x5ZIx^oQRmPkSxw_PbrGda0k|aZ#h~uszK^Mu#25`v
z)fZ|@%r|sUO}X4oLLs9IBROVZd(m$Hjb|I75oVeNNM^_m3s~&%Tp3)<h8Qobx3Uo`
zw7=$zeBxB~F!gg$##aVHCq*SOIdfNV3 at m_8SUG6gzHLh%Jx^#{g}~Gqc2&XMfu>Fq
zGY+kIWqL=1wHOkPRULzE=GZney~NY=u1c2>KuKx>quhy=_kQJUA|#y}?X0r#EKH-L
zdFimq6<I^^D0hbId|Il7U?+XXwu8`)4JAH7OrDj6>xa9sOdKnY$X at SgWfem6!b;LX
zJ4IP^iA|pH{eG{+L#h5*pCVYgZ?>kB5!Fbe**xuniE2`+R5YO+>1&8 at TE1J)Z1fSW
zJNUVT$RIqfC&hMYmL|R$cm2dp&}v<EM at fSj1Tfu5gQA8u@w}w^Y4m>3oUlW>{*)(l
z;uY&pO%@ew-(Z&I;NSY5e*Y0DdXn;b<xGEt7?GjgM>^7eivy%EV6>yR1FXgLo=p%Q
zpx^{h+=9SBi4N|swVN}?KUrcZOgyOF&wSbUHt$LmG6(QR1=a<CrvLsovG*9(!jy&A
z@`qQVhzuY(fd)Ec&=;>RB)H(Zuovc9*%(DY)2jvNUH{PPqD^0sm-8&?hd8kIs&TDM
zoJv{wwD}UyzlYL8mjw|mpTL&1&?Z*OSC(iaP16SiFHq`b+a;KyAJG9`ACfh%u~7`@
zAjTz at 1a%qLH~O!e9YM{F=aPqO+KMLJQl?JS5iD^8 at LUCgF@yBqBh2Z8ze$Xn*Z6 at x
zg-SZ-W?meQ5z|`g;?RC=8w0W`(DT%JQZ0eu#{^n!!&-I+_nw~DKO72st>A03*=vH-
za at yxTgbuJ`*L5~b%aQ*uqGOZ)Z~{B2YAl<RQ@~#LXl24Yz>sQPI^fXmElh#50{JW8
zRX&R|d>s;Fowq7t3+K;bEP at l$v40&u8l;7f!XGLdo8JdKjKeoPez8K?%ULHi8-Ksx
zp*;FegPH%`GeZVirGf3<fj0 at DntD)8;156zJc17CBZHBNZtN7xMs}FWVOhs at R+;Ks
zK5cqo=n5RjP?D&B)fezl{z?Fspii8Q6WSB#D^SIm-~?f6ew&UA?!bk{67tZ7L^qz-
zyUAO+18pZyeCA%XuphF#;|F+n(!hyTD}=ZuZNZQjG?8A}@rz*t&SVx8%h=Ms&*+Fl
zU~!5^j8EuSH+q<6;2l6S8Qrmp`FhlsH%|)8ra@`Au6mgjaPmZa0hh2rdj4QZ{T8tV
z-cT0BUU(qQT(Px_Q)0O1A^AT>q(jzZ^2AV`V9r-greD2)6P$G7(-h_o0U+W-p;`op
zVtT$29s%3|sS?%0lLY8g1{?E)C_tEN=^9XGsNqJL5(J!BaA~-kQ<Zk=5N`UQD5eCx
zJuo8T(v0!{jxLP|kpA>MEgZ}09k`@q@`ysW2PO*-1QheA#`M!-{T9F%&PF||W9ruc
zEE5V~5|!b$aECq&8^9hU11zqH5tBfQ7W9@`8qa9pa}~gtW48HzV9uYev7%h8|7;9Q
zIRHjv^ecqs0ajA(zasqUdmL7RW0Syu{WD_py(ZHLHi`lhH)eC)r4rcw`V<LHivxK+
znUmez#RXYS`rI%4+vMdi0!*Dky`*vq`ZhdLpH1VIk$U+6HXtL38V_YL(2_V|L=aX3
zwn;#*=~o#KfW8E?Oq}j at 0TjVsLImK}+s)tQvvpS~@Y&cJq>?VP|6$1EMHK@^=Z2fA
zdKq_-T7*Y-qYu3xW6LDXV at v>{C?HJO__VOUjB|?qnN^hc55vEjYyn)^#9xzl4BH;o
zKt6 at xh{lnP_hy-3z^gsAI{8Iio(+b>MF)Z>SLVkGW0vP^v|mh}Xdrz`?swF2oK{8U
zid at TZl*X4hF6JZ{BizS|z7``xtw46w9$@`401mJgd*U{!*<ab3Kfo1UXHvW-gr2Vy
zCdedmc$=9o83xjQ#F`2me=kRBn)^wb?+$M)CWp97W$Q at b1rZ0~1XbckLK4-IW9(PK
zTbM6d_#TsS?BF$YqEEZN?5Z+zkhpC11XJRE^vV7asKH-kS)aRY@*q&!gJ0|or$L&N
zpAl-7sTM#%G1BppwDFnvLE2cH6fF2ZQ*PiHrwhA=-uyX#3ba1ip1R&+TGq&9VK11V
z>u83&qepkeJV9lUXyX>9sF$j#xNm~*!Xy>MOO^ZkjjL9*yR0X at 0sJ9)<ZN at Ya6DJ@
zzEJp%iB}`MBJX4$Wq$OvV~*sKIG*<JKPx|fiTPJ*?_xNwn1Ky>FO(~9#|p^usQ!z8
z80RBZ at TYJ!!Q<_0(&@_C=hWBZPC6Y0;ffK{_3#e%c at e;~1bwE=WM)XkW%8s)0olxl
zrb6h;N1WuJ_aa9C#uO^Qh^Tpg7WZY>p^m~TnEWdDmAd3t)w}JlW~dB{K3&tqsXP6a
zP?l5sH81vGFW!c|Y(@VQvr-z$&Lljw!;%sMtRdZOKTW6=lTQDR4gs4a_Ox at 9o%ffx
zqDu*9EMAl3kPbszBN^IqLpS~sK}mEkuJI9fsYk^Hx<}H6(JrHqpN|Q`E+w?MmG<jj
zSgA7G>nNMR0G3=DKDGh|ih${%^_e=rUIsK&M6VZmh%b;1!1hy=eZKh%iBg$;A at ICc
z55Pe5v1sFa*?}Yh$oTW*m_G^xXx={mimECjl}f{PK=XisBD0<ThKWJ;zzZwUc?R9j
zk4{EtX-AbnQ=VF#QixGcm%(ocl2<(W8i=!V2BW7AbaSn}bG;b4L2bNk4LXT%`(^Cm
zKa_>KA#croM4BrPYJB?c${QT}B`GBMuhq7{$@G5H0s2K7Y7%3%7L$ZI`OdHg&-rs7
z{1>6La`L=?K<lq*`Mvz#ZkaKkk2 at yEDf&Y4=%U4b0sdbMl{?S}f<7o6IXZAJaf$h{
zvL#=ZF?JzmkKSSb2KZGe7X_NeO#fOiK!^Z2;hYR?(KfHN%I}F;4!uKPn>6K8=j<c;
zu!Q at Mix&(gY}$_~b?v(nEoUoc8>77ZwJMPkL-)^K7|teP5ue~)Jbu?;gC--4anLD)
zYDyjKUS`iYHb)g%Kd at f@eQ8X0*XORPHvE0~dSCETO^sWsIi)DS-txK;%Irtgck*)^
z>*t?xo_|Dd`+q0-t^}ikHU#pzFB#yS9<SZatF|00A{Q?9(N;#o0Zx+?3yg|7>!`kx
z(nCui<6aqA^d~$sDM-Ht&r+U*a=@nB^RW{e8X2zIGe!OOuIC&ryKf~qoG|^}4F&<g
zEQa%6!^vdHk+b+Me{^@ORX>C`o4H*X&&iiOYrh at qy5!M(AUo(1+7r`j557~rQHPNA
ztyHYHE1y*2tJocpgpxxb9Em1%B=>V at 27}6jkz)@;Y9Y6LW|)MpH0q{m^iaV}G8oJc
zoaq94B(@s1?V(2|mq)H;4gL^wiTa2Xwb3g12blj;j?Gyb``?cO8l#f;faJ>)e*c_V
z8a0giry6GmFWqElM;tLfId00Oy?t*dpk8J+4j51$X9b3pU#z~vUEPY%`HmGNLvo#y
z)7DF}|5WYQ)L|Vb<)C<Xw(VF0iC4d!NOX<HTFu4;`Ks5SM?+ooMOk+D1C<vB6=*dp
z#MHn)Mqduai<ISCQ*P=Yr5warK5Uck{`7dG*IzX^_CodnyeNwg5w6;qdm!?&u|GdL
zkV6xfC1oBN3b0gSi0z^}XqA!m=QdSulJ~*bok_4gz%*{bsSYqpivM(I$E?gWg*TUz
z0+F2HDORy;pG3#16UPr&;=)&n5JKJQwZ7y=oBx6Z(1<X=fyRiNk|3 at v<r|ye>@Gd}
z!K-Ra6p~`LQ~YAo(kQJm+(%qpX}m);=vI)|pRqHP9Oo=;R)8++NEQgJuoLuZ!vnjp
zR+<lk=@z-5d+;IwfX~d4-?9^Q>0D5Wd3?)veDVDt6L}-!MKQm^j<1qDkJ{`Ie4xC%
z^QQ?GH9~gIu(O_)85!EmT=r7*>AUXf9iHp7siXFfxs~+PietC{;GmCDBa-P!v1mR(
zuG^UVYfABscKX%GUFZkMWKr7_L|?p%k4vk9T>zSlB<8LKe#c=rKC|ju2QtB|>n7^r
z)=*XEOIr-HMT75T0nJekh3)cFR0jc)!IFN^2~(zbcd9juywM*XnpmRy3SIwg&z?bF
z1%Msn_ at w2|`f?{TmN4E{?A|#O>}m4YNXXbE1t4gKt{nBS^I(*Dew%S^Jj-A1+K3Xi
zRd==HDMQ6^tu?8a6#%FVrH9&!bv%Y5p4$e_tA)|u9Yupb#JL~apf;yvfs~c6ma;d!
z=}(E}UxvvoQzcD_>@0L`833%dul}@V50##LH1hX+de#6p>!FPgWfYEEllbIrZjfCU
zMf=A&IHQBe at a@30#ENd{g`RMnmfyoG{|8VC>;}gs*sM31;~Tz>E4j=?zFCeJR|+W6
zJL~?9s>VQP(WwbLOK7;1L2>aDo#y at -PaE~x(27V%`Sy5`QiNIS#Dq7xTd#(Yv#@-*
zLD-2 at H>?Lzk8%55&ck11;VWm*1s1QL0fN9w+Tai7j)~u$lfC~J3IynFClxG?>kZ?x
z9X&QC6On|$isq7)<yyPz+4n<Lln!FSD96o<o!m2z<&%cf3)XtVceh_3+R(L&`b3sV
zxNw(oiZ(E;QZ30TpjJ9H at FS%Fa)1wejy;+JN!0o`kQ{5>Ck^aWFXDTypvMn|`zzRW
z4+-ql8ydLspGh_wI6bE1Pb6m_XomuH5s!Z&`p7O5N{b?j1+PqKLX7b^MkC0#6n;ql
zkLn at VVUvap|6E1OEdQ55GWQ;esLsx%Qe~|Z;;@~L>S|nAmuWN1vAVc2QBR6f+6mb?
zLR<{foOm+(uPvn=9d%-D&HREW|9msreQHR&f2~t)KdGn*;w?8!_{nx;k@?;4p62rS
z8{GE)G;^ilP)7aRPEFHT(%40k2!)vmAsHG=mdKJlWi4xn5VC}k?2&EkOSUY75oU-=
zWf`(1OEk7&jNJ^qPyg%x`ThJpAJ28p^_=B*UFSZ(`@VmT4aC}1bpO7i`t_{{v<BaZ
zwR7r%1v)~}FxfQrk2hISfxKCzJYhjO)uhJ0*shtlosqjXQkAiJSTbE)FrG0 at J>F*{
z9KJe~CucOVE)1F|%bP0fZ?WLK_867r?eFQmB^BQ;9UE!SGqBFxsqMKIQ1?^)w~HI2
zo1M|IBoKu9z}~^LcoL3_w(=|imCoZAE*dO*s=n4zNzUwh$!?h!?>J2K4w4aw>}RXW
zIl~O<p%NQO@}_s(!vGSvaba7{_MUY}(<P=4Mje~Hf`M!^UUjsPos0LKsL)#ZQh-!w
z6rIIrD#-PW38w^2R{aa3bqKF{M^B-@)1|WM=SuYVQeHF)Y^!V{$HR0Xy@^v$CKEJ#
zm at FzQ_~n3}9w8I?C#Lq<5>cc0+0u(Fsyd>as|ALs$9614j^g+D*VOIXpQSpCX3#&X
z7Q~*S*x<m<a>+gdTjtI}ewZ}rHUJkpW-8ZT+lWAeA{LA9YQ4Ft<1TI>m`>~aW|gs}
zK(ZguosmS?a$=qsvIltq9O<RngCVk61$3^;YHszA at 24u|Q3?o$((mpRWP%i^1u#iI
z=iP4=7}K*?U0l~aNWk9YZ)r)e$)nl^x5tqSJey{dO!audz(eV#$zad at 8xS`YjRx&?
z(XDNovDdlll$f-&UD2083)k9r(@zbuEXOa26c0PKm|cPlOiN_;-DV$KU3L<o|IVQb
z=Y$$jj`rKYc?S$()+w9KUkxkI+p05+wK%TFZ_{=q at j*o;AJ20-IZ#m**#{pl^HIvt
z+MAi#Y%_FLsJcX){<&kAOet$tNnx6F_7j6>X{D?_%bdON%iFx)MYq)0 at kcc|4DRL`
za!I)~VuCJk`Q)Sf!zlM#Y>1#A8{wN?cpgOwE_X{)?pNP%#W6bBU>hES3*aJA<u!kX
zlW1#B`H|p|$0yhSb-<QU*em%lpkD0MZ5^ics$E%%>q>e&#PEwBjJTba4Hf;Gwvy>z
zrJK;7F}<A7kSKcgsc0Pe!QgVKZ3;47KKEBJa9WeVX^ENEW{((_o5}6NJ9_T#vnY#)
zt*BXjtu%k=I*Rh_Z$Ed}unil-^I1W^XJ*7i!E|9&*_Wj=2unu^GQ(svi|$d2)EkX<
zH74iaf84VUm5*gBZ0i95yr`@xw_%Mu^A-8!v-HiKs_w)iqBWZ*?i!6$Wyb}GF?4Rn
zc#*#Bzf`$9S130tAf-Q$KdKV?PS-gzAazq9$skiRvmdSplv)v4F;D;4CAZE^-{5m9
zrexG|nBP}*nR#Afw#4UgzQDZxi$+ow3)))+T`0cHk%oFLNk^rpNdLYb$y;`^>3kmu
zjvBpZ#RV%%cMzuX$L)&$L#+3Z6pN}m7z;~{5mqj!b&Jp0CqELda=kT{Dmj^Tdc^F1
zhF1OW%rG*C$Oz1MVC^A=Y~yOi6SM83B2Z%H10eUx at yR;oV00RhdK-_Wg<b*#<;^(K
zT~tFf)XDMfjy(D;n`vjD3OCTZ_+M`oUm>7$LMBAybo)1~-`sHQ!>RS^IgBQ!(@9xm
zNt(1dkVVk0hPV)-ApioY<q27hp_b&n0yZjM4#>uvEPwNwJ9H6)fq|zJQAe{qOaMsl
z-`Msr)6R_(#edRukVP*+<Y$sYGy4WWj(B&=HW9tdaC0!mi=BUs?^C1bIax4JLt;^{
z8*pXV_dgURzs1{T5(uz5Z<tceg=x8|U4jwlLC7t1gn6QavAmSEG;QpC5S0F&1As-<
z&kC$;U8l}`UuDt3`J~;62K-{YcYANYh%NiPXktO&>3-pb3xe9vPSLMutcE_+BlsbJ
zVmI%91x_ozPB~cyi at xa6h0Z4ez7bSPywTs+mcTLqN6N;LZ+<69J!+t@`|}P{-`+~5
zLf!V@(7U}IPl)L)K>doh&j%R#fAog5CFs0;1W7$*b$!nJZ#o`3Qx7o|WCWb~6^UIi
z&U;GXN3nCMGjkt}W at B71HkWiyF}3;>HtPIDFsNXoqFUa?b*K0buBu;aU_G at C273_R
zg8}4c*~ID@#CYAvWqL2P7Ej#hSHER at BGf3hlGkBKfDd8IjR})`qoK>5CtY$f>EA5S
zITF*HSJ~{^ggvio(8wFlZMowcrU-#XH*6jqhPpImAf5JECe{n(h9_T7%vA0F-Cc(_
zeo=V!dw-8_DZ~}zQEk#}^$Kr}>1G;Q`B**gZ4%=p{O2WaRJ8aV?mvx|@bWGZm($o0
zs3ywYO{tMnx6U<Y at rzrV0Z9nfUj`4{oA2zNm<agpqcqUuw?4z(8!A#mTMM*1b&RWB
zJ)9Bx=|JSF7dimvg?=q{AUL0$Qqujb2){tp0vUWjP>+o+R$ps#I}_6SiyAepF+nw`
zZroZ4(9(9JZ%B(P*Z?^urnxRI)r at Z_8)G3=;pN|TK0!}3xy()6E#wTFC$eMkX#;Wg
z#^GdmMOg6cDzS8Y5*%JsRybpA>P3{%|Dz2(<H*xXkXhWdJd#36WSN<v&V6kgc$F_4
ze)sKsl3EC%RDb<*;s-t+an|m7;)_lVoP<x!Jbir1a?5vZd{X2nnCPP#?4#aUd at c;m
zl`N=96y at fCr5j`W<RRM+0=;J#(kjfBP_vFv^KW-;ucz5}fowBNXS^oWoD|o9C5q
zOnvXv3H^28v#ht!wC>^EzPBe^8ADx(m>>+`1JZ3ePCE5Td>0p|KCdW8g{svs7e^X%
z{93ieQt*aP{XtRTO)t)z6^5?8$$bct;)!cgbqa|j7cdmXJgue>E-bAy_bDcbd4$aS
z4Y!i_{W*5AP+bLH-iq38|8TRR&N at r%N4u(fLTWX2SX2v)r`h5H?EXz2uVz~jlIq;S
z#m6S4JtduxWQpPI_>nTJEin%0+4P6IA>_WgV887*^Ve13SVI2ui-?&W4iatG1*?3g
z$7+lb8Hv=^UNJSfiaY`(RK}pRE{88i!%K#KcgI7fAD~@^gj7ApJy+EwYWQUAkPAA-
zCdr3}7evI5cH}Sr7 at 2}tYE?`w!v7S>uZf6}bB9QQ{@rCX$927HdltS8vDg&5cBTdk
zpt=KdUn8AS#^W&=)pfM45{`Q9dRu#i#^uWFYs0P!I~uc$sx^Nnhm|dF>VF3!^$t|G
zw9o=toWygM!-*ua^8?Nax8$!s!SaOpogYF~kJ6`|if0Y?u^_|T2G(2#eW(Otii60y
z<|lkp0%c}atTM2Hx!TD5(hr*8Ab^k at 7Lr!%m5cLsOjiExdDv8Y!dWP?l~|1*ZD%K+
z?8Vs6x>mt(U--bOe)zX+AZN{8*`fS{CFbTGzYv|ZM+eIA8Y%hRH-*;)Q#C&Q7}1^h
z(Sh?sJeu;bg?IiP?Jx?+ at LveIFL^mc;;<d(*)Xs+g;7ilO(X?Mib#rgUs$+Eo4L#%
zmWVm%G90^#)Okaq&;xB^IZtp`SD+yFm{zCc4mqa$meXR~O48E95hQz7y8vOW2P_r%
zt%276Z at s1FJ?_tu%vAs`_W>695?CZ?V1v=_#$%ke`TW7(f1{DW=s3~_tDUc~Ru5)x
zlm0C(HtthmL818c)8o}HIPi0!eKyM#l_=C}AV!UNyF|vskSR;54q|yTiz+Ywuk}{m
zbN)Aw_C=L=6!#-mk>0H-TXwD!DzHwyz(mZ2uBk4TF%x7=*5i_0I>LsXi>pY6clrAk
zg3&ZQFv7FX4H=^a8Duz9S-{C}^#sT?323o)Da`tu8}kuJ#;kNr4t2(n5Ur=ri!)c0
za}@R(b3Emck&CZmIuFGWmtA8&BfDzKn;2ap6mKZjF^?ya?EUx+kn=Q%cIAHGaGNiV
P0r&u=D6;0JL*#z|XU2S$
diff --git a/doc/publican/.gitignore b/doc/publican/.gitignore
new file mode 100644
index 0000000..c1656e7
--- /dev/null
+++ b/doc/publican/.gitignore
@@ -0,0 +1,3 @@
+Wayland
+en-US/
+publican-copy.cfg
diff --git a/doc/publican/Makefile.am b/doc/publican/Makefile.am
new file mode 100644
index 0000000..5b66825
--- /dev/null
+++ b/doc/publican/Makefile.am
@@ -0,0 +1,134 @@
+# Documentation is built with publican
+# https://fedorahosted.org/publican/
+# Publican takes docbook-style input files and compiles them to various
+# output formats.
+#
+# How this build works:
+# * the main target is Wayland, documentation ends up in $(builddir)/Wayland/
+# * hand-written chapters are located in sources
+# Publican does not take a source path, so to support out-of-tree builds
+# these are copied to $(builddir)/en-US which is the actual directory
+# Publican uses.
+# * ProtocolSpec.xml is generated from $(top_srcdir)/protocol/wayland.xml,
+# changed into docbook via XSLT and saved in $(builddir)/en-US/
+# * ProtocolInterfaces.xml, same as above, uses a different XSLT
+# * WaylandClientAPI.xml is generated from the doxygen output and saved in
+# $(builddir)/en-US
+# * WaylandServerAPI.xml is generated from the doxygen output and saved in
+# $(builddir)/en-US
+# * run Publican on en-US
+publican_sources = \
+ $(srcdir)/sources/Wayland.ent \
+ $(srcdir)/sources/Wayland.xml \
+ $(srcdir)/sources/Book_Info.xml \
+ $(srcdir)/sources/Author_Group.xml \
+ $(srcdir)/sources/Foreword.xml \
+ $(srcdir)/sources/Preface.xml \
+ $(srcdir)/sources/Introduction.xml \
+ $(srcdir)/sources/Architecture.xml \
+ $(srcdir)/sources/Protocol.xml \
+ $(srcdir)/sources/Library.xml \
+ $(srcdir)/sources/Compositors.xml \
+ $(srcdir)/sources/images/icon.svg \
+ $(srcdir)/sources/images/wayland-architecture.png \
+ $(srcdir)/sources/images/wayland.png \
+ $(srcdir)/sources/images/x-architecture.png
+
+if HAVE_PUBLICAN
+if HAVE_XSLTPROC
+noinst_DATA = Wayland $(publican_targets)
+pubdir = $(docdir)/Wayland/en-US
+
+publican_targets = $(publican_sources:$(srcdir)/sources%=$(builddir)/en-US%) \
+ en-US/ProtocolSpec.xml en-US/ProtocolInterfaces.xml \
+ en-US/WaylandClientAPI.xml en-US/WaylandServerAPI.xml
+
+# The Protocol.xml is purely generated and required before running publican
+en-US/ProtocolSpec.xml: $(top_srcdir)/protocol/wayland.xml $(srcdir)/protocol-to-docbook.xsl
+ $(AM_V_GEN)$(MKDIR_P) en-US/images
+ $(AM_V_GEN)$(XSLTPROC) $(srcdir)/protocol-to-docbook.xsl \
+ $(top_srcdir)/protocol/wayland.xml > en-US/ProtocolSpec.xml
+
+en-US/ProtocolInterfaces.xml: $(top_srcdir)/protocol/wayland.xml $(srcdir)/protocol-interfaces-to-docbook.xsl
+ $(AM_V_GEN)$(MKDIR_P) en-US/images
+ $(AM_V_GEN)$(XSLTPROC) $(srcdir)/protocol-interfaces-to-docbook.xsl \
+ $(top_srcdir)/protocol/wayland.xml > en-US/ProtocolInterfaces.xml
+
+combine_xml: server client
+
+# * we don't want wayland-{server|client}_8h.xml to avoid duplicating output methods,
+# move it out of the way first.
+# * use doxygen's combine.xslt to merge the xml files into one single file
+# * move wayland-<foo>_8h.xml back to its original location
+server client:
+ $(AM_V_GEN)mv $(top_builddir)/doc/doxygen/xml/$@/wayland-$@_8h.xml \
+ $(top_builddir)/doc/doxygen/xml/
+ $(AM_V_GEN)$(XSLTPROC) $(top_builddir)/doc/doxygen/xml/$@/combine.xslt \
+ $(top_builddir)/doc/doxygen/xml/$@/index.xml > \
+ $(top_builddir)/doc/doxygen/xml/$@/$@API.xml
+ $(AM_V_GEN)mv $(top_builddir)/doc/doxygen/xml/wayland-$@_8h.xml \
+ $(top_builddir)/doc/doxygen/xml/$@
+
+# WaylandClientAPI.xml:
+# merge doxygen xml files into one single file (see combine_xml), then transform the combined XML file into docbook format
+en-US/WaylandClientAPI.xml: combine_xml $(top_builddir)/doc/doxygen/xml/client/index.xml $(srcdir)/doxygen-to-publican.xsl
+ $(AM_V_GEN)$(XSLTPROC) --stringparam which Client $(srcdir)/doxygen-to-publican.xsl \
+ $(top_builddir)/doc/doxygen/xml/client/clientAPI.xml > en-US/WaylandClientAPI.xml
+
+# WaylandServerAPI.xml: see WaylandClientAPI.xml
+en-US/WaylandServerAPI.xml: combine_xml $(top_builddir)/doc/doxygen/xml/client/index.xml $(srcdir)/doxygen-to-publican.xsl
+ $(AM_V_GEN)$(XSLTPROC) --stringparam which Server $(srcdir)/doxygen-to-publican.xsl \
+ $(top_builddir)/doc/doxygen/xml/server/serverAPI.xml > en-US/WaylandServerAPI.xml
+
+# Copy the sources source files into en-US destination
+# This is required for out-of-source-tree build as publican does not allow us
+# to specify the location of the source code.
+$(builddir)/en-US/%: $(srcdir)/sources/% en-US/ProtocolSpec.xml en-US/ProtocolInterfaces.xml en-US/WaylandClientAPI.xml $(publican_sources)
+ $(AM_V_GEN)cp -f $< $@
+ $(AM_V_GEN)chmod a+w $@
+
+# Run publican for the builddir on the generated (or copied) source
+# The output formats are generated in the Wayland sub directory. Also, we need
+# to use a tmp publican.cfg cause 'publican rename' modifies the original.
+Wayland: $(publican_targets)
+ $(AM_V_GEN)cp -f $(srcdir)/publican.cfg $(builddir)/publican-copy.cfg
+ $(AM_V_GEN)$(PUBLICAN) rename --name Wayland \
+ --version "$(WAYLAND_VERSION_MAJOR).$(WAYLAND_VERSION_MINOR)" \
+ --config $(builddir)/publican-copy.cfg
+ $(AM_V_GEN)$(PUBLICAN) build --quiet --lang en-US --format html,pdf \
+ --config $(builddir)/publican-copy.cfg
+ @touch Wayland
+
+CLEANFILES = en-US/ProtocolSpec.xml en-US/ProtocolInterfaces.xml en-US/WaylandClientAPI.xml $(publican_targets)
+
+clean-local:
+ $(AM_V_at)rm -fr $(builddir)/en-US
+ $(AM_V_at)rm -fr $(builddir)/Wayland
+ $(AM_V_at)rm -fr $(builddir)/publican-copy.cfg
+
+install-data-local:
+ test -z "$(pubdir)/html/Common_Content/css" || $(mkdir_p) "$(DESTDIR)$(pubdir)/html/Common_Content/css"
+ test -z "$(pubdir)/html/Common_Content/images" || $(mkdir_p) "$(DESTDIR)$(pubdir)/html/Common_Content/images"
+ test -z "$(pubdir)/html/images" || $(mkdir_p) "$(DESTDIR)$(pubdir)/html/images"
+ test -z "$(pubdir)/pdf" || $(mkdir_p) "$(DESTDIR)$(pubdir)/pdf"
+ test -z "$(pubdir)/xml/Common_Content/css" || $(mkdir_p) "$(DESTDIR)$(pubdir)/xml/Common_Content/css"
+ test -z "$(pubdir)/xml/Common_Content/images" || $(mkdir_p) "$(DESTDIR)$(pubdir)/xml/Common_Content/images"
+ test -z "$(pubdir)/xml/images" || $(mkdir_p) "$(DESTDIR)$(pubdir)/xml/images"
+ list=`find $(builddir)/Wayland/en-US -type f -not -path '$(builddir)/Wayland/en-US/xml_tmp*'`; \
+ for p in $$list; do \
+ echo " $(INSTALL_DATA) '$$p' '$(DESTDIR)$(docdir)/$$p'"; \
+ $(INSTALL_DATA) "$$p" "$(DESTDIR)$(docdir)/$$p"; \
+ done;
+
+uninstall-local:
+ @if test -n $(DESTDIR)$(docdir); then \
+ if test -d $(DESTDIR)$(docdir); then \
+ echo " rm -fr $(DESTDIR)$(docdir)/Wayland;"; \
+ rm -fr $(DESTDIR)$(docdir)/Wayland; \
+ fi; \
+ fi;
+
+endif
+endif
+
+EXTRA_DIST = $(publican_sources) publican.cfg protocol-to-docbook.xsl protocol-interfaces-to-docbook.xsl doxygen-to-publican.xsl
diff --git a/doc/publican/doxygen-to-publican.xsl b/doc/publican/doxygen-to-publican.xsl
new file mode 100644
index 0000000..2bd677e
--- /dev/null
+++ b/doc/publican/doxygen-to-publican.xsl
@@ -0,0 +1,166 @@
+<?xml version="1.0" ?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<xsl:output method="xml" encoding="UTF-8" indent="yes" />
+<xsl:param name="which" />
+
+<xsl:template match="/">
+ <!-- insert docbook's DOCTYPE blurb -->
+ <xsl:text disable-output-escaping = "yes"><![CDATA[
+<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+ <!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent">
+%BOOK_ENTITIES;
+]>
+]]></xsl:text>
+
+ <section id="sect-Library-$which">
+ <xsl:attribute name="id">sect-Library-<xsl:value-of select="$which"/></xsl:attribute>
+ <title><xsl:value-of select="$which"/> API</title>
+ <para>Following is the Wayland library classes for the <xsl:value-of select="$which"/>
+ (<emphasis>libwayland-<xsl:value-of select="translate($which, 'SC', 'sc')"/></emphasis>).
+ Note that most of the procedures are related with IPC, which is the main responsibility of
+ the library.
+ </para>
+
+ <xsl:if test="/doxygen/compounddef[@kind='class']">
+ <para>
+ <variablelist>
+ <xsl:apply-templates select="/doxygen/compounddef" />
+ </variablelist>
+ </para>
+ </xsl:if>
+
+ <para>Methods for the respective classes.</para>
+
+ <para>
+ <variablelist>
+ <xsl:apply-templates select="/doxygen/compounddef/sectiondef/memberdef" />
+ </variablelist>
+ </para>
+ </section>
+</xsl:template>
+
+<xsl:template match="parameteritem">
+ <varlistentry>
+ <term>
+ <xsl:value-of select="parameternamelist/parametername"/>
+ </term>
+ <listitem>
+ <para>
+ <xsl:value-of select="parameterdescription/para"/>
+ </para>
+ </listitem>
+ </varlistentry>
+</xsl:template>
+
+<xsl:template match="parameterlist">
+ <xsl:if test="parameteritem">
+ <variablelist>
+ <xsl:apply-templates select="parameteritem" />
+ </variablelist>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="ref">
+ <emphasis><xsl:value-of select="." /></emphasis>
+</xsl:template>
+
+<xsl:template match="simplesect[@kind='return']">
+ <variablelist>
+ <varlistentry>
+ <term>Returns:</term>
+ <listitem>
+ <para>
+ <xsl:value-of select="." />
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+</xsl:template>
+
+<xsl:template match="simplesect[@kind='see']">
+ <itemizedlist>
+ <listitem>
+ <para>
+ See also:
+ <xsl:for-each select="para/ref">
+ <emphasis><xsl:value-of select="."/><xsl:text> </xsl:text></emphasis>
+ </xsl:for-each>
+ </para>
+ </listitem>
+ </itemizedlist>
+</xsl:template>
+
+<xsl:template match="simplesect[@kind='since']">
+ <itemizedlist>
+ <listitem>
+ <para>
+ Since: <xsl:value-of select="para"/>
+ </para>
+ </listitem>
+ </itemizedlist>
+</xsl:template>
+
+<xsl:template match="simplesect[@kind='note']">
+ <emphasis>Note: <xsl:value-of select="."/></emphasis>
+</xsl:template>
+
+<xsl:template match="programlisting">
+ <programlisting><xsl:value-of select="."/></programlisting>
+</xsl:template>
+
+<!-- this opens a para for each detaileddescription/para. I could not find a
+ way to extract the right text for the description from the
+ source otherwise. Downside: we can't use para for return value, "see
+ also", etc. because they're already inside a para. So they're lists.
+
+ It also means we don't control the order of when something is added to
+ the output, it matches the input file
+ -->
+<xsl:template match="detaileddescription/para">
+ <para><xsl:apply-templates /></para>
+</xsl:template>
+
+<xsl:template match="detaileddescription">
+ <xsl:apply-templates select="para" />
+</xsl:template>
+
+<!-- methods -->
+<xsl:template match="memberdef" >
+ <xsl:if test="@kind = 'function' and @static = 'no'">
+ <varlistentry>
+ <term>
+ <xsl:value-of select="name"/>
+ - <xsl:value-of select="briefdescription" />
+ </term>
+ <listitem>
+ <para>
+ <synopsis>
+ <xsl:value-of select="definition"/><xsl:value-of select="argsstring"/>
+ </synopsis>
+ </para>
+ <xsl:apply-templates select="detaileddescription" />
+ </listitem>
+ </varlistentry>
+ </xsl:if>
+</xsl:template>
+
+<!-- classes -->
+<xsl:template match="compounddef" >
+ <xsl:if test="@kind = 'class' ">
+ <varlistentry>
+ <term>
+ <xsl:value-of select="compoundname" />
+ <xsl:if test="briefdescription">
+ - <xsl:value-of select="briefdescription" />
+ </xsl:if>
+ </term>
+
+ <listitem>
+ <xsl:for-each select="detaileddescription/para">
+ <para><xsl:value-of select="." /></para>
+ </xsl:for-each>
+ </listitem>
+ </varlistentry>
+ </xsl:if>
+</xsl:template>
+</xsl:stylesheet>
diff --git a/doc/publican/protocol-interfaces-to-docbook.xsl b/doc/publican/protocol-interfaces-to-docbook.xsl
new file mode 100644
index 0000000..ad6bdda
--- /dev/null
+++ b/doc/publican/protocol-interfaces-to-docbook.xsl
@@ -0,0 +1,56 @@
+<?xml version="1.0" ?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
+<xsl:output method="xml" encoding="UTF-8" indent="yes" />
+
+<xsl:template match="/">
+ <!-- insert docbook's DOCTYPE blurb -->
+ <xsl:text disable-output-escaping = "yes"><![CDATA[
+<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+ <!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent">
+%BOOK_ENTITIES;
+]>
+]]></xsl:text>
+
+ <section id="sect-Protocol-Interfaces">
+ <title>Interfaces</title>
+ <para>
+ The protocol includes several interfaces which are used for
+ interacting with the server. Each interface provides requests,
+ events, and errors (which are really just special events) as described
+ above. Specific compositor implementations may have their own
+ interfaces provided as extensions, but there are several which are
+ always expected to be present.
+ </para>
+
+ <para>
+ Core interfaces:
+ <variablelist>
+ <xsl:apply-templates select="protocol/interface" />
+ </variablelist>
+ </para>
+ </section>
+</xsl:template>
+
+<!-- Interfaces summary -->
+<xsl:template match="interface" >
+<varlistentry>
+ <xsl:attribute name="id">protocol-summary-<xsl:value-of select="name()"/>-<xsl:value-of select="@name" />
+ </xsl:attribute>
+ <term>
+ <xsl:value-of select="@name" />
+ <xsl:if test="description/@summary">
+ - <xsl:value-of select="description/@summary" />
+ </xsl:if>
+ </term>
+ <listitem>
+ <para>
+ <xsl:value-of select="description"/>
+ </para>
+ </listitem>
+ </varlistentry>
+
+</xsl:template>
+
+</xsl:stylesheet>
+<!-- vim: set expandtab shiftwidth=2: -->
diff --git a/doc/publican/protocol-to-docbook.xsl b/doc/publican/protocol-to-docbook.xsl
new file mode 100644
index 0000000..939ba40
--- /dev/null
+++ b/doc/publican/protocol-to-docbook.xsl
@@ -0,0 +1,136 @@
+<?xml version="1.0" ?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
+<xsl:output method="xml" encoding="UTF-8" indent="yes" />
+
+<xsl:template match="/">
+ <!-- insert docbook's DOCTYPE blurb -->
+ <xsl:text disable-output-escaping = "yes"><![CDATA[
+<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+ <!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent">
+%BOOK_ENTITIES;
+]>
+]]></xsl:text>
+
+ <appendix id="appe-Wayland-Protocol">
+ <title>Wayland Protocol Specification</title>
+ <xsl:apply-templates select="protocol/copyright" />
+
+ <xsl:apply-templates select="protocol/interface" />
+ </appendix>
+</xsl:template>
+
+<!-- Break text blocks separated by two new lines into paragraphs -->
+<xsl:template name="break">
+ <xsl:param name="text" />
+ <xsl:param name="linebreak" select="'
'" />
+ <xsl:choose>
+ <xsl:when test="contains($text,$linebreak)">
+ <para>
+ <xsl:value-of select="substring-before($text,$linebreak)" />
+ </para>
+ <xsl:call-template name="break">
+ <xsl:with-param name="text" select="substring-after($text,$linebreak)" />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <para><xsl:value-of select="$text" /></para>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- Copyright blurb -->
+<xsl:template match="copyright">
+ <para>
+ <literallayout>
+ <xsl:value-of select="." disable-output-escaping="yes"/>
+ </literallayout>
+ </para>
+</xsl:template>
+
+<!-- Interface descriptions -->
+<xsl:template match="interface" >
+ <section>
+ <xsl:attribute name="id">protocol-spec-<xsl:value-of select="name()"/>-<xsl:value-of select="@name" />
+ </xsl:attribute>
+ <title>
+ <xsl:value-of select="@name" />
+ <!-- only show summary if it exists -->
+ <xsl:if test="description/@summary">
+ - <xsl:value-of select="description/@summary" />
+ </xsl:if>
+ </title>
+ <xsl:call-template name="break">
+ <xsl:with-param name="text" select="description" />
+ </xsl:call-template>
+ <xsl:if test="request">
+ <section>
+ <title>Requests provided by <xsl:value-of select="@name" /></title>
+ <xsl:apply-templates select="request" />
+ </section>
+ </xsl:if>
+ <xsl:if test="event">
+ <section>
+ <title>Events provided by <xsl:value-of select="@name" /></title>
+ <xsl:apply-templates select="event" />
+ </section>
+ </xsl:if>
+ <xsl:if test="enum">
+ <section>
+ <title>Enums provided by <xsl:value-of select="@name" /></title>
+ <xsl:apply-templates select="enum" />
+ </section>
+ </xsl:if>
+ </section>
+</xsl:template>
+
+<!-- table contents for request/event arguments or enum values -->
+<xsl:template match="arg|entry">
+ <varlistentry>
+ <term><xsl:value-of select="@name"/></term>
+ <listitem>
+ <xsl:if test="name() = 'arg'" >
+ <para>Type: <xsl:value-of select="@type"/></para>
+ </xsl:if>
+ <xsl:if test="name() = 'entry'" >
+ <para>Value: <xsl:value-of select="@value"/></para>
+ </xsl:if>
+ <xsl:if test="@summary" >
+ <para>
+ <xsl:value-of select="@summary"/>
+ </para>
+ </xsl:if>
+ </listitem>
+ </varlistentry>
+</xsl:template>
+
+<!-- Request/event list -->
+<xsl:template match="request|event|enum">
+ <section>
+ <xsl:attribute name="id">protocol-spec-interface-<xsl:value-of select="../@name"/>-<xsl:value-of select="name()"/>-<xsl:value-of select="@name"/></xsl:attribute>
+ <title>
+ <xsl:value-of select="../@name"/>::<xsl:value-of select="@name" />
+ <xsl:if test="description/@summary">
+ - <xsl:value-of select="description/@summary" />
+ </xsl:if>
+ </title>
+ <xsl:call-template name="break">
+ <xsl:with-param name="text" select="description" />
+ </xsl:call-template>
+ <xsl:if test="arg">
+ <variablelist>
+ <title><xsl:value-of select="../@name"/>::<xsl:value-of select="@name" /> arguments</title>
+ <xsl:apply-templates select="arg"/>
+ </variablelist>
+ </xsl:if>
+ <xsl:if test="entry">
+ <variablelist>
+ <title><xsl:value-of select="../@name"/>::<xsl:value-of select="@name" /> values</title>
+ <xsl:apply-templates select="entry"/>
+ </variablelist>
+ </xsl:if>
+ </section>
+</xsl:template>
+</xsl:stylesheet>
+
+<!-- vim: set expandtab shiftwidth=2: -->
diff --git a/doc/publican/publican.cfg b/doc/publican/publican.cfg
new file mode 100644
index 0000000..d950584
--- /dev/null
+++ b/doc/publican/publican.cfg
@@ -0,0 +1,8 @@
+# Config::Simple 4.59
+# Fri Feb 24 09:36:50 2012
+
+xml_lang: "en-US"
+type: Book
+brand: common
+tmp_dir: Wayland
+toc_section_depth: 1
diff --git a/doc/publican/sources/Architecture.xml b/doc/publican/sources/Architecture.xml
new file mode 100644
index 0000000..5b9300f
--- /dev/null
+++ b/doc/publican/sources/Architecture.xml
@@ -0,0 +1,330 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="chap-Wayland-Architecture">
+ <title>Wayland Architecture</title>
+ <section id="sect-Wayland-Architecture-wayland_architecture">
+ <title>X vs. Wayland Architecture</title>
+ <para>
+ A good way to understand the Wayland architecture
+ and how it is different from X is to follow an event
+ from the input device to the point where the change
+ it affects appears on screen.
+ </para>
+ <para>
+ This is where we are now with X:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/x-architecture.png" format="PNG" />
+ </imageobject>
+ <textobject>
+ <phrase>
+ X architecture diagram
+ </phrase>
+ </textobject>
+ </mediaobject>
+ <para>
+ <orderedlist>
+ <listitem>
+ <para>
+ The kernel gets an event from an input
+ device and sends it to X through the evdev
+ input driver. The kernel does all the hard
+ work here by driving the device and
+ translating the different device specific
+ event protocols to the linux evdev input
+ event standard.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The X server determines which window the
+ event affects and sends it to the clients
+ that have selected for the event in question
+ on that window. The X server doesn't
+ actually know how to do this right, since
+ the window location on screen is controlled
+ by the compositor and may be transformed in
+ a number of ways that the X server doesn't
+ understand (scaled down, rotated, wobbling,
+ etc).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The client looks at the event and decides
+ what to do. Often the UI will have to change
+ in response to the event - perhaps a check
+ box was clicked or the pointer entered a
+ button that must be highlighted. Thus the
+ client sends a rendering request back to the
+ X server.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ When the X server receives the rendering
+ request, it sends it to the driver to let it
+ program the hardware to do the rendering.
+ The X server also calculates the bounding
+ region of the rendering, and sends that to
+ the compositor as a damage event.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The damage event tells the compositor that
+ something changed in the window and that it
+ has to recomposite the part of the screen
+ where that window is visible. The compositor
+ is responsible for rendering the entire
+ screen contents based on its scenegraph and
+ the contents of the X windows. Yet, it has
+ to go through the X server to render this.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The X server receives the rendering requests
+ from the compositor and either copies the
+ compositor back buffer to the front buffer
+ or does a pageflip. In the general case, the
+ X server has to do this step so it can
+ account for overlapping windows, which may
+ require clipping and determine whether or
+ not it can page flip. However, for a
+ compositor, which is always fullscreen, this
+ is another unnecessary context switch.
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+ <para>
+ As suggested above, there are a few problems with this
+ approach. The X server doesn't have the information to
+ decide which window should receive the event, nor can it
+ transform the screen coordinates to window local
+ coordinates. And even though X has handed responsibility for
+ the final painting of the screen to the compositing manager,
+ X still controls the front buffer and modesetting. Most of
+ the complexity that the X server used to handle is now
+ available in the kernel or self contained libraries (KMS,
+ evdev, mesa, fontconfig, freetype, cairo, Qt etc). In
+ general, the X server is now just a middle man that
+ introduces an extra step between applications and the
+ compositor and an extra step between the compositor and the
+ hardware.
+ </para>
+ <para>
+ In Wayland the compositor is the display server. We transfer
+ the control of KMS and evdev to the compositor. The Wayland
+ protocol lets the compositor send the input events directly
+ to the clients and lets the client send the damage event
+ directly to the compositor:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/wayland-architecture.png" format="PNG" />
+ </imageobject>
+ <textobject>
+ <phrase>
+ Wayland architecture diagram
+ </phrase>
+ </textobject>
+ </mediaobject>
+ <para>
+ <orderedlist>
+ <listitem>
+ <para>
+ The kernel gets an event and sends
+ it to the compositor. This
+ is similar to the X case, which is
+ great, since we get to reuse all the
+ input drivers in the kernel.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The compositor looks through its
+ scenegraph to determine which window
+ should receive the event. The
+ scenegraph corresponds to what's on
+ screen and the compositor
+ understands the transformations that
+ it may have applied to the elements
+ in the scenegraph. Thus, the
+ compositor can pick the right window
+ and transform the screen coordinates
+ to window local coordinates, by
+ applying the inverse
+ transformations. The types of
+ transformation that can be applied
+ to a window is only restricted to
+ what the compositor can do, as long
+ as it can compute the inverse
+ transformation for the input events.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ As in the X case, when the client
+ receives the event, it updates the
+ UI in response. But in the Wayland
+ case, the rendering happens in the
+ client, and the client just sends a
+ request to the compositor to
+ indicate the region that was
+ updated.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The compositor collects damage
+ requests from its clients and then
+ recomposites the screen. The
+ compositor can then directly issue
+ an ioctl to schedule a pageflip with
+ KMS.
+ </para>
+ </listitem>
+
+
+ </orderedlist>
+ </para>
+ </section>
+ <section id="sect-Wayland-Architecture-wayland_rendering">
+ <title>Wayland Rendering</title>
+ <para>
+ One of the details I left out in the above overview
+ is how clients actually render under Wayland. By
+ removing the X server from the picture we also
+ removed the mechanism by which X clients typically
+ render. But there's another mechanism that we're
+ already using with DRI2 under X: direct rendering.
+ With direct rendering, the client and the server
+ share a video memory buffer. The client links to a
+ rendering library such as OpenGL that knows how to
+ program the hardware and renders directly into the
+ buffer. The compositor in turn can take the buffer
+ and use it as a texture when it composites the
+ desktop. After the initial setup, the client only
+ needs to tell the compositor which buffer to use and
+ when and where it has rendered new content into it.
+ </para>
+
+ <para>
+ This leaves an application with two ways to update its window contents:
+ </para>
+ <para>
+ <orderedlist>
+ <listitem>
+ <para>
+ Render the new content into a new buffer and tell the compositor
+ to use that instead of the old buffer. The application can
+ allocate a new buffer every time it needs to update the window
+ contents or it can keep two (or more) buffers around and cycle
+ between them. The buffer management is entirely under
+ application control.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Render the new content into the buffer that it previously
+ told the compositor to to use. While it's possible to just
+ render directly into the buffer shared with the compositor,
+ this might race with the compositor. What can happen is that
+ repainting the window contents could be interrupted by the
+ compositor repainting the desktop. If the application gets
+ interrupted just after clearing the window but before
+ rendering the contents, the compositor will texture from a
+ blank buffer. The result is that the application window will
+ flicker between a blank window or half-rendered content. The
+ traditional way to avoid this is to render the new content
+ into a back buffer and then copy from there into the
+ compositor surface. The back buffer can be allocated on the
+ fly and just big enough to hold the new content, or the
+ application can keep a buffer around. Again, this is under
+ application control.
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+ <para>
+ In either case, the application must tell the compositor
+ which area of the surface holds new contents. When the
+ application renders directly to the shared buffer, the
+ compositor needs to be noticed that there is new content.
+ But also when exchanging buffers, the compositor doesn't
+ assume anything changed, and needs a request from the
+ application before it will repaint the desktop. The idea
+ that even if an application passes a new buffer to the
+ compositor, only a small part of the buffer may be
+ different, like a blinking cursor or a spinner.
+ </para>
+ </section>
+ <section id="sect-Wayland-Architecture-wayland_hw_enabling">
+ <title>Hardware Enabling for Wayland</title>
+ <para>
+ Typically, hardware enabling includes modesetting/display
+ and EGL/GLES2. On top of that Wayland needs a way to share
+ buffers efficiently between processes. There are two sides
+ to that, the client side and the server side.
+ </para>
+ <para>
+ On the client side we've defined a Wayland EGL platform. In
+ the EGL model, that consists of the native types
+ (EGLNativeDisplayType, EGLNativeWindowType and
+ EGLNativePixmapType) and a way to create those types. In
+ other words, it's the glue code that binds the EGL stack and
+ its buffer sharing mechanism to the generic Wayland API. The
+ EGL stack is expected to provide an implementation of the
+ Wayland EGL platform. The full API is in the wayland-egl.h
+ header. The open source implementation in the mesa EGL stack
+ is in wayland-egl.c and platform_wayland.c.
+ </para>
+ <para>
+ Under the hood, the EGL stack is expected to define a
+ vendor-specific protocol extension that lets the client side
+ EGL stack communicate buffer details with the compositor in
+ order to share buffers. The point of the wayland-egl.h API
+ is to abstract that away and just let the client create an
+ EGLSurface for a Wayland surface and start rendering. The
+ open source stack uses the drm Wayland extension, which lets
+ the client discover the drm device to use and authenticate
+ and then share drm (GEM) buffers with the compositor.
+ </para>
+ <para>
+ The server side of Wayland is the compositor and core UX for
+ the vertical, typically integrating task switcher, app
+ launcher, lock screen in one monolithic application. The
+ server runs on top of a modesetting API (kernel modesetting,
+ OpenWF Display or similar) and composites the final UI using
+ a mix of EGL/GLES2 compositor and hardware overlays if
+ available. Enabling modesetting, EGL/GLES2 and overlays is
+ something that should be part of standard hardware bringup.
+ The extra requirement for Wayland enabling is the
+ EGL_WL_bind_wayland_display extension that lets the
+ compositor create an EGLImage from a generic Wayland shared
+ buffer. It's similar to the EGL_KHR_image_pixmap extension
+ to create an EGLImage from an X pixmap.
+ </para>
+ <para>
+ The extension has a setup step where you have to bind the
+ EGL display to a Wayland display. Then as the compositor
+ receives generic Wayland buffers from the clients (typically
+ when the client calls eglSwapBuffers), it will be able to
+ pass the struct wl_buffer pointer to eglCreateImageKHR as
+ the EGLClientBuffer argument and with EGL_WAYLAND_BUFFER_WL
+ as the target. This will create an EGLImage, which can then
+ be used by the compositor as a texture or passed to the
+ modesetting code to use as an overlay plane. Again, this is
+ implemented by the vendor specific protocol extension, which
+ on the server side will receive the driver specific details
+ about the shared buffer and turn that into an EGL image when
+ the user calls eglCreateImageKHR.
+ </para>
+ </section>
+</chapter>
diff --git a/doc/publican/sources/Author_Group.xml b/doc/publican/sources/Author_Group.xml
new file mode 100644
index 0000000..2bdde62
--- /dev/null
+++ b/doc/publican/sources/Author_Group.xml
@@ -0,0 +1,16 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent">
+%BOOK_ENTITIES;
+]>
+<authorgroup>
+ <author>
+ <firstname>Kristian</firstname>
+ <surname>Høgsberg</surname>
+ <affiliation>
+ <orgname>Intel Corporation</orgname>
+ </affiliation>
+ <email>krh at bitplanet.net</email>
+ </author>
+</authorgroup>
+
diff --git a/doc/publican/sources/Book_Info.xml b/doc/publican/sources/Book_Info.xml
new file mode 100644
index 0000000..87798e7
--- /dev/null
+++ b/doc/publican/sources/Book_Info.xml
@@ -0,0 +1,48 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE bookinfo PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent">
+%BOOK_ENTITIES;
+]>
+<bookinfo id="book-Wayland-Wayland">
+ <title>Wayland</title>
+ <subtitle>The Wayland display server</subtitle>
+ <productname>Documentation</productname>
+ <productnumber>0.1</productnumber>
+ <edition>1</edition>
+ <pubsnumber>0</pubsnumber>
+ <abstract>
+ <para>
+ Wayland is a protocol for a compositor to talk to
+ its clients as well as a C library implementation of
+ that protocol. The compositor can be a standalone
+ display server running on Linux kernel modesetting
+ and evdev input devices, an X application, or a
+ Wayland client itself. The clients can be
+ traditional applications, X servers (rootless or
+ fullscreen) or other display servers.
+ </para>
+ </abstract>
+ <corpauthor>
+ <inlinemediaobject>
+ <imageobject>
+ <imagedata fileref="images/wayland.png" format="PNG" />
+ </imageobject>
+ <textobject>
+ <phrase>
+ Wayland logo
+ </phrase>
+ </textobject>
+ </inlinemediaobject>
+ </corpauthor>
+
+ <legalnotice lang="en-US">
+ <para>
+ Copyright <trademark class="copyright"></trademark> &YEAR; &HOLDER; This
+ material may only be distributed subject to the terms and conditions set
+ forth in the GNU Free Documentation License (GFDL), V1.2 or later (the
+ latest version is presently available at <ulink url="http://www.gnu.org/licenses/fdl.txt">http://www.gnu.org/licenses/fdl.txt</ulink>).
+ </para>
+ </legalnotice>
+
+ <xi:include href="Author_Group.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+</bookinfo>
diff --git a/doc/publican/sources/Compositors.xml b/doc/publican/sources/Compositors.xml
new file mode 100644
index 0000000..e2bfa44
--- /dev/null
+++ b/doc/publican/sources/Compositors.xml
@@ -0,0 +1,158 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Compositors">
+ <title>Types of Compositors</title>
+
+ <para>
+ Different types of compositors may exist on different systems. For
+ instance, a <emphasis>system compositor</emphasis> can be used for booting
+ the system, handling multiple user switching, a possible console
+ terminal emulator and so forth. A different compositor, a <emphasis>session
+ compositor</emphasis>, would provide the actual desktop environment. There
+ are many ways for different types of compositors to co-exist.
+ </para>
+ <para>
+ In this section, we introduce three types of Wayland compositors relying on
+ <emphasis>libwayland-server</emphasis>.
+ </para>
+
+ <section id="sect-Compositors-System-Compositor">
+ <title>System Compositor</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ ties in with graphical boot
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ hosts different types of session compositors
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ lets us switch between multiple sessions (fast user switching,
+ secure/personal desktop switching)
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ multiseat
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ linux implementation using libudev, egl, kms, evdev, cairo
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ for fullscreen clients, the system compositor can reprogram the
+ video scanout address to source from the client provided buffer.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+ <section id="sect-Compositors-Session-Compositor">
+ <title>Session Compositor</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ nested under the system compositor. nesting is feasible because
+ protocol is async, roundtrip would break nesting
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ gnome-shell
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ moblin
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ compiz?
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ kde compositor?
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ text mode using vte
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ rdp session
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Weston with X11 or Wayland backend is a session compositor nested
+ in another session compositor.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ fullscreen X session under Wayland
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ can run without system compositor, on the hw where it makes
+ sense
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ root window-less X server, bridging X windows into a Wayland
+ session compositor
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+ <section id="sect-Compositors-Embedding-Compositor">
+ <title>Embedding Compositor</title>
+ <para>
+ X11 lets clients embed windows from other clients, or lets client copy
+ pixmap contents rendered by another client into their window. This is
+ often used for applets in a panel, browser plugins and similar.
+ Wayland doesn't directly allow this, but clients can communicate GEM
+ buffer names out-of-band, for example, using d-bus or as command line
+ arguments when the panel launches the applet. Another option is to
+ use a nested Wayland instance. For this, the Wayland server will have
+ to be a library that the host application links to. The host
+ application will then pass the Wayland server socket name to the
+ embedded application, and will need to implement the Wayland
+ compositor interface. The host application composites the client
+ surfaces as part of it's window, that is, in the web page or in the
+ panel. The benefit of nesting the Wayland server is that it provides
+ the requests the embedded client needs to inform the host about buffer
+ updates and a mechanism for forwarding input events from the host
+ application.
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ firefox embedding flash by being a special purpose compositor to
+ the plugin
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+</section>
diff --git a/doc/publican/sources/Foreword.xml b/doc/publican/sources/Foreword.xml
new file mode 100644
index 0000000..eeb16cc
--- /dev/null
+++ b/doc/publican/sources/Foreword.xml
@@ -0,0 +1,29 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent">
+%BOOK_ENTITIES;
+]>
+
+<preface>
+ <title>Preface</title>
+
+ <para>
+ This document concerns the (i) Wayland architecture, (ii) Wayland model of
+ operation and (iii) its library API. Wayland protocol specification is shown
+ also in the Appendix. The document here is aimed at Wayland developers and
+ who is looking for information how to program with it, but it is not meant
+ primarily for applications developers.
+ </para>
+ <para>
+ There have been many contributors to this document and, while this is the
+ first edition only, many errors are expected to be found. We appreciate
+ corrections.
+ </para>
+ <literallayout>
+Yours,
+
+ the Wayland open-source community
+ November 2012
+ </literallayout>
+</preface>
diff --git a/doc/publican/sources/Introduction.xml b/doc/publican/sources/Introduction.xml
new file mode 100644
index 0000000..b3b89e7
--- /dev/null
+++ b/doc/publican/sources/Introduction.xml
@@ -0,0 +1,116 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="chap-Introduction">
+ <title>Introduction</title>
+ <section id="sect-Motivation">
+ <title>Motivation</title>
+ <para>
+ Most of Linux and Unix-based systems rely on the X Window System (or
+ simply <emphasis>X</emphasis>) as the low-level protocol for building
+ bitmap graphics interfaces. On these systems, the X stack has grown to
+ encompass functionality arguably belonging in client libraries,
+ helper libraries, or the host operating system kernel. Support for
+ things like PCI resource management, display configuration management,
+ direct rendering, and memory management has been integrated into the X
+ stack, imposing limitations like limited support for standalone
+ applications, duplication in other projects (e.g. the Linux fb layer
+ or the DirectFB project), and high levels of complexity for systems
+ combining multiple elements (for example radeon memory map handling
+ between the fb driver and X driver, or VT switching).
+ </para>
+ <para>
+ Moreover, X has grown to incorporate modern features like offscreen
+ rendering and scene composition, but subject to the limitations of the
+ X architecture. For example, the X implementation of composition adds
+ additional context switches and makes things like input redirection
+ difficult.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/x-architecture.png" format="PNG" />
+ </imageobject>
+ <textobject>
+ <phrase>
+ X architecture diagram
+ </phrase>
+ </textobject>
+ </mediaobject>
+ <para>
+ The diagram above illustrates the central role of the X server and
+ compositor in operations, and the steps required to get contents on to
+ the screen.
+ </para>
+ <para>
+ Over time, X developers came to understand the shortcomings of this
+ approach and worked to split things up. Over the past several years,
+ a lot of functionality has moved out of the X server and into
+ client-side libraries or kernel drivers. One of the first components
+ to move out was font rendering, with freetype and fontconfig providing
+ an alternative to the core X fonts. Direct rendering OpenGL as a
+ graphics driver in a client side library went through some iterations,
+ ending up as DRI2, which abstracted most of the direct rendering
+ buffer management from client code. Then cairo came along and provided
+ a modern 2D rendering library independent of X, and compositing
+ managers took over control of the rendering of the desktop as toolkits
+ like GTK+ and Qt moved away from using X APIs for rendering. Recently,
+ memory and display management have moved to the Linux kernel, further
+ reducing the scope of X and its driver stack. The end result is a
+ highly modular graphics stack.
+ </para>
+
+ </section>
+
+ <section id="sect-Compositing-manager-display-server">
+ <title>The compositing manager as the display server</title>
+ <para>
+ Wayland is a new display server and compositing protocol, and Weston
+ is the implementation of this protocol which builds on top of all the
+ components above. We are trying to distill out the functionality in
+ the X server that is still used by the modern Linux desktop. This
+ turns out to be not a whole lot. Applications can allocate their own
+ off-screen buffers and render their window contents directly, using
+ hardware accelerated libraries like libGL, or high quality software
+ implementations like those found in Cairo. In the end, what’s needed
+ is a way to present the resulting window surface for display, and a
+ way to receive and arbitrate input among multiple clients. This is
+ what Wayland provides, by piecing together the components already in
+ the eco-system in a slightly different way.
+ </para>
+ <para>
+ X will always be relevant, in the same way Fortran compilers and VRML
+ browsers are, but it’s time that we think about moving it out of the
+ critical path and provide it as an optional component for legacy
+ applications.
+ </para>
+ <para>
+ Overall, the philosophy of Wayland is to provide clients with a way to
+ manage windows and how their contents is displayed. Rendering is left
+ to clients, and system wide memory management interfaces are used to
+ pass buffer handles between clients and the compositing manager.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/wayland-architecture.png" format="PNG" />
+ </imageobject>
+ <textobject>
+ <phrase>
+ Wayland architecture diagram
+ </phrase>
+ </textobject>
+ </mediaobject>
+ <para>
+ The figure above illustrates how Wayland clients interact with a
+ Wayland server. Note that window management and composition are
+ handled entirely in the server, significantly reducing complexity
+ while marginally improving performance through reduced context
+ switching. The resulting system is easier to build and extend than a
+ similar X system, because often changes need only be made in one
+ place. Or in the case of protocol extensions, two (rather than 3 or 4
+ in the X case where window management and/or composition handling may
+ also need to be updated).
+ </para>
+ </section>
+</chapter>
diff --git a/doc/publican/sources/Library.xml b/doc/publican/sources/Library.xml
new file mode 100644
index 0000000..8cfb3f0
--- /dev/null
+++ b/doc/publican/sources/Library.xml
@@ -0,0 +1,32 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="chap-Library">
+ <title>Wayland Library</title>
+
+ <para>
+ The open-source reference implementation of Wayland protocol is split in two
+ C libraries, <emphasis>libwayland-server</emphasis> and
+ <emphasis>libwayland-client</emphasis>. Their main
+ responsibility is to handle the Inter-process communication
+ (<emphasis>IPC</emphasis>) with each other, therefore guaranteeing the
+ protocol objects marshaling and messages synchronization.
+ </para>
+
+ <para>
+ This Chapter describes in detail each library's methods and their helpers,
+ aiming implementors who can use for building Wayland clients and servers;
+ respectively at <xref linkend="sect-Library-Client"/> and
+ <xref linkend="sect-Library-Server"/>. The last
+ <xref linkend="sect-Compositors"/>, gives an example how
+ <emphasis>libwayland-server</emphasis> can be used for building different
+ types of compositors.
+ </para>
+
+ <xi:include href="WaylandClientAPI.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+ <xi:include href="WaylandServerAPI.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+ <xi:include href="Compositors.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+</chapter>
diff --git a/doc/publican/sources/Preface.xml b/doc/publican/sources/Preface.xml
new file mode 100644
index 0000000..61720a9
--- /dev/null
+++ b/doc/publican/sources/Preface.xml
@@ -0,0 +1,20 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent">
+%BOOK_ENTITIES;
+]>
+
+<preface>
+ <title>Acknowledgments</title>
+
+ <para>
+ TODO: Kristian has to fill up this with one or two paragraphs and a small
+ "thank you": http://en.wikipedia.org/wiki/Preface
+ </para>
+ <literallayout>
+Best,
+
+ Kristian Høgsberg
+ </literallayout>
+</preface>
diff --git a/doc/publican/sources/Protocol.xml b/doc/publican/sources/Protocol.xml
new file mode 100644
index 0000000..827b84a
--- /dev/null
+++ b/doc/publican/sources/Protocol.xml
@@ -0,0 +1,456 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="chap-Protocol">
+ <title>Wayland Protocol and Model of Operation</title>
+ <section id="sect-Protocol-Basic-Principles">
+ <title>Basic Principles</title>
+ <para>
+ The Wayland protocol is an asynchronous object oriented protocol. All
+ requests are method invocations on some object. The request include
+ an object id that uniquely identifies an object on the server. Each
+ object implements an interface and the requests include an opcode that
+ identifies which method in the interface to invoke.
+ </para>
+ <para>
+ The server sends back events to the client, each event is emitted from
+ an object. Events can be error conditions. The event includes the
+ object id and the event opcode, from which the client can determine
+ the type of event. Events are generated both in response to requests
+ (in which case the request and the event constitutes a round trip) or
+ spontaneously when the server state changes.
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ State is broadcast on connect, events are sent
+ out when state changes. Clients must listen for
+ these changes and cache the state.
+ There is no need (or mechanism) to query server state.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The server will broadcast the presence of a number of global objects,
+ which in turn will broadcast their current state.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+ <section id="sect-Protocol-Code-Generation">
+ <title>Code Generation</title>
+ <para>
+ The interfaces, requests and events are defined in
+ <filename>protocol/wayland.xml</filename>.
+ This xml is used to generate the function prototypes that can be used by
+ clients and compositors.
+ </para>
+ <para>
+ The protocol entry points are generated as inline functions which just
+ wrap the <function>wl_proxy_*</function> functions. The inline functions aren't
+ part of the library ABI and language bindings should generate their
+ own stubs for the protocol entry points from the xml.
+ </para>
+ </section>
+ <section id="sect-Protocol-Wire-Format">
+ <title>Wire Format</title>
+ <para>
+ The protocol is sent over a UNIX domain stream socket, where the endpoint
+ usually is named <systemitem class="service">wayland-0</systemitem>
+ (although it can be changed via <emphasis>WAYLAND_DISPLAY</emphasis>
+ in the environment). The protocol is message-based. A
+ message sent by a client to the server is called request. A message
+ from the server to a client is called event. Every message is
+ structured as 32-bit words, values are represented in the host's
+ byte-order.
+ </para>
+ <para>
+ The message header has 2 words in it:
+ <itemizedlist>
+ <listitem>
+ <para>
+ The first word is the sender's object id (32-bit).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The second has 2 parts of 16-bit. The upper 16-bits are the message
+ size in bytes, starting at the header (i.e. it has a minimum value of 8).The lower is the request/event opcode.
+ </para>
+ </listitem>
+ </itemizedlist>
+ The payload describes the request/event arguments. Every argument is always
+ aligned to 32-bits. Where padding is required, the value of padding bytes is
+ undefined. There is no prefix that describes the type, but it is
+ inferred implicitly from the xml specification.
+ </para>
+ <para>
+
+ The representation of argument types are as follows:
+ <variablelist>
+ <varlistentry>
+ <term>int</term>
+ <term>uint</term>
+ <listitem>
+ <para>
+ The value is the 32-bit value of the signed/unsigned
+ int.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>fixed</term>
+ <listitem>
+ <para>
+ Signed 24.8 decimal numbers. It is a signed decimal type which
+ offers a sign bit, 23 bits of integer precision and 8 bits of
+ decimal precision. This is exposed as an opaque struct with
+ conversion helpers to and from double and int on the C API side.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>string</term>
+ <listitem>
+ <para>
+ Starts with an unsigned 32-bit length, followed by the
+ string contents, including terminating null byte, then padding
+ to a 32-bit boundary.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>object</term>
+ <listitem>
+ <para>
+ 32-bit object ID.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>new_id</term>
+ <listitem>
+ <para>
+ The 32-bit object ID. On requests, the client
+ decides the ID. The only events with <type>new_id</type> are
+ advertisements of globals, and the server will use IDs below
+ 0x10000.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>array</term>
+ <listitem>
+ <para>
+ Starts with 32-bit array size in bytes, followed by the array
+ contents verbatim, and finally padding to a 32-bit boundary.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>fd</term>
+ <listitem>
+ <para>
+ The file descriptor is not stored in the message buffer, but in
+ the ancillary data of the UNIX domain socket message (msg_control).
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+ </section>
+ <xi:include href="ProtocolInterfaces.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+ <section id="sect-Protocol-Connect-Time">
+ <title>Connect Time</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ no fixed format connect block, the server emits a bunch of
+ events at connect time
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ presence events for global objects: output, compositor, input
+ devices
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+ <section id="sect-Protocol-Security-and-Authentication">
+ <title>Security and Authentication</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ mostly about access to underlying buffers, need new drm auth
+ mechanism (the grant-to ioctl idea), need to check the cmd stream?
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ getting the server socket depends on the compositor type, could
+ be a system wide name, through fd passing on the session dbus.
+ or the client is forked by the compositor and the fd is
+ already opened.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+ <section id="sect-Protocol-Creating-Objects">
+ <title>Creating Objects</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ client allocates object ID, uses range protocol
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ server tracks how many IDs are left in current range, sends
+ new range when client is about to run out.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+ <section id="sect-Protocol-Compositor">
+ <title>Compositor</title>
+ <para>
+ The compositor is a global object, advertised at connect time.
+ </para>
+ <para>
+ See <xref linkend="protocol-spec-interface-wl_compositor"/> for the
+ protocol description.
+ </para>
+ </section>
+ <section id="sect-Protocol-Surface">
+ <title>Surface</title>
+ <para>
+ Created by the client.
+ </para>
+ <para>
+ See <xref linkend="protocol-spec-interface-wl_surface"/> for the protocol
+ description.
+ </para>
+ <para>
+ Needs a way to set input region, opaque region.
+ </para>
+ </section>
+ <section id="sect-Protocol-Input">
+ <title>Input</title>
+ <para>
+ Represents a group of input devices, including mice, keyboards. Has a
+ keyboard and pointer focus. Global object. Pointer events are
+ delivered in both screen coordinates and surface local coordinates.
+ </para>
+ <para>
+ See <xref linkend="protocol-spec-interface-wl_seat"/> for the
+ protocol description.
+ </para>
+ <para>
+ Talk about:
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ keyboard map, change events
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ xkb on Wayland
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ multi pointer Wayland
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ A surface can change the pointer image when the surface is the pointer
+ focus of the input device. Wayland doesn't automatically change the
+ pointer image when a pointer enters a surface, but expects the
+ application to set the cursor it wants in response the pointer
+ focus and motion events. The rationale is that a client has to manage
+ changing pointer images for UI elements within the surface in response
+ to motion events anyway, so we'll make that the only mechanism for
+ setting changing the pointer image. If the server receives a request
+ to set the pointer image after the surface loses pointer focus, the
+ request is ignored. To the client this will look like it successfully
+ set the pointer image.
+ </para>
+ <para>
+ The compositor will revert the pointer image back to a default image
+ when no surface has the pointer focus for that device. Clients can
+ revert the pointer image back to the default image by setting a NULL
+ image.
+ </para>
+ <para>
+ What if the pointer moves from one window which has set a special
+ pointer image to a surface that doesn't set an image in response to
+ the motion event? The new surface will be stuck with the special
+ pointer image. We can't just revert the pointer image on leaving a
+ surface, since if we immediately enter a surface that sets a different
+ image, the image will flicker. Broken app, I suppose.
+ </para>
+ </section>
+ <section id="sect-Protocol-Output">
+ <title>Output</title>
+ <para>
+ A output is a global object, advertised at connect time or as they
+ come and go.
+ </para>
+ <para>
+ See <xref linkend="protocol-spec-interface-wl_output"/> for the protocol
+ description.
+ </para>
+ <para>
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ laid out in a big (compositor) coordinate system
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ basically xrandr over Wayland
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ geometry needs position in compositor coordinate system
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ events to advertise available modes, requests to move and change
+ modes
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section id="sect-Protocol-data-sharing">
+ <title>Data sharing between client (selection and drag and drop)</title>
+ <para>
+ The Wayland 1.0 protocol provides its clients a mechanism for sharing
+ data that allows the implementation of selection and drag and drop.
+ The client providing the data creates a wl_data_source object and the
+ clients obtaining the data will see it as wl_data_offer object. This
+ interface allows the clients to agree on a mutually supported mime type
+ and transfer the data through an fd that is passed through the protocol.
+ </para>
+ <para>
+ The next section explains the negotiation between data source and data
+ offer objects. <xref linkend="sect-Protocol-data-sharing-devices"/>
+ explains how these objects are created and passed to different client
+ using the wl_data_device interface, that implements selection and drag
+ and drop support.
+ </para>
+ <para>
+ See <xref linkend="protocol-spec-interface-wl_data_offer"/>,
+ <xref linkend="protocol-spec-interface-wl_data_source"/>,
+ <xref linkend="protocol-spec-interface-wl_data_device"/> and
+ <xref linkend="protocol-spec-interface-wl_data_device_manager"/> for
+ protocol descriptions.
+ </para>
+ <para>
+ MIME is defined in RFC's 2045-2049. A
+ <ulink url="ftp://ftp.isi.edu/in-notes/iana/assignments/media-types/">
+ registry of MIME types</ulink> is maintained by the Internet Assigned
+ Numbers Authority (IANA).
+ </para>
+ <section>
+ <title>Data negotiation</title>
+ <para>
+ A client providing data to other clients will create a wl_data_source
+ object and advertise the mime types for the formats it supports for
+ that data through the <function>wl_data_source.offer</function>
+ request. On the receiving end, the data offer object will generate one
+ <function>wl_data_offer.offer</function> event for each supported mime
+ type.
+ </para>
+ <para>
+ The actual data transfer happens when the receiving client sends a
+ <function>wl_data_offer.receive</function> request. This request takes
+ a mime type and an fd as arguments. This request will generate a
+ <function>wl_data_source.send</function> event on the sending client
+ with the same arguments, and the latter client is expected to write its
+ data to the given fd using the chosen mime type.
+ </para>
+ </section>
+ <section id="sect-Protocol-data-sharing-devices">
+ <title>Data devices</title>
+ <para>
+ Data devices glue data sources and offers together. A data device is
+ associated with a wl_seat and is obtained by the clients using the
+ wl_data_device_manager factory object, which is also responsible for
+ creating data sources.
+ </para>
+ <para>
+ Clients are informed of new data offers through the
+ <function>wl_data_device.data_offer</function> event. After this
+ event is generated the data offer will advertise the available mime
+ types. New data offers are introduced prior to their use for
+ selection or drag and drop.
+ </para>
+ <section>
+ <title>Selection</title>
+ <para>
+ Each data device has a selection data source. Clients create a data
+ source object using the device manager and may set it as the
+ current selection for a given data device. Whenever the current
+ selection changes, the client with keyboard focus receives a
+ <function>wl_data_device.selection</function> event. This event is
+ also generated on a client immediately before it receives keyboard
+ focus.
+ </para>
+ <para>
+ The data offer is introduced with
+ <function>wl_data_device.data_offer</function> event before the
+ selection event.
+ </para>
+ </section>
+ <section>
+ <title>Drag and Drop</title>
+ <para>
+ A drag and drop operation is started using the
+ <function>wl_data_device.start_drag</function> request. This
+ requests causes a pointer grab that will generate enter, motion and
+ leave events on the data device. A data source is supplied as
+ argument to start_drag, and data offers associated with it are
+ supplied to clients surfaces under the pointer in the
+ <function>wl_data_device.enter</function> event. The data offer
+ is introduced to the client prior to the enter event with the
+ <function>wl_data_device.data_offer</function> event.
+ </para>
+ <para>
+ Clients are expected to provide feedback to the data sending client
+ by calling the <function>wl_data_offer.accept</function> request with
+ a mime type it accepts. If none of the advertised mime types is
+ supported by the receiving client, it should supply NULL to the
+ accept request. The accept request causes the sending client to
+ receive a <function>wl_data_source.target</function> event with the
+ chosen mime type.
+ </para>
+ <para>
+ When the drag ends, the receiving client receives a
+ <function>wl_data_device.drop</function> event at which it is expect
+ to trasnfer the data using the
+ <function>wl_data_offer.receive</function> request.
+ </para>
+ </section>
+ </section>
+ </section>
+</chapter>
diff --git a/doc/publican/sources/Wayland.ent b/doc/publican/sources/Wayland.ent
new file mode 100644
index 0000000..da18a95
--- /dev/null
+++ b/doc/publican/sources/Wayland.ent
@@ -0,0 +1,4 @@
+<!ENTITY PRODUCT "Documentation">
+<!ENTITY BOOKID "Wayland">
+<!ENTITY YEAR "2012">
+<!ENTITY HOLDER "Kristian Høgsberg, Intel Corporation">
diff --git a/doc/publican/sources/Wayland.xml b/doc/publican/sources/Wayland.xml
new file mode 100644
index 0000000..845634b
--- /dev/null
+++ b/doc/publican/sources/Wayland.xml
@@ -0,0 +1,16 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent">
+%BOOK_ENTITIES;
+]>
+<book>
+ <xi:include href="Book_Info.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Foreword.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Introduction.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Architecture.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Protocol.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Library.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="ProtocolSpec.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+</book>
+
diff --git a/doc/publican/sources/images/icon.svg b/doc/publican/sources/images/icon.svg
new file mode 100644
index 0000000..b2f16d0
--- /dev/null
+++ b/doc/publican/sources/images/icon.svg
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.0" width="32" height="32" id="svg3017">
+ <defs id="defs3019">
+ <linearGradient id="linearGradient2381">
+ <stop id="stop2383" style="stop-color:#ffffff;stop-opacity:1" offset="0"/>
+ <stop id="stop2385" style="stop-color:#ffffff;stop-opacity:0" offset="1"/>
+ </linearGradient>
+ <linearGradient x1="296.4996" y1="188.81061" x2="317.32471" y2="209.69398" id="linearGradient2371" xlink:href="#linearGradient2381" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)"/>
+ </defs>
+ <g transform="matrix(0.437808,-0.437808,0.437808,0.437808,-220.8237,43.55311)" id="g5089">
+ <path d="m 8.4382985,-6.28125 c -0.6073916,0 -4.3132985,5.94886271 -4.3132985,8.25 l 0,26.71875 c 0,0.846384 0.5818159,1.125 1.15625,1.125 l 25.5625,0 c 0.632342,0 1.125001,-0.492658 1.125,-1.125 l 0,-5.21875 0.28125,0 c 0.49684,0 0.906249,-0.409411 0.90625,-0.90625 l 0,-27.9375 c 0,-0.4968398 -0.40941,-0.90625 -0.90625,-0.90625 l -23.8117015,0 z" transform="translate(282.8327,227.1903)" id="path5091" style="fill:#5c5c4f;stroke:#000000;stroke-width:3.23021388;stroke-miterlimit:4;stroke-dasharray:none"/>
+ <rect width="27.85074" height="29.369793" rx="1.1414107" ry="1.1414107" x="286.96509" y="227.63805" id="rect5093" style="fill:#032c87"/>
+ <path d="m 288.43262,225.43675 25.2418,0 0,29.3698 -26.37615,0.0241 1.13435,-29.39394 z" id="rect5095" style="fill:#ffffff"/>
+ <path d="m 302.44536,251.73726 c 1.38691,7.85917 -0.69311,11.28365 -0.69311,11.28365 2.24384,-1.60762 3.96426,-3.47694 4.90522,-5.736 0.96708,2.19264 1.83294,4.42866 4.27443,5.98941 0,0 -1.59504,-7.2004 -1.71143,-11.53706 l -6.77511,0 z" id="path5097" style="fill:#a70000;fill-opacity:1;stroke-width:2"/>
+ <rect width="25.241802" height="29.736675" rx="0.89682275" ry="0.89682275" x="290.73544" y="220.92249" id="rect5099" style="fill:#809cc9"/>
+ <path d="m 576.47347,725.93939 6.37084,0.41502 0.4069,29.51809 c -1.89202,-1.31785 -6.85427,-3.7608 -8.26232,-1.68101 l 0,-26.76752 c 0,-0.82246 0.66212,-1.48458 1.48458,-1.48458 z" transform="matrix(0.499065,-0.866565,0,1,0,0)" id="rect5101" style="fill:#4573b3;fill-opacity:1"/>
+ <path d="m 293.2599,221.89363 20.73918,0 c 0.45101,0 0.8141,0.3631 0.8141,0.81411 0.21547,6.32836 -19.36824,21.7635 -22.36739,17.59717 l 0,-17.59717 c 0,-0.45101 0.3631,-0.81411 0.81411,-0.81411 z" id="path5103" style="opacity:0.65536726;fill:url(#linearGradient2371);fill-opacity:1"/>
+ </g>
+</svg>
diff --git a/doc/publican/sources/images/wayland-architecture.png b/doc/publican/sources/images/wayland-architecture.png
new file mode 100644
index 0000000000000000000000000000000000000000..4f92e0fb93825a68095b75d499bac00e968419e5
GIT binary patch
literal 29162
zcma%iWmJ at 3)GrOfPy#Y^cZ1SMN(+c|BOu*f14DyIhe(&wrF6`Iq@$oHB{eii$H36<
z<Nx0G!~J$yYZhysInUW=pR?n4b|mWQs1Xy=5 at KLr5NoKb=wo1D$^)M>0zBY}RwC~L
z at DImVNyC5u_zNSjPXN9@@KQJR#lU#z_wR$b^qMIMcu3>-%*5}d=WD+}TOS9Ez`#I3
zXAf6jJ6kUYK~EpY`~z893=C!r4HZR$pn|=^z;_f=7xBwPT8F*HFQluOd09({$_R{9
znoGEO(S~H#v)2i at d&E?@R6K-66?IWqypNJ76+;et3HE#<A_~3<&AGMYKj(D!UEUfK
zn_D06b>z&~9e3a2u77gLsho}9g>4D_qd;6Dt;chpO#|}YVs4_DU6s1S(`L17Os+MI
zt144^1Ort@)<WqbbrjO8OdW*T@!mj>;fRXe-ed7$q+n^Hb=+SpS<- at s?$Mw)9DA;#
z$48tyS57@|MLLuZR&z_gVlrXn4vsQLv!t6oIODXur}9(=rBhhki2l}q8!N1t(Ao>L
zOU6U#G-is2=E;=pDGAXoankrSXHNzkh3!A$2*-g?_C3TRDyljYLds7tA-G?MzA#6#
zB!bnuATmp;-~qO7v_lnP!bsq&9*`(FBSE`_Zzn_*cx9dG-s8|I`G^Kont`XytZbOt
z&JuUCMg;>+5qAhfK7c_Q8XU;xAUfMo`N{q7da;qP$mwJ8Q5$t7QRrsH?#8kBAenT^
z)(k#d7 at l%R1?I%yJc06^*Wh7X5Us5+C5GU+8=)}!gIHNbLTO;}(JW&;SOrX;Y at pJY
z1c~FXqA0<j^j~62cwnWEWDj$`+6b%Yg!B*#$LO%IGZy#TBow&VSCt)$50KHurYTh5
zMYH%&>WKj?DV38wgwELrcPQ5f(b*8ZReJa16fZje-Qmj&GRcbUej5Vn(?ZRMldJ9u
zWuM&Sk}t`5b7SW-xr<Pl<trU=_m&_-3$u{Wbui^~>`EV at i{B$@{`4N*1T{GqeSLlm
z$%QP9ivj5};xwR@)h_g+C at 9A>5+O6dpg6diy5W_|MQG-+ at u(q6u at P}9LaO{W$-_Kf
z0x|uCq8wTAXN(JCI<k_KvhrrR;r3`;;%L9I$?M6UJPt>aV)^?Y9V8Z+B-HH_JaM|=
zpb^oPlTW@$%M|4$roDsYu*K_VzY#f68AGe?Z&`9W1R>8RZ8nu8!yb23Jul*OV7~Bq
zd6(v6h!{~r>*tYvgd-(vmRSy6QzUPC%@`>lQJntB-cV%S=5e!_enZeh(aruh?E{O(
zgY&e?{N9!~((Q2)uqgT5Hy`yr*pG{fQI9qo94{cgA7$;@D+vx}QIGWZ9)3OjV`#Je
z{YQhy<1_wMv}0kI#}`icP4*FD^~YeNofi6-<8pyGE@<rvS;uBzI$}FrR&dCKh_TL5
z7!vhz*g|f!q<pD^Z3H{AK}6O*#vZ{#PkOfUnvN_xt}L7khzNOtAJ^i~_{T0U$2fXM
zt+EL2)?4U2Mf}o!4OYfNc5NBA_Jm30)KN|BM+M9+7k7h57@!UA>u-+wFQAB9RAW10
zgAbx6Hso8-3l`sx#J(Q`8~p0>nw!((hYN0`epG(_sG^wAzXqp0{QMO<5c_czW}#VZ
zK=1rHJP<a9@>t?f`q3d?Fee-6x&4a?xh=Bo9hWe0h*<A>)DU+yg)GS2NT+jc|4R1n
zSzo)S;013QH3KhcIJ3O$hGu{Kg<`B|KjH%wUM*?N`wPgTINFvmONcnPfT|;TdXm_(
z>EWY#av3v;nA3S&rYp2p61|WNon~(2a!yi$kQv)Oo#mhP8-8)O_??I`M?4?W!Vra?
zUwqmfsaVeqUWdxGpC=W|i-mW!Fvww1R27`QXZwJWAE1;8nS4&7Qf?-^+E7rmx+VXm
zVor4QZny-#^_n66sqUAn{iA-l(!}N6OnZyHpfsU~L!F~dn<@kGtx#<1N8b0SCqa8`
zG`vR})u|4kzeDEOGjbcG9Va}qp~Ba at 0)Mq;MCtEL4^ab$`vObB-0M%ScaKJVwlAW>
zilBp at zjQhvRS6mLRA1rqfnViNAD4-I+-7i!u0g80h`T$A@|EMhqiz4Cna#$tB79LI
zxq!Hf!#{?}Xez%lPKYOjV=4bWs7UPR&t{I_wRrxuc!JbUJ%`&O+!pFNo_;PIjAlO{
zUrv(bGsDoi at +5q!4i_eP=ak3SLDD^5u1M3~G2dtCuh~(26A$*K1NU=<e3nmD{Qeq7
z%i*gi6fqI4y-wmn|Ge$r1)t;uNu{D<&%dv?>PAGSei+bNTe<mFf~cOGxO8}6fi58k
zNENeD&^>nAswbPMM}+s|N=X#h;zer7tl!_L&-PL4^gT-v`1?h!x71Mi68cV($SR-v
zm357zMNkM*`U=LrwDjv1dG<kcP}GMoxtK>@nELZ+K&P%Nh at v=chPok&u50XDtMUV}
zQ*&fu5?U%MJC8#N>E|r=$>yAu+x(%9$GU(_h}pSM|M0boQQUJo-#fcD7lK~tf#3^`
z+%ZP%iRIOBm at C~ep|M-c1SEzITg5VTi%!aF=E)fcX|xdH;JM^yPr)^Z{X6{fj|l2c
zhiJI}4XQD@@Ukz$%3RXRM0PrNc#9Giul7~0>oaz8gaL%C;M!|^%<F4?Y2dT)OUGXN
z>?k~ur86}0nl)_k&p`V`NaKU`_y%W7 at R8^O>QTXrsu30X^up!cJxKxbQ}=mPzz=^|
zP$pmn-o>w at T&M=G!@@Ie7Rw+<4IQO653{GX`z#GdeqryN)8CLve?GhO4Rp)<w9rEZ
z9l1{WfP4Q;utFsnW0QaUu1H_FBwjY+V!mLjVOel30HghU^!85}k1;Pg^!aYm%!k$>
zmwxaMu_ocAJq?c5py%f^Ta8)XVwLtSrA^CRChfcn-p=ZqTQ(zBQbvtr<`a$^oIw#S
zvJsBz<E~hpOvE(^+R3>$zI~)##*KReTcLvMJ-KneIbCFAvEE)wt%au`6_MUBn$wMK
zzOp`g1ZA^DH<kE7+5^fXNU*WzSg;Q4bja??z1q*$?8#Z5#H#rYXPc)WqXJ~EhX`Vc
zMHc|iv0TlDCh)@le(#?k7U!A#LE-ASM$&0D^2 at ZvDCMmyg0@@1A|!{Ob6hB;-GqCX
z?(=42R-0}Wk1{@#yTV at E6ZOc{g~AC}p(%7Hs2O at E1gh3D7@9CW3`9148<1KmJd|A0
zXssk#H5Y70g?mO2>qfAak%1iXCa4{qzpK3*x(>Z136|UKnAsgooxvBK6Gjt*Pouvn
zZH+L-OB-Utth!?8Q(a974ic8XKKH3Jl?p2KkN%xUoh>J$D83(apAy#>!=axO+%;b-
zu6#_SLhz)hd}~D}?(%RLj>75A9XC0Ferd>a<Hk^VeseQ&+trqCSH1dUSV$mb#7LBT
zKkHg*^s4Vz%ofSlGFY~JDf-mlQ--!j1yznnZxJaz(;@Bb%fZ979Z^n`7I4_ at o3J^)
ztOv50U{HPOp&r^LCE+{qA~N}d=qK~(UkniM0s>c$HP2Y30v>-!bTPfwI;%Fv7Ymhz
z*)<Ip0W1AqT`N<W)&U2Zb|^y87wOboxDR0Y%c0Kd?to#r+r8z@&Zb!u{J2S9cQC6T
z<35aa{1of$1vDs(86jVAENAVrYZVpNtRwe=lV<pi8|$yOpGAb#oor!jtqNL`D&Dja
z$4Y*iAUpr}g&&dcDd&tQQR4xLK+gp1J%!A%?_ix~a31st_?4o8S|I)L`)20rtEUlR
zBezj+FBqgY84kOu<S_HvSv~XdLiE4&Tnp6AVZFRhgL!reANpdq`fHXWi9T+{+vq~P
z at y_lS!4?+xHxfNv`BTwiatQahlxzo?=91uWDM2fWZgGYJrqwTMcJmD^cY`W7cNQee
zH at p+r0*oGW3SEVBUoR8wSCp1Ko|nx1x{XI>3!Sv>{PoMLy!Gb+L0%4LNVk23<*tP}
zKWZT4SE7KN2r_tQeli;c at 7yULEd@dmpnNjOt?otUbx)}L!r7}M+zsXn5A at d2^vp^-
z{*QBZ$>yA7m~?28-81(I(wQFN2w~9JKfw%K at Z40|F=}(o_*9_p6`<uQH9EKPoDbx#
zld<)MD+qr~v5nW##vxVVVRFV$#T%l@*615uzetOC{mIQw#jls0MV!SKL}jHZ at HpO#
z<%nYJhLfAdm*;t{y(tZb_e)+-2A$vq-wp9Qg}<SfaJ$GcZ8eSK8Shb^USvr2Vl54N
z0rqZRn7HW6M1^&qI|}(ee)(rFq__^>kH|6a=R^czaH`9FH9YPFX0Ps1M*Hn|-~uV~
zj1zjX6qS4}^$G`?E86oILmHHWih6!ErcYX_LQrcMsmqwfz!)r2!qp at FqR3c~%X{kt
zk=QCbztKl|9BNyT%+)Z5Wge(ih^j at fI<(USrE8NsM{6jF8a8rksXS`Pa1gO$f-dQX
z<Swk|#y6yk{0Uu3PbA$cGU8^-Wa+c~HSBNC<XhqAf_q2;?Ox9Do+V#aT68(-^!US)
zsXva2`4lMwzU_W<(e;|h;<oMr1t6|l at WmeycE%T}>tVOSOSpsK<HS}6J#9aBsDrJ#
zRFJ4}NAc*n#(`Tld$y|<Vo?*wbLyaVGxBMj`jaKsKc5?9a~d*D|JX!<^r{Pfn at Yg1
zJ{jL}v7-N~T%Pb-;C>W;sC$y`>QEl`(dY-eLT;C`*73Wqc&6NzkH5>Pq!~$Wg|0EC
zdv^jJ=UJ_T_E|xugGk_n*wF6yS3>!)-;qTRxsh*$R_2%2{{$RTo9oo!KHpVbZfHRa
zM&z`<<RiDeZ>tSDaJXgeR=Wz!WuVbb&S2`O++FX>;pVg}-1#^v2y)a&@eCyk%jvdn
zM&46%yy;(NtJv*xYSm_Eki#?NTMthKjlG at x<$WCZIKXM*s@<#XP;i;Khz;ICx`CkQ
zxo4oVJ)*8LIa+=}ex!#Dia{(z`@pc>1>WF|wAOv+qf^X!FX<(+b5+~(hGz9Si;ZK?
zTLS#b0aBT}QFZc(gZ%~ar)l1`K?KFW0zSu*+Lv(~4dAc7;LJNx%zzZ at r$4qK;z{%H
zyl0sW$LK at T42N<)VBDs#&IjRUFkkC}5>;uNXw)Y`pi<wz3UipN!cC6n&wBBqiJWX+
z_PiC20e)s#QXP!?m9Mb>RWvln%KXrWI=cT^TSmiopB;7<;&*rpWR5ar<0D2r0>Tv-
zG{@p_GU?dJ!$>>e5 at iDz+m4wbGA+XNh6@a_HTQ)6v~_yyzSMT|xF6na?crcuHc%WE
zJh#G?T4IT&>@6F_E)qlPHwaIez#fZq=-;i2>{x4N1Zv at vOcQ3>gLikqYvH=Z_~K8R
zXpdT#6(exxx>R;vwp^w8OUGQCzMl~v9?!Zga`e41!+bhXTEDk!{Su|y<)Ka!fF+<l
z!>O#EvBEU at SGq(&Rs7n!4~I5^a<_MHC8upKBSA1Oi=ATIAx21QOc1gYBH=}@SAyqp
z!4y?nBrx97O2t;Q)e(n{iIv+Ra(`9*m7!u6;C6tFQ7Ss`!)`>R7F158ol|oGCGIwl
zV#*Itc?AEE7Bx-$36^7I(lS7!pYl<C#&ZPV35}DoUeFMMql2F_^!q)xaBzdf!nMb;
z7s6K5twg0z at I9wD{)7{6zdSL|7uyojovWWgbgvSU_b3?e?5li6Y2jM0>{Dy^mPiGz
zv?y&NucoMK<pa3FY-`PtdykHWnT>12*zx(GOBK7YRrdrIAD at X8VE;23gmAmCPG7xB
zf3tA+-WZJ`zW<{kRzaw)Cvk`vx2O<KR+2~F7p3g<AbAqyS3>M1AY8~kOLQ~D50(%M
zO+c0B9dN*;ayTrlm7%XijwHRXcCH*Knk#L{uVy4HU6B+>3Q>dL5}8%<X*?H<DUFhn
zs_(n~ca0n;NBN&7^PW0V$d8+T9cIWd;n7cFeB*9lr)(gVFxa~A|3n@#uHRW>_P5kI
z!~bj*g&sU9shYmJP~SDstjAmWX(mtI3<a*sn-xii`o!qxuKSyJ8)fW at 7t1!nIGi;a
z2#SQi>bb+ulQ3R`fZM!2VGr6g#}G{OW?|1~YWP$Pobe7z2%=!PF8y}PQ5bwzY(NHc
zDJq{|b(EC{A`2p`)K8tk6B9P-X8MXZE*SXk^C at 9=jrf%YFD72DUDALwG<g%Od6*TL
zYZACurD*?+)CWdRrj=xRy!toA7%&Cne}oEvsaZP?OKJWM@&N{wtz1gcmAys(H_P7s
z+c@<83B6?kDFwLFz?S`$j;T%IG$%`2Kax}RW<bF;+=K_kBp83BuUUynjopsnh?Spa
zukW9&ZwlwOiJ1;*&EKa5Rjc#*g^C>qyj--W7ECJEufY_i>tF~Xsw!#qC~JLc>1v5h
z{)OMBP5-Y)W!Be9>FEA6{Ay+hek8%mY<zoaGE+fqQq5{{I6V@(9wlYAt6{dwzbtCD
zi!$3)i)>RMwJ9K1h-L}XFP#rf*iN(_ECNXI3*&9qwiay$*OUIhbc#vl^T6N4@^q?~
z;Hm6l-oZJ*j#G63=p<D{p&8hvSKBE9yLu-u>=;%~kNEYN$Y;MO$RL%Fk17p9>rv9F
z3U`%R?@L-Aw0j7z=NfFEGb*)pbUy!&5XcMnC~Da}5X--HI{Wi<EA+iO$%fhJJ7%+8
z0eCmOK7H0kxPtc|JJ837mZWu4(TI+p`}?@sKg|wL!(X`GR!)cXPAum`O^f8iM=n({
z!r4Ce+o)^&<7U*CA9v5Y*-C;__B|$MCJ#?#4aSaw2)q0ClTo)r?vKgSA?5nKFL?}2
zU3=M-%t3Kktl5K&><4eGD~ha at ZB)}P-m_4!^o5nT-pwDjPAOo+6N>xONcAh{i4Jr_
z_He!iKjMr>ys(!QB6}05m9BE^$vm*A%;Vo{-AOxIk<f25ieJqRskCgEnOl9NF%yXG
zrCB2Jd0Iwp_x9;ev*na;gxCw~S;zdD&KPy12Jt}PM~63IS$v||tfBHGm2OpnLGsC9
zOG?5FDtO<(rfBZMRd~G^5bZX1CZ+R{X`fCPwHsENi)-?#(yYG+JtbK#AG6-qWc{tr
za;eXf1{NZ5RP}MxUbj;TPJz~r1cTy!Xv97sO~b(KAD$lIcy;{CjLA?_jxbqIv-OAB
zq3StHAWHV;5(~T<4B--8x(Mjlrvp_dlf#66nlTw at GO!HLSl6S}G^=&s+?Bsu&32cw
z^-<6i1%?vgCUUf)YcCFbjpr#wL2aw}&kEu=Vc}J3ntX3Z{$nHd3<PVXK}0=@(&lpn
zOQnG`k^{+#d{vKPrT!xh*3U3_2>bA&Do~__QHb^P^ho5LX0>aY;1Mm7)P_;i_7`Cu
z)d9gboIfu05~_b1`qREvWT2mYIW@;A*fMf3+ttm|r-<~GOMR2ZA)ODkhN@|kVMq5f
z=xf~60ES_<ZNE-dD}MZyO_P32Q^ZZL7r>3;Yd@~;7eJJbKpSfPch#0c)Ejwj279L9
zjl{{_eF6r(;LIK*T{yhD!=}eK>#%49;(4OgtdM;2^qPF*{+p84r=YsQf8yX*5rdv<
z3&$~0K6 at SZpW>@(CKShWbTsjEV7w7tbrfc2P`zPw6!9w4uW_RMD-O&Jh?ytPkHHrH
z_QqiH7W=A11d0|E$DP5ud!rx=TU9?>rxKj*rq at Vb!ZO)@)%%l8xe~K5vIwp*%DDPh
zJ*dIpO7Sr}({-Aq?k=<y{un7U>EBoW`C|rJ07aj_Qicv@{lw2jGkhy*KxZSIan_?$
zP%i==D6QN2IeL0Q3>Ojot&LPhzMO0&sVvL7%x-rNm47HDWwr)M<b%-Eu+aQ{$!<F7
z4_*<Y<WIt|j7){fkLg(|N%1%gPJGcX38wt}{2R?OsB%<~lx1cye$QEmI4)|G2mV;}
zw~DAi=K|q}_vmN7!|i?gytHFKzpyE1V+~{KV!!76ljdT9b)y<5&0_*JppbVQo^dDL
z78<OT{<0AQ3^T-k&8G2_IL at F_gf(&tCq!&&(DOmYKuceKwoAP++x&tBktdZnO^u}R
z11AR0mq0|iL{>N*lx at djR+G5=id{_=!Tnn<8y+n2>N^4Q42b*+vy*K^Hje7eabD?b
z-nh*##j3oL5+j__#nmy=G)z=lEKM)<P|GNw1I6tXBv`v7WIdE8^^N>grgxaC at aXvD
z&i?goV#jB9VRn4#jM6Tth>99?;cHVPatS^ZJ4vzDO;_Iqxha-^Gz%42GmaOhnh!Dr
zeOaz|VX!K)lU`cG8XQK9r+n~Pb-L$61zG?*0Bir>k0l>~ogu3BT_d!AG;brk{+&22
zYSnSR4G+R1y$11x_71k}=9g-+5lI7YJNdCHXX{EGp9;rw2SJKJ9`a=K4W9VyN^bz^
zeaouQXz&O|o8#~#L22<NR7V8l at rUM87<g~{OvCW_njx{Dy51X>q4Lq3A>pft%ZLrP
z`fp8*<4^9_WWvSV1X<G|RLzTjji&brCH7-zh>%+_Um=MI2PYszoZ+K2)9GjjasEwh
zK#e|cN6)2MAA}ma_3aFe?wU1|FI|%q(G!#Qksj*iOt>$X!Z(<LbpIS&D2-pxTJRl)
z--oUT45e#UQ-1qhJg1&3LaVJjIFY1(+n43lJy5w at g6KU7y9HM<*iUG-U)#<X^&l+K
zWNx!0x~S;*M(=quWe at FZ3dSo8i1j1%?IZ_s^FX+Q`gh{;QbmGE51v&%&W6?(-&^IU
z_1c;t5XMam0Re>1qAyk-rp^n^sZ^!KyN;(zGkr9as2l!q6S9tP8Ld_;i28-E&soDT
z3ZGZSzB?J at mOO-z_f2w?n45Qel;{bNS%5tF>`4LyhS6JIn+&Bhp{g&pe-rZNBo^&o
z+AfL*ZP9_BJhA>rrR6Z;Nz(HBBZKhbM%PD-d1xOzQ*egCUz0LA;JM8-D|xFc_TW(A
z&Y00;!-H?PTtQN5l!em7%`4v<k;gAiZuWA7uQ02O1spq{%dA8+4tQ$$_E9H`kapVH
z^=Oz*OtkG2tB1kHJ!a}#$8nx24hr#j_k6ZtT-2V}HDcnn;Li17Og}?$hR=nP<<!SB
zgtC2_Ax?3fZPD7hJaj^%+~zYE`AA}w)ogChkLJ%D)<`;b1%j704Bm<GHyvUAuEU`y
zj!ZoW{OBHW&J<;szp)heWz(|Bx42tes-g}ZjK<U0q#%BZrK6`g<T5>DC|%62w(L<W
zBu1U|&fk^j<6}ZAkKvm=6y}XEX+tPUjRnbuP#ov&dT^!I%6rElx?{()$5j!;1-^j?
z0rxlUS*`))1e#X%4Dq%U6-%qs3U8NQ=~fe!uCyMVZ0U27HHNXcFCKS=buwKkjMq;i
zuEEEa2m2Ey7#~R at TjWYTn4Dn~Voh5LOKtdTQ;A;dU~UdOn^+}+#rf9f+o<C3j}{l-
zm^%pp6c2429aQgpvl6qrel^}{&I!XhKI78giaz|(tle?#E_obMHAly5jn~=`qZ=_A
zywrICC!Ro at x`$SfEUS4?Sf~P~-NDp<p~1wp7sCX@;xJ&b89wv!^q$MQ%}TbS?QNyZ
ze6u0ar&c_)muC66Zw3~V`ti-kY$>kAoatXlAMLyT{Ilq1t}QcDYoN=mqGpWOLL?p+
z=GI^S)K3lxn(`m+%7&@*Imrve#63aY{6e05Dt(4+(u*6{!;vWuJ%R2^F}u4jJ(!uZ
zNhL4c^QqCkbDPI*2T@=W4{ke)a!PpO8Z;76x5wj6*{<?$pGO7_tsuizy4#@QiqReM
z6LAbai}Bbu9pB6`>ph|Eu(<uu_51A>5<MU<5wL&9RopAzeXdam#N->fHj1bO*)LjD
zp9SB(ceGu<n491;*B=&B9PA6**-K at OjkZ?fO}&IBU+*jSz}n07?$zLSn$?PCyZ2>!
z5x<X^F1k4vuZ!4x3T4Y?nzMs+?>2zQlI0H)JWJj!KBh+dU5`tu`@6uMw&x6g!yA=o
zI{wmMZbe+sN%FxDb{IlePK(zs>shW&onu#;`@GgJ_1ay|FCb<FxlcJ~jx|(~BF`f=
zK2=^z`o2qUgeD-}8{yr{17gKW_XkTtJn-{guld^5jfFqhOJH{E0J0VNdni)ubEh}5
zNm~{3GY|kiWm_ at fw75;aakB6y=?RfBIIbX at G<$824`Z=Q-fE>%Jlk5^(Su3fTuB#9
zn^?)b=eei0gQR(XbL|R>c*iC8AahIU0>85U at -W83Q!^C6U5;4GY-8Q!{agw>$W`ts
zCc`KoFdGqg(i0J&Mc!<)aWiu5aUkf=2RkrnB@{j<=YFZ5<5V~M?)Da1r0aa63+;|&
z(n%N6MBsV7PH?VCqK+N8-lTkblyIdGe79-bzdI^T!nCkU^^}Yy)HyPUN#=aO^WI+G
zaodsA;QQ_u^XT3I{2ygcdt}&~+ViN*1A- at 9_2lli)CTyh;qto<VEf;<Rx8+-b at -ON
zWgUlPve(W?=@eJ=nPTG+^yaYVO8&BL+MQ_0e_V)10K(XZJKoHXKvi*@?YhJ5Gd}O`
zCjY9R<&NGa0g`LEt-WeCygATKlur)P<0a~3wh{Y`Qm6M}mzYK#<5ruWhbQ04gyE<@
zN8A-nuR17hTUiUIxHfOV%B at oUH$EUY=%z9b^5iSEf_fVbAu}h1A6=!lCky1UFcx*=
zGhMcp1C|?n>cNM%G^geCp0Z3yI6E(`!W-zLzY7+Jyh0jcW+Q?R<L`Sxxdw;lQ3)?!
zus=lPzNorqv#HasiJSgYnJOSI$vFR0+cP&{NR=i+s=hhMiG;yiBk(&9wOh}G?ScF%
z&o^@xJN0Yqy~idDNDm+>x)&65VNOmG&$RgkM(0o<WODHstR}Yd3v^6B6Es|y;_zDN
zlY6Rm2 at b8AY_ri(S8ZsEs at uusiyvlPaTwqK;>x!Nhnw`VRA`|izFx8GF4Ehqa=({s
z6SUx1D>e&d3 at VoSghWJH7<)unmzVwCpZ2fp0l;DJua-LNbZ?kb!t#vzyINNaYVjIs
z)vW)m1>hY at QCNfASz5*G)K|K0XXVq__mCp1Q&)bHZUo1QPCl<U!PBJ5oq?EfYtfV7
zn|Sz4Nr@^p2N8cW<tOr2eAJ0`CPn>qgDv!=l<fzEjNgPOLZXIaEs+Y5aN+a#B`33j
z?6|_Jv3TxNWftA#ukHBV{_TN0&szzlbS@)Y;#WEi8<~qLrVoPEOPhjo{nl6xX*?nq
zuQwPeFNp46aOU1>j`xBB=aS`lgaDbrJZR$A3SPbKjGMly(*G+~v72wOioe<_wTizq
zmXZRwJS;dC{Akg1+_#+Dzs5AC@<r`J`B3L%A(te213{UPF@(H29dr!?&H?5gYCnm2
zvb at o{M6u#(q&wYx8OjJ4)}aZ3ues-hzxym+`(4C{%$t8;e_YLGPI>G2tz2U+W672F
zf}jAbl-p}kU`L)OBEMo at f|r&$rE|H;RuZfKHw#eACqV4~wP2dRo#S<)_1mP$Ti>rz
zK;Cib;*0F%M&CL=&HXX;)6wqQE$y)6d>#rWrZAz!-!Ew$n7Bz}fz0M{=N+`$;@;!i
zrC9}~5bvii%$9dHb#o7`ZWrYewP5#)yFXR)^@n<is!5q*Gj&I=$(`!Na=^#fZu3?I
zbzGW6MXl4m>5J?d62~jMoo@?R*MjP4lP*?MKP`E#Q|4ty7p#Tr7}sg1HLQM%Z2_ at M
z(9S at 8b&qwzk`rvo*n~odzmG-~mLj!dl8N>2|I{BLGLHT-`c?bQwdQQ|mwuzYr?l_)
zfjI4&z63ilSU;{t&e`>Zdm>xo`-NAxHt5RQ*Kutqy`lk>38gHHJAAj;^uWhYWt?dX
zwL;-jw2KTfUUS?mSfA}>itC|yZ`p3iKBA_Y6qzl!QmFBbG)0antoXE-Y3qyH<vc%=
zD5(X<h_{$e91h}JhL=&E>B^L4J1?l$v?$_U#;;fCsDXy8fBO_<f$|G-zdZT&c6CbU
zn!*Z9-LsI=EBbTeQOZbO9&W@&xs}-F)`q!Fq=V at b_xW)LTjkkg3`RUWEag+~d_BoE
zNcRO|`7V=zWLy#{sN1P<9V{ec&M8AeANMJK^qqBnrajg_=YP|o9eL9$9hfiZA!Mnx
zr4^3q?C)(~=x88XxNhJtk at Erz$`NU1lj&}wG=A(qK5U_s*qJ2^DSBXi&${Y&K_&XL
z#lJo16O2E-HEAUzLRm20y?do|g4vGoF-+r8cDoz%t7bQBAS?N;i%D{Cyyab{%a>0Q
zV_2x`rEJ&kx at c`yhNrB((9Zi&^j?~ksP+op6W*^nrKWF?SXxCg at -7m7nSue#$>`uq
zOf+c+89A>p5UMcH?8RTG&I&PgEhNR4GmhGm^-mq=LM&;edDGsHk;Gq34eg at u1wA8C
z;lwpx61r{S2vNoj8P2H^>2F{`8K#qmu+IZ6uB&4|Pc9;b!_QfI2hD-RnYJ5R$Ky=K
zdKjw~Mc8=I1HR{8kkxMMycE0=c+Z(BB=#sq2!at1kw+F1RKZVv>60QG#$yV?v*ujg
z#ZwlfhW7e*1bv2LEgID#EfG794i^P3PPSkUBO~jbCn49HibFzLJ6<{I)O!4gD_VHl
zewANDw!VKl_e8sM{UZ4+2qoo}$LEi`;`D)^50gfV at N?@o+ZEo%t(hLkx#3-(+Y(1n
zKa8%_h+~JbIHb%k|ISJvU6ytV#K=sgBFuQDz$vxamwx@^rp*9v)%*#FKHg*eRj}J4
zc0FB^9M at D%BBi5{cl at I{E~jaaY*dIL0^ho^-LEjn7gal!s?5B3hYb_V_St_wO5LU@
zwKLv0&sp?*jUccXs8o0}F0r4*!O8VIOM1Rwn?dZ9qrL64E0@{*=CU#93^9#}QU9*_
z;|fQz*LmEAh)-fH$mhFe|IAhFNknsaV_o%vuimh<?<LcM>)- at FqNPD;c+=%iTOmT$
z0?l2iis^{){PT2rs5^}drI+O(ik&7tMg4P{KsPcvbWlqSe9~_wwvt{b1pNXxeBoxt
z{e$45r*%<qD$@Xz&pcpU+v4UY0X`WsVuL)LZ3_p3bt!Wzoa(9BGWk4WQ~hkym3)Ll
zn^kakgu#s0dRC!zo=E0uJY~jj!mGKNFBHrXE$>yE-<B$vR~mrdi1{4Jk at YtPoiur6
ze<PT%;x{im*cTvw1&R|65^|0Z%hu11TvDJYA(^~2C)S=eyQfi{lE-!>J3NFEd<P{=
zhvewHw0*q8ICef&>{?Qfdyf+X9^?t8nf=w>{lz9BlA~fbB6IxorKaJrHth}eXS_#j
zS}#9f6M`$Vu3qv`87)~%EG_+nx8^uJJG}$pc6EK;aPJ}V2ZO2yB-L9O82`nKiWA~z
z^jzf>TyGnuLt3UolBchD>ivD~W%mUte-mj|TVR>uJ3Q7S at +vo{P4*;PNeSB%vYg<O
zCU*wKMGXrgsnl7IUur(Vdy3mIZ6^Prb*V9nw>rzEJnQd=ESKsmUc!>rq7)n+Nt)4%
zVTSp(dt3-d7X=e-5aV`b7GVpXoV6 at LOef1%GG2TVt(0W1Q&;fnIN-YE(%4tG$XlD?
z%o9PTxRt-{Rfg^r at NTKGYP0ocu$<~InC+sBc`LhOf9`Q3MG-AnZYzOrMc~rRC)!mz
zArD at CV$tlmee!vm)L52hgs(WM{aIXC3m*D@<4A)A0;hue)VF5h*YbNkJ)%D17REr+
zS3L-;$dblaaP6g=)4C1<yQe&ByMN~FOW{<XiuuT^SD$zELvxrn*F(8sGS)BA_C}{$
zCLi{=y<2kJX9a(jI|?K<gyYQsb|u5_ux-+w95z2%Wa&=r^?tgm*RkM`q26D}ezKel
z2-6o-D?F<-NZUt4o83dHMFpw%2iMlf4pEm0u9`E~k#E$0#sXC(- at Z+P80h{)#m~L5
zy<gdD+ at B>nj3sNGO(Q$wvYbGLv#bp1@)$mJBK+oM^~>yV#_XQF1Z^~NoTh8~HYj#w
z4;zf@*T!G#0p5y>8R-j+Jk8cmKQvUI;Um+Ps at 8WHj^<Kja@=kBW|2uDRbayBn1IqB
z;^2MDvJ#x+cbj<s<^d3>SGK7fx1(s$ufaa4l*bF(yf}v`NM;f)vsk at 0xEOb-k5GN>
zT5S9^7TvZZjlGS-Za7e3a)J_Sa(jEDdc|c<s#5>e>qThQdg8E25BKA0K1D;~2U?t7
zbU;Q$!ILu at ZHR?s?~E$TlBRi=U~e0$;wrb?II39k3PRWBK2JXB6d10U)AJdp!M{@6
z`*@z!(j}TH^;(-amUal;I&a%TJjJJ({6&80TVCWyn(!XZIGZJms!l;PVVQ(kea}Wu
zv+%(UfdL-llo>uD<)5UZ-jWw^jU0zU^36+@(pD?H9wOQLEZzgn%AF93ADA6<myW_1
z*5A_=ibzU>Ak57mU0428O%1A4naWX>J~aW28Tm~kVVXft4m}H=Y_?bL^=tTqiMjDX
z(`NYQVP1qy%mu^l^F?p=I6GMiPEW at u6mV_QT%UZ{1rn0BqeuO}-i at WXSuv@XF>_(K
zavRhlzstL-gGHea6o at 8K^%Yx%Y%;)^y52IiqzIXZ&{i4<*^9SHdX-OKO(|@Jo at 2CQ
ze^9X*u7&&OIBaz97BGFDo=<c4Bn{aMNcHPY^}8j|qsqGpW-!@xq0 at lp`VK~ScglQr
zozM6{tf{Xad<u$JnmSRvc^D%%Iz8?R<*nG|Q=dU7$w~1<<?&YPDCabP{%zI>s4`X#
z%W5x^$wuH;`g)Xmk?#m*=;!J7nE5^jQ;zgK524w%TZ;}<Oq6~Nj;NxTm8%^4dw0yV
zQbJ6QFh*}3Zm{Lk0;Nv6uI3B)PyN{9%bgUe)~_Bk=<8IbhO2$1KR03-BBj5*2mH^>
zyR)HrFP*8~Ly4s%qXrjbRl3HLE6OU!<S{CL=fgD=j3-3ed+X#~>phJ$Es16EKcj*S
zZS72_KaCEmVNa;2|JKu7#OT3(JY{xG)ZLHEkEp?P!}>GdcB=&$H`J6OhrQWoCG1b@
zU=M4biC2WbV8)g#YxQ`zhY8Ztl*8%4IZHM`%l1J1Xe>2R8GJgw-{;!>FsfO#|4qR4
z1Z`A8ptmIF3u at +c9@KR$OkAHTB>iTrNvyB=<iwJCYYr&Gdl&7dC8OoaFs%|V-{$VA
z5 at 4s&%lCI|UxZ-0I;-n(<4Igo)rwRcAB0&xE{>hUd5~1WwXm|akH{1r$|+1eTb}j4
zJj;yOP5HI<GUgwZQiLRZ;z?K=0=22&Do24P2ztgt^&LrAt?6&m$mOpHnLCi$%rGBM
z+h)&3O94*Fss5VzKCC{nJ1wl6>hrXtbG^J5huC|jHuw8Pm5`J>l^8D}y`&>7F|f}^
zyp_gVzekJtOqJ}MJVO)xYY!Tx%<gMit;$-*{kamfK-hwSxv>3AH)-anrnE?Eq={>}
z?N0FKZ_LaF?wmwD6u2|mB|Om(fOxO+u?xNnB}(_*l0ya}-Hp$0Y3T>fZ)C-K?rjH!
zszp|Fb=~Hlro{C3{cNeL^7J_g`-z9~5mQ2~yO)yn;RLCDeI7ZCeK^57C=7!h|7xU6
zq#mWD;#K at oGml0!uu5@#)tGfcKQ3k{!5R$sV2qs<k`{ix0vwH%Be3X?yI0A7__htW
zTGFiJg^R59?FNOytZ-ehbBF%TqiA1nEL~}^W%AinubICV#A at +jK7RmwOhhr?Hp4<*
zX4krhTaRLAfA_^)v-(xDOFPCYzgNoOsn}}nI{5fa@(Mf;un>%2#68ty$0L6_6SI(y
zO^f5RK{QgxVFXR?*T(EHPySw5tNQP)>n#0`!!?Uos>JMzitLzHZ_yl5{}Kw4UY!o6
zZ(q%Bn#1{RD)ejALGuFK2Ka4%+88uca<ti7t64OFM5UB9v!Y^gf?;$~Ys4*76(0R>
zHUFr^uf78XYrF;MHM`4D%!P(#JD3W*ngaYY2WuE<XV#Hyc7h*NOhF_W&GAI_W?|)}
z4G$TAy!z)L;zTzweIBY>R2(j5yDZF$bpZSjhYcc#oI5$^_DXax{Ww%(sk{E34!Wt1
z16FqGSh>ve at XW9qoZxVqzr#XP1aao<yVU1mr(&e?RlXl?*=OgRtarB=6xtD4-4Z0l
zv=l)6rCbY$XCrTr*VD|KcudWY&{X!3&3}+eITH55Vz6zWN4 at EnNoa(r`o#q$a@?e?
zFvj4S=<iN|lE}Y9FTR$=DR3~I#%*>p0P<2n4}<<>{`o})mS}5(9^Ygz0;{!~Kc7&K
zI{PSqNb*1Wxdr8bUvnNg>n+Uw!BhQj#LpF5q`@o7<Dve{l>=4w&R_1$ZZe5gn0syR
z*XkWqK at gLqSN{njH7>vw_B#SuXHz5X!)C6d9Wiy}uPb1*hL<Z;?41a#0uaNqARH$w
z3yS!*Vq7CuOk?6XZ{RoZ#6L-<2KL1Yl#I#P&d>LuAOBwl45GkQnKgEuUg**xwuBEX
zh?WiVb3>#=(CcL#-L%;Rb{v)vZ>7sf*DcP6hfQn)(m=T?Ml$*t`Fxu(78^8P0Kr>i
ze93*p-ozLrLE_HEn;mIMK5aYLhyiT#m2Bc3cf#df?erD5=yhn3evN0{ysjSaY7si`
zLFzx9$pSzF_QS9<Ohk+3NLP40%EAVG1h{B3V4T7NrTp3 at hluLUtLV2evZ<yWq4Gr-
z=PaEOFCR_(P<~(&7-J}<WeJGQzaf$C^Ydw~futrmh7!~Jp_5i57!3xRmf+oUiUiFf
zyNaUX%<eCKp_yPdNb?$p4faDQ$EH&~Of9ORuR1F!_(DdpYFkQ`7xDxuXXg5U$;P<P
ztEGR=%r(vNhZKD4px}O%Tt3cD=8<SE$L{&&zZAc++k6q8HilIzKi{UtNbB at Gv^#P>
zTYvx6A_Pm1{D;cZO=D6M>Q1S+Am9woL5f|^y&uRlwld<{W3XlESLcK at vo--i_&S2!
z>No#KU_^#Loo(<S6%j3eN5+yd)&C$25Z5ciSdM^sfWi~3!@zMtBtj$Q-t{P6``yKI
z&1#A at Tjhd;ptr?b&lTL0w{p(_)yD>sx5}LI|EyqW!8dRU&eL!%o&6DPiARz%I7v3L
zu!@lc>w+eC8EmlH4X1odq&ak4v%1!95mMl#d{f~6e)v?&CmB7I+nq+Hb at 3lHCb$}0
zuhL+w=PNbF0vRj>{(_bCjYEQ%>dk6``#fDb96!gwlz7!X4mXQU2aDcr;oVUce%*|j
zEA^hpAUPZ4c+0_t%KJ}XZR=7Le at LG(57lXXpvZ8&M<dN49|o{yv8S0#a)3&bbBS5u
ziDL>4R^OVe7`4wNU;Gm}4h+B%5QN2PLk4BHtEaCByhwkT^Y{nU&8OlPX;fx(utA1T
z|IMRCf1nywWOnRi;VSoF?(#UvQNUdBOMQaihk0`a?u7ewjYRkP{IrhH3*cOp{++8+
ztV)ESlM4NB1s+38?&zKKM+5-9M~%!pT-I;Z*35RF!RO&(n$<1GO)N<r<UcEmwwz>P
zSdru~oPoA|ZDfQ(AfiPuC6gu<%XyS`Fe-*zURfNN0o>+3p%RtS_sY~L&!oMvbt$%@
zhrR-kw(A!atX at ATj72QWuxqu+enmmaVT1MrqGB|;aD4Rvjs)f5PVUuVtSxbPvEb}0
z^?&R$7ZotIV at a6h_`j%|pD{bcx57Tq*UV1vzkV_B_6bDwhL8-vLzMGvTv+9ifdYt{
zhxim$&w3`zSAPUNPEfy*b(VJp^b!u}Wit&9z2a*dyQJw5u7?MIttt(EnzS?FvZ8MO
z1f at iD+Pq=G1TKK^*|uKlZF~zCQ=?_ccSjFfj;`V)KktisBrLm3#H5w})A0Ug_iKFn
zn|(t-S_fO)>rt<5*pC!2M=!{CV&Z{gwE>QUgb_m=o5?Jv^3}q*UI|Is9;WW%(G6fn
zfZzoOCLpJHS6B>CnOAdd(;>ty2S@$v%cpd0XrPLMHCX0bkToW2-hJLn!uhrc{36_<
zPyDqS$@vi^PN0gB4ol-E{#vq(x^T~ThLV{K!1*fx1O<zfGDzM6PWH8(m)UM5+zr`f
z(z+w6^RCG&@O1%U9qL;o9U%c=>j);6mUkm_;L0K%kjGwm`ZWg0^ZwY5r2!qQj>Ff4
z%)k)Pd|NISDHf at D&XjoE^HgPhaVy#{;)|^M6B7y6n1cz{J}08WL_2rG>?fb5LnMv_
zM2|DvVgw+X)x7E$FWDftAi&uI>OpH7WI at zqH+$y9Y{_FN7U$lj$X;Y^u3!h82mmuQ
z06Qq~FgUo$!E|e|YR(fX$G-etUhRe?-rGaM209%Q|K=S05CfPi*?pc3+L$&p at glXS
zuJvhB at -4@FohN(IaxmP0+FgYGA791hX>;F9V*8kgKkI9 at ro0ICAj?4qpMWI*3<3q#
zoUul6eHa3WY+^vD*{+m&2Fm{AZUA*NuH5zY)54RHGy?E39|n5pu9h~MQyw#9q=ccJ
zAh6I{!sY{4V{>UFAVx at Gf@A%qw~FS!pwgPvA;CG?pd at V5qGzitrCGcnKg<u$zVj+u
zh^!hb91Y%e<8}OKsp~FZSU7}>AnUl>*B%Xx!DePixKjZcX#$8T%(lr9b&x)Q{17qQ
zcd94FK8-y8>GH*4fE?xl=hPLnQ~tNtm|xoVSK!oe6GV%PN^`Xod+t{5@)O9Su;mgK
z05GD)p2IzCEGWxi-!RR1D>c=sArfP`TOYG(Fbd*!P98Y{GN%AwISdPu0#FaQ^7ST0
zEc92o0W5#LeSRMI(nC8nMJi4Ou(6m!6t^3k_Sf^-9y5U264bFtb at g3R!K~mDKn~+Y
z%SakvXZQdGkt0dOI4yE8{a*HCkUqn1vK)uyU*#104{R`<;Tw=QU}XEZtZbeh0T{}`
z0?1%`sXkmkA5Gnwq2R{TPACG%G5@@GCMI7sot>vM{d5jROikc@#rzHw^SGa|L3*Jy
z9}wn800_kbw2`LcVaMPG?hhiUw*6 at YE5)Qfb)^AKiOdH?{zE|S$pLuqVC;VP4-irC
z=WN1G7=o;-6HJ|U6Xf;Z$#!jmA7ZjWcmSs+glWBcfVJ&TNq^k^@LfY|3VUZKiw2<b
zA!o`bGhMA1A#{2}u_0v|MXMjPcvJWO0vk-(pJ1J2JAV$b$2{XvX~Os;_7o5DuY at Z^
z1y41;1Q^&g&K72jJp$Eee*BG0K5JTfNgRALrWc!r@}<Un9!XoI_5_~2??TijzVQhr
z^g$OP<ZS5f+&2+%D1-J8+>;?N59qI#vpum;m&ZNm8z3fHv_lKsI=}FzvD8INjfA#?
zq7CzHzmQ0NqDk(NAi>*AU4*~3A!@=zW1{2yGWFzODz3{PS?EO#h-?U2rul0u$EK%p
zT0C?Go?820PHB05bg91C*xFg7!GmGO%i2E0?<I+)OzuF0o3m}q9zUKW#3k8ihsfA}
z%iIDwKFXfxbxHoN!Wl{$93KwT>p%5+RDXfnGOG6}EwYU%z2VcUgN3MVS8t+1T+Q>i
zD<Fxxpq at PZqpSD~`-!IK)>>??4|}as-?)JJ!;s7GG=Xlot-Re%C0h23y5;IC at Q^0k
z?u*M>ic*INpyx=PkDhI9p;Y+CgCHgo^|-$@j-eS?fXn1mCdSHPqaYW#l_jiQvsiR_
z7 at wMLGq8GK|GK{z!Ll3Vw6*M~cn)jS30zi{Fo8K!U!i|S9 at eAGzlL3N9Ib@wNe07c
zzW=LDc{!%{0R1vc5`c+8>7_|no~-@&t6ystQQIgt+%|WMujy=RRR)i&Xfdec$Qmnk
zn2w8*D*C67_4 at aT{m6wqIAyO`>XuETPB=boFYa)E!4Fwpjv)AIwSIeD>WbWfh)9UN
zufr7Nv=mBiXGv5)x$EN)qp9IfQ^X=*f~VBGnxYO_#XV#OQhJ-*<QDE|V@|q*vbij;
zOutiTp;KIgj>0>0l;cT0Igh+}`aN>Uwa3B8^Z04RT at Dsk7zPR|Wnaa3EY402pjcOX
z&Op!)mZcApvZp+Ia%tg8NTlt%cGg2*&wWhI{$~#!&2y{)7kjR2SD>9uuh=jwq7e at l
z)Jt>l{DXzxWjUpA3drB3hgjn=0C0**NAG^dl#bBo{q|gfIgwYHJw5cLn~LF+`4Wk9
zDq!{`MwFukW>f|)Sj%*|MSG*y6+0$SPVo=a9w4<uANml#UJ$l}G_xzCu!cwGK at kD_
z at nRnFt>!?eIzi=7NA!s4?<EyQ6=L_t8q2$0 at Hu^&179oem&tUiQh6VK+uTnoZ%h@`
zCco!00*grj8G=mk*zFtU%kz#F!0%uWudFdF=SSI9Ma!RPUt-5a09}#skVTc*mj$)z
zGp~u50OYF{*F_Y>v-BFQUzDxzauNl!qCWKe_Rg9=ZEi7s)jh5sqX1*!p(oov?QbsS
z(h~uCLqUul3GJAP0D_tI(g2!C!C_9yaWxE{Y^#7Bbz-An*aCQo?#GW+0ckn|aKBhA
zauO&{wmB+y?IBK(P`xSBT?Cp+g>m41p=<66gnE2He<}#mi!WYl5&*ha;A1g%)~QiF
zUZC8Y0=Q9p)c;2WD-AE}Z9DlfV9L)#E at soJ{*}iHgY}8oAV3{1hX_!_2G)Q0|NSMd
z;?*+Cc37_LIb(ABlTtA>ar0%q^_qKPKVYjcxB3DV{h^x at xI&+NnJE9h59|z&XWp0P
zk$`--Zi^de)_&Ki$2cN-Dp<_@&6-Et^AC-u7Kj9ZQIdsn8eO?{vF at Q*xtGqR6~W(X
z7wTXvyB)HJzoorsqFGFZSB>F2KOPc>KHbP8!phC-)JyTNS-0|t+d{oYmAC|7xIG51
z0+0?%XD-9*Z{o=Uxl{!Gi|+fHA7A~&t%^%A(jIwYgMNPWbw!8g8TW+E^)lUA;d1?s
zsU3&PSdm(I+_Ru}tv$m at 5EAei82k)oa~m+*Y%DvP>7u-RT4Fw5;NL6$0BC;MD#8l)
z9b*?kk)qG=t4tpheRtrWWD(QqI<mgSir|m_-i>tnFgw|TxiC-XVn`Bp(Db0mi^?Kg
z(9azkC=hVHa(H0CPvou>^YLoq;CS2|(-VRV6Np`-9e2Y61dY*g-MyRT9B?g|KvyjF
z at L15&d9Pk&!9{QJeU6aJM<c!JIzMOZ?EF^lqo8G}z)<|-Hy;!)Cy%yZKwl(z!_%z+
zu1Dx$P=m#zr|)@J15lkn6GhXaZc5zTo0Sz;rS9=OqEbZf5)6@@;d*UbB>NQ2xYSJ-
z68JUv0ATvWf_&^)zCUz%Y!_(pMLi<l^@POEH7eZxm6|9%qOg#sBw<L0@#UmTFBOB>
z4hX+Pl-)!Ymnh*h7r&&pf{NBQq at t#q9S;7LOXzsuG%jQA4#QW*n*6co(RfR=AP3EX
zcT6_FKkxZlF1`3W+rx*ROdWDnK@;+HTn_wb_~b-;_LpE;9>1Hbzevb-*|_P-uA`wg
zs1e&L&hk2XM&wKk=zLU_$LQu9SUI%W6g~z6rEOfQTe3jI-S%lRfpxL3Eh1=E>IGw<
z6&~QdaQT$G at s#%fKZ}J<xxNf^E<El{5s(`(f+BF~4zJH?(91)UQv&P92bzzfG38bY
zWi}2!J{^bX{CwQ;Gjj}G=!rGI*8_pbRGB|Pw_f at LXo2sm{8|y$>_qj}462Ky)Sojw
z?shYyW}5Aow1Y_+_OYnGj;5-P7_lB<FzIUYX_x+QEkJI=XQ9;848g#y>D3LRTINP$
ze(W!J15-O=t(+o;zzSI<%QpC2LP-a1s8|Jcj0Mxs`||9IPnScKRx&=R$QrrFeNk(H
z1-g=wBdR0df9mI!{}pNI=5Aq!#4K4^SwPz8sT&_yeF&9t^3 at -o2`ylm$;iuITw)s;
z?8Xf``n$In8js&dGH<U;DPjlVQ7Z9<-7_7Yl7D`mUGk!S?_Y(Fl-r_!T at auGar>+_
zMGn#2xL1;ObA->sMZq(Tf<?3Ku(8?Mm$yBKZwoO)Nfh>Zf83tkSnmpHRqS at z;=3)d
zVBzX>C4lkEf$q=7k5qAgsVe&byR4$C)Az)@=VJ5QYv_c#nep(;zyrj6E4VD497fqs
zbAgZ+6f4UuF8l<T>}HO-*=>Q``K!LIk%4li5L{KBJST1=mAil#+rUWgHYjx>I{ZjZ
zc6vtUc*QUH+8SwD4kpAWQBI9-5t`!3z}wJLELF0i3uGd&Qkx>|U*`LJ*@iygH|^9&
zanMxSdDuTuZ$6b^T?XKY|Mnmc0_3IdESGK8!k6z!NPD=j953P{<fH6f+P46*6r9EX
zXyF6VpG5o)=Z^`@qdu9|xk=lo!y=d~{ZR{n^_sNsib!6Q<dvM;wS`;oebLPnHDQX4
zqr--kpjhe!aWjBN36JmBAg8^%=Pm|k0W0)();F8@*30<+Q`}odMfHC1qcqYDLwAY9
z07^GV3J6L`w+u)(3?R}aLw86?cOxa8f-=%Wr!aKG|9pS{`|iHFukM?(*34PYIeYEr
z*?WI>p88}ZNNWX^q)UoNTA)- at RmU14sP`Xtk at X=_=Sr at 7Co&cRIYo07CL8p<qz!sZ
z_o<{9wdUXO`S at w3Hk^)#ek4%GYWdaG;w!~)fRBA7H3JZfb;pyxbOmR{a-P)AA37;H
zCNBMW9~stHD>nZYLJ^l}ys4KvC3r;=Vq4zScK4#=QSmkh#S%trZ-8LmzY+e6a^H at A
z>N7wK2WDjad!rb8T}=Gr;34-$(G-s|zsK<Ss<G5K|KtZv%I5VzW%drEG>cV;@7v<+
z$_a_;wbLPXH;pcb>3 at yd)x$%n(QcBd+!C7iH?Gn^O~~Uuei+L~76i&=sTk{oeUAJ0
z1ZFUB?BxN$<XvSN(nOV%K}Hwq@=cSboh=NX9GEF;q*W(<I!!oRJ6}{9j;5MetPY_X
zImx?l>ul at ro&cK2`LIicVLL<#<V0>$sPk at DgJ~{n3hTdKhXT!S2lrND9{#fN%JC!D
zTPa#G`Uf2!2ET#;%?b`ss&s2R9McLoIVQv=?Ox;$A>=K(yGN?nd$A^WfF`??ZQt1u
zjs^Dh7bxHzlO{Fxxolt-n8e7i9>EOZ?2xtgo&5D;?G_ at S59hFs9{R!OVq2+dRA4?;
zX+mZ)V)j!g>2kpZub`vA(OY{XesL$-zM&VMs^IDaT=tl;v+$Q_{G*umI?8h^K<n>b
z>Gq2xJ&-MaD9LKyZy6iyZdH2GsyYqP-_<OMmcWbwao at ukdw0_NE*d`Z*~Ksd#SzQ;
z7g(L}wGTt}L~CJnwdNG}-tQd6x^Rqr<28IF=kygv^B^+?CP at g$1qx6QP<SLGhmngQ
zaqb&FUTX<LT)Td+7@~IZ(>2_8pBy1&>ir7h`lnbYtQdiRLG5DGIiX_hbr^;P9~JNV
zuE1U%&CKzR$pjn61aOL$O%;}WZ^=l0=n=#rsVyV+E@{^L%%0RlJO<I6ugkO*^r`Vb
zng5(3rZUapx(lKI^bb`ZBeKCxKoO4>8s6$MVp!i)6#z)I{i@^&CG~$W<bVI33V_zb
zGLQlweC{X`8KC_H2EdvB*AL)C%E!|sJ$t@*r6Qb|<lrw9PQA2KAqM+>pG;<P-Q)AY
z$_03j>QBb8wRtUe#Tn*qM|)s2f{k5&S68UA1Nh5ONe(H4j5cv3PzkiMIZM-z^U}&W
zi#b4}MFeM>rt*sI-ONuzmVozT3b)*(FN^eSqR1sr{q3P-ox;*9l%<3TvB_VyW*=i)
z*u(EFCA--Wx!y&Kn4}zg{dYwb2V>1rq>Zx-NkT-`%z{|w$q at zSK%k*F<2FM7`qn$5
z<rqJEvd+QRXWeg}@ouR8?}EJm8!He&qT`Hs9VUqE<MrLCb9yV|BVQ2Jz~=gEwZa?@
z9T{^y#c|PcRxSTGRe!Orn#zM&bFalx7n at 7i@JOk3mi!ti%P9Kod$P=R9>xoh4B4w=
znEChR#Sl+VMD4lv5AK3(#$EK3vA!&`-s}OvjM+}<Y=1%gy_CC`PhB)Cw`%bfEh=TV
zlmu+3ItOHEc|arU=jX9m%%}!ebYIKnnx3n_+k?zBB&<G&nvIH7@$?#^Za=bKic_xv
z_<~!6-r-%cNA3 at xmyJI@?XK0j3gf-gFWEwkt9{VlxwX9h&neS8#;UXeZqb{%k2X<D
zY3z&`-6G*j;9iYyZ!mf_0P}5>E0lM{*~Zcbs6S-4e%IS~xKy8kT=EdsaN1)Mw)^&3
zdK<C$D!b4K8AB-Ei>MBLwu!8=Qv1v=F3y2y9$iG+Rm26lqgl20>z4w1BiUYm4tZI`
z*1)Q#4d%svQ!=*R2&^;_00Rdw{^q60q;>Xc&g0s2j{J(D2-$HCkxR3c*%=1!dQjbO
zv%Y&j7K6fYVLbc4 at gzR0L3a?)b+jVn at r2#i=@7qle=oR&_A9>IQ|vgDzoyBe-|MEs
zQT4_++uy at P-v?4_+|9qt_+`X>E5iB22$-<ZS)Dw7&UpK(m4Mm&a|R7*l2}aFltd$b
zckYmK6p}(U)H}Q<mw&4cz@)`Xt>}Ed?>c*B52d*Jy#I*R?puip8j>dG{d$LCg`{;k
z6F9- at _QSmlB)IENZJxpHPjmlV>WLxdeFaTFE5BOe&m#{>zby5Md<=M!!1q=Ec{s;V
z>zmESy(+0m%0w^5;dP^>i2r2#rN&V;{gm!7``HK1o}eU)We`cmEi;>Vdu1q_owGme
zUdl25{+}c?sQ-f(9NN}R+dTGQdY*eF<YN~Z!1t|mWQRO<XDGV#c96+H=CyQaUc`=5
zDYGbWjMD)dKb5oj_r?aOrgtio47$^7-IC`rk(Z3Hy<o#u&UwCmBf9tE;pVtZ(VW^f
z&4VWehOxzZoU{`&r-IcIOO?NqvEG%;#o;8j+(yKK-QxPhT(>c9yZ(|=H8f_S|F81q
z!>`#+!%f*4;}seCT(iJxV|`Dpm4tnYwdIcd7S2})pbfcssrTgi=m**)<X~c_AbBam
z-%tH9v6JgRWDwJep3L<;NFqUyy~`%=;oXt*a=Ba1#DThhvHGx-AEY+f-^miWxxIK5
zeHE~%1fwlh$=rMa{*nNMoo#od#Y!krt3QeY(qXE-Tt3|bnY>b`OmclmoQM<thjRz=
zW<Sy##dv|)rQU_JYpZ;s_u%Lc*u`k%Oe^VK7SMQ*oZy6~r)H!Q98p7HTq>j};2ai<
zEiP)6Flk`&0<=Z_skK5M;pi3E5uFe0SDrqTrn7_meFxwlVhoP>W at WIe_VinX?WnK(
zXoIVt45_NO1=e`DK5)Y*4gU7<jP`OEW?zXMKKry`*oGnaZ(1G*gEv`zqpR42`8B*(
zphm|ymO^RG&!JO(6DkA at m!Pqu<D&si+ZDxU&PaaPcGo0 at oZ`H7pgSWg6i4HI9xtTL
zSF>&HnNpWS at 7VQ^o#d-x%M652^+5D+ox=^&u|LLA1{03rvhj?O_^}O{%+%RZHBNr+
zj`1p_eGg4l?t8LF2zEEB=dJA6BXSzM)<*xxbDL_l*}X$^#|UltsdMt>7XSfbY+L6Q
z)Aarz_g(Yx*L+--6%~qSGF7P at k<1<QXXps*n$xbv>4b0jSL+~8odn75jDvRF%Et|W
zN-!(;IOngtkWXv=G7YD`IX}pG*K^-I!B>1E#NImvUN3uuvlI%WQtzSRs??#P$zjmu
zM{=1ezI|JhM?euDSLl+AXL at 1D&lPQn%@ZA(pU=W#Laa!x=$B at Cc{QY_!NI00C?qyw
z-8CgNHIkj}eyV<F^REkT`hny(aM)+}N6OfG&cG$Yzk!Ms`YKj>bI;*eV*c&Y>PgGj
zYO>zD!CK2?f~#rEZHbiBHD(HKmnHGAUn^ADYO~NChFux)orMP0^NaD3vr1aI3LSy6
z8+HNqn0^AP(SO|TY;7+&F|gE_L<x=#!UP>?qxkRlnEoWlh)=y>P*e}Cd*x$R7J`{O
zJ7*%`?Yrq7WI%b?jh}}L(hRGgp at ZJr-UMB|9+4Tx`B?nfh~;g`yV}*W7_PIREBat(
z$}NowSP<|w(NKSE<##opM9&{f%_c7Y>_Lx4E~_c@?0!qNZ*1AVG}x4~;Q at V&zwZBN
z*^WK?Budr|GvokBY%&SGqb*gC2$H{?K7rkmj*`%hXB<qwI5U4!gqnjA0v)kb3MKLO
z!nobvwgwjqAls!MO}80KP_%-$0^_!3Hy?D?Lo>}jyBqrg)%cE23oH#>)%3g+#!zEI
zb!Y_8cp;G&^7_Fh$li4EWC)|wdif$7v=Q9|^S<2Da+#}wWgAyn3T&~jWV_ILw5pGP
zI^Y9;u1m^a<!XBh$NMaUg8JHoe=(suBDddq^zW)aJ87qN<ao5eYg^whZiBpT_nXee
zj28&zsPmN!<{F|%i)~@FPX~;}52u{1H#olh922AWte(nRzJVg2(%^Svd7Bqzb$Tla
zJsX7kyvJ#zj2 at qyNvG?j#~JX at A9>8mU3EA4vsqrl{QG&n;_vecff=Cm;hoQe3WTfB
zomZ&Duz49I{Uu_dA6OP$st<vx%#h8lKmq(}+Ks#hNujfcp_DXeXR1Y14>nQ1|LQPf
zq+Ix;fv{%Ucc at sgvz^Zs?X|}%$+N_Jx$QltkL(r;pjNjpoAkN<TH6qEFsuf2o%la~
z!nAiVu1{rV(k|A#b=quZ2}dv;waI9Hf6c&26d#YF3 at HdKzFaLb6nN7A+exM=rg}P5
zy+^8Hh{N86i@%3w(-8UjHiz>D!b_|8LxvO1rHd;~jYB3F&*$j!zI1oTQ|5yP@(=%}
z*u!laez<T2-qSw07&u_TKK%!ZEpO_K8Evy_o|)f!-$1`cvG!*QV_2tjEbNw4yl8o`
zU**x&_0 at m-A-<A3JS(<%a}BK=pU63jVKZgaH+_B1FRh!a%yxTi{q{<TRw;-+`R{Ze
z7UmlUTv~E3v at n8_xYUvoQt!svkU}oC@`CMBE;Y5n|9eGeh_=J;#P|9aC;2s>3o|Y=
zZ=Jf}4~&9+#lAuRZE~{Wgx3GZYYpON5rP^`ii&r5V)P}g?1n-T%qRYx3v*O2;MFKh
z?|Vq5S?`(tWdxVnlHqX^O3m9d9v|UTUD8BPQ#>Ti%kIy1gf2fJB+;aUME}npgLWb)
ztNy$SZ~M|W|F<B9i2F%Smo&PmC&4u4zctrLhK2L at q!Hf8z4|x@=t+-V5W4A!QFtLr
zM~HG4W#Y54n}G!89 at 82n>w(NS$h8(1<X5;_GTJ6M;MLZwu`CsD0zb7a8^VW|l at 3x+
zfgYpRd)ZwuTIXWMxV!oXVxuPAKvEVnb#!W^!jhk87C?;^u+tRjB7KMY<Bs}q0nPui
zzx)C at tO!=xvd?{-hG2qSpS8-z at keHwNuJC<0G;G<a2<Ky`@p}{ug2WRG}F7rX{Dkj
z>8C&|nZA{9LANod>qFrhB{ouk_}8b8?Whu6siX+lEA4W{?ZB<s{Etq~=WK!z2|Xd9
zsRytB*}gwL&we1v3tWJZM1^POQC%NOBJdF+HN`0B5=0JqxHRTlxGpCd+U-Rx?WBo;
zk2)wp$6~TA*aZHU{uP|G at hG9l`43%`u*k9-->@k at Oe1um&QzeF>;*lQvEqFa338Kn
z#X;@eB_sZd>3LT1ll^g{bw6J|t+d1_ggGiYGcWD>kTRdlMTkLvp34Yh(wVoVLjP1p
z)v|%V^4ag7HRj_IEA~-+B#4&?@_<XLngKRJ2dL>rLj-c(E?B%Lu!p0j2qUx2pR9v>
zhkI=sTVNM+IGrkp*Mbg98Y^?7A at F2grjs&xm;B5qczww33Waq<AOXdWHI#)4-4m6J
z2<M{%be`1yGFOjCQ*1&xiz8z9j|bL4iyw;})mKyvEa}r0wq&}(?KJ!ALlOk-)2fMe
z`nv4P{Pv&^EHMpdKlkJ4uw!#x<=xSgat at kn6oRc#_jqZip_96ur~CI-{02XYFN^OC
zJ=7m)K5V=tT|xWs6|D_&GEeX7GcF%9iPV1V1-aAJQrp{AJq$vmq9VZ at 6Gk1_J+9f&
zDwErx)d%q>dKs_}jZ<1UHWD-5 at 8$unsr6i=7{ixwJ8|#xHbj-Wbc=s}&dfU{np@~s
zNh(i;8^I!nLdZhYJ1Gk{317;vXaA9HhqJ&i;ht&ec_`jKRZ1iD4p24GieJP0E%#KS
zv#!~5rg(4N;xqF|<1@|pTur=bYEj}IVYt9zI;YFQ!Jv at b_>JF4qez$#;NrRHp$~zq
z;!liJU?&{)lt(82Ed~w`>7>q6b7JXp7(U#S2!%BSHGbpWnNb2v3V0buWfM=LAx2f_
z9PCSHEL#-ODe$oWZm>aRN1eFadKe$t?9bE4%Wk+6wa;R5(!LHGe(T0ip3sT{itS9S
zG-i0;t-Y*1IKpO-`_}#CfB(}J#im}~4GiM-=n3Dd+XIw+tDXCVriW_hSH({KYnNY4
z`%Jg+gjz at AeN-G(uoLk7THyJ=d>BP1K<<Tbc^C=Y^9nVg at RwO1pvDxfux6b9OhA}b
z#~X$#6C%1O3+VtoMoI$t$Ba<Oj{x{e5wyC>ln*d{qHFG(_3H_(k?5<C=E3w0KmsaT
ztM3SrygJvis!RYWmFc+m1WSmfuWUPn`8gY+M*qY at rZHo2aR$>lWYP1n1iL*b1cr?K
z1rp%&=;vsfry^k~AQw72$$GYrtU>OrJpzO8&@<6EnIZL+XwZ7Sv}SxIR-o<*r28A>
zo&>gK*3tQnUEgWrUj#%G20<bT6LWPvII>rr`)^$7@}IkWkdq1qmvn(`1qG<0<_=Kf
zLOuku52lO6fqC)vPm&1Y?qTFs8UzRea}j|hqdSu?R+<=(M6GnYc2zl)8&+ at 7;+y7j
zldwm)6E;K at 5;<I?;GQDeaL+jKKnRJf76KJP5BV2TYc&(h6I?LN)d;DQf|=34NPx!@
zTWPSHb0Djmnjvf(=(Tgz&2uXR=ct3UR+9-Q%y}3K)K-}TK0jDu(Y#QJw$41w&>hex
zs+!39;)twAfKepsvUvIENDXO-in#Epx?n6A>zaJHb}l~N<w<n2pFmpzdGIOrBY_5*
zX3Jc4)SBxKN>*i49ZeaUX#6Y{2wT|O#M{EO#x9l`#Tdt<agO2D;5o(uYAFk(4wRqK
z<mEps_EF^|I&p46<g}dG5RieJRuC7-z;!kHEi>b-MhvkbBuJK})dDPiWFo6?70W+(
zMzQu1!FkGjF#yt~1fiW@*0kXZfcEz7V=4!9 at P-=!ZLoG>+GB5}5!Jb`qW6EP&O?7{
zn1j+acQeoYdJxf`@9wa-?~V^LiKmc#m{wt;N|2&1!)dI&?Tw-ya$P`KMOik6KM2en
zfUG`Y7#TwDA`T at O{{~kMknZYBO3$d&fVWxAKR0<<R?@(z0WLr5_RR?=r+>C=Mw<SN
z92-kfV%4Yv{TeN at X;1u_C}!((fa)I4<&5Fod$RbA<dObjKeU>NquM#BLsbsm;Y9CE
z4NBVf+DQ^%^)?F$YbA at K$jr%M at Czo=2b%#>HcS?{0VIw2kJ_VE?Dy>D6SdSOtYjrM
zvjH`!&4<{ObQ!!b)c;mu3BG+~j0IDnw4j->a-`EA1n>J!3xNKHdMxmO*V~UcHUsZk
zx~b{#-Uq+&{hA1$lGpjRoo0L}YwL>gWPO^TFvD4mt%ky`5YN9gg^E`!T|cO(VF2-F
z`7V?b2gXdT&B6r)ivtNp!Zt*UEn9yw6ul(o at x6V)CgA`b8BohF0COOfKBB)v8%6DA
zdXVIik6$Iwc-Haytk%jcPNv316j=r?`Dj{Q?7~XgOOUX(lrnrr&Exy{f=$Q)s`{nr
zQVU^+z<;V<4bks^Tp<wKdT;KBV0`LP!Ly!bt%;R&8(0w at OrDH5C}yiZc*MlVIP#$5
zY=M*nd>*HYPkFUDWyj3@>s=aKKgeB5P`|;Zs1S27JyRtUoi1lzkfzM4Y9fs$@Nvip
zrPHaZ3oKKeQ7#%UM3Ipem>Kl2>Ug5%YK+#{G{<*-+(ABa!b7-pD041m&Zx6%`T42U
zOJ$_qZ*IZq=EfL?32b_TYY&OFwaC!5%pn~8YBP=aNh6Uq7<CZD>z66=Nfrh>p4!8C
zOzk1-sbCK5p#Pe<nWaETk649c_JDK=Ro#6B-p3IE$5ZVd6VH}e=+)pCC2u7pr`QJw
z{O-yV%M|NV{T%ciil3?C^U=ooxyRI1xE2N7P#Xn^pwZ35TTXNGq<b~#E91|D#Ap0Q
zM+j43It0V at A0z+3TqRC0%?&&A+`=D~+3n}%CEyad;Xvierh}@cgE;V3ELe*bXZiuJ
z at A`fz`giQzJ1X%hGOI-B?=<=$?$ji*dzk>K#N;$~SvzwDgb?wyf^DD&HYMt6qLN at h
zIe?T%HyC?bDS*=c_jwTks17WwzI%};Qub9QR9k{K#l<uNwA3Mo*>INf at 6j8g1Ye=Q
zEvgUN+r;3YSqkdN^0)xXZRWtBi9~s9yx`us1;d-?;;H~%#JJ9q<_+dhS@`Mo^NXz!
z#9eTLyW1l>I(flw)o795G~vTvKqU+4c-OQYw5z-O{{WXz)*}Kui^Mvy(%(<Z1djk_
z4_0&iEg>PeV9v;-9*lMWX5|<aFFR-Uml?aaeI9Vv03xHH_MAXu at chz9OArtV=6n%B
zbOrrD9wq>;;$m2hTdA~%Y2Bq;_Pb`QCl+1sJm{_^2LOnfoB00W>oKbk at g$%{&kb~R
z)<q|+RB+XK088#$RVq+0VOlJUEHyXAxkn8s<Q4!6JyX^4<xgmON)`Z25L&+(-vbL1
z!8KEgddX1qK|6LL>?|emql20>fZfTt9?zrkzT*Do_j$p|?P_wRRTTS|B7UPNz|9T%
z-+j@!1tpd9nIX_wFx>AyQ`wEe at LFxP1!<&ZAq&`LytxH#72I(Ft8og`167 at HW<18O
z4N*- at 0HaBWFI4=buo?#;R%H)lsX5qpMB{aFGMX>R>Tk24Ay$g4GVCi$aT+T at zd*Xe
z9ib`X*YHQc_NYmxa;hr<q_?hXg|snb*avkCxxq-`o_5T5s&OuKr8xj46i%1VbIoJh
zs9K3cl^`gC;TxiiD5b2J#IJm+IOnH_wN9en4zG)4K9Wj2d{rvv5Q|URu1hUan9w at G
z_|KG!Bj~I&f@&_<SOGYJGO4it>POZrT3K}dgz13pea!O<Y?_Z<ZNSEtQVXD86Yo~A
z_J}F4$_zjlFq+Y{e0kXn0e~buP0)&Oh^{z->Hv){z213RK|2>1+#L at C0XM~URMx$Q
zT(Nus#!lPTz=%Os+vw_*O at a4MaCE(!JFFDC^}M?~{OMKCWmkZA*1zv{Qt)*#><NA=
zQI1tdS3a$&mfo<Esdhiv7)=GmYuWOZ^i7`#n>`US`WLXz-<W?)8+3nkSZMX{pR#MN
zmVV-|x%debfSC-h5?vqW-8?WkK))-7b4SM#UdpPyd4HluOec-@@H(Ukxgw%n2s&Is
zCxG<n#C@=|J*}S{e>iwoE#<_rM{&9=(uq(u7ew+&XYnhU{JGZ&!*>TGpSje-b@~iX
zB^q0CE+bxe&F=}Pi;oJaswOmri%@x64WxQ}auf at BZX@E$%iUeulhyNZeOTUUtb#3x
zD?z>ePH<dgxW=}Rno)Mc1LWno9r*IOFH7;XdF<BdAmiJvdo0sjZ?VNI`i-Wd`#vUg
ziLqgUghUIqAwTAq-F+J2ZTQ!O_8U#fhd`1po5XVBPr{X^x<!F~V*h=`o_{j$iHL&q
zp=_ytw9eggAZ~CCiGlB*YTzIU5wwCD7Y2O!6Dxfx;ou$@1hl4jGkhyZe&f+)S3uI8
zcF89Z9*v6)X-+N~@eI%DxV&#TZuAqlq9#(>;y(yxxIR2w$}UPYTl>jA5=)d1CAjWB
za_cCg>=+fveRARN at ID@Cbe?!^aNi-~ha2qBlV+W+>+TNAG_zpsKbO<HS5tdU6x=|g
zFm`Lo!!3Czg`(U?<D>lIPzDi~i&ppo$xL11rl~b;>ukZ&--z}DOU;*;oxjqE2$-W>
zx7DeqBWlo1kx39tu=x3o=Few#e&5pXC^wY$2~!N?N3wDExOg*DSNN)*0#G>Lzuy?s
zD%bns>OB at b6P2<y(=70 at 6<&@T+Yn6a?w0==8Wx5>i{~>2p;ohW|0z$h(G-nl$EuB;
z_aIRbDtyX=Z=G&ATpu0{W9K#xV8ZKM%~+OmfQE(Qh4`7qXeVQ=>pgi)mH|#UVY at Fc
zlVL68B}Mhy$pE`KQjj<U2Xw0mCh1By&vpfwKd at GYF7urmVfC<*S&R}*cQV{xl?)Hj
zNn*6f at Sgd`P=>vQE8qngjZv_g=LBubg=Qj`=nZ97)bn~Fx}i at Aj4$YK*Is-;KcW at b
zp`un@@kSXfmTQWhZf9<E#!YMdC6|iQK-ph=;&Ng*-4P0RI92p6>ho0m4b*-Lg?vfJ
zZ+3h+Zt#plt$XGNy34%F^|e2jDZVK!ov?K9aa!N;fxOsICJG9P!hhcg*t&$rm?J3!
zPif<xItjWfaUQ$vf;O$PsfzvZRsN(uAL=XlC-}|!CJ%X=rrm~S>|uM9TLVKHf6)ku
ziG1asloxJ_H;fZ>9Cmh0vB6_P%0Uo1wx}%KY$^6J_s6Z$`9a`S1ITRPMPU;^^h+;)
z<jI92HlA5<U|#R7xB0Q1jv(YW!8Dr`|CENRxkHkLnqr6U1piIcM;&j;`DQ%vWpuNN
zwC!zjs!18C+Y^0{<bT)vKQUOrpQ0UW&Xu|+@$%Fh0GAaxhwd_}+FRDB2>wp(<IQhy
z&f at Vg<!+~#O%f~PmXgHjl0yc^3FyU>+mWk9iilQAYWT9<eTR5z5%*`d8D#$Ymu34S
z=osn)5l?<WsPFZqE{Vm=Zl$LFpNG*UH^YF`BZuP(D)pK9uje0c;Wele2crp!ziNrM
zlICX|olU7S=c1q!HW0*JUO at o$-Your(e=IZwHHq1JO=N++ at fy%4^uAxOLglm`xFoQ
z-<51TraoB7IO+{~O&EIjIGpc8-Rsi>JD at xo8LTqePvRo0Gj8SRL5l4P|MB8>Z2M(}
zh<s^>#ek9MnkcvCLYdy=<UjA+^i`fbMkna;RI<ZV*W^h1JT0Ol&%H(}H{hK9oRJ{Q
zi!RVCi(^J4lVRpc%smmGFUS44M$n5}&*MNG>2w@)zHvvW|5g9Xr$olDC^Z3mi$l(n
zrpF0m1yd^EE|-0HFwT|jW5|alO@<l=rEB-~U$zY9ht?plT<+PQoCbKJLLpS9aX#yw
z{K`m{O|LSnxn-=`>t*_l;$$2VqTZdUimmgm>6|K@)c*8Rg8u-LZS<j8cV{$B;$A$e
zr<L2~1ijX`R5C9?xo4efZJBwxJmemwk&!E$f(hB#ZOZlyp7^&@;Z|QEfoOUNI9$4F
z<3~fK77O;=%wBi1$nC~mKRdqghEEh52Mb0Xe10U-)Xd-d$DY1;d8-IhBVf%l%XLtm
z0BO!s&jf?L?Z_gL1jPp^;QroB?#EdMREVghY-ea$O93J6(~qac^Icl_0zHhh<_iH)
zY!WTww=_f-NhK#FJc-I%xh^*f$a~HV<)|*pMZVS@%(jPi)-z{*Q4`Y!^~JsxEw!*L
znO8l#-k*0~mT{kXR83^>la12OvQ?E?OpGg8+VQ8@*G7i$GlVVjC6ZhbP85Z&2L_ry
zjt;{m128__<QZSB at T|=y7B;B13r}$pML^mk->yCwBRd;mE`}0q^iIT(1xfIDBaHOd
z5IPW(SiNyFsr@{B=B*-a@&bb;ST+fNbIgkOTuQ|6j2o~q!yx)t(W|3~7Q3F{C;5Iz
z{>mRDf at g(YO6Ia!(Vjj_ebq*EAUZlkL12M^*q-tSjg2-JGBZs1Z9*5%;*niUUAR!I
z_j&afZ`+>FDfK^Puj|oKUz_qQw%A!~O5yIN-}5>q2yDE{znbwPWgq+>Mc+S|xb30%
z5ynW3?oVsLQh^-|r^$ST&6fO{kF)4KL;eA^Hk9I%Vql3tP4I}i2uqjK+cGHmp{GQ{
z9*&d`>2m}&D2N1tj5qDx*j(@BP17=Bgz_4YBGiZ6Mv7R3@;CFV7pwmchZFRh8}W&i
zes{<>|I;L~idXy-tz8k_sb3KI*-0xzoO77v{hE-n*HI$WI2d{Zho|uZL6#r78$RGH
zK%KQ$O<S06PM#ccS+eytP!4JlWFj)+iuTfUqbXA4lE5N;T2p=TBghQAotvx)b^ZPe
zE4Lc{8Vo3TczguRBwvw=3(7!#fUh(a#<C;d7PEQ7SXV1(jk$trQ?O|0Ceg`F9a%W(
z#Jr4NaNn%iymqJXox(<L*6jXx?ZfQ1gO at o!%hq<UI*;2DFMddw6rLKr-^AuO-L<dL
zVag6D^eFW1RL8G<$PpAY?0$Vz?e1yk<MTPdLhq)#749*T)jY$_UQ?savwK%|o)!4`
z4WD7N*;$a^ah`iI^@81UG+xJIuU+4plGV>2OVT&yJdIu)pG<J`5eeU$UNb*8XtzEe
zQjO6eacc+?ZkL<L?n+4Mql`W9uLeC_sSjME%b24!{AhPSpO?c7$;{I+7cOVV`fFh>
zfR_CT`aPy(Yq`ANo8A3~c2k|!$yVjX{oOhuzjrF=C;T2z7mTT at WS7nAZb8tU)S0~Y
zPZju<=O?|T4Hg?-8KrcQ_~_(3&mTN1M6h<Wl`SU*hwo^ACwKO|dQ+e0O&@h$P8t&Q
z(v0PX1g`d~r;^>$?<Rc(#@aYvLC%GWUTG|ss_qz68h~(D$PYS>ObKW at z4^;*%ECs%
zA}Q9A|1q0y(NNt|LZ(rRe>yo}p!?sl>Ff6X at BgO!VqO*E33w}QKEyqsE7$FZ<@a{I
zdcQIieB at P%(KLYfQl_{ESdC?{2LksHqPyD#r?sRBe|7clpZ*~xb9 at k{%)dmY$rLvT
zqQ;Nn)W7B_>Adnh3?~&xip~2uUAT3L+1gm;n0F`Y#vJ+a%vw=|ba^Uu*ni|$=Pf6t
zUvrXN%F8UoSQ}>QVjAmzuzp&Uz9fzW-MGUL9|@<UF`u6~-P-le6%KVDeb4v1n<m%C
zEVB`t5c7DkmHx<|dP!vKX at wq<E-2RR1$Fs^=c}pw;@n5OumIVZ(v(#^b+)SY`p4^U
zMlk%qpYk<puuyneYAmVpdN`g9M&KD?E5h_|JCDyQ(HI+QyJGTWtvDx!uJNPu3rTVC
z83Y$Lc>3FV_tJb5lFZGH^$aG|YOA{)c%pa*5c-SF1iyAe_C}|L@!9Oq=H#^7*l4%)
z9GZ$y-R(&&q=pTIZT|<wbhvrfw-<Rm(c3l}$QVY;m<I0$?PcNZb~44t6F*EQ8HI(|
zi&t=!D}q(ajvkpb%uwF at jcTO-3mQ{FQgilunhdzGy4q=Fd_VblCvdGal2mE(2AZ$u
zoXqVvXS?jZa4bo^`D~X!G4!Nlce+4f<Ec#TvCiS|d)aJS$3(+sEJAviWy!DdqIcCO
zCPwNsiedEv&g>pe>}}o+X=*2-n!Ik(6rYY!M`YA%(7G1v;#Y1xU}}8q(Ic+ at mt)Tk
z3i at 3vDMY&pin?PNzP26n=O#aAHha_~FdzE#tMy(BoGw^g#0_;90p~<-v6_85!V&P#
zD2mR0M-hHCwxHqgK5_eaKaLdju~}2cjL!+LW{Fk&)$!N2_GV|}JCtA;i%0Js=}QJt
zHj?{=3BmlCS`Onyitu|LKk+wJqqPVT)iAXh7EfBpyXd{GF`VPK{=4fc-n;uwBbwnE
zXg<?cux!Vt59Qfxr}EMOen_VI*i*>#w?pROciN$-iwabG=F}w)Z4)=Z%d$uU5S1cw
zic!BRCjWIO7GJRR*I{uZ84H$gKxV42hz;=4{(rfuwr;};x#~_A-WjwJPC64*(fU;l
zegH&4er!kP^IiB-?xVr^M(!i=N-keZ%@ID_gWKg}E*Sbe;D(IO%ydEvhypZLuHp(&
z+6InC;s7Dgwm=BcZs}NeDL$asM+J8=K^Lh at P{ec4%9O5{TK3yBT^&Nm+BWCfe8T1v
zpwM%qy8aaXWCYA+v8V^A`i7|Uk)0e2U~ZS?n_mg5T|_05VM-O|H+k9(q(GjODhKBy
zdxA7{mhgJhpUaT0diNQSl&Ty+E>9uP7+v}?r|ZN3pf+&|xHS(n$T6C02kC%r^5^=&
zdIb4)5&|3tJ3`)K<E9+9gp8C<^qF$sjC}obbWnl!+x!h8<_mhp5rj7o(|bU8F3x#-
z;tmawX0;et_;w7 at CgTvDE`)AB at H~>cR~ZmaI-%wqg<$f8UgbgS)AQ~)0=l%vy%!{-
z6sslzs$wR;v>ZjukZ5>KK|$A!0)7O=25&(#RM|ZFWgHDkN)uYDI9|u0M?|A4c6%`7
z3i0lO`0dH+i_h`iszpAJd(+(&iuM&EJq?Wg%Byl65{NYY{MW_brdET9#qq!JN>~8M
zyz!OeD#82siGZb6Ze+h;>xsN*4aGYyp2Tfd=TR%km()l5DL2`ylmXtV$p%{nprsEQ
zO$KkH7#RKN89<y15tkEZ>iYKo?a1fJP{bm;wlsk>1FDl&6!dV7)n)AIr{vKwI*|!k
zXN_umx<&U}<UW<l6drQ0OWDloO8T!i at wN>A#9w=Wy(>@@KD;Q|DKQFQ>=HWd+0n1<
ztMyVh)2inJ$A+TK#z>$LuxQ?YkXJC>-HA%H&MlSy&1j)q9gH-fL$UeFIJfBpweuxC
z<s(N4m`!a{xW3zw6N>47r7XQ2Qc?d(n)qAC3;Ef*a6D at OhdVA)EIIQoUDYo!NHH~>
zU;>Jc?;}t9N at niGMk$bfQ&XERiE at mHkGT3Va{D(=Z at 78+`%H4|Pn at 9<L`0JyF=>?h
z2kV-HLyp8N{c2)5ZNnzM)}RRv0M25`iwnm<mxVM_|JDDQhp4>&Piisp+NNy;#*NT`
zQCU$}{l!kKjCW%+^FPGi*g_3{Za&_yo*{llHwli?sEw>^zpM=6Cw<9!PKCww!3gV>
z*Rh0AR+IL_>9`-uUW~B8w`V|9c#5P3lMUTQJqFdw^E1{p;2x=FeM?yGRA?s9`r`Me
zq1&tY*_%bd;(9GzR4&+9Gdwk?p7%Xkd*kTib-UQK*>KeDgZ7y^wAlx6b-B{E6Hw^)
z&<`JKi(u!^gnF=E+Q=6C<3^4<t=PxCexRwB at _ELwL@Nf at 9#Q;#9C3NWF0)WOg1I$g
z9*t-BiWI%=-XdL?=L{S-Ya;=1UD~o48{t%QyIf-x at c#~XfPF4oB?1EJ$`kx)$?Bm~
zj5svrH4%ce<_QhOhHdsKn``W(#p?1`4O^GXQ!zNt4GXvRBY&NAg1FMKbQu!g{t8Cb
zeAGLt_#l-|7cln3W_E-q7~gSzq8-%y%%HGdL2G_k1;dx}ZacRKCvq^ro2BYWVP*d=
z5jGz`brkJY`X9NoA)&Ia37%~9TeFBWWp-4*OPy9n(at+2;{Zw^ssG9`lvC#GK0i at x
z=)#|TjgJNmB(FZDL4J!dKekuA|8f;ED%}3vz2NbWc2gmnl=BMnE#dV<djkLCEotO;
z!{zVWX@}Q`go5Mv`AKjc(ztR8_9#)F(b8V3gg#Fz^Nm*^3Bzc#-&KSO%NY8%h+k1N
z7^Zc4nHfXLA={odCCb<KCt#aR at L1Z&t!vgF)X+`5*Bh0CwN7b at zH1)#Sn8&q6P<^X
zoAaKC(fLg^#!o5-XCw)yFddDQ3;*s9*;Uni6%ebCh$F~*Q^m$ey}jCFP-8>xb;(G6
zrv95`j=p1H+#P0_ghq$<e63;e8-0Et5ccp6mNJduI!u0%+d7C%>REpB(7#z3OZ595
z7hAf6#AgXY9Svim!#bKeVgf=`{aof1a29fQR3FSdlhpqOPB8P9QGLGp6ma1Tc$wR4
z623d*(YQV|KzP>Ja78QAq4}*fyxl(pQiwH3S1Ex-piE&MwPmBhaQiY0*x<j&`9N83
z^ANZWIeWb1mnrF#EHdG#np&8}C`t`VJJ&az^m%OKh$+qCe^E3y6nX((BGY)(r!t5-
z8YS*$Q0&R5fooaT?%z!Pzp)sw{8$^x$=NgJabr<(`|Q3|=Kq&?1;T?LQJ1icpKaz3
zw->UJtACx>(6ScsXXPxrDQ2NA0l5$Y-)*2O!+M8Vj`BA3 at NIHy9kv10sR(WQm#OOU
e(@NvhCnhon!FXy(V&J=sD5^@Diq-PwpZ^aZ+}n%*
literal 0
HcmV?d00001
diff --git a/doc/publican/sources/images/wayland.png b/doc/publican/sources/images/wayland.png
new file mode 100644
index 0000000000000000000000000000000000000000..c9937928ce9584a660ee10f7092eed2033f6eab8
GIT binary patch
literal 5649
zcmbVQWl$6jum_G3j_#I21j(bNB at QGcJmOG5QsQVhQo0W007a!+=|3QNgw#nRNJt&s
za5U1*<9&S}-_GprY|Zb>Z)ayV&OlF-f{c|64-bz*>$&>Ndylx+FQmlxc5$pH`Q8zF
zt7;jM-pe~uJLG-*z~i}@Hy$4GtN&GetAJm&_emBX2+RlS{?^CO+RGl#&(BZ9$qnvp
zYwck#;_l^;xu?L2hsThprLJP+pS7DEkjB`R-J`51!48lBPI~li;sIFc2@|^M4&xtd
zFaOuD?OY&6JIOPWW}JemY|3yMn=3Ix#n~K>@NfOJ+%C}S=LUgFNWDtIq#fXaU at GsE
zTf=?w{Si%LzmtK3^&5qus{!4%@o}k}-LlHd at v0De*cS+~D?L6F!P$u&cS1tRt91IC
z3wwP=5RWtK$MI33-n`s|5~t at HW0H^lH$x*u(TB{4u~UDcCSFj)&0;v3{QoO^1^&dF
zi+8fa2ZX%^nV9M`@d^FyNS~1eS_v5dby2rM#4&)#WhKDMpfkbNiqdDyDbC^b at dhVo
z+HIHxqmgG04M}9rDag=xv#4$*0;W2bD<Iw~Vu6th0lom>NSLeAQ3kQgxRHpd50X_y
za>boUG?BbWjJN at K&gem#%(iv1<AiSl&<Wo_!oDdQ5bH-E<!JrspK_fCEe`!8Lr{-0
z<C)``hx_{nLVGI7!QsW>sd2DB8Ar<GhGt)QEE)b1(ws0ZhAc`gnzyB6ZCIh<ufui1
z75)o|RpY6SYCqyy!KNw$ll2*Go~&|U25{d|n0NH^T`D=(wCWqnvG|A2J0;&*vFe2V
z!HlzWMzmwO);zCcO-CE7DT=-mj;1Z~q>j?uosqNC(l0VEG6}E{m6m?zTxa9l^a?8s
z=fUrghI9$0l)gK9IW4&U+ at f*o1ulNO>R31`B4uu9vm`dd?`w@|(E`j-5Ku00i(|vg
zsSBlN$m3(9j?~OafM105l0BU(uJ*g7FrlCr+J5R6y-XNjUU=d(nZQEU`wtS4w<{0j
z-8!x9RNQEQN)(5Q_(CPOf|BnDjCJU$K8|x;>eIJvZ~%BjB5H~;&awDi!-nLD@(#Ka
z3};gzd6+jC#TPb%gc*y-W<>^-8{s7YeEaEps)gX}9&8>82TxQ<Iaab39?riP)29BT
zZ81iA09Z7|7$kw(k>q(T8kV1S6mTv^qMrUnfO<fZJhP&uhR at Tvr<CXF>ozg=W`bd(
z1)=VcA4?ow_J~zGE8f!moeeN5D69+leQkji9$t=w<??b=wI40L^_R@%yB|3Uzk?{e
z-~%}u8B73bUD~FuZ=`?Uj+u5yQJTIA+m3_1FASwpy9aSp%^zjn=AR>|z at I-d?6pfI
zl71R8Gld6F44<%I6+ys`fYnH(6o=>j95w>yqD=$m<SQ78LPT%ZPhEgdxL>4_h0pdC
z$gnA;0=7#mr1U|%rUEQI>K4(Cj6NO_4)IG1(MubSKeIH76!0W0!*{>~y>+^UzFiiy
zo1Ze!X(c+;-Ea<U5+vnG$a5ehkPgMRI7*&31^-&~A;k7d>+7L0v?+HM#Ow!6vY7u;
zQ`}@~5Z20L|MH@&^wLrILnt at uPRy=Pp~RYdvLs4-fkwPEu(~Lt8~x*pUb5bTAAQ0l
z$$yXoI~)u6l*@X$5G?t(WwK69Z;Z37w8#_x0C^Zd7ouH1o>rwuo^ofQpxYG6H;}0K
zf=k~}9{*dwYegmPB2PIRCF2`z7BIu1gGxuBFvQb-1~F{Nbc?X-V*#4w_@=e+zdHX2
z=_PnvZWrdnPSi|>Otqa+`ZkKsf1P+K>$dt-*YWtVic00?u1kf%A8E5Oo2a2A_M#8(
z)9wVH`d2vBI<w>*D2Vm{4Fw&ihVpVfDpv+(Q$hD)S8hRXeJM$ZwFV?jG9e>Z?}}XN
z`u^;jj0x$q0gCw8ou&&s0zWmgfcvAS{kpPNzm%^HDF%uqn3HO7Vb6drKk28-$NPur
z*ga8x85OsY>1Y?8hl;mHcY0E&{_ygbiC3ki4~cIx+lqY$lilNo27~fk#Mt?d{C0D!
zF!apglk#)bwN^8Tlyk><YLJ&i!L0&U6xB!|?TsUm*^RYZO4_PPej%j^V|<*eS<O*i
zIg8Jgy~9RazW&L~aH*A}M9pfy_=OC3$z<Q>WZP=)ffYguzcvmw)2#PT{_6#gZv=r4
zT6LT9gx#BLHD}gej_rh;417-i^in^0MXHOX2jc`@*Yt8ixiIf4?RzHg%5>fKgd?x^
z;(nGCdGdOc!CBj0c;s6at1lP{M~_4F+yqX4d{Nyj^m2;L;dbDx2-a^{VqYG^-S|OX
z7>zPV4Cqm!lpq|922Ven5F5$A&Zap0ue-M`MW=qFZ6|S_Y5W(>c*dn5=BiTW3WpCk
zW+9fC58E92Rca63Pz;O?HsLdC1h at BdJa80@jlZkADx%JhJmURIZp&Irt>-j<?izwm
z9BeU$&El>;ayvf9oPc6PsS^n-KeZ*}h%<Yo3>94rOH1#BvRj?V!@JI}-<FX11tf|l
zurr6&R&XnQ{y at I=*SLA-)Rj?{sz<a%3}tIz_G)B`@IUQZNZb!&%zW4UW?)1?C=Dm=
zXf9M)Mvy5cxL at 8P=o`4R!Q0I!mEI0T<(GHq1)ts-S|zDI(i4;1LVdcm^oc*cphjTR
zy(+~SsvZYj%~(J5X%xC3-_LMn?ZWWR^J;;5gV5*Jh?QuzsQ~b)T-s^cIWRkEpAxq1
z#(#lUcJEb<qojSdD=@__8n=}aru(9WNO{FfS$dIKL;Cm$y&@(LcqPq#W4GMkF+gQK
zbE2mf;{mRL at M*<-8M62Oql)u(JydbfEmXFV&6iVg7C^@B<lXaB!m^eNr++DPm(3yC
zZJrtEa^Pgs`#3TqckG*CHs!K0V2C&5)r)B9H7AVvDtk>9i=<}SB`~&|-=X>-f;3Wu
z&3$I+qjxt4qU@|P?5kcyYRO09-_$s!>LSjQsCwuOPOz&1CS$K(%*hr~H`|CBe9vb7
ze7Mi-o(yrYf_Vu-*N|@+U_heLtD)_rS<q4)kJ^o#vguR7GNwgKC=<a{NM&AhUctIN
zt2r%8>$8FCM=6Tb-E(*;dk;(~!>m7|>96B6P{ZUNOvcl}Ao>W&HX^>bY3^w2{c!Mw
z5`Qzbuap1&Z|N4i6ZnngTAt<U{UMjO9EDrLNC>j^7I?06<+r at h$2=msigh=S&mD6}
z1*xMd%r63#C#v$g&ITuoH4xtH#e?{dDh5S-BnjoR at l%>dvDU}oAL8pi-qNYN%eHPF
z9b$S}2mwVZZ9JWP@?1c+NR76CsxX#_3+ at dbpDT=(Q9zO^pBx~5+C9MoWhlkO7-AZt
zz&uo4J3j9~#P_R#OD%}O=q5MKuunKXB#~bE3TP^*=CN at Y5G7DH{see6b!sU(&zvm(
zAmgLy-yrbq+t5 at taZ$N(KCSV;V_~4a0doQN9=mF}{7ccp$$AIQ19)-bM{^vTXvD+>
zzH`VLeHOoSG8b8EzMqr5i3rdH_hqb-wpQX-8o-x>ca*<Vz9foWMV_TGz96x!>keIW
z`O5&sahvZ at B5Yad59v1+L#Z}pI7>J}AIVd7TZ$?WM&`YQdcR+FP{}%&@tMirQa8QG
zs1(#E*BrY}w?bfA!^HT#i+hVX{0h?^JZMiI<qq|&R(Ph%_Io-|1!()~UBmb^-NzDi
zd8eJ%aK!r1u^zyNxlm3TVbiW3xnX!ffo91otB-thL|s=PV3d at +DWMCbYGyuly|7N0
zJooN|42L$GTk4gx5=Wc`uB6-Wm6hu|)u)J#&~OQx>15V-#Q&=9>)M~_rCHH$TcyX)
zkdZgzZOxyBwiv}=<5&kie$7<rX$sASKD at h~_AG|6L3c-HQ5WHNdh^)r?8%;K&%CjP
z3`>W at UG-fHG2fO6kHiK8w|7(LPd<s#wAGt7zAmdditc~UWfatM`__K8m)sH>o6D0k
zSlye8Do?@U_WRdrS5hCHgSZYz3&DFDBluA6@?03aT-BgH*N9+ZOob0)sNde|aKi8;
zJxgT}E#>|bmcI_Ud9~!rqF>&#TpVIM&PRNhloGd;Y(%*$#_9?$Gq)<l?*boDVDCUa
zV>n?G@#u{yF0R_=d)FU>ph;4$$4c(a%Lm;_a9w!ZrR?5uEuFEOLp1hMyNRucP2RAU
z<ad{qvvBzDNodk!rJmv!-CJGRq)X<=<___qybcQK50B*y*Hm9k{uhm63Tn&r0UzLu
z<PXx|kkOs49L=3n<_Rq%nZfnzMjt#PCH385PL<|gdPa?<pMOv0y=@F)&DP;thQob1
zb(`m|vML#|S5Y^9|20L`w=e;U;u|eQFB#)YRgHi8xI3s7h8o&C&Xo!aKAvTz_-2bF
z(iW#1zPjCM_4ltDa}JW_D&$`H)GwHGs_i&a6_O)gCuRI5X!tt1t^y~o8nq at HP<+i?
zb4_%%uM<jTLECCX7qZ?`r|B!MkaHs%7f02CoiGYsM**7V7zfL2S9`0zZo7m{ukATa
z3*?#GJbvOQp3s0*MCCTZlm#~)d7<fy7Y4&kQs*DTqRYN{QH^o-F{f+JZz`Z=4&Yw<
zbN-Z{epjfRbWC_ah+1A$lYO>idkralLn2H|HIFG=M2^9%!ZO~tCmixd(O>4Vsh`wK
zKYB{>^6HRu2k`dmOP_iq<img?$@e+_P|F*3Sr^D$;-F at UylQKamCAcn^6zh6j<ptA
zy?W`bXjgetLm~63HR|$Vri`2o{tOg?f(hfMJf7!;GPY*|zBw;#Y)$?y=4v!hKP9$4
z$n}p6ybxG0Qr1kQ1)02uDqHjvsYOgwMN}CZL(l*lgi4{Rx5afbsRVetYQz8#pU_G`
z9JB-4Ogh5^gnydfC2wkaFn{&+QkH_NuUM+46E@{;zLZ6f)<U*k!T8u9xEU~5ATk=j
z>ul=yXYljHoPljw?j*k$yfE{6N{+o@#f(_5K%;`zr`7Z%u)h&{`pGZhSyLQdi_BzZ
zCFA!Rz1;NbM`fAYmqx*8^wP>+P}N at O$gRJLNJ1mA9 at dcyQPCnj>%}{Yc-DZ$t>js{
zar;@4JPL+1S4Xj}^7rA=L!7F-+%%G|?InMofM~p=(yRF{ZGU`0I`zjS`2^8$W=Z<e
zN!1mX<shWS-J?aF|B$iAVtLQn6LaNd{``5PK13nw>@><qv++iBoU{e6eqF`}jej}7
z$xyW^wKuc$7IPNgGc%Rvy%{O7WWI7yVj1Sw%aMr{i|@R4kazA{o&`T}epp56#B=H2
zPD+*gHKnP9W*ZPSHLR>DthDNE#`)W5l>2S-1BhST+GR-fk^SF4*lnw2SFe7pRV?TD
z=0kBYk~?bLM~dzIhg<fh7e8SZoWxCBF;$$@oMC*s#}3RTVjW4AudYOZIpixL1%f^F
z!FKAwz<;1q%|Bk>k2#})jVG3LJ|AvGmk5$ucM$Yum*i+V)b4d at m;Nw~OZ<DvhFCR0
z4fEl<8}gX&9OUiyPlTr7sMsDg)Y5UF4Y=mYTgoA%woKZ3F?n$37G}?-{8)vjR2nB*
z&!ktkJI)c$Yp0iL8!TknsnL7E7nI1<*G^sKzif at 4jvVs73uw|-cq79~{qyTXKIhJ|
zUqkaHV#_3_;%@0>SQfghG at q&<p}6~1-)C*J%s$mV_gAXO0TDdg7SmFq9p@$byf|<M
z`1MD``dp~Axmah9sNc4^BFNRi0XnAnDsx|jLY3<E>OI3hV_d`ELz`Y=BM=44KfSD~
z&II$i={J3bYXH8t at B@GPxLL;W4#sitRw&^Fp+Mp|5icvqyW4T at +kzV$ak1~noAR2F
z?zZm^EBjf>f9Im;v2$ll7z7zya|1p3l0}CG3ZRXm#kuHqeI?z((6ws{j4hjlj1Yu}
zdT>W15*_|fjh(vb$%JFZ6x37AFh8K_70EziBJ24vL3Ya~N#WT7L)%r<H9M&^3;%ZN
zcJ#b#pZfi2b(O(ME{4W8?B|@*N!g%5r)B at z_KFTEejF3C$q)^7#2qqSXG*~r#;4x9
z5sJjk`{`fr<9K{$Kb!w{RofN`rL_6y!$C at WjLjS*{*KgQD2MI at 6(&K%<=J~k>s~-R
z0~!5i&o16v3&92=*Z&iraUd%E9h<b*>fqDL$eA?n;N-K at g5X&k(q6D6%FPl!wfU!3
zXd`6xX3~JZXKPH>?lr2RO`DL(*#9_`<bX-O$f*{`UFHG~J(zW)MqhZNHyaK&x at 3P%
z5egya-|!yqd}R7wMiYcRm)MzT24pgp4cW)k(t~Nrp|?vT4zMYrtTnrt6V-)@SQ<E$
zDlF8y>gr8Q(h%*aqxcWwXW6ae+?8WGf&2S6YSk!mA_h#ly3m5JHtNcZfCf%}->=t-
z7PP)8^-`SvZQ5~oru9vu-LJHTwH4URW-JTNMKbh8Kd&mmqk(gHkcB8-v&sA->1p3v
zkbD0Y at jx_oub{irTeoF}sbFOzmjlx$&d4Kr{GLob_eaVB9I at pRv#T6_Qj8Ui77C)x
zIIcwbe*2Gr)qD@}$BX~PKLJB)fU1FT<erB*5fWyPaSFQ|H$?1r#P)RbIB;ep&EC<v
zH0eRP89c;U>UQa}74E7c7%-daLaz8m!2Y>KF7{CzVD>%sgG}00kY4zmn5%&o+2W_a
zox#3xTh<-2A#+fnMf^odP)N7;V3epca1 at 585M61{uK24VlQJ3&zaWs#+LrkNm-67H
z(HX7K0L}3UggGUs39TJ8@)(F(jjgr+Fgwdxc<d)tos49NsQr=`1R(;W*cTr!iUhu<
zKk#r;zaFBZ9pPFR%GqO*ig8N7zXgazr|vc5&FXe;#Uz(2KDmc|3Rr4meW#o?-(#{!
z3^G~VWi%#rf6nv%Jhm8+3YfFX-)B@(yH*};dToHCkdopY1&19`yRosJZfyBZ0M78L
z{AFXKwf1SHI7fuuL{po2l`nGU6ZsRtX6ev>6Xyl*A$mzfh%2ALN>nY|M5Bo+)P+ui
zKOh<YF0+LmhZwGiq5fggksQGr1k(y%d9ma|n(8V6nMj6qZBfN2?k$j&a2~bl0AG<|
z0`)nem4E?|-;K~shu4PaMtTuoWj4H7z4r)cIHcK7_dKZW!j7!nR&nI}gk%h;6ZJrW
ze^Ua_k$5XbNsPN*Q&E=kHD%Sh%!hsa#~~Juf73e5#(<Q^&HuO~egDtPuv0i5w*WH3
z at LRn*-bX)U9_;EudV2D&ELE#35;Z*kmxaJcj4bFAGJ+I#Z%M>#dA^$oR1wfbX?E#^
z#cN_$NN2pRO}g{}ZAQI3-GDIYYGNx=>~!TEcKt{VwlcPa!G5*v;jVb*j_)fHKK^VV
zM~>hro1yI<aSWb#X7gtP9vZ4`PIXt at gSU$c|2$Z1);9?se)3qnqiXSiS>)1LJiLG3
O;%Pzj)GJl3BK`-1qQLwB
literal 0
HcmV?d00001
diff --git a/doc/publican/sources/images/x-architecture.png b/doc/publican/sources/images/x-architecture.png
new file mode 100644
index 0000000000000000000000000000000000000000..098205b57a973311c22c914073fe53414f4c0a35
GIT binary patch
literal 37306
zcmXt91z3~c_aEKO=ny2NL8T<6Cnb$E3>9e{B|W86N at _HMG)N;c0S8ET!^qLy`Jdn4
z^XGZkp6z|_J?B05+;h+8e9j_XYpIeDG7tg)01}Xzk}d#%2?PKzZt!u at -}ovxQJ~+j
zAqpUUeDt3mzHK=AGl8qx8wdbE>HY5?1Bc=(8Tw0lcV%ODJ(qXxUe+Jq0=&Gu1V1=C
zK)}|nZv|aGzR%c~W&i*l0YFMG^}S)c3tp-Ee at 5ZUmWjZ}FJJ1wnS{+L9v6!Ek{A*H
z_>p4)$A34+<YEbd12$j~Er*UM`p56|^<Q&<z8NpEdYsSUc+O;|K{on#$8V&iYjy_>
zFL;GT7bYgOl!OsUKL{I`s_?3w4P)4m)nb_xNebxYgW#<21Grrdrgv6!w6=#KqO0eP
zuC+!)v1?4w7w96~Q+`Yz1wIxbqr;uYn}4aYQ7Fv{KDGgch<q>T*dsK<bxb<f*Vt{t
z8svDaT_{5V{`mIawVVzCvU#H2H1xHVMQoph`05YZU8#=$rmik^-2n^%913NCdcy4(
zHwp1^V_D%MGj>Vm*wG?UI?JAb#ZJn|k7F2guR`X8_9EyKV{VOjdFMyrui$^>8Toa1
zxG*)a5rF*O9!s8~Zrl8ha-0 at 2{uHz<`*#>~3Grm3==sj#{dIMgzu|b|onv_7e2WV-
z;bI#Lnt~QV-}m-3CZWLg`GG@=c#~Sbyj&jOpbFcyi&}0Q4fE}6ef`D>sCp2~G(~-=
zmF(eDS26l4j=kR05dB7OsQ*}2C=WwtkW-H_1&qhpgBu8}5O5V7W>x26V8>tq46;3z
zE0U(gdcEw4X`$)MP`JsYqOz~<ONrngTuF>1oMQGSHqL!b^|UxG_CEjZ`?WFsWu`-s
zD$uN+i1K^tDlz)B<a4FyV$D6}WMGBRtjZ*1<nb`2H;m9rYnF-!5 at tmZQv600d0ESC
z-M=ypLn|8<#5V1z+T;fRqu*#cmZe6&lX;G<q4V!G`VCCEL5_Dm*N)XkZ&8c;u~C6c
z#Lv8xFLx1~C-06XA3c6NmK7`_`o{HpUWW&kv-*49!k*g{!Um(+#3#>u|H+z@{h$p`
zoz>?=Kd9uP at GyJbOsdT&eq$Wr6xUuvQherERuB)tIjW1ge47v0jghIF9>$~92Y6p3
z6Y=z?{VbI*XRadpwNNZwf77C()jKtvNik$6^_=5x*I)G1Nx|p;6HuWK!>@e>VK1~3
z#T(S{rF`3wK&Z!B{=?PK7aXbkR<}B^q(=CUvm7tXoI0g|aEjQNcke at L0<uaRTBs%(
z`K?}D&6mCKM>)VT?VN)_LVZ?4%<P|BE=_=xnB6wm5*heGyCaE|B2|VqeX9Dk<q-k#
z9cHup=eq{;Lx(9j0;-~pmvf!Xh6sC&5eH1itaA<x&@}rVLF(?U3?pe9HJ4^cpfg4h
zi}4LaH5M9ZNpgbf+`{|KB6(kW*d=w?lW{nha at ehuD$Y9F at Oi@Mv%u6BsEpP3NumJl
zKd$&>9niT6n0_=97NfghY=O-r)1^P=b9?O4SsYvhe;$P))4T2NdstE`%>dGJ4sM#=
znbz=Ib!p<Z<qFfkB1l{|B(27JYTzg9PJ>(3I>GQNruU^Los7k5y#;PS_74yO7zej+
zMJD~ey4Byh-jv#$Cz_Ocx|c?$2V=nC`z}MEN4Yx$B6#8Ve%e9ZTx8R~scp<+`b>NC
zT=AsPb!ux^qHjA^2b??ScDOi&WMXO{BmTuwD2=t69po0*+4m4abso}mf{bt2X1xg@
zb1}o2b4p!+MT=}zB@^md4ivkV?*ydth$(7)HdOBn&tCrgi}rTbtNr&Iugz}Sv%!EU
z>oz!)cE`T!SiMsn!&%~G!;5bw3fW`t-b{bzGYgb%k-`@<E5APyx1_CKQUlY0BQ2?R
z=`xDjze5So>t<Wz&*%U00O(F+)4pFdGn-C++Q#&5 at Uy^Vh#qN=>^YU<@)wuWRS4<C
znzfslDPz_zj;PB6c+yr?Ct}#`PkQ#rj)eD#-sK9nrt{=B;K7*ce6x^`o9Jc@@6xeg
z@{{`#0HF~yB{w3Fj)<uZSgp#;U00x`k-o^PKmhvFh`d@`kW&r&m=3e1&-FIa3uG|B
z8posqaIj0K-ou!Z&83yVXTJ-+^47*@VNPU0rk2Cq2D97ss{Z4r3YHmTE+Yy9-Gh~q
z#f?{QB%JUy9(+eC_ht<mAhQDFBg;p*u3LA*4%~L5be<Q&pRPX-HJuZ9Z`f$Q<~8@$
zHZcFY+hh`^yHL(;ijJROUh%5Lj(9OYd-t*km<#c>Gwjp$Myb1A at Kx=FHt(7)P^4_h
z9(@Y?9h<=+>jWmWIg~HYytGf^qS0>4&u(uNFROWVezY+VX8rhdb>Y{9zx#9NBI3|e
z*0J{0dn<F!53R(0*H~uWLM^uxyPw4T-1P<``itb?g74vC=I(FvRwJ*MHegc7Im_i>
z##)+!(X(y`O3%MmcW<(r?S6Zkzu>%HWzeIv(dK<O6ry?4nIgASU5gSbziV>wCzXQb
zp=May0q1jEH%AD~&<AM%S!=H9bcw^7Rifx}^p~9O`s<rla&Z$!rUEr~{bX%Wmw*tt
zhra=`AUe4>DHe?4qk*^4y?-M699lbnr))3L4$p=qLZ;6FGRq=Pg#j%lP?!A6<M-wt
zKFs4={8DHT;dL6OKVM)F+a~I4pAsi)^(vP{5Zu`ReEnhP%zAaA?(j4 at u9o!eoz``o
zz|@$)<6&Uz!bb^Cu!bV7FKzofP50hv5ZHV9PWghFPcwtSUvMgT1<4Fif5IyZt&0tE
zV4VuKiP)&xG8xYQ)#l(zDtoU*)LSpjR>{g|Aa`G(Uao4He6FEUEM at fz=SFGXd*ySl
zrx-%J;@bNRGn=Ft=_~^}K9Hf+c)}~t$^i>(3_!b)Xt!~|hsz<IsDOZ)I_o{V^^FY6
z)wD{Hb at uqZIL)cg&wM*LFFHZuor4)2f1POj2DcjE+JT$Die7e4F}-&S4aoJ)g>2Zr
zz0t&~b<;ZYUrwuWCvb<yG-v8qS}vvC`9<^K7)j at u1}E?P(2Ko!+<LXPUBi0j)*a&z
zI4Czc-pz^_zda*)VU+p$jd2msgJ>;94w9WOvi_v{26s?OBQEw%R8#8A;9}O5?iLmx
z?VYp#<sBHozxgSGi`t=r*mAzm$&Xg>xoKXL;Fo|;j7;Ex9?i5Hd;N*{QU8X?ZpN%p
zJ+h`B0sSZ4OD7qoVrWmv&O0I{8TJ#mt7m+^08HP-jPVLpk?IV6m_$XhSV970Nu6l!
z%)bA%1*?$Y<RDUKISqfz)Dq15hwf{(T|#M8&Syvp`-Ac;#+~96pBX$fzFm!_EnRdn
z_gTwx3Zymk=c$z)Y&KtItx3sBtn3}@M9z4f(amihHJddbZM$y#9<C34cBV}>*3mdH
zHPI*(kkh at sc%@)^@41Ejo*9#|ybXC_?$b^a1{J(GZ}a<I$=X%}OiXV!a0#gEL>zYE
zxWbivC|7#;kTs^y35F1VolgIF&GvV20TYXMhOkU*oB9(x0*7v|q5>-7&6nS4>{80y
zRUd6%D|}j(F_?QqyI86oxo09^{3tmFFQ2_8#?bP#B1l5|Dt7<-e*H`y=ubhh>-;0{
zLytTEL`0RNx(w?6n)?vGGmGQ8Ona>zINZ9>{(k2m?w18sX`!b3pY>9mbZ=?Tw#Bj6
zTUQsQ36WPnH}4NOc1(1ww>@VR50 at L#vF8IyCK(r=0~T+I+gM3Zi#SH-eS+^+Rc4n~
z>Xr{j!<s+8p8HTLQD<(r!-hWo5`FBtUxPK=)TE8%ZpbwSxwON~hl1zwAbX0q_5w=v
z?}jE;)Q4Z~IS#gTFNgPu<{FpFv>dXg9<|i7-=Dn{khlZq8BS at Z>6~1&-xCnGPzY{e
zwaZ}FSOgy&OjbZ^HsHPDMy*6x-Y52SKIH-PWd!|x*1s+NFEsAoi+$hg%NDK1Yitp6
zcP?VBtTHpO2^;_$#AN<-J7u|+u;(ZKBzRCfId{!`CXynF%KrfNhduN9-Cl&COZL{)
zX(Ab|jc8-Ub9zy8Vc7KN25d8NZ<iZa-FgXi{>0yqw5VF;D}L7mcu^aIH~2a8K37$z
z6HBz4PMp3%O3TRA&^aG8!ob&w_1<Ch at Xk&^p?tio_w&KM$#c^~BSDfVjjJE?PcvkU
zjB2kRAZX|KnSXB%6KW>W)!X~MvfJ)t at NzBWVpC-A&y^#`?au8k;s<DbWP2yOzXD&%
zl6iJ}b+^f9ew?l*=W`2(hnd at Nn||ocI*UU`Qc0XtU7w7WV1=&&YurrfxkDVEDRcX=
z+kmCZ65;iI&Bl-mlfm-Ct!lu@^TN@$WLtk1b=Bc}MdK|$#l3U5{#rih*5&C~#xVZQ
zM{SjK2lG^|^0;o3JB661<!Gc~xCB;kw>7hv-Z&M{TwbvFB)QLO^uP)U9y$W(%E6&{
zC#;paH--i{B}Q_E1MT<eh3)T#VqBQOuMA$ku+MTo`5aTM#f({LnKn16d}i~LXUrkc
zf|7TrOlVAZhe=63oF(6qs%RS$KxYn#_K=!fq|H%eyaWi`KIgKuyv3$nC}p)AX*lO-
z@#kyYpxX=ic-1+JdOKFPEjMVtw|vK#(;YJFxLu-pW|WBVvGwc6zWaqS8*!YocXC|~
zxNBIItz2+fx+OlBP$&91Wk&yQXr#IPuRu?t&zhXYnVZlyNw-DOndXE8%vq+%UaBYc
z<3CsUbc}`E1|$1T&sd?qht at s&Yn)znPrn;1c~P_PQhIZx_ipo7$~sMRMR{Q&TXMRx
zQ!J{#&nXt6?={soi}Ud;ImeQu6g+XZXs|=ocBO3jqz1$*PxUR%d6Y_%tgT}1(JHsY
z=lOSUS{3teaD}bpG;K;u%Udm++AO-2SDo8px#mRgTHko!_(MLT`exZq(HnJKqG;%#
zxjswKv@!J;M2gwPP5fuY5(s5E=Kr{R_j{`h%a7q~mlb`@^w~M)HUvk8zW#yEh?lm1
zx3Ciz%qvAueSf6<JOj^R%!htq>ek6 at Ptz&k^-LD6l at -~hao at SBhd?@~IO`ZvZ9%(t
z(BQ7d_Z|toib26DKAvt?v}em0X-iFbtetGi*awCMKD_aW`?ThKO?0}HvY}aOpK1Sb
zeE-_PO;FnA$a2ZX{4P0f`k{r6DoiOcGSPWbBVYnp5?gxp<*a#4Th+ef=<nN^?geXb
z<As6uyHw{=em^2>N|X9wL0`GM+yh<G1}O;**wd#`gyJN|C4;DM;UQ7cM7i~(X(Yo1
zwcJ)3nv{Iwer>a at tPR;EH<>v%WnL;?Us|r+CMd=nVO5o~gQ?%k;XC<0(DxP1?vvd{
zvVY|a#lAV_#z8iIkDJ7nq~qoWIk*%CYd(5h^B=qcaTH%VFr3EJ%Us{-#l10XINENu
z!7!=4nrqx$aj6$$s*VbfzI at Y&WRZDcL`5MZ*FF(36Qh&(%xC-K&K)qFTwrjGE=rBB
z!9)qUdaxSh5UC}w-iqLd4~C`XC9CO*AXUmQ_Z#yJGpE*I7PIL-$L^b6PUqnH=kihI
z8v|2dSJSK<)fNlJ3T~mSKvuyv?Zk-tDZ~kT``NVt>h?m~lqxT-eJrn^K<|`pVNa-o
zh8r#^V)3f}G$B141NPL|)JyJ)RQgPAAy$MWbRpuy_G-gFLpj+j9r>M`H=+#uRW1GJ
zz}5rln_ at jQ-8;aoi<Wfr%#MVC<>bDztXRhE$(n<@%)q6b8ZHsH#(jzM<F?cLl6;8h
zjB}?qqSXEFs4CFi*2TMSA~FMa`t1jjo>F<5hVj&=XD0t)w`y)+yY_hBuNM`7v={pY
zo6R)yzFdAc8O~|8rEjPN05a<Uf7Csqs9E7D<Qq%AY3Y{=!QDltkt{kX$Fl6wE#sM^
z8+%mWUxvu-bTKHz_cwHI>!^uBZU@*qkkRqV$^Go at Qu$fv<aYfM-Joi_MaEsjL{xA6
zlHEw9#}Ytgu~f58B`z#NulClrrjGU|yC>-z3fe^dBQTohjdl?_8Mj|u6Wy?S2v57-
zl2>tDk^=$vJ*>iNi>xCjr)+Io(P&x2iNRV~t}p=m^4T6J3Hs|FZnZy0byC-<82 at Q1
z&X(&{`!=PS#xzglhX#-uIt(Oc+2<V5Z<y41HT-9?6BT-T{E+>%MLHD-jp3Dp$Cdnl
zqwWT|A3yu&Vo_uG;md>adbn+xzL;+xKOVxW9KVv*<EC&*Fk)p5Aj)9L7yq?*mB2z0
zxEW)MN(s>p`ZbCk=kX!f5XPvN at _sB!K1~w)k_W9?vqN@}cHoaC$WV*s+`ZA_$umz%
zvp0S5N0^Lww^7m4244y{MKKp~c7Hn6NI-&^7)ml=Z*4KF#Dzuoijzvn+8og7px8>c
zo50T5ZF;>FLhG|61e|5;xdD*r>G`4m-daOOH1emV?{DF#6E6BR7#fOeskC8}0zPi8
z=q{o`)fb_VCJ5@;Tl>3;-f4$E<(nDD>ircLY0YVVB>vN<&+F*v62JcyTbKeHZKcne
zr<`N|HB_;{t;Y<|`ozV#UTcc%9x>54ni{`mHhED~B-ZCJtK`DD-)y)yMNEw at IFZ_}
z{T_d3r9t|<xTmKZuDGT3hq^ddXE_I?uF?h&!{Qyydd1^?@9(r=xi!?jec``n at _X39
z`upUtm-gi$*XFojn&jlNc at 7`_C-LNwm|n#*qCbNeyDt`A^k<NvmPi=y8DCs{?qdy|
z+1hX78i*CA`4Sz?{a6a)2Gg=gCeudLlalGvpU>HhMneU8qvP~dh`&bzJVbK2IL)S}
zC=<Psl7z_UTYR(BMg4?}nVwtl{1v6y6~5n5B8_Jzq-c?8R(|1?O6WgOt*MfQD+Y+g
zUBuWZlFD5fMG;>5o`0^RI5RH>$Xp#wJ-2JsxP_F409Y}xf;@V9zSwrv=V|tS{CSwY
zM0i2&`kJ=}G;A&;zA_en(sVw3yHe(X?bkl+8!l=XdcbILGT#uCSswK+zSPwT+8UGz
zC6)KhVSe5In2e-nsYaB|xEg47i>T(8JaMw{y-^Ry#?M~RZKtCul+U<BPV`w91$N2)
zNwX{OI<R}zM2LLz^eNYQd^8B8=`r9RBpReiB%RWAD at Gd2Jf5mK<rKqmHE6DB)HIY)
zbl}R+q}*<pr;^t_&7b?klb#-Lp5m at VcR3x41f^{&Q)^e~L1DdlwD4}wbi16U&;8(h
zG_d_PZ#|2NZ2omN-5jwM2{J0b!Zu2W?C?$W7}ZnVAu%&VQiXD2WOP5ebVw>q>MnE{
zP3gLpEPQexc`N!>WwDxcj-c&cIj#(97<qB`{>!T;ZGiL0YmQW11B8&3p2dkTKrS=j
zUX!&$Q{y3nZ|A0U>2~`Y=H<F}0QciSZZQy;;fIQ7fZ@{JF7~{|@C*lX<NfkP+}SEY
z;QE70SH#Wl0W7OxPOF)3KE!)#cPFH#{8>2lKUJg(yY{f8lUFb5BUuEB#klZ9xq$%s
zG)<LQ-0S#*te39>Zke?hb<b|(xCg)%S#O<Un3$@G9NXi?`kH=-KUc4m)G{l~Eebs6
zd^~B_o5X)`Hw%9OAM=oDpecvGVSg&q_J&?h)?S;J_w5>ul?Rgj)sLDbKj>q at FIy8d
z+~@=1 at q4$_XALhosA`}u;oG)rqnn``;8!!Uo4lP;k^zAZj>#RVu!&54fUPYry(H@<
zF%waXM*Kx>;~tLPB(>)OZfSjGNyV)|p=insL^OaPos1Yq3kO}^<4%Z|)5}T}ahsv_
z77PBmvu;`*6d^L$o%%Cj!FMk at 8qXQmxv)b3%aP0-+Yr+bclPy?5~sEQ#keKl!oO|q
zIy*qzA<fA0Q@}k+?ikYGL6_ljOQ5$Y_7+z!$mKXD`O(V<DAN}f>l>gq-}Qr?#+Q{=
z7d%G{vu~<&rp3ZsWKBZI_qK$G8h(19!SJcuXPPPCS(KdY5^Bk4>}s==<3I^{!n$yi
z{m?Ua(au%$M?@8 at u}BJd2dLbj$OnGYr%SBKGd6e<1cb^d*?v>ICr~cnQEtPr)kxbS
zkfu`TLG3n{qi+iP2;!a1HQ!wsCsyZ;<{@0XF at Op{{ans!3p!Gzlhk#q*=JeAwd&F3
zlcP<7+Yp*~RA;?hbg$wUZQhoPKFom#xnet9V at 3yXq@p%5f?T03qV2zVakKSvOj*ev
z&co0j^{`tm956BfWb0Jjl2g>i3}{)sZzMT at d@6CEGJRw8?AJb+V5s<U^w<lZf1;U^
z6?NnFg#yvGD3mzGW*Nv|Huzqb*B$=}AyVjwzBq!N%Bb))b#?YthzQTgq6>DJdX_0`
z{24TYo${ijP~>esQ$l1Rd_H&u4cj!DeK6Yroi^chvcl}45{RVok7~T>U;BAT(29U8
zwUNuIhU`;#ZINuTB5zC05+aR_c=LGOs?dszdml6aUQi58;!UF^eX1#77l(|@$!2sj
zP0{HE%0Lek at H<aP)?f}qwSNrJPo=(38<`wCok&PQftu$iiOu=*SF!=4inhw+Il={g
z0ncZr^lB#ozlyzRqi}uX>Y%|k702TA9c}FCSIYZbln~uz*xX;q3pu2SJ8(_Y3jdHN
z-O6tl=G!mXU=Ksrhd$Ti%qBjVvnEe=Y6Z|GHheTLPSt+et5*gJf$TdXpCIWdijVFw
zQS<chcBoe-q&uo7(JjVBBSMnyl0TSys=U*%;DZM7U$){@4E|*K`RN2g)O;^o3tq_n
zl;_&a^mIXw&x+|VIa~wV*>$iLqXh}ec*O3~ErJJr6>`x=KaADLj;Q+I9Gt~=Y4Y;~
z`W`#|X^;v=SN5tmb-^njtEG^v7k!dme8R7lR3uQOSo at GcCwBHp!|9~NK+Haj3j`g+
z9~nWnO0W0rZ*HN at i(w8QFRG$OL*79QEvk6830ZMGZ-4~-0wq26EeR7DjEubewKU0T
zlr<?LDPa*_$`&l*h7B1k2h{%lXLHl0GW{TDs7ADi^CH>`&cIX8KX)a87D}XL%T23L
zBIsU;zYqE0Psn~d`%}5>COSRBmJ2 at 2Us$a+#17nY(GeiYGJSn6pqmS{t6H}j>o6~z
z|J*$i;!JN9wb at W<5MZIyhE<r$tr*RN*E%eBqTP+w-zp*VR+uYry-HU^#z%v_xTm4e
z#se9a-iCykQg{<N;Vlwq0#q at -(E4l-jZ8U2gEg?m7`>kaA9_WLl&g)UrvA6yn3|ao
zbreOu=ygRY*XKzceHWZXT;sR7r~##@$><NmEf*P>=0Q?m(pDBv*m$aOlAbQbMfK=k
zD%vYYXf&Q!$rcg&aZ$J<Kl_dfc%FnmipJBhL5I3KHMD~4&;x(@%l~$W2v1mnjs0n(
zM!y?hl<WzJS5}oslvZ8o9<w4k;Me>0kavSk--mr7g-%kxh$s*FE-^WIdl<po@|_Tq
z|8^%ogP$&iLTae9NNt>?I}_*+ADm%?hg?4DX(r^C1ZrMkNJiS{R#Az!^5YVgw~><L
z_m1c8zPWrJZs&zTC5f!{ch+c^L$fzl#7Eq~z+3 at 1M2lC+)?|Em+tVs#b4(pe2utn-
zig!uI3A&hrKXM)hsStIQY36X$P at KZ^<_spk2=QUe^$M6)_D6K({I1kjLIC*w&<k%9
ziKN|X2Vv*bKq>-HZ+bU5Z6L!+;GxY`6f{$*;5c(O2L77jlgQ9f43GWd%{jcHtL2Ph
zhQ*s3+K5QvG%fBK!am+LU}F!IMBNkUD>cMfJYr8Kz#VK-nP4=PM9t=cR2i*Meh9Hb
zrBlp8au*ju7$jzRPD?2IS%t`Yzaj7Ovq<GQ?{}I?Z8&18573)w$%gmtxyI{}_=8Pa
zgH8D(XmA3LWq+DqpNe??s1=H*h+kt9`%A=!>1H4my`SqHzq89(=Jm=iD%sXTDx^%7
z171`mL-xs at yS*X13p`_}N(paa>`p~cOC9)&pAH2cV0Rn@(U=8(lXnFF)s-yQFWYR5
zyFuM0lx!chMEJ-n)hqHXc;RZ{h~bz-^aOl+o%(c)@sc<A&>FMa3$RE at 0eVy~^0pY3
z5Q%^jigYt$@H0;+biGn~7v3Yzew-D4t3P%32=V+m=&TUnIw*?U3^rv&bd|vB<>VXW
zS6ZI`IPQ5*i%g+gEiCPj%;EE4T(gJ&9jOG4to2jJ at xV9j+e0yg;^TXZ2YFd;@>I)K
z_cbw^uN#ODRWPe#cud#7>6c;qQ5wCbNLzv305y3n!ug!-dCiP+SP!*x%>UMioYn9X
z(GX?h_vdzy;IQEAqrs at d?cmB3qc>0R*RH+Xx%|Doa>jBI5#Ff1IPwmSQ`WCq1i=rK
zn!K-!LQFH!$>AY}>+^4~lbQ?RvG4)7xPGHz-b7Kta;qhMIZrcRE?ZevM=ExbvM$9{
zBwZA5DgDc0E;LC;0o-RtIv^kA6j*p`w7TQ&<H_c9lxLmW{&c0A#oteB#F9d#1Lmy$
znWJJpA at Yne{D!m2d0ef?UBB@=lp6{e at v1Mh-XZi;3z_5Dix}5)sTEhIG!@UtZJ=pS
z`?p*sA6m&bxO<Z$Y2XY5U0Nz3J3%z3dzokg_N4$>i&BV`;9dlO>_vdOl~cmP^`)ND
z?mJzujiED0neo7X?nQQ*|NIq4VpUgVhX8 at Jda?6Ns-Gw>uFmqgx-Waw2<_$5;6ojS
zBQLliPc%qLk`tJG at XE&jD9+^VgT_{i+EPS4x7a#5{=Qxo)9_^{I$0Eoo4g>_VsC>~
z&{zGJG=%>I@#cX)B&t<Z<Xxg!S1(>ytJyJO<y_7~eSK3sjaYf3`-DwRjA0UEO1{zO
zToi8;^_3DzN}t>p<aLw-VA<!-HFUO!Vc*U<XhzAr9|faH%u6XiAlkPG{)iWrC4+V2
zyI%dlw<@>$P-mPOXV}81x6rHKn766E(z?WA92Q(J%WkM`t?`+^IJ_IbR%&aOpli at F
z#1u;);MqHC0iG;i**zSOEqED(?KLQhSKn1H8x7K^Po~rS|6YJ5PT=DpV9SLQWw;b@
zT5zM$ZA<g2)>eE*Dw=SLeSpCGzzA^uc*Y>oX=HV&l2am7<ZU^6H7oPFjg9#77?qX)
zo)OQSqt8LUn1w&;u%Ge_EkCh(arpW(c$bWrHlCG=sWbJbp&>{a-}?C>Z7)-?AI|h|
zNh7lbo;p#88*O~LO_hrYmhS;$?i|ER_2RTkuzCB|5)KA+i6egee8tOtkc%2$Jts85
zZ&JprKB+eS$MjlHC3WvB{WN8r!*UwQFpUu*;OQ<{3FP>yAKr5Te-i0JRG|0YeQ$Zq
zR+A9>WG(axYR9Q440sXyvEpYio!<FhkzzXBvXxd#PUv*yYd_GR|B=Kh at W>FB=hwcC
z+&-GV>?KbA)4U-f1bpb({jCIhouKX>g96#|yJqMPgY8m(LhwB!UEE at 7Mv@a0Smi?q
zrZn>W_oOcl>8m_2mo4L1#wrRb1^0=@H99Anzkd02kdad)>rBSh4|4s16*Q#0_6xgP
z81Xt3q|8y=92o&urJkZuYr2;co8ddnPHu&I!UaGiNSH(Ld3#kk8JIA~%+mE9&vC8Q
zB~5<U2%1S1?(kFC`Dx1)z29rat)=knGY7c`ox=}lIA?ek#B9;8T%-5x%ELK<2x|Ez
z&o at k=_qz+>?QakG;4_0wqWM&8B!f9cRvpyFrC3Zq!Fxkg&{Ebf#m}t23=Ze}I<IP`
zVGI#}X^;)m0b8SMO~bf`mIPuZ%%sz#=>n(RS7+KeD9);L-ot at RqJX{IU;hZk!CY6j
z?D-Ab<JDG6tZ4%Ca<x$mcnbTmQ^zVD_{mrSd+=e##XW6p1^a%%in$d-GtTIv#7MC|
zc!aq8W4zM3FoDVPt509DzvzW+65XpxPM$B_^22<KxI`xWU+=9xbNMnx8oYWAMQ}Er
zi-Bp%yb1ztCntuhk?)0dN60RL-fYDfdF62|9Ns^>&}HtQ8ocbF34?yO!PW?8=sca*
zt&Qtp?BV9z;hNO&&Bsf3{95D9fJxTCu(8n1ZWMDNA8_Wy#tXXJvVfLXrkgd4j*aOR
zve69xNIj?MDLE*Hct<Wh8f-7Pk<GI-yNB+H^#^Ey$VamAtOn=ZQM&kxHyfM&&!<As
zkxOD+%x)mm$)8T|5$9!_px6Ue{psQ_Y#ZA5efxAIEci~}LR<nvAO|Lg4(zULK;b)=
zX?FpM{P*WamA-krxf0&0m$!zEhxiK$TcZT$^Gt(#I6xyf7^V2j at GQ<B>FN4=xk{08
zU{=$AmyDli-Xh3NCA?>fAPyWIk>sme&D3iaa!*|Kyh;_bI;w-P?{^IMcDIon;X#1G
zS=~$R4|j?+T>lt(jy~BKbW_3%nn9m)hoV`D^=~D2S2E3=Mh%^#>XSnEjlCuXS5vir
z<XmoTy;t?nXwdr%d<nMM8_E<>2gjzpK5HV-L-SnAZBxiZRx1mVgI;cpVw3LxI+>TN
z`uFJ)bpdjE5nE)^Kn1lj{YgpGa5>qIrnLq}^2vEO?WV{2T#ivnw~CUAvgxBREbVUk
zU#U!u%+l91(&u8QO$rS!1DNsd#qO?gR5wc$>YW31j3faaBWE{R>nRn1x8MqMzub*f
z0 at qW6!xg-!fW0MOxM;URUx*-K;Ju8*q0Pd^)ghO}sT{g{qS;>WLx$iXa%MQ!1oicq
z%UHqp(Q|Ggx{F4CWGL14Lk$p}Hqf3Pn2olY)#Dm=pu;84kDr>n3iu~27cP0U&LkkK
z at LxfunUM0ldmzcECKj@M$epokiIg=U|6o?!lu=9WNkb~I^Q>B(+n-Ia;G#WrVdyhR
z at 65fgy?(?e_8?#k7-ni2MAkmhm0Ji*ZGYb>i|UZFw2$e2QEHdxvE*>wgeCad3(r6%
z at WQ#OKf&h}Zq7j#5to`NXLaniihFniTkzD5- at 5=(KpRcG at scndn5NP(F|r2&pFq1F
zTkso^?f at o%ap_cClPZE?&o`R<q>cC${$_GhEyd2hYd(~#WAWFGDp1Dgp$xLSiizNr
zaC563&~=Uei~OPr4!;+aq0&XA_(V4W&--c1G2WD$jP11fcD(EE at U`4A{5zPjjk=h_
z_1rT_)`xjoEeGx^L|k_;;hKG2lbEQNO{ka=M(`KF9C!g)cqW)qUChQxh4~SGDBQXQ
z#co`P(lko~0`HfrEV}1yBJ2dP>{ufens?r!dn00{ypf*?aNw`Xmz!5lSNm8iWClsN
z`BPs5Zova3N_mB$W^Y%la(J2}Qwp3$q+A?#I#V(EcF+MunBfxp^1XuMJc;85tn_=L
zV&~yrrEr-^?nY(c28+XBOUY-%+r&+;W;z%Dia1|))6;Or?|WjHC}fIU>9%Z%!y>ik
zmdVLQMNNt9eL{C&HsutnH%G8A&$3%A#v*OJ5EV-|UCq~zOZR{UOi3mQS?IJ2W`5qK
zEcCKCL&&5+5<=r{U&Kv=D_7L|sDA0mjrTx098HeZriHlV-|baiUv76-?W8r^A3wDJ
zxNdZNoGL|zZmnpepYX6R()?|&JEI8JWiHZUU_bCTveH8~a&)^5mIqlt7KM7<qD4gc
zc9PM{E8qQtSH_T?9o{Nm`Qw-67rjp~_uh at e?YF}aJpW~x?Z4?uy;I#Ke4DFr?cL%-
z*FU6Zulll0s;+*En<QP0cpV;j%{uNRvYxJW{}gbzzoK!bb-rH`ffum_Ur at 22)T~}q
zrIPT1HFS5g<uA$Uh<0%}s?B`FT}gd{_b0GdiZ(LrV=C_<Ni=k%FD$fOZZD-^9=--7
z3S#wUWNi#M*$+R2=80IBG+uQBt#>&Z*VH76Rjm>Hc#AiN^4iF?=B$jkAM!Oqu5sc0
z8Xx(=8UqY#zfg|B<k+o&kK&sNDXuV_YCXIukH((5$euQt#l7}i0%+Z)1hftOG|;Se
z_I?$o^KK_+ at 62swyo8D~q$+^h|8^~`BZj~vU*|*H_<alIByB3me9EE3FU(Bn?|)IS
zSb2sU7>^1P_?O;928vf at Lj<E}H2>_Oi9YW&G-)w7M&oBKZ6&q$QBux+O6FN#XS0+G
z;lkudT&1^?krK`OHoIeyw<?~i{7?7gPLGZn>MZhJe{-~$AUQ4N5W>)gUbGRIsJfZr
zTl;i$p5ZN0#~;gBf;Il~7r(9qK%fg$kq`LSOFj?5E41TN?eI at tTiwf>>2U#z-gz`!
z0dhVgzg}*yLThTB(WmRBYGC8hmhzn05N-LV>1`#6t&Llu)fe8XG7M7SZ=T&{dpP%Z
zl^(KgCDNa-J8qh$@~Dfkg3jSN%~`2rC^J0wx{-f*Y&<7W9^ab5M;Bblu at co|i{!}(
zEgb&-cG0gj&3%$-+EY=&dMQ1-VddD>-#u$1z1!X3F=J_E!BkM?sG-q|SXONHgYP5-
zJ~*4Q<lhz;o0*G*j`vIjW{ucs8(_o^6=lk4jAtR{gF#fzL5VJ*cS7TQe;XuTn!0uu
zf4te8q_w*8&+Qwja+A9}P&|rF{0xOtu?1UFvY_m&Fb{42B>^;@36Z=*7{9y^5}V(g
z(&YStIM<*J)Ri2!SseaN02!-CJAZCG%_h~cXlmf}r9VA!!I-g}^s#eTl+TXNKw8Zy
z2jUKBQi^WFsUKyLCJ$(~jLX|_s5_q}IVn at jqY_|saOx3_+wo^xikqB>Zu8xcGxYHH
z4EZ%Qe7;fsZPFlNNTtJNb%nX;Ys-Zx#zK%o0u#E<MyJWUPaZ!5ihUdXMw)w6n6LBa
zdg}r4Exv6+a|&GY0^_hWoO<8!WylSKago(3=Vtd(o!6fvdY at hQa?&FX$|!W_*QHMq
zmkM9q<l4J5pT$s<&z_GT3v~ngeIK4w+2dQEG}=sdNj3=0wtA9KT=Dc)quWs5tG;^7
z7M$I3VVQgL6J+jrYKhcA&6}_vn=63%%YK`^t2en(p0nh3O0K^y)wl&3Jv#7LttBw1
zY_t(n2}A<bpG1SQodVGvF;<obcQ!O<C&$!>Sgs}tM-IAh2ytQ8pBd-f;3tb<5rkPV
z#97pewoHC3HO~t4=QE4SP?Jldk}E|TnHdJtK8$bNcYg$jp*yL~m?7WyAVtA}$r+z*
z?Gsm#mj8&{>JX=NtVkgXfAJ5l;6oAN&$f&P3ttS2vy+f?6B8rrzv%#o#E9~qYBC?j
zEdh}~rSWK#H2dwwkRmN*%@~n-U0q<Ka{<8fKA`$Q%4|?%iFFDY6v*hJBLbDkc0K2>
zzLh*$6vx!U-WP;B72II-VKw|GFpIy~c-$X83YR5_6~S)3JWj>#eocRct=6m>#N+Q)
zcXG{L^}^L$<A|n6?yxM}c;Tyvavnz_VUefX;KBjyrb|+MMDijLvQL7VpSc?63noY8
z&<1kW<FK>q1!V+52b(rPF?s{faOgUdDkL}W#N8wayhVZ!oivW@*I=f!)1-XE&kKJf
zndwr9#xY>Pa9XgLh}{A8;j#@(!t;_|{wzY%7dbIihSAo4>zYW7X*M&Fbjb;AJ-tcw
zs2;V&Zcyt5Bi0<&)P_ucGl{&muIP`9z!)A6&SZTFR4f{>$I`~{DX&>jT&eu4DHv0H
zGE&k~OtDPCmJQ#>?wL%4Ydp6G1&2o~3o%GdNT%#QghjW+vAh?3XMGX`v56EVr=w6%
zI}MRFiP$AEW1DOpO3l-K`me6XeYyZLqWH8RIW;cXPy-p1LRGj8X70jv2+29=Rk6G<
z<0Mc&?T>*9sS#X4AWNeFoGJ#NE!|P+YfPKt!yBbdFA_8#rIDI&?r7siOMk_?^k}4H
z at i+Cm<Q3{u?1=>&x<0zZkOVbe7^Dy21;C5y at kY&4!m~H`@*Z9;v6<ueZNh$49%r_P
zn-SgO!ZJFmys$F74}NtWJsVe2Qo$s{NRdD#G((i$t}!}3e4>~!>yurRoW7N4T>rEg
zSZ;ACDz<e((wmM6W7R7I=X*yu*GZyGFz$j%l{lgvd=aS%Pa+C1%|*OlDut at HyI@P4
znvameO*UsPd*Qj8a<0j^dEMeQGVCv?FC*5B_y%zebIG}1o-!}`;?Nb at 5;s=g549eB
zXeGk7Iya+}VZmKY>Te;ml64iP at BJld;(mKgXXT2|wiPv}jr}f{`$x2ha-n`gWE=lw
zT#ts;TM9{#5<1==D6a{+|H7)}WeVDCoSEB9JNF at C!*>;OwR1n0rC>jP=K9#xV#S~D
z=~JTCxa9_=ZXSvQzdG!OHbAH9WTuPO10$EF=^=#uP;-lAQszr^m&eK~dF`ge2z8%i
z1NH3vjSody*1!ETPwlTuQ7&A@&YrCwpry1ibsYC<U1v1pms%TvV|wS|1%MAjYW=Wv
zrV;xtaG8n)@98mKm3Xti{-j`ws>5w)fR0zWWgpG3TZpn;yZTh)djs+>Jw3 at H2u6Hq
zCWY{m{jce#Sm_vFDABo2Vt$@B at 2~=bb;l<GQo-#?-i-6{PQj7|$GzVZN#3D`4CH7*
z at 1Mls*{>LbO$G@}L_ZwECrB>&kE$cbRhND{ux`D&^L at PCAS!ps(aKq;{LF3=yMBRO
zi+7&$+$|N0NnJ%NnlI-<7Ryn-11Ejt=n%aX^V@|GsqFfMAmwLP)puMlh|F-uUrG5&
zJN4XV&f#D9AKk<cD>oAgI7l!Nm?>P+v44A>SUH>~sn0a!%r-$Aw$n^Jwy+-`geX26
zZenin5Uq7c?m0~mrkPHQo at av0Ck8br;&=YboPDs$gG&G9bctcQYP<-{9VKpAnq`<2
zWve+g@)1SxR(*$No<x&3_T52kVC<5mkPhd~jJyzPo(mLv_VDy+W;9c{1 at j%qT-)V|
z>?LkiAeuUE*A70Yd1ACXN>IpY9!r<K1^)w2w_PijK$kYAFwY-d8KCQjTkuSF%0A5!
zM5--%HQCtP^Sz858xN;okRr?mtY<+oN^89)9gd%!!L|ay!t_p%1 at V-Fp;4^Os2d;-
zUFj<o3uOl_pWKJc4O;hG%wNbXWjUjz3Bn-Yw=lVreYvzo5xc2L(Vm`9wzl?|U}AY~
zwLcy%YEC|wrI;z)=;+O*t(>i|#DWo9aZi9UlehFM%GLBjQx3Dr?IuRPiwt&m@|t{f
zXCBY0zF!1HN!yI`Y?FF3e03Y#L%U#9Px#mPo8BHVyWcw_a4L8aob~xvrPZixtETU0
z{4jihblz>>VQ_3 at XgT|I2QI5(Lbo#~CU~a}4(KC&kphnZ8Cc9cJ at 6mG;+~5)>(IwR
zFWG{-?j0piOs-sqU&C*c#w8G`-i^AOA9r95Skc&|)bS~qkkWkr2ZxjDaQB#Wt5%Yh
z$L#Mnp5Yzbxgu}KJ6>LO6_cUnPd24$Vw4IbEc*G(!0y_=+-CJ6`Xqrxt+RQ(Ws&!c
zmVsBE+%<FIb30zelNP9|MaY4U8`9G~@N)joy(E8du`OX>%cyVQi)QmFw&1VEKI^bK
zJg1B$WsZlzZ1h?sE9qi91U9b{o|;cHxo0<u<tuSWpayZyahjugqWusTix&zvR%I*-
zYPC{ONCi=|!myFjzS_sKj~lJ5Shw84u8LwyD3}A at EvX|ny9 at WzCiab1m(N)}KGMOi
zx(Q%O)FM^@ZG0f7BzlQh-Yi7Kb5VTik!)bUwvl?RbUk%$hMJEYY$_U#`s3Lro*OPr
zY!)iEBq<Q;T}K%&lnH6Tpp`<g0715LEoI6i1BUX6UmRobu+@%f=4|Tas-8x%EW{>5
z1i!RJY<^oq+xRl+l_m~={Uh^i>j5Qd9x~VzFxccg*u)8gFvB3eQYb;}HUJl<Y2?~c
zC>^>ciPwm6>4g!S@>#6IK2i+v^vEH~dEM3=@`xP*1=;E9#^PdXhmj{#xE;bB*pIFM
z<#;x_x*(jO at D|*%sQsG#P>UW>3>i^37N7MiE%uKE;Tol)ubo44giig at wf*oPzlVz9
zZi7vM95NR4_Ovn^=;k-+VXnfaB;td+Z=2h{MM1HvupLs{;X+qLDy7ax5RRQT9z~P6
z(mf}8X+%!~`>3H(b7ap4_5@{tz`GD~uDpRNT#iqyYMc~Jc&*cpuImG(Tw=)r3lJG*
z5oS%Rz5#hFZ+vUJj#V?#7G8E2j(>YY<y;}T)nR0E*_YO?1q_XO(l1cBUcf9Y8vNCv
zb%3~5&tc|pv6Arg-&SVXwC|w@#iHvh*_^;Pglv9c=Phcr+pP)Vek5iDW(=7xgpcgB
z_f1)IK*~+!`b=>aN*Au?+WpCp3WDbKBl$CR>==>nzY`+o&9EGIT7~q>J2~x^Kja;d
z_i0FdT)GZ=YFd1_*noXcGEWB-;9j at Op>owimo34RHXvnE1$>trRa2rm6A>y2(#<W{
z+;?*DH>iXm?_aKB`MGg%<zIbV9g<U&60D8Iq3RehBAjrvBy$p`wN}ew at -GoRQSeoG
z%wQ8u2we at dCOOjQcu`!jl9`nf$j7~Id)i*ioR8*j-sr~v3L6H8bOT-cG3+|O*APm)
zQ#6<XJ~KiWu>oQE{xX!mJm)2+Xq<Sxn!+{I?3utCKlzJ$bn4z2-?d!ed~%Cm_>_qU
zTZWl7kb}jn_NtR3Unr{<Y2)n^uyu{9RnVYvY4bUKVwy#`-h9(vdoO(5 at lgq*n+e+w
zcm6{w-$yDSvtUTM{&+XWCdGDN0>h)`M^&t at 0U82lF(N$GwBM!q$BFxZHX0OZVV<Y+
z*b868X8IbAfJsB~qtBq-3izN!gb$C;&S54&taUUGK%Mv4i at 8e7r&sr7cn|*Rx5+3N
z!~tkOkIS({v+(w}Z#!O<2zdfSr{ok+g8WdY!!er28m$&j at S%VY?<yLauVRwkSt1#c
zo^!apCcajJCUzO6H1MS(jUu~G$Pn_5_XM$S^uiiSSz4~dU=8SWl#cWu)+DwM&>p^7
z*e`1*wYo|q>Wno)digB)(WfrEVGx=imZ~D at t<c at Y-3_Pt%m8LUYiUESaLLd})(H1q
zs(rm0+4Fu=?)tZ6gGnyJ32-c<MMxrDEN{dU8cMzhV)w3X_M|^d3MW>#L5o~|qf3!Z
z1Wg_>M1;8W2vaWL@~BnYVSPPt(;ZG^C3%W=DHq~ht<R;@n<b0acE>i+A0DB30}%c)
zH_{Nft8i8hKm(vnF*UE8z+8lYTfJ_zH_PSo;6oeA-<goUoKotBs2*`pv~@Hnj1zd&
zjBT9N;W?wEB#SGEC+Ick!M`@m$s7BRttq41(A7sbG30TlC76A0#J9tRp|fH{Dz&jL
zMLv1QfnCbLvz7~WTJK9DsO886WsSF6nf~+fy|`z?d$rvO`1`Oqashr>b){oTe{eL9
z!Z-b{gQutF#xI?P%Q at I<hMm4fL-scnV$EOWf!q1Whh8b8f34DT!5q{X)TfAlvKq at e
zaXXJs+?`+vX5c`Zltv*n$fCtP@}kXvt(zwP0_qUNmkD7el=LL{5Ov?wkRGX=i5ZQx
z4|;OH3^#;Vvs3zx+Mt0IC$P7XAyx4O>R<@x9y_!^*puhSZs7+$;Dq;qX+C#K1tD91
ztW+DsS+aH?MMH7*Wd9P8x?%-V##F%98;MQf_CA=KIJ=dI=+Qu`S&5^}*o0p20o~?r
zFi0v3Z2;FN^9iqS)d6_0<kx;+4T`D)c1dx}!1xZiJoaN!6JehiNQJ-okkGTepkB7%
zv`>f+!bNg<c`K{X9Yy at H)z|~r9JU0mgrXAHALb=GJ!$@8HMP?`4}#$#-*$UKJqe;z
z?0Hzn^q(?jVX;sNk`Fiea>LYg)LzIR5+__p8DvG{DkC^D3jLJLBy=P&%T1`V?F(1x
zss_kDQX$T=%LIeUCVcEsy<E%1z)0e&FN*k}GIk~$$55L08<43;kwR=^-S`~x4kjcf
z692&ecjXh>cyZ`&_#@OjVF*jRS{*JIg1jiVO#f7cs=RcSbQk6jA~w=2(v0qvAA_R<
zOv_Es!SIIu2MMgy&`EDPe~h|<&kqMPZZBND#v28kF<Ncz=do?jI)3E at 5=5orXA+ at f
z*izN-YE+MYj!;!QWZx1k2Y)?NU&#Y=faj<HQv!c8oaHP!8RGm5X@}IONTc*ZTh{Go
zL7s3HKo+Ay1MEui3CA1I$kyCn4Es~9JHqb6KQqR<=o at CibgqVPZ40X|1->T*#^0<)
zJ4N$2f77Ry$A3BO93tg=K&JMA0c*r-D&_n0fa>ta#m2lo(RY_`G47}~KcDMG%(=l;
zs4s0~z#7;5#ZSJHcVukZ|3(*OzlE?^Dj{+W?(bj_Q(B)}c1l%Uof*u#2I<v;Eq-JZ
zc?Zf3*JIE_g(_KH$yNzg9V7B*C?T at r1<*J&iEv73%>oHT8luc<o^O0De3Is%bq`Wr
zKRa$;qvr-L-t0jI!moTz?B-U*kYSBrM)0dIoIo6EgK0|uY`4{t`}>DeJVWJ+u|Cap
z9G5FDU at 7LRvaL#%+vrD{Lr;8b<9 at drj5$nyC0nh2wBUb7MF%6c-<SFkK?#a0dUGC0
zG!SuSfT-!fK+44xx{idq#JAjojp)38M33VE7_YtZ&rZx}I~n6!3!1>c9WAn^jy|uz
zlf`n5_*T}Z3<Lf7Aq_5A=SQEp%j>DDi;-L=wEr~(DWDzpCBF3&S0R(yCVlgvxQy_A
zMPGbJsNkEFsL7xl+Sc`a4s>skK!blo`?r-RkG?qjb_F;!ixj$}9WQHaI6ngQU8FJG
zPpj5!4`#{}BUz9GJTw~r%FoJ~rk}H55Ga3B*o8g{F&YUQb(LhJ`6@&TpQHUQfxN@`
zc`n^%t9EJqvW?Z#-c#NuDsJv$j-iY0Cc1O1BbrTNm??k0>Klk-|KOJwLnKM6^NxBv
zJ_K$7o$g~6?}qy%rvzdosg0RrcnvX_zBlN)@%pUaw7TKA4>Duy;xf_Sy?OfIC|zoW
zR6Hi4U1Y1=lNibHo=*5f(9Yi+yJzU%W=?EY+Zv+dmeUABI$wSU<YWWpKxT$z#>aku
zpctdmL%WgMn{hs*GqU7)q}XFDs56|6C&u!Lo0)GL?_opuEq$jS;oC>Ey0?>bU{YKJ
z7OIO5J!}Q-eWdRJ0??B&Ix}>1-p3R~ms-*gOoSX2$&r at eRP~qM2PrS(ge_?m!oR;s
zf$YDw5<)(qNTXNP0Bdxj!xsfU+igVKDkHMhQt0~!SV%p&+_UdTL~OAId5<}3&!Eng
zqU?punLm0bNZ^ks=o$VSXAM$5YNWqRIE at tR#!LYesR%KV=$P>VIduxQT3s+;_{5}a
zYjYV`D6_{%*;DqqXU8$`qd$0~m8BdJX$M31S}$bu(h+rVy4pZxMQS5m9bP`*UC??^
zDLB%LMrSW3^IRA)-jxu^PO0Ec)`%rAYt}rxs=7d~jYIlz&`EFeC=s3DP};prE7M0m
zpM1klXF|5yco%8Z{D$4Y&=&i#a@$d~2uUI*@DEDk^p8+^-at_hp-r1>3I3Y at K^VkY
z*^1y5`1^{n)d%EHKP*YqH(VBgg|blBGej!G8(ke+1$=a|b|h~=6RqZqycf#sA_<|b
zz?2f<#3U1tg)*aDZ*_^7lqM!*i;iMjBe7Gzl4WNXK at Wfa8ofP=*x;{`i$A6-a+KEm
zksb_&WS=DxA~m5p>`&Q3uQ;}_-RpKD|B3a%49hov*1f?vL^oE2mK&^qk9mq~$kpl;
zt`0SaK{C+cXP!4P67;ESlaM&hS}-EQ-c1Xuf`o0&cL=0fi(VD>V?U-7v|LBD++y+$
zAvoZ)qk4}>rY*dMv?a_r<T-XZwD?nf at gjA&F9*&4_X1o>6kc(>eRO^CqLPYrunDnw
zG-5fz at rMq)ZHx8^BDQ%PX{>pmhYEk~0{{&Z#MG>J8`nKx<C0UjGFLja=zJzX5^0M}
zr at PjLkvN7jvx*{Y(Mj&g6s<93qhLsNHddSb4OLRJpRc|?%>a#)E|iP<WF+9RB)Z{^
z02cP&{k`b*rL8;M$2&b=JkaZ@&VTg)VA_P4)_etXKZ-3_5vPb)eXhLQa#23K_mfW%
zU+-hgD$JB-;oKWXO4dHQH-Qt#`6&31!<Ecc-95&GO$IX>+Yj0uW6A_l7OB*Q;r4UI
zDZ$Ycq}=-f=%T0JI9;NEI`6CQ2sl6Tn*u2>`w8>`vo&uF at SS(bVJJ$hIGl2TDyUBZ
zf9x3FgS3iqIKQjHQyf7}fF7iTZ~b%_Z at SwzPzf5=PD>Z(+?iDJJqTvun$JEEOZ`C?
z0~UMlD89}Bmu!%7#c;J5FY2NL|9l5hCLmx#$0w4?i$&U9E**+Ata&mf27&mLJR13m
zBD#AD85;9A!UO;RW9}=wqWZpg=?+1<L2{&q?i8hkA*4YDkdW?XL_iSf6r at 8MX`}|x
zp&RKKq(NZlhIjqG^?QHATMO1=-Fxmnz0cmC{n-a;qy(~y^*wFtPq&e($oq#5(`S)C
zCFP--{@;oUPP5T(VNAk&>x8!*+ld3tgc5eyCTPN*x64{EFk8~aFEf0J$IjcL66vl!
zBLD#g|MtT&wRJ35vc9O`=le%?7*Y8G2bct+)gOZ5mi@;obb!Rl+|-zY%2L43iFHxC
z;{u4hqdrgPTN|U!3I!4CgGn*u6iSz9vb(hH7kgB0+kr65Y|mk!UNbr~2<)7cHi{F+
z*mHy!EdT at eqbkp0yJIYmN1A?0^~bOpSYZ2w7J<kn=C=2IAf<h~#6}7LfEr>;p}YQ)
z%@2AeD*6I5J at S#=o143lR%h5#SiQ>n at 0P7Mu{<vU317EKKK6tWbB{R}unFOGbTm*j
zD|ncf&0=Se5PkHO@|VV?!CXw-7nj;He0~!z^OWu3Q=l~><JcA$YC_gn1xvG$^JVH?
zvGG8dY_?|=p at _vY&>R?IJx9Ntht0SKhy7RJ3T?-)^FMC|R6R#TF`1M<N)rZ)%>8Gl
z=w4UjEUPptrg6jlUZQ!1VG;@&nwdO{H|C%Om~U`x`@vmn4<<o^{gBM6y|6Rb-7_1<
z%6dTm%L0qU4DYqvbzD8>{FM-}(}`u@`58?>e{q)<VRRIG`p0ksR(VbIeRCK0dqMH6
zL+_C@^lQxEXX|_Hn?T=P)AU8qfcU@|J?JHB`Oqkgl^LtaYozfh+{pc_Ca7*- at 7q%#
zE)n$jB<R?k355xy3A&E7YK_NbrGM;OQ_~!xf%2Bwvnb&;V+iCeu&7x|iBWV|2UfiA
zjn=4sO4){{;wi)?B^QL}_8RZCMR1pZqwqZzN}diOdJceb!07c%;66gK0?tnn4p|}(
zJRLr*_KB>%GC5|O05!~0P(_LiI;A=4IlIHzGJ_)Xx0_{EikAC7fDtypYQX`5s3fz@
zvp6m6tE-XYwXZ-v&mKbBsUE!QwmJ^qQT19p`aM216FMeOD*MbPh%FgVv;bFySQBqG
z7|D(Vyni`-5>cW{fZnL`WmMC0qb%cXQjB at nDxfi8SL=V28ngmB_E at t$ZwkdTn7G)O
zIYhxg)DKWrm=sDa(c9B%hj(=N#KJ`OI9^)ZA=w_rWwWVlbJu_$gmFt~UYu|p6z}O`
zj?_jPlC{eAU(rG}IW$0Y)gkr*;k_Lf8VE)+0H+Rx(3!IQH`R@>5sH_In-Or-qaS)_
z{vP at nS0W}C9!g1%frjq_1D&UYCmhD4 at WP{=s*Nd9m+sf+xoUj|G)=T+H9M&@YH#%=
zLcWR0WKS1-BrP00FuJc2tMpAQn6S2}0G*Ka7L9 at A^mv&$8UCmzjPLOW`erKlUtR(R
zQVb^Q#LCYa9P4bzyGK7xyk)_=XaUT%oV9I~c63mJVPK^B-=m1;9ZpORgPSvYNHOQ7
zwx(kxT^4tPGc!D0g7XLsdIj~?I#$SMiJkonm}k)1FatmKkw$9`WjsI+JA1NtyKv${
z5BblR0|^N5Ffazld6mg76!g;yT5w5X^F9=~=YOq<DUhcnSq!AdB~ef)sk>M%{2O<3
zx5h5!oIFzWaz1<1dt)Hrc%9uj>11(jQ5`#9O~uRa5s%SX{@_MA-H*EwT<u3!<}Cik
z`Ce$XU;2!8Z^@9P%?n at F!gQfS=I|=G==8kt>v&C`VvMmOHUhs20g_XT;F%4Ni1kC4
zDp{OLG?Vw%p|4YB04|o3vxTGL`|QDu-8f#mH0aX^-`#C2q>Iyj?`oVDPw~6)A~tnD
zLZ~^3*NeC?Wm{Yw+4nbuQIK`EGC at Q(j>r>I%BMZsWJv1fg*!bTdRpjrmcj8ZtEw+X
z+=)EJ`j0;AKO=K}T`3L2HRFHv at MzzMIx$y&y{Xt5t(MGKeHqN3{*+AOBZCP~yPl;y
zZl at wuik>>p3kL|9?V`)Y(>@~D4u5)uJDyMLW4sFtJ8VjkGF0`aRbe#0QIo6+487N<
zc&NgK{d>My9AMq33VkDJncq2}D^9`q;3<WcN*o`J>4>(W)Vi=B_1n*9Vo{M1R?`$>
z;%T+-A$|Nkfa_(~%PLRlx{D&I*)!>{;l0^JZlAKmTw9GO2K)%i&7w`6m|m)VIQq3+
zbGYLrUmBjTL`#DC$)z()9>e*SQ3-E*`%{sfAd}%x-0NTN*1d8*Q|;ND)APR&8A9+^
zed^z~Or1`?7q!LMFzL~Kjn=O;04~J|>wq(n6NV at htEm*BGO+S+-N+!tbz(Y{Jk}JD
z#=(7LoUrBA!zR(%s8*>!OQlL2$D_KI7Q)jO`p?sm-V3X7=|<-Z<l7UVsc|Z^deEM#
zlm(Sd#3&K}E=J)4E+4(pj3H`bf4$t%wuM1b_w%N~v{2sft;6dTIbUodnXL7c!{P5E
zd^`^qpn;s3Xba|%hPLb&gNU$ReL!DQWAG)~6towD%j{EQd*9-UvHpH9&oRzFw5Kgn
z=JvT)<oWf8K*^&n&GMA_QA)lpo9hCNGRxP5jC<?*p`{Lt_7M6IbKV)t%V#5&-(`Qo
zA{Epf8Qj6JJtOC3;=p8NGsjp7e)|#eR3(u!o$`{>!IW`l8&4L=^q;giy}HGVb)t;=
z>`N$@{rLq5B}4qh^q7n31Q$gSeLnc(lOg4Y-fYZRjPK~*B;Qu)zy5%`>;Li#?3>>Z
zjty}>KKs0K>s)kPnOjV+eh<_FEe%uI4Y|FZ;#jdgZck-dxjnoYE_!l%=``B!*P*K=
zA&kM54rH+4yae6GolsZ7Rv#ms<JqYq`Z44ycMv?k4RxDu&xtOEuc<>U3Ho_Z{fB}f
zG+r+FeOt}+C~T&ar%aP&ZiR;ao8bK;8d4#q65P)^U;C!f{Ai5AdlzGSe{P+kX at Rnl
z;JZY0pJvv%d}x4pj#^JlmS5n}ugWFeq<+hu5;L){meY&_mwZ8TsK2P6Mvs7sZf^N1
zmmalPpCP``)>y8PE_*1Nu?GJ>l*G$@z!$!+9F3Gs-CmN|^LX;ou6+LrPVY8IDClY%
znbn3_f0PmJ7kjUxLKh$14b8#W#2~v=(*>FShNXvHEl;22#hzd;6~^|qgdIK8QSy~&
zrC2gQGp at J8j3Qw!w6krg^*s146e)+T*Kx*_-pLPr%=T->6PZT+dN9XGo%82dZGe!x
zET+NJB3Hc|g4w25{PFEXoQp<&M|=x-)G~PVz6xeR_~nM6{+Jn3oe5XJ<zuZe>x>4Q
z%c&|HUvm(?PAhzG^d8Mjv0#aLnmW&;7Yf2SWaF4g1?`?=q$k^BPLD-rFgIC`LW!7!
zDgCnX0#};<N(^igS4bpy#ZHOL*3rw|=#6*^{V?4xaB1vQ=SE}tjIr0O?BM}Yi%PzF
zBddAKy(T8zF5k8mN#UY|?lvc3)Pb#C1WzpNo%?==7M|1BGK_jN at i-=p`1L?=t<QIM
z1x0d#uw^)dOo?HO^{ZC)&~Qn6rTm!q0l2T<P=bQ*^Qm}K at P%NVwf#^3hgY+$0?^EG
z#vA0Myhq62OuoDT6^FSG?13adraNd|HR at 4`mK#y#xbTwhed-?NZ~}3;glgJQ9tYYs
zXwv~~ZZKbw`0^NRBt#o|3cFk+u5rN$is?-ma at U|_I$jQqx#dd%Y5xi9_Zu?KJRAeS
z7Qdm5z5)xfoe3A6Dka21xnWrS!sfxz1#wtl4PLMrwr;VEe!u=w56$*(xx4GQV8JUF
zzx%WwpN6?a6<R?L)tR>RtMSpb_s$YE$v<;nFv4a|nDaq-Gl^X=$S++P6f4tY-@|i8
zJu(-j$w!yCc*{nN=-2USCV0{p%ERhzhV&U=PTzRh93l<|Mi;tSX(k#`+NS+*2)<4s
z+fX)MV at 2QH^yXfal+9+%yL(c2b$D0=6)}=td<uU<s?HiK`n)mWP!vd!DGrNN0M(AS
zxtWju0gI#6NHIo2BCO=bx?f3XB*(a&WHiGnvPqtZZ&ruZY{KC=W9>PU<L?po%BYF0
zu}Xfk2}<iHmCi16&yDIxd=A3*Mj{{_KaNGD!%AAeyg9&vYO2^co}H<#HWLHC*L?xJ
z$*`U2`S3XGOj9O3Dx**OJq92;BF=GbTrJR#LFhc2advobk2<<w+_Rh7NkuH{SV>&T
z@&`J<VUsqN$-7caag5+Fr>aJIs*n_aBp8|q)>l{gNUY#VzV8l5=!bUVjCe~C6^AJ+
zV3O}IGc at x)Lu5$9=))>1hdbG8!6lDTVyNuK^Wq;L1V&{_gpRRIr+0KxKsL?E_Li}=
z2&DBh$LkAsKtlTf2DJp^d%zhHFG4e$8N!bMZ+bz8hz`r>!y0`^#wc4>Xguv!Ut~X}
z&clz0(SG%A<Q}i|-X7nA(wN^%3XS<N=|nHgsd9KWz&e)aBgIELq^#)a(wnL!5;H<g
zQAGdiCPkH at z)F2qY0UVt5;c{}?evc^BEhH(h&Jx(Z&D+NsxOqt&h)Sn_>lr>!}LAc
zTdoNcjE#;@l^H1 at 88F=cv;O;+X$36ml9eK3-8(Gpk&p5sBf)ko5cUIED|fN at -1Vgw
z?2=#ba;2*EGrVVt*nqu+1sTvUQ`MW<L2EZ*6E3`m#yY%bC(MFndHCI8<oWw44K~kf
z<L0IG>~2;gYX+X0dn&4wt6r^EkiI=O2P1y63QG^5ryDt4YzW#|*ZVRjK9j!y&HtWG
zi$Q(e at j_F_*6jsELlQSqf)N;RFdkPm=9tNJiYX$@Bvk(^30N*Np!N1>NZi+LFEooR
zm=78vg9eFyxG(z&To3%fsFoKH0j?*xTED4gA@<{&aUll=4HaLPm{-Z7^_EiJ^<Ayp
zlBt0 at k1Z~|BlM3K5X}Xe*fs{w9%dIX<=+d#gFd8O81nSmYeYZ>@F&AeW5EVhjSkcE
zk(n>yY==!xI+_9EE_4^8C#*Re-<*dsmXlJwOzBP47u+E%i~imoOI*3eX?{{?ef6?;
z69=TlF&RZq1YJ4)N})Mt{ZLC3Iu$x}L9?TWK1Y8!S4l|r38x&bezgmfP5PuF)WYP0
zJE+)0Et#M=CSjdI;)cnn6F-hA%EZ8GH`vX`wDifKw9|eFRMQpt7|8$~5_H-R=(>5J
z7k(Y<fTMY4A=_&b*rF3Y3<H-OXFn7M-Pk><*zW?xI6(6C$vpNx*81^ft0wMc`F10@
zUY`)XSsM^=+UJC7zCtQmRfFxQAhV9>La1+yLX(A$A)O1(Ri7HliqO<%S|kJ4v>hZJ
zEl9PiNx5diBOA%>C%3US8m3EPFh1*Z8 at zwJl$@h;$?%e|yIfY(!OUOy8|Uv#I04)w
zkch at PHuFOzz6YlpV?v~+Y%n!Vw*TrkRqHCP`@i2NJo)K7Pu~^qz1|6U2z;qiU$?q6
zp2p;y9sRQGM}b-dL`C&(_Yst3*!5Jg{L at xrYr5X|XLMR1*COLoQIVSOaq1iw($w~H
zMozx0<_vnC^V4b<%Ym+EmzS4-$+kH?pN7aVRCwA_=#mObo~wT|8oGc$&{Xg0#YKxV
zm3Yh*q@#FJU;Wnw8Gl(`V_eTyVPKtaL_regkNC1W5d*THjK5WotyCR!zZtxN<o{IM
zO<7U=a=cKc=OXPr;9B}t=^3%g2h~?*?kaDSIko7Dii<_T2oW)a$hT=R;1BfAKY#s7
zJ&WVf5<^r1+~3A&ZK<v+(xrPxx4grb%h?5M{enB%8Ve=3j6tI6l>Euw at J5heyd>@=
zVn<N_DCIK_^8=2py3(Z781E$cYX`B&Pq at 3aK9;ggoWE at byXpSQbN*t|_{AveAyPaQ
zKRtg127^E9>FJ4Mn$A?2Hm}`XtO%S(O+0xX`=Q3L%4B$becc3+VWOaQ=+BpzFAlR;
zxJI8*blNwussh^)*G~J+xA`7MzOoD!z3TcBI8;=B`1<D$QPgFln{udw0R;5f9zsU)
zS^q1ZCwnV}DakZ)#e8^kbZ#Q#Q)3h3*!xpZLK$2eIz;8PZwU9D$9VfGI(jbP_VTD|
zROV#J<&A}+6_BqvDtnQlt*XlHTE&MuRXcs3&TZrrj30ie9}$}>aDlcE3tpI*m=OD;
zMN`@61cgFpWbQB50{e=K1cufFEuoi%J$aw0{u=74182-wk&;Sv8T))b+8W}MhJ?>w
zBWEXPXQ(FQie#Np`h!1hS8pyn%gxBCnGV`S2PH9f(yMCZL1gH&V5@==MFAC7_r8H9
zCMIdXT}0N9$%zRF5PODsEU)L8X=-XpIyqliHT%D`?Kk;3iqY2L?ovPPB8+(3IPLNg
z=vmt5&)-Gm<U$s@!*QFtP(KLsv()~8lf%eZ7jhvg32|jQAoWj-(&t#UfamDA*y6qs
z&malm;^(jSaddQK%xeOd#EGNt*jMpk{tWo2_shfy`U(7PdfsSV8sU4@<=kE>0ge4O
z{l|P$hFHQTRt+PmvQce%UKx?We(3N5Xf=5P#pB1Gc&h3e8aIb^U``$m4%@B!yBlAd
z?KB;AN?@m?K<4PAef}yUS!#KwZp087QOqF{R3DBwCDqH=GyzSM0&OpD)$>@?;W1#h
zS2Qk8fv88k2b3BQ<@2aGDMlD1;zgT$3Is${8S$c|$H`K$AM2|rac2P0K$?e?Q1Oo!
zra&DaBBmUimmOStjg?C{p}Y~SFQph$A*;oFl<Jh=n<V5&`szh-U5il})`yP~YyED2
z-!Gn at 5(_reOeQ`r{c^LqLW~-D>GrdR;JG8+(Dkc(ZH_-*KE5n-n<!E$V=IA3`gzfK
zeWz@~HEQ-$Wu}>GL#+W+i;MsTLL^1rul_TM(5;Z!EcT0D9DCeqo#&4U4BG$GdHP*a
zm4SrMWpF1$RJ)dFGOlHVBp#cHy`TIHchK5s_l6n^Jln`=HhT5sHVOCeibqxSW!OHv
zuEcxRb5CVTrdY1Q9xaeWspe+laTjPK|J99BD84!+h;NdS#H7TOvVd9+*2bl%4$7Xx
zDEag*Q^RW2(WnK7swM(6%GSMtE>*I{nREq%5cUf$Wfk5iR-P^(ieN|MN)+|CCrMFI
z4|RP;5O%j0>Qc3Yi^V&6ca at uTS~ZVBYJr*VEs#A^n4;HE4D|ot{A0e><CZ^UnXkth
z;<9h67WmZ=>Gj4JU9LRni)bRJORlkVm~ZiX>ZUgXURSBUjx9se#{@3zDaUR#qvT=C
zA*fU&kE{tRO~kVH4<WB1lp5?;D|7HrA9KB_oe#z14B<^T$1H5l(l7=6Pz0tEQ*1wJ
z4o6`5^S<2!AGcjB51|MuhYm-gX7!>)8O~`X;D*Mt5DY)`671W+>^ojXpZS9_C1f87
zj2Zsr&-0E8_kQNFknB>3)tiJ#F)Qra0h6pQk5#g|JR|jTFIez7*U&w+4|9sG at t$Eg
zXCv!3zQusV*h8KC`VeW6 at 6Y)UA9&Yp0+F>uwfyGf<*&RrJAV|kRzQ9|>u^Nf^0lrk
zn*`!r_6838pwUZ;jeZ`S$ELF!Sia*s=Sv{r*hAw<p~~s>PUlf?-)9<LHq}3mc)#&z
zQ&lHYRT!8~xPJTuJGQl2)0Vtzf0Pr#%tQ;SG6UV_JkTJtQw=LdncSs5qb2}+Wbufc
z*93ETue-t*d*z_dy~RU at L57Ih7f7q*X{Ryh{*^JdKL{Lek^z>93%xYZKm8dt`lvRB
zDBwPgTnNTu+T;#R?Vw4P{@9FB_K*cm$6+!-4!*nKwc~bZBoQ57CK_-IuT&tHa$h4x
zg_f0*W5&viX+v^Y(hFPRnVgim*7lZ}?=JVOxBZ07d|i<HW;H$3^?4 at PmsW3A5np5E
zT%F)dhia5bcTq(Vf5vp}%?RZJjO=bND@?Vtsl6hd0{V$qDWy0b=e?jWEp*EPBo;X9
z`5{3x;>6E8F at m+zH$6hT_#>(1QwM7nd7>jA5yL<(`wl=K5(_ZZ)EBe3H$zOJwYxb@
zzh|pIky7l6gB>n};&t8=rd1~&B$aq0r=A~YBxSxRV}VL6U+eN)j${6T+MbW+KERJZ
z3ElZW3$-^Az5_co4Yb6In&z9RWHyTAy+Hbf7_+ZY&VON_EJ&{mUrB>6QtC99%bYL9
z34M{Gaaz5(s<mpQ;H)rVG7)`evCrOVb<X^*S+>@rUXz$#PrU at k*Pb7$SDx~6<$P at X
z^x6LIvk&p%>lFUCKSVul5R8HwZLy>7#ut@*^beKk7jFF~Ja#kXtX@(o7EUZr#RqT9
z>xHr>6$xsG&4 at zzqKKufhD49Wd5NTSgc;bp^6WeayxLXnyKizxR^$>xR`LtSt^+bT
z1oLo*Xx5A}K<)SRUuo51!IUso_?d#U&2+RP!u>54C+1{TBQ7JM5Elu_)LXyCTR$%c
z{4V+2hr8P*tZH`+p~ShePwRpCD&eus%yKxkH-j6$CyOf1DkN!}c?>Y*LiIy_THc#A
zsi_UO3~#*YmL^s8o+WCQXOo|fCrM^L%ED~#B$Vzkt%fg=NMH1fl_Imc>Xu(si?n;0
zBCXw-ZwY3!!it_4A7VPBqP%?-kg(6V at d^=y81l<+_D#q7vfPS|{r;HKh9+L!p|`Bc
z_#N1Bo3pL$CwE2C=R~-a{&?yOpS$SWJHOfmZ_n`DNGPe8f(lfF7&IBNOIL_ihQnvN
zB3JL$J8vwK-xma^Ty`xSKQMF&L@;j-rcaEo>9jIT)vy`|-`I8E+=iO6-F0Y8t7TWw
zDIK1VRRW9m%`GoS*^PG+RjToWy5aqWqrC++|33edmBDnF#&?`}aY>Z{9#g`tFNuxb
zoWnojPhO9kNCte>c^>C>?fqWL0Q2zBIo^zE4AUBFI~>)OHYgX6gEMn6xT+N^gvjs=
zdj+e3DNfI0XCBBiwvf at -#<otI+!SKIeqO27#-5MXQe=96A?(U=+HP8sn=^;;+=4T=
z>zC8&c=LMw+>W6U7~Am`etUeyQmqTUX1lS;3*UqEUVaP0 at SFtL&*pZP7h9MCeHX*=
zp*?Gdeesu)jL3OUjKiCr%(~pY8?_6qjbqdvTg!uY=8ngX#N|PBY`mH_?7+7>Mhg<{
zb1UfYyl at UrIoy!MmFJO1_T1+9?u*eJrvyb2Z=-MJ@~l{LC2{y)hJ+xP_pJs}-n%Xy
zGYa3~N~}@PNK34Vi9Rj1><q0VD!`^a^l*RWz<7P+>NnLUv6Qxi+JM4xT~GMcxE=MA
zzH^s~B<$arM*q-Cj^UpC{_VD2Rz!t>^K74mxkb%#;I3v7-{53?-~BI^*=Yj%)9#>$
zB6fm%pM!Lwn|k?r7fUv#oOTO2vrGUi4b}xwjRcV(ZeI#{=T=v-m(iRz$hhpEBALr;
zHv4onf7Q9!j>cY8EwfqjhT>$<>we?a{4VU2yg&Z<xE<|HW1 at i0!;_**BQ4M^E%e}-
zqn(+3l{t+)z0<yoRm(p&x(U1~>9nsALHmZ?v=e;iv1W3$GAf(Qp1(c*JOnS;oUw{t
z<9PYX=c=0Kg!A?=2YzEzPno8fX6Kh%zo69dwD`sf=|`&|6=HOKw`4jP|L|DY>d%Yr
z<QNsFI=LnTW!fh`o6e{^8HeM;WvRRSSDgtNgK6)K1^N`c6W*6va<!DnXkKGHe|Y)b
zC5ZCP8~(KS1 at 3$qAzcjHmklo2H}g-vfs?rJ8qKO-)v(WC8aJEUMTfCl-iO<dN?=QU
zAqsxp?>kL;QXi6jeLlYB<v{6Ct{n-e*gnxma(BumIFWK3@;TE#;Pv(L<)b5C`;&C^
zYq(!XFn(4pG)a<tsJAeo65_(aB~e}=tBZlwe?N|JcYNZYedi&jd8t4(0?K3wu7fS!
z&<$DQ`&xjsLT%Lt(r5b5iby?1gm&77gS?Q!XMvJkb#D;&e;OB%4P at jRy~(S~PuB?@
zwnF?4->6wvGYIg3VRDOTn9RvDa+{9P*hQiG_y8P%6w3>5^r-=taG<ObhF6-WL*B;j
z5DbYTZk?;X7}$3|uU*2O5ZDq2F6(QJEyM8JjjV)nfzp#7))ZgDrw)<PtFS%3Sh at so
zK1#O9H&D{;E5zbFc`hs`NxyQIy(%1LBJwmP@$SuZeyi7)p-bAF8*V6MReHB;<Hzay
zA1j5*ujemnoogBdm)&v}I}a1GUxCuW`FN#U@@a=rn`cFFs&*X<gR_aQ_enF9e*=4i
zztl%Gi<Es(a{o3#JaPa0vVURBtPm2Xl3aJTZzjnsP2+ODr~Fo5FXXSQjQk!HILF@?
zD0^NyTO&vT*xW5Zc;{s>N=waeAbsR}eCyyUwX3DIUC*^T1iX*yXRk9|WOo5O?Ob6E
z7Fzb*8cfnLn=r8Jz6|Z>XiDvND&!o at n~A8wwvgG4TFdzTKQ2J-8R~*vqD*`Grr=BS
z_HPO#ol}*oaRZ$~ST3=GqeIZ!swJ1$R;mogSO*tx9V47MV#A at 4F8cL$U9Bq_91jO^
zHPA#Q!v`#NkW at 3#t&!!c*A>rUxPjLP@`)JI=ZaMW#?3qapJQQo>pw=4^l$6s?wX38
zc<5ku<H8K9SomUAZaMHj#UILMbdgtwm~}FfFJRwiM-2$Mew-{`dguGta at yS5yj2o)
zmpafNX2=zB#0N>NG*G at uxQt~^b7%Lo*gr8O`l`!wvmexS7?CcQJed3fXQWbKkAFC%
zjRcFy274lkfjb}Vij60erHVv2-KOK=OK#EJ*?PdSj9e&Rx<jM;H^Hj|I5R3SU9IbQ
z;%ws2<Gx{Pd!@urA at Bi~D&qQt^340v-e6x7r%(l|qus~IZ at Rr*Z65ngxBJjDLrGVi
zCzoQy>P7LACe5-av9otWMcn)QhIlEw3J6$KR6NcyXPYryXOT at 0iCO^5ov7k@&7g1Y
zgVXLj=nlF4B{%QzPG=v|;#V2_NrHkM at y@7&<KmmkGRKN}rYPv=x5wRpqgvdVn|>4(
zFi$#xon*<VopvH^nFbl}+;Q%{tyjc(VZbA>XNa{n`2FrF*7e?Re$+n88WaC6Te|Se
zwRfl0 at vOnZ%boUB+0D)%t!CKIU+OEMqEOm(4zXX4kY_9x#zpg+?oRvQL!J|(OSR?T
zXC29VrIsVEkky;S)4NMty%K%IzVKjKK6 at 7*Pr at BRTXDNue>8=}0bkt#Gjwx~9Cn^{
zCEDTD7K=$gWtvnLtTy2+bE#%8CvpkX4!N?+w7HN9u6ZJ=h4^Mmg<tW=2|^Y@!US7g
zF4NiaNilr4l2+8ru-+^DWW6u=gnx(1-i<O_%8Y;1GSfTIQg3aUo!g&3MFN+61a{f^
zXa?6hP+8M8GX$r*i`SFxx6D+QV335~cj2HQJ|Zv<&KUv2!fmQC^yHUqK(X&tB|f<+
zJA>%6+BEnr%Z2yzX*x;kSY!KGS{u!@+(PU=f&$$di^kK>!nt>eUBMz{d|O!<njB|p
z^+L&L1ioUhmp-^4(+>CFmDxE~mlk^3 at n>4O#HarIOBRNAOIKt=q1XqlN+v2z2Z>+<
z>GO?!QJbx<E=93#*9R45{C=+zCcQLODCn+YZat@~a1P_rY^+ZoY#gWk->e_ at qEfC=
zqx3=_*X!kN0_G>qJOXxQX;sfQJ9aWpnOqxT>bBv&mX}Vy1yTEwsXaiIomfqO(|-OC
z_xUlSK3)+#U6$WD>-Z|-ymdR5NKB$yljNI9>vbQ7Z6+gji1PH_Hc<n52`m2l(6f}`
z<zQ|b$IIC=q1od$e at GOkz~_L_F+<l>^eGq>y=jY7M}G%Pz2@;#Bk?Ci)al3Z6^6Ew
zb at Co&B#$t>RZ8Yg!*iZXwwL&D_3t3=$KHNm$iC~;M<}fS6rVlWK0+>tR6Qx4-m=xB
zSP}pDGx|dQpPmz18Ho^Yw{5lPGVPQ(phsiA<7A!(!dShf$1|G7-*^{8i?fsB`s@#V
zLz1e~NJCPY54T*BoP(cy)A-p_`r6Ej3js$iBST(&SBN}KEK#<^hUcRPYy^K3tt4BX
zEiePsC4CK*9yQDR{6M~j$k>C;gyF`51pox5ccKyYwzHscu!_37!g7G@)LCHQ!FiL-
z;9iE%hHBF3$wt78p%BVrD at 3x-4_RIrpNWEHH@jqiqs*(lZBzWC{Wk099LhCeDsmT!
z{FDfO<$8xV8pHyv6bh{gK5lDxhd{uw-)!>7eg9pw;4=e*uhC)1Ap((gR^BLQ{xih&
z4)a9uyoesT7qWJW3Zu-DtgPYYNeqJo(Tx1l^crdLJ9|!kLld$;Yc^tiPL`CntpllP
z7^0T)IdX@$6>~cm&8H!&&I?&5mml99d&6$O8xhO|iNC^$G2~8`+x(F$(4^vod0|?f
zFiT`Z;|&0i$1l0tOVDl-4gwxhDd#a1pVvRj9oRs2;1=(M{-&}IO>TH}-^SV at w03}*
zgd`253s}nfrt!_pfo6*_{}|N}3r$GUE22F4lDmE_{6q<eg1B(}?AMH)8=P<jJf#ul
zCrghSE8tq0cA2svUx=o2x*(v4>(HF8E5ho)=lrCH>0o?%X at hA+lX}s$`#6Sl%oKB6
zcCwv$kngwLUB=MH8#I}l{9E&L=A>j-s~r_{8>zRBblEow2wJ8r-+pU%ToR2}Gv?`=
z2mW93_$YPPt6#0>)?0}BotMO3G`bKK)+7m}1X?D4qni8FH1cus^FV9p+?*a=U&^@u
z(_-n(@F=AdGnh!lQ at y48+ZW$ugC at 7CC7yOX{I-l2^AM@?PY-I9 at ejVV{%9 at Frlz9J
z^H(j*RXgz^JNz6@`uamf-|jp?NHA5kpMKJoZt{jcn?+KbbKqoil at 1R7P>POaXikHn
z_Pq&td}4A at BM{@c0>^zyESu}zee!<6JYCIuUf4C6e|})2_=lZGOhb}(m;ByVtA%KW
zM{WbW^CZ~|)`T+5T->NS9IyDo&V1i=m>OQeW!D!t(?Z2wIuO8J=1 at 2Mo_-^cO<dcF
zjgJi2Cn~syIVmBzp_vEb2ay^~X}iV4Q3EH4UbT0xtJt*<V at Ym1D0v!++0=thsN1iq
z%tG!C;G)b-E$T at hi=IF>gqqJe6#sOfmIaJIN&_HE<6p(i at SC4Bnbow^Pnl1h7AL&+
z1VpuBtj?GjgCbR2u1uaTUvhQ?Y>joon$N0m(I(adXP$bzM;`js1*v&=J$3sOl3M5h
z=R;&XJa3?ZE{h;!9AkIvVjXt&uQUF1+%Q{Z`nG+C3nHtO;w1lg+w<EtaK)z#eA-YS
zeAsR3I1ZmGByNf7LHMpVX=0~YLyM%>3!^ro#KfL|-m6GS-%XZ(nNY-5KT9J~(U`4{
z^;HpltSD_UR6Rjg at cstxJlwb`r6Fk9Bj3!TRz0ckWc2-<fcnOW0?ug|cJg|=g|{oA
zO<iU3 at uHSc&yy40n!S-!hqY4i<k5 at vRLFR}Bes8MZVpVEzyC5L34f=C_2ilZ?NA=e
zRi1^?dvq_Qvnq5c4uAn_(u)*c-`FMHR?dN<$B4JO|MbI5UpN}11vfg=UCMH6e$O+K
zcsBda`i4}oV)d9*sy#Po73<^zRCbt~MBuvkxZS3 at t3yramnlRH*xnMm`l-ego!6Jd
zj(t%ap558B@)|sQ9cmLR#--)iK7W(bFjh#<V|Zw1(8~g%iN4<6`CobT^>;tfIXOOs
zLAZXyQuXRXhdi14(WVP~Iq)5IlnwP4zrT2%b at Q1oxl7}L{K!(le($DxYeSmbnu<ag
z(H<X!YktsiFZ;;Kfr|?Bm66jczvdgN*|$}U7WUnnk>P|fwp-ioSC+%0UOhd%*|{a#
zU3nRyq9cX9C%!*J)+JKZ`xaWh_4KYw=hd3xK_DB*fqsHa|KcTPU4SEO<K>&hIboCj
z#fM7`e_6n;dn@#Z!5iG_u&o+1o-)MMo^_d3t9$9`OqyoG56G+Yl){e+PBCV4dNBZR
zg)`o~NjE8){3t2=)c#3$l2E+Q!2|&b1A&aXY{GHzM&FvRD_Lblplz3|YS%`@m(|1_
zkDpD}$qnr({ODZ2Bjolu#2yNhT8t#E(RMHm=f0z7ILFdr%U}~>NwEpbf>?zW($M8i
zovNA%wt7 at IhVc#z;&`#I0K6o>Pdmi&m5=Dtcka8vA3hQ<?vnKbdxwFovRH{no@^3=
zZWUXG8-&4*-c#AQ7yfpJ2-V1EZd0|SD?zrY_`XS>!n at l9q;E3;<pD6}%EqkrkMCta
z at KT5o^1N+C%RCw<$=n&o_rrHHb at B$4LCDnqVbO(^jlE&xh>YmI&n#~+X3!n_rY3!1
z-64eWW!w{WtbgZ8iIqg?wIb60McqDFRV_t$xvvYpH&jWE!o>{#5~sA0rp;rZ4zQF|
z?IHO9lwFnp1PFizKv?sEXcF*3N$Fob|HHV8QwZ??VdMbXO%6nXfEOTkkushCZv>Dr
zP4A$k5GXx}_q<p!r92ZU!;5Dx#nb_P2-n8diQU<<P-zPXBDuX{|2^dUe-HWoJ at ona
z5Dy4!zxWqC1qfJF(dXQ?D?5TI1PaM9sJUGr<SMC|93yzW1k^IHP9r$8!xHn&zYmBj
zH(UddB<gDD-;1Bh1+ss=9{oydZ)Pg((HUT+x`h0DiJ|H#g;#tV1jx}<Sb<VjZ6?|`
z1J&?H`{1HJPQK>e at Fu!k++itzZ`o6Sh|xX_pDx2|2LFo?&z!K&f6>O({o5aS+YXd8
z=xah32<N0+O|^f6&MeLN+@)%c;IUj-RbY19vxr#>Bz|f52ey|ihpmutYu at N{ys&SE
zPX{AYdqr at mF!8mclD=p#MH)Z+hzr(fBgkGL<Ba!`0#UO0CfajJF+S5j0;2d^*(Azk
zN+{B?$Y)su^ANI-Xdi61!pYY*TYxv$3z_Ytu8iPoTg~cP|30uAO`DMY$BUx%oM)cl
z at cq`fVpchD^_<zJ1~)KrKN9U%*x$vQl!TB<3#abRcT&sU^<?_7Em3=_d;Fd>_(yq2
zLkm}(+U!%}I=o_8cg at pxPr)H#ALqa5(gnWv6d(&&7iuBZuShs*`kcD at gMZ}b;~f&F
zPg}~POcoEE1 at dxPVT7s;QQ0Kyj{Sk5=*P`E<r3fEjO_ESLMvqBD>1)fL`cmEWH!9G
zGaDW87_}qImwy&GVynI-Yy?Tu8UBnBe}UGrfjwwB=s7z}TOUTkK7Xc-OMbTQI)*;x
zBX3~FfWgl?es7s4?VVThSY{K1^v+9}%)h+xXUz^K4U(YZ-{15SN!*)St at Y|Kt2QOx
z>>v^aNzx^CmBH}<wnQnWZioyg`lUQFpj2769BmqnI?+BIXF<Ufl$~I|g078I@>tP8
z{G}7yR_cHh{fi>$wCoW76aJRl#1Awrt&g at f3K+}rRj||>xKta&(W2o&r9HZ!coK|4
z*z_C+MILZP1Nr`Q at _nm3#yagj{HP}d`uLLayMFA6`+g-CZ&vAOB>OXsP{fG$KJ4>{
zj31RYv<vR=cSvYIu)kARsq270%fpX8cemt=`TH|Mo-?)TSsPvpUOW$JHl`Vt7rG<*
zQ3S1eKh_7Zn|{1!z4u?NhPQasr!Fed<&6H^N1=b^&>Rexy9DdtOg0vmTkul$`Nr45
z&nW|hgl%vHG2<QZ%(i74G0HJk?*t&AmM3r=WT1_8x9k0+il=g~{xeWKSiw7wM5nVh
zN35E3C3_}%OD>Q?c9*!I+dxL*!gjGDS-a-sSB!<;{BIMf>*F-bds;-POk7I$l6t{!
zpQ1mS2#cxbBp`JOhEFjh4saJM!sv4aMc)#&hygfF{bL$vRq*hR5nC#lbJ-+|2<g!p
zf at KY`E9Xd}038-L38n<qn=5Dmd&Z{o{f|A#ywbr9$2EN!K+o|2`YqELi%x>^8QHOD
zEk?`ajzS7#zyS#A4vAq9e<3OO>ejYIMavkR3NTYwy?}2v*tJ0Vc3ER-G3}ot^)uV%
z{`*4h|9){63%>43)NpCO!9#)Ek_R_HJO6z{aku)f9`XbpXVAqx=~q0n4KEfz7R5hV
z^c`DgjGqcVxVJ5tCb}ft07TNt$s<7jKK`$D7;)%al8mZkr!-?&Jl&Nk5ZxEa1gWrQ
zoSqdpt#&VDs%7cGTh-|ojdPWby2=wkB8z93HlR+PIXFc?K#oB04<i$^0mw}9kV+^(
z?EBPUFDsco1>~qE6HxXs*kCXCXyZbj$>NBp{P*}dAU>keN46GoAEO`Oy>`&~(f=o#
z7LYCI8O9IDe*fvk|H at Jhy;87*#u|PY!Uf6__~HInmh4~IT=e3wWkB}(|5{Q`<5V>X
z{)%TCdqoUTaymwKjAB6PgJ&Q&lCi~oA7)P}Cg2F-axT-EyP}a;p(z}`xVm7e<Lq0~
z#w|#Jtp1zt5iSMMytYXgg at H?RAQwu)t!r>&LS;S$^6N7vC5ZcQYN8chMG^&>(!%n2
zat3s=e0Bnue^W$;B0NjsvC}?I=^9VD8UG9=yiEaU at 13ti?jVgG-8PyC#sKTn(R-&V
zbIOq|;M4?~A?Z&lInW7AaEuU8QcjTGPt0r-2q?P7`jZ*q#y+Qts30`M53-HT1Tc0^
zv(cIq2(S#^8aus2t3m7W=1ah6BiuglXywO0i~9sl#|&lBm}#z^KL0koY+uD_Tg7N!
z<&4u3wigSwq=A-4O5qfz04$l*Cs0k|BK$jTr~Rkey?QCFX4TDM!Z1BxMMvxWoum<F
zXd!M{G-(rxa)u_XTR$4>Hp!xhp-F)d00GjCca6YtBadW-YSIEd{bQy8+>)g8cZg<^
zj)pM%O_jMrtmG2SNfCHc8anhGI^+W#O6}bLkJQr}CIFjJCJTqCU)e)+iD;n%^iY at c
z``St	v_quP7qOI+oTdR;{nsg&Ai6<04XQe*2G4n>hO8gyW^(O0|P;!rB1Krej6`
z{Q&bC%{z=v)plygOo0#@t4(dF9s!VpetjVGMXyM(9n8fTc^(%lpkU`tgf&eIJ)WvL
zbguHFYw4xY6E1?i$mN3dsL~z=0clAp17V?meNTE7Ugi<hahoYj&)Xm+k%)Ic^HL!9
z05AexWqfv(c(JSFv_JB;$r*bHEu?9BIW207JDi=@(!|M?TeW?BWW&Q8Qxh`)*eRJ;
zb5Y<;xx9kLa~R9TLv-v)3lJT#3%k)kU+B0Q6Tm3ehdF4d9Ia-l`{fAa1OKB`7-41;
zOS`rIrfZr;uh*oFq6|7VzfhO>bb7w0Xq07}HjbK%511TNcr%<HpnG at KJ8EOx54#dg
z&lmQ2y{<YfOCgAs0IUz}t^EOeOs^wGcRHvP>#sCA+xc5UB!<&IKx$V2I7geft_6ut
zoc8shLsxJwsHT(C{_<Ey(pO;&BLW$vdqnw^q6r;=HFc8yTRvn6V5gaaVxj}X+B!rz
zfNVD$83oLuhkKDcTA`djTr1&~ji!n2<jq at 0S1xG0g01kx7vRIZ;hV5FK)v(^{r$r-
z)*kj+1oNEQjai)s8<_ER|K1n+4b#^bgYmcnXon_Fht1Rcb<@>#(<8Oh+CvQ=#bJae
zLIzU{QeeE6KH#EmMN8$BK;lc{9i0BX%Ix0?3%7FLz$L7}sh|;Z0oa at OB4ymyQfOT^
z->Y&jf@;8a<={<U=+FWp<35x5ZIx^oQRmPkSxw_PbrGda0k|aZ#h~uszK^Mu#25`v
z)fZ|@%r|sUO}X4oLLs9IBROVZd(m$Hjb|I75oVeNNM^_m3s~&%Tp3)<h8Qobx3Uo`
zw7=$zeBxB~F!gg$##aVHCq*SOIdfNV3 at m_8SUG6gzHLh%Jx^#{g}~Gqc2&XMfu>Fq
zGY+kIWqL=1wHOkPRULzE=GZney~NY=u1c2>KuKx>quhy=_kQJUA|#y}?X0r#EKH-L
zdFimq6<I^^D0hbId|Il7U?+XXwu8`)4JAH7OrDj6>xa9sOdKnY$X at SgWfem6!b;LX
zJ4IP^iA|pH{eG{+L#h5*pCVYgZ?>kB5!Fbe**xuniE2`+R5YO+>1&8 at TE1J)Z1fSW
zJNUVT$RIqfC&hMYmL|R$cm2dp&}v<EM at fSj1Tfu5gQA8u@w}w^Y4m>3oUlW>{*)(l
z;uY&pO%@ew-(Z&I;NSY5e*Y0DdXn;b<xGEt7?GjgM>^7eivy%EV6>yR1FXgLo=p%Q
zpx^{h+=9SBi4N|swVN}?KUrcZOgyOF&wSbUHt$LmG6(QR1=a<CrvLsovG*9(!jy&A
z@`qQVhzuY(fd)Ec&=;>RB)H(Zuovc9*%(DY)2jvNUH{PPqD^0sm-8&?hd8kIs&TDM
zoJv{wwD}UyzlYL8mjw|mpTL&1&?Z*OSC(iaP16SiFHq`b+a;KyAJG9`ACfh%u~7`@
zAjTz at 1a%qLH~O!e9YM{F=aPqO+KMLJQl?JS5iD^8 at LUCgF@yBqBh2Z8ze$Xn*Z6 at x
zg-SZ-W?meQ5z|`g;?RC=8w0W`(DT%JQZ0eu#{^n!!&-I+_nw~DKO72st>A03*=vH-
za at yxTgbuJ`*L5~b%aQ*uqGOZ)Z~{B2YAl<RQ@~#LXl24Yz>sQPI^fXmElh#50{JW8
zRX&R|d>s;Fowq7t3+K;bEP at l$v40&u8l;7f!XGLdo8JdKjKeoPez8K?%ULHi8-Ksx
zp*;FegPH%`GeZVirGf3<fj0 at DntD)8;156zJc17CBZHBNZtN7xMs}FWVOhs at R+;Ks
zK5cqo=n5RjP?D&B)fezl{z?Fspii8Q6WSB#D^SIm-~?f6ew&UA?!bk{67tZ7L^qz-
zyUAO+18pZyeCA%XuphF#;|F+n(!hyTD}=ZuZNZQjG?8A}@rz*t&SVx8%h=Ms&*+Fl
zU~!5^j8EuSH+q<6;2l6S8Qrmp`FhlsH%|)8ra@`Au6mgjaPmZa0hh2rdj4QZ{T8tV
z-cT0BUU(qQT(Px_Q)0O1A^AT>q(jzZ^2AV`V9r-greD2)6P$G7(-h_o0U+W-p;`op
zVtT$29s%3|sS?%0lLY8g1{?E)C_tEN=^9XGsNqJL5(J!BaA~-kQ<Zk=5N`UQD5eCx
zJuo8T(v0!{jxLP|kpA>MEgZ}09k`@q@`ysW2PO*-1QheA#`M!-{T9F%&PF||W9ruc
zEE5V~5|!b$aECq&8^9hU11zqH5tBfQ7W9@`8qa9pa}~gtW48HzV9uYev7%h8|7;9Q
zIRHjv^ecqs0ajA(zasqUdmL7RW0Syu{WD_py(ZHLHi`lhH)eC)r4rcw`V<LHivxK+
znUmez#RXYS`rI%4+vMdi0!*Dky`*vq`ZhdLpH1VIk$U+6HXtL38V_YL(2_V|L=aX3
zwn;#*=~o#KfW8E?Oq}j at 0TjVsLImK}+s)tQvvpS~@Y&cJq>?VP|6$1EMHK@^=Z2fA
zdKq_-T7*Y-qYu3xW6LDXV at v>{C?HJO__VOUjB|?qnN^hc55vEjYyn)^#9xzl4BH;o
zKt6 at xh{lnP_hy-3z^gsAI{8Iio(+b>MF)Z>SLVkGW0vP^v|mh}Xdrz`?swF2oK{8U
zid at TZl*X4hF6JZ{BizS|z7``xtw46w9$@`401mJgd*U{!*<ab3Kfo1UXHvW-gr2Vy
zCdedmc$=9o83xjQ#F`2me=kRBn)^wb?+$M)CWp97W$Q at b1rZ0~1XbckLK4-IW9(PK
zTbM6d_#TsS?BF$YqEEZN?5Z+zkhpC11XJRE^vV7asKH-kS)aRY@*q&!gJ0|or$L&N
zpAl-7sTM#%G1BppwDFnvLE2cH6fF2ZQ*PiHrwhA=-uyX#3ba1ip1R&+TGq&9VK11V
z>u83&qepkeJV9lUXyX>9sF$j#xNm~*!Xy>MOO^ZkjjL9*yR0X at 0sJ9)<ZN at Ya6DJ@
zzEJp%iB}`MBJX4$Wq$OvV~*sKIG*<JKPx|fiTPJ*?_xNwn1Ky>FO(~9#|p^usQ!z8
z80RBZ at TYJ!!Q<_0(&@_C=hWBZPC6Y0;ffK{_3#e%c at e;~1bwE=WM)XkW%8s)0olxl
zrb6h;N1WuJ_aa9C#uO^Qh^Tpg7WZY>p^m~TnEWdDmAd3t)w}JlW~dB{K3&tqsXP6a
zP?l5sH81vGFW!c|Y(@VQvr-z$&Lljw!;%sMtRdZOKTW6=lTQDR4gs4a_Ox at 9o%ffx
zqDu*9EMAl3kPbszBN^IqLpS~sK}mEkuJI9fsYk^Hx<}H6(JrHqpN|Q`E+w?MmG<jj
zSgA7G>nNMR0G3=DKDGh|ih${%^_e=rUIsK&M6VZmh%b;1!1hy=eZKh%iBg$;A at ICc
z55Pe5v1sFa*?}Yh$oTW*m_G^xXx={mimECjl}f{PK=XisBD0<ThKWJ;zzZwUc?R9j
zk4{EtX-AbnQ=VF#QixGcm%(ocl2<(W8i=!V2BW7AbaSn}bG;b4L2bNk4LXT%`(^Cm
zKa_>KA#croM4BrPYJB?c${QT}B`GBMuhq7{$@G5H0s2K7Y7%3%7L$ZI`OdHg&-rs7
z{1>6La`L=?K<lq*`Mvz#ZkaKkk2 at yEDf&Y4=%U4b0sdbMl{?S}f<7o6IXZAJaf$h{
zvL#=ZF?JzmkKSSb2KZGe7X_NeO#fOiK!^Z2;hYR?(KfHN%I}F;4!uKPn>6K8=j<c;
zu!Q at Mix&(gY}$_~b?v(nEoUoc8>77ZwJMPkL-)^K7|teP5ue~)Jbu?;gC--4anLD)
zYDyjKUS`iYHb)g%Kd at f@eQ8X0*XORPHvE0~dSCETO^sWsIi)DS-txK;%Irtgck*)^
z>*t?xo_|Dd`+q0-t^}ikHU#pzFB#yS9<SZatF|00A{Q?9(N;#o0Zx+?3yg|7>!`kx
z(nCui<6aqA^d~$sDM-Ht&r+U*a=@nB^RW{e8X2zIGe!OOuIC&ryKf~qoG|^}4F&<g
zEQa%6!^vdHk+b+Me{^@ORX>C`o4H*X&&iiOYrh at qy5!M(AUo(1+7r`j557~rQHPNA
ztyHYHE1y*2tJocpgpxxb9Em1%B=>V at 27}6jkz)@;Y9Y6LW|)MpH0q{m^iaV}G8oJc
zoaq94B(@s1?V(2|mq)H;4gL^wiTa2Xwb3g12blj;j?Gyb``?cO8l#f;faJ>)e*c_V
z8a0giry6GmFWqElM;tLfId00Oy?t*dpk8J+4j51$X9b3pU#z~vUEPY%`HmGNLvo#y
z)7DF}|5WYQ)L|Vb<)C<Xw(VF0iC4d!NOX<HTFu4;`Ks5SM?+ooMOk+D1C<vB6=*dp
z#MHn)Mqduai<ISCQ*P=Yr5warK5Uck{`7dG*IzX^_CodnyeNwg5w6;qdm!?&u|GdL
zkV6xfC1oBN3b0gSi0z^}XqA!m=QdSulJ~*bok_4gz%*{bsSYqpivM(I$E?gWg*TUz
z0+F2HDORy;pG3#16UPr&;=)&n5JKJQwZ7y=oBx6Z(1<X=fyRiNk|3 at v<r|ye>@Gd}
z!K-Ra6p~`LQ~YAo(kQJm+(%qpX}m);=vI)|pRqHP9Oo=;R)8++NEQgJuoLuZ!vnjp
zR+<lk=@z-5d+;IwfX~d4-?9^Q>0D5Wd3?)veDVDt6L}-!MKQm^j<1qDkJ{`Ie4xC%
z^QQ?GH9~gIu(O_)85!EmT=r7*>AUXf9iHp7siXFfxs~+PietC{;GmCDBa-P!v1mR(
zuG^UVYfABscKX%GUFZkMWKr7_L|?p%k4vk9T>zSlB<8LKe#c=rKC|ju2QtB|>n7^r
z)=*XEOIr-HMT75T0nJekh3)cFR0jc)!IFN^2~(zbcd9juywM*XnpmRy3SIwg&z?bF
z1%Msn_ at w2|`f?{TmN4E{?A|#O>}m4YNXXbE1t4gKt{nBS^I(*Dew%S^Jj-A1+K3Xi
zRd==HDMQ6^tu?8a6#%FVrH9&!bv%Y5p4$e_tA)|u9Yupb#JL~apf;yvfs~c6ma;d!
z=}(E}UxvvoQzcD_>@0L`833%dul}@V50##LH1hX+de#6p>!FPgWfYEEllbIrZjfCU
zMf=A&IHQBe at a@30#ENd{g`RMnmfyoG{|8VC>;}gs*sM31;~Tz>E4j=?zFCeJR|+W6
zJL~?9s>VQP(WwbLOK7;1L2>aDo#y at -PaE~x(27V%`Sy5`QiNIS#Dq7xTd#(Yv#@-*
zLD-2 at H>?Lzk8%55&ck11;VWm*1s1QL0fN9w+Tai7j)~u$lfC~J3IynFClxG?>kZ?x
z9X&QC6On|$isq7)<yyPz+4n<Lln!FSD96o<o!m2z<&%cf3)XtVceh_3+R(L&`b3sV
zxNw(oiZ(E;QZ30TpjJ9H at FS%Fa)1wejy;+JN!0o`kQ{5>Ck^aWFXDTypvMn|`zzRW
z4+-ql8ydLspGh_wI6bE1Pb6m_XomuH5s!Z&`p7O5N{b?j1+PqKLX7b^MkC0#6n;ql
zkLn at VVUvap|6E1OEdQ55GWQ;esLsx%Qe~|Z;;@~L>S|nAmuWN1vAVc2QBR6f+6mb?
zLR<{foOm+(uPvn=9d%-D&HREW|9msreQHR&f2~t)KdGn*;w?8!_{nx;k@?;4p62rS
z8{GE)G;^ilP)7aRPEFHT(%40k2!)vmAsHG=mdKJlWi4xn5VC}k?2&EkOSUY75oU-=
zWf`(1OEk7&jNJ^qPyg%x`ThJpAJ28p^_=B*UFSZ(`@VmT4aC}1bpO7i`t_{{v<BaZ
zwR7r%1v)~}FxfQrk2hISfxKCzJYhjO)uhJ0*shtlosqjXQkAiJSTbE)FrG0 at J>F*{
z9KJe~CucOVE)1F|%bP0fZ?WLK_867r?eFQmB^BQ;9UE!SGqBFxsqMKIQ1?^)w~HI2
zo1M|IBoKu9z}~^LcoL3_w(=|imCoZAE*dO*s=n4zNzUwh$!?h!?>J2K4w4aw>}RXW
zIl~O<p%NQO@}_s(!vGSvaba7{_MUY}(<P=4Mje~Hf`M!^UUjsPos0LKsL)#ZQh-!w
z6rIIrD#-PW38w^2R{aa3bqKF{M^B-@)1|WM=SuYVQeHF)Y^!V{$HR0Xy@^v$CKEJ#
zm at FzQ_~n3}9w8I?C#Lq<5>cc0+0u(Fsyd>as|ALs$9614j^g+D*VOIXpQSpCX3#&X
z7Q~*S*x<m<a>+gdTjtI}ewZ}rHUJkpW-8ZT+lWAeA{LA9YQ4Ft<1TI>m`>~aW|gs}
zK(ZguosmS?a$=qsvIltq9O<RngCVk61$3^;YHszA at 24u|Q3?o$((mpRWP%i^1u#iI
z=iP4=7}K*?U0l~aNWk9YZ)r)e$)nl^x5tqSJey{dO!audz(eV#$zad at 8xS`YjRx&?
z(XDNovDdlll$f-&UD2083)k9r(@zbuEXOa26c0PKm|cPlOiN_;-DV$KU3L<o|IVQb
z=Y$$jj`rKYc?S$()+w9KUkxkI+p05+wK%TFZ_{=q at j*o;AJ20-IZ#m**#{pl^HIvt
z+MAi#Y%_FLsJcX){<&kAOet$tNnx6F_7j6>X{D?_%bdON%iFx)MYq)0 at kcc|4DRL`
za!I)~VuCJk`Q)Sf!zlM#Y>1#A8{wN?cpgOwE_X{)?pNP%#W6bBU>hES3*aJA<u!kX
zlW1#B`H|p|$0yhSb-<QU*em%lpkD0MZ5^ics$E%%>q>e&#PEwBjJTba4Hf;Gwvy>z
zrJK;7F}<A7kSKcgsc0Pe!QgVKZ3;47KKEBJa9WeVX^ENEW{((_o5}6NJ9_T#vnY#)
zt*BXjtu%k=I*Rh_Z$Ed}unil-^I1W^XJ*7i!E|9&*_Wj=2unu^GQ(svi|$d2)EkX<
zH74iaf84VUm5*gBZ0i95yr`@xw_%Mu^A-8!v-HiKs_w)iqBWZ*?i!6$Wyb}GF?4Rn
zc#*#Bzf`$9S130tAf-Q$KdKV?PS-gzAazq9$skiRvmdSplv)v4F;D;4CAZE^-{5m9
zrexG|nBP}*nR#Afw#4UgzQDZxi$+ow3)))+T`0cHk%oFLNk^rpNdLYb$y;`^>3kmu
zjvBpZ#RV%%cMzuX$L)&$L#+3Z6pN}m7z;~{5mqj!b&Jp0CqELda=kT{Dmj^Tdc^F1
zhF1OW%rG*C$Oz1MVC^A=Y~yOi6SM83B2Z%H10eUx at yR;oV00RhdK-_Wg<b*#<;^(K
zT~tFf)XDMfjy(D;n`vjD3OCTZ_+M`oUm>7$LMBAybo)1~-`sHQ!>RS^IgBQ!(@9xm
zNt(1dkVVk0hPV)-ApioY<q27hp_b&n0yZjM4#>uvEPwNwJ9H6)fq|zJQAe{qOaMsl
z-`Msr)6R_(#edRukVP*+<Y$sYGy4WWj(B&=HW9tdaC0!mi=BUs?^C1bIax4JLt;^{
z8*pXV_dgURzs1{T5(uz5Z<tceg=x8|U4jwlLC7t1gn6QavAmSEG;QpC5S0F&1As-<
z&kC$;U8l}`UuDt3`J~;62K-{YcYANYh%NiPXktO&>3-pb3xe9vPSLMutcE_+BlsbJ
zVmI%91x_ozPB~cyi at xa6h0Z4ez7bSPywTs+mcTLqN6N;LZ+<69J!+t@`|}P{-`+~5
zLf!V@(7U}IPl)L)K>doh&j%R#fAog5CFs0;1W7$*b$!nJZ#o`3Qx7o|WCWb~6^UIi
z&U;GXN3nCMGjkt}W at B71HkWiyF}3;>HtPIDFsNXoqFUa?b*K0buBu;aU_G at C273_R
zg8}4c*~ID@#CYAvWqL2P7Ej#hSHER at BGf3hlGkBKfDd8IjR})`qoK>5CtY$f>EA5S
zITF*HSJ~{^ggvio(8wFlZMowcrU-#XH*6jqhPpImAf5JECe{n(h9_T7%vA0F-Cc(_
zeo=V!dw-8_DZ~}zQEk#}^$Kr}>1G;Q`B**gZ4%=p{O2WaRJ8aV?mvx|@bWGZm($o0
zs3ywYO{tMnx6U<Y at rzrV0Z9nfUj`4{oA2zNm<agpqcqUuw?4z(8!A#mTMM*1b&RWB
zJ)9Bx=|JSF7dimvg?=q{AUL0$Qqujb2){tp0vUWjP>+o+R$ps#I}_6SiyAepF+nw`
zZroZ4(9(9JZ%B(P*Z?^urnxRI)r at Z_8)G3=;pN|TK0!}3xy()6E#wTFC$eMkX#;Wg
z#^GdmMOg6cDzS8Y5*%JsRybpA>P3{%|Dz2(<H*xXkXhWdJd#36WSN<v&V6kgc$F_4
ze)sKsl3EC%RDb<*;s-t+an|m7;)_lVoP<x!Jbir1a?5vZd{X2nnCPP#?4#aUd at c;m
zl`N=96y at fCr5j`W<RRM+0=;J#(kjfBP_vFv^KW-;ucz5}fowBNXS^oWoD|o9C5q
zOnvXv3H^28v#ht!wC>^EzPBe^8ADx(m>>+`1JZ3ePCE5Td>0p|KCdW8g{svs7e^X%
z{93ieQt*aP{XtRTO)t)z6^5?8$$bct;)!cgbqa|j7cdmXJgue>E-bAy_bDcbd4$aS
z4Y!i_{W*5AP+bLH-iq38|8TRR&N at r%N4u(fLTWX2SX2v)r`h5H?EXz2uVz~jlIq;S
z#m6S4JtduxWQpPI_>nTJEin%0+4P6IA>_WgV887*^Ve13SVI2ui-?&W4iatG1*?3g
z$7+lb8Hv=^UNJSfiaY`(RK}pRE{88i!%K#KcgI7fAD~@^gj7ApJy+EwYWQUAkPAA-
zCdr3}7evI5cH}Sr7 at 2}tYE?`w!v7S>uZf6}bB9QQ{@rCX$927HdltS8vDg&5cBTdk
zpt=KdUn8AS#^W&=)pfM45{`Q9dRu#i#^uWFYs0P!I~uc$sx^Nnhm|dF>VF3!^$t|G
zw9o=toWygM!-*ua^8?Nax8$!s!SaOpogYF~kJ6`|if0Y?u^_|T2G(2#eW(Otii60y
z<|lkp0%c}atTM2Hx!TD5(hr*8Ab^k at 7Lr!%m5cLsOjiExdDv8Y!dWP?l~|1*ZD%K+
z?8Vs6x>mt(U--bOe)zX+AZN{8*`fS{CFbTGzYv|ZM+eIA8Y%hRH-*;)Q#C&Q7}1^h
z(Sh?sJeu;bg?IiP?Jx?+ at LveIFL^mc;;<d(*)Xs+g;7ilO(X?Mib#rgUs$+Eo4L#%
zmWVm%G90^#)Okaq&;xB^IZtp`SD+yFm{zCc4mqa$meXR~O48E95hQz7y8vOW2P_r%
zt%276Z at s1FJ?_tu%vAs`_W>695?CZ?V1v=_#$%ke`TW7(f1{DW=s3~_tDUc~Ru5)x
zlm0C(HtthmL818c)8o}HIPi0!eKyM#l_=C}AV!UNyF|vskSR;54q|yTiz+Ywuk}{m
zbN)Aw_C=L=6!#-mk>0H-TXwD!DzHwyz(mZ2uBk4TF%x7=*5i_0I>LsXi>pY6clrAk
zg3&ZQFv7FX4H=^a8Duz9S-{C}^#sT?323o)Da`tu8}kuJ#;kNr4t2(n5Ur=ri!)c0
za}@R(b3Emck&CZmIuFGWmtA8&BfDzKn;2ap6mKZjF^?ya?EUx+kn=Q%cIAHGaGNiV
P0r&u=D6;0JL*#z|XU2S$
literal 0
HcmV?d00001
--
1.8.1.4
More information about the wayland-devel
mailing list